// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
// RUN: c_compiler -c -o %t1.o -I "common" "common/testsuite.c"
// RUN: cxx_compiler cxx_rtti -c %s -I "common" -o %t2.o
// RUN: c_compiler -c %s -I "common" -o %t3.o
// RUN: linker -o %t2%exeext  %t1.o %t2.o %t3.o
// RUN: runtool %t2%exeext | checker "TEST PASSED"
#include "testsuite.h"
#ifdef __cplusplus

struct  S3423C4_nt  {
  int s3423c4f0[2];
  void  mf3423c4(); // _ZN10S3423C4_nt8mf3423c4Ev
};
//SIG(-1 S3423C4_nt) C1{ m Fi[2]}


void  S3423C4_nt ::mf3423c4(){}

//skip512 S3423C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3423C3_nt  {
  int s3423c3f0;
  __tsi64 s3423c3f1;
  void *s3423c3f2[4];
  int s3423c3f3[2];
  void *s3423c3f4;
  ::S3423C4_nt s3423c3f5;
  void *s3423c3f6[2];
  virtual  ~S3423C3_nt(); // _ZN10S3423C3_ntD1Ev
  virtual void  v8(); // _ZN10S3423C3_nt2v8Ev
  virtual void  v9(); // _ZN10S3423C3_nt2v9Ev
  virtual void  v10(); // _ZN10S3423C3_nt3v10Ev
  virtual void  v11(); // _ZN10S3423C3_nt3v11Ev
  virtual void  v12(); // _ZN10S3423C3_nt3v12Ev
  virtual void  v13(); // _ZN10S3423C3_nt3v13Ev
  virtual void  v14(); // _ZN10S3423C3_nt3v14Ev
  virtual void  v15(); // _ZN10S3423C3_nt3v15Ev
  virtual void  v16(); // _ZN10S3423C3_nt3v16Ev
  virtual void  v17(); // _ZN10S3423C3_nt3v17Ev
  virtual void  v18(); // _ZN10S3423C3_nt3v18Ev
  virtual void  v19(); // _ZN10S3423C3_nt3v19Ev
  virtual void  v20(); // _ZN10S3423C3_nt3v20Ev
  virtual void  v21(); // _ZN10S3423C3_nt3v21Ev
  virtual void  v22(); // _ZN10S3423C3_nt3v22Ev
  virtual void  v23(); // _ZN10S3423C3_nt3v23Ev
  virtual void  v24(); // _ZN10S3423C3_nt3v24Ev
  virtual void  v25(); // _ZN10S3423C3_nt3v25Ev
  virtual void  v26(); // _ZN10S3423C3_nt3v26Ev
  virtual void  v27(); // _ZN10S3423C3_nt3v27Ev
  virtual void  v28(); // _ZN10S3423C3_nt3v28Ev
  virtual void  v29(); // _ZN10S3423C3_nt3v29Ev
  virtual void  v30(); // _ZN10S3423C3_nt3v30Ev
  virtual void  v31(); // _ZN10S3423C3_nt3v31Ev
  virtual void  v32(); // _ZN10S3423C3_nt3v32Ev
  virtual void  v33(); // _ZN10S3423C3_nt3v33Ev
  virtual void  v34(); // _ZN10S3423C3_nt3v34Ev
  virtual void  v35(); // _ZN10S3423C3_nt3v35Ev
  virtual void  v36(); // _ZN10S3423C3_nt3v36Ev
  virtual void  v37(); // _ZN10S3423C3_nt3v37Ev
  virtual void  v38(); // _ZN10S3423C3_nt3v38Ev
  virtual void  v39(); // _ZN10S3423C3_nt3v39Ev
  virtual void  v40(); // _ZN10S3423C3_nt3v40Ev
  virtual void  v41(); // _ZN10S3423C3_nt3v41Ev
  virtual void  v42(); // _ZN10S3423C3_nt3v42Ev
  virtual void  v43(); // _ZN10S3423C3_nt3v43Ev
  virtual void  v44(); // _ZN10S3423C3_nt3v44Ev
  virtual void  v45(); // _ZN10S3423C3_nt3v45Ev
  virtual void  v46(); // _ZN10S3423C3_nt3v46Ev
  virtual void  v47(); // _ZN10S3423C3_nt3v47Ev
  virtual void  v48(); // _ZN10S3423C3_nt3v48Ev
  virtual void  v49(); // _ZN10S3423C3_nt3v49Ev
  virtual void  v50(); // _ZN10S3423C3_nt3v50Ev
  virtual void  v51(); // _ZN10S3423C3_nt3v51Ev
  virtual void  v52(); // _ZN10S3423C3_nt3v52Ev
  virtual void  v53(); // _ZN10S3423C3_nt3v53Ev
  virtual void  v54(); // _ZN10S3423C3_nt3v54Ev
  virtual void  v55(); // _ZN10S3423C3_nt3v55Ev
  virtual void  v56(); // _ZN10S3423C3_nt3v56Ev
  virtual void  v57(); // _ZN10S3423C3_nt3v57Ev
  virtual void  v58(); // _ZN10S3423C3_nt3v58Ev
  virtual void  v59(); // _ZN10S3423C3_nt3v59Ev
  virtual void  v60(); // _ZN10S3423C3_nt3v60Ev
  virtual void  v61(); // _ZN10S3423C3_nt3v61Ev
  virtual void  v62(); // _ZN10S3423C3_nt3v62Ev
  virtual void  v63(); // _ZN10S3423C3_nt3v63Ev
  virtual void  v64(); // _ZN10S3423C3_nt3v64Ev
  virtual void  v65(); // _ZN10S3423C3_nt3v65Ev
  virtual void  v66(); // _ZN10S3423C3_nt3v66Ev
  virtual void  v67(); // _ZN10S3423C3_nt3v67Ev
  virtual void  v68(); // _ZN10S3423C3_nt3v68Ev
  virtual void  v69(); // _ZN10S3423C3_nt3v69Ev
  virtual void  v70(); // _ZN10S3423C3_nt3v70Ev
  virtual void  v71(); // _ZN10S3423C3_nt3v71Ev
  S3423C3_nt(); // tgen
};
//SIG(-1 S3423C3_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S3423C3_nt ::~S3423C3_nt(){ note_dtor("S3423C3_nt", this);}
void  S3423C3_nt ::v8(){vfunc_called(this, "_ZN10S3423C3_nt2v8Ev");}
void  S3423C3_nt ::v9(){vfunc_called(this, "_ZN10S3423C3_nt2v9Ev");}
void  S3423C3_nt ::v10(){vfunc_called(this, "_ZN10S3423C3_nt3v10Ev");}
void  S3423C3_nt ::v11(){vfunc_called(this, "_ZN10S3423C3_nt3v11Ev");}
void  S3423C3_nt ::v12(){vfunc_called(this, "_ZN10S3423C3_nt3v12Ev");}
void  S3423C3_nt ::v13(){vfunc_called(this, "_ZN10S3423C3_nt3v13Ev");}
void  S3423C3_nt ::v14(){vfunc_called(this, "_ZN10S3423C3_nt3v14Ev");}
void  S3423C3_nt ::v15(){vfunc_called(this, "_ZN10S3423C3_nt3v15Ev");}
void  S3423C3_nt ::v16(){vfunc_called(this, "_ZN10S3423C3_nt3v16Ev");}
void  S3423C3_nt ::v17(){vfunc_called(this, "_ZN10S3423C3_nt3v17Ev");}
void  S3423C3_nt ::v18(){vfunc_called(this, "_ZN10S3423C3_nt3v18Ev");}
void  S3423C3_nt ::v19(){vfunc_called(this, "_ZN10S3423C3_nt3v19Ev");}
void  S3423C3_nt ::v20(){vfunc_called(this, "_ZN10S3423C3_nt3v20Ev");}
void  S3423C3_nt ::v21(){vfunc_called(this, "_ZN10S3423C3_nt3v21Ev");}
void  S3423C3_nt ::v22(){vfunc_called(this, "_ZN10S3423C3_nt3v22Ev");}
void  S3423C3_nt ::v23(){vfunc_called(this, "_ZN10S3423C3_nt3v23Ev");}
void  S3423C3_nt ::v24(){vfunc_called(this, "_ZN10S3423C3_nt3v24Ev");}
void  S3423C3_nt ::v25(){vfunc_called(this, "_ZN10S3423C3_nt3v25Ev");}
void  S3423C3_nt ::v26(){vfunc_called(this, "_ZN10S3423C3_nt3v26Ev");}
void  S3423C3_nt ::v27(){vfunc_called(this, "_ZN10S3423C3_nt3v27Ev");}
void  S3423C3_nt ::v28(){vfunc_called(this, "_ZN10S3423C3_nt3v28Ev");}
void  S3423C3_nt ::v29(){vfunc_called(this, "_ZN10S3423C3_nt3v29Ev");}
void  S3423C3_nt ::v30(){vfunc_called(this, "_ZN10S3423C3_nt3v30Ev");}
void  S3423C3_nt ::v31(){vfunc_called(this, "_ZN10S3423C3_nt3v31Ev");}
void  S3423C3_nt ::v32(){vfunc_called(this, "_ZN10S3423C3_nt3v32Ev");}
void  S3423C3_nt ::v33(){vfunc_called(this, "_ZN10S3423C3_nt3v33Ev");}
void  S3423C3_nt ::v34(){vfunc_called(this, "_ZN10S3423C3_nt3v34Ev");}
void  S3423C3_nt ::v35(){vfunc_called(this, "_ZN10S3423C3_nt3v35Ev");}
void  S3423C3_nt ::v36(){vfunc_called(this, "_ZN10S3423C3_nt3v36Ev");}
void  S3423C3_nt ::v37(){vfunc_called(this, "_ZN10S3423C3_nt3v37Ev");}
void  S3423C3_nt ::v38(){vfunc_called(this, "_ZN10S3423C3_nt3v38Ev");}
void  S3423C3_nt ::v39(){vfunc_called(this, "_ZN10S3423C3_nt3v39Ev");}
void  S3423C3_nt ::v40(){vfunc_called(this, "_ZN10S3423C3_nt3v40Ev");}
void  S3423C3_nt ::v41(){vfunc_called(this, "_ZN10S3423C3_nt3v41Ev");}
void  S3423C3_nt ::v42(){vfunc_called(this, "_ZN10S3423C3_nt3v42Ev");}
void  S3423C3_nt ::v43(){vfunc_called(this, "_ZN10S3423C3_nt3v43Ev");}
void  S3423C3_nt ::v44(){vfunc_called(this, "_ZN10S3423C3_nt3v44Ev");}
void  S3423C3_nt ::v45(){vfunc_called(this, "_ZN10S3423C3_nt3v45Ev");}
void  S3423C3_nt ::v46(){vfunc_called(this, "_ZN10S3423C3_nt3v46Ev");}
void  S3423C3_nt ::v47(){vfunc_called(this, "_ZN10S3423C3_nt3v47Ev");}
void  S3423C3_nt ::v48(){vfunc_called(this, "_ZN10S3423C3_nt3v48Ev");}
void  S3423C3_nt ::v49(){vfunc_called(this, "_ZN10S3423C3_nt3v49Ev");}
void  S3423C3_nt ::v50(){vfunc_called(this, "_ZN10S3423C3_nt3v50Ev");}
void  S3423C3_nt ::v51(){vfunc_called(this, "_ZN10S3423C3_nt3v51Ev");}
void  S3423C3_nt ::v52(){vfunc_called(this, "_ZN10S3423C3_nt3v52Ev");}
void  S3423C3_nt ::v53(){vfunc_called(this, "_ZN10S3423C3_nt3v53Ev");}
void  S3423C3_nt ::v54(){vfunc_called(this, "_ZN10S3423C3_nt3v54Ev");}
void  S3423C3_nt ::v55(){vfunc_called(this, "_ZN10S3423C3_nt3v55Ev");}
void  S3423C3_nt ::v56(){vfunc_called(this, "_ZN10S3423C3_nt3v56Ev");}
void  S3423C3_nt ::v57(){vfunc_called(this, "_ZN10S3423C3_nt3v57Ev");}
void  S3423C3_nt ::v58(){vfunc_called(this, "_ZN10S3423C3_nt3v58Ev");}
void  S3423C3_nt ::v59(){vfunc_called(this, "_ZN10S3423C3_nt3v59Ev");}
void  S3423C3_nt ::v60(){vfunc_called(this, "_ZN10S3423C3_nt3v60Ev");}
void  S3423C3_nt ::v61(){vfunc_called(this, "_ZN10S3423C3_nt3v61Ev");}
void  S3423C3_nt ::v62(){vfunc_called(this, "_ZN10S3423C3_nt3v62Ev");}
void  S3423C3_nt ::v63(){vfunc_called(this, "_ZN10S3423C3_nt3v63Ev");}
void  S3423C3_nt ::v64(){vfunc_called(this, "_ZN10S3423C3_nt3v64Ev");}
void  S3423C3_nt ::v65(){vfunc_called(this, "_ZN10S3423C3_nt3v65Ev");}
void  S3423C3_nt ::v66(){vfunc_called(this, "_ZN10S3423C3_nt3v66Ev");}
void  S3423C3_nt ::v67(){vfunc_called(this, "_ZN10S3423C3_nt3v67Ev");}
void  S3423C3_nt ::v68(){vfunc_called(this, "_ZN10S3423C3_nt3v68Ev");}
void  S3423C3_nt ::v69(){vfunc_called(this, "_ZN10S3423C3_nt3v69Ev");}
void  S3423C3_nt ::v70(){vfunc_called(this, "_ZN10S3423C3_nt3v70Ev");}
void  S3423C3_nt ::v71(){vfunc_called(this, "_ZN10S3423C3_nt3v71Ev");}
S3423C3_nt ::S3423C3_nt(){ note_ctor("S3423C3_nt", this);} // tgen

//skip512 S3423C3_nt

#else // __cplusplus

extern void _ZN10S3423C3_ntC1Ev();
extern void _ZN10S3423C3_ntD1Ev();
Name_Map name_map_S3423C3_nt[] = {
  NSPAIR(_ZN10S3423C3_ntC1Ev),
  NSPAIR(_ZN10S3423C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3423C3_nt[];
extern void _ZN10S3423C3_ntD1Ev();
extern void _ZN10S3423C3_ntD0Ev();
extern void _ZN10S3423C3_nt2v8Ev();
extern void _ZN10S3423C3_nt2v9Ev();
extern void _ZN10S3423C3_nt3v10Ev();
extern void _ZN10S3423C3_nt3v11Ev();
extern void _ZN10S3423C3_nt3v12Ev();
extern void _ZN10S3423C3_nt3v13Ev();
extern void _ZN10S3423C3_nt3v14Ev();
extern void _ZN10S3423C3_nt3v15Ev();
extern void _ZN10S3423C3_nt3v16Ev();
extern void _ZN10S3423C3_nt3v17Ev();
extern void _ZN10S3423C3_nt3v18Ev();
extern void _ZN10S3423C3_nt3v19Ev();
extern void _ZN10S3423C3_nt3v20Ev();
extern void _ZN10S3423C3_nt3v21Ev();
extern void _ZN10S3423C3_nt3v22Ev();
extern void _ZN10S3423C3_nt3v23Ev();
extern void _ZN10S3423C3_nt3v24Ev();
extern void _ZN10S3423C3_nt3v25Ev();
extern void _ZN10S3423C3_nt3v26Ev();
extern void _ZN10S3423C3_nt3v27Ev();
extern void _ZN10S3423C3_nt3v28Ev();
extern void _ZN10S3423C3_nt3v29Ev();
extern void _ZN10S3423C3_nt3v30Ev();
extern void _ZN10S3423C3_nt3v31Ev();
extern void _ZN10S3423C3_nt3v32Ev();
extern void _ZN10S3423C3_nt3v33Ev();
extern void _ZN10S3423C3_nt3v34Ev();
extern void _ZN10S3423C3_nt3v35Ev();
extern void _ZN10S3423C3_nt3v36Ev();
extern void _ZN10S3423C3_nt3v37Ev();
extern void _ZN10S3423C3_nt3v38Ev();
extern void _ZN10S3423C3_nt3v39Ev();
extern void _ZN10S3423C3_nt3v40Ev();
extern void _ZN10S3423C3_nt3v41Ev();
extern void _ZN10S3423C3_nt3v42Ev();
extern void _ZN10S3423C3_nt3v43Ev();
extern void _ZN10S3423C3_nt3v44Ev();
extern void _ZN10S3423C3_nt3v45Ev();
extern void _ZN10S3423C3_nt3v46Ev();
extern void _ZN10S3423C3_nt3v47Ev();
extern void _ZN10S3423C3_nt3v48Ev();
extern void _ZN10S3423C3_nt3v49Ev();
extern void _ZN10S3423C3_nt3v50Ev();
extern void _ZN10S3423C3_nt3v51Ev();
extern void _ZN10S3423C3_nt3v52Ev();
extern void _ZN10S3423C3_nt3v53Ev();
extern void _ZN10S3423C3_nt3v54Ev();
extern void _ZN10S3423C3_nt3v55Ev();
extern void _ZN10S3423C3_nt3v56Ev();
extern void _ZN10S3423C3_nt3v57Ev();
extern void _ZN10S3423C3_nt3v58Ev();
extern void _ZN10S3423C3_nt3v59Ev();
extern void _ZN10S3423C3_nt3v60Ev();
extern void _ZN10S3423C3_nt3v61Ev();
extern void _ZN10S3423C3_nt3v62Ev();
extern void _ZN10S3423C3_nt3v63Ev();
extern void _ZN10S3423C3_nt3v64Ev();
extern void _ZN10S3423C3_nt3v65Ev();
extern void _ZN10S3423C3_nt3v66Ev();
extern void _ZN10S3423C3_nt3v67Ev();
extern void _ZN10S3423C3_nt3v68Ev();
extern void _ZN10S3423C3_nt3v69Ev();
extern void _ZN10S3423C3_nt3v70Ev();
extern void _ZN10S3423C3_nt3v71Ev();
static  VTBL_ENTRY vtc_S3423C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3423C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3423C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v71Ev,
};
extern VTBL_ENTRY _ZTI10S3423C3_nt[];
VTBL_ENTRY *P__ZTI10S3423C3_nt = _ZTI10S3423C3_nt; 
extern  VTBL_ENTRY _ZTV10S3423C3_nt[];
Class_Descriptor cd_S3423C3_nt = {  "S3423C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3423C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI10S3423C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3423C3_nt),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3423C7_nt  {
  void *s3423c7f0;
  int s3423c7f1[2];
  void  mf3423c7(); // _ZN10S3423C7_nt8mf3423c7Ev
};
//SIG(-1 S3423C7_nt) C1{ m Fp Fi[2]}


void  S3423C7_nt ::mf3423c7(){}

//skip512 S3423C7_nt

#else // __cplusplus

Class_Descriptor cd_S3423C7_nt = {  "S3423C7_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3423C6_nt  : S3423C7_nt {
};
//SIG(-1 S3423C6_nt) C1{ BC2{ m Fp Fi[2]}}



//skip512 S3423C6_nt

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
static Base_Class bases_S3423C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S3423C6_nt = {  "S3423C6_nt", // class name
  bases_S3423C6_nt, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3423C5_nt  : S3423C6_nt {
};
//SIG(-1 S3423C5_nt) C1{ BC2{ BC3{ m Fp Fi[2]}}}



//skip512 S3423C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
extern Class_Descriptor cd_S3423C6_nt;
static Base_Class bases_S3423C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3423C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3423C8_nt  {
  int s3423c8f0;
  void  mf3423c8(); // _ZN10S3423C8_nt8mf3423c8Ev
};
//SIG(-1 S3423C8_nt) C1{ m Fi}


void  S3423C8_nt ::mf3423c8(){}

//skip512 S3423C8_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S3423C8_nt[];
VTBL_ENTRY *P__ZTI10S3423C8_nt = _ZTI10S3423C8_nt; 
Class_Descriptor cd_S3423C8_nt = {  "S3423C8_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI10S3423C8_nt),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3423C12  : S3423C7_nt {
};
//SIG(-1 S3423C12) C1{ BC2{ m Fp Fi[2]}}



static void Test_S3423C12()
{
  extern Class_Descriptor cd_S3423C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3423C12, buf);
    S3423C12 &lv = *(new (buf) S3423C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3423C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3423C12)");
    check_base_class_offset(lv, (S3423C7_nt*), 0, "S3423C12");
    test_class_info(&lv, &cd_S3423C12);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3423C12(Test_S3423C12, "S3423C12", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
static Base_Class bases_S3423C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S3423C12 = {  "S3423C12", // class name
  bases_S3423C12, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3423C11  : S3423C12 {
};
//SIG(-1 S3423C11) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S3423C11()
{
  extern Class_Descriptor cd_S3423C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3423C11, buf);
    S3423C11 &lv = *(new (buf) S3423C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3423C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3423C11)");
    check_base_class_offset(lv, (S3423C7_nt*)(S3423C12*), 0, "S3423C11");
    check_base_class_offset(lv, (S3423C12*), 0, "S3423C11");
    test_class_info(&lv, &cd_S3423C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3423C11(Test_S3423C11, "S3423C11", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
extern Class_Descriptor cd_S3423C12;
static Base_Class bases_S3423C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3423C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S3423C11 = {  "S3423C11", // class name
  bases_S3423C11, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3423C13_nt  {
  int s3423c13f0[3];
  void  mf3423c13(); // _ZN11S3423C13_nt9mf3423c13Ev
};
//SIG(-1 S3423C13_nt) C1{ m Fi[3]}


void  S3423C13_nt ::mf3423c13(){}

//skip512 S3423C13_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3423C18  : S3423C7_nt {
};
//SIG(-1 S3423C18) C1{ BC2{ m Fp Fi[2]}}



static void Test_S3423C18()
{
  extern Class_Descriptor cd_S3423C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3423C18, buf);
    S3423C18 &lv = *(new (buf) S3423C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3423C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3423C18)");
    check_base_class_offset(lv, (S3423C7_nt*), 0, "S3423C18");
    test_class_info(&lv, &cd_S3423C18);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3423C18(Test_S3423C18, "S3423C18", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
static Base_Class bases_S3423C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S3423C18 = {  "S3423C18", // class name
  bases_S3423C18, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3423C17  : S3423C18 {
};
//SIG(-1 S3423C17) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S3423C17()
{
  extern Class_Descriptor cd_S3423C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3423C17, buf);
    S3423C17 &lv = *(new (buf) S3423C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3423C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3423C17)");
    check_base_class_offset(lv, (S3423C7_nt*)(S3423C18*), 0, "S3423C17");
    check_base_class_offset(lv, (S3423C18*), 0, "S3423C17");
    test_class_info(&lv, &cd_S3423C17);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3423C17(Test_S3423C17, "S3423C17", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
extern Class_Descriptor cd_S3423C18;
static Base_Class bases_S3423C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3423C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S3423C17 = {  "S3423C17", // class name
  bases_S3423C17, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3423C2_nt  : S3423C3_nt {
  ::S3423C5_nt s3423c2f0;
  ::S3423C5_nt s3423c2f1;
  ::S3423C8_nt s3423c2f2;
  int s3423c2f3;
  char s3423c2f4[4];
  void *s3423c2f5[2];
  ::S3423C5_nt s3423c2f6;
  unsigned int s3423c2f7:1;
  unsigned int s3423c2f8:1;
  unsigned int s3423c2f9:1;
  unsigned int s3423c2f10:1;
  unsigned int s3423c2f11:1;
  unsigned int s3423c2f12:1;
  unsigned int s3423c2f13:1;
  unsigned int s3423c2f14:1;
  unsigned int s3423c2f15:1;
  unsigned int s3423c2f16:1;
  unsigned int s3423c2f17:1;
  unsigned int s3423c2f18:1;
  unsigned int s3423c2f19:1;
  unsigned int s3423c2f20:1;
  unsigned int s3423c2f21:1;
  unsigned int s3423c2f22:1;
  unsigned int s3423c2f23:1;
  unsigned int s3423c2f24:1;
  unsigned int s3423c2f25:1;
  unsigned int s3423c2f26:1;
  unsigned int s3423c2f27:1;
  unsigned int s3423c2f28:1;
  unsigned int s3423c2f29:1;
  unsigned int s3423c2f30:1;
  unsigned int s3423c2f31:1;
  unsigned int s3423c2f32:1;
  unsigned int s3423c2f33:1;
  unsigned int s3423c2f34:1;
  unsigned int s3423c2f35:1;
  unsigned int s3423c2f36:1;
  unsigned int s3423c2f37:1;
  unsigned int s3423c2f38:1;
  unsigned int s3423c2f39:1;
  unsigned int s3423c2f40:1;
  unsigned int s3423c2f41:1;
  unsigned int s3423c2f42:1;
  unsigned int s3423c2f43:1;
  unsigned int s3423c2f44:1;
  unsigned int s3423c2f45:1;
  unsigned int s3423c2f46:1;
  unsigned int s3423c2f47:1;
  unsigned int s3423c2f48:1;
  unsigned int s3423c2f49:1;
  unsigned int s3423c2f50:1;
  unsigned int s3423c2f51:1;
  unsigned int s3423c2f52:1;
  unsigned int s3423c2f53:1;
  unsigned int s3423c2f54:1;
  unsigned int s3423c2f55:1;
  unsigned int s3423c2f56:1;
  unsigned int s3423c2f57:1;
  unsigned int s3423c2f58:1;
  unsigned int s3423c2f59:1;
  unsigned int s3423c2f60:1;
  unsigned int s3423c2f61:1;
  unsigned int s3423c2f62:1;
  unsigned int s3423c2f63:1;
  unsigned int s3423c2f64:1;
  unsigned int s3423c2f65:1;
  unsigned int s3423c2f66:1;
  unsigned int s3423c2f67:1;
  unsigned int s3423c2f68:1;
  unsigned int s3423c2f69:1;
  unsigned int s3423c2f70:1;
  unsigned int s3423c2f71:1;
  unsigned int s3423c2f72:1;
  unsigned int s3423c2f73:1;
  unsigned int s3423c2f74:1;
  unsigned int s3423c2f75:1;
  unsigned int s3423c2f76:1;
  unsigned int s3423c2f77:1;
  unsigned int s3423c2f78:1;
  unsigned int s3423c2f79:1;
  unsigned int s3423c2f80:1;
  unsigned int s3423c2f81:1;
  unsigned int s3423c2f82:1;
  unsigned int s3423c2f83:1;
  int s3423c2f84[5];
  void *s3423c2f85[2];
  int s3423c2f86[3];
  ::S3423C4_nt s3423c2f87;
  ::S3423C4_nt s3423c2f88;
  ::S3423C4_nt s3423c2f89;
  ::S3423C11 s3423c2f90;
  ::S3423C11 s3423c2f91;
  int s3423c2f92;
  void *s3423c2f93[2];
  ::S3423C13_nt s3423c2f94;
  ::S3423C13_nt s3423c2f95;
  ::S3423C13_nt s3423c2f96;
  ::S3423C13_nt s3423c2f97;
  void *s3423c2f98;
  ::S3423C4_nt s3423c2f99;
  ::S3423C11 s3423c2f100;
  ::S3423C13_nt s3423c2f101;
  ::S3423C13_nt s3423c2f102;
  int s3423c2f103;
  ::S3423C13_nt s3423c2f104;
  ::S3423C13_nt s3423c2f105;
  void *s3423c2f106;
  int s3423c2f107;
  char s3423c2f108;
  ::S3423C13_nt s3423c2f109;
  ::S3423C13_nt s3423c2f110;
  void *s3423c2f111;
  int s3423c2f112;
  void *s3423c2f113;
  ::S3423C11 s3423c2f114;
  ::S3423C17 s3423c2f115;
  ::S3423C17 s3423c2f116;
  virtual  ~S3423C2_nt(); // _ZN10S3423C2_ntD1Ev
  virtual void  v72(); // _ZN10S3423C2_nt3v72Ev
  virtual void  v73(); // _ZN10S3423C2_nt3v73Ev
  virtual void  v74(); // _ZN10S3423C2_nt3v74Ev
  virtual void  v75(); // _ZN10S3423C2_nt3v75Ev
  virtual void  v76(); // _ZN10S3423C2_nt3v76Ev
  virtual void  v77(); // _ZN10S3423C2_nt3v77Ev
  virtual void  v78(); // _ZN10S3423C2_nt3v78Ev
  virtual void  v79(); // _ZN10S3423C2_nt3v79Ev
  virtual void  v80(); // _ZN10S3423C2_nt3v80Ev
  virtual void  v81(); // _ZN10S3423C2_nt3v81Ev
  virtual void  v82(); // _ZN10S3423C2_nt3v82Ev
  virtual void  v83(); // _ZN10S3423C2_nt3v83Ev
  virtual void  v84(); // _ZN10S3423C2_nt3v84Ev
  virtual void  v85(); // _ZN10S3423C2_nt3v85Ev
  virtual void  v86(); // _ZN10S3423C2_nt3v86Ev
  virtual void  v87(); // _ZN10S3423C2_nt3v87Ev
  virtual void  v88(); // _ZN10S3423C2_nt3v88Ev
  virtual void  v89(); // _ZN10S3423C2_nt3v89Ev
  virtual void  v90(); // _ZN10S3423C2_nt3v90Ev
  virtual void  v91(); // _ZN10S3423C2_nt3v91Ev
  virtual void  v92(); // _ZN10S3423C2_nt3v92Ev
  virtual void  v93(); // _ZN10S3423C2_nt3v93Ev
  virtual void  v94(); // _ZN10S3423C2_nt3v94Ev
  virtual void  v95(); // _ZN10S3423C2_nt3v95Ev
  virtual void  v96(); // _ZN10S3423C2_nt3v96Ev
  virtual void  v97(); // _ZN10S3423C2_nt3v97Ev
  virtual void  v98(); // _ZN10S3423C2_nt3v98Ev
  virtual void  v99(); // _ZN10S3423C2_nt3v99Ev
  virtual void  v100(); // _ZN10S3423C2_nt4v100Ev
  virtual void  v101(); // _ZN10S3423C2_nt4v101Ev
  virtual void  v102(); // _ZN10S3423C2_nt4v102Ev
  virtual void  v103(); // _ZN10S3423C2_nt4v103Ev
  virtual void  v104(); // _ZN10S3423C2_nt4v104Ev
  virtual void  v105(); // _ZN10S3423C2_nt4v105Ev
  virtual void  v106(); // _ZN10S3423C2_nt4v106Ev
  virtual void  v107(); // _ZN10S3423C2_nt4v107Ev
  virtual void  v108(); // _ZN10S3423C2_nt4v108Ev
  virtual void  v109(); // _ZN10S3423C2_nt4v109Ev
  virtual void  v110(); // _ZN10S3423C2_nt4v110Ev
  virtual void  v111(); // _ZN10S3423C2_nt4v111Ev
  virtual void  v112(); // _ZN10S3423C2_nt4v112Ev
  virtual void  v113(); // _ZN10S3423C2_nt4v113Ev
  virtual void  v114(); // _ZN10S3423C2_nt4v114Ev
  virtual void  v115(); // _ZN10S3423C2_nt4v115Ev
  virtual void  v116(); // _ZN10S3423C2_nt4v116Ev
  virtual void  v117(); // _ZN10S3423C2_nt4v117Ev
  virtual void  v118(); // _ZN10S3423C2_nt4v118Ev
  virtual void  v119(); // _ZN10S3423C2_nt4v119Ev
  virtual void  v120(); // _ZN10S3423C2_nt4v120Ev
  virtual void  v121(); // _ZN10S3423C2_nt4v121Ev
  virtual void  v122(); // _ZN10S3423C2_nt4v122Ev
  virtual void  v123(); // _ZN10S3423C2_nt4v123Ev
  virtual void  v124(); // _ZN10S3423C2_nt4v124Ev
  virtual void  v125(); // _ZN10S3423C2_nt4v125Ev
  virtual void  v126(); // _ZN10S3423C2_nt4v126Ev
  virtual void  v127(); // _ZN10S3423C2_nt4v127Ev
  virtual void  v128(); // _ZN10S3423C2_nt4v128Ev
  virtual void  v129(); // _ZN10S3423C2_nt4v129Ev
  virtual void  v130(); // _ZN10S3423C2_nt4v130Ev
  virtual void  v131(); // _ZN10S3423C2_nt4v131Ev
  virtual void  v132(); // _ZN10S3423C2_nt4v132Ev
  virtual void  v133(); // _ZN10S3423C2_nt4v133Ev
  virtual void  v134(); // _ZN10S3423C2_nt4v134Ev
  virtual void  v135(); // _ZN10S3423C2_nt4v135Ev
  virtual void  v136(); // _ZN10S3423C2_nt4v136Ev
  virtual void  v137(); // _ZN10S3423C2_nt4v137Ev
  virtual void  v138(); // _ZN10S3423C2_nt4v138Ev
  virtual void  v139(); // _ZN10S3423C2_nt4v139Ev
  virtual void  v140(); // _ZN10S3423C2_nt4v140Ev
  virtual void  v141(); // _ZN10S3423C2_nt4v141Ev
  virtual void  v142(); // _ZN10S3423C2_nt4v142Ev
  virtual void  v143(); // _ZN10S3423C2_nt4v143Ev
  virtual void  v144(); // _ZN10S3423C2_nt4v144Ev
  virtual void  v145(); // _ZN10S3423C2_nt4v145Ev
  virtual void  v146(); // _ZN10S3423C2_nt4v146Ev
  virtual void  v147(); // _ZN10S3423C2_nt4v147Ev
  virtual void  v148(); // _ZN10S3423C2_nt4v148Ev
  virtual void  v149(); // _ZN10S3423C2_nt4v149Ev
  virtual void  v150(); // _ZN10S3423C2_nt4v150Ev
  virtual void  v151(); // _ZN10S3423C2_nt4v151Ev
  virtual void  v152(); // _ZN10S3423C2_nt4v152Ev
  virtual void  v153(); // _ZN10S3423C2_nt4v153Ev
  virtual void  v154(); // _ZN10S3423C2_nt4v154Ev
  virtual void  v155(); // _ZN10S3423C2_nt4v155Ev
  virtual void  v156(); // _ZN10S3423C2_nt4v156Ev
  virtual void  v157(); // _ZN10S3423C2_nt4v157Ev
  virtual void  v158(); // _ZN10S3423C2_nt4v158Ev
  virtual void  v159(); // _ZN10S3423C2_nt4v159Ev
  virtual void  v160(); // _ZN10S3423C2_nt4v160Ev
  virtual void  v161(); // _ZN10S3423C2_nt4v161Ev
  virtual void  v162(); // _ZN10S3423C2_nt4v162Ev
  virtual void  v163(); // _ZN10S3423C2_nt4v163Ev
  virtual void  v164(); // _ZN10S3423C2_nt4v164Ev
  virtual void  v165(); // _ZN10S3423C2_nt4v165Ev
  virtual void  v166(); // _ZN10S3423C2_nt4v166Ev
  virtual void  v167(); // _ZN10S3423C2_nt4v167Ev
  virtual void  v168(); // _ZN10S3423C2_nt4v168Ev
  virtual void  v169(); // _ZN10S3423C2_nt4v169Ev
  virtual void  v170(); // _ZN10S3423C2_nt4v170Ev
  virtual void  v171(); // _ZN10S3423C2_nt4v171Ev
  virtual void  v172(); // _ZN10S3423C2_nt4v172Ev
  virtual void  v173(); // _ZN10S3423C2_nt4v173Ev
  virtual void  v174(); // _ZN10S3423C2_nt4v174Ev
  virtual void  v175(); // _ZN10S3423C2_nt4v175Ev
  virtual void  v176(); // _ZN10S3423C2_nt4v176Ev
  virtual void  v177(); // _ZN10S3423C2_nt4v177Ev
  virtual void  v178(); // _ZN10S3423C2_nt4v178Ev
  virtual void  v179(); // _ZN10S3423C2_nt4v179Ev
  virtual void  v180(); // _ZN10S3423C2_nt4v180Ev
  virtual void  v181(); // _ZN10S3423C2_nt4v181Ev
  virtual void  v182(); // _ZN10S3423C2_nt4v182Ev
  virtual void  v183(); // _ZN10S3423C2_nt4v183Ev
  virtual void  v184(); // _ZN10S3423C2_nt4v184Ev
  virtual void  v185(); // _ZN10S3423C2_nt4v185Ev
  virtual void  v186(); // _ZN10S3423C2_nt4v186Ev
  virtual void  v187(); // _ZN10S3423C2_nt4v187Ev
  virtual void  v188(); // _ZN10S3423C2_nt4v188Ev
  virtual void  v189(); // _ZN10S3423C2_nt4v189Ev
  virtual void  v190(); // _ZN10S3423C2_nt4v190Ev
  virtual void  v191(); // _ZN10S3423C2_nt4v191Ev
  virtual void  v192(); // _ZN10S3423C2_nt4v192Ev
  virtual void  v193(); // _ZN10S3423C2_nt4v193Ev
  virtual void  v194(); // _ZN10S3423C2_nt4v194Ev
  virtual void  v195(); // _ZN10S3423C2_nt4v195Ev
  virtual void  v196(); // _ZN10S3423C2_nt4v196Ev
  virtual void  v197(); // _ZN10S3423C2_nt4v197Ev
  virtual void  v198(); // _ZN10S3423C2_nt4v198Ev
  virtual void  v199(); // _ZN10S3423C2_nt4v199Ev
  virtual void  v200(); // _ZN10S3423C2_nt4v200Ev
  virtual void  v201(); // _ZN10S3423C2_nt4v201Ev
  virtual void  v202(); // _ZN10S3423C2_nt4v202Ev
  virtual void  v203(); // _ZN10S3423C2_nt4v203Ev
  virtual void  v204(); // _ZN10S3423C2_nt4v204Ev
  virtual void  v205(); // _ZN10S3423C2_nt4v205Ev
  virtual void  v206(); // _ZN10S3423C2_nt4v206Ev
  virtual void  v207(); // _ZN10S3423C2_nt4v207Ev
  virtual void  v208(); // _ZN10S3423C2_nt4v208Ev
  virtual void  v209(); // _ZN10S3423C2_nt4v209Ev
  virtual void  v210(); // _ZN10S3423C2_nt4v210Ev
  virtual void  v211(); // _ZN10S3423C2_nt4v211Ev
  virtual void  v212(); // _ZN10S3423C2_nt4v212Ev
  virtual void  v213(); // _ZN10S3423C2_nt4v213Ev
  virtual void  v214(); // _ZN10S3423C2_nt4v214Ev
  S3423C2_nt(); // tgen
};
//SIG(-1 S3423C2_nt) C1{ BC2{ vd v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 FC4{ BC5{ BC6{ m Fp Fi[2]}}} FC4 FC7{ m Fi} Fi Fc[4] Fp[2] FC4 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC3 FC3 FC3 FC8{ BC9{ BC6}} FC8 Fi Fp[2] FC10{ m Fi[3]} FC10 FC10 FC10 Fp FC3 FC8 FC10 FC10 Fi FC10 FC10 Fp Fi Fc FC10 FC10 Fp Fi Fp FC8 FC11{ BC12{ BC6}} FC11}


 S3423C2_nt ::~S3423C2_nt(){ note_dtor("S3423C2_nt", this);}
void  S3423C2_nt ::v72(){vfunc_called(this, "_ZN10S3423C2_nt3v72Ev");}
void  S3423C2_nt ::v73(){vfunc_called(this, "_ZN10S3423C2_nt3v73Ev");}
void  S3423C2_nt ::v74(){vfunc_called(this, "_ZN10S3423C2_nt3v74Ev");}
void  S3423C2_nt ::v75(){vfunc_called(this, "_ZN10S3423C2_nt3v75Ev");}
void  S3423C2_nt ::v76(){vfunc_called(this, "_ZN10S3423C2_nt3v76Ev");}
void  S3423C2_nt ::v77(){vfunc_called(this, "_ZN10S3423C2_nt3v77Ev");}
void  S3423C2_nt ::v78(){vfunc_called(this, "_ZN10S3423C2_nt3v78Ev");}
void  S3423C2_nt ::v79(){vfunc_called(this, "_ZN10S3423C2_nt3v79Ev");}
void  S3423C2_nt ::v80(){vfunc_called(this, "_ZN10S3423C2_nt3v80Ev");}
void  S3423C2_nt ::v81(){vfunc_called(this, "_ZN10S3423C2_nt3v81Ev");}
void  S3423C2_nt ::v82(){vfunc_called(this, "_ZN10S3423C2_nt3v82Ev");}
void  S3423C2_nt ::v83(){vfunc_called(this, "_ZN10S3423C2_nt3v83Ev");}
void  S3423C2_nt ::v84(){vfunc_called(this, "_ZN10S3423C2_nt3v84Ev");}
void  S3423C2_nt ::v85(){vfunc_called(this, "_ZN10S3423C2_nt3v85Ev");}
void  S3423C2_nt ::v86(){vfunc_called(this, "_ZN10S3423C2_nt3v86Ev");}
void  S3423C2_nt ::v87(){vfunc_called(this, "_ZN10S3423C2_nt3v87Ev");}
void  S3423C2_nt ::v88(){vfunc_called(this, "_ZN10S3423C2_nt3v88Ev");}
void  S3423C2_nt ::v89(){vfunc_called(this, "_ZN10S3423C2_nt3v89Ev");}
void  S3423C2_nt ::v90(){vfunc_called(this, "_ZN10S3423C2_nt3v90Ev");}
void  S3423C2_nt ::v91(){vfunc_called(this, "_ZN10S3423C2_nt3v91Ev");}
void  S3423C2_nt ::v92(){vfunc_called(this, "_ZN10S3423C2_nt3v92Ev");}
void  S3423C2_nt ::v93(){vfunc_called(this, "_ZN10S3423C2_nt3v93Ev");}
void  S3423C2_nt ::v94(){vfunc_called(this, "_ZN10S3423C2_nt3v94Ev");}
void  S3423C2_nt ::v95(){vfunc_called(this, "_ZN10S3423C2_nt3v95Ev");}
void  S3423C2_nt ::v96(){vfunc_called(this, "_ZN10S3423C2_nt3v96Ev");}
void  S3423C2_nt ::v97(){vfunc_called(this, "_ZN10S3423C2_nt3v97Ev");}
void  S3423C2_nt ::v98(){vfunc_called(this, "_ZN10S3423C2_nt3v98Ev");}
void  S3423C2_nt ::v99(){vfunc_called(this, "_ZN10S3423C2_nt3v99Ev");}
void  S3423C2_nt ::v100(){vfunc_called(this, "_ZN10S3423C2_nt4v100Ev");}
void  S3423C2_nt ::v101(){vfunc_called(this, "_ZN10S3423C2_nt4v101Ev");}
void  S3423C2_nt ::v102(){vfunc_called(this, "_ZN10S3423C2_nt4v102Ev");}
void  S3423C2_nt ::v103(){vfunc_called(this, "_ZN10S3423C2_nt4v103Ev");}
void  S3423C2_nt ::v104(){vfunc_called(this, "_ZN10S3423C2_nt4v104Ev");}
void  S3423C2_nt ::v105(){vfunc_called(this, "_ZN10S3423C2_nt4v105Ev");}
void  S3423C2_nt ::v106(){vfunc_called(this, "_ZN10S3423C2_nt4v106Ev");}
void  S3423C2_nt ::v107(){vfunc_called(this, "_ZN10S3423C2_nt4v107Ev");}
void  S3423C2_nt ::v108(){vfunc_called(this, "_ZN10S3423C2_nt4v108Ev");}
void  S3423C2_nt ::v109(){vfunc_called(this, "_ZN10S3423C2_nt4v109Ev");}
void  S3423C2_nt ::v110(){vfunc_called(this, "_ZN10S3423C2_nt4v110Ev");}
void  S3423C2_nt ::v111(){vfunc_called(this, "_ZN10S3423C2_nt4v111Ev");}
void  S3423C2_nt ::v112(){vfunc_called(this, "_ZN10S3423C2_nt4v112Ev");}
void  S3423C2_nt ::v113(){vfunc_called(this, "_ZN10S3423C2_nt4v113Ev");}
void  S3423C2_nt ::v114(){vfunc_called(this, "_ZN10S3423C2_nt4v114Ev");}
void  S3423C2_nt ::v115(){vfunc_called(this, "_ZN10S3423C2_nt4v115Ev");}
void  S3423C2_nt ::v116(){vfunc_called(this, "_ZN10S3423C2_nt4v116Ev");}
void  S3423C2_nt ::v117(){vfunc_called(this, "_ZN10S3423C2_nt4v117Ev");}
void  S3423C2_nt ::v118(){vfunc_called(this, "_ZN10S3423C2_nt4v118Ev");}
void  S3423C2_nt ::v119(){vfunc_called(this, "_ZN10S3423C2_nt4v119Ev");}
void  S3423C2_nt ::v120(){vfunc_called(this, "_ZN10S3423C2_nt4v120Ev");}
void  S3423C2_nt ::v121(){vfunc_called(this, "_ZN10S3423C2_nt4v121Ev");}
void  S3423C2_nt ::v122(){vfunc_called(this, "_ZN10S3423C2_nt4v122Ev");}
void  S3423C2_nt ::v123(){vfunc_called(this, "_ZN10S3423C2_nt4v123Ev");}
void  S3423C2_nt ::v124(){vfunc_called(this, "_ZN10S3423C2_nt4v124Ev");}
void  S3423C2_nt ::v125(){vfunc_called(this, "_ZN10S3423C2_nt4v125Ev");}
void  S3423C2_nt ::v126(){vfunc_called(this, "_ZN10S3423C2_nt4v126Ev");}
void  S3423C2_nt ::v127(){vfunc_called(this, "_ZN10S3423C2_nt4v127Ev");}
void  S3423C2_nt ::v128(){vfunc_called(this, "_ZN10S3423C2_nt4v128Ev");}
void  S3423C2_nt ::v129(){vfunc_called(this, "_ZN10S3423C2_nt4v129Ev");}
void  S3423C2_nt ::v130(){vfunc_called(this, "_ZN10S3423C2_nt4v130Ev");}
void  S3423C2_nt ::v131(){vfunc_called(this, "_ZN10S3423C2_nt4v131Ev");}
void  S3423C2_nt ::v132(){vfunc_called(this, "_ZN10S3423C2_nt4v132Ev");}
void  S3423C2_nt ::v133(){vfunc_called(this, "_ZN10S3423C2_nt4v133Ev");}
void  S3423C2_nt ::v134(){vfunc_called(this, "_ZN10S3423C2_nt4v134Ev");}
void  S3423C2_nt ::v135(){vfunc_called(this, "_ZN10S3423C2_nt4v135Ev");}
void  S3423C2_nt ::v136(){vfunc_called(this, "_ZN10S3423C2_nt4v136Ev");}
void  S3423C2_nt ::v137(){vfunc_called(this, "_ZN10S3423C2_nt4v137Ev");}
void  S3423C2_nt ::v138(){vfunc_called(this, "_ZN10S3423C2_nt4v138Ev");}
void  S3423C2_nt ::v139(){vfunc_called(this, "_ZN10S3423C2_nt4v139Ev");}
void  S3423C2_nt ::v140(){vfunc_called(this, "_ZN10S3423C2_nt4v140Ev");}
void  S3423C2_nt ::v141(){vfunc_called(this, "_ZN10S3423C2_nt4v141Ev");}
void  S3423C2_nt ::v142(){vfunc_called(this, "_ZN10S3423C2_nt4v142Ev");}
void  S3423C2_nt ::v143(){vfunc_called(this, "_ZN10S3423C2_nt4v143Ev");}
void  S3423C2_nt ::v144(){vfunc_called(this, "_ZN10S3423C2_nt4v144Ev");}
void  S3423C2_nt ::v145(){vfunc_called(this, "_ZN10S3423C2_nt4v145Ev");}
void  S3423C2_nt ::v146(){vfunc_called(this, "_ZN10S3423C2_nt4v146Ev");}
void  S3423C2_nt ::v147(){vfunc_called(this, "_ZN10S3423C2_nt4v147Ev");}
void  S3423C2_nt ::v148(){vfunc_called(this, "_ZN10S3423C2_nt4v148Ev");}
void  S3423C2_nt ::v149(){vfunc_called(this, "_ZN10S3423C2_nt4v149Ev");}
void  S3423C2_nt ::v150(){vfunc_called(this, "_ZN10S3423C2_nt4v150Ev");}
void  S3423C2_nt ::v151(){vfunc_called(this, "_ZN10S3423C2_nt4v151Ev");}
void  S3423C2_nt ::v152(){vfunc_called(this, "_ZN10S3423C2_nt4v152Ev");}
void  S3423C2_nt ::v153(){vfunc_called(this, "_ZN10S3423C2_nt4v153Ev");}
void  S3423C2_nt ::v154(){vfunc_called(this, "_ZN10S3423C2_nt4v154Ev");}
void  S3423C2_nt ::v155(){vfunc_called(this, "_ZN10S3423C2_nt4v155Ev");}
void  S3423C2_nt ::v156(){vfunc_called(this, "_ZN10S3423C2_nt4v156Ev");}
void  S3423C2_nt ::v157(){vfunc_called(this, "_ZN10S3423C2_nt4v157Ev");}
void  S3423C2_nt ::v158(){vfunc_called(this, "_ZN10S3423C2_nt4v158Ev");}
void  S3423C2_nt ::v159(){vfunc_called(this, "_ZN10S3423C2_nt4v159Ev");}
void  S3423C2_nt ::v160(){vfunc_called(this, "_ZN10S3423C2_nt4v160Ev");}
void  S3423C2_nt ::v161(){vfunc_called(this, "_ZN10S3423C2_nt4v161Ev");}
void  S3423C2_nt ::v162(){vfunc_called(this, "_ZN10S3423C2_nt4v162Ev");}
void  S3423C2_nt ::v163(){vfunc_called(this, "_ZN10S3423C2_nt4v163Ev");}
void  S3423C2_nt ::v164(){vfunc_called(this, "_ZN10S3423C2_nt4v164Ev");}
void  S3423C2_nt ::v165(){vfunc_called(this, "_ZN10S3423C2_nt4v165Ev");}
void  S3423C2_nt ::v166(){vfunc_called(this, "_ZN10S3423C2_nt4v166Ev");}
void  S3423C2_nt ::v167(){vfunc_called(this, "_ZN10S3423C2_nt4v167Ev");}
void  S3423C2_nt ::v168(){vfunc_called(this, "_ZN10S3423C2_nt4v168Ev");}
void  S3423C2_nt ::v169(){vfunc_called(this, "_ZN10S3423C2_nt4v169Ev");}
void  S3423C2_nt ::v170(){vfunc_called(this, "_ZN10S3423C2_nt4v170Ev");}
void  S3423C2_nt ::v171(){vfunc_called(this, "_ZN10S3423C2_nt4v171Ev");}
void  S3423C2_nt ::v172(){vfunc_called(this, "_ZN10S3423C2_nt4v172Ev");}
void  S3423C2_nt ::v173(){vfunc_called(this, "_ZN10S3423C2_nt4v173Ev");}
void  S3423C2_nt ::v174(){vfunc_called(this, "_ZN10S3423C2_nt4v174Ev");}
void  S3423C2_nt ::v175(){vfunc_called(this, "_ZN10S3423C2_nt4v175Ev");}
void  S3423C2_nt ::v176(){vfunc_called(this, "_ZN10S3423C2_nt4v176Ev");}
void  S3423C2_nt ::v177(){vfunc_called(this, "_ZN10S3423C2_nt4v177Ev");}
void  S3423C2_nt ::v178(){vfunc_called(this, "_ZN10S3423C2_nt4v178Ev");}
void  S3423C2_nt ::v179(){vfunc_called(this, "_ZN10S3423C2_nt4v179Ev");}
void  S3423C2_nt ::v180(){vfunc_called(this, "_ZN10S3423C2_nt4v180Ev");}
void  S3423C2_nt ::v181(){vfunc_called(this, "_ZN10S3423C2_nt4v181Ev");}
void  S3423C2_nt ::v182(){vfunc_called(this, "_ZN10S3423C2_nt4v182Ev");}
void  S3423C2_nt ::v183(){vfunc_called(this, "_ZN10S3423C2_nt4v183Ev");}
void  S3423C2_nt ::v184(){vfunc_called(this, "_ZN10S3423C2_nt4v184Ev");}
void  S3423C2_nt ::v185(){vfunc_called(this, "_ZN10S3423C2_nt4v185Ev");}
void  S3423C2_nt ::v186(){vfunc_called(this, "_ZN10S3423C2_nt4v186Ev");}
void  S3423C2_nt ::v187(){vfunc_called(this, "_ZN10S3423C2_nt4v187Ev");}
void  S3423C2_nt ::v188(){vfunc_called(this, "_ZN10S3423C2_nt4v188Ev");}
void  S3423C2_nt ::v189(){vfunc_called(this, "_ZN10S3423C2_nt4v189Ev");}
void  S3423C2_nt ::v190(){vfunc_called(this, "_ZN10S3423C2_nt4v190Ev");}
void  S3423C2_nt ::v191(){vfunc_called(this, "_ZN10S3423C2_nt4v191Ev");}
void  S3423C2_nt ::v192(){vfunc_called(this, "_ZN10S3423C2_nt4v192Ev");}
void  S3423C2_nt ::v193(){vfunc_called(this, "_ZN10S3423C2_nt4v193Ev");}
void  S3423C2_nt ::v194(){vfunc_called(this, "_ZN10S3423C2_nt4v194Ev");}
void  S3423C2_nt ::v195(){vfunc_called(this, "_ZN10S3423C2_nt4v195Ev");}
void  S3423C2_nt ::v196(){vfunc_called(this, "_ZN10S3423C2_nt4v196Ev");}
void  S3423C2_nt ::v197(){vfunc_called(this, "_ZN10S3423C2_nt4v197Ev");}
void  S3423C2_nt ::v198(){vfunc_called(this, "_ZN10S3423C2_nt4v198Ev");}
void  S3423C2_nt ::v199(){vfunc_called(this, "_ZN10S3423C2_nt4v199Ev");}
void  S3423C2_nt ::v200(){vfunc_called(this, "_ZN10S3423C2_nt4v200Ev");}
void  S3423C2_nt ::v201(){vfunc_called(this, "_ZN10S3423C2_nt4v201Ev");}
void  S3423C2_nt ::v202(){vfunc_called(this, "_ZN10S3423C2_nt4v202Ev");}
void  S3423C2_nt ::v203(){vfunc_called(this, "_ZN10S3423C2_nt4v203Ev");}
void  S3423C2_nt ::v204(){vfunc_called(this, "_ZN10S3423C2_nt4v204Ev");}
void  S3423C2_nt ::v205(){vfunc_called(this, "_ZN10S3423C2_nt4v205Ev");}
void  S3423C2_nt ::v206(){vfunc_called(this, "_ZN10S3423C2_nt4v206Ev");}
void  S3423C2_nt ::v207(){vfunc_called(this, "_ZN10S3423C2_nt4v207Ev");}
void  S3423C2_nt ::v208(){vfunc_called(this, "_ZN10S3423C2_nt4v208Ev");}
void  S3423C2_nt ::v209(){vfunc_called(this, "_ZN10S3423C2_nt4v209Ev");}
void  S3423C2_nt ::v210(){vfunc_called(this, "_ZN10S3423C2_nt4v210Ev");}
void  S3423C2_nt ::v211(){vfunc_called(this, "_ZN10S3423C2_nt4v211Ev");}
void  S3423C2_nt ::v212(){vfunc_called(this, "_ZN10S3423C2_nt4v212Ev");}
void  S3423C2_nt ::v213(){vfunc_called(this, "_ZN10S3423C2_nt4v213Ev");}
void  S3423C2_nt ::v214(){vfunc_called(this, "_ZN10S3423C2_nt4v214Ev");}
S3423C2_nt ::S3423C2_nt(){ note_ctor("S3423C2_nt", this);} // tgen

//skip512 S3423C2_nt

#else // __cplusplus

extern void _ZN10S3423C2_ntC1Ev();
extern void _ZN10S3423C2_ntD1Ev();
Name_Map name_map_S3423C2_nt[] = {
  NSPAIR(_ZN10S3423C2_ntC1Ev),
  NSPAIR(_ZN10S3423C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C3_nt;
extern VTBL_ENTRY _ZTI10S3423C3_nt[];
extern  VTBL_ENTRY _ZTV10S3423C3_nt[];
static Base_Class bases_S3423C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3423C2_nt[];
extern void _ZN10S3423C2_ntD1Ev();
extern void _ZN10S3423C2_ntD0Ev();
extern void _ZN10S3423C3_nt2v8Ev();
extern void _ZN10S3423C3_nt2v9Ev();
extern void _ZN10S3423C3_nt3v10Ev();
extern void _ZN10S3423C3_nt3v11Ev();
extern void _ZN10S3423C3_nt3v12Ev();
extern void _ZN10S3423C3_nt3v13Ev();
extern void _ZN10S3423C3_nt3v14Ev();
extern void _ZN10S3423C3_nt3v15Ev();
extern void _ZN10S3423C3_nt3v16Ev();
extern void _ZN10S3423C3_nt3v17Ev();
extern void _ZN10S3423C3_nt3v18Ev();
extern void _ZN10S3423C3_nt3v19Ev();
extern void _ZN10S3423C3_nt3v20Ev();
extern void _ZN10S3423C3_nt3v21Ev();
extern void _ZN10S3423C3_nt3v22Ev();
extern void _ZN10S3423C3_nt3v23Ev();
extern void _ZN10S3423C3_nt3v24Ev();
extern void _ZN10S3423C3_nt3v25Ev();
extern void _ZN10S3423C3_nt3v26Ev();
extern void _ZN10S3423C3_nt3v27Ev();
extern void _ZN10S3423C3_nt3v28Ev();
extern void _ZN10S3423C3_nt3v29Ev();
extern void _ZN10S3423C3_nt3v30Ev();
extern void _ZN10S3423C3_nt3v31Ev();
extern void _ZN10S3423C3_nt3v32Ev();
extern void _ZN10S3423C3_nt3v33Ev();
extern void _ZN10S3423C3_nt3v34Ev();
extern void _ZN10S3423C3_nt3v35Ev();
extern void _ZN10S3423C3_nt3v36Ev();
extern void _ZN10S3423C3_nt3v37Ev();
extern void _ZN10S3423C3_nt3v38Ev();
extern void _ZN10S3423C3_nt3v39Ev();
extern void _ZN10S3423C3_nt3v40Ev();
extern void _ZN10S3423C3_nt3v41Ev();
extern void _ZN10S3423C3_nt3v42Ev();
extern void _ZN10S3423C3_nt3v43Ev();
extern void _ZN10S3423C3_nt3v44Ev();
extern void _ZN10S3423C3_nt3v45Ev();
extern void _ZN10S3423C3_nt3v46Ev();
extern void _ZN10S3423C3_nt3v47Ev();
extern void _ZN10S3423C3_nt3v48Ev();
extern void _ZN10S3423C3_nt3v49Ev();
extern void _ZN10S3423C3_nt3v50Ev();
extern void _ZN10S3423C3_nt3v51Ev();
extern void _ZN10S3423C3_nt3v52Ev();
extern void _ZN10S3423C3_nt3v53Ev();
extern void _ZN10S3423C3_nt3v54Ev();
extern void _ZN10S3423C3_nt3v55Ev();
extern void _ZN10S3423C3_nt3v56Ev();
extern void _ZN10S3423C3_nt3v57Ev();
extern void _ZN10S3423C3_nt3v58Ev();
extern void _ZN10S3423C3_nt3v59Ev();
extern void _ZN10S3423C3_nt3v60Ev();
extern void _ZN10S3423C3_nt3v61Ev();
extern void _ZN10S3423C3_nt3v62Ev();
extern void _ZN10S3423C3_nt3v63Ev();
extern void _ZN10S3423C3_nt3v64Ev();
extern void _ZN10S3423C3_nt3v65Ev();
extern void _ZN10S3423C3_nt3v66Ev();
extern void _ZN10S3423C3_nt3v67Ev();
extern void _ZN10S3423C3_nt3v68Ev();
extern void _ZN10S3423C3_nt3v69Ev();
extern void _ZN10S3423C3_nt3v70Ev();
extern void _ZN10S3423C3_nt3v71Ev();
extern void _ZN10S3423C2_nt3v72Ev();
extern void _ZN10S3423C2_nt3v73Ev();
extern void _ZN10S3423C2_nt3v74Ev();
extern void _ZN10S3423C2_nt3v75Ev();
extern void _ZN10S3423C2_nt3v76Ev();
extern void _ZN10S3423C2_nt3v77Ev();
extern void _ZN10S3423C2_nt3v78Ev();
extern void _ZN10S3423C2_nt3v79Ev();
extern void _ZN10S3423C2_nt3v80Ev();
extern void _ZN10S3423C2_nt3v81Ev();
extern void _ZN10S3423C2_nt3v82Ev();
extern void _ZN10S3423C2_nt3v83Ev();
extern void _ZN10S3423C2_nt3v84Ev();
extern void _ZN10S3423C2_nt3v85Ev();
extern void _ZN10S3423C2_nt3v86Ev();
extern void _ZN10S3423C2_nt3v87Ev();
extern void _ZN10S3423C2_nt3v88Ev();
extern void _ZN10S3423C2_nt3v89Ev();
extern void _ZN10S3423C2_nt3v90Ev();
extern void _ZN10S3423C2_nt3v91Ev();
extern void _ZN10S3423C2_nt3v92Ev();
extern void _ZN10S3423C2_nt3v93Ev();
extern void _ZN10S3423C2_nt3v94Ev();
extern void _ZN10S3423C2_nt3v95Ev();
extern void _ZN10S3423C2_nt3v96Ev();
extern void _ZN10S3423C2_nt3v97Ev();
extern void _ZN10S3423C2_nt3v98Ev();
extern void _ZN10S3423C2_nt3v99Ev();
extern void _ZN10S3423C2_nt4v100Ev();
extern void _ZN10S3423C2_nt4v101Ev();
extern void _ZN10S3423C2_nt4v102Ev();
extern void _ZN10S3423C2_nt4v103Ev();
extern void _ZN10S3423C2_nt4v104Ev();
extern void _ZN10S3423C2_nt4v105Ev();
extern void _ZN10S3423C2_nt4v106Ev();
extern void _ZN10S3423C2_nt4v107Ev();
extern void _ZN10S3423C2_nt4v108Ev();
extern void _ZN10S3423C2_nt4v109Ev();
extern void _ZN10S3423C2_nt4v110Ev();
extern void _ZN10S3423C2_nt4v111Ev();
extern void _ZN10S3423C2_nt4v112Ev();
extern void _ZN10S3423C2_nt4v113Ev();
extern void _ZN10S3423C2_nt4v114Ev();
extern void _ZN10S3423C2_nt4v115Ev();
extern void _ZN10S3423C2_nt4v116Ev();
extern void _ZN10S3423C2_nt4v117Ev();
extern void _ZN10S3423C2_nt4v118Ev();
extern void _ZN10S3423C2_nt4v119Ev();
extern void _ZN10S3423C2_nt4v120Ev();
extern void _ZN10S3423C2_nt4v121Ev();
extern void _ZN10S3423C2_nt4v122Ev();
extern void _ZN10S3423C2_nt4v123Ev();
extern void _ZN10S3423C2_nt4v124Ev();
extern void _ZN10S3423C2_nt4v125Ev();
extern void _ZN10S3423C2_nt4v126Ev();
extern void _ZN10S3423C2_nt4v127Ev();
extern void _ZN10S3423C2_nt4v128Ev();
extern void _ZN10S3423C2_nt4v129Ev();
extern void _ZN10S3423C2_nt4v130Ev();
extern void _ZN10S3423C2_nt4v131Ev();
extern void _ZN10S3423C2_nt4v132Ev();
extern void _ZN10S3423C2_nt4v133Ev();
extern void _ZN10S3423C2_nt4v134Ev();
extern void _ZN10S3423C2_nt4v135Ev();
extern void _ZN10S3423C2_nt4v136Ev();
extern void _ZN10S3423C2_nt4v137Ev();
extern void _ZN10S3423C2_nt4v138Ev();
extern void _ZN10S3423C2_nt4v139Ev();
extern void _ZN10S3423C2_nt4v140Ev();
extern void _ZN10S3423C2_nt4v141Ev();
extern void _ZN10S3423C2_nt4v142Ev();
extern void _ZN10S3423C2_nt4v143Ev();
extern void _ZN10S3423C2_nt4v144Ev();
extern void _ZN10S3423C2_nt4v145Ev();
extern void _ZN10S3423C2_nt4v146Ev();
extern void _ZN10S3423C2_nt4v147Ev();
extern void _ZN10S3423C2_nt4v148Ev();
extern void _ZN10S3423C2_nt4v149Ev();
extern void _ZN10S3423C2_nt4v150Ev();
extern void _ZN10S3423C2_nt4v151Ev();
extern void _ZN10S3423C2_nt4v152Ev();
extern void _ZN10S3423C2_nt4v153Ev();
extern void _ZN10S3423C2_nt4v154Ev();
extern void _ZN10S3423C2_nt4v155Ev();
extern void _ZN10S3423C2_nt4v156Ev();
extern void _ZN10S3423C2_nt4v157Ev();
extern void _ZN10S3423C2_nt4v158Ev();
extern void _ZN10S3423C2_nt4v159Ev();
extern void _ZN10S3423C2_nt4v160Ev();
extern void _ZN10S3423C2_nt4v161Ev();
extern void _ZN10S3423C2_nt4v162Ev();
extern void _ZN10S3423C2_nt4v163Ev();
extern void _ZN10S3423C2_nt4v164Ev();
extern void _ZN10S3423C2_nt4v165Ev();
extern void _ZN10S3423C2_nt4v166Ev();
extern void _ZN10S3423C2_nt4v167Ev();
extern void _ZN10S3423C2_nt4v168Ev();
extern void _ZN10S3423C2_nt4v169Ev();
extern void _ZN10S3423C2_nt4v170Ev();
extern void _ZN10S3423C2_nt4v171Ev();
extern void _ZN10S3423C2_nt4v172Ev();
extern void _ZN10S3423C2_nt4v173Ev();
extern void _ZN10S3423C2_nt4v174Ev();
extern void _ZN10S3423C2_nt4v175Ev();
extern void _ZN10S3423C2_nt4v176Ev();
extern void _ZN10S3423C2_nt4v177Ev();
extern void _ZN10S3423C2_nt4v178Ev();
extern void _ZN10S3423C2_nt4v179Ev();
extern void _ZN10S3423C2_nt4v180Ev();
extern void _ZN10S3423C2_nt4v181Ev();
extern void _ZN10S3423C2_nt4v182Ev();
extern void _ZN10S3423C2_nt4v183Ev();
extern void _ZN10S3423C2_nt4v184Ev();
extern void _ZN10S3423C2_nt4v185Ev();
extern void _ZN10S3423C2_nt4v186Ev();
extern void _ZN10S3423C2_nt4v187Ev();
extern void _ZN10S3423C2_nt4v188Ev();
extern void _ZN10S3423C2_nt4v189Ev();
extern void _ZN10S3423C2_nt4v190Ev();
extern void _ZN10S3423C2_nt4v191Ev();
extern void _ZN10S3423C2_nt4v192Ev();
extern void _ZN10S3423C2_nt4v193Ev();
extern void _ZN10S3423C2_nt4v194Ev();
extern void _ZN10S3423C2_nt4v195Ev();
extern void _ZN10S3423C2_nt4v196Ev();
extern void _ZN10S3423C2_nt4v197Ev();
extern void _ZN10S3423C2_nt4v198Ev();
extern void _ZN10S3423C2_nt4v199Ev();
extern void _ZN10S3423C2_nt4v200Ev();
extern void _ZN10S3423C2_nt4v201Ev();
extern void _ZN10S3423C2_nt4v202Ev();
extern void _ZN10S3423C2_nt4v203Ev();
extern void _ZN10S3423C2_nt4v204Ev();
extern void _ZN10S3423C2_nt4v205Ev();
extern void _ZN10S3423C2_nt4v206Ev();
extern void _ZN10S3423C2_nt4v207Ev();
extern void _ZN10S3423C2_nt4v208Ev();
extern void _ZN10S3423C2_nt4v209Ev();
extern void _ZN10S3423C2_nt4v210Ev();
extern void _ZN10S3423C2_nt4v211Ev();
extern void _ZN10S3423C2_nt4v212Ev();
extern void _ZN10S3423C2_nt4v213Ev();
extern void _ZN10S3423C2_nt4v214Ev();
static  VTBL_ENTRY vtc_S3423C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3423C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3423C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v210Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v211Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v212Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v213Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v214Ev,
};
extern VTBL_ENTRY _ZTI10S3423C2_nt[];
VTBL_ENTRY *P__ZTI10S3423C2_nt = _ZTI10S3423C2_nt; 
extern  VTBL_ENTRY _ZTV10S3423C2_nt[];
Class_Descriptor cd_S3423C2_nt = {  "S3423C2_nt", // class name
  bases_S3423C2_nt, 1,
  &(vtc_S3423C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(568,436), // object size
  NSPAIRA(_ZTI10S3423C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3423C2_nt),211, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3423C1  : S3423C2_nt {
  void *s3423c1f0;
  virtual  ~S3423C1(); // _ZN7S3423C1D1Ev
  virtual void  v1(); // _ZN7S3423C12v1Ev
  virtual void  v2(); // _ZN7S3423C12v2Ev
  virtual void  v3(); // _ZN7S3423C12v3Ev
  virtual void  v4(); // _ZN7S3423C12v4Ev
  virtual void  v5(); // _ZN7S3423C12v5Ev
  virtual void  v6(); // _ZN7S3423C12v6Ev
  virtual void  v7(); // _ZN7S3423C12v7Ev
  S3423C1(); // tgen
};
//SIG(1 S3423C1) C1{ BC2{ BC3{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 v211 v212 v213 v214 FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC5 FC8{ m Fi} Fi Fc[4] Fp[2] FC5 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC4 FC4 FC4 FC9{ BC10{ BC7}} FC9 Fi Fp[2] FC11{ m Fi[3]} FC11 FC11 FC11 Fp FC4 FC9 FC11 FC11 Fi FC11 FC11 Fp Fi Fc FC11 FC11 Fp Fi Fp FC9 FC12{ BC13{ BC7}} FC12} vd v1 v2 v3 v4 v5 v6 v7 Fp}


 S3423C1 ::~S3423C1(){ note_dtor("S3423C1", this);}
void  S3423C1 ::v1(){vfunc_called(this, "_ZN7S3423C12v1Ev");}
void  S3423C1 ::v2(){vfunc_called(this, "_ZN7S3423C12v2Ev");}
void  S3423C1 ::v3(){vfunc_called(this, "_ZN7S3423C12v3Ev");}
void  S3423C1 ::v4(){vfunc_called(this, "_ZN7S3423C12v4Ev");}
void  S3423C1 ::v5(){vfunc_called(this, "_ZN7S3423C12v5Ev");}
void  S3423C1 ::v6(){vfunc_called(this, "_ZN7S3423C12v6Ev");}
void  S3423C1 ::v7(){vfunc_called(this, "_ZN7S3423C12v7Ev");}
S3423C1 ::S3423C1(){ note_ctor("S3423C1", this);} // tgen

static void Test_S3423C1()
{
  extern Class_Descriptor cd_S3423C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(73,111)];
    init_test(&cd_S3423C1, buf);
    S3423C1 *dp, &lv = *(dp=new (buf) S3423C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(576,440), "sizeof(S3423C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3423C1)");
    check_base_class_offset(lv, (S3423C3_nt*)(S3423C2_nt*), 0, "S3423C1");
    check_base_class_offset(lv, (S3423C2_nt*), 0, "S3423C1");
    check_field_offset(lv, s3423c1f0, ABISELECT(568,436), "S3423C1.s3423c1f0");
    test_class_info(&lv, &cd_S3423C1);
    dp->~S3423C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3423C1(Test_S3423C1, "S3423C1", ABISELECT(576,440));

#else // __cplusplus

extern void _ZN7S3423C1C1Ev();
extern void _ZN7S3423C1D1Ev();
Name_Map name_map_S3423C1[] = {
  NSPAIR(_ZN7S3423C1C1Ev),
  NSPAIR(_ZN7S3423C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C3_nt;
extern VTBL_ENTRY _ZTI10S3423C3_nt[];
extern  VTBL_ENTRY _ZTV10S3423C3_nt[];
extern Class_Descriptor cd_S3423C2_nt;
extern VTBL_ENTRY _ZTI10S3423C2_nt[];
extern  VTBL_ENTRY _ZTV10S3423C2_nt[];
static Base_Class bases_S3423C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3423C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3423C1[];
extern void _ZN7S3423C1D1Ev();
extern void _ZN7S3423C1D0Ev();
extern void _ZN10S3423C3_nt2v8Ev();
extern void _ZN10S3423C3_nt2v9Ev();
extern void _ZN10S3423C3_nt3v10Ev();
extern void _ZN10S3423C3_nt3v11Ev();
extern void _ZN10S3423C3_nt3v12Ev();
extern void _ZN10S3423C3_nt3v13Ev();
extern void _ZN10S3423C3_nt3v14Ev();
extern void _ZN10S3423C3_nt3v15Ev();
extern void _ZN10S3423C3_nt3v16Ev();
extern void _ZN10S3423C3_nt3v17Ev();
extern void _ZN10S3423C3_nt3v18Ev();
extern void _ZN10S3423C3_nt3v19Ev();
extern void _ZN10S3423C3_nt3v20Ev();
extern void _ZN10S3423C3_nt3v21Ev();
extern void _ZN10S3423C3_nt3v22Ev();
extern void _ZN10S3423C3_nt3v23Ev();
extern void _ZN10S3423C3_nt3v24Ev();
extern void _ZN10S3423C3_nt3v25Ev();
extern void _ZN10S3423C3_nt3v26Ev();
extern void _ZN10S3423C3_nt3v27Ev();
extern void _ZN10S3423C3_nt3v28Ev();
extern void _ZN10S3423C3_nt3v29Ev();
extern void _ZN10S3423C3_nt3v30Ev();
extern void _ZN10S3423C3_nt3v31Ev();
extern void _ZN10S3423C3_nt3v32Ev();
extern void _ZN10S3423C3_nt3v33Ev();
extern void _ZN10S3423C3_nt3v34Ev();
extern void _ZN10S3423C3_nt3v35Ev();
extern void _ZN10S3423C3_nt3v36Ev();
extern void _ZN10S3423C3_nt3v37Ev();
extern void _ZN10S3423C3_nt3v38Ev();
extern void _ZN10S3423C3_nt3v39Ev();
extern void _ZN10S3423C3_nt3v40Ev();
extern void _ZN10S3423C3_nt3v41Ev();
extern void _ZN10S3423C3_nt3v42Ev();
extern void _ZN10S3423C3_nt3v43Ev();
extern void _ZN10S3423C3_nt3v44Ev();
extern void _ZN10S3423C3_nt3v45Ev();
extern void _ZN10S3423C3_nt3v46Ev();
extern void _ZN10S3423C3_nt3v47Ev();
extern void _ZN10S3423C3_nt3v48Ev();
extern void _ZN10S3423C3_nt3v49Ev();
extern void _ZN10S3423C3_nt3v50Ev();
extern void _ZN10S3423C3_nt3v51Ev();
extern void _ZN10S3423C3_nt3v52Ev();
extern void _ZN10S3423C3_nt3v53Ev();
extern void _ZN10S3423C3_nt3v54Ev();
extern void _ZN10S3423C3_nt3v55Ev();
extern void _ZN10S3423C3_nt3v56Ev();
extern void _ZN10S3423C3_nt3v57Ev();
extern void _ZN10S3423C3_nt3v58Ev();
extern void _ZN10S3423C3_nt3v59Ev();
extern void _ZN10S3423C3_nt3v60Ev();
extern void _ZN10S3423C3_nt3v61Ev();
extern void _ZN10S3423C3_nt3v62Ev();
extern void _ZN10S3423C3_nt3v63Ev();
extern void _ZN10S3423C3_nt3v64Ev();
extern void _ZN10S3423C3_nt3v65Ev();
extern void _ZN10S3423C3_nt3v66Ev();
extern void _ZN10S3423C3_nt3v67Ev();
extern void _ZN10S3423C3_nt3v68Ev();
extern void _ZN10S3423C3_nt3v69Ev();
extern void _ZN10S3423C3_nt3v70Ev();
extern void _ZN10S3423C3_nt3v71Ev();
extern void _ZN10S3423C2_nt3v72Ev();
extern void _ZN10S3423C2_nt3v73Ev();
extern void _ZN10S3423C2_nt3v74Ev();
extern void _ZN10S3423C2_nt3v75Ev();
extern void _ZN10S3423C2_nt3v76Ev();
extern void _ZN10S3423C2_nt3v77Ev();
extern void _ZN10S3423C2_nt3v78Ev();
extern void _ZN10S3423C2_nt3v79Ev();
extern void _ZN10S3423C2_nt3v80Ev();
extern void _ZN10S3423C2_nt3v81Ev();
extern void _ZN10S3423C2_nt3v82Ev();
extern void _ZN10S3423C2_nt3v83Ev();
extern void _ZN10S3423C2_nt3v84Ev();
extern void _ZN10S3423C2_nt3v85Ev();
extern void _ZN10S3423C2_nt3v86Ev();
extern void _ZN10S3423C2_nt3v87Ev();
extern void _ZN10S3423C2_nt3v88Ev();
extern void _ZN10S3423C2_nt3v89Ev();
extern void _ZN10S3423C2_nt3v90Ev();
extern void _ZN10S3423C2_nt3v91Ev();
extern void _ZN10S3423C2_nt3v92Ev();
extern void _ZN10S3423C2_nt3v93Ev();
extern void _ZN10S3423C2_nt3v94Ev();
extern void _ZN10S3423C2_nt3v95Ev();
extern void _ZN10S3423C2_nt3v96Ev();
extern void _ZN10S3423C2_nt3v97Ev();
extern void _ZN10S3423C2_nt3v98Ev();
extern void _ZN10S3423C2_nt3v99Ev();
extern void _ZN10S3423C2_nt4v100Ev();
extern void _ZN10S3423C2_nt4v101Ev();
extern void _ZN10S3423C2_nt4v102Ev();
extern void _ZN10S3423C2_nt4v103Ev();
extern void _ZN10S3423C2_nt4v104Ev();
extern void _ZN10S3423C2_nt4v105Ev();
extern void _ZN10S3423C2_nt4v106Ev();
extern void _ZN10S3423C2_nt4v107Ev();
extern void _ZN10S3423C2_nt4v108Ev();
extern void _ZN10S3423C2_nt4v109Ev();
extern void _ZN10S3423C2_nt4v110Ev();
extern void _ZN10S3423C2_nt4v111Ev();
extern void _ZN10S3423C2_nt4v112Ev();
extern void _ZN10S3423C2_nt4v113Ev();
extern void _ZN10S3423C2_nt4v114Ev();
extern void _ZN10S3423C2_nt4v115Ev();
extern void _ZN10S3423C2_nt4v116Ev();
extern void _ZN10S3423C2_nt4v117Ev();
extern void _ZN10S3423C2_nt4v118Ev();
extern void _ZN10S3423C2_nt4v119Ev();
extern void _ZN10S3423C2_nt4v120Ev();
extern void _ZN10S3423C2_nt4v121Ev();
extern void _ZN10S3423C2_nt4v122Ev();
extern void _ZN10S3423C2_nt4v123Ev();
extern void _ZN10S3423C2_nt4v124Ev();
extern void _ZN10S3423C2_nt4v125Ev();
extern void _ZN10S3423C2_nt4v126Ev();
extern void _ZN10S3423C2_nt4v127Ev();
extern void _ZN10S3423C2_nt4v128Ev();
extern void _ZN10S3423C2_nt4v129Ev();
extern void _ZN10S3423C2_nt4v130Ev();
extern void _ZN10S3423C2_nt4v131Ev();
extern void _ZN10S3423C2_nt4v132Ev();
extern void _ZN10S3423C2_nt4v133Ev();
extern void _ZN10S3423C2_nt4v134Ev();
extern void _ZN10S3423C2_nt4v135Ev();
extern void _ZN10S3423C2_nt4v136Ev();
extern void _ZN10S3423C2_nt4v137Ev();
extern void _ZN10S3423C2_nt4v138Ev();
extern void _ZN10S3423C2_nt4v139Ev();
extern void _ZN10S3423C2_nt4v140Ev();
extern void _ZN10S3423C2_nt4v141Ev();
extern void _ZN10S3423C2_nt4v142Ev();
extern void _ZN10S3423C2_nt4v143Ev();
extern void _ZN10S3423C2_nt4v144Ev();
extern void _ZN10S3423C2_nt4v145Ev();
extern void _ZN10S3423C2_nt4v146Ev();
extern void _ZN10S3423C2_nt4v147Ev();
extern void _ZN10S3423C2_nt4v148Ev();
extern void _ZN10S3423C2_nt4v149Ev();
extern void _ZN10S3423C2_nt4v150Ev();
extern void _ZN10S3423C2_nt4v151Ev();
extern void _ZN10S3423C2_nt4v152Ev();
extern void _ZN10S3423C2_nt4v153Ev();
extern void _ZN10S3423C2_nt4v154Ev();
extern void _ZN10S3423C2_nt4v155Ev();
extern void _ZN10S3423C2_nt4v156Ev();
extern void _ZN10S3423C2_nt4v157Ev();
extern void _ZN10S3423C2_nt4v158Ev();
extern void _ZN10S3423C2_nt4v159Ev();
extern void _ZN10S3423C2_nt4v160Ev();
extern void _ZN10S3423C2_nt4v161Ev();
extern void _ZN10S3423C2_nt4v162Ev();
extern void _ZN10S3423C2_nt4v163Ev();
extern void _ZN10S3423C2_nt4v164Ev();
extern void _ZN10S3423C2_nt4v165Ev();
extern void _ZN10S3423C2_nt4v166Ev();
extern void _ZN10S3423C2_nt4v167Ev();
extern void _ZN10S3423C2_nt4v168Ev();
extern void _ZN10S3423C2_nt4v169Ev();
extern void _ZN10S3423C2_nt4v170Ev();
extern void _ZN10S3423C2_nt4v171Ev();
extern void _ZN10S3423C2_nt4v172Ev();
extern void _ZN10S3423C2_nt4v173Ev();
extern void _ZN10S3423C2_nt4v174Ev();
extern void _ZN10S3423C2_nt4v175Ev();
extern void _ZN10S3423C2_nt4v176Ev();
extern void _ZN10S3423C2_nt4v177Ev();
extern void _ZN10S3423C2_nt4v178Ev();
extern void _ZN10S3423C2_nt4v179Ev();
extern void _ZN10S3423C2_nt4v180Ev();
extern void _ZN10S3423C2_nt4v181Ev();
extern void _ZN10S3423C2_nt4v182Ev();
extern void _ZN10S3423C2_nt4v183Ev();
extern void _ZN10S3423C2_nt4v184Ev();
extern void _ZN10S3423C2_nt4v185Ev();
extern void _ZN10S3423C2_nt4v186Ev();
extern void _ZN10S3423C2_nt4v187Ev();
extern void _ZN10S3423C2_nt4v188Ev();
extern void _ZN10S3423C2_nt4v189Ev();
extern void _ZN10S3423C2_nt4v190Ev();
extern void _ZN10S3423C2_nt4v191Ev();
extern void _ZN10S3423C2_nt4v192Ev();
extern void _ZN10S3423C2_nt4v193Ev();
extern void _ZN10S3423C2_nt4v194Ev();
extern void _ZN10S3423C2_nt4v195Ev();
extern void _ZN10S3423C2_nt4v196Ev();
extern void _ZN10S3423C2_nt4v197Ev();
extern void _ZN10S3423C2_nt4v198Ev();
extern void _ZN10S3423C2_nt4v199Ev();
extern void _ZN10S3423C2_nt4v200Ev();
extern void _ZN10S3423C2_nt4v201Ev();
extern void _ZN10S3423C2_nt4v202Ev();
extern void _ZN10S3423C2_nt4v203Ev();
extern void _ZN10S3423C2_nt4v204Ev();
extern void _ZN10S3423C2_nt4v205Ev();
extern void _ZN10S3423C2_nt4v206Ev();
extern void _ZN10S3423C2_nt4v207Ev();
extern void _ZN10S3423C2_nt4v208Ev();
extern void _ZN10S3423C2_nt4v209Ev();
extern void _ZN10S3423C2_nt4v210Ev();
extern void _ZN10S3423C2_nt4v211Ev();
extern void _ZN10S3423C2_nt4v212Ev();
extern void _ZN10S3423C2_nt4v213Ev();
extern void _ZN10S3423C2_nt4v214Ev();
extern void _ZN7S3423C12v1Ev();
extern void _ZN7S3423C12v2Ev();
extern void _ZN7S3423C12v3Ev();
extern void _ZN7S3423C12v4Ev();
extern void _ZN7S3423C12v5Ev();
extern void _ZN7S3423C12v6Ev();
extern void _ZN7S3423C12v7Ev();
static  VTBL_ENTRY vtc_S3423C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3423C1[0]),
  (VTBL_ENTRY)&_ZN7S3423C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3423C1D0Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v210Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v211Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v212Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v213Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v214Ev,
  (VTBL_ENTRY)&_ZN7S3423C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3423C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3423C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3423C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3423C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3423C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3423C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3423C1[];
extern  VTBL_ENTRY _ZTV7S3423C1[];
Class_Descriptor cd_S3423C1 = {  "S3423C1", // class name
  bases_S3423C1, 2,
  &(vtc_S3423C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(576,440), // object size
  NSPAIRA(_ZTI7S3423C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3423C1),218, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C6_nt  {
  void  mf4228c6(); // _ZN10S4228C6_nt8mf4228c6Ev
};
//SIG(-1 S4228C6_nt) C1{ m}


void  S4228C6_nt ::mf4228c6(){}

//skip512 S4228C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C5_nt  {
  void *s4228c5f0;
  int s4228c5f1;
  ::S4228C6_nt s4228c5f2;
  ::S4228C6_nt s4228c5f3;
  void  mf4228c5(); // _ZN10S4228C5_nt8mf4228c5Ev
};
//SIG(-1 S4228C5_nt) C1{ m Fp Fi FC2{ m} FC2}


void  S4228C5_nt ::mf4228c5(){}

//skip512 S4228C5_nt

#else // __cplusplus

Class_Descriptor cd_S4228C5_nt = {  "S4228C5_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C4_nt  : S4228C5_nt {
};
//SIG(-1 S4228C4_nt) C1{ BC2{ m Fp Fi FC3{ m} FC3}}



//skip512 S4228C4_nt

#else // __cplusplus

extern Class_Descriptor cd_S4228C5_nt;
static Base_Class bases_S4228C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C3_nt  {
  void *s4228c3f0;
  int s4228c3f1;
  ::S4228C4_nt s4228c3f2;
  ::S4228C4_nt s4228c3f3;
  int s4228c3f4;
  virtual  ~S4228C3_nt(); // _ZN10S4228C3_ntD1Ev
  virtual void  v11(); // _ZN10S4228C3_nt3v11Ev
  virtual void  v12(); // _ZN10S4228C3_nt3v12Ev
  virtual void  v13(); // _ZN10S4228C3_nt3v13Ev
  virtual void  v14(); // _ZN10S4228C3_nt3v14Ev
  virtual void  v15(); // _ZN10S4228C3_nt3v15Ev
  virtual void  v16(); // _ZN10S4228C3_nt3v16Ev
  virtual void  v17(); // _ZN10S4228C3_nt3v17Ev
  virtual void  v18(); // _ZN10S4228C3_nt3v18Ev
  virtual void  v19(); // _ZN10S4228C3_nt3v19Ev
  virtual void  v20(); // _ZN10S4228C3_nt3v20Ev
  virtual void  v21(); // _ZN10S4228C3_nt3v21Ev
  virtual void  v22(); // _ZN10S4228C3_nt3v22Ev
  virtual void  v23(); // _ZN10S4228C3_nt3v23Ev
  virtual void  v24(); // _ZN10S4228C3_nt3v24Ev
  virtual void  v25(); // _ZN10S4228C3_nt3v25Ev
  virtual void  v26(); // _ZN10S4228C3_nt3v26Ev
  virtual void  v27(); // _ZN10S4228C3_nt3v27Ev
  virtual void  v28(); // _ZN10S4228C3_nt3v28Ev
  virtual void  v29(); // _ZN10S4228C3_nt3v29Ev
  virtual void  v30(); // _ZN10S4228C3_nt3v30Ev
  virtual void  v31(); // _ZN10S4228C3_nt3v31Ev
  virtual void  v32(); // _ZN10S4228C3_nt3v32Ev
  virtual void  v33(); // _ZN10S4228C3_nt3v33Ev
  S4228C3_nt(); // tgen
};
//SIG(-1 S4228C3_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fp Fi FC2{ BC3{ m Fp Fi FC4{ m} FC4}} FC2 Fi}


 S4228C3_nt ::~S4228C3_nt(){ note_dtor("S4228C3_nt", this);}
void  S4228C3_nt ::v11(){vfunc_called(this, "_ZN10S4228C3_nt3v11Ev");}
void  S4228C3_nt ::v12(){vfunc_called(this, "_ZN10S4228C3_nt3v12Ev");}
void  S4228C3_nt ::v13(){vfunc_called(this, "_ZN10S4228C3_nt3v13Ev");}
void  S4228C3_nt ::v14(){vfunc_called(this, "_ZN10S4228C3_nt3v14Ev");}
void  S4228C3_nt ::v15(){vfunc_called(this, "_ZN10S4228C3_nt3v15Ev");}
void  S4228C3_nt ::v16(){vfunc_called(this, "_ZN10S4228C3_nt3v16Ev");}
void  S4228C3_nt ::v17(){vfunc_called(this, "_ZN10S4228C3_nt3v17Ev");}
void  S4228C3_nt ::v18(){vfunc_called(this, "_ZN10S4228C3_nt3v18Ev");}
void  S4228C3_nt ::v19(){vfunc_called(this, "_ZN10S4228C3_nt3v19Ev");}
void  S4228C3_nt ::v20(){vfunc_called(this, "_ZN10S4228C3_nt3v20Ev");}
void  S4228C3_nt ::v21(){vfunc_called(this, "_ZN10S4228C3_nt3v21Ev");}
void  S4228C3_nt ::v22(){vfunc_called(this, "_ZN10S4228C3_nt3v22Ev");}
void  S4228C3_nt ::v23(){vfunc_called(this, "_ZN10S4228C3_nt3v23Ev");}
void  S4228C3_nt ::v24(){vfunc_called(this, "_ZN10S4228C3_nt3v24Ev");}
void  S4228C3_nt ::v25(){vfunc_called(this, "_ZN10S4228C3_nt3v25Ev");}
void  S4228C3_nt ::v26(){vfunc_called(this, "_ZN10S4228C3_nt3v26Ev");}
void  S4228C3_nt ::v27(){vfunc_called(this, "_ZN10S4228C3_nt3v27Ev");}
void  S4228C3_nt ::v28(){vfunc_called(this, "_ZN10S4228C3_nt3v28Ev");}
void  S4228C3_nt ::v29(){vfunc_called(this, "_ZN10S4228C3_nt3v29Ev");}
void  S4228C3_nt ::v30(){vfunc_called(this, "_ZN10S4228C3_nt3v30Ev");}
void  S4228C3_nt ::v31(){vfunc_called(this, "_ZN10S4228C3_nt3v31Ev");}
void  S4228C3_nt ::v32(){vfunc_called(this, "_ZN10S4228C3_nt3v32Ev");}
void  S4228C3_nt ::v33(){vfunc_called(this, "_ZN10S4228C3_nt3v33Ev");}
S4228C3_nt ::S4228C3_nt(){ note_ctor("S4228C3_nt", this);} // tgen

//skip512 S4228C3_nt

#else // __cplusplus

extern void _ZN10S4228C3_ntC1Ev();
extern void _ZN10S4228C3_ntD1Ev();
Name_Map name_map_S4228C3_nt[] = {
  NSPAIR(_ZN10S4228C3_ntC1Ev),
  NSPAIR(_ZN10S4228C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4228C3_nt[];
extern void _ZN10S4228C3_ntD1Ev();
extern void _ZN10S4228C3_ntD0Ev();
extern void _ZN10S4228C3_nt3v11Ev();
extern void _ZN10S4228C3_nt3v12Ev();
extern void _ZN10S4228C3_nt3v13Ev();
extern void _ZN10S4228C3_nt3v14Ev();
extern void _ZN10S4228C3_nt3v15Ev();
extern void _ZN10S4228C3_nt3v16Ev();
extern void _ZN10S4228C3_nt3v17Ev();
extern void _ZN10S4228C3_nt3v18Ev();
extern void _ZN10S4228C3_nt3v19Ev();
extern void _ZN10S4228C3_nt3v20Ev();
extern void _ZN10S4228C3_nt3v21Ev();
extern void _ZN10S4228C3_nt3v22Ev();
extern void _ZN10S4228C3_nt3v23Ev();
extern void _ZN10S4228C3_nt3v24Ev();
extern void _ZN10S4228C3_nt3v25Ev();
extern void _ZN10S4228C3_nt3v26Ev();
extern void _ZN10S4228C3_nt3v27Ev();
extern void _ZN10S4228C3_nt3v28Ev();
extern void _ZN10S4228C3_nt3v29Ev();
extern void _ZN10S4228C3_nt3v30Ev();
extern void _ZN10S4228C3_nt3v31Ev();
extern void _ZN10S4228C3_nt3v32Ev();
extern void _ZN10S4228C3_nt3v33Ev();
static  VTBL_ENTRY vtc_S4228C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4228C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4228C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v33Ev,
};
extern VTBL_ENTRY _ZTI10S4228C3_nt[];
VTBL_ENTRY *P__ZTI10S4228C3_nt = _ZTI10S4228C3_nt; 
extern  VTBL_ENTRY _ZTV10S4228C3_nt[];
Class_Descriptor cd_S4228C3_nt = {  "S4228C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4228C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI10S4228C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4228C3_nt),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C13_nt  {
  __tsi64 s4228c13f0[2];
  void  mf4228c13(); // _ZN11S4228C13_nt9mf4228c13Ev
};
//SIG(-1 S4228C13_nt) C1{ m FL[2]}


void  S4228C13_nt ::mf4228c13(){}

//skip512 S4228C13_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C12_nt  {
  ::S4228C13_nt s4228c12f0;
  void  mf4228c12(); // _ZN11S4228C12_nt9mf4228c12Ev
};
//SIG(-1 S4228C12_nt) C1{ m FC2{ m FL[2]}}


void  S4228C12_nt ::mf4228c12(){}

//skip512 S4228C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C16_nt  {
  ::S4228C12_nt s4228c16f0;
  void  mf4228c16(); // _ZN11S4228C16_nt9mf4228c16Ev
};
//SIG(-1 S4228C16_nt) C1{ m FC2{ m FC3{ m FL[2]}}}


void  S4228C16_nt ::mf4228c16(){}

//skip512 S4228C16_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C17_nt  {
  ::S4228C12_nt s4228c17f0;
  ::S4228C12_nt s4228c17f1;
  ::S4228C12_nt s4228c17f2;
  ::S4228C12_nt s4228c17f3;
  void  mf4228c17(); // _ZN11S4228C17_nt9mf4228c17Ev
};
//SIG(-1 S4228C17_nt) C1{ m FC2{ m FC3{ m FL[2]}} FC2 FC2 FC2}


void  S4228C17_nt ::mf4228c17(){}

//skip512 S4228C17_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C20  {
  void  mf4228c20(); // _ZN8S4228C209mf4228c20Ev
};
//SIG(-1 S4228C20) C1{ m}


void  S4228C20 ::mf4228c20(){}

static void Test_S4228C20()
{
  {
    init_simple_test("S4228C20");
    S4228C20 lv;
    check2(sizeof(lv), 1, "sizeof(S4228C20)");
    check2(__alignof__(lv), 1, "__alignof__(S4228C20)");
  }
}
static Arrange_To_Call_Me vS4228C20(Test_S4228C20, "S4228C20", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S4228C20[];
VTBL_ENTRY *P__ZTI8S4228C20 = _ZTI8S4228C20; 
Class_Descriptor cd_S4228C20 = {  "S4228C20", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S4228C20),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C19_nt  {
  void *s4228c19f0;
  int s4228c19f1;
  ::S4228C20 s4228c19f2;
  void  mf4228c19(); // _ZN11S4228C19_nt9mf4228c19Ev
};
//SIG(-1 S4228C19_nt) C1{ m Fp Fi FC2{ m}}


void  S4228C19_nt ::mf4228c19(){}

//skip512 S4228C19_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C18_nt  {
  ::S4228C19_nt s4228c18f0;
  int s4228c18f1;
  void  mf4228c18(); // _ZN11S4228C18_nt9mf4228c18Ev
};
//SIG(-1 S4228C18_nt) C1{ m FC2{ m Fp Fi FC3{ m}} Fi}


void  S4228C18_nt ::mf4228c18(){}

//skip512 S4228C18_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C23  {
  void  mf4228c23(); // _ZN8S4228C239mf4228c23Ev
};
//SIG(-1 S4228C23) C1{ m}


void  S4228C23 ::mf4228c23(){}

static void Test_S4228C23()
{
  {
    init_simple_test("S4228C23");
    S4228C23 lv;
    check2(sizeof(lv), 1, "sizeof(S4228C23)");
    check2(__alignof__(lv), 1, "__alignof__(S4228C23)");
  }
}
static Arrange_To_Call_Me vS4228C23(Test_S4228C23, "S4228C23", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S4228C23[];
VTBL_ENTRY *P__ZTI8S4228C23 = _ZTI8S4228C23; 
Class_Descriptor cd_S4228C23 = {  "S4228C23", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S4228C23),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C21  {
  void *s4228c21f0;
  int s4228c21f1;
  ::S4228C20 s4228c21f2;
  ::S4228C23 s4228c21f3;
  void  mf4228c21(); // _ZN8S4228C219mf4228c21Ev
};
//SIG(-1 S4228C21) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S4228C21 ::mf4228c21(){}

static void Test_S4228C21()
{
  {
    init_simple_test("S4228C21");
    S4228C21 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4228C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4228C21)");
    check_field_offset(lv, s4228c21f0, 0, "S4228C21.s4228c21f0");
    check_field_offset(lv, s4228c21f1, ABISELECT(8,4), "S4228C21.s4228c21f1");
    check_field_offset(lv, s4228c21f2, ABISELECT(12,8), "S4228C21.s4228c21f2");
    check_field_offset(lv, s4228c21f3, ABISELECT(13,9), "S4228C21.s4228c21f3");
  }
}
static Arrange_To_Call_Me vS4228C21(Test_S4228C21, "S4228C21", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C27  {
  void  mf4228c27(); // _ZN8S4228C279mf4228c27Ev
};
//SIG(-1 S4228C27) C1{ m}


void  S4228C27 ::mf4228c27(){}

static void Test_S4228C27()
{
  {
    init_simple_test("S4228C27");
    S4228C27 lv;
    check2(sizeof(lv), 1, "sizeof(S4228C27)");
    check2(__alignof__(lv), 1, "__alignof__(S4228C27)");
  }
}
static Arrange_To_Call_Me vS4228C27(Test_S4228C27, "S4228C27", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S4228C27[];
VTBL_ENTRY *P__ZTI8S4228C27 = _ZTI8S4228C27; 
Class_Descriptor cd_S4228C27 = {  "S4228C27", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S4228C27),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C25  {
  void *s4228c25f0;
  int s4228c25f1;
  ::S4228C23 s4228c25f2;
  ::S4228C27 s4228c25f3;
  void  mf4228c25(); // _ZN8S4228C259mf4228c25Ev
};
//SIG(-1 S4228C25) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S4228C25 ::mf4228c25(){}

static void Test_S4228C25()
{
  {
    init_simple_test("S4228C25");
    S4228C25 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4228C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4228C25)");
    check_field_offset(lv, s4228c25f0, 0, "S4228C25.s4228c25f0");
    check_field_offset(lv, s4228c25f1, ABISELECT(8,4), "S4228C25.s4228c25f1");
    check_field_offset(lv, s4228c25f2, ABISELECT(12,8), "S4228C25.s4228c25f2");
    check_field_offset(lv, s4228c25f3, ABISELECT(13,9), "S4228C25.s4228c25f3");
  }
}
static Arrange_To_Call_Me vS4228C25(Test_S4228C25, "S4228C25", ABISELECT(16,12));

#else // __cplusplus

Class_Descriptor cd_S4228C25 = {  "S4228C25", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C24  : S4228C25 {
};
//SIG(-1 S4228C24) C1{ BC2{ m Fp Fi FC3{ m} FC4{ m}}}



static void Test_S4228C24()
{
  extern Class_Descriptor cd_S4228C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4228C24, buf);
    S4228C24 &lv = *(new (buf) S4228C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4228C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4228C24)");
    check_base_class_offset(lv, (S4228C25*), 0, "S4228C24");
    test_class_info(&lv, &cd_S4228C24);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4228C24(Test_S4228C24, "S4228C24", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S4228C25;
static Base_Class bases_S4228C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C25,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S4228C24 = {  "S4228C24", // class name
  bases_S4228C24, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C28_nt  {
  void *s4228c28f0;
  int s4228c28f1[2];
  ::S4228C27 s4228c28f2;
  void  mf4228c28(); // _ZN11S4228C28_nt9mf4228c28Ev
};
//SIG(-1 S4228C28_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S4228C28_nt ::mf4228c28(){}

//skip512 S4228C28_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C37  {
  void  mf4228c37(); // _ZN8S4228C379mf4228c37Ev
};
//SIG(-1 S4228C37) C1{ m}


void  S4228C37 ::mf4228c37(){}

static void Test_S4228C37()
{
  {
    init_simple_test("S4228C37");
    S4228C37 lv;
    check2(sizeof(lv), 1, "sizeof(S4228C37)");
    check2(__alignof__(lv), 1, "__alignof__(S4228C37)");
  }
}
static Arrange_To_Call_Me vS4228C37(Test_S4228C37, "S4228C37", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S4228C37[];
VTBL_ENTRY *P__ZTI8S4228C37 = _ZTI8S4228C37; 
Class_Descriptor cd_S4228C37 = {  "S4228C37", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S4228C37),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C36  {
  void *s4228c36f0;
  int s4228c36f1[2];
  ::S4228C37 s4228c36f2;
  void  mf4228c36(); // _ZN8S4228C369mf4228c36Ev
};
//SIG(-1 S4228C36) C1{ m Fp Fi[2] FC2{ m}}


void  S4228C36 ::mf4228c36(){}

static void Test_S4228C36()
{
  {
    init_simple_test("S4228C36");
    S4228C36 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S4228C36)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4228C36)");
    check_field_offset(lv, s4228c36f0, 0, "S4228C36.s4228c36f0");
    check_field_offset(lv, s4228c36f1, ABISELECT(8,4), "S4228C36.s4228c36f1");
    check_field_offset(lv, s4228c36f2, ABISELECT(16,12), "S4228C36.s4228c36f2");
  }
}
static Arrange_To_Call_Me vS4228C36(Test_S4228C36, "S4228C36", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C2_nt  : S4228C3_nt {
  ::S4228C12_nt s4228c2f0;
  ::S4228C12_nt s4228c2f1;
  ::S4228C12_nt s4228c2f2;
  ::S4228C12_nt s4228c2f3;
  ::S4228C16_nt s4228c2f4;
  ::S4228C17_nt s4228c2f5;
  ::S4228C17_nt s4228c2f6;
  ::S4228C12_nt s4228c2f7;
  ::S4228C12_nt s4228c2f8;
  ::S4228C12_nt s4228c2f9;
  void *s4228c2f10;
  ::S4228C16_nt s4228c2f11;
  ::S4228C18_nt s4228c2f12;
  int s4228c2f13;
  void *s4228c2f14[7];
  ::S4228C21 s4228c2f15;
  int s4228c2f16:8;
  int s4228c2f17:8;
  int s4228c2f18:16;
  int s4228c2f19:16;
  int s4228c2f20:8;
  int s4228c2f21:8;
  int s4228c2f22:8;
  int s4228c2f23:32;
  int s4228c2f24:8;
  int s4228c2f25:4;
  int s4228c2f26:4;
  int s4228c2f27:4;
  int s4228c2f28:4;
  int s4228c2f29:4;
  int s4228c2f30:4;
  int s4228c2f31:4;
  int s4228c2f32:4;
  int s4228c2f33:4;
  int s4228c2f34:4;
  unsigned char s4228c2f35:1;
  unsigned char s4228c2f36:1;
  unsigned char s4228c2f37:1;
  unsigned char s4228c2f38:1;
  unsigned char s4228c2f39:1;
  unsigned char s4228c2f40:1;
  unsigned char s4228c2f41:1;
  unsigned char s4228c2f42:1;
  unsigned char s4228c2f43:1;
  unsigned char s4228c2f44:1;
  unsigned char s4228c2f45:1;
  unsigned char s4228c2f46:1;
  unsigned char s4228c2f47:1;
  unsigned char s4228c2f48:1;
  unsigned char s4228c2f49:1;
  unsigned char s4228c2f50:1;
  unsigned char s4228c2f51:1;
  unsigned char s4228c2f52:1;
  unsigned char s4228c2f53:1;
  unsigned char s4228c2f54:1;
  unsigned char s4228c2f55:1;
  unsigned char s4228c2f56:1;
  unsigned char s4228c2f57:1;
  unsigned char s4228c2f58:1;
  unsigned char s4228c2f59:1;
  unsigned char s4228c2f60:1;
  unsigned char s4228c2f61:1;
  unsigned char s4228c2f62:1;
  unsigned char s4228c2f63:1;
  unsigned char s4228c2f64:1;
  unsigned char s4228c2f65:1;
  unsigned char s4228c2f66:1;
  unsigned char s4228c2f67:1;
  unsigned char s4228c2f68:1;
  unsigned char s4228c2f69:1;
  unsigned char s4228c2f70:1;
  unsigned char s4228c2f71:1;
  unsigned char s4228c2f72:1;
  unsigned char s4228c2f73:1;
  unsigned char s4228c2f74:1;
  unsigned char s4228c2f75:1;
  int s4228c2f76[7];
  void *s4228c2f77[6];
  int s4228c2f78:8;
  int s4228c2f79:8;
  int s4228c2f80:8;
  int s4228c2f81:8;
  int s4228c2f82:8;
  int s4228c2f83:8;
  ::S4228C24 s4228c2f84;
  void *s4228c2f85[4];
  int s4228c2f86:8;
  int s4228c2f87:8;
  int s4228c2f88:8;
  int s4228c2f89:8;
  int s4228c2f90:8;
  int s4228c2f91:16;
  int s4228c2f92:16;
  int s4228c2f93:16;
  int s4228c2f94:4;
  int s4228c2f95:4;
  int s4228c2f96:4;
  int s4228c2f97:4;
  int s4228c2f98:4;
  int s4228c2f99:4;
  int s4228c2f100:4;
  int s4228c2f101:4;
  int s4228c2f102:4;
  int s4228c2f103:4;
  int s4228c2f104:4;
  int s4228c2f105:4;
  int s4228c2f106:8;
  int s4228c2f107:8;
  int s4228c2f108:8;
  void *s4228c2f109[7];
  ::S4228C28_nt s4228c2f110;
  void *s4228c2f111[2];
  int s4228c2f112:16;
  int s4228c2f113:16;
  ::S4228C24 s4228c2f114;
  ::S4228C28_nt s4228c2f115;
  ::S4228C36 s4228c2f116;
  void *s4228c2f117[2];
  int s4228c2f118:24;
  int s4228c2f119:8;
  void *s4228c2f120;
  virtual  ~S4228C2_nt(); // _ZN10S4228C2_ntD1Ev
  virtual void  v34(); // _ZN10S4228C2_nt3v34Ev
  virtual void  v35(); // _ZN10S4228C2_nt3v35Ev
  virtual void  v36(); // _ZN10S4228C2_nt3v36Ev
  virtual void  v37(); // _ZN10S4228C2_nt3v37Ev
  virtual void  v38(); // _ZN10S4228C2_nt3v38Ev
  virtual void  v39(); // _ZN10S4228C2_nt3v39Ev
  virtual void  v40(); // _ZN10S4228C2_nt3v40Ev
  virtual void  v41(); // _ZN10S4228C2_nt3v41Ev
  virtual void  v42(); // _ZN10S4228C2_nt3v42Ev
  virtual void  v43(); // _ZN10S4228C2_nt3v43Ev
  virtual void  v44(); // _ZN10S4228C2_nt3v44Ev
  virtual void  v45(); // _ZN10S4228C2_nt3v45Ev
  virtual void  v46(); // _ZN10S4228C2_nt3v46Ev
  virtual void  v47(); // _ZN10S4228C2_nt3v47Ev
  virtual void  v48(); // _ZN10S4228C2_nt3v48Ev
  virtual void  v49(); // _ZN10S4228C2_nt3v49Ev
  virtual void  v50(); // _ZN10S4228C2_nt3v50Ev
  virtual void  v51(); // _ZN10S4228C2_nt3v51Ev
  virtual void  v52(); // _ZN10S4228C2_nt3v52Ev
  virtual void  v53(); // _ZN10S4228C2_nt3v53Ev
  virtual void  v54(); // _ZN10S4228C2_nt3v54Ev
  virtual void  v55(); // _ZN10S4228C2_nt3v55Ev
  virtual void  v56(); // _ZN10S4228C2_nt3v56Ev
  virtual void  v57(); // _ZN10S4228C2_nt3v57Ev
  virtual void  v58(); // _ZN10S4228C2_nt3v58Ev
  virtual void  v59(); // _ZN10S4228C2_nt3v59Ev
  virtual void  v60(); // _ZN10S4228C2_nt3v60Ev
  virtual void  v61(); // _ZN10S4228C2_nt3v61Ev
  virtual void  v62(); // _ZN10S4228C2_nt3v62Ev
  virtual void  v63(); // _ZN10S4228C2_nt3v63Ev
  virtual void  v64(); // _ZN10S4228C2_nt3v64Ev
  virtual void  v65(); // _ZN10S4228C2_nt3v65Ev
  virtual void  v66(); // _ZN10S4228C2_nt3v66Ev
  virtual void  v67(); // _ZN10S4228C2_nt3v67Ev
  virtual void  v68(); // _ZN10S4228C2_nt3v68Ev
  virtual void  v69(); // _ZN10S4228C2_nt3v69Ev
  virtual void  v70(); // _ZN10S4228C2_nt3v70Ev
  virtual void  v71(); // _ZN10S4228C2_nt3v71Ev
  virtual void  v72(); // _ZN10S4228C2_nt3v72Ev
  virtual void  v73(); // _ZN10S4228C2_nt3v73Ev
  virtual void  v74(); // _ZN10S4228C2_nt3v74Ev
  virtual void  v75(); // _ZN10S4228C2_nt3v75Ev
  virtual void  v76(); // _ZN10S4228C2_nt3v76Ev
  virtual void  v77(); // _ZN10S4228C2_nt3v77Ev
  virtual void  v78(); // _ZN10S4228C2_nt3v78Ev
  virtual void  v79(); // _ZN10S4228C2_nt3v79Ev
  virtual void  v80(); // _ZN10S4228C2_nt3v80Ev
  virtual void  v81(); // _ZN10S4228C2_nt3v81Ev
  virtual void  v82(); // _ZN10S4228C2_nt3v82Ev
  virtual void  v83(); // _ZN10S4228C2_nt3v83Ev
  virtual void  v84(); // _ZN10S4228C2_nt3v84Ev
  virtual void  v85(); // _ZN10S4228C2_nt3v85Ev
  virtual void  v86(); // _ZN10S4228C2_nt3v86Ev
  virtual void  v87(); // _ZN10S4228C2_nt3v87Ev
  virtual void  v88(); // _ZN10S4228C2_nt3v88Ev
  virtual void  v89(); // _ZN10S4228C2_nt3v89Ev
  virtual void  v90(); // _ZN10S4228C2_nt3v90Ev
  virtual void  v91(); // _ZN10S4228C2_nt3v91Ev
  virtual void  v92(); // _ZN10S4228C2_nt3v92Ev
  virtual void  v93(); // _ZN10S4228C2_nt3v93Ev
  virtual void  v94(); // _ZN10S4228C2_nt3v94Ev
  virtual void  v95(); // _ZN10S4228C2_nt3v95Ev
  virtual void  v96(); // _ZN10S4228C2_nt3v96Ev
  virtual void  v97(); // _ZN10S4228C2_nt3v97Ev
  virtual void  v98(); // _ZN10S4228C2_nt3v98Ev
  virtual void  v99(); // _ZN10S4228C2_nt3v99Ev
  virtual void  v100(); // _ZN10S4228C2_nt4v100Ev
  virtual void  v101(); // _ZN10S4228C2_nt4v101Ev
  virtual void  v102(); // _ZN10S4228C2_nt4v102Ev
  virtual void  v103(); // _ZN10S4228C2_nt4v103Ev
  virtual void  v104(); // _ZN10S4228C2_nt4v104Ev
  virtual void  v105(); // _ZN10S4228C2_nt4v105Ev
  virtual void  v106(); // _ZN10S4228C2_nt4v106Ev
  virtual void  v107(); // _ZN10S4228C2_nt4v107Ev
  virtual void  v108(); // _ZN10S4228C2_nt4v108Ev
  virtual void  v109(); // _ZN10S4228C2_nt4v109Ev
  virtual void  v110(); // _ZN10S4228C2_nt4v110Ev
  virtual void  v111(); // _ZN10S4228C2_nt4v111Ev
  S4228C2_nt(); // tgen
};
//SIG(-1 S4228C2_nt) C1{ BC2{ vd v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 Fp Fi FC3{ BC4{ m Fp Fi FC5{ m} FC5}} FC3 Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 FC6{ m FC7{ m FL[2]}} FC6 FC6 FC6 FC8{ m FC6} FC9{ m FC6 FC6 FC6 FC6} FC9 FC6 FC6 FC6 Fp FC8 FC10{ m FC11{ m Fp Fi FC12{ m}} Fi} Fi Fp[7] FC13{ m Fp Fi FC12 FC14{ m}} Fi:8 Fi:8 Fi:16 Fi:16 Fi:8 Fi:8 Fi:8 Fi:32 Fi:8 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fi[7] Fp[6] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 FC15{ BC16{ m Fp Fi FC14 FC17{ m}}} Fp[4] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:16 Fi:16 Fi:16 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:8 Fi:8 Fi:8 Fp[7] FC18{ m Fp Fi[2] FC17} Fp[2] Fi:16 Fi:16 FC15 FC18 FC19{ m Fp Fi[2] FC20{ m}} Fp[2] Fi:24 Fi:8 Fp}


 S4228C2_nt ::~S4228C2_nt(){ note_dtor("S4228C2_nt", this);}
void  S4228C2_nt ::v34(){vfunc_called(this, "_ZN10S4228C2_nt3v34Ev");}
void  S4228C2_nt ::v35(){vfunc_called(this, "_ZN10S4228C2_nt3v35Ev");}
void  S4228C2_nt ::v36(){vfunc_called(this, "_ZN10S4228C2_nt3v36Ev");}
void  S4228C2_nt ::v37(){vfunc_called(this, "_ZN10S4228C2_nt3v37Ev");}
void  S4228C2_nt ::v38(){vfunc_called(this, "_ZN10S4228C2_nt3v38Ev");}
void  S4228C2_nt ::v39(){vfunc_called(this, "_ZN10S4228C2_nt3v39Ev");}
void  S4228C2_nt ::v40(){vfunc_called(this, "_ZN10S4228C2_nt3v40Ev");}
void  S4228C2_nt ::v41(){vfunc_called(this, "_ZN10S4228C2_nt3v41Ev");}
void  S4228C2_nt ::v42(){vfunc_called(this, "_ZN10S4228C2_nt3v42Ev");}
void  S4228C2_nt ::v43(){vfunc_called(this, "_ZN10S4228C2_nt3v43Ev");}
void  S4228C2_nt ::v44(){vfunc_called(this, "_ZN10S4228C2_nt3v44Ev");}
void  S4228C2_nt ::v45(){vfunc_called(this, "_ZN10S4228C2_nt3v45Ev");}
void  S4228C2_nt ::v46(){vfunc_called(this, "_ZN10S4228C2_nt3v46Ev");}
void  S4228C2_nt ::v47(){vfunc_called(this, "_ZN10S4228C2_nt3v47Ev");}
void  S4228C2_nt ::v48(){vfunc_called(this, "_ZN10S4228C2_nt3v48Ev");}
void  S4228C2_nt ::v49(){vfunc_called(this, "_ZN10S4228C2_nt3v49Ev");}
void  S4228C2_nt ::v50(){vfunc_called(this, "_ZN10S4228C2_nt3v50Ev");}
void  S4228C2_nt ::v51(){vfunc_called(this, "_ZN10S4228C2_nt3v51Ev");}
void  S4228C2_nt ::v52(){vfunc_called(this, "_ZN10S4228C2_nt3v52Ev");}
void  S4228C2_nt ::v53(){vfunc_called(this, "_ZN10S4228C2_nt3v53Ev");}
void  S4228C2_nt ::v54(){vfunc_called(this, "_ZN10S4228C2_nt3v54Ev");}
void  S4228C2_nt ::v55(){vfunc_called(this, "_ZN10S4228C2_nt3v55Ev");}
void  S4228C2_nt ::v56(){vfunc_called(this, "_ZN10S4228C2_nt3v56Ev");}
void  S4228C2_nt ::v57(){vfunc_called(this, "_ZN10S4228C2_nt3v57Ev");}
void  S4228C2_nt ::v58(){vfunc_called(this, "_ZN10S4228C2_nt3v58Ev");}
void  S4228C2_nt ::v59(){vfunc_called(this, "_ZN10S4228C2_nt3v59Ev");}
void  S4228C2_nt ::v60(){vfunc_called(this, "_ZN10S4228C2_nt3v60Ev");}
void  S4228C2_nt ::v61(){vfunc_called(this, "_ZN10S4228C2_nt3v61Ev");}
void  S4228C2_nt ::v62(){vfunc_called(this, "_ZN10S4228C2_nt3v62Ev");}
void  S4228C2_nt ::v63(){vfunc_called(this, "_ZN10S4228C2_nt3v63Ev");}
void  S4228C2_nt ::v64(){vfunc_called(this, "_ZN10S4228C2_nt3v64Ev");}
void  S4228C2_nt ::v65(){vfunc_called(this, "_ZN10S4228C2_nt3v65Ev");}
void  S4228C2_nt ::v66(){vfunc_called(this, "_ZN10S4228C2_nt3v66Ev");}
void  S4228C2_nt ::v67(){vfunc_called(this, "_ZN10S4228C2_nt3v67Ev");}
void  S4228C2_nt ::v68(){vfunc_called(this, "_ZN10S4228C2_nt3v68Ev");}
void  S4228C2_nt ::v69(){vfunc_called(this, "_ZN10S4228C2_nt3v69Ev");}
void  S4228C2_nt ::v70(){vfunc_called(this, "_ZN10S4228C2_nt3v70Ev");}
void  S4228C2_nt ::v71(){vfunc_called(this, "_ZN10S4228C2_nt3v71Ev");}
void  S4228C2_nt ::v72(){vfunc_called(this, "_ZN10S4228C2_nt3v72Ev");}
void  S4228C2_nt ::v73(){vfunc_called(this, "_ZN10S4228C2_nt3v73Ev");}
void  S4228C2_nt ::v74(){vfunc_called(this, "_ZN10S4228C2_nt3v74Ev");}
void  S4228C2_nt ::v75(){vfunc_called(this, "_ZN10S4228C2_nt3v75Ev");}
void  S4228C2_nt ::v76(){vfunc_called(this, "_ZN10S4228C2_nt3v76Ev");}
void  S4228C2_nt ::v77(){vfunc_called(this, "_ZN10S4228C2_nt3v77Ev");}
void  S4228C2_nt ::v78(){vfunc_called(this, "_ZN10S4228C2_nt3v78Ev");}
void  S4228C2_nt ::v79(){vfunc_called(this, "_ZN10S4228C2_nt3v79Ev");}
void  S4228C2_nt ::v80(){vfunc_called(this, "_ZN10S4228C2_nt3v80Ev");}
void  S4228C2_nt ::v81(){vfunc_called(this, "_ZN10S4228C2_nt3v81Ev");}
void  S4228C2_nt ::v82(){vfunc_called(this, "_ZN10S4228C2_nt3v82Ev");}
void  S4228C2_nt ::v83(){vfunc_called(this, "_ZN10S4228C2_nt3v83Ev");}
void  S4228C2_nt ::v84(){vfunc_called(this, "_ZN10S4228C2_nt3v84Ev");}
void  S4228C2_nt ::v85(){vfunc_called(this, "_ZN10S4228C2_nt3v85Ev");}
void  S4228C2_nt ::v86(){vfunc_called(this, "_ZN10S4228C2_nt3v86Ev");}
void  S4228C2_nt ::v87(){vfunc_called(this, "_ZN10S4228C2_nt3v87Ev");}
void  S4228C2_nt ::v88(){vfunc_called(this, "_ZN10S4228C2_nt3v88Ev");}
void  S4228C2_nt ::v89(){vfunc_called(this, "_ZN10S4228C2_nt3v89Ev");}
void  S4228C2_nt ::v90(){vfunc_called(this, "_ZN10S4228C2_nt3v90Ev");}
void  S4228C2_nt ::v91(){vfunc_called(this, "_ZN10S4228C2_nt3v91Ev");}
void  S4228C2_nt ::v92(){vfunc_called(this, "_ZN10S4228C2_nt3v92Ev");}
void  S4228C2_nt ::v93(){vfunc_called(this, "_ZN10S4228C2_nt3v93Ev");}
void  S4228C2_nt ::v94(){vfunc_called(this, "_ZN10S4228C2_nt3v94Ev");}
void  S4228C2_nt ::v95(){vfunc_called(this, "_ZN10S4228C2_nt3v95Ev");}
void  S4228C2_nt ::v96(){vfunc_called(this, "_ZN10S4228C2_nt3v96Ev");}
void  S4228C2_nt ::v97(){vfunc_called(this, "_ZN10S4228C2_nt3v97Ev");}
void  S4228C2_nt ::v98(){vfunc_called(this, "_ZN10S4228C2_nt3v98Ev");}
void  S4228C2_nt ::v99(){vfunc_called(this, "_ZN10S4228C2_nt3v99Ev");}
void  S4228C2_nt ::v100(){vfunc_called(this, "_ZN10S4228C2_nt4v100Ev");}
void  S4228C2_nt ::v101(){vfunc_called(this, "_ZN10S4228C2_nt4v101Ev");}
void  S4228C2_nt ::v102(){vfunc_called(this, "_ZN10S4228C2_nt4v102Ev");}
void  S4228C2_nt ::v103(){vfunc_called(this, "_ZN10S4228C2_nt4v103Ev");}
void  S4228C2_nt ::v104(){vfunc_called(this, "_ZN10S4228C2_nt4v104Ev");}
void  S4228C2_nt ::v105(){vfunc_called(this, "_ZN10S4228C2_nt4v105Ev");}
void  S4228C2_nt ::v106(){vfunc_called(this, "_ZN10S4228C2_nt4v106Ev");}
void  S4228C2_nt ::v107(){vfunc_called(this, "_ZN10S4228C2_nt4v107Ev");}
void  S4228C2_nt ::v108(){vfunc_called(this, "_ZN10S4228C2_nt4v108Ev");}
void  S4228C2_nt ::v109(){vfunc_called(this, "_ZN10S4228C2_nt4v109Ev");}
void  S4228C2_nt ::v110(){vfunc_called(this, "_ZN10S4228C2_nt4v110Ev");}
void  S4228C2_nt ::v111(){vfunc_called(this, "_ZN10S4228C2_nt4v111Ev");}
S4228C2_nt ::S4228C2_nt(){ note_ctor("S4228C2_nt", this);} // tgen

//skip512 S4228C2_nt

#else // __cplusplus

extern void _ZN10S4228C2_ntC1Ev();
extern void _ZN10S4228C2_ntD1Ev();
Name_Map name_map_S4228C2_nt[] = {
  NSPAIR(_ZN10S4228C2_ntC1Ev),
  NSPAIR(_ZN10S4228C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C3_nt;
extern VTBL_ENTRY _ZTI10S4228C3_nt[];
extern  VTBL_ENTRY _ZTV10S4228C3_nt[];
static Base_Class bases_S4228C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4228C2_nt[];
extern void _ZN10S4228C2_ntD1Ev();
extern void _ZN10S4228C2_ntD0Ev();
extern void _ZN10S4228C3_nt3v11Ev();
extern void _ZN10S4228C3_nt3v12Ev();
extern void _ZN10S4228C3_nt3v13Ev();
extern void _ZN10S4228C3_nt3v14Ev();
extern void _ZN10S4228C3_nt3v15Ev();
extern void _ZN10S4228C3_nt3v16Ev();
extern void _ZN10S4228C3_nt3v17Ev();
extern void _ZN10S4228C3_nt3v18Ev();
extern void _ZN10S4228C3_nt3v19Ev();
extern void _ZN10S4228C3_nt3v20Ev();
extern void _ZN10S4228C3_nt3v21Ev();
extern void _ZN10S4228C3_nt3v22Ev();
extern void _ZN10S4228C3_nt3v23Ev();
extern void _ZN10S4228C3_nt3v24Ev();
extern void _ZN10S4228C3_nt3v25Ev();
extern void _ZN10S4228C3_nt3v26Ev();
extern void _ZN10S4228C3_nt3v27Ev();
extern void _ZN10S4228C3_nt3v28Ev();
extern void _ZN10S4228C3_nt3v29Ev();
extern void _ZN10S4228C3_nt3v30Ev();
extern void _ZN10S4228C3_nt3v31Ev();
extern void _ZN10S4228C3_nt3v32Ev();
extern void _ZN10S4228C3_nt3v33Ev();
extern void _ZN10S4228C2_nt3v34Ev();
extern void _ZN10S4228C2_nt3v35Ev();
extern void _ZN10S4228C2_nt3v36Ev();
extern void _ZN10S4228C2_nt3v37Ev();
extern void _ZN10S4228C2_nt3v38Ev();
extern void _ZN10S4228C2_nt3v39Ev();
extern void _ZN10S4228C2_nt3v40Ev();
extern void _ZN10S4228C2_nt3v41Ev();
extern void _ZN10S4228C2_nt3v42Ev();
extern void _ZN10S4228C2_nt3v43Ev();
extern void _ZN10S4228C2_nt3v44Ev();
extern void _ZN10S4228C2_nt3v45Ev();
extern void _ZN10S4228C2_nt3v46Ev();
extern void _ZN10S4228C2_nt3v47Ev();
extern void _ZN10S4228C2_nt3v48Ev();
extern void _ZN10S4228C2_nt3v49Ev();
extern void _ZN10S4228C2_nt3v50Ev();
extern void _ZN10S4228C2_nt3v51Ev();
extern void _ZN10S4228C2_nt3v52Ev();
extern void _ZN10S4228C2_nt3v53Ev();
extern void _ZN10S4228C2_nt3v54Ev();
extern void _ZN10S4228C2_nt3v55Ev();
extern void _ZN10S4228C2_nt3v56Ev();
extern void _ZN10S4228C2_nt3v57Ev();
extern void _ZN10S4228C2_nt3v58Ev();
extern void _ZN10S4228C2_nt3v59Ev();
extern void _ZN10S4228C2_nt3v60Ev();
extern void _ZN10S4228C2_nt3v61Ev();
extern void _ZN10S4228C2_nt3v62Ev();
extern void _ZN10S4228C2_nt3v63Ev();
extern void _ZN10S4228C2_nt3v64Ev();
extern void _ZN10S4228C2_nt3v65Ev();
extern void _ZN10S4228C2_nt3v66Ev();
extern void _ZN10S4228C2_nt3v67Ev();
extern void _ZN10S4228C2_nt3v68Ev();
extern void _ZN10S4228C2_nt3v69Ev();
extern void _ZN10S4228C2_nt3v70Ev();
extern void _ZN10S4228C2_nt3v71Ev();
extern void _ZN10S4228C2_nt3v72Ev();
extern void _ZN10S4228C2_nt3v73Ev();
extern void _ZN10S4228C2_nt3v74Ev();
extern void _ZN10S4228C2_nt3v75Ev();
extern void _ZN10S4228C2_nt3v76Ev();
extern void _ZN10S4228C2_nt3v77Ev();
extern void _ZN10S4228C2_nt3v78Ev();
extern void _ZN10S4228C2_nt3v79Ev();
extern void _ZN10S4228C2_nt3v80Ev();
extern void _ZN10S4228C2_nt3v81Ev();
extern void _ZN10S4228C2_nt3v82Ev();
extern void _ZN10S4228C2_nt3v83Ev();
extern void _ZN10S4228C2_nt3v84Ev();
extern void _ZN10S4228C2_nt3v85Ev();
extern void _ZN10S4228C2_nt3v86Ev();
extern void _ZN10S4228C2_nt3v87Ev();
extern void _ZN10S4228C2_nt3v88Ev();
extern void _ZN10S4228C2_nt3v89Ev();
extern void _ZN10S4228C2_nt3v90Ev();
extern void _ZN10S4228C2_nt3v91Ev();
extern void _ZN10S4228C2_nt3v92Ev();
extern void _ZN10S4228C2_nt3v93Ev();
extern void _ZN10S4228C2_nt3v94Ev();
extern void _ZN10S4228C2_nt3v95Ev();
extern void _ZN10S4228C2_nt3v96Ev();
extern void _ZN10S4228C2_nt3v97Ev();
extern void _ZN10S4228C2_nt3v98Ev();
extern void _ZN10S4228C2_nt3v99Ev();
extern void _ZN10S4228C2_nt4v100Ev();
extern void _ZN10S4228C2_nt4v101Ev();
extern void _ZN10S4228C2_nt4v102Ev();
extern void _ZN10S4228C2_nt4v103Ev();
extern void _ZN10S4228C2_nt4v104Ev();
extern void _ZN10S4228C2_nt4v105Ev();
extern void _ZN10S4228C2_nt4v106Ev();
extern void _ZN10S4228C2_nt4v107Ev();
extern void _ZN10S4228C2_nt4v108Ev();
extern void _ZN10S4228C2_nt4v109Ev();
extern void _ZN10S4228C2_nt4v110Ev();
extern void _ZN10S4228C2_nt4v111Ev();
static  VTBL_ENTRY vtc_S4228C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4228C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4228C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v111Ev,
};
extern VTBL_ENTRY _ZTI10S4228C2_nt[];
VTBL_ENTRY *P__ZTI10S4228C2_nt = _ZTI10S4228C2_nt; 
extern  VTBL_ENTRY _ZTV10S4228C2_nt[];
Class_Descriptor cd_S4228C2_nt = {  "S4228C2_nt", // class name
  bases_S4228C2_nt, 1,
  &(vtc_S4228C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(832,632), // object size
  NSPAIRA(_ZTI10S4228C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4228C2_nt),105, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C40_nt  {
  __tsi64 s4228c40f0[4];
  void  mf4228c40(); // _ZN11S4228C40_nt9mf4228c40Ev
};
//SIG(-1 S4228C40_nt) C1{ m FL[4]}


void  S4228C40_nt ::mf4228c40(){}

//skip512 S4228C40_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C42_nt  {
  char s4228c42f0;
  long s4228c42f1[2];
  short s4228c42f2[12];
  char s4228c42f3[5];
  void  mf4228c42(); // _ZN11S4228C42_nt9mf4228c42Ev
};
//SIG(-1 S4228C42_nt) C1{ m Fc Fl[2] Fs[12] Fc[5]}


void  S4228C42_nt ::mf4228c42(){}

//skip512 S4228C42_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C41_nt  {
  ::S4228C42_nt s4228c41f0;
  ::S3423C4_nt s4228c41f1;
  char s4228c41f2[2];
  void  mf4228c41(); // _ZN11S4228C41_nt9mf4228c41Ev
  virtual  ~S4228C41_nt(); // _ZN11S4228C41_ntD1Ev
  S4228C41_nt(); // tgen
};
//SIG(-1 S4228C41_nt) C1{ vd m FC2{ m Fc Fl[2] Fs[12] Fc[5]} FC3{ m Fi[2]} Fc[2]}


void  S4228C41_nt ::mf4228c41(){}
 S4228C41_nt ::~S4228C41_nt(){ note_dtor("S4228C41_nt", this);}
S4228C41_nt ::S4228C41_nt(){ note_ctor("S4228C41_nt", this);} // tgen

//skip512 S4228C41_nt

#else // __cplusplus

extern void _ZN11S4228C41_ntC1Ev();
extern void _ZN11S4228C41_ntD1Ev();
Name_Map name_map_S4228C41_nt[] = {
  NSPAIR(_ZN11S4228C41_ntC1Ev),
  NSPAIR(_ZN11S4228C41_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S4228C41_nt[];
extern void _ZN11S4228C41_ntD1Ev();
extern void _ZN11S4228C41_ntD0Ev();
static  VTBL_ENTRY vtc_S4228C41_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S4228C41_nt[0]),
  (VTBL_ENTRY)&_ZN11S4228C41_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S4228C41_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S4228C41_nt[];
VTBL_ENTRY *P__ZTI11S4228C41_nt = _ZTI11S4228C41_nt; 
extern  VTBL_ENTRY _ZTV11S4228C41_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C44  {
  void *s4228c44f0;
  int s4228c44f1[2];
  ::S4228C37 s4228c44f2;
  void  mf4228c44(); // _ZN8S4228C449mf4228c44Ev
};
//SIG(-1 S4228C44) C1{ m Fp Fi[2] FC2{ m}}


void  S4228C44 ::mf4228c44(){}

static void Test_S4228C44()
{
  {
    init_simple_test("S4228C44");
    S4228C44 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S4228C44)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4228C44)");
    check_field_offset(lv, s4228c44f0, 0, "S4228C44.s4228c44f0");
    check_field_offset(lv, s4228c44f1, ABISELECT(8,4), "S4228C44.s4228c44f1");
    check_field_offset(lv, s4228c44f2, ABISELECT(16,12), "S4228C44.s4228c44f2");
  }
}
static Arrange_To_Call_Me vS4228C44(Test_S4228C44, "S4228C44", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C1  : S4228C2_nt {
  int s4228c1f0[3];
  ::S4228C36 s4228c1f1;
  ::S4228C36 s4228c1f2;
  int s4228c1f3[3];
  ::S4228C40_nt s4228c1f4;
  ::S4228C41_nt s4228c1f5;
  ::S4228C44 s4228c1f6;
  int s4228c1f7[2];
  void *s4228c1f8[2];
  ::S4228C12_nt s4228c1f9;
  void *s4228c1f10;
  int s4228c1f11;
  virtual  ~S4228C1(); // _ZN7S4228C1D1Ev
  virtual void  v1(); // _ZN7S4228C12v1Ev
  virtual void  v2(); // _ZN7S4228C12v2Ev
  virtual void  v3(); // _ZN7S4228C12v3Ev
  virtual void  v4(); // _ZN7S4228C12v4Ev
  virtual void  v5(); // _ZN7S4228C12v5Ev
  virtual void  v6(); // _ZN7S4228C12v6Ev
  virtual void  v7(); // _ZN7S4228C12v7Ev
  virtual void  v8(); // _ZN7S4228C12v8Ev
  virtual void  v9(); // _ZN7S4228C12v9Ev
  virtual void  v10(); // _ZN7S4228C13v10Ev
  S4228C1(); // tgen
};
//SIG(1 S4228C1) C1{ BC2{ BC3{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 Fp Fi FC4{ BC5{ m Fp Fi FC6{ m} FC6}} FC4 Fi} vd v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 FC7{ m FC8{ m FL[2]}} FC7 FC7 FC7 FC9{ m FC7} FC10{ m FC7 FC7 FC7 FC7} FC10 FC7 FC7 FC7 Fp FC9 FC11{ m FC12{ m Fp Fi FC13{ m}} Fi} Fi Fp[7] FC14{ m Fp Fi FC13 FC15{ m}} Fi:8 Fi:8 Fi:16 Fi:16 Fi:8 Fi:8 Fi:8 Fi:32 Fi:8 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fi[7] Fp[6] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 FC16{ BC17{ m Fp Fi FC15 FC18{ m}}} Fp[4] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:16 Fi:16 Fi:16 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:8 Fi:8 Fi:8 Fp[7] FC19{ m Fp Fi[2] FC18} Fp[2] Fi:16 Fi:16 FC16 FC19 FC20{ m Fp Fi[2] FC21{ m}} Fp[2] Fi:24 Fi:8 Fp} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fi[3] FC20 FC20 Fi[3] FC22{ m FL[4]} FC23{ vd m FC24{ m Fc Fl[2] Fs[12] Fc[5]} FC25{ m Fi[2]} Fc[2]} FC26{ m Fp Fi[2] FC21} Fi[2] Fp[2] FC7 Fp Fi}


 S4228C1 ::~S4228C1(){ note_dtor("S4228C1", this);}
void  S4228C1 ::v1(){vfunc_called(this, "_ZN7S4228C12v1Ev");}
void  S4228C1 ::v2(){vfunc_called(this, "_ZN7S4228C12v2Ev");}
void  S4228C1 ::v3(){vfunc_called(this, "_ZN7S4228C12v3Ev");}
void  S4228C1 ::v4(){vfunc_called(this, "_ZN7S4228C12v4Ev");}
void  S4228C1 ::v5(){vfunc_called(this, "_ZN7S4228C12v5Ev");}
void  S4228C1 ::v6(){vfunc_called(this, "_ZN7S4228C12v6Ev");}
void  S4228C1 ::v7(){vfunc_called(this, "_ZN7S4228C12v7Ev");}
void  S4228C1 ::v8(){vfunc_called(this, "_ZN7S4228C12v8Ev");}
void  S4228C1 ::v9(){vfunc_called(this, "_ZN7S4228C12v9Ev");}
void  S4228C1 ::v10(){vfunc_called(this, "_ZN7S4228C13v10Ev");}
S4228C1 ::S4228C1(){ note_ctor("S4228C1", this);} // tgen

static void Test_S4228C1()
{
  extern Class_Descriptor cd_S4228C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(139,210)];
    init_test(&cd_S4228C1, buf);
    S4228C1 *dp, &lv = *(dp=new (buf) S4228C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1104,836), "sizeof(S4228C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4228C1)");
    check_base_class_offset(lv, (S4228C3_nt*)(S4228C2_nt*), 0, "S4228C1");
    check_base_class_offset(lv, (S4228C2_nt*), 0, "S4228C1");
    check_field_offset(lv, s4228c1f0, ABISELECT(832,632), "S4228C1.s4228c1f0");
    check_field_offset(lv, s4228c1f1, ABISELECT(848,644), "S4228C1.s4228c1f1");
    check_field_offset(lv, s4228c1f2, ABISELECT(872,660), "S4228C1.s4228c1f2");
    check_field_offset(lv, s4228c1f3, ABISELECT(896,676), "S4228C1.s4228c1f3");
    check_field_offset(lv, s4228c1f4, ABISELECT(912,688), "S4228C1.s4228c1f4");
    check_field_offset(lv, s4228c1f5, ABISELECT(944,720), "S4228C1.s4228c1f5");
    check_field_offset(lv, s4228c1f6, ABISELECT(1024,780), "S4228C1.s4228c1f6");
    check_field_offset(lv, s4228c1f7, ABISELECT(1048,796), "S4228C1.s4228c1f7");
    check_field_offset(lv, s4228c1f8, ABISELECT(1056,804), "S4228C1.s4228c1f8");
    check_field_offset(lv, s4228c1f9, ABISELECT(1072,812), "S4228C1.s4228c1f9");
    check_field_offset(lv, s4228c1f10, ABISELECT(1088,828), "S4228C1.s4228c1f10");
    check_field_offset(lv, s4228c1f11, ABISELECT(1096,832), "S4228C1.s4228c1f11");
    test_class_info(&lv, &cd_S4228C1);
    dp->~S4228C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4228C1(Test_S4228C1, "S4228C1", ABISELECT(1104,836));

#else // __cplusplus

extern void _ZN7S4228C1C1Ev();
extern void _ZN7S4228C1D1Ev();
Name_Map name_map_S4228C1[] = {
  NSPAIR(_ZN7S4228C1C1Ev),
  NSPAIR(_ZN7S4228C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C3_nt;
extern VTBL_ENTRY _ZTI10S4228C3_nt[];
extern  VTBL_ENTRY _ZTV10S4228C3_nt[];
extern Class_Descriptor cd_S4228C2_nt;
extern VTBL_ENTRY _ZTI10S4228C2_nt[];
extern  VTBL_ENTRY _ZTV10S4228C2_nt[];
static Base_Class bases_S4228C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4228C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4228C1[];
extern void _ZN7S4228C1D1Ev();
extern void _ZN7S4228C1D0Ev();
extern void _ZN10S4228C3_nt3v11Ev();
extern void _ZN10S4228C3_nt3v12Ev();
extern void _ZN10S4228C3_nt3v13Ev();
extern void _ZN10S4228C3_nt3v14Ev();
extern void _ZN10S4228C3_nt3v15Ev();
extern void _ZN10S4228C3_nt3v16Ev();
extern void _ZN10S4228C3_nt3v17Ev();
extern void _ZN10S4228C3_nt3v18Ev();
extern void _ZN10S4228C3_nt3v19Ev();
extern void _ZN10S4228C3_nt3v20Ev();
extern void _ZN10S4228C3_nt3v21Ev();
extern void _ZN10S4228C3_nt3v22Ev();
extern void _ZN10S4228C3_nt3v23Ev();
extern void _ZN10S4228C3_nt3v24Ev();
extern void _ZN10S4228C3_nt3v25Ev();
extern void _ZN10S4228C3_nt3v26Ev();
extern void _ZN10S4228C3_nt3v27Ev();
extern void _ZN10S4228C3_nt3v28Ev();
extern void _ZN10S4228C3_nt3v29Ev();
extern void _ZN10S4228C3_nt3v30Ev();
extern void _ZN10S4228C3_nt3v31Ev();
extern void _ZN10S4228C3_nt3v32Ev();
extern void _ZN10S4228C3_nt3v33Ev();
extern void _ZN10S4228C2_nt3v34Ev();
extern void _ZN10S4228C2_nt3v35Ev();
extern void _ZN10S4228C2_nt3v36Ev();
extern void _ZN10S4228C2_nt3v37Ev();
extern void _ZN10S4228C2_nt3v38Ev();
extern void _ZN10S4228C2_nt3v39Ev();
extern void _ZN10S4228C2_nt3v40Ev();
extern void _ZN10S4228C2_nt3v41Ev();
extern void _ZN10S4228C2_nt3v42Ev();
extern void _ZN10S4228C2_nt3v43Ev();
extern void _ZN10S4228C2_nt3v44Ev();
extern void _ZN10S4228C2_nt3v45Ev();
extern void _ZN10S4228C2_nt3v46Ev();
extern void _ZN10S4228C2_nt3v47Ev();
extern void _ZN10S4228C2_nt3v48Ev();
extern void _ZN10S4228C2_nt3v49Ev();
extern void _ZN10S4228C2_nt3v50Ev();
extern void _ZN10S4228C2_nt3v51Ev();
extern void _ZN10S4228C2_nt3v52Ev();
extern void _ZN10S4228C2_nt3v53Ev();
extern void _ZN10S4228C2_nt3v54Ev();
extern void _ZN10S4228C2_nt3v55Ev();
extern void _ZN10S4228C2_nt3v56Ev();
extern void _ZN10S4228C2_nt3v57Ev();
extern void _ZN10S4228C2_nt3v58Ev();
extern void _ZN10S4228C2_nt3v59Ev();
extern void _ZN10S4228C2_nt3v60Ev();
extern void _ZN10S4228C2_nt3v61Ev();
extern void _ZN10S4228C2_nt3v62Ev();
extern void _ZN10S4228C2_nt3v63Ev();
extern void _ZN10S4228C2_nt3v64Ev();
extern void _ZN10S4228C2_nt3v65Ev();
extern void _ZN10S4228C2_nt3v66Ev();
extern void _ZN10S4228C2_nt3v67Ev();
extern void _ZN10S4228C2_nt3v68Ev();
extern void _ZN10S4228C2_nt3v69Ev();
extern void _ZN10S4228C2_nt3v70Ev();
extern void _ZN10S4228C2_nt3v71Ev();
extern void _ZN10S4228C2_nt3v72Ev();
extern void _ZN10S4228C2_nt3v73Ev();
extern void _ZN10S4228C2_nt3v74Ev();
extern void _ZN10S4228C2_nt3v75Ev();
extern void _ZN10S4228C2_nt3v76Ev();
extern void _ZN10S4228C2_nt3v77Ev();
extern void _ZN10S4228C2_nt3v78Ev();
extern void _ZN10S4228C2_nt3v79Ev();
extern void _ZN10S4228C2_nt3v80Ev();
extern void _ZN10S4228C2_nt3v81Ev();
extern void _ZN10S4228C2_nt3v82Ev();
extern void _ZN10S4228C2_nt3v83Ev();
extern void _ZN10S4228C2_nt3v84Ev();
extern void _ZN10S4228C2_nt3v85Ev();
extern void _ZN10S4228C2_nt3v86Ev();
extern void _ZN10S4228C2_nt3v87Ev();
extern void _ZN10S4228C2_nt3v88Ev();
extern void _ZN10S4228C2_nt3v89Ev();
extern void _ZN10S4228C2_nt3v90Ev();
extern void _ZN10S4228C2_nt3v91Ev();
extern void _ZN10S4228C2_nt3v92Ev();
extern void _ZN10S4228C2_nt3v93Ev();
extern void _ZN10S4228C2_nt3v94Ev();
extern void _ZN10S4228C2_nt3v95Ev();
extern void _ZN10S4228C2_nt3v96Ev();
extern void _ZN10S4228C2_nt3v97Ev();
extern void _ZN10S4228C2_nt3v98Ev();
extern void _ZN10S4228C2_nt3v99Ev();
extern void _ZN10S4228C2_nt4v100Ev();
extern void _ZN10S4228C2_nt4v101Ev();
extern void _ZN10S4228C2_nt4v102Ev();
extern void _ZN10S4228C2_nt4v103Ev();
extern void _ZN10S4228C2_nt4v104Ev();
extern void _ZN10S4228C2_nt4v105Ev();
extern void _ZN10S4228C2_nt4v106Ev();
extern void _ZN10S4228C2_nt4v107Ev();
extern void _ZN10S4228C2_nt4v108Ev();
extern void _ZN10S4228C2_nt4v109Ev();
extern void _ZN10S4228C2_nt4v110Ev();
extern void _ZN10S4228C2_nt4v111Ev();
extern void _ZN7S4228C12v1Ev();
extern void _ZN7S4228C12v2Ev();
extern void _ZN7S4228C12v3Ev();
extern void _ZN7S4228C12v4Ev();
extern void _ZN7S4228C12v5Ev();
extern void _ZN7S4228C12v6Ev();
extern void _ZN7S4228C12v7Ev();
extern void _ZN7S4228C12v8Ev();
extern void _ZN7S4228C12v9Ev();
extern void _ZN7S4228C13v10Ev();
static  VTBL_ENTRY vtc_S4228C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4228C1[0]),
  (VTBL_ENTRY)&_ZN7S4228C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4228C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN7S4228C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4228C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4228C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4228C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4228C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4228C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4228C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4228C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4228C12v9Ev,
  (VTBL_ENTRY)&_ZN7S4228C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S4228C1[];
extern  VTBL_ENTRY _ZTV7S4228C1[];
Class_Descriptor cd_S4228C1 = {  "S4228C1", // class name
  bases_S4228C1, 2,
  &(vtc_S4228C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1104,836), // object size
  NSPAIRA(_ZTI7S4228C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4228C1),115, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C5  {
  short s19763c5f0:6;
  long s19763c5f1;
  short s19763c5f2:4;
  __tsi64 s19763c5f3[6];
  long s19763c5f4[7];
  void *s19763c5f5;
  virtual void  v3(); // _ZN8S19763C52v3Ev
  ~S19763C5(); // tgen
  S19763C5(); // tgen
};
//SIG(-1 S19763C5) C1{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}


void  S19763C5 ::v3(){vfunc_called(this, "_ZN8S19763C52v3Ev");}
S19763C5 ::~S19763C5(){ note_dtor("S19763C5", this);} // tgen
S19763C5 ::S19763C5(){ note_ctor("S19763C5", this);} // tgen

static void Test_S19763C5()
{
  extern Class_Descriptor cd_S19763C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,25)];
    init_test(&cd_S19763C5, buf);
    S19763C5 *dp, &lv = *(dp=new (buf) S19763C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,96), "sizeof(S19763C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19763C5)");
    set_bf_and_test(lv, s19763c5f0, ABISELECT(8,4), 0, 6, 1, "S19763C5");
    set_bf_and_test(lv, s19763c5f0, ABISELECT(8,4), 0, 6, hide_sll(1LL<<5), "S19763C5");
    check_field_offset(lv, s19763c5f1, ABISELECT(16,8), "S19763C5.s19763c5f1");
    set_bf_and_test(lv, s19763c5f2, ABISELECT(24,12), 0, 4, 1, "S19763C5");
    set_bf_and_test(lv, s19763c5f2, ABISELECT(24,12), 0, 4, hide_sll(1LL<<3), "S19763C5");
    check_field_offset(lv, s19763c5f3, ABISELECT(32,16), "S19763C5.s19763c5f3");
    check_field_offset(lv, s19763c5f4, ABISELECT(80,64), "S19763C5.s19763c5f4");
    check_field_offset(lv, s19763c5f5, ABISELECT(136,92), "S19763C5.s19763c5f5");
    test_class_info(&lv, &cd_S19763C5);
    dp->~S19763C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C5(Test_S19763C5, "S19763C5", ABISELECT(144,96));

#else // __cplusplus

extern void _ZN8S19763C5C1Ev();
extern void _ZN8S19763C5D1Ev();
Name_Map name_map_S19763C5[] = {
  NSPAIR(_ZN8S19763C5C1Ev),
  NSPAIR(_ZN8S19763C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19763C5[];
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY vtc_S19763C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C5[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
Class_Descriptor cd_S19763C5 = {  "S19763C5", // class name
  0,0,//no base classes
  &(vtc_S19763C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,96), // object size
  NSPAIRA(_ZTI8S19763C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19763C5),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C4  {
  int s19763c4f0[2];
  long s19763c4f1[2];
  ::S19763C5 s19763c4f2[3];
  virtual void  v4(); // _ZN8S19763C42v4Ev
  virtual void  v5(); // _ZN8S19763C42v5Ev
  virtual void  v6(); // _ZN8S19763C42v6Ev
  ~S19763C4(); // tgen
  S19763C4(); // tgen
};
//SIG(-1 S19763C4) C1{ v1 v2 v3 Fi[2] Fl[2] FC2{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]}


void  S19763C4 ::v4(){vfunc_called(this, "_ZN8S19763C42v4Ev");}
void  S19763C4 ::v5(){vfunc_called(this, "_ZN8S19763C42v5Ev");}
void  S19763C4 ::v6(){vfunc_called(this, "_ZN8S19763C42v6Ev");}
S19763C4 ::~S19763C4(){ note_dtor("S19763C4", this);} // tgen
S19763C4 ::S19763C4(){ note_ctor("S19763C4", this);} // tgen

static void Test_S19763C4()
{
  extern Class_Descriptor cd_S19763C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,78)];
    init_test(&cd_S19763C4, buf);
    S19763C4 *dp, &lv = *(dp=new (buf) S19763C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S19763C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19763C4)");
    check_field_offset(lv, s19763c4f0, ABISELECT(8,4), "S19763C4.s19763c4f0");
    check_field_offset(lv, s19763c4f1, ABISELECT(16,12), "S19763C4.s19763c4f1");
    check_field_offset(lv, s19763c4f2, ABISELECT(32,20), "S19763C4.s19763c4f2");
    test_class_info(&lv, &cd_S19763C4);
    dp->~S19763C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C4(Test_S19763C4, "S19763C4", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN8S19763C4C1Ev();
extern void _ZN8S19763C4D1Ev();
Name_Map name_map_S19763C4[] = {
  NSPAIR(_ZN8S19763C4C1Ev),
  NSPAIR(_ZN8S19763C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19763C4[];
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY vtc_S19763C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C4[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
Class_Descriptor cd_S19763C4 = {  "S19763C4", // class name
  0,0,//no base classes
  &(vtc_S19763C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI8S19763C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19763C4),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C8  : virtual S19763C5 {
  void *s19763c8f0;
  ::S19763C5 s19763c8f1;
  __tsi64 s19763c8f2:3;
  ~S19763C8(); // tgen
  S19763C8(); // tgen
};
//SIG(-1 S19763C8) C1{ VBC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC2 FL:3}


S19763C8 ::~S19763C8(){ note_dtor("S19763C8", this);} // tgen
S19763C8 ::S19763C8(){ note_ctor("S19763C8", this);} // tgen

static void Test_S19763C8()
{
  extern Class_Descriptor cd_S19763C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,52)];
    init_test(&cd_S19763C8, buf);
    S19763C8 *dp, &lv = *(dp=new (buf) S19763C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,204), "sizeof(S19763C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19763C8)");
    check_base_class_offset(lv, (S19763C5*), ABISELECT(168,108), "S19763C8");
    check_field_offset(lv, s19763c8f0, ABISELECT(8,4), "S19763C8.s19763c8f0");
    check_field_offset(lv, s19763c8f1, ABISELECT(16,8), "S19763C8.s19763c8f1");
    set_bf_and_test(lv, s19763c8f2, ABISELECT(160,104), 0, 3, 1, "S19763C8");
    set_bf_and_test(lv, s19763c8f2, ABISELECT(160,104), 0, 3, hide_sll(1LL<<2), "S19763C8");
    test_class_info(&lv, &cd_S19763C8);
    dp->~S19763C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C8(Test_S19763C8, "S19763C8", ABISELECT(312,204));

#else // __cplusplus

extern void _ZN8S19763C8C1Ev();
extern void _ZN8S19763C8D1Ev();
Name_Map name_map_S19763C8[] = {
  NSPAIR(_ZN8S19763C8C1Ev),
  NSPAIR(_ZN8S19763C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
static Base_Class bases_S19763C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C5,    ABISELECT(168,108), //bcp->offset
    3, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19763C8[];
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY vtc_S19763C8[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern VTBL_ENTRY _ZTV8S19763C8[];
static  VTT_ENTRY vtt_S19763C8[] = {
  {&(_ZTV8S19763C8[3]),  3,7},
  {&(_ZTV8S19763C8[6]),  6,7},
};
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
Class_Descriptor cd_S19763C8 = {  "S19763C8", // class name
  bases_S19763C8, 1,
  &(vtc_S19763C8[0]), // expected_vtbl_contents
  &(vtt_S19763C8[0]), // expected_vtt_contents
  ABISELECT(312,204), // object size
  NSPAIRA(_ZTI8S19763C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19763C8),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19763C8),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C9  {
  __tsi64 s19763c9f0;
  long double s19763c9f1;
  void *s19763c9f2;
  char s19763c9f3;
  ::S19763C5 s19763c9f4;
  void *s19763c9f5[2];
  long s19763c9f6[8];
  short s19763c9f7;
  void *s19763c9f8;
  __tsi64 s19763c9f9:64;
  virtual void  v7(); // _ZN8S19763C92v7Ev
  ~S19763C9(); // tgen
  S19763C9(); // tgen
};
//SIG(-1 S19763C9) C1{ v1 FL FD Fp Fc FC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64}


void  S19763C9 ::v7(){vfunc_called(this, "_ZN8S19763C92v7Ev");}
S19763C9 ::~S19763C9(){ note_dtor("S19763C9", this);} // tgen
S19763C9 ::S19763C9(){ note_ctor("S19763C9", this);} // tgen

static void Test_S19763C9()
{
  extern Class_Descriptor cd_S19763C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,47)];
    init_test(&cd_S19763C9, buf);
    S19763C9 *dp, &lv = *(dp=new (buf) S19763C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,184), "sizeof(S19763C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C9)");
    check_field_offset(lv, s19763c9f0, ABISELECT(8,4), "S19763C9.s19763c9f0");
    check_field_offset(lv, s19763c9f1, ABISELECT(16,12), "S19763C9.s19763c9f1");
    check_field_offset(lv, s19763c9f2, ABISELECT(32,24), "S19763C9.s19763c9f2");
    check_field_offset(lv, s19763c9f3, ABISELECT(40,28), "S19763C9.s19763c9f3");
    check_field_offset(lv, s19763c9f4, ABISELECT(48,32), "S19763C9.s19763c9f4");
    check_field_offset(lv, s19763c9f5, ABISELECT(192,128), "S19763C9.s19763c9f5");
    check_field_offset(lv, s19763c9f6, ABISELECT(208,136), "S19763C9.s19763c9f6");
    check_field_offset(lv, s19763c9f7, ABISELECT(272,168), "S19763C9.s19763c9f7");
    check_field_offset(lv, s19763c9f8, ABISELECT(280,172), "S19763C9.s19763c9f8");
    set_bf_and_test(lv, s19763c9f9, ABISELECT(288,176), 0, 64, 1, "S19763C9");
    set_bf_and_test(lv, s19763c9f9, ABISELECT(288,176), 0, 64, hide_sll(1LL<<63), "S19763C9");
    test_class_info(&lv, &cd_S19763C9);
    dp->~S19763C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C9(Test_S19763C9, "S19763C9", ABISELECT(304,184));

#else // __cplusplus

extern void _ZN8S19763C9C1Ev();
extern void _ZN8S19763C9D1Ev();
Name_Map name_map_S19763C9[] = {
  NSPAIR(_ZN8S19763C9C1Ev),
  NSPAIR(_ZN8S19763C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19763C9[];
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY vtc_S19763C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C9[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
Class_Descriptor cd_S19763C9 = {  "S19763C9", // class name
  0,0,//no base classes
  &(vtc_S19763C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,184), // object size
  NSPAIRA(_ZTI8S19763C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19763C9),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C7  : S19763C5 , virtual S19763C4 , virtual S19763C8 , virtual S19763C9 {
  ::S19763C9 s19763c7f0;
  short s19763c7f1;
  int s19763c7f2[2];
  ~S19763C7(); // tgen
  S19763C7(); // tgen
};
//SIG(-1 S19763C7) C1{ BC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ v2 v3 v4 Fi[2] Fl[2] FC2[3]} VBC4{ VBC2 Fp FC2 FL:3} VBC5{ v5 FL FD Fp Fc FC2 Fp[2] Fl[8] Fs Fp FL:64} FC5 Fs Fi[2]}


S19763C7 ::~S19763C7(){ note_dtor("S19763C7", this);} // tgen
S19763C7 ::S19763C7(){ note_ctor("S19763C7", this);} // tgen

static void Test_S19763C7()
{
  extern Class_Descriptor cd_S19763C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,248)];
    init_test(&cd_S19763C7, buf);
    S19763C7 *dp, &lv = *(dp=new (buf) S19763C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,988), "sizeof(S19763C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C7)");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*), 0, "S19763C7");
    check_base_class_offset(lv, (S19763C4*), ABISELECT(464,292), "S19763C7");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(1096,708), "S19763C7");
    check_base_class_offset(lv, (S19763C8*), ABISELECT(928,600), "S19763C7");
    check_base_class_offset(lv, (S19763C9*), ABISELECT(1248,804), "S19763C7");
    check_field_offset(lv, s19763c7f0, ABISELECT(144,96), "S19763C7.s19763c7f0");
    check_field_offset(lv, s19763c7f1, ABISELECT(448,280), "S19763C7.s19763c7f1");
    check_field_offset(lv, s19763c7f2, ABISELECT(452,284), "S19763C7.s19763c7f2");
    test_class_info(&lv, &cd_S19763C7);
    dp->~S19763C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C7(Test_S19763C7, "S19763C7", ABISELECT(1552,988));

#else // __cplusplus

extern void _ZN8S19763C7C1Ev();
extern void _ZN8S19763C7D1Ev();
Name_Map name_map_S19763C7[] = {
  NSPAIR(_ZN8S19763C7C1Ev),
  NSPAIR(_ZN8S19763C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
static Base_Class bases_S19763C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C4,    ABISELECT(464,292), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    ABISELECT(1096,708), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19763C8,    ABISELECT(928,600), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C9,    ABISELECT(1248,804), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19763C7[];
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY vtc_S19763C7[] = {
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(168,108),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  0,
  ABISELECT(-1096,-708),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern VTBL_ENTRY _ZTV8S19763C7[];
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C7[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__8S19763C7[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTT_ENTRY vtt_S19763C7[] = {
  {&(_ZTV8S19763C7[6]),  6,26},
  {&(_ZTV8S19763C7[12]),  12,26},
  {&(_ZTV8S19763C7[18]),  18,26},
  {&(_ZTV8S19763C7[21]),  21,26},
  {&(_ZTV8S19763C7[25]),  25,26},
  {&(_tg__ZTV8S19763C8__8S19763C7[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__8S19763C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
Class_Descriptor cd_S19763C7 = {  "S19763C7", // class name
  bases_S19763C7, 5,
  &(vtc_S19763C7[0]), // expected_vtbl_contents
  &(vtt_S19763C7[0]), // expected_vtt_contents
  ABISELECT(1552,988), // object size
  NSPAIRA(_ZTI8S19763C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19763C7),26, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19763C7),7, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C10  : S19763C9 , S19763C4 , S19763C5 {
  long s19763c10f0;
  __tsi64 s19763c10f1;
  void *s19763c10f2[8];
  ::S19763C7 s19763c10f3;
  void *s19763c10f4;
  int s19763c10f5;
  ::S19763C7 s19763c10f6;
  int s19763c10f7;
  virtual  ~S19763C10(); // _ZN9S19763C10D1Ev
  virtual void  v8(); // _ZN9S19763C102v8Ev
  S19763C10(); // tgen
};
//SIG(-1 S19763C10) C1{ BC2{ v2 FL FD Fp Fc FC3{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC4{ v3 v4 v5 Fi[2] Fl[2] FC3[3]} BC3 vd v1 Fl FL Fp[8] FC5{ BC3 VBC4 VBC6{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC5 Fi}


 S19763C10 ::~S19763C10(){ note_dtor("S19763C10", this);}
void  S19763C10 ::v8(){vfunc_called(this, "_ZN9S19763C102v8Ev");}
S19763C10 ::S19763C10(){ note_ctor("S19763C10", this);} // tgen

static void Test_S19763C10()
{
  extern Class_Descriptor cd_S19763C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(259,656)];
    init_test(&cd_S19763C10, buf);
    S19763C10 *dp, &lv = *(dp=new (buf) S19763C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4128,2620), "sizeof(S19763C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C10)");
    check_base_class_offset(lv, (S19763C9*), 0, "S19763C10");
    check_base_class_offset(lv, (S19763C4*), ABISELECT(296,184), "S19763C10");
    check_base_class_offset(lv, (S19763C5*), ABISELECT(760,492), "S19763C10");
    check_field_offset(lv, s19763c10f0, ABISELECT(904,588), "S19763C10.s19763c10f0");
    check_field_offset(lv, s19763c10f1, ABISELECT(912,592), "S19763C10.s19763c10f1");
    check_field_offset(lv, s19763c10f2, ABISELECT(920,600), "S19763C10.s19763c10f2");
    check_field_offset(lv, s19763c10f3, ABISELECT(992,632), "S19763C10.s19763c10f3");
    check_field_offset(lv, s19763c10f4, ABISELECT(2544,1620), "S19763C10.s19763c10f4");
    check_field_offset(lv, s19763c10f5, ABISELECT(2552,1624), "S19763C10.s19763c10f5");
    check_field_offset(lv, s19763c10f6, ABISELECT(2560,1628), "S19763C10.s19763c10f6");
    check_field_offset(lv, s19763c10f7, ABISELECT(4112,2616), "S19763C10.s19763c10f7");
    test_class_info(&lv, &cd_S19763C10);
    dp->~S19763C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C10(Test_S19763C10, "S19763C10", ABISELECT(4128,2620));

#else // __cplusplus

extern void _ZN9S19763C10C1Ev();
extern void _ZN9S19763C10D1Ev();
Name_Map name_map_S19763C10[] = {
  NSPAIR(_ZN9S19763C10C1Ev),
  NSPAIR(_ZN9S19763C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
static Base_Class bases_S19763C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C4,    ABISELECT(296,184), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C5,    ABISELECT(760,492), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19763C10[];
extern void _ZN8S19763C92v7Ev();
extern void _ZN9S19763C10D1Ev();
extern void _ZN9S19763C10D0Ev();
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY vtc_S19763C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C10[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN9S19763C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI9S19763C10[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI9S19763C10[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
Class_Descriptor cd_S19763C10 = {  "S19763C10", // class name
  bases_S19763C10, 3,
  &(vtc_S19763C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(4128,2620), // object size
  NSPAIRA(_ZTI9S19763C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19763C10),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C13  : S19763C9 {
  ::S19763C8 s19763c13f0;
  int s19763c13f1;
  void *s19763c13f2;
  int s19763c13f3;
  virtual  ~S19763C13(); // _ZN9S19763C13D1Ev
  virtual void  v12(); // _ZN9S19763C133v12Ev
  S19763C13(); // tgen
};
//SIG(-1 S19763C13) C1{ BC2{ v2 FL FD Fp Fc FC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v1 FC4{ VBC3 Fp FC3 FL:3} Fi Fp Fi}


 S19763C13 ::~S19763C13(){ note_dtor("S19763C13", this);}
void  S19763C13 ::v12(){vfunc_called(this, "_ZN9S19763C133v12Ev");}
S19763C13 ::S19763C13(){ note_ctor("S19763C13", this);} // tgen

static void Test_S19763C13()
{
  extern Class_Descriptor cd_S19763C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,101)];
    init_test(&cd_S19763C13, buf);
    S19763C13 *dp, &lv = *(dp=new (buf) S19763C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,400), "sizeof(S19763C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C13)");
    check_base_class_offset(lv, (S19763C9*), 0, "S19763C13");
    check_field_offset(lv, s19763c13f0, ABISELECT(296,184), "S19763C13.s19763c13f0");
    check_field_offset(lv, s19763c13f1, ABISELECT(608,388), "S19763C13.s19763c13f1");
    check_field_offset(lv, s19763c13f2, ABISELECT(616,392), "S19763C13.s19763c13f2");
    check_field_offset(lv, s19763c13f3, ABISELECT(624,396), "S19763C13.s19763c13f3");
    test_class_info(&lv, &cd_S19763C13);
    dp->~S19763C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C13(Test_S19763C13, "S19763C13", ABISELECT(640,400));

#else // __cplusplus

extern void _ZN9S19763C13C1Ev();
extern void _ZN9S19763C13D1Ev();
Name_Map name_map_S19763C13[] = {
  NSPAIR(_ZN9S19763C13C1Ev),
  NSPAIR(_ZN9S19763C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
static Base_Class bases_S19763C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19763C13[];
extern void _ZN8S19763C92v7Ev();
extern void _ZN9S19763C13D1Ev();
extern void _ZN9S19763C13D0Ev();
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY vtc_S19763C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C13[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN9S19763C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
Class_Descriptor cd_S19763C13 = {  "S19763C13", // class name
  bases_S19763C13, 1,
  &(vtc_S19763C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,400), // object size
  NSPAIRA(_ZTI9S19763C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19763C13),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C12  : virtual S19763C9 , virtual S19763C10 , virtual S19763C5 , virtual S19763C8 {
  __tsi64 s19763c12f0:44;
  void *s19763c12f1;
  int s19763c12f2;
  ::S19763C7 s19763c12f3;
  long s19763c12f4[2];
  int s19763c12f5[3];
  ::S19763C10 s19763c12f6;
  char s19763c12f7:7;
  ::S19763C13 s19763c12f8;
  ~S19763C12(); // tgen
  S19763C12(); // tgen
};
//SIG(-1 S19763C12) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} VBC4{ BC2 BC5{ v2 v3 v4 Fi[2] Fl[2] FC3[3]} BC3 vd v6 Fl FL Fp[8] FC6{ BC3 VBC5 VBC7{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC6 Fi} VBC3 VBC7 FL:44 Fp Fi FC6 Fl[2] Fi[3] FC4 Fc:7 FC8{ BC2 vd v7 FC7 Fi Fp Fi}}


S19763C12 ::~S19763C12(){ note_dtor("S19763C12", this);} // tgen
S19763C12 ::S19763C12(){ note_ctor("S19763C12", this);} // tgen

static void Test_S19763C12()
{
  extern Class_Descriptor cd_S19763C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(697,1766)];
    init_test(&cd_S19763C12, buf);
    S19763C12 *dp, &lv = *(dp=new (buf) S19763C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11136,7060), "sizeof(S19763C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C12)");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*), ABISELECT(6400,4052), "S19763C12");
    check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(6704,4236), "S19763C12");
    check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(7000,4420), "S19763C12");
    check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(7464,4728), "S19763C12");
    check_base_class_offset(lv, (S19763C10*), ABISELECT(6704,4236), "S19763C12");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*), ABISELECT(10824,6856), "S19763C12");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(10824,6856), "S19763C12");
    check_base_class_offset(lv, (S19763C8*), ABISELECT(10968,6952), "S19763C12");
    set_bf_and_test(lv, s19763c12f0, ABISELECT(8,4), 0, 44, 1, "S19763C12");
    set_bf_and_test(lv, s19763c12f0, ABISELECT(8,4), 0, 44, hide_sll(1LL<<43), "S19763C12");
    check_field_offset(lv, s19763c12f1, ABISELECT(16,12), "S19763C12.s19763c12f1");
    check_field_offset(lv, s19763c12f2, ABISELECT(24,16), "S19763C12.s19763c12f2");
    check_field_offset(lv, s19763c12f3, ABISELECT(32,20), "S19763C12.s19763c12f3");
    check_field_offset(lv, s19763c12f4, ABISELECT(1584,1008), "S19763C12.s19763c12f4");
    check_field_offset(lv, s19763c12f5, ABISELECT(1600,1016), "S19763C12.s19763c12f5");
    check_field_offset(lv, s19763c12f6, ABISELECT(1616,1028), "S19763C12.s19763c12f6");
    set_bf_and_test(lv, s19763c12f7, ABISELECT(5744,3648), 0, 7, 1, "S19763C12");
    set_bf_and_test(lv, s19763c12f7, ABISELECT(5744,3648), 0, 7, hide_sll(1LL<<6), "S19763C12");
    check_field_offset(lv, s19763c12f8, ABISELECT(5760,3652), "S19763C12.s19763c12f8");
    test_class_info(&lv, &cd_S19763C12);
    dp->~S19763C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C12(Test_S19763C12, "S19763C12", ABISELECT(11136,7060));

#else // __cplusplus

extern void _ZN9S19763C12C1Ev();
extern void _ZN9S19763C12D1Ev();
Name_Map name_map_S19763C12[] = {
  NSPAIR(_ZN9S19763C12C1Ev),
  NSPAIR(_ZN9S19763C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
static Base_Class bases_S19763C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C9,    ABISELECT(6400,4052), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C9,    ABISELECT(6704,4236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(7000,4420), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(7464,4728), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19763C10,    ABISELECT(6704,4236), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    ABISELECT(10824,6856), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C8,    ABISELECT(10968,6952), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19763C12[];
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn6704_N9S19763C12D1Ev,_ZThn4236_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn6704_N9S19763C12D0Ev,_ZThn4236_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY vtc_S19763C12[] = {
  ABISELECT(10968,6952),
  ABISELECT(10824,6856),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-144,-96),
  ABISELECT(-10968,-6952),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern VTBL_ENTRY _ZTV9S19763C12[];
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C12[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__9S19763C12[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTT_ENTRY vtt_S19763C12[] = {
  {&(_ZTV9S19763C12[6]),  6,40},
  {&(_ZTV9S19763C12[11]),  11,40},
  {&(_ZTV9S19763C12[21]),  21,40},
  {&(_ZTV9S19763C12[27]),  27,40},
  {&(_ZTV9S19763C12[32]),  32,40},
  {&(_ZTV9S19763C12[36]),  36,40},
  {&(_ZTV9S19763C12[40]),  40,40},
  {&(_tg__ZTV8S19763C8__9S19763C12[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__9S19763C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
static VTBL_ENTRY alt_thunk_names1[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19763C12D0Ev,_ZThn4236_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19763C12D1Ev,_ZThn4236_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C12 = {  "S19763C12", // class name
  bases_S19763C12, 7,
  &(vtc_S19763C12[0]), // expected_vtbl_contents
  &(vtt_S19763C12[0]), // expected_vtt_contents
  ABISELECT(11136,7060), // object size
  NSPAIRA(_ZTI9S19763C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19763C12),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19763C12),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names1,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C11  : virtual S19763C10 , virtual S19763C5 , virtual S19763C8 , S19763C7 , S19763C12 {
  ::S19763C10 s19763c11f0;
  __tsi64 s19763c11f1;
  char s19763c11f2:7;
  virtual void  v9(); // _ZN9S19763C112v9Ev
  ~S19763C11(); // tgen
  S19763C11(); // tgen
};
//SIG(-1 S19763C11) C1{ VBC2{ BC3{ v2 FL FD Fp Fc FC4{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC5{ v3 v4 v5 Fi[2] Fl[2] FC4[3]} BC4 vd v7 Fl FL Fp[8] FC6{ BC4 VBC5 VBC7{ VBC4 Fp FC4 FL:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC6 Fi} VBC4 VBC7 BC6 BC8{ VBC3 VBC2 VBC4 VBC7 FL:44 Fp Fi FC6 Fl[2] Fi[3] FC2 Fc:7 FC9{ BC3 vd v8 FC7 Fi Fp Fi}} v1 FC2 FL Fc:7}


void  S19763C11 ::v9(){vfunc_called(this, "_ZN9S19763C112v9Ev");}
S19763C11 ::~S19763C11(){ note_dtor("S19763C11", this);} // tgen
S19763C11 ::S19763C11(){ note_ctor("S19763C11", this);} // tgen

static void Test_S19763C11()
{
  extern Class_Descriptor cd_S19763C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1014,2574)];
    init_test(&cd_S19763C11, buf);
    S19763C11 *dp, &lv = *(dp=new (buf) S19763C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16208,10292), "sizeof(S19763C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C11)");
    check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(11008,6976), "S19763C11");
    check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(11304,7160), "S19763C11");
    check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(11768,7468), "S19763C11");
    check_base_class_offset(lv, (S19763C10*), ABISELECT(11008,6976), "S19763C11");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*), ABISELECT(11008,6976), "S19763C11");
    /*is_ambiguous_... S19763C11::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*), ABISELECT(15128,9596), "S19763C11");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(15128,9596), "S19763C11");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*), ABISELECT(15128,9596), "S19763C11");
    check_base_class_offset(lv, (S19763C8*), ABISELECT(15272,9692), "S19763C11");
    check_base_class_offset(lv, (S19763C8*)(S19763C7*), ABISELECT(15272,9692), "S19763C11");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*), ABISELECT(15272,9692), "S19763C11");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*), 0, "S19763C11");
    check_base_class_offset(lv, (S19763C4*)(S19763C7*), ABISELECT(15440,9800), "S19763C11");
    check_base_class_offset(lv, (S19763C9*)(S19763C7*), ABISELECT(15904,10108), "S19763C11");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*), ABISELECT(15904,10108), "S19763C11");
    check_base_class_offset(lv, (S19763C7*), 0, "S19763C11");
    check_base_class_offset(lv, (S19763C12*), ABISELECT(464,292), "S19763C11");
    check_field_offset(lv, s19763c11f0, ABISELECT(6864,4344), "S19763C11.s19763c11f0");
    check_field_offset(lv, s19763c11f1, ABISELECT(10992,6964), "S19763C11.s19763c11f1");
    set_bf_and_test(lv, s19763c11f2, ABISELECT(11000,6972), 0, 7, 1, "S19763C11");
    set_bf_and_test(lv, s19763c11f2, ABISELECT(11000,6972), 0, 7, hide_sll(1LL<<6), "S19763C11");
    test_class_info(&lv, &cd_S19763C11);
    dp->~S19763C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C11(Test_S19763C11, "S19763C11", ABISELECT(16208,10292));

#else // __cplusplus

extern void _ZN9S19763C11C1Ev();
extern void _ZN9S19763C11D1Ev();
Name_Map name_map_S19763C11[] = {
  NSPAIR(_ZN9S19763C11C1Ev),
  NSPAIR(_ZN9S19763C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
static Base_Class bases_S19763C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C9,    ABISELECT(11008,6976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(11304,7160), //bcp->offset
    32, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(11768,7468), //bcp->offset
    37, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19763C10,    ABISELECT(11008,6976), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    ABISELECT(15128,9596), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C8,    ABISELECT(15272,9692), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(15440,9800), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19763C9,    ABISELECT(15904,10108), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19763C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C12,    ABISELECT(464,292), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19763C11[];
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn11008_N9S19763C11D1Ev,_ZThn6976_N9S19763C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void ABISELECT(_ZThn11008_N9S19763C11D0Ev,_ZThn6976_N9S19763C11D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY vtc_S19763C11[] = {
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern VTBL_ENTRY _ZTV9S19763C11[];
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__9S19763C11[] = {
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C7__9S19763C11[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C7__9S19763C11[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C7__9S19763C11[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C7__9S19763C11[] = {
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C11[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C12__9S19763C11[] = {
  0,
  ABISELECT(-15440,-9816),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19763C12D1Ev,_ZThn6684_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19763C12D0Ev,_ZThn6684_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C12__9S19763C11[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C12__9S19763C11[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C12__9S19763C11[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C12__9S19763C11[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C12__9S19763C11[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C11[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__9S19763C11[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTT_ENTRY vtt_S19763C11[] = {
  {&(_ZTV9S19763C11[7]),  7,59},
  {&(_tg__ZTV8S19763C7__9S19763C11[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C7__9S19763C11[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C7__9S19763C11[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C7__9S19763C11[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C7__9S19763C11[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C11[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C12__9S19763C11[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C12__9S19763C11[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C12__9S19763C11[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C12__9S19763C11[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C12__9S19763C11[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C12__9S19763C11[3]),  3,3},
  {&(_ZTV9S19763C11[28]),  28,59},
  {&(_ZTV9S19763C11[34]),  34,59},
  {&(_ZTV9S19763C11[39]),  39,59},
  {&(_ZTV9S19763C11[43]),  43,59},
  {&(_ZTV9S19763C11[47]),  47,59},
  {&(_ZTV9S19763C11[52]),  52,59},
  {&(_ZTV9S19763C11[58]),  58,59},
  {&(_ZTV9S19763C11[17]),  17,59},
  {&(_tg__ZTV8S19763C8__9S19763C11[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__9S19763C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
static VTBL_ENTRY alt_thunk_names2[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19763C12D0Ev,_ZThn6684_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19763C12D1Ev,_ZThn6684_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19763C11D0Ev,_ZThn6976_N9S19763C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19763C11D1Ev,_ZThn6976_N9S19763C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C11 = {  "S19763C11", // class name
  bases_S19763C11, 11,
  &(vtc_S19763C11[0]), // expected_vtbl_contents
  &(vtt_S19763C11[0]), // expected_vtt_contents
  ABISELECT(16208,10292), // object size
  NSPAIRA(_ZTI9S19763C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19763C11),59, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19763C11),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names2,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C6  : virtual S19763C5 , virtual S19763C7 , S19763C10 , S19763C11 {
  ::S19763C12 s19763c6f0;
  short s19763c6f1;
  __tsi64 s19763c6f2:8;
  virtual void  v10(); // _ZN8S19763C63v10Ev
  virtual void  v11(); // _ZN8S19763C63v11Ev
  ~S19763C6(); // tgen
  S19763C6(); // tgen
};
//SIG(-1 S19763C6) C1{ VBC2{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ BC2 VBC4{ v4 v5 v6 Fi[2] Fl[2] FC2[3]} VBC5{ VBC2 Fp FC2 FL:3} VBC6{ v7 FL FD Fp Fc FC2 Fp[2] Fl[8] Fs Fp FL:64} FC6 Fs Fi[2]} BC7{ BC6 BC4 BC2 vd v8 Fl FL Fp[8] FC3 Fp Fi FC3 Fi} BC8{ VBC7 VBC2 VBC5 BC3 BC9{ VBC6 VBC7 VBC2 VBC5 FL:44 Fp Fi FC3 Fl[2] Fi[3] FC7 Fc:7 FC10{ BC6 vd v10 FC5 Fi Fp Fi}} v9 FC7 FL Fc:7} v1 v2 FC9 Fs FL:8}


void  S19763C6 ::v10(){vfunc_called(this, "_ZN8S19763C63v10Ev");}
void  S19763C6 ::v11(){vfunc_called(this, "_ZN8S19763C63v11Ev");}
S19763C6 ::~S19763C6(){ note_dtor("S19763C6", this);} // tgen
S19763C6 ::S19763C6(){ note_ctor("S19763C6", this);} // tgen

static void Test_S19763C6()
{
  extern Class_Descriptor cd_S19763C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1999,5068)];
    init_test(&cd_S19763C6, buf);
    S19763C6 *dp, &lv = *(dp=new (buf) S19763C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(31968,20268), "sizeof(S19763C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C6)");
    /*is_ambiguous_... S19763C6::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*), ABISELECT(26280,16660), "S19763C6");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(26280,16660), "S19763C6");
    /*is_ambiguous_... S19763C11::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*), ABISELECT(26280,16660), "S19763C6");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*), ABISELECT(26280,16660), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*), ABISELECT(26432,16756), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*), ABISELECT(26896,17048), "S19763C6");
    check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*), ABISELECT(26896,17048), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*), ABISELECT(27360,17356), "S19763C6");
    check_base_class_offset(lv, (S19763C8*)(S19763C11*), ABISELECT(27360,17356), "S19763C6");
    check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*), ABISELECT(27360,17356), "S19763C6");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*), ABISELECT(27360,17356), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*), ABISELECT(27536,17464), "S19763C6");
    check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*), ABISELECT(27536,17464), "S19763C6");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*), ABISELECT(27536,17464), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*), ABISELECT(26432,16756), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C10*), 0, "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(296,184), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(760,492), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C10*), 0, "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(27840,17648), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(28136,17832), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(28600,18140), "S19763C6");
    check_base_class_offset(lv, (S19763C10*)(S19763C11*), ABISELECT(27840,17648), "S19763C6");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*), ABISELECT(27840,17648), "S19763C6");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*), ABISELECT(4128,2620), "S19763C6");
    check_base_class_offset(lv, (S19763C7*)(S19763C11*), ABISELECT(4128,2620), "S19763C6");
    check_base_class_offset(lv, (S19763C12*)(S19763C11*), ABISELECT(4592,2912), "S19763C6");
    check_base_class_offset(lv, (S19763C11*), ABISELECT(4128,2620), "S19763C6");
    check_field_offset(lv, s19763c6f0, ABISELECT(15136,9596), "S19763C6.s19763c6f0");
    check_field_offset(lv, s19763c6f1, ABISELECT(26272,16656), "S19763C6.s19763c6f1");
    set_bf_and_test(lv, s19763c6f2, ABISELECT(26274,16658), 0, 8, 1, "S19763C6");
    set_bf_and_test(lv, s19763c6f2, ABISELECT(26274,16658), 0, 8, hide_sll(1LL<<7), "S19763C6");
    test_class_info(&lv, &cd_S19763C6);
    dp->~S19763C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C6(Test_S19763C6, "S19763C6", ABISELECT(31968,20268));

#else // __cplusplus

extern void _ZN8S19763C6C1Ev();
extern void _ZN8S19763C6D1Ev();
Name_Map name_map_S19763C6[] = {
  NSPAIR(_ZN8S19763C6C1Ev),
  NSPAIR(_ZN8S19763C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
static Base_Class bases_S19763C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C5,    ABISELECT(26280,16660), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    ABISELECT(26432,16756), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(26896,17048), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C8,    ABISELECT(27360,17356), //bcp->offset
    61, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C9,    ABISELECT(27536,17464), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C7,    ABISELECT(26432,16756), //bcp->offset
    45, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(296,184), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(760,492), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19763C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C9,    ABISELECT(27840,17648), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(28136,17832), //bcp->offset
    81, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(28600,18140), //bcp->offset
    86, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19763C10,    ABISELECT(27840,17648), //bcp->offset
    68, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19763C12,    ABISELECT(4592,2912), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19763C11,    ABISELECT(4128,2620), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19763C6[];
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C6D1Ev();
extern void _ZN8S19763C6D0Ev();
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C63v10Ev();
extern void _ZN8S19763C63v11Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZThn4128_N8S19763C6D1Ev,_ZThn2620_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn4128_N8S19763C6D0Ev,_ZThn2620_N8S19763C6D0Ev)();
extern void ABISELECT(_ZThn4592_N8S19763C6D1Ev,_ZThn2912_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn4592_N8S19763C6D0Ev,_ZThn2912_N8S19763C6D0Ev)();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn27840_N8S19763C6D1Ev,_ZThn17648_N8S19763C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev)();
extern void ABISELECT(_ZThn27840_N8S19763C6D0Ev,_ZThn17648_N8S19763C6D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY vtc_S19763C6[] = {
  ABISELECT(27840,17648),
  ABISELECT(27536,17464),
  ABISELECT(27360,17356),
  ABISELECT(26896,17048),
  ABISELECT(26432,16756),
  ABISELECT(26280,16660),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN8S19763C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19763C6D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v11Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C6D1Ev,_ZThn2620_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C6D0Ev,_ZThn2620_N8S19763C6D0Ev),
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C6D1Ev,_ZThn2912_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C6D0Ev,_ZThn2912_N8S19763C6D0Ev),
  0,
  ABISELECT(-26280,-16660),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-26432,-16756),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  0,
  0,
  ABISELECT(-26896,-17048),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-1080,-696),
  ABISELECT(-27360,-17356),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  0,
  ABISELECT(-27536,-17464),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-27840,-17648),
  0,
  ABISELECT(-27840,-17648),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-28136,-17832),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-28600,-18140),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern VTBL_ENTRY _ZTV8S19763C6[];
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C11__8S19763C6[] = {
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C11__A1__8S19763C6[] = {
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C11__A1__8S19763C6[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C11__A1__8S19763C6[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A1__8S19763C6[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C11__A1__8S19763C6[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__8S19763C6[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C11__8S19763C6[] = {
  0,
  ABISELECT(-22944,-14552),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn23248_N9S19763C12D1Ev,_ZThn14736_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn23248_N9S19763C12D0Ev,_ZThn14736_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C11__8S19763C6[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23248,-14736),
  0,
  ABISELECT(-23248,-14736),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__8S19763C6[] = {
  ABISELECT(-23544,-14920),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__8S19763C6[] = {
  ABISELECT(-24008,-15228),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C11__8S19763C6[] = {
  0,
  ABISELECT(-21688,-13748),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C11__8S19763C6[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-22768,-14444),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn23712_N9S19763C11D1Ev,_ZThn15028_N9S19763C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void ABISELECT(_ZThn23712_N9S19763C11D0Ev,_ZThn15028_N9S19763C11D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C11__8S19763C6[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23712,-15028),
  0,
  ABISELECT(-23712,-15028),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C11__8S19763C6[] = {
  ABISELECT(-24008,-15212),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C11__8S19763C6[] = {
  ABISELECT(-24472,-15520),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C11__8S19763C6[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C11__8S19763C6[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C11__8S19763C6[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C11__8S19763C6[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C11__8S19763C6[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__8S19763C6[] = {
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C7__8S19763C6[] = {
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C7__8S19763C6[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C7__8S19763C6[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C7__8S19763C6[] = {
  0,
  ABISELECT(-1104,-708),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C6[] = {
  ABISELECT(-1080,-696),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__8S19763C6[] = {
  0,
  ABISELECT(1080,696),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTT_ENTRY vtt_S19763C6[] = {
  {&(_ZTV8S19763C6[8]),  8,89},
  {&(_tg__ZTV9S19763C11__8S19763C6[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C11__A1__8S19763C6[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C11__A1__8S19763C6[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C11__A1__8S19763C6[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A1__8S19763C6[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C11__A1__8S19763C6[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C11__8S19763C6[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C11__8S19763C6[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C11__8S19763C6[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__8S19763C6[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__8S19763C6[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C11__8S19763C6[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C11__8S19763C6[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C11__8S19763C6[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C11__8S19763C6[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C11__8S19763C6[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C11__8S19763C6[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C11__8S19763C6[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C11__8S19763C6[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C11__8S19763C6[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C11__8S19763C6[6]),  6,8},
  {&(_ZTV8S19763C6[44]),  44,89},
  {&(_ZTV8S19763C6[52]),  52,89},
  {&(_ZTV8S19763C6[58]),  58,89},
  {&(_ZTV8S19763C6[64]),  64,89},
  {&(_ZTV8S19763C6[67]),  67,89},
  {&(_ZTV8S19763C6[29]),  29,89},
  {&(_ZTV8S19763C6[77]),  77,89},
  {&(_ZTV8S19763C6[83]),  83,89},
  {&(_ZTV8S19763C6[88]),  88,89},
  {&(_ZTV8S19763C6[39]),  39,89},
  {&(_tg__ZTV8S19763C7__8S19763C6[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C7__8S19763C6[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C7__8S19763C6[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C7__8S19763C6[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C7__8S19763C6[3]),  3,4},
  {&(_tg__ZTV8S19763C8__8S19763C6[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__8S19763C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19763C6[];
extern  VTBL_ENTRY _ZTV8S19763C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C6[];
static VTBL_ENTRY alt_thunk_names3[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S19763C11D0Ev,_ZThn15028_N9S19763C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S19763C11D1Ev,_ZThn15028_N9S19763C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S19763C12D0Ev,_ZThn14736_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S19763C12D1Ev,_ZThn14736_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N8S19763C6D0Ev,_ZThn17648_N8S19763C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N8S19763C6D1Ev,_ZThn17648_N8S19763C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C6 = {  "S19763C6", // class name
  bases_S19763C6, 18,
  &(vtc_S19763C6[0]), // expected_vtbl_contents
  &(vtt_S19763C6[0]), // expected_vtt_contents
  ABISELECT(31968,20268), // object size
  NSPAIRA(_ZTI8S19763C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19763C6),89, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19763C6),39, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names3,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C14  : virtual S19763C8 {
  ::S19763C12 s19763c14f0;
  __tsi64 s19763c14f1:6;
  int s19763c14f2;
  long s19763c14f3;
  ~S19763C14(); // tgen
  S19763C14(); // tgen
};
//SIG(-1 S19763C14) C1{ VBC2{ VBC3{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC3 FL:3} FC4{ VBC5{ v2 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} VBC6{ BC5 BC7{ v3 v4 v5 Fi[2] Fl[2] FC3[3]} BC3 vd v6 Fl FL Fp[8] FC8{ BC3 VBC7 VBC2 VBC5 FC5 Fs Fi[2]} Fp Fi FC8 Fi} VBC3 VBC2 FL:44 Fp Fi FC8 Fl[2] Fi[3] FC6 Fc:7 FC9{ BC5 vd v7 FC2 Fi Fp Fi}} FL:6 Fi Fl}


S19763C14 ::~S19763C14(){ note_dtor("S19763C14", this);} // tgen
S19763C14 ::S19763C14(){ note_ctor("S19763C14", this);} // tgen

static void Test_S19763C14()
{
  extern Class_Descriptor cd_S19763C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(719,1821)];
    init_test(&cd_S19763C14, buf);
    S19763C14 *dp, &lv = *(dp=new (buf) S19763C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11488,7280), "sizeof(S19763C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C14)");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(11336,7184), "S19763C14");
    check_base_class_offset(lv, (S19763C8*), ABISELECT(11168,7076), "S19763C14");
    check_field_offset(lv, s19763c14f0, ABISELECT(16,4), "S19763C14.s19763c14f0");
    set_bf_and_test(lv, s19763c14f1, ABISELECT(11152,7064), 0, 6, 1, "S19763C14");
    set_bf_and_test(lv, s19763c14f1, ABISELECT(11152,7064), 0, 6, hide_sll(1LL<<5), "S19763C14");
    check_field_offset(lv, s19763c14f2, ABISELECT(11156,7068), "S19763C14.s19763c14f2");
    check_field_offset(lv, s19763c14f3, ABISELECT(11160,7072), "S19763C14.s19763c14f3");
    test_class_info(&lv, &cd_S19763C14);
    dp->~S19763C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C14(Test_S19763C14, "S19763C14", ABISELECT(11488,7280));

#else // __cplusplus

extern void _ZN9S19763C14C1Ev();
extern void _ZN9S19763C14D1Ev();
Name_Map name_map_S19763C14[] = {
  NSPAIR(_ZN9S19763C14C1Ev),
  NSPAIR(_ZN9S19763C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
static Base_Class bases_S19763C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C5,    ABISELECT(11336,7184), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19763C8,    ABISELECT(11168,7076), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19763C14[];
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY vtc_S19763C14[] = {
  ABISELECT(11336,7184),
  ABISELECT(11168,7076),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C14[0]),
  ABISELECT(168,108),
  ABISELECT(-11168,-7076),
  (VTBL_ENTRY)&(_ZTI9S19763C14[0]),
  0,
  ABISELECT(-11336,-7184),
  (VTBL_ENTRY)&(_ZTI9S19763C14[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern VTBL_ENTRY _ZTV9S19763C14[];
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C14[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__9S19763C14[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTT_ENTRY vtt_S19763C14[] = {
  {&(_ZTV9S19763C14[4]),  4,11},
  {&(_ZTV9S19763C14[7]),  7,11},
  {&(_ZTV9S19763C14[10]),  10,11},
  {&(_tg__ZTV8S19763C8__9S19763C14[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__9S19763C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19763C14[];
extern  VTBL_ENTRY _ZTV9S19763C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C14[];
Class_Descriptor cd_S19763C14 = {  "S19763C14", // class name
  bases_S19763C14, 2,
  &(vtc_S19763C14[0]), // expected_vtbl_contents
  &(vtt_S19763C14[0]), // expected_vtt_contents
  ABISELECT(11488,7280), // object size
  NSPAIRA(_ZTI9S19763C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19763C14),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19763C14),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C15  : virtual S19763C9 , S19763C4 , virtual S19763C11 {
  char s19763c15f0:8;
  int s19763c15f1;
  ~S19763C15(); // tgen
  S19763C15(); // tgen
};
//SIG(-1 S19763C15) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC4{ v2 v3 v4 Fi[2] Fl[2] FC3[3]} VBC5{ VBC6{ BC2 BC4 BC3 vd v6 Fl FL Fp[8] FC7{ BC3 VBC4 VBC8{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC7 Fi} VBC3 VBC8 BC7 BC9{ VBC2 VBC6 VBC3 VBC8 FL:44 Fp Fi FC7 Fl[2] Fi[3] FC6 Fc:7 FC10{ BC2 vd v8 FC8 Fi Fp Fi}} v7 FC6 FL Fc:7} Fc:8 Fi}


S19763C15 ::~S19763C15(){ note_dtor("S19763C15", this);} // tgen
S19763C15 ::S19763C15(){ note_ctor("S19763C15", this);} // tgen

static void Test_S19763C15()
{
  extern Class_Descriptor cd_S19763C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1044,2653)];
    init_test(&cd_S19763C15, buf);
    S19763C15 *dp, &lv = *(dp=new (buf) S19763C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16688,10608), "sizeof(S19763C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C15)");
    /*is_ambiguous_... S19763C15::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*), ABISELECT(480,316), "S19763C15");
    check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*), ABISELECT(480,316), "S19763C15");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*), ABISELECT(480,316), "S19763C15");
    /*is_ambiguous_... S19763C15::S19763C4 */ AMB_check_base_class_offset(lv, (S19763C4*), 0, "S19763C15");
    check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(11792,7476), "S19763C15");
    check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(12088,7660), "S19763C15");
    check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(12552,7968), "S19763C15");
    check_base_class_offset(lv, (S19763C10*)(S19763C11*), ABISELECT(11792,7476), "S19763C15");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*), ABISELECT(11792,7476), "S19763C15");
    /*is_ambiguous_... S19763C11::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*), ABISELECT(15912,10096), "S19763C15");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(15912,10096), "S19763C15");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*), ABISELECT(15912,10096), "S19763C15");
    check_base_class_offset(lv, (S19763C8*)(S19763C11*), ABISELECT(16056,10192), "S19763C15");
    check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*), ABISELECT(16056,10192), "S19763C15");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*), ABISELECT(16056,10192), "S19763C15");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*), ABISELECT(784,500), "S19763C15");
    check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*), ABISELECT(16224,10300), "S19763C15");
    check_base_class_offset(lv, (S19763C7*)(S19763C11*), ABISELECT(784,500), "S19763C15");
    check_base_class_offset(lv, (S19763C12*)(S19763C11*), ABISELECT(1248,792), "S19763C15");
    check_base_class_offset(lv, (S19763C11*), ABISELECT(784,500), "S19763C15");
    set_bf_and_test(lv, s19763c15f0, ABISELECT(464,308), 0, 8, 1, "S19763C15");
    set_bf_and_test(lv, s19763c15f0, ABISELECT(464,308), 0, 8, hide_sll(1LL<<7), "S19763C15");
    check_field_offset(lv, s19763c15f1, ABISELECT(468,312), "S19763C15.s19763c15f1");
    test_class_info(&lv, &cd_S19763C15);
    dp->~S19763C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C15(Test_S19763C15, "S19763C15", ABISELECT(16688,10608));

#else // __cplusplus

extern void _ZN9S19763C15C1Ev();
extern void _ZN9S19763C15D1Ev();
Name_Map name_map_S19763C15[] = {
  NSPAIR(_ZN9S19763C15C1Ev),
  NSPAIR(_ZN9S19763C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
static Base_Class bases_S19763C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C9,    ABISELECT(480,316), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C9,    ABISELECT(11792,7476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(12088,7660), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(12552,7968), //bcp->offset
    57, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19763C10,    ABISELECT(11792,7476), //bcp->offset
    39, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(15912,10096), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19763C8,    ABISELECT(16056,10192), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(784,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(16224,10300), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19763C7,    ABISELECT(784,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19763C12,    ABISELECT(1248,792), //bcp->offset
    31, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19763C11,    ABISELECT(784,500), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19763C15[];
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN9S19763C15D1Ev();
extern void _ZN9S19763C15D0Ev();
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn784_N9S19763C15D1Ev,_ZThn500_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn784_N9S19763C15D0Ev,_ZThn500_N9S19763C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev)();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn11792_N9S19763C15D1Ev,_ZThn7476_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn11792_N9S19763C15D0Ev,_ZThn7476_N9S19763C15D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY vtc_S19763C15[] = {
  ABISELECT(16224,10300),
  ABISELECT(16056,10192),
  ABISELECT(15912,10096),
  ABISELECT(11792,7476),
  ABISELECT(784,500),
  ABISELECT(480,316),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D0Ev,
  0,
  ABISELECT(-480,-316),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(-784,-500),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-784,-500),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-1248,-792),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11792,-7476),
  0,
  ABISELECT(-11792,-7476),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-12088,-7660),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-12552,-7968),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(-15912,-10096),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-144,-96),
  ABISELECT(-16056,-10192),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  0,
  0,
  0,
  ABISELECT(-16224,-10300),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern VTBL_ENTRY _ZTV9S19763C15[];
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C15[] = {
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C11__9S19763C15[] = {
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C11__9S19763C15[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C11__9S19763C15[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C11__9S19763C15[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C11__9S19763C15[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C15[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C11__9S19763C15[] = {
  0,
  ABISELECT(768,476),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19763C12D1Ev,_ZThn6684_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19763C12D0Ev,_ZThn6684_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C11__9S19763C15[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__9S19763C15[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__9S19763C15[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C11__9S19763C15[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C11__9S19763C15[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn11008_N9S19763C11D1Ev,_ZThn6976_N9S19763C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void ABISELECT(_ZThn11008_N9S19763C11D0Ev,_ZThn6976_N9S19763C11D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C11__9S19763C15[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C11__9S19763C15[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C11__9S19763C15[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C11__9S19763C15[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C11__9S19763C15[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C11__9S19763C15[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C11__9S19763C15[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C11__9S19763C15[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C15[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__9S19763C15[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTT_ENTRY vtt_S19763C15[] = {
  {&(_ZTV9S19763C15[8]),  8,75},
  {&(_ZTV9S19763C15[16]),  16,75},
  {&(_ZTV9S19763C15[27]),  27,75},
  {&(_ZTV9S19763C15[48]),  48,75},
  {&(_ZTV9S19763C15[54]),  54,75},
  {&(_ZTV9S19763C15[59]),  59,75},
  {&(_ZTV9S19763C15[63]),  63,75},
  {&(_ZTV9S19763C15[67]),  67,75},
  {&(_ZTV9S19763C15[72]),  72,75},
  {&(_ZTV9S19763C15[37]),  37,75},
  {&(_tg__ZTV9S19763C11__9S19763C15[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C11__9S19763C15[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C11__9S19763C15[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C11__9S19763C15[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C11__9S19763C15[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C11__9S19763C15[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C15[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C11__9S19763C15[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C11__9S19763C15[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__9S19763C15[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__9S19763C15[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C11__9S19763C15[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C11__9S19763C15[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C11__9S19763C15[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C11__9S19763C15[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C11__9S19763C15[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C11__9S19763C15[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C11__9S19763C15[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C11__9S19763C15[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C11__9S19763C15[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C11__9S19763C15[6]),  6,8},
  {&(_tg__ZTV8S19763C8__9S19763C15[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__9S19763C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19763C15[];
extern  VTBL_ENTRY _ZTV9S19763C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C15[];
static VTBL_ENTRY alt_thunk_names4[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19763C11D0Ev,_ZThn6976_N9S19763C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19763C11D1Ev,_ZThn6976_N9S19763C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19763C12D0Ev,_ZThn6684_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19763C12D1Ev,_ZThn6684_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N9S19763C15D0Ev,_ZThn7476_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N9S19763C15D1Ev,_ZThn7476_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S19763C15D0Ev,_ZThn500_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S19763C15D1Ev,_ZThn500_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C15 = {  "S19763C15", // class name
  bases_S19763C15, 13,
  &(vtc_S19763C15[0]), // expected_vtbl_contents
  &(vtt_S19763C15[0]), // expected_vtt_contents
  ABISELECT(16688,10608), // object size
  NSPAIRA(_ZTI9S19763C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19763C15),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19763C15),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names4,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C16  : S19763C5 , virtual S19763C9 , virtual S19763C15 , S19763C7 , S19763C13 {
  int s19763c16f0;
  ::S19763C7 s19763c16f1;
  int s19763c16f2;
  short s19763c16f3;
  __tsi64 s19763c16f4:8;
  int s19763c16f5;
  virtual  ~S19763C16(); // _ZN9S19763C16D2Ev
  virtual void  v13(); // _ZN9S19763C163v13Ev
  S19763C16(); // tgen
};
//SIG(-1 S19763C16) C1{ BC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ v3 FL FD Fp Fc FC2 Fp[2] Fl[8] Fs Fp FL:64} VBC4{ VBC3 BC5{ v4 v5 v6 Fi[2] Fl[2] FC2[3]} VBC6{ VBC7{ BC3 BC5 BC2 vd v7 Fl FL Fp[8] FC8{ BC2 VBC5 VBC9{ VBC2 Fp FC2 FL:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC8 Fi} VBC2 VBC9 BC8 BC10{ VBC3 VBC7 VBC2 VBC9 FL:44 Fp Fi FC8 Fl[2] Fi[3] FC7 Fc:7 FC11{ BC3 vd v9 FC9 Fi Fp Fi}} v8 FC7 FL Fc:7} Fc:8 Fi} BC8 BC11 vd v1 Fi FC8 Fi Fs FL:8 Fi}


 S19763C16 ::~S19763C16(){ note_dtor("S19763C16", this);}
void  S19763C16 ::v13(){vfunc_called(this, "_ZN9S19763C163v13Ev");}
S19763C16 ::S19763C16(){ note_ctor("S19763C16", this);} // tgen

static void Test_S19763C16()
{
  extern Class_Descriptor cd_S19763C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1219,3101)];
    init_test(&cd_S19763C16, buf);
    S19763C16 *dp, &lv = *(dp=new (buf) S19763C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(19488,12400), "sizeof(S19763C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C16)");
    /*is_ambiguous_... S19763C16::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*), 0, "S19763C16");
    /*is_ambiguous_... S19763C16::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*), ABISELECT(2816,1792), "S19763C16");
    /*is_ambiguous_... S19763C15::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C15*), ABISELECT(2816,1792), "S19763C16");
    check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*), ABISELECT(2816,1792), "S19763C16");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*), ABISELECT(2816,1792), "S19763C16");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*), ABISELECT(2816,1792), "S19763C16");
    /*is_ambiguous_... S19763C15::S19763C4 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C15*), ABISELECT(3112,1976), "S19763C16");
    check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(14592,9268), "S19763C16");
    check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(14888,9452), "S19763C16");
    check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(15352,9760), "S19763C16");
    check_base_class_offset(lv, (S19763C10*)(S19763C11*), ABISELECT(14592,9268), "S19763C16");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*), ABISELECT(14592,9268), "S19763C16");
    /*is_ambiguous_... S19763C11::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*), ABISELECT(18712,11888), "S19763C16");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(18712,11888), "S19763C16");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*), ABISELECT(18712,11888), "S19763C16");
    check_base_class_offset(lv, (S19763C8*)(S19763C11*), ABISELECT(18856,11984), "S19763C16");
    check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*), ABISELECT(18856,11984), "S19763C16");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*), ABISELECT(18856,11984), "S19763C16");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*), ABISELECT(18856,11984), "S19763C16");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*), ABISELECT(3584,2292), "S19763C16");
    check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*), ABISELECT(19024,12092), "S19763C16");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*), ABISELECT(19024,12092), "S19763C16");
    check_base_class_offset(lv, (S19763C7*)(S19763C11*), ABISELECT(3584,2292), "S19763C16");
    check_base_class_offset(lv, (S19763C12*)(S19763C11*), ABISELECT(4048,2584), "S19763C16");
    check_base_class_offset(lv, (S19763C11*)(S19763C15*), ABISELECT(3584,2292), "S19763C16");
    check_base_class_offset(lv, (S19763C15*), ABISELECT(3112,1976), "S19763C16");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*), ABISELECT(144,96), "S19763C16");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*), ABISELECT(144,96), "S19763C16");
    check_base_class_offset(lv, (S19763C9*)(S19763C13*), ABISELECT(608,388), "S19763C16");
    check_base_class_offset(lv, (S19763C13*), ABISELECT(608,388), "S19763C16");
    check_field_offset(lv, s19763c16f0, ABISELECT(1236,788), "S19763C16.s19763c16f0");
    check_field_offset(lv, s19763c16f1, ABISELECT(1248,792), "S19763C16.s19763c16f1");
    check_field_offset(lv, s19763c16f2, ABISELECT(2800,1780), "S19763C16.s19763c16f2");
    check_field_offset(lv, s19763c16f3, ABISELECT(2804,1784), "S19763C16.s19763c16f3");
    set_bf_and_test(lv, s19763c16f4, ABISELECT(2806,1786), 0, 8, 1, "S19763C16");
    set_bf_and_test(lv, s19763c16f4, ABISELECT(2806,1786), 0, 8, hide_sll(1LL<<7), "S19763C16");
    check_field_offset(lv, s19763c16f5, ABISELECT(2808,1788), "S19763C16.s19763c16f5");
    test_class_info(&lv, &cd_S19763C16);
    dp->~S19763C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C16(Test_S19763C16, "S19763C16", ABISELECT(19488,12400));

#else // __cplusplus

extern void _ZN9S19763C16C1Ev();
extern void _ZN9S19763C16D2Ev();
Name_Map name_map_S19763C16[] = {
  NSPAIR(_ZN9S19763C16C1Ev),
  NSPAIR(_ZN9S19763C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
extern Class_Descriptor cd_S19763C15;
extern VTBL_ENTRY _ZTI9S19763C15[];
extern  VTBL_ENTRY _ZTV9S19763C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C15[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
static Base_Class bases_S19763C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C9,    ABISELECT(2816,1792), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C4,    ABISELECT(3112,1976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(14592,9268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(14888,9452), //bcp->offset
    82, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(15352,9760), //bcp->offset
    87, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19763C10,    ABISELECT(14592,9268), //bcp->offset
    69, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(18712,11888), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19763C8,    ABISELECT(18856,11984), //bcp->offset
    94, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(3584,2292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(19024,12092), //bcp->offset
    97, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19763C7,    ABISELECT(3584,2292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19763C12,    ABISELECT(4048,2584), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19763C11,    ABISELECT(3584,2292), //bcp->offset
    47, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19763C15,    ABISELECT(3112,1976), //bcp->offset
    30, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(144,96), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C9,    ABISELECT(608,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(608,388), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19763C16[];
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZThn608_N9S19763C16D1Ev,_ZThn388_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn608_N9S19763C16D0Ev,_ZThn388_N9S19763C16D0Ev)();
extern void _ZN9S19763C133v12Ev();
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn3112_N9S19763C16D1Ev,_ZThn1976_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn3112_N9S19763C16D0Ev,_ZThn1976_N9S19763C16D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn3584_N9S19763C16D1Ev,_ZThn2292_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn3584_N9S19763C16D0Ev,_ZThn2292_N9S19763C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn14592_N9S19763C16D1Ev,_ZThn9268_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn14592_N9S19763C16D0Ev,_ZThn9268_N9S19763C16D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY vtc_S19763C16[] = {
  ABISELECT(19024,12092),
  ABISELECT(18856,11984),
  ABISELECT(18712,11888),
  ABISELECT(14592,9268),
  ABISELECT(3584,2292),
  ABISELECT(3112,1976),
  ABISELECT(2816,1792),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  ABISELECT(2672,1696),
  ABISELECT(18568,11792),
  ABISELECT(18712,11888),
  ABISELECT(18880,11996),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S19763C16D1Ev,_ZThn388_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S19763C16D0Ev,_ZThn388_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  0,
  ABISELECT(-2816,-1792),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(-3112,-1976),
  0,
  0,
  0,
  ABISELECT(15912,10116),
  ABISELECT(15744,10008),
  ABISELECT(15600,9912),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  ABISELECT(-3112,-1976),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
  ABISELECT(-3584,-2292),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-3584,-2292),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-4048,-2584),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-14592,-9268),
  0,
  ABISELECT(-14592,-9268),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-14888,-9452),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-15352,-9760),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(-18712,-11888),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-144,-96),
  ABISELECT(-18856,-11984),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  0,
  0,
  0,
  ABISELECT(-19024,-12092),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern VTBL_ENTRY _ZTV9S19763C16[];
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C16[] = {
  ABISELECT(2672,1696),
  ABISELECT(18568,11792),
  ABISELECT(18712,11888),
  ABISELECT(18880,11996),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C7__A1__9S19763C16[] = {
  0,
  0,
  0,
  ABISELECT(-18880,-11996),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C7__A1__9S19763C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-18712,-11888),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C7__A1__9S19763C16[] = {
  0,
  ABISELECT(-18568,-11792),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C7__A1__9S19763C16[] = {
  0,
  ABISELECT(-2672,-1696),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN9S19763C15D1Ev();
extern void _ZN9S19763C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C16[] = {
  ABISELECT(15912,10116),
  ABISELECT(15744,10008),
  ABISELECT(15600,9912),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C15__9S19763C16[] = {
  0,
  ABISELECT(296,184),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C15__9S19763C16[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn11480_N9S19763C15D1Ev,_ZThn7292_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn11480_N9S19763C15D0Ev,_ZThn7292_N9S19763C15D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C15__9S19763C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11480,-7292),
  0,
  ABISELECT(-11480,-7292),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C15__9S19763C16[] = {
  ABISELECT(-11776,-7476),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C15__9S19763C16[] = {
  ABISELECT(-12240,-7784),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C15__9S19763C16[] = {
  0,
  ABISELECT(-15600,-9912),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C15__9S19763C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15744,-10008),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C15__9S19763C16[] = {
  0,
  0,
  0,
  ABISELECT(-15912,-10116),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C15__9S19763C16[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C16[] = {
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C11__9S19763C16[] = {
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C11__9S19763C16[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C11__9S19763C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C11__9S19763C16[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C11__9S19763C16[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C16[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C11__9S19763C16[] = {
  0,
  ABISELECT(1232,792),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19763C12D1Ev,_ZThn6684_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19763C12D0Ev,_ZThn6684_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C11__9S19763C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__9S19763C16[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__9S19763C16[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C11__9S19763C16[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C11__9S19763C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn11008_N9S19763C11D1Ev,_ZThn6976_N9S19763C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void ABISELECT(_ZThn11008_N9S19763C11D0Ev,_ZThn6976_N9S19763C11D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C11__9S19763C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C11__9S19763C16[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C11__9S19763C16[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C11__9S19763C16[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C11__9S19763C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C11__9S19763C16[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C11__9S19763C16[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C11__9S19763C16[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C16[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__9S19763C16[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTT_ENTRY vtt_S19763C16[] = {
  {&(_ZTV9S19763C16[9]),  9,105},
  {&(_tg__ZTV8S19763C7__A1__9S19763C16[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C7__A1__9S19763C16[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C7__A1__9S19763C16[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C7__A1__9S19763C16[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C7__A1__9S19763C16[3]),  3,4},
  {&(_ZTV9S19763C16[29]),  29,105},
  {&(_ZTV9S19763C16[42]),  42,105},
  {&(_ZTV9S19763C16[57]),  57,105},
  {&(_ZTV9S19763C16[78]),  78,105},
  {&(_ZTV9S19763C16[84]),  84,105},
  {&(_ZTV9S19763C16[89]),  89,105},
  {&(_ZTV9S19763C16[93]),  93,105},
  {&(_ZTV9S19763C16[97]),  97,105},
  {&(_ZTV9S19763C16[102]),  102,105},
  {&(_ZTV9S19763C16[67]),  67,105},
  {&(_ZTV9S19763C16[19]),  19,105},
  {&(_tg__ZTV9S19763C15__9S19763C16[8]),  8,13},
  {&(_tg__ZTV8S19763C9__9S19763C15__9S19763C16[3]),  3,4},
  {&(_tg__ZTV9S19763C11__9S19763C15__9S19763C16[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C15__9S19763C16[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C15__9S19763C16[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C15__9S19763C16[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C15__9S19763C16[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C15__9S19763C16[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C15__9S19763C16[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C15__9S19763C16[6]),  6,8},
  {&(_tg__ZTV9S19763C11__9S19763C16[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C11__9S19763C16[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C11__9S19763C16[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C11__9S19763C16[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C11__9S19763C16[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C11__9S19763C16[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C16[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C11__9S19763C16[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C11__9S19763C16[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__9S19763C16[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__9S19763C16[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C11__9S19763C16[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C11__9S19763C16[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C11__9S19763C16[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C11__9S19763C16[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C11__9S19763C16[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C11__9S19763C16[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C11__9S19763C16[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C11__9S19763C16[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C11__9S19763C16[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C11__9S19763C16[6]),  6,8},
  {&(_tg__ZTV8S19763C8__9S19763C16[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__9S19763C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
static VTBL_ENTRY alt_thunk_names5[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19763C11D0Ev,_ZThn6976_N9S19763C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19763C11D1Ev,_ZThn6976_N9S19763C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19763C12D0Ev,_ZThn6684_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19763C12D1Ev,_ZThn6684_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S19763C15D0Ev,_ZThn7292_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S19763C15D1Ev,_ZThn7292_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N9S19763C16D0Ev,_ZThn9268_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N9S19763C16D1Ev,_ZThn9268_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N9S19763C16D0Ev,_ZThn2292_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N9S19763C16D1Ev,_ZThn2292_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N9S19763C16D0Ev,_ZThn1976_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N9S19763C16D1Ev,_ZThn1976_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C16 = {  "S19763C16", // class name
  bases_S19763C16, 19,
  &(vtc_S19763C16[0]), // expected_vtbl_contents
  &(vtt_S19763C16[0]), // expected_vtt_contents
  ABISELECT(19488,12400), // object size
  NSPAIRA(_ZTI9S19763C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19763C16),105, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19763C16),50, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names5,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C3  : virtual S19763C4 , S19763C6 , S19763C14 , virtual S19763C15 , virtual S19763C16 {
  ::S19763C15 s19763c3f0;
  ::S19763C6 s19763c3f1;
  virtual void  v19(); // _ZN8S19763C33v19Ev
  ~S19763C3(); // tgen
  S19763C3(); // tgen
};
//SIG(-1 S19763C3) C1{ VBC2{ v2 v3 v4 Fi[2] Fl[2] FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]} BC4{ VBC3 VBC5{ BC3 VBC2 VBC6{ VBC3 Fp FC3 FL:3} VBC7{ v6 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} FC7 Fs Fi[2]} BC8{ BC7 BC2 BC3 vd v7 Fl FL Fp[8] FC5 Fp Fi FC5 Fi} BC9{ VBC8 VBC3 VBC6 BC5 BC10{ VBC7 VBC8 VBC3 VBC6 FL:44 Fp Fi FC5 Fl[2] Fi[3] FC8 Fc:7 FC11{ BC7 vd v11 FC6 Fi Fp Fi}} v8 FC8 FL Fc:7} v9 v10 FC10 Fs FL:8} BC12{ VBC6 FC10 FL:6 Fi Fl} VBC13{ VBC7 BC2 VBC9 Fc:8 Fi} VBC14{ BC3 VBC7 VBC13 BC5 BC11 vd v12 Fi FC5 Fi Fs FL:8 Fi} v1 FC13 FC4}


void  S19763C3 ::v19(){vfunc_called(this, "_ZN8S19763C33v19Ev");}
S19763C3 ::~S19763C3(){ note_dtor("S19763C3", this);} // tgen
S19763C3 ::S19763C3(){ note_ctor("S19763C3", this);} // tgen

static void Test_S19763C3()
{
  extern Class_Descriptor cd_S19763C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6631,16827)];
    init_test(&cd_S19763C3, buf);
    S19763C3 *dp, &lv = *(dp=new (buf) S19763C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(106080,67304), "sizeof(S19763C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C3)");
    /*is_ambiguous_... S19763C3::S19763C4 */ AMB_check_base_class_offset(lv, (S19763C4*), ABISELECT(86112,54612), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*), ABISELECT(86112,54612), "S19763C3");
    check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(86112,54612), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*), ABISELECT(86112,54612), "S19763C3");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C16*), ABISELECT(86112,54612), "S19763C3");
    /*is_ambiguous_... S19763C6::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C6*), ABISELECT(86576,54920), "S19763C3");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(86576,54920), "S19763C3");
    /*is_ambiguous_... S19763C11::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*)(S19763C6*), ABISELECT(86576,54920), "S19763C3");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(86576,54920), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*), ABISELECT(86576,54920), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*), ABISELECT(86576,54920), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*), ABISELECT(86720,55016), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*), ABISELECT(87184,55308), "S19763C3");
    check_base_class_offset(lv, (S19763C8*)(S19763C11*)(S19763C6*), ABISELECT(87184,55308), "S19763C3");
    check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(87184,55308), "S19763C3");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(87184,55308), "S19763C3");
    check_base_class_offset(lv, (S19763C8*)(S19763C14*), ABISELECT(87184,55308), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C11*), ABISELECT(87184,55308), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*), ABISELECT(87184,55308), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*), ABISELECT(87184,55308), "S19763C3");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C16*), ABISELECT(87184,55308), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*), ABISELECT(87360,55416), "S19763C3");
    check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(87360,55416), "S19763C3");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(87360,55416), "S19763C3");
    /*is_ambiguous_... S19763C15::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C15*), ABISELECT(87360,55416), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*), ABISELECT(87360,55416), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*), ABISELECT(87360,55416), "S19763C3");
    /*is_ambiguous_... S19763C16::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C16*), ABISELECT(87360,55416), "S19763C3");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C16*), ABISELECT(87360,55416), "S19763C3");
    /*is_ambiguous_... S19763C6::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C6*), ABISELECT(86720,55016), "S19763C3");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C10*)(S19763C6*), 0, "S19763C3");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C10*)(S19763C6*), ABISELECT(296,184), "S19763C3");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C10*)(S19763C6*), ABISELECT(760,492), "S19763C3");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C6*), 0, "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(87664,55600), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(87960,55784), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(88424,56092), "S19763C3");
    check_base_class_offset(lv, (S19763C10*)(S19763C11*)(S19763C6*), ABISELECT(87664,55600), "S19763C3");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(87664,55600), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C11*), ABISELECT(87664,55600), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*), ABISELECT(87664,55600), "S19763C3");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(4128,2620), "S19763C3");
    check_base_class_offset(lv, (S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(4128,2620), "S19763C3");
    check_base_class_offset(lv, (S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(4592,2912), "S19763C3");
    check_base_class_offset(lv, (S19763C11*)(S19763C6*), ABISELECT(4128,2620), "S19763C3");
    check_base_class_offset(lv, (S19763C6*), 0, "S19763C3");
    check_base_class_offset(lv, (S19763C14*), ABISELECT(26288,16660), "S19763C3");
    /*is_ambiguous_... S19763C15::S19763C4 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C15*), ABISELECT(91784,58220), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*), ABISELECT(92256,58536), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C11*), ABISELECT(92256,58536), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C12*)(S19763C11*), ABISELECT(92720,58828), "S19763C3");
    check_base_class_offset(lv, (S19763C11*)(S19763C15*), ABISELECT(92256,58536), "S19763C3");
    check_base_class_offset(lv, (S19763C15*), ABISELECT(91784,58220), "S19763C3");
    check_base_class_offset(lv, (S19763C15*)(S19763C16*), ABISELECT(91784,58220), "S19763C3");
    /*is_ambiguous_... S19763C16::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C16*), ABISELECT(103264,65512), "S19763C3");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C16*), ABISELECT(103408,65608), "S19763C3");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C16*), ABISELECT(103408,65608), "S19763C3");
    check_base_class_offset(lv, (S19763C9*)(S19763C13*)(S19763C16*), ABISELECT(103872,65900), "S19763C3");
    check_base_class_offset(lv, (S19763C13*)(S19763C16*), ABISELECT(103872,65900), "S19763C3");
    check_base_class_offset(lv, (S19763C16*), ABISELECT(103264,65512), "S19763C3");
    check_field_offset(lv, s19763c3f0, ABISELECT(37456,23736), "S19763C3.s19763c3f0");
    check_field_offset(lv, s19763c3f1, ABISELECT(54144,34344), "S19763C3.s19763c3f1");
    test_class_info(&lv, &cd_S19763C3);
    dp->~S19763C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C3(Test_S19763C3, "S19763C3", ABISELECT(106080,67304));

#else // __cplusplus

extern void _ZN8S19763C3C1Ev();
extern void _ZN8S19763C3D1Ev();
Name_Map name_map_S19763C3[] = {
  NSPAIR(_ZN8S19763C3C1Ev),
  NSPAIR(_ZN8S19763C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
extern Class_Descriptor cd_S19763C6;
extern VTBL_ENTRY _ZTI8S19763C6[];
extern  VTBL_ENTRY _ZTV8S19763C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C6[];
extern Class_Descriptor cd_S19763C14;
extern VTBL_ENTRY _ZTI9S19763C14[];
extern  VTBL_ENTRY _ZTV9S19763C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C14[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
extern Class_Descriptor cd_S19763C15;
extern VTBL_ENTRY _ZTI9S19763C15[];
extern  VTBL_ENTRY _ZTV9S19763C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C15[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C16;
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
static Base_Class bases_S19763C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C4,    ABISELECT(86112,54612), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    ABISELECT(86576,54920), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(86720,55016), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19763C8,    ABISELECT(87184,55308), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C9,    ABISELECT(87360,55416), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C7,    ABISELECT(86720,55016), //bcp->offset
    61, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19763C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(296,184), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(760,492), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19763C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(87664,55600), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(87960,55784), //bcp->offset
    89, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(88424,56092), //bcp->offset
    94, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19763C10,    ABISELECT(87664,55600), //bcp->offset
    76, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19763C12,    ABISELECT(4592,2912), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19763C11,    ABISELECT(4128,2620), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19763C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C14,    ABISELECT(26288,16660), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C4,    ABISELECT(91784,58220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(92256,58536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(92256,58536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19763C12,    ABISELECT(92720,58828), //bcp->offset
    128, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19763C11,    ABISELECT(92256,58536), //bcp->offset
    114, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19763C15,    ABISELECT(91784,58220), //bcp->offset
    97, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    ABISELECT(103264,65512), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(103408,65608), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(103408,65608), //bcp->offset
    154, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(103872,65900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(103872,65900), //bcp->offset
    161, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19763C16,    ABISELECT(103264,65512), //bcp->offset
    136, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19763C3[];
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C3D1Ev();
extern void _ZN8S19763C3D0Ev();
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C63v10Ev();
extern void _ZN8S19763C63v11Ev();
extern void _ZN8S19763C33v19Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZThn4128_N8S19763C3D1Ev,_ZThn2620_N8S19763C3D1Ev)();
extern void ABISELECT(_ZThn4128_N8S19763C3D0Ev,_ZThn2620_N8S19763C3D0Ev)();
extern void ABISELECT(_ZThn4592_N8S19763C3D1Ev,_ZThn2912_N8S19763C3D1Ev)();
extern void ABISELECT(_ZThn4592_N8S19763C3D0Ev,_ZThn2912_N8S19763C3D0Ev)();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19763C3D1Ev,_ZTv0_n16_N8S19763C3D1Ev)();
extern void ABISELECT(_ZThn87664_N8S19763C3D1Ev,_ZThn55600_N8S19763C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19763C3D0Ev,_ZTv0_n16_N8S19763C3D0Ev)();
extern void ABISELECT(_ZThn87664_N8S19763C3D0Ev,_ZThn55600_N8S19763C3D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N8S19763C3D1Ev,_ZTv0_n48_N8S19763C3D1Ev)();
extern void ABISELECT(_ZThn91784_N8S19763C3D1Ev,_ZThn58220_N8S19763C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19763C3D0Ev,_ZTv0_n48_N8S19763C3D0Ev)();
extern void ABISELECT(_ZThn91784_N8S19763C3D0Ev,_ZThn58220_N8S19763C3D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N8S19763C3D1Ev,_ZTv0_n40_N8S19763C3D1Ev)();
extern void ABISELECT(_ZThn92256_N8S19763C3D1Ev,_ZThn58536_N8S19763C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19763C3D0Ev,_ZTv0_n40_N8S19763C3D0Ev)();
extern void ABISELECT(_ZThn92256_N8S19763C3D0Ev,_ZThn58536_N8S19763C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S19763C3D1Ev,_ZTvn292_n40_N8S19763C3D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S19763C3D0Ev,_ZTvn292_n40_N8S19763C3D0Ev)();
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTv0_n88_N8S19763C3D1Ev,_ZTv0_n44_N8S19763C3D1Ev)();
extern void ABISELECT(_ZThn103264_N8S19763C3D1Ev,_ZThn65512_N8S19763C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19763C3D0Ev,_ZTv0_n44_N8S19763C3D0Ev)();
extern void ABISELECT(_ZThn103264_N8S19763C3D0Ev,_ZThn65512_N8S19763C3D0Ev)() __attribute__((weak));
extern void _ZN9S19763C163v13Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn608_n88_N8S19763C3D1Ev,_ZTvn388_n44_N8S19763C3D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N8S19763C3D0Ev,_ZTvn388_n44_N8S19763C3D0Ev)();
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY vtc_S19763C3[] = {
  ABISELECT(103264,65512),
  ABISELECT(92256,58536),
  ABISELECT(91784,58220),
  ABISELECT(87664,55600),
  ABISELECT(87360,55416),
  ABISELECT(87184,55308),
  ABISELECT(86112,54612),
  ABISELECT(86720,55016),
  ABISELECT(86576,54920),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN8S19763C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19763C3D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19763C33v19Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(83536,52980),
  ABISELECT(83232,52796),
  ABISELECT(82448,52300),
  ABISELECT(83056,52688),
  ABISELECT(81984,51992),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C3D1Ev,_ZThn2620_N8S19763C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C3D0Ev,_ZThn2620_N8S19763C3D0Ev),
  ABISELECT(82592,52396),
  ABISELECT(81984,52008),
  ABISELECT(83072,52688),
  ABISELECT(82768,52504),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C3D1Ev,_ZThn2912_N8S19763C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C3D0Ev,_ZThn2912_N8S19763C3D0Ev),
  ABISELECT(60288,38260),
  ABISELECT(60896,38648),
  ABISELECT(-26288,-16660),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  0,
  0,
  0,
  ABISELECT(-86112,-54612),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  0,
  ABISELECT(-86576,-54920),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(640,400),
  ABISELECT(-144,-96),
  ABISELECT(464,292),
  ABISELECT(-608,-404),
  ABISELECT(-86720,-55016),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-608,-388),
  ABISELECT(-87184,-55308),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  0,
  ABISELECT(-87360,-55416),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-87664,-55600),
  0,
  ABISELECT(-87664,-55600),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C3D1Ev,_ZTv0_n16_N8S19763C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C3D0Ev,_ZTv0_n16_N8S19763C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-87960,-55784),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-88424,-56092),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-91784,-58220),
  0,
  0,
  0,
  ABISELECT(-5672,-3608),
  ABISELECT(-4600,-2912),
  ABISELECT(-5208,-3300),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  ABISELECT(-91784,-58220),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19763C3D1Ev,_ZTv0_n48_N8S19763C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19763C3D0Ev,_ZTv0_n48_N8S19763C3D0Ev),
  ABISELECT(-92256,-58536),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  ABISELECT(-92256,-58536),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19763C3D1Ev,_ZTv0_n40_N8S19763C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19763C3D0Ev,_ZTv0_n40_N8S19763C3D0Ev),
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-92720,-58828),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19763C3D1Ev,_ZTvn292_n40_N8S19763C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19763C3D0Ev,_ZTvn292_n40_N8S19763C3D0Ev),
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-103264,-65512),
  0,
  ABISELECT(-17152,-10900),
  ABISELECT(-16080,-10204),
  ABISELECT(-16688,-10592),
  ABISELECT(-15600,-9912),
  ABISELECT(-11008,-6976),
  ABISELECT(-11480,-7292),
  ABISELECT(-15904,-10096),
  ABISELECT(-103264,-65512),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19763C3D1Ev,_ZTv0_n44_N8S19763C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19763C3D0Ev,_ZTv0_n44_N8S19763C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  ABISELECT(-16048,-10192),
  ABISELECT(-16832,-10688),
  ABISELECT(-16224,-10300),
  ABISELECT(-17296,-10996),
  ABISELECT(-103408,-65608),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-103872,-65900),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S19763C3D1Ev,_ZTvn388_n44_N8S19763C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S19763C3D0Ev,_ZTvn388_n44_N8S19763C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern VTBL_ENTRY _ZTV8S19763C3[];
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C6D1Ev();
extern void _ZN8S19763C6D0Ev();
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C63v10Ev();
extern void _ZN8S19763C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C6__8S19763C3[] = {
  ABISELECT(87664,55600),
  ABISELECT(87360,55416),
  ABISELECT(87184,55308),
  ABISELECT(86112,54612),
  ABISELECT(86720,55016),
  ABISELECT(86576,54920),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN8S19763C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19763C6D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v11Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(83536,52980),
  ABISELECT(83232,52796),
  ABISELECT(82448,52300),
  ABISELECT(83056,52688),
  ABISELECT(81984,51992),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C118S19763C6__A1__8S19763C3[] = {
  ABISELECT(83232,52796),
  ABISELECT(82448,52300),
  ABISELECT(83056,52688),
  ABISELECT(81984,51992),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C118S19763C6__A1__8S19763C3[] = {
  0,
  0,
  0,
  ABISELECT(-81984,-51992),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C118S19763C6__A1__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(-83056,-52688),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C118S19763C6__A1__8S19763C3[] = {
  0,
  ABISELECT(-82448,-52300),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C118S19763C6__A1__8S19763C3[] = {
  0,
  ABISELECT(-83232,-52796),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(82592,52396),
  ABISELECT(81984,52008),
  ABISELECT(83072,52688),
  ABISELECT(82768,52504),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C118S19763C6__8S19763C3[] = {
  0,
  ABISELECT(-82768,-52504),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn83072_N9S19763C12D1Ev,_ZThn52688_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn83072_N9S19763C12D0Ev,_ZThn52688_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-83072,-52688),
  0,
  ABISELECT(-83072,-52688),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(-83368,-52872),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(-83832,-53180),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C118S19763C6__8S19763C3[] = {
  0,
  ABISELECT(-81984,-52008),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(-82592,-52396),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn83536_N9S19763C11D1Ev,_ZThn52980_N9S19763C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void ABISELECT(_ZThn83536_N9S19763C11D0Ev,_ZThn52980_N9S19763C11D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-83536,-52980),
  0,
  ABISELECT(-83536,-52980),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(-83832,-53164),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(-84296,-53472),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C118S19763C6__8S19763C3[] = {
  0,
  ABISELECT(-82448,-52300),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(-83056,-52688),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C118S19763C6__8S19763C3[] = {
  0,
  0,
  0,
  ABISELECT(-81984,-51992),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C118S19763C6__8S19763C3[] = {
  0,
  ABISELECT(-83232,-52796),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(82592,52396),
  ABISELECT(81984,52008),
  ABISELECT(83072,52688),
  ABISELECT(82768,52504),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C6__8S19763C3[] = {
  0,
  ABISELECT(-86576,-54920),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__8S19763C6__8S19763C3[] = {
  0,
  ABISELECT(640,400),
  ABISELECT(-144,-96),
  ABISELECT(464,292),
  ABISELECT(-608,-404),
  ABISELECT(-86720,-55016),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C6__8S19763C3[] = {
  0,
  0,
  0,
  ABISELECT(-86112,-54612),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C6__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(-87184,-55308),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C6__8S19763C3[] = {
  0,
  ABISELECT(-87360,-55416),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZThn4128_N8S19763C6D1Ev,_ZThn2620_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn4128_N8S19763C6D0Ev,_ZThn2620_N8S19763C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C11__8S19763C6__8S19763C3[] = {
  ABISELECT(83536,52980),
  ABISELECT(83232,52796),
  ABISELECT(82448,52300),
  ABISELECT(83056,52688),
  ABISELECT(81984,51992),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C6D1Ev,_ZThn2620_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C6D0Ev,_ZThn2620_N8S19763C6D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn87664_N8S19763C6D1Ev,_ZThn55600_N8S19763C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev)();
extern void ABISELECT(_ZThn87664_N8S19763C6D0Ev,_ZThn55600_N8S19763C6D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__A1__8S19763C6__8S19763C3[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-87664,-55600),
  0,
  ABISELECT(-87664,-55600),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A2__8S19763C6__8S19763C3[] = {
  ABISELECT(-87960,-55784),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A3__8S19763C6__8S19763C3[] = {
  ABISELECT(-88424,-56092),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S19763C6D1Ev,_ZThn2912_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn4592_N8S19763C6D0Ev,_ZThn2912_N8S19763C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__8S19763C6__8S19763C3[] = {
  ABISELECT(82592,52396),
  ABISELECT(81984,52008),
  ABISELECT(83072,52688),
  ABISELECT(82768,52504),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C6D1Ev,_ZThn2912_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C6D0Ev,_ZThn2912_N8S19763C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19763C14__8S19763C3[] = {
  ABISELECT(60288,38260),
  ABISELECT(60896,38648),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C14__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(-60896,-38648),
  (VTBL_ENTRY)&(_ZTI9S19763C14[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__9S19763C14__8S19763C3[] = {
  0,
  ABISELECT(-60288,-38260),
  (VTBL_ENTRY)&(_ZTI9S19763C14[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__8S19763C3[] = {
  ABISELECT(640,400),
  ABISELECT(-144,-96),
  ABISELECT(464,292),
  ABISELECT(-608,-404),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C7__8S19763C3[] = {
  0,
  0,
  0,
  ABISELECT(608,404),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C7__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C7__8S19763C3[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C7__8S19763C3[] = {
  0,
  ABISELECT(-640,-400),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C3[] = {
  ABISELECT(-608,-388),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__8S19763C3[] = {
  0,
  ABISELECT(608,388),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN9S19763C15D1Ev();
extern void _ZN9S19763C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C15__8S19763C3[] = {
  ABISELECT(-5672,-3608),
  ABISELECT(-4600,-2912),
  ABISELECT(-5208,-3300),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C15__8S19763C3[] = {
  0,
  ABISELECT(4424,2804),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C15__8S19763C3[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C15__8S19763C3[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4120,2620),
  0,
  ABISELECT(4120,2620),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C15__8S19763C3[] = {
  ABISELECT(3824,2436),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C15__8S19763C3[] = {
  ABISELECT(3360,2128),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C15__8S19763C3[] = {
  0,
  ABISELECT(5208,3300),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C15__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(4600,2912),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C15__8S19763C3[] = {
  0,
  0,
  0,
  ABISELECT(5672,3608),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C15__8S19763C3[] = {
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C11__A1__8S19763C3[] = {
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C11__A2__8S19763C3[] = {
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C11__A2__8S19763C3[] = {
  0,
  0,
  0,
  ABISELECT(6144,3924),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C11__A2__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(5072,3228),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A2__8S19763C3[] = {
  0,
  ABISELECT(5680,3616),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C11__A2__8S19763C3[] = {
  0,
  ABISELECT(4896,3120),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__A1__8S19763C3[] = {
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C11__A1__8S19763C3[] = {
  0,
  ABISELECT(5360,3412),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C11__A1__8S19763C3[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(5056,3228),
  0,
  ABISELECT(5056,3228),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__A1__8S19763C3[] = {
  ABISELECT(4760,3044),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__A1__8S19763C3[] = {
  ABISELECT(4296,2736),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C11__A1__8S19763C3[] = {
  0,
  ABISELECT(6144,3908),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C11__A1__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(5536,3520),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C11__A1__8S19763C3[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4592,2936),
  0,
  ABISELECT(4592,2936),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C11__A1__8S19763C3[] = {
  ABISELECT(4296,2752),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C11__A1__8S19763C3[] = {
  ABISELECT(3832,2444),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C11__A1__8S19763C3[] = {
  0,
  ABISELECT(5680,3616),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C11__A1__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(5072,3228),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C11__A1__8S19763C3[] = {
  0,
  0,
  0,
  ABISELECT(6144,3924),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C11__A1__8S19763C3[] = {
  0,
  ABISELECT(4896,3120),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C11__A1__8S19763C3[] = {
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C16__8S19763C3[] = {
  ABISELECT(-17152,-10900),
  ABISELECT(-16080,-10204),
  ABISELECT(-16688,-10592),
  ABISELECT(-15600,-9912),
  ABISELECT(-11008,-6976),
  ABISELECT(-11480,-7292),
  ABISELECT(-15904,-10096),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C16__A3__8S19763C3[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-16832,-10688),
  ABISELECT(-16224,-10300),
  ABISELECT(-17296,-10996),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C16__A3__8S19763C3[] = {
  0,
  0,
  0,
  ABISELECT(17296,10996),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C16__A3__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(16224,10300),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C16__A3__8S19763C3[] = {
  0,
  ABISELECT(16832,10688),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C16__A3__8S19763C3[] = {
  0,
  ABISELECT(16048,10192),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C16__8S19763C3[] = {
  0,
  ABISELECT(15904,10096),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C16__8S19763C3[] = {
  ABISELECT(11480,7292),
  0,
  0,
  0,
  ABISELECT(-5672,-3608),
  ABISELECT(-4600,-2912),
  ABISELECT(-5208,-3300),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  ABISELECT(11480,7292),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C16__8S19763C3[] = {
  ABISELECT(11008,6976),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  ABISELECT(11008,6976),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C16__8S19763C3[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(15600,9912),
  0,
  ABISELECT(15600,9912),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C16__8S19763C3[] = {
  ABISELECT(15304,9728),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C16__8S19763C3[] = {
  ABISELECT(14840,9420),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A2__9S19763C16__8S19763C3[] = {
  0,
  ABISELECT(16688,10592),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C16__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(16080,10204),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C16__8S19763C3[] = {
  0,
  0,
  0,
  ABISELECT(17152,10900),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C16__8S19763C3[] = {
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(10544,6684),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C16__8S19763C3[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-16832,-10688),
  ABISELECT(-16224,-10300),
  ABISELECT(-17296,-10996),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTT_ENTRY vtt_S19763C3[] = {
  {&(_ZTV8S19763C3[11]),  11,167},
  {&(_tg__ZTV8S19763C6__8S19763C3[8]),  8,14},
  {&(_tg__ZTV9S19763C118S19763C6__8S19763C3[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C118S19763C6__A1__8S19763C3[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C118S19763C6__A1__8S19763C3[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C118S19763C6__A1__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C118S19763C6__A1__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C118S19763C6__A1__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C118S19763C6__8S19763C3[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C118S19763C6__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C118S19763C6__8S19763C3[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C118S19763C6__8S19763C3[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C118S19763C6__8S19763C3[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C118S19763C6__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C118S19763C6__8S19763C3[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C118S19763C6__8S19763C3[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C118S19763C6__8S19763C3[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C118S19763C6__8S19763C3[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C118S19763C6__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C118S19763C6__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C118S19763C6__8S19763C3[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C118S19763C6__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C118S19763C6__8S19763C3[6]),  6,8},
  {&(_tg__ZTV8S19763C5__8S19763C6__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C7__8S19763C6__8S19763C3[7]),  7,8},
  {&(_tg__ZTV8S19763C4__8S19763C6__8S19763C3[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C6__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C9__8S19763C6__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C11__8S19763C6__8S19763C3[7]),  7,11},
  {&(_tg__ZTV9S19763C10__A1__8S19763C6__8S19763C3[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A2__8S19763C6__8S19763C3[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A3__8S19763C6__8S19763C3[2]),  2,3},
  {&(_tg__ZTV9S19763C129S19763C11__8S19763C6__8S19763C3[6]),  6,8},
  {&(_tg__ZTV9S19763C14__8S19763C3[4]),  4,4},
  {&(_tg__ZTV8S19763C8__9S19763C14__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C5__9S19763C14__8S19763C3[3]),  3,4},
  {&(_ZTV8S19763C3[54]),  54,167},
  {&(_ZTV8S19763C3[60]),  60,167},
  {&(_ZTV8S19763C3[68]),  68,167},
  {&(_ZTV8S19763C3[72]),  72,167},
  {&(_ZTV8S19763C3[75]),  75,167},
  {&(_ZTV8S19763C3[33]),  33,167},
  {&(_ZTV8S19763C3[85]),  85,167},
  {&(_ZTV8S19763C3[91]),  91,167},
  {&(_ZTV8S19763C3[96]),  96,167},
  {&(_ZTV8S19763C3[43]),  43,167},
  {&(_ZTV8S19763C3[49]),  49,167},
  {&(_ZTV8S19763C3[109]),  109,167},
  {&(_ZTV8S19763C3[124]),  124,167},
  {&(_ZTV8S19763C3[134]),  134,167},
  {&(_ZTV8S19763C3[150]),  150,167},
  {&(_ZTV8S19763C3[160]),  160,167},
  {&(_ZTV8S19763C3[163]),  163,167},
  {&(_tg__ZTV8S19763C7__8S19763C3[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C7__8S19763C3[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C7__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C7__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C7__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C8__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C15__8S19763C3[8]),  8,13},
  {&(_tg__ZTV8S19763C9__9S19763C15__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C11__9S19763C15__8S19763C3[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C15__8S19763C3[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C15__8S19763C3[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C15__8S19763C3[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C15__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C15__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C15__8S19763C3[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C15__8S19763C3[6]),  6,8},
  {&(_tg__ZTV9S19763C11__A1__8S19763C3[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C11__A2__8S19763C3[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C11__A2__8S19763C3[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C11__A2__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A2__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C11__A2__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C11__A1__8S19763C3[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C11__A1__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C11__A1__8S19763C3[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__A1__8S19763C3[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__A1__8S19763C3[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C11__A1__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C11__A1__8S19763C3[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C11__A1__8S19763C3[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C11__A1__8S19763C3[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C11__A1__8S19763C3[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C11__A1__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C11__A1__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C11__A1__8S19763C3[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C11__A1__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C11__A1__8S19763C3[6]),  6,8},
  {&(_tg__ZTV9S19763C16__8S19763C3[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C16__A3__8S19763C3[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C16__A3__8S19763C3[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C16__A3__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C16__A3__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C16__A3__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C16__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C16__8S19763C3[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C16__8S19763C3[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C16__8S19763C3[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C16__8S19763C3[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C16__8S19763C3[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A2__9S19763C16__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C16__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C16__8S19763C3[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C16__8S19763C3[6]),  6,8},
  {&(_tg__ZTV8S19763C7__A1__9S19763C16__8S19763C3[6]),  6,7},
};
extern VTBL_ENTRY _ZTI8S19763C3[];
extern  VTBL_ENTRY _ZTV8S19763C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C3[];
static VTBL_ENTRY alt_thunk_names6[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N8S19763C6D0Ev,_ZThn55600_N8S19763C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N8S19763C6D1Ev,_ZThn55600_N8S19763C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83536_N9S19763C11D0Ev,_ZThn52980_N9S19763C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83536_N9S19763C11D1Ev,_ZThn52980_N9S19763C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83072_N9S19763C12D0Ev,_ZThn52688_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83072_N9S19763C12D1Ev,_ZThn52688_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19763C3D0Ev,_ZTv0_n44_N8S19763C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn103264_N8S19763C3D0Ev,_ZThn65512_N8S19763C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19763C3D1Ev,_ZTv0_n44_N8S19763C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn103264_N8S19763C3D1Ev,_ZThn65512_N8S19763C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19763C3D0Ev,_ZTv0_n40_N8S19763C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn92256_N8S19763C3D0Ev,_ZThn58536_N8S19763C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19763C3D1Ev,_ZTv0_n40_N8S19763C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn92256_N8S19763C3D1Ev,_ZThn58536_N8S19763C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19763C3D0Ev,_ZTv0_n48_N8S19763C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn91784_N8S19763C3D0Ev,_ZThn58220_N8S19763C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19763C3D1Ev,_ZTv0_n48_N8S19763C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn91784_N8S19763C3D1Ev,_ZThn58220_N8S19763C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C3D0Ev,_ZTv0_n16_N8S19763C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N8S19763C3D0Ev,_ZThn55600_N8S19763C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C3D1Ev,_ZTv0_n16_N8S19763C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N8S19763C3D1Ev,_ZThn55600_N8S19763C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C3 = {  "S19763C3", // class name
  bases_S19763C3, 32,
  &(vtc_S19763C3[0]), // expected_vtbl_contents
  &(vtt_S19763C3[0]), // expected_vtt_contents
  ABISELECT(106080,67304), // object size
  NSPAIRA(_ZTI8S19763C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19763C3),167, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19763C3),108, //virtual table table var
  32, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names6,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C2  {
  void *s19763c2f0;
  int s19763c2f1[2];
  short s19763c2f2;
  char s19763c2f3;
  int s19763c2f4;
  ::S19763C3 s19763c2f5;
  int s19763c2f6;
  void  mf19763c2(); // _ZN8S19763C29mf19763c2Ev
};
//SIG(-1 S19763C2) C1{ m Fp Fi[2] Fs Fc Fi FC2{ VBC3{ v2 v3 v4 Fi[2] Fl[2] FC4{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]} BC5{ VBC4 VBC6{ BC4 VBC3 VBC7{ VBC4 Fp FC4 FL:3} VBC8{ v6 FL FD Fp Fc FC4 Fp[2] Fl[8] Fs Fp FL:64} FC8 Fs Fi[2]} BC9{ BC8 BC3 BC4 vd v7 Fl FL Fp[8] FC6 Fp Fi FC6 Fi} BC10{ VBC9 VBC4 VBC7 BC6 BC11{ VBC8 VBC9 VBC4 VBC7 FL:44 Fp Fi FC6 Fl[2] Fi[3] FC9 Fc:7 FC12{ BC8 vd v11 FC7 Fi Fp Fi}} v8 FC9 FL Fc:7} v9 v10 FC11 Fs FL:8} BC13{ VBC7 FC11 FL:6 Fi Fl} VBC14{ VBC8 BC3 VBC10 Fc:8 Fi} VBC15{ BC4 VBC8 VBC14 BC6 BC12 vd v12 Fi FC6 Fi Fs FL:8 Fi} v1 FC14 FC5} Fi}


void  S19763C2 ::mf19763c2(){}

static void Test_S19763C2()
{
  {
    init_simple_test("S19763C2");
    static S19763C2 lv;
    check2(sizeof(lv), ABISELECT(106128,67328), "sizeof(S19763C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C2)");
    check_field_offset(lv, s19763c2f0, 0, "S19763C2.s19763c2f0");
    check_field_offset(lv, s19763c2f1, ABISELECT(8,4), "S19763C2.s19763c2f1");
    check_field_offset(lv, s19763c2f2, ABISELECT(16,12), "S19763C2.s19763c2f2");
    check_field_offset(lv, s19763c2f3, ABISELECT(18,14), "S19763C2.s19763c2f3");
    check_field_offset(lv, s19763c2f4, ABISELECT(20,16), "S19763C2.s19763c2f4");
    check_field_offset(lv, s19763c2f5, ABISELECT(32,20), "S19763C2.s19763c2f5");
    check_field_offset(lv, s19763c2f6, ABISELECT(106112,67324), "S19763C2.s19763c2f6");
  }
}
static Arrange_To_Call_Me vS19763C2(Test_S19763C2, "S19763C2", ABISELECT(106128,67328));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S19763C2[];
VTBL_ENTRY *P__ZTI8S19763C2 = _ZTI8S19763C2; 
Class_Descriptor cd_S19763C2 = {  "S19763C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(106128,67328), // object size
  NSPAIRA(_ZTI8S19763C2),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C18_nt  {
};
//SIG(-1 S19763C18_nt) C1{}



//skip512 S19763C18_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI12S19763C18_nt[];
VTBL_ENTRY *P__ZTI12S19763C18_nt = _ZTI12S19763C18_nt; 
Class_Descriptor cd_S19763C18_nt = {  "S19763C18_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI12S19763C18_nt),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C19  : S19763C7 , virtual S19763C15 , S19763C16 {
  ::S19763C15 s19763c19f0;
  int s19763c19f1[2];
  char s19763c19f2;
  int s19763c19f3;
  __tsi64 s19763c19f4;
  int s19763c19f5[2];
  void *s19763c19f6[2];
  int s19763c19f7[2];
  virtual void  v14(); // _ZN9S19763C193v14Ev
  virtual void  v15(); // _ZN9S19763C193v15Ev
  ~S19763C19(); // tgen
  S19763C19(); // tgen
};
//SIG(-1 S19763C19) C1{ BC2{ BC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC4{ v4 v5 v6 Fi[2] Fl[2] FC3[3]} VBC5{ VBC3 Fp FC3 FL:3} VBC6{ v7 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} FC6 Fs Fi[2]} VBC7{ VBC6 BC4 VBC8{ VBC9{ BC6 BC4 BC3 vd v8 Fl FL Fp[8] FC2 Fp Fi FC2 Fi} VBC3 VBC5 BC2 BC10{ VBC6 VBC9 VBC3 VBC5 FL:44 Fp Fi FC2 Fl[2] Fi[3] FC9 Fc:7 FC11{ BC6 vd v10 FC5 Fi Fp Fi}} v9 FC9 FL Fc:7} Fc:8 Fi} BC12{ BC3 VBC6 VBC7 BC2 BC11 vd v11 Fi FC2 Fi Fs FL:8 Fi} v1 v2 FC7 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]}


void  S19763C19 ::v14(){vfunc_called(this, "_ZN9S19763C193v14Ev");}
void  S19763C19 ::v15(){vfunc_called(this, "_ZN9S19763C193v15Ev");}
S19763C19 ::~S19763C19(){ note_dtor("S19763C19", this);} // tgen
S19763C19 ::S19763C19(){ note_ctor("S19763C19", this);} // tgen

static void Test_S19763C19()
{
  extern Class_Descriptor cd_S19763C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2295,5838)];
    init_test(&cd_S19763C19, buf);
    S19763C19 *dp, &lv = *(dp=new (buf) S19763C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(36704,23348), "sizeof(S19763C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C19)");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*), 0, "S19763C19");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*), ABISELECT(20024,12740), "S19763C19");
    check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*), ABISELECT(20024,12740), "S19763C19");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C16*), ABISELECT(20024,12740), "S19763C19");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(20656,13156), "S19763C19");
    /*is_ambiguous_... S19763C11::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*), ABISELECT(20656,13156), "S19763C19");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*), ABISELECT(20656,13156), "S19763C19");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*), ABISELECT(20488,13048), "S19763C19");
    check_base_class_offset(lv, (S19763C8*)(S19763C11*), ABISELECT(20488,13048), "S19763C19");
    check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*), ABISELECT(20488,13048), "S19763C19");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*), ABISELECT(20488,13048), "S19763C19");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C16*), ABISELECT(20488,13048), "S19763C19");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*), ABISELECT(20800,13252), "S19763C19");
    /*is_ambiguous_... S19763C15::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C15*), ABISELECT(20800,13252), "S19763C19");
    check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*), ABISELECT(20800,13252), "S19763C19");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*), ABISELECT(20800,13252), "S19763C19");
    /*is_ambiguous_... S19763C16::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C16*), ABISELECT(20800,13252), "S19763C19");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C16*), ABISELECT(20800,13252), "S19763C19");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*), 0, "S19763C19");
    /*is_ambiguous_... S19763C15::S19763C4 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C15*), ABISELECT(21096,13436), "S19763C19");
    check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(32576,20728), "S19763C19");
    check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(32872,20912), "S19763C19");
    check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(33336,21220), "S19763C19");
    check_base_class_offset(lv, (S19763C10*)(S19763C11*), ABISELECT(32576,20728), "S19763C19");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*), ABISELECT(32576,20728), "S19763C19");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*), ABISELECT(21568,13752), "S19763C19");
    check_base_class_offset(lv, (S19763C7*)(S19763C11*), ABISELECT(21568,13752), "S19763C19");
    check_base_class_offset(lv, (S19763C12*)(S19763C11*), ABISELECT(22032,14044), "S19763C19");
    check_base_class_offset(lv, (S19763C11*)(S19763C15*), ABISELECT(21568,13752), "S19763C19");
    check_base_class_offset(lv, (S19763C15*), ABISELECT(21096,13436), "S19763C19");
    check_base_class_offset(lv, (S19763C15*)(S19763C16*), ABISELECT(21096,13436), "S19763C19");
    /*is_ambiguous_... S19763C16::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C16*), ABISELECT(464,292), "S19763C19");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C16*), ABISELECT(608,388), "S19763C19");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C16*), ABISELECT(608,388), "S19763C19");
    check_base_class_offset(lv, (S19763C9*)(S19763C13*)(S19763C16*), ABISELECT(1072,680), "S19763C19");
    check_base_class_offset(lv, (S19763C13*)(S19763C16*), ABISELECT(1072,680), "S19763C19");
    check_base_class_offset(lv, (S19763C16*), ABISELECT(464,292), "S19763C19");
    check_field_offset(lv, s19763c19f0, ABISELECT(3280,2084), "S19763C19.s19763c19f0");
    check_field_offset(lv, s19763c19f1, ABISELECT(19968,12692), "S19763C19.s19763c19f1");
    check_field_offset(lv, s19763c19f2, ABISELECT(19976,12700), "S19763C19.s19763c19f2");
    check_field_offset(lv, s19763c19f3, ABISELECT(19980,12704), "S19763C19.s19763c19f3");
    check_field_offset(lv, s19763c19f4, ABISELECT(19984,12708), "S19763C19.s19763c19f4");
    check_field_offset(lv, s19763c19f5, ABISELECT(19992,12716), "S19763C19.s19763c19f5");
    check_field_offset(lv, s19763c19f6, ABISELECT(20000,12724), "S19763C19.s19763c19f6");
    check_field_offset(lv, s19763c19f7, ABISELECT(20016,12732), "S19763C19.s19763c19f7");
    test_class_info(&lv, &cd_S19763C19);
    dp->~S19763C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C19(Test_S19763C19, "S19763C19", ABISELECT(36704,23348));

#else // __cplusplus

extern void _ZN9S19763C19C1Ev();
extern void _ZN9S19763C19D1Ev();
Name_Map name_map_S19763C19[] = {
  NSPAIR(_ZN9S19763C19C1Ev),
  NSPAIR(_ZN9S19763C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
extern Class_Descriptor cd_S19763C15;
extern VTBL_ENTRY _ZTI9S19763C15[];
extern  VTBL_ENTRY _ZTV9S19763C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C15[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C16;
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
static Base_Class bases_S19763C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(20024,12740), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(20656,13156), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19763C8,    ABISELECT(20488,13048), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C9,    ABISELECT(20800,13252), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C4,    ABISELECT(21096,13436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(32576,20728), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(32872,20912), //bcp->offset
    111, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(33336,21220), //bcp->offset
    116, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19763C10,    ABISELECT(32576,20728), //bcp->offset
    98, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(21568,13752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(21568,13752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19763C12,    ABISELECT(22032,14044), //bcp->offset
    90, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19763C11,    ABISELECT(21568,13752), //bcp->offset
    76, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19763C15,    ABISELECT(21096,13436), //bcp->offset
    59, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    ABISELECT(464,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(608,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(608,388), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(1072,680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(1072,680), //bcp->offset
    34, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19763C16,    ABISELECT(464,292), //bcp->offset
    14, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19763C19[];
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void _ZN9S19763C19D1Ev();
extern void _ZN9S19763C19D0Ev();
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZThn464_N9S19763C19D1Ev,_ZThn292_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C19D0Ev,_ZThn292_N9S19763C19D0Ev)();
extern void _ZN9S19763C163v13Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZThn1072_N9S19763C19D1Ev,_ZThn680_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn1072_N9S19763C19D0Ev,_ZThn680_N9S19763C19D0Ev)();
extern void _ZN9S19763C133v12Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn21096_N9S19763C19D1Ev,_ZThn13436_N9S19763C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev)();
extern void ABISELECT(_ZThn21096_N9S19763C19D0Ev,_ZThn13436_N9S19763C19D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn21568_N9S19763C19D1Ev,_ZThn13752_N9S19763C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev)();
extern void ABISELECT(_ZThn21568_N9S19763C19D0Ev,_ZThn13752_N9S19763C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S19763C19D1Ev,_ZTvn292_n40_N9S19763C19D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C19D0Ev,_ZTvn292_n40_N9S19763C19D0Ev)();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C19D1Ev,_ZTv0_n16_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn32576_N9S19763C19D1Ev,_ZThn20728_N9S19763C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C19D0Ev,_ZTv0_n16_N9S19763C19D0Ev)();
extern void ABISELECT(_ZThn32576_N9S19763C19D0Ev,_ZThn20728_N9S19763C19D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY vtc_S19763C19[] = {
  ABISELECT(32576,20728),
  ABISELECT(21568,13752),
  ABISELECT(21096,13436),
  ABISELECT(20800,13252),
  ABISELECT(20656,13156),
  ABISELECT(20488,13048),
  ABISELECT(20024,12740),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&_ZN9S19763C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C19D0Ev,
  ABISELECT(19560,12448),
  ABISELECT(20024,12756),
  ABISELECT(20192,12864),
  ABISELECT(32112,20436),
  ABISELECT(21104,13460),
  ABISELECT(20632,13144),
  ABISELECT(20336,12960),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C19D1Ev,_ZThn292_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C19D0Ev,_ZThn292_N9S19763C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  ABISELECT(20192,12864),
  ABISELECT(20048,12768),
  ABISELECT(19880,12660),
  ABISELECT(19416,12352),
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-1072,-680),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1072_N9S19763C19D1Ev,_ZThn680_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1072_N9S19763C19D0Ev,_ZThn680_N9S19763C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  0,
  0,
  0,
  ABISELECT(-20024,-12740),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(168,108),
  ABISELECT(-20488,-13048),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  0,
  ABISELECT(-20656,-13156),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(-20800,-13252),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(-21096,-13436),
  0,
  0,
  0,
  ABISELECT(-1072,-696),
  ABISELECT(-608,-388),
  ABISELECT(-440,-280),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  ABISELECT(-21096,-13436),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev),
  ABISELECT(-21568,-13752),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  ABISELECT(-21568,-13752),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev),
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-22032,-14044),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C19D1Ev,_ZTvn292_n40_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C19D0Ev,_ZTvn292_n40_N9S19763C19D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-32576,-20728),
  0,
  ABISELECT(-32576,-20728),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C19D1Ev,_ZTv0_n16_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C19D0Ev,_ZTv0_n16_N9S19763C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-32872,-20912),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-33336,-21220),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern VTBL_ENTRY _ZTV9S19763C19[];
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__9S19763C19[] = {
  ABISELECT(20800,13252),
  ABISELECT(20656,13156),
  ABISELECT(20488,13048),
  ABISELECT(20024,12740),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C7__9S19763C19[] = {
  0,
  0,
  0,
  ABISELECT(-20024,-12740),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C7__9S19763C19[] = {
  ABISELECT(168,108),
  ABISELECT(-20488,-13048),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C7__9S19763C19[] = {
  0,
  ABISELECT(-20656,-13156),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C7__9S19763C19[] = {
  0,
  ABISELECT(-20800,-13252),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C16__9S19763C19[] = {
  ABISELECT(19560,12448),
  ABISELECT(20024,12756),
  ABISELECT(20192,12864),
  ABISELECT(32112,20436),
  ABISELECT(21104,13460),
  ABISELECT(20632,13144),
  ABISELECT(20336,12960),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C16__A2__9S19763C19[] = {
  ABISELECT(20192,12864),
  ABISELECT(20048,12768),
  ABISELECT(19880,12660),
  ABISELECT(19416,12352),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C16__A2__9S19763C19[] = {
  0,
  0,
  0,
  ABISELECT(-19416,-12352),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C16__A2__9S19763C19[] = {
  ABISELECT(168,108),
  ABISELECT(-19880,-12660),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C16__A2__9S19763C19[] = {
  0,
  ABISELECT(-20048,-12768),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C16__A2__9S19763C19[] = {
  0,
  ABISELECT(-20192,-12864),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C16__9S19763C19[] = {
  0,
  ABISELECT(-20336,-12960),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn20632_N9S19763C16D1Ev,_ZThn13144_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn20632_N9S19763C16D0Ev,_ZThn13144_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C16__9S19763C19[] = {
  ABISELECT(-20632,-13144),
  0,
  0,
  0,
  ABISELECT(-1072,-696),
  ABISELECT(-608,-388),
  ABISELECT(-440,-280),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  ABISELECT(-20632,-13144),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn21104_N9S19763C16D1Ev,_ZThn13460_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn21104_N9S19763C16D0Ev,_ZThn13460_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C16__9S19763C19[] = {
  ABISELECT(-21104,-13460),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  ABISELECT(-21104,-13460),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn32112_N9S19763C16D1Ev,_ZThn20436_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn32112_N9S19763C16D0Ev,_ZThn20436_N9S19763C16D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C16__9S19763C19[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-32112,-20436),
  0,
  ABISELECT(-32112,-20436),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C16__9S19763C19[] = {
  ABISELECT(-32408,-20620),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C16__9S19763C19[] = {
  ABISELECT(-32872,-20928),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A2__9S19763C16__9S19763C19[] = {
  0,
  ABISELECT(-20192,-12864),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C16__9S19763C19[] = {
  ABISELECT(168,108),
  ABISELECT(-20024,-12756),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C16__9S19763C19[] = {
  0,
  0,
  0,
  ABISELECT(-19560,-12448),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C16__9S19763C19[] = {
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-21568,-13752),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C16__9S19763C19[] = {
  ABISELECT(20192,12864),
  ABISELECT(20048,12768),
  ABISELECT(19880,12660),
  ABISELECT(19416,12352),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C19[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__9S19763C19[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN9S19763C15D1Ev();
extern void _ZN9S19763C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C19[] = {
  ABISELECT(-1072,-696),
  ABISELECT(-608,-388),
  ABISELECT(-440,-280),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C15__9S19763C19[] = {
  0,
  ABISELECT(296,184),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C15__9S19763C19[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn11480_N9S19763C15D1Ev,_ZThn7292_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn11480_N9S19763C15D0Ev,_ZThn7292_N9S19763C15D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C15__9S19763C19[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11480,-7292),
  0,
  ABISELECT(-11480,-7292),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C15__9S19763C19[] = {
  ABISELECT(-11776,-7476),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C15__9S19763C19[] = {
  ABISELECT(-12240,-7784),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C15__9S19763C19[] = {
  0,
  ABISELECT(440,280),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C15__9S19763C19[] = {
  ABISELECT(168,108),
  ABISELECT(608,388),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C15__9S19763C19[] = {
  0,
  0,
  0,
  ABISELECT(1072,696),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C15__9S19763C19[] = {
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C19[] = {
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C11__A1__9S19763C19[] = {
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C11__A1__9S19763C19[] = {
  0,
  0,
  0,
  ABISELECT(1544,1012),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C11__A1__9S19763C19[] = {
  ABISELECT(168,108),
  ABISELECT(1080,704),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A1__9S19763C19[] = {
  0,
  ABISELECT(912,596),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C11__A1__9S19763C19[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C19[] = {
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C11__9S19763C19[] = {
  0,
  ABISELECT(1232,792),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19763C12D1Ev,_ZThn6684_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19763C12D0Ev,_ZThn6684_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C11__9S19763C19[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__9S19763C19[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__9S19763C19[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C11__9S19763C19[] = {
  0,
  ABISELECT(1376,888),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C11__9S19763C19[] = {
  ABISELECT(168,108),
  ABISELECT(1544,996),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn11008_N9S19763C11D1Ev,_ZThn6976_N9S19763C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void ABISELECT(_ZThn11008_N9S19763C11D0Ev,_ZThn6976_N9S19763C11D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C11__9S19763C19[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C11__9S19763C19[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C11__9S19763C19[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C11__9S19763C19[] = {
  0,
  ABISELECT(912,596),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C11__9S19763C19[] = {
  ABISELECT(168,108),
  ABISELECT(1080,704),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C11__9S19763C19[] = {
  0,
  0,
  0,
  ABISELECT(1544,1012),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C11__9S19763C19[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C11__9S19763C19[] = {
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
static  VTT_ENTRY vtt_S19763C19[] = {
  {&(_ZTV9S19763C19[9]),  9,119},
  {&(_tg__ZTV8S19763C7__9S19763C19[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C7__9S19763C19[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C7__9S19763C19[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C7__9S19763C19[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C7__9S19763C19[3]),  3,4},
  {&(_tg__ZTV9S19763C16__9S19763C19[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C16__A2__9S19763C19[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C16__A2__9S19763C19[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C16__A2__9S19763C19[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C16__A2__9S19763C19[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C16__A2__9S19763C19[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C16__9S19763C19[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C16__9S19763C19[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C16__9S19763C19[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C16__9S19763C19[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C16__9S19763C19[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C16__9S19763C19[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A2__9S19763C16__9S19763C19[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C16__9S19763C19[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C16__9S19763C19[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C16__9S19763C19[6]),  6,8},
  {&(_tg__ZTV8S19763C7__A1__9S19763C16__9S19763C19[6]),  6,7},
  {&(_ZTV9S19763C19[45]),  45,119},
  {&(_ZTV9S19763C19[51]),  51,119},
  {&(_ZTV9S19763C19[54]),  54,119},
  {&(_ZTV9S19763C19[58]),  58,119},
  {&(_ZTV9S19763C19[71]),  71,119},
  {&(_ZTV9S19763C19[86]),  86,119},
  {&(_ZTV9S19763C19[107]),  107,119},
  {&(_ZTV9S19763C19[113]),  113,119},
  {&(_ZTV9S19763C19[118]),  118,119},
  {&(_ZTV9S19763C19[96]),  96,119},
  {&(_ZTV9S19763C19[23]),  23,119},
  {&(_ZTV9S19763C19[33]),  33,119},
  {&(_tg__ZTV8S19763C8__9S19763C19[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__9S19763C19[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C19[8]),  8,13},
  {&(_tg__ZTV8S19763C9__9S19763C15__9S19763C19[3]),  3,4},
  {&(_tg__ZTV9S19763C11__9S19763C15__9S19763C19[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C15__9S19763C19[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C15__9S19763C19[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C15__9S19763C19[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C15__9S19763C19[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C15__9S19763C19[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C15__9S19763C19[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C15__9S19763C19[6]),  6,8},
  {&(_tg__ZTV9S19763C11__9S19763C19[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C11__A1__9S19763C19[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C11__A1__9S19763C19[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C11__A1__9S19763C19[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A1__9S19763C19[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C11__A1__9S19763C19[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C19[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C11__9S19763C19[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C11__9S19763C19[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__9S19763C19[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__9S19763C19[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C11__9S19763C19[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C11__9S19763C19[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C11__9S19763C19[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C11__9S19763C19[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C11__9S19763C19[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C11__9S19763C19[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C11__9S19763C19[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C11__9S19763C19[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C11__9S19763C19[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C11__9S19763C19[6]),  6,8},
};
extern VTBL_ENTRY _ZTI9S19763C19[];
extern  VTBL_ENTRY _ZTV9S19763C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C19[];
static VTBL_ENTRY alt_thunk_names7[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19763C11D0Ev,_ZThn6976_N9S19763C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19763C11D1Ev,_ZThn6976_N9S19763C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19763C12D0Ev,_ZThn6684_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19763C12D1Ev,_ZThn6684_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S19763C15D0Ev,_ZThn7292_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S19763C15D1Ev,_ZThn7292_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32112_N9S19763C16D0Ev,_ZThn20436_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32112_N9S19763C16D1Ev,_ZThn20436_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21104_N9S19763C16D0Ev,_ZThn13460_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21104_N9S19763C16D1Ev,_ZThn13460_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20632_N9S19763C16D0Ev,_ZThn13144_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20632_N9S19763C16D1Ev,_ZThn13144_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C19D0Ev,_ZTv0_n16_N9S19763C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32576_N9S19763C19D0Ev,_ZThn20728_N9S19763C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C19D1Ev,_ZTv0_n16_N9S19763C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32576_N9S19763C19D1Ev,_ZThn20728_N9S19763C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21568_N9S19763C19D0Ev,_ZThn13752_N9S19763C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21568_N9S19763C19D1Ev,_ZThn13752_N9S19763C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21096_N9S19763C19D0Ev,_ZThn13436_N9S19763C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21096_N9S19763C19D1Ev,_ZThn13436_N9S19763C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C19 = {  "S19763C19", // class name
  bases_S19763C19, 22,
  &(vtc_S19763C19[0]), // expected_vtbl_contents
  &(vtt_S19763C19[0]), // expected_vtt_contents
  ABISELECT(36704,23348), // object size
  NSPAIRA(_ZTI9S19763C19),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19763C19),119, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19763C19),68, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names7,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C17  {
  ::S19763C18_nt s19763c17f0;
  ::S19763C19 s19763c17f1;
  int s19763c17f2;
  char s19763c17f3:5;
  virtual void  v2(); // _ZN9S19763C172v2Ev
  ~S19763C17(); // tgen
  S19763C17(); // tgen
};
//SIG(-1 S19763C17) C1{ v1 FC2{} FC3{ BC4{ BC5{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC6{ v5 v6 v7 Fi[2] Fl[2] FC5[3]} VBC7{ VBC5 Fp FC5 FL:3} VBC8{ v8 FL FD Fp Fc FC5 Fp[2] Fl[8] Fs Fp FL:64} FC8 Fs Fi[2]} VBC9{ VBC8 BC6 VBC10{ VBC11{ BC8 BC6 BC5 vd v9 Fl FL Fp[8] FC4 Fp Fi FC4 Fi} VBC5 VBC7 BC4 BC12{ VBC8 VBC11 VBC5 VBC7 FL:44 Fp Fi FC4 Fl[2] Fi[3] FC11 Fc:7 FC13{ BC8 vd v11 FC7 Fi Fp Fi}} v10 FC11 FL Fc:7} Fc:8 Fi} BC14{ BC5 VBC8 VBC9 BC4 BC13 vd v12 Fi FC4 Fi Fs FL:8 Fi} v2 v3 FC9 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]} Fi Fc:5}


void  S19763C17 ::v2(){vfunc_called(this, "_ZN9S19763C172v2Ev");}
S19763C17 ::~S19763C17(){ note_dtor("S19763C17", this);} // tgen
S19763C17 ::S19763C17(){ note_ctor("S19763C17", this);} // tgen

static void Test_S19763C17()
{
  extern Class_Descriptor cd_S19763C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2297,5842)];
    init_test(&cd_S19763C17, buf);
    S19763C17 *dp, &lv = *(dp=new (buf) S19763C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(36736,23364), "sizeof(S19763C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C17)");
    check_field_offset(lv, s19763c17f0, ABISELECT(8,4), "S19763C17.s19763c17f0");
    check_field_offset(lv, s19763c17f1, ABISELECT(16,8), "S19763C17.s19763c17f1");
    check_field_offset(lv, s19763c17f2, ABISELECT(36720,23356), "S19763C17.s19763c17f2");
    set_bf_and_test(lv, s19763c17f3, ABISELECT(36724,23360), 0, 5, 1, "S19763C17");
    set_bf_and_test(lv, s19763c17f3, ABISELECT(36724,23360), 0, 5, hide_sll(1LL<<4), "S19763C17");
    test_class_info(&lv, &cd_S19763C17);
    dp->~S19763C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C17(Test_S19763C17, "S19763C17", ABISELECT(36736,23364));

#else // __cplusplus

extern void _ZN9S19763C17C1Ev();
extern void _ZN9S19763C17D1Ev();
Name_Map name_map_S19763C17[] = {
  NSPAIR(_ZN9S19763C17C1Ev),
  NSPAIR(_ZN9S19763C17D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19763C17[];
extern void _ZN9S19763C172v2Ev();
static  VTBL_ENTRY vtc_S19763C17[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C17[0]),
  (VTBL_ENTRY)&_ZN9S19763C172v2Ev,
};
extern VTBL_ENTRY _ZTI9S19763C17[];
extern  VTBL_ENTRY _ZTV9S19763C17[];
Class_Descriptor cd_S19763C17 = {  "S19763C17", // class name
  0,0,//no base classes
  &(vtc_S19763C17[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(36736,23364), // object size
  NSPAIRA(_ZTI9S19763C17),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19763C17),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S19763C23  {
  int s19763c23f0:8;
  int s19763c23f1;
  void *s19763c23f2;
  __tsi64 s19763c23f3;
  void *s19763c23f4;
  void *s19763c23f5;
  int s19763c23f6;
  void  mf19763c23(); // _ZN9S19763C2310mf19763c23Ev
};
//SIG(1 S19763C23) U1{ m Fi:8 Fi Fp FL Fp Fp Fi}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19763C22  : virtual S19763C13 , virtual S19763C5 , virtual S19763C12 {
  int s19763c22f0;
  long double s19763c22f1;
  int s19763c22f2;
  void *s19763c22f3;
  long s19763c22f4;
  ::S19763C23 s19763c22f5;
  int s19763c22f6;
  long s19763c22f7;
  virtual  ~S19763C22(); // _ZN9S19763C22D2Ev
  S19763C22(); // tgen
};
//SIG(-1 S19763C22) C1{ VBC2{ BC3{ v1 FL FD Fp Fc FC4{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v2 FC5{ VBC4 Fp FC4 FL:3} Fi Fp Fi} VBC4 VBC6{ VBC3 VBC7{ BC3 BC8{ v4 v5 v6 Fi[2] Fl[2] FC4[3]} BC4 vd v7 Fl FL Fp[8] FC9{ BC4 VBC8 VBC5 VBC3 FC3 Fs Fi[2]} Fp Fi FC9 Fi} VBC4 VBC5 FL:44 Fp Fi FC9 Fl[2] Fi[3] FC7 Fc:7 FC2} vd Fi FD Fi Fp Fl FU10{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi Fl}


 S19763C22 ::~S19763C22(){ note_dtor("S19763C22", this);}
S19763C22 ::S19763C22(){ note_ctor("S19763C22", this);} // tgen

static void Test_S19763C22()
{
  extern Class_Descriptor cd_S19763C22;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(742,1878)];
    init_test(&cd_S19763C22, buf);
    S19763C22 *dp, &lv = *(dp=new (buf) S19763C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11856,7508), "sizeof(S19763C22)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C22)");
    check_base_class_offset(lv, (S19763C9*)(S19763C13*), ABISELECT(80,48), "S19763C22");
    check_base_class_offset(lv, (S19763C13*), ABISELECT(80,48), "S19763C22");
    /*is_ambiguous_... S19763C22::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*), ABISELECT(712,448), "S19763C22");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*), ABISELECT(712,448), "S19763C22");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(712,448), "S19763C22");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*), ABISELECT(7264,4596), "S19763C22");
    check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(7568,4780), "S19763C22");
    check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(7864,4964), "S19763C22");
    check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(8328,5272), "S19763C22");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*), ABISELECT(7568,4780), "S19763C22");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*), ABISELECT(11688,7400), "S19763C22");
    check_base_class_offset(lv, (S19763C12*), ABISELECT(864,544), "S19763C22");
    check_field_offset(lv, s19763c22f0, ABISELECT(8,4), "S19763C22.s19763c22f0");
    check_field_offset(lv, s19763c22f1, ABISELECT(16,8), "S19763C22.s19763c22f1");
    check_field_offset(lv, s19763c22f2, ABISELECT(32,20), "S19763C22.s19763c22f2");
    check_field_offset(lv, s19763c22f3, ABISELECT(40,24), "S19763C22.s19763c22f3");
    check_field_offset(lv, s19763c22f4, ABISELECT(48,28), "S19763C22.s19763c22f4");
    check_field_offset(lv, s19763c22f5, ABISELECT(56,32), "S19763C22.s19763c22f5");
    check_field_offset(lv, s19763c22f6, ABISELECT(64,40), "S19763C22.s19763c22f6");
    check_field_offset(lv, s19763c22f7, ABISELECT(72,44), "S19763C22.s19763c22f7");
    test_class_info(&lv, &cd_S19763C22);
    dp->~S19763C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C22(Test_S19763C22, "S19763C22", ABISELECT(11856,7508));

#else // __cplusplus

extern void _ZN9S19763C22C1Ev();
extern void _ZN9S19763C22D2Ev();
Name_Map name_map_S19763C22[] = {
  NSPAIR(_ZN9S19763C22C1Ev),
  NSPAIR(_ZN9S19763C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
static Base_Class bases_S19763C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C9,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(80,48), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    ABISELECT(712,448), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C9,    ABISELECT(7264,4596), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19763C9,    ABISELECT(7568,4780), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(7864,4964), //bcp->offset
    49, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(8328,5272), //bcp->offset
    54, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19763C10,    ABISELECT(7568,4780), //bcp->offset
    36, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19763C8,    ABISELECT(11688,7400), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19763C12,    ABISELECT(864,544), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19763C22[];
extern void _ZN9S19763C22D1Ev();
extern void _ZN9S19763C22D0Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S19763C22D1Ev,_ZThn48_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S19763C22D0Ev,_ZThn48_N9S19763C22D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn864_N9S19763C22D1Ev,_ZThn544_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn864_N9S19763C22D0Ev,_ZThn544_N9S19763C22D0Ev)() __attribute__((weak));
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn7568_N9S19763C22D1Ev,_ZThn4780_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn7568_N9S19763C22D0Ev,_ZThn4780_N9S19763C22D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY vtc_S19763C22[] = {
  ABISELECT(11688,7400),
  ABISELECT(7568,4780),
  ABISELECT(7264,4596),
  ABISELECT(864,544),
  ABISELECT(712,448),
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN9S19763C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C22D0Ev,
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  0,
  ABISELECT(-712,-448),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-864,-544),
  ABISELECT(10824,6856),
  ABISELECT(-152,-96),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  ABISELECT(-864,-544),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev),
  0,
  ABISELECT(-7264,-4596),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-7568,-4780),
  0,
  ABISELECT(-7568,-4780),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-7864,-4964),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-8328,-5272),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-10976,-6952),
  ABISELECT(-11688,-7400),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
};
extern VTBL_ENTRY _ZTV9S19763C22[];
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C22[] = {
  ABISELECT(10824,6856),
  ABISELECT(-152,-96),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C12__9S19763C22[] = {
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn6704_N9S19763C12D1Ev,_ZThn4236_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn6704_N9S19763C12D0Ev,_ZThn4236_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C12__9S19763C22[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C12__9S19763C22[] = {
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C12__9S19763C22[] = {
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C12__9S19763C22[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C12__9S19763C22[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C22[] = {
  ABISELECT(-10976,-6952),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__9S19763C22[] = {
  0,
  ABISELECT(10976,6952),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTT_ENTRY vtt_S19763C22[] = {
  {&(_ZTV9S19763C22[8]),  8,60},
  {&(_ZTV9S19763C22[15]),  15,60},
  {&(_ZTV9S19763C22[22]),  22,60},
  {&(_ZTV9S19763C22[30]),  30,60},
  {&(_ZTV9S19763C22[35]),  35,60},
  {&(_ZTV9S19763C22[45]),  45,60},
  {&(_ZTV9S19763C22[51]),  51,60},
  {&(_ZTV9S19763C22[56]),  56,60},
  {&(_ZTV9S19763C22[60]),  60,60},
  {&(_tg__ZTV9S19763C12__9S19763C22[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C12__9S19763C22[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C12__9S19763C22[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C12__9S19763C22[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C12__9S19763C22[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C12__9S19763C22[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C12__9S19763C22[3]),  3,3},
  {&(_tg__ZTV8S19763C8__9S19763C22[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__9S19763C22[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19763C22[];
extern  VTBL_ENTRY _ZTV9S19763C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C22[];
static VTBL_ENTRY alt_thunk_names8[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19763C12D0Ev,_ZThn4236_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19763C12D1Ev,_ZThn4236_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19763C22D0Ev,_ZThn544_N9S19763C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19763C22D1Ev,_ZThn544_N9S19763C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N9S19763C22D0Ev,_ZThn4780_N9S19763C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19763C22D0Ev,_ZThn48_N9S19763C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N9S19763C22D1Ev,_ZThn4780_N9S19763C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19763C22D1Ev,_ZThn48_N9S19763C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C22 = {  "S19763C22", // class name
  bases_S19763C22, 10,
  &(vtc_S19763C22[0]), // expected_vtbl_contents
  &(vtt_S19763C22[0]), // expected_vtt_contents
  ABISELECT(11856,7508), // object size
  NSPAIRA(_ZTI9S19763C22),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19763C22),60, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19763C22),18, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names8,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C21  : virtual S19763C22 , virtual S19763C19 , S19763C16 {
  int s19763c21f0;
  long s19763c21f1;
  int s19763c21f2[4];
  virtual void  v16(); // _ZN9S19763C213v16Ev
  ~S19763C21(); // tgen
  S19763C21(); // tgen
};
//SIG(-1 S19763C21) C1{ VBC2{ VBC3{ BC4{ v2 FL FD Fp Fc FC5{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v3 FC6{ VBC5 Fp FC5 FL:3} Fi Fp Fi} VBC5 VBC7{ VBC4 VBC8{ BC4 BC9{ v5 v6 v7 Fi[2] Fl[2] FC5[3]} BC5 vd v8 Fl FL Fp[8] FC10{ BC5 VBC9 VBC6 VBC4 FC4 Fs Fi[2]} Fp Fi FC10 Fi} VBC5 VBC6 FL:44 Fp Fi FC10 Fl[2] Fi[3] FC8 Fc:7 FC3} vd Fi FD Fi Fp Fl FU11{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi Fl} VBC12{ BC10 VBC13{ VBC4 BC9 VBC14{ VBC8 VBC5 VBC6 BC10 BC7 v9 FC8 FL Fc:7} Fc:8 Fi} BC15{ BC5 VBC4 VBC13 BC10 BC3 vd v10 Fi FC10 Fi Fs FL:8 Fi} v11 v12 FC13 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]} BC15 v1 Fi Fl Fi[4]}


void  S19763C21 ::v16(){vfunc_called(this, "_ZN9S19763C213v16Ev");}
S19763C21 ::~S19763C21(){ note_dtor("S19763C21", this);} // tgen
S19763C21 ::S19763C21(){ note_ctor("S19763C21", this);} // tgen

static void Test_S19763C21()
{
  extern Class_Descriptor cd_S19763C21;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2918,7417)];
    init_test(&cd_S19763C21, buf);
    S19763C21 *dp, &lv = *(dp=new (buf) S19763C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(46672,29664), "sizeof(S19763C21)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C21)");
    /*is_ambiguous_... S19763C21::S19763C13 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C13*), ABISELECT(2928,1864), "S19763C21");
    check_base_class_offset(lv, (S19763C13*)(S19763C22*), ABISELECT(2928,1864), "S19763C21");
    /*is_ambiguous_... S19763C22::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C22*), ABISELECT(3560,2264), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*), ABISELECT(3560,2264), "S19763C21");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(3560,2264), "S19763C21");
    /*is_ambiguous_... S19763C11::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*), ABISELECT(3560,2264), "S19763C21");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*), ABISELECT(3560,2264), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*), ABISELECT(10112,6412), "S19763C21");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C19*), ABISELECT(10112,6412), "S19763C21");
    /*is_ambiguous_... S19763C15::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C15*), ABISELECT(10112,6412), "S19763C21");
    check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*), ABISELECT(10112,6412), "S19763C21");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*), ABISELECT(10112,6412), "S19763C21");
    /*is_ambiguous_... S19763C16::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C16*)(S19763C19*), ABISELECT(10112,6412), "S19763C21");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(10112,6412), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C16*), ABISELECT(10112,6412), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C16*), ABISELECT(10112,6412), "S19763C21");
    check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(10416,6596), "S19763C21");
    check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(10712,6780), "S19763C21");
    check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(11176,7088), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C12*), ABISELECT(10416,6596), "S19763C21");
    check_base_class_offset(lv, (S19763C10*)(S19763C11*), ABISELECT(10416,6596), "S19763C21");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*), ABISELECT(10416,6596), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C12*), ABISELECT(14536,9216), "S19763C21");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C19*), ABISELECT(14536,9216), "S19763C21");
    check_base_class_offset(lv, (S19763C8*)(S19763C11*), ABISELECT(14536,9216), "S19763C21");
    check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*), ABISELECT(14536,9216), "S19763C21");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*), ABISELECT(14536,9216), "S19763C21");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(14536,9216), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C16*), ABISELECT(14536,9216), "S19763C21");
    check_base_class_offset(lv, (S19763C12*)(S19763C22*), ABISELECT(3712,2360), "S19763C21");
    check_base_class_offset(lv, (S19763C22*), ABISELECT(2848,1816), "S19763C21");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C19*), ABISELECT(14704,9324), "S19763C21");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C19*), ABISELECT(34728,22064), "S19763C21");
    check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*), ABISELECT(34728,22064), "S19763C21");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(34728,22064), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C16*), ABISELECT(34728,22064), "S19763C21");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C19*), ABISELECT(14704,9324), "S19763C21");
    /*is_ambiguous_... S19763C15::S19763C4 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C15*), ABISELECT(35192,22372), "S19763C21");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*), ABISELECT(35664,22688), "S19763C21");
    check_base_class_offset(lv, (S19763C7*)(S19763C11*), ABISELECT(35664,22688), "S19763C21");
    check_base_class_offset(lv, (S19763C12*)(S19763C11*), ABISELECT(36128,22980), "S19763C21");
    check_base_class_offset(lv, (S19763C11*)(S19763C15*), ABISELECT(35664,22688), "S19763C21");
    check_base_class_offset(lv, (S19763C15*)(S19763C19*), ABISELECT(35192,22372), "S19763C21");
    check_base_class_offset(lv, (S19763C15*)(S19763C16*)(S19763C19*), ABISELECT(35192,22372), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C15*)(S19763C16*), ABISELECT(35192,22372), "S19763C21");
    /*is_ambiguous_... S19763C16::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C16*)(S19763C19*), ABISELECT(15168,9616), "S19763C21");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(15312,9712), "S19763C21");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(15312,9712), "S19763C21");
    check_base_class_offset(lv, (S19763C9*)(S19763C13*)(S19763C16*)(S19763C19*), ABISELECT(15776,10004), "S19763C21");
    check_base_class_offset(lv, (S19763C13*)(S19763C16*)(S19763C19*), ABISELECT(15776,10004), "S19763C21");
    check_base_class_offset(lv, (S19763C16*)(S19763C19*), ABISELECT(15168,9616), "S19763C21");
    check_base_class_offset(lv, (S19763C19*), ABISELECT(14704,9324), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C16*), 0, "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C16*), ABISELECT(144,96), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C16*), ABISELECT(144,96), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C13*)(S19763C16*), ABISELECT(608,388), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C13*)(S19763C16*), ABISELECT(608,388), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C16*), 0, "S19763C21");
    check_field_offset(lv, s19763c21f0, ABISELECT(2812,1792), "S19763C21.s19763c21f0");
    check_field_offset(lv, s19763c21f1, ABISELECT(2816,1796), "S19763C21.s19763c21f1");
    check_field_offset(lv, s19763c21f2, ABISELECT(2824,1800), "S19763C21.s19763c21f2");
    test_class_info(&lv, &cd_S19763C21);
    dp->~S19763C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C21(Test_S19763C21, "S19763C21", ABISELECT(46672,29664));

#else // __cplusplus

extern void _ZN9S19763C21C1Ev();
extern void _ZN9S19763C21D1Ev();
Name_Map name_map_S19763C21[] = {
  NSPAIR(_ZN9S19763C21C1Ev),
  NSPAIR(_ZN9S19763C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C22;
extern VTBL_ENTRY _ZTI9S19763C22[];
extern  VTBL_ENTRY _ZTV9S19763C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C22[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
extern Class_Descriptor cd_S19763C15;
extern VTBL_ENTRY _ZTI9S19763C15[];
extern  VTBL_ENTRY _ZTV9S19763C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C15[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C16;
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
extern Class_Descriptor cd_S19763C19;
extern VTBL_ENTRY _ZTI9S19763C19[];
extern  VTBL_ENTRY _ZTV9S19763C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C19[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C16;
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
static Base_Class bases_S19763C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C9,    ABISELECT(2928,1864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(2928,1864), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(3560,2264), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19763C9,    ABISELECT(10112,6412), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19763C9,    ABISELECT(10416,6596), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(10712,6780), //bcp->offset
    81, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(11176,7088), //bcp->offset
    86, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19763C10,    ABISELECT(10416,6596), //bcp->offset
    68, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19763C8,    ABISELECT(14536,9216), //bcp->offset
    89, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19763C12,    ABISELECT(3712,2360), //bcp->offset
    55, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19763C22,    ABISELECT(2848,1816), //bcp->offset
    31, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    ABISELECT(14704,9324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(34728,22064), //bcp->offset
    139, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19763C7,    ABISELECT(14704,9324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(35192,22372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(35664,22688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(35664,22688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19763C12,    ABISELECT(36128,22980), //bcp->offset
    178, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19763C11,    ABISELECT(35664,22688), //bcp->offset
    164, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19763C15,    ABISELECT(35192,22372), //bcp->offset
    147, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(15168,9616), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(15312,9712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(15312,9712), //bcp->offset
    126, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(15776,10004), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(15776,10004), //bcp->offset
    133, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19763C16,    ABISELECT(15168,9616), //bcp->offset
    113, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19763C19,    ABISELECT(14704,9324), //bcp->offset
    92, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(144,96), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(608,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(608,388), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19763C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19763C21[];
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C21D1Ev();
extern void _ZN9S19763C21D0Ev();
extern void _ZN9S19763C163v13Ev();
extern void _ZN9S19763C213v16Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZThn608_N9S19763C21D1Ev,_ZThn388_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn608_N9S19763C21D0Ev,_ZThn388_N9S19763C21D0Ev)();
extern void _ZN9S19763C133v12Ev();
extern void ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn2848_N9S19763C21D1Ev,_ZThn1816_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn2848_N9S19763C21D0Ev,_ZThn1816_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn2928_N9S19763C21D1Ev,_ZThn1864_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn2928_N9S19763C21D0Ev,_ZThn1864_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn3712_N9S19763C21D1Ev,_ZThn2360_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn3712_N9S19763C21D0Ev,_ZThn2360_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn10416_N9S19763C21D1Ev,_ZThn6596_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn10416_N9S19763C21D0Ev,_ZThn6596_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn14704_N9S19763C21D1Ev,_ZThn9324_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn14704_N9S19763C21D0Ev,_ZThn9324_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N9S19763C21D1Ev,_ZTvn292_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N9S19763C21D0Ev,_ZTvn292_n52_N9S19763C21D0Ev)();
extern void _ZN9S19763C163v13Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C21D1Ev,_ZTvn680_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C21D0Ev,_ZTvn680_n52_N9S19763C21D0Ev)();
extern void _ZN9S19763C133v12Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn35192_N9S19763C21D1Ev,_ZThn22372_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn35192_N9S19763C21D0Ev,_ZThn22372_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn35664_N9S19763C21D1Ev,_ZThn22688_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn35664_N9S19763C21D0Ev,_ZThn22688_N9S19763C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S19763C21D1Ev,_ZTvn292_n40_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C21D0Ev,_ZTvn292_n40_N9S19763C21D0Ev)();
static  VTBL_ENTRY vtc_S19763C21[] = {
  ABISELECT(14704,9324),
  ABISELECT(3712,2360),
  ABISELECT(2928,1864),
  ABISELECT(2848,1816),
  ABISELECT(34728,22064),
  ABISELECT(14536,9216),
  ABISELECT(3560,2264),
  ABISELECT(10416,6596),
  ABISELECT(35664,22688),
  ABISELECT(35192,22372),
  ABISELECT(10112,6412),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C21D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19763C213v16Ev,
  ABISELECT(9968,6316),
  ABISELECT(3416,2168),
  ABISELECT(14392,9120),
  ABISELECT(34584,21968),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S19763C21D1Ev,_ZThn388_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S19763C21D0Ev,_ZThn388_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  ABISELECT(-2848,-1816),
  ABISELECT(11688,7400),
  ABISELECT(7568,4780),
  ABISELECT(7264,4596),
  ABISELECT(864,544),
  ABISELECT(712,448),
  ABISELECT(80,48),
  ABISELECT(-2848,-1816),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev),
  0,
  ABISELECT(-2928,-1864),
  0,
  ABISELECT(-2928,-1864),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  0,
  ABISELECT(-3560,-2264),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-3712,-2360),
  ABISELECT(10824,6856),
  ABISELECT(-152,-96),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  ABISELECT(-3712,-2360),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev),
  0,
  ABISELECT(-10112,-6412),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10416,-6596),
  0,
  ABISELECT(-10416,-6596),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-10712,-6780),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-11176,-7088),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-10976,-6952),
  ABISELECT(-14536,-9216),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  ABISELECT(1072,680),
  ABISELECT(1072,680),
  ABISELECT(464,292),
  ABISELECT(-14704,-9324),
  0,
  0,
  0,
  ABISELECT(-4288,-2728),
  ABISELECT(20960,13364),
  ABISELECT(20488,13048),
  ABISELECT(-4592,-2912),
  ABISELECT(-11144,-7060),
  ABISELECT(-168,-108),
  ABISELECT(20024,12740),
  ABISELECT(-14704,-9324),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev),
  ABISELECT(19560,12448),
  ABISELECT(-632,-400),
  ABISELECT(-11608,-7352),
  ABISELECT(-4752,-3020),
  ABISELECT(20496,13072),
  ABISELECT(20024,12756),
  ABISELECT(-5056,-3204),
  ABISELECT(-15168,-9616),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C21D1Ev,_ZTvn292_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C21D0Ev,_ZTvn292_n52_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  ABISELECT(-5200,-3300),
  ABISELECT(-11752,-7448),
  ABISELECT(-776,-496),
  ABISELECT(19416,12352),
  ABISELECT(-15312,-9712),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-15776,-10004),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C21D1Ev,_ZTvn680_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C21D0Ev,_ZTvn680_n52_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  0,
  0,
  0,
  ABISELECT(-34728,-22064),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-35192,-22372),
  0,
  0,
  0,
  ABISELECT(-464,-308),
  ABISELECT(-20656,-13156),
  ABISELECT(-31632,-20108),
  ABISELECT(-24776,-15776),
  ABISELECT(472,316),
  ABISELECT(-25080,-15960),
  ABISELECT(-35192,-22372),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev),
  ABISELECT(-35664,-22688),
  0,
  0,
  ABISELECT(-25248,-16092),
  ABISELECT(-25552,-16276),
  ABISELECT(-32104,-20424),
  ABISELECT(-21128,-13472),
  ABISELECT(-936,-624),
  ABISELECT(-35664,-22688),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev),
  ABISELECT(-21592,-13764),
  ABISELECT(-32568,-20716),
  ABISELECT(-25712,-16384),
  ABISELECT(-26016,-16568),
  ABISELECT(-36128,-22980),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C21D1Ev,_ZTvn292_n40_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C21D0Ev,_ZTvn292_n40_N9S19763C21D0Ev),
};
extern VTBL_ENTRY _ZTV9S19763C21[];
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C16__A1__9S19763C21[] = {
  ABISELECT(34728,22064),
  ABISELECT(14536,9216),
  ABISELECT(3560,2264),
  ABISELECT(10416,6596),
  ABISELECT(35664,22688),
  ABISELECT(35192,22372),
  ABISELECT(10112,6412),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C16__A3__9S19763C21[] = {
  ABISELECT(9968,6316),
  ABISELECT(3416,2168),
  ABISELECT(14392,9120),
  ABISELECT(34584,21968),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C16__A3__9S19763C21[] = {
  0,
  0,
  0,
  ABISELECT(-34584,-21968),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C16__A3__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(-14392,-9120),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C16__A3__9S19763C21[] = {
  0,
  ABISELECT(-3416,-2168),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C16__A3__9S19763C21[] = {
  0,
  ABISELECT(-9968,-6316),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C16__A1__9S19763C21[] = {
  0,
  ABISELECT(-10112,-6412),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn35192_N9S19763C16D1Ev,_ZThn22372_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn35192_N9S19763C16D0Ev,_ZThn22372_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C16__A1__9S19763C21[] = {
  ABISELECT(-35192,-22372),
  0,
  0,
  0,
  ABISELECT(-464,-308),
  ABISELECT(-20656,-13156),
  ABISELECT(-31632,-20108),
  ABISELECT(-24776,-15776),
  ABISELECT(472,316),
  ABISELECT(-25080,-15960),
  ABISELECT(-35192,-22372),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn35664_N9S19763C16D1Ev,_ZThn22688_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn35664_N9S19763C16D0Ev,_ZThn22688_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C16__A1__9S19763C21[] = {
  ABISELECT(-35664,-22688),
  0,
  0,
  ABISELECT(-25248,-16092),
  ABISELECT(-25552,-16276),
  ABISELECT(-32104,-20424),
  ABISELECT(-21128,-13472),
  ABISELECT(-936,-624),
  ABISELECT(-35664,-22688),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn10416_N9S19763C16D1Ev,_ZThn6596_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn10416_N9S19763C16D0Ev,_ZThn6596_N9S19763C16D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C16__A1__9S19763C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10416,-6596),
  0,
  ABISELECT(-10416,-6596),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C16__A1__9S19763C21[] = {
  ABISELECT(-10712,-6780),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C16__A1__9S19763C21[] = {
  ABISELECT(-11176,-7088),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A2__9S19763C16__A1__9S19763C21[] = {
  0,
  ABISELECT(-3560,-2264),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C16__A1__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(-14536,-9216),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C16__A1__9S19763C21[] = {
  0,
  0,
  0,
  ABISELECT(-34728,-22064),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C16__A1__9S19763C21[] = {
  ABISELECT(-21592,-13764),
  ABISELECT(-32568,-20716),
  ABISELECT(-25712,-16384),
  ABISELECT(-26016,-16568),
  ABISELECT(-36128,-22980),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C16__A1__9S19763C21[] = {
  ABISELECT(9968,6316),
  ABISELECT(3416,2168),
  ABISELECT(14392,9120),
  ABISELECT(34584,21968),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN9S19763C22D1Ev();
extern void _ZN9S19763C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C22__9S19763C21[] = {
  ABISELECT(11688,7400),
  ABISELECT(7568,4780),
  ABISELECT(7264,4596),
  ABISELECT(864,544),
  ABISELECT(712,448),
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN9S19763C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C22D0Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S19763C22D1Ev,_ZThn48_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S19763C22D0Ev,_ZThn48_N9S19763C22D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C13__9S19763C22__9S19763C21[] = {
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__9S19763C22__9S19763C21[] = {
  0,
  ABISELECT(-712,-448),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn864_N9S19763C22D1Ev,_ZThn544_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn864_N9S19763C22D0Ev,_ZThn544_N9S19763C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C22__9S19763C21[] = {
  ABISELECT(-864,-544),
  ABISELECT(10824,6856),
  ABISELECT(-152,-96),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  ABISELECT(-864,-544),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C22__9S19763C21[] = {
  0,
  ABISELECT(-7264,-4596),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn7568_N9S19763C22D1Ev,_ZThn4780_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn7568_N9S19763C22D0Ev,_ZThn4780_N9S19763C22D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C22__9S19763C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-7568,-4780),
  0,
  ABISELECT(-7568,-4780),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C22__9S19763C21[] = {
  ABISELECT(-7864,-4964),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C22__9S19763C21[] = {
  ABISELECT(-8328,-5272),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C22__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(-11688,-7400),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C21[] = {
  ABISELECT(10824,6856),
  ABISELECT(-152,-96),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C12__9S19763C21[] = {
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn6704_N9S19763C12D1Ev,_ZThn4236_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn6704_N9S19763C12D0Ev,_ZThn4236_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C12__9S19763C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C12__9S19763C21[] = {
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C12__9S19763C21[] = {
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C12__9S19763C21[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C12__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__9S19763C21[] = {
  0,
  ABISELECT(10976,6952),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void _ZN9S19763C19D1Ev();
extern void _ZN9S19763C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C19__9S19763C21[] = {
  ABISELECT(-4288,-2728),
  ABISELECT(20960,13364),
  ABISELECT(20488,13048),
  ABISELECT(-4592,-2912),
  ABISELECT(-11144,-7060),
  ABISELECT(-168,-108),
  ABISELECT(20024,12740),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&_ZN9S19763C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C19D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C19__9S19763C21[] = {
  ABISELECT(-4592,-2912),
  ABISELECT(-11144,-7060),
  ABISELECT(-168,-108),
  ABISELECT(20024,12740),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C19__9S19763C21[] = {
  0,
  0,
  0,
  ABISELECT(-20024,-12740),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C19__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(168,108),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C19__9S19763C21[] = {
  0,
  ABISELECT(11144,7060),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C19__9S19763C21[] = {
  0,
  ABISELECT(4592,2912),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C19__9S19763C21[] = {
  ABISELECT(19560,12448),
  ABISELECT(-632,-400),
  ABISELECT(-11608,-7352),
  ABISELECT(-4752,-3020),
  ABISELECT(20496,13072),
  ABISELECT(20024,12756),
  ABISELECT(-5056,-3204),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C19__A2__9S19763C21[] = {
  ABISELECT(-5200,-3300),
  ABISELECT(-11752,-7448),
  ABISELECT(-776,-496),
  ABISELECT(19416,12352),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C169S19763C19__A2__9S19763C21[] = {
  0,
  0,
  0,
  ABISELECT(-19416,-12352),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C169S19763C19__A2__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(776,496),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C19__A2__9S19763C21[] = {
  0,
  ABISELECT(11752,7448),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C169S19763C19__A2__9S19763C21[] = {
  0,
  ABISELECT(5200,3300),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C169S19763C19__9S19763C21[] = {
  0,
  ABISELECT(5056,3204),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn20024_N9S19763C16D1Ev,_ZThn12756_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn20024_N9S19763C16D0Ev,_ZThn12756_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C169S19763C19__9S19763C21[] = {
  ABISELECT(-20024,-12756),
  0,
  0,
  0,
  ABISELECT(-464,-308),
  ABISELECT(-20656,-13156),
  ABISELECT(-31632,-20108),
  ABISELECT(-24776,-15776),
  ABISELECT(472,316),
  ABISELECT(-25080,-15960),
  ABISELECT(-20024,-12756),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn20496_N9S19763C16D1Ev,_ZThn13072_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn20496_N9S19763C16D0Ev,_ZThn13072_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C169S19763C19__9S19763C21[] = {
  ABISELECT(-20496,-13072),
  0,
  0,
  ABISELECT(-25248,-16092),
  ABISELECT(-25552,-16276),
  ABISELECT(-32104,-20424),
  ABISELECT(-21128,-13472),
  ABISELECT(-936,-624),
  ABISELECT(-20496,-13072),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C169S19763C19__9S19763C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4752,3020),
  0,
  ABISELECT(4752,3020),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C19__9S19763C21[] = {
  ABISELECT(4456,2836),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C19__9S19763C21[] = {
  ABISELECT(3992,2528),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A2__9S19763C169S19763C19__9S19763C21[] = {
  0,
  ABISELECT(11608,7352),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C169S19763C19__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(632,400),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C169S19763C19__9S19763C21[] = {
  0,
  0,
  0,
  ABISELECT(-19560,-12448),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C169S19763C19__9S19763C21[] = {
  ABISELECT(-21592,-13764),
  ABISELECT(-32568,-20716),
  ABISELECT(-25712,-16384),
  ABISELECT(-26016,-16568),
  ABISELECT(-20960,-13364),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C169S19763C19__9S19763C21[] = {
  ABISELECT(-5200,-3300),
  ABISELECT(-11752,-7448),
  ABISELECT(-776,-496),
  ABISELECT(19416,12352),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__9S19763C19__9S19763C21[] = {
  0,
  0,
  0,
  ABISELECT(-20024,-12740),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C19__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(168,108),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C19__9S19763C21[] = {
  0,
  ABISELECT(11144,7060),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C19__9S19763C21[] = {
  0,
  ABISELECT(4592,2912),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn20488_N9S19763C19D1Ev,_ZThn13048_N9S19763C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev)();
extern void ABISELECT(_ZThn20488_N9S19763C19D0Ev,_ZThn13048_N9S19763C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C19__9S19763C21[] = {
  ABISELECT(-20488,-13048),
  0,
  0,
  0,
  ABISELECT(-464,-308),
  ABISELECT(-20656,-13156),
  ABISELECT(-31632,-20108),
  ABISELECT(-24776,-15776),
  ABISELECT(472,316),
  ABISELECT(-25080,-15960),
  ABISELECT(-20488,-13048),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn20960_N9S19763C19D1Ev,_ZThn13364_N9S19763C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev)();
extern void ABISELECT(_ZThn20960_N9S19763C19D0Ev,_ZThn13364_N9S19763C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C19__9S19763C21[] = {
  ABISELECT(-20960,-13364),
  0,
  0,
  ABISELECT(-25248,-16092),
  ABISELECT(-25552,-16276),
  ABISELECT(-32104,-20424),
  ABISELECT(-21128,-13472),
  ABISELECT(-936,-624),
  ABISELECT(-20960,-13364),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C19D1Ev,_ZTv0_n16_N9S19763C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C19D0Ev,_ZTv0_n16_N9S19763C19D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C19__9S19763C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4288,2728),
  0,
  ABISELECT(4288,2728),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C19D1Ev,_ZTv0_n16_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C19D0Ev,_ZTv0_n16_N9S19763C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A2__9S19763C19__9S19763C21[] = {
  ABISELECT(3992,2544),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A2__9S19763C19__9S19763C21[] = {
  ABISELECT(3528,2236),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C19D1Ev,_ZTvn292_n40_N9S19763C19D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C19D0Ev,_ZTvn292_n40_N9S19763C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C19__9S19763C21[] = {
  ABISELECT(-21592,-13764),
  ABISELECT(-32568,-20716),
  ABISELECT(-25712,-16384),
  ABISELECT(-26016,-16568),
  ABISELECT(-21424,-13656),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C19D1Ev,_ZTvn292_n40_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C19D0Ev,_ZTvn292_n40_N9S19763C19D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZThn464_N9S19763C19D1Ev,_ZThn292_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C19D0Ev,_ZThn292_N9S19763C19D0Ev)();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C16__9S19763C19__9S19763C21[] = {
  ABISELECT(19560,12448),
  ABISELECT(-632,-400),
  ABISELECT(-11608,-7352),
  ABISELECT(-4752,-3020),
  ABISELECT(20496,13072),
  ABISELECT(20024,12756),
  ABISELECT(-5056,-3204),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C19D1Ev,_ZThn292_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C19D0Ev,_ZThn292_N9S19763C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C16__A2__9S19763C19__9S19763C21[] = {
  ABISELECT(-5200,-3300),
  ABISELECT(-11752,-7448),
  ABISELECT(-776,-496),
  ABISELECT(19416,12352),
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN9S19763C15D1Ev();
extern void _ZN9S19763C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C21[] = {
  ABISELECT(-464,-308),
  ABISELECT(-20656,-13156),
  ABISELECT(-31632,-20108),
  ABISELECT(-24776,-15776),
  ABISELECT(472,316),
  ABISELECT(-25080,-15960),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C15__9S19763C21[] = {
  0,
  ABISELECT(25080,15960),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C15__9S19763C21[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(-25248,-16092),
  ABISELECT(-25552,-16276),
  ABISELECT(-32104,-20424),
  ABISELECT(-21128,-13472),
  ABISELECT(-936,-624),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C15__9S19763C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(24776,15776),
  0,
  ABISELECT(24776,15776),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C15__9S19763C21[] = {
  ABISELECT(24480,15592),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C15__9S19763C21[] = {
  ABISELECT(24016,15284),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C15__9S19763C21[] = {
  0,
  ABISELECT(31632,20108),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C15__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(20656,13156),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C15__9S19763C21[] = {
  0,
  0,
  0,
  ABISELECT(464,308),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C15__9S19763C21[] = {
  ABISELECT(-21592,-13764),
  ABISELECT(-32568,-20716),
  ABISELECT(-25712,-16384),
  ABISELECT(-26016,-16568),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C21[] = {
  ABISELECT(-25248,-16092),
  ABISELECT(-25552,-16276),
  ABISELECT(-32104,-20424),
  ABISELECT(-21128,-13472),
  ABISELECT(-936,-624),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C11__A1__9S19763C21[] = {
  ABISELECT(-25552,-16276),
  ABISELECT(-32104,-20424),
  ABISELECT(-21128,-13472),
  ABISELECT(-936,-624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C11__A1__9S19763C21[] = {
  0,
  0,
  0,
  ABISELECT(936,624),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C11__A1__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(21128,13472),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A1__9S19763C21[] = {
  0,
  ABISELECT(32104,20424),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C11__A1__9S19763C21[] = {
  0,
  ABISELECT(25552,16276),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__A1__9S19763C21[] = {
  ABISELECT(-21592,-13764),
  ABISELECT(-32568,-20716),
  ABISELECT(-25712,-16384),
  ABISELECT(-26016,-16568),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C11__A1__9S19763C21[] = {
  0,
  ABISELECT(26016,16568),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C11__A1__9S19763C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(25712,16384),
  0,
  ABISELECT(25712,16384),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__A1__9S19763C21[] = {
  ABISELECT(25416,16200),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__A1__9S19763C21[] = {
  ABISELECT(24952,15892),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C11__A1__9S19763C21[] = {
  0,
  ABISELECT(32568,20716),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C11__A1__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(21592,13764),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C11__9S19763C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(25248,16092),
  0,
  ABISELECT(25248,16092),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C11__9S19763C21[] = {
  ABISELECT(24952,15908),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C11__9S19763C21[] = {
  ABISELECT(24488,15600),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C11__9S19763C21[] = {
  0,
  ABISELECT(32104,20424),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C11__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(21128,13472),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C11__9S19763C21[] = {
  0,
  0,
  0,
  ABISELECT(936,624),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C11__9S19763C21[] = {
  0,
  ABISELECT(25552,16276),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C11__9S19763C21[] = {
  ABISELECT(-21592,-13764),
  ABISELECT(-32568,-20716),
  ABISELECT(-25712,-16384),
  ABISELECT(-26016,-16568),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
static  VTT_ENTRY vtt_S19763C21[] = {
  {&(_ZTV9S19763C21[13]),  13,186},
  {&(_tg__ZTV9S19763C16__A1__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C16__A3__9S19763C21[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C16__A3__9S19763C21[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C16__A3__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C16__A3__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C16__A3__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C16__A1__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C16__A1__9S19763C21[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C16__A1__9S19763C21[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C16__A1__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C16__A1__9S19763C21[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C16__A1__9S19763C21[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A2__9S19763C16__A1__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C16__A1__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C16__A1__9S19763C21[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C16__A1__9S19763C21[6]),  6,8},
  {&(_tg__ZTV8S19763C7__A1__9S19763C16__A1__9S19763C21[6]),  6,7},
  {&(_ZTV9S19763C21[40]),  40,186},
  {&(_ZTV9S19763C21[47]),  47,186},
  {&(_ZTV9S19763C21[54]),  54,186},
  {&(_ZTV9S19763C21[62]),  62,186},
  {&(_ZTV9S19763C21[67]),  67,186},
  {&(_ZTV9S19763C21[77]),  77,186},
  {&(_ZTV9S19763C21[83]),  83,186},
  {&(_ZTV9S19763C21[88]),  88,186},
  {&(_ZTV9S19763C21[92]),  92,186},
  {&(_ZTV9S19763C21[108]),  108,186},
  {&(_ZTV9S19763C21[144]),  144,186},
  {&(_ZTV9S19763C21[159]),  159,186},
  {&(_ZTV9S19763C21[174]),  174,186},
  {&(_ZTV9S19763C21[184]),  184,186},
  {&(_ZTV9S19763C21[122]),  122,186},
  {&(_ZTV9S19763C21[132]),  132,186},
  {&(_ZTV9S19763C21[135]),  135,186},
  {&(_ZTV9S19763C21[24]),  24,186},
  {&(_tg__ZTV9S19763C22__9S19763C21[8]),  8,10},
  {&(_tg__ZTV9S19763C13__9S19763C22__9S19763C21[5]),  5,9},
  {&(_tg__ZTV8S19763C5__9S19763C22__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C22__9S19763C21[7]),  7,9},
  {&(_tg__ZTV8S19763C9__A1__9S19763C22__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C22__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C22__9S19763C21[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C22__9S19763C21[2]),  2,3},
  {&(_tg__ZTV8S19763C8__9S19763C22__9S19763C21[3]),  3,3},
  {&(_tg__ZTV9S19763C12__9S19763C21[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C12__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C12__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C12__9S19763C21[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C12__9S19763C21[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C12__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C12__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C8__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C19__9S19763C21[9]),  9,14},
  {&(_tg__ZTV8S19763C79S19763C19__9S19763C21[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C19__9S19763C21[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C19__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C19__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C19__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C169S19763C19__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C19__A2__9S19763C21[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C169S19763C19__A2__9S19763C21[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C169S19763C19__A2__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C19__A2__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C169S19763C19__A2__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C169S19763C19__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C169S19763C19__9S19763C21[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C169S19763C19__9S19763C21[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C169S19763C19__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C19__9S19763C21[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C19__9S19763C21[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A2__9S19763C169S19763C19__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C169S19763C19__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C169S19763C19__9S19763C21[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C169S19763C19__9S19763C21[6]),  6,8},
  {&(_tg__ZTV8S19763C7__A1__9S19763C169S19763C19__9S19763C21[6]),  6,7},
  {&(_tg__ZTV8S19763C4__9S19763C19__9S19763C21[5]),  5,8},
  {&(_tg__ZTV8S19763C8__9S19763C19__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C19__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C19__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C19__9S19763C21[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C19__9S19763C21[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C19__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A2__9S19763C19__9S19763C21[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A2__9S19763C19__9S19763C21[2]),  2,3},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C19__9S19763C21[6]),  6,8},
  {&(_tg__ZTV9S19763C16__9S19763C19__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C16__A2__9S19763C19__9S19763C21[6]),  6,7},
  {&(_tg__ZTV9S19763C15__9S19763C21[8]),  8,13},
  {&(_tg__ZTV8S19763C9__9S19763C15__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C11__9S19763C15__9S19763C21[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C15__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C15__9S19763C21[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C15__9S19763C21[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C15__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C15__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C15__9S19763C21[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C15__9S19763C21[6]),  6,8},
  {&(_tg__ZTV9S19763C11__9S19763C21[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C11__A1__9S19763C21[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C11__A1__9S19763C21[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C11__A1__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A1__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C11__A1__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C11__A1__9S19763C21[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C11__A1__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C11__A1__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__A1__9S19763C21[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__A1__9S19763C21[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C11__A1__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C11__A1__9S19763C21[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C11__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C11__9S19763C21[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C11__9S19763C21[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C11__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C11__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C11__9S19763C21[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C11__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C11__9S19763C21[6]),  6,8},
};
extern VTBL_ENTRY _ZTI9S19763C21[];
extern  VTBL_ENTRY _ZTV9S19763C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C21[];
static VTBL_ENTRY alt_thunk_names9[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20960_N9S19763C19D0Ev,_ZThn13364_N9S19763C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20960_N9S19763C19D1Ev,_ZThn13364_N9S19763C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20488_N9S19763C19D0Ev,_ZThn13048_N9S19763C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20488_N9S19763C19D1Ev,_ZThn13048_N9S19763C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19763C12D0Ev,_ZThn4236_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19763C12D1Ev,_ZThn4236_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19763C22D0Ev,_ZThn544_N9S19763C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19763C22D1Ev,_ZThn544_N9S19763C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N9S19763C22D0Ev,_ZThn4780_N9S19763C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19763C22D0Ev,_ZThn48_N9S19763C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N9S19763C22D1Ev,_ZThn4780_N9S19763C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19763C22D1Ev,_ZThn48_N9S19763C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10416_N9S19763C16D0Ev,_ZThn6596_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10416_N9S19763C16D1Ev,_ZThn6596_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20496_N9S19763C16D0Ev,_ZThn13072_N9S19763C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35664_N9S19763C16D0Ev,_ZThn22688_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20496_N9S19763C16D1Ev,_ZThn13072_N9S19763C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35664_N9S19763C16D1Ev,_ZThn22688_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20024_N9S19763C16D0Ev,_ZThn12756_N9S19763C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35192_N9S19763C16D0Ev,_ZThn22372_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20024_N9S19763C16D1Ev,_ZThn12756_N9S19763C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35192_N9S19763C16D1Ev,_ZThn22372_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35664_N9S19763C21D0Ev,_ZThn22688_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35664_N9S19763C21D1Ev,_ZThn22688_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35192_N9S19763C21D0Ev,_ZThn22372_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35192_N9S19763C21D1Ev,_ZThn22372_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14704_N9S19763C21D0Ev,_ZThn9324_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14704_N9S19763C21D1Ev,_ZThn9324_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3712_N9S19763C21D0Ev,_ZThn2360_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3712_N9S19763C21D1Ev,_ZThn2360_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10416_N9S19763C21D0Ev,_ZThn6596_N9S19763C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N9S19763C21D0Ev,_ZThn1864_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10416_N9S19763C21D1Ev,_ZThn6596_N9S19763C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N9S19763C21D1Ev,_ZThn1864_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19763C21D0Ev,_ZThn1816_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19763C21D1Ev,_ZThn1816_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C21 = {  "S19763C21", // class name
  bases_S19763C21, 33,
  &(vtc_S19763C21[0]), // expected_vtbl_contents
  &(vtt_S19763C21[0]), // expected_vtt_contents
  ABISELECT(46672,29664), // object size
  NSPAIRA(_ZTI9S19763C21),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19763C21),186, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19763C21),120, //virtual table table var
  33, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names9,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C24  {
  void *s19763c24f0;
  long s19763c24f1;
  int s19763c24f2;
  __tsi64 s19763c24f3;
  void *s19763c24f4;
  int s19763c24f5;
  int s19763c24f6;
  int s19763c24f7;
  int s19763c24f8;
  virtual void  v17(); // _ZN9S19763C243v17Ev
  virtual void  v18(); // _ZN9S19763C243v18Ev
  ~S19763C24(); // tgen
  S19763C24(); // tgen
};
//SIG(-1 S19763C24) C1{ v1 v2 Fp Fl Fi FL Fp Fi[4]}


void  S19763C24 ::v17(){vfunc_called(this, "_ZN9S19763C243v17Ev");}
void  S19763C24 ::v18(){vfunc_called(this, "_ZN9S19763C243v18Ev");}
S19763C24 ::~S19763C24(){ note_dtor("S19763C24", this);} // tgen
S19763C24 ::S19763C24(){ note_ctor("S19763C24", this);} // tgen

static void Test_S19763C24()
{
  extern Class_Descriptor cd_S19763C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S19763C24, buf);
    S19763C24 *dp, &lv = *(dp=new (buf) S19763C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S19763C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19763C24)");
    check_field_offset(lv, s19763c24f0, ABISELECT(8,4), "S19763C24.s19763c24f0");
    check_field_offset(lv, s19763c24f1, ABISELECT(16,8), "S19763C24.s19763c24f1");
    check_field_offset(lv, s19763c24f2, ABISELECT(24,12), "S19763C24.s19763c24f2");
    check_field_offset(lv, s19763c24f3, ABISELECT(32,16), "S19763C24.s19763c24f3");
    check_field_offset(lv, s19763c24f4, ABISELECT(40,24), "S19763C24.s19763c24f4");
    check_field_offset(lv, s19763c24f5, ABISELECT(48,28), "S19763C24.s19763c24f5");
    check_field_offset(lv, s19763c24f6, ABISELECT(52,32), "S19763C24.s19763c24f6");
    check_field_offset(lv, s19763c24f7, ABISELECT(56,36), "S19763C24.s19763c24f7");
    check_field_offset(lv, s19763c24f8, ABISELECT(60,40), "S19763C24.s19763c24f8");
    test_class_info(&lv, &cd_S19763C24);
    dp->~S19763C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C24(Test_S19763C24, "S19763C24", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN9S19763C24C1Ev();
extern void _ZN9S19763C24D1Ev();
Name_Map name_map_S19763C24[] = {
  NSPAIR(_ZN9S19763C24C1Ev),
  NSPAIR(_ZN9S19763C24D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19763C24[];
extern void _ZN9S19763C243v17Ev();
extern void _ZN9S19763C243v18Ev();
static  VTBL_ENTRY vtc_S19763C24[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C24[0]),
  (VTBL_ENTRY)&_ZN9S19763C243v17Ev,
  (VTBL_ENTRY)&_ZN9S19763C243v18Ev,
};
extern VTBL_ENTRY _ZTI9S19763C24[];
extern  VTBL_ENTRY _ZTV9S19763C24[];
Class_Descriptor cd_S19763C24 = {  "S19763C24", // class name
  0,0,//no base classes
  &(vtc_S19763C24[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI9S19763C24),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19763C24),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C20  : S19763C6 , virtual S19763C21 , virtual S19763C24 {
  int s19763c20f0;
  int s19763c20f1[6];
  long s19763c20f2[3];
  long s19763c20f3;
  int s19763c20f4;
  int s19763c20f5;
  int s19763c20f6;
  int s19763c20f7;
  char s19763c20f8:7;
  void *s19763c20f9;
  char s19763c20f10;
  ::S19763C7 s19763c20f11;
  int s19763c20f12;
  ~S19763C20(); // tgen
  S19763C20(); // tgen
};
//SIG(-1 S19763C20) C1{ BC2{ VBC3{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC4{ BC3 VBC5{ v2 v3 v4 Fi[2] Fl[2] FC3[3]} VBC6{ VBC3 Fp FC3 FL:3} VBC7{ v5 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} FC7 Fs Fi[2]} BC8{ BC7 BC5 BC3 vd v6 Fl FL Fp[8] FC4 Fp Fi FC4 Fi} BC9{ VBC8 VBC3 VBC6 BC4 BC10{ VBC7 VBC8 VBC3 VBC6 FL:44 Fp Fi FC4 Fl[2] Fi[3] FC8 Fc:7 FC11{ BC7 vd v10 FC6 Fi Fp Fi}} v7 FC8 FL Fc:7} v8 v9 FC10 Fs FL:8} VBC12{ VBC13{ VBC11 VBC3 VBC10 vd Fi FD Fi Fp Fl FU14{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi Fl} VBC15{ BC4 VBC16{ VBC7 BC5 VBC9 Fc:8 Fi} BC17{ BC3 VBC7 VBC16 BC4 BC11 vd v11 Fi FC4 Fi Fs FL:8 Fi} v12 v13 FC16 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]} BC17 v14 Fi Fl Fi[4]} VBC18{ v15 v16 Fp Fl Fi FL Fp Fi Fi Fi Fi} Fi Fi[6] Fl[3] Fl Fi Fi Fi Fi Fc:7 Fp Fc FC4 Fi}


S19763C20 ::~S19763C20(){ note_dtor("S19763C20", this);} // tgen
S19763C20 ::S19763C20(){ note_ctor("S19763C20", this);} // tgen

static void Test_S19763C20()
{
  extern Class_Descriptor cd_S19763C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4699,11932)];
    init_test(&cd_S19763C20, buf);
    S19763C20 *dp, &lv = *(dp=new (buf) S19763C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(75168,47724), "sizeof(S19763C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C20)");
    /*is_ambiguous_... S19763C6::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C6*), ABISELECT(27944,17724), "S19763C20");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(27944,17724), "S19763C20");
    /*is_ambiguous_... S19763C11::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*)(S19763C6*), ABISELECT(27944,17724), "S19763C20");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(27944,17724), "S19763C20");
    /*is_ambiguous_... S19763C22::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C22*), ABISELECT(27944,17724), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*), ABISELECT(27944,17724), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*), ABISELECT(27944,17724), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*), ABISELECT(27944,17724), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*), ABISELECT(28096,17820), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*), ABISELECT(28560,18112), "S19763C20");
    check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(28560,18112), "S19763C20");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C19*), ABISELECT(28560,18112), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*), ABISELECT(28560,18112), "S19763C20");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(28560,18112), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(28560,18112), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*), ABISELECT(29024,18420), "S19763C20");
    check_base_class_offset(lv, (S19763C8*)(S19763C11*)(S19763C6*), ABISELECT(29024,18420), "S19763C20");
    check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(29024,18420), "S19763C20");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(29024,18420), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C12*), ABISELECT(29024,18420), "S19763C20");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C19*), ABISELECT(29024,18420), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C11*), ABISELECT(29024,18420), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*), ABISELECT(29024,18420), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*), ABISELECT(29024,18420), "S19763C20");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(29024,18420), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(29024,18420), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*), ABISELECT(29200,18528), "S19763C20");
    check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C19*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C15::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C15*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C16::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C16*)(S19763C19*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C16*)(S19763C21*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C6::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C6*), ABISELECT(28096,17820), "S19763C20");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C10*)(S19763C6*), 0, "S19763C20");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C10*)(S19763C6*), ABISELECT(296,184), "S19763C20");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C10*)(S19763C6*), ABISELECT(760,492), "S19763C20");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C6*), 0, "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(29504,18712), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(29800,18896), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(30264,19204), "S19763C20");
    check_base_class_offset(lv, (S19763C10*)(S19763C11*)(S19763C6*), ABISELECT(29504,18712), "S19763C20");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(29504,18712), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C12*), ABISELECT(29504,18712), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C11*), ABISELECT(29504,18712), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*), ABISELECT(29504,18712), "S19763C20");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(4128,2620), "S19763C20");
    check_base_class_offset(lv, (S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(4128,2620), "S19763C20");
    check_base_class_offset(lv, (S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(4592,2912), "S19763C20");
    check_base_class_offset(lv, (S19763C11*)(S19763C6*), ABISELECT(4128,2620), "S19763C20");
    check_base_class_offset(lv, (S19763C6*), 0, "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C13 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C13*), ABISELECT(36560,23196), "S19763C20");
    check_base_class_offset(lv, (S19763C13*)(S19763C22*), ABISELECT(36560,23196), "S19763C20");
    check_base_class_offset(lv, (S19763C12*)(S19763C22*), ABISELECT(37200,23596), "S19763C20");
    check_base_class_offset(lv, (S19763C22*)(S19763C21*), ABISELECT(36480,23148), "S19763C20");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C19*), ABISELECT(43600,27648), "S19763C20");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C19*), ABISELECT(43600,27648), "S19763C20");
    /*is_ambiguous_... S19763C15::S19763C4 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C15*), ABISELECT(63624,40388), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*), ABISELECT(64096,40704), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C11*), ABISELECT(64096,40704), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C12*)(S19763C11*), ABISELECT(64560,40996), "S19763C20");
    check_base_class_offset(lv, (S19763C11*)(S19763C15*), ABISELECT(64096,40704), "S19763C20");
    check_base_class_offset(lv, (S19763C15*)(S19763C19*), ABISELECT(63624,40388), "S19763C20");
    check_base_class_offset(lv, (S19763C15*)(S19763C16*)(S19763C19*), ABISELECT(63624,40388), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C15*)(S19763C16*)(S19763C21*), ABISELECT(63624,40388), "S19763C20");
    /*is_ambiguous_... S19763C16::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C16*)(S19763C19*), ABISELECT(44064,27940), "S19763C20");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(44208,28036), "S19763C20");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(44208,28036), "S19763C20");
    check_base_class_offset(lv, (S19763C9*)(S19763C13*)(S19763C16*)(S19763C19*), ABISELECT(44672,28328), "S19763C20");
    check_base_class_offset(lv, (S19763C13*)(S19763C16*)(S19763C19*), ABISELECT(44672,28328), "S19763C20");
    check_base_class_offset(lv, (S19763C16*)(S19763C19*), ABISELECT(44064,27940), "S19763C20");
    check_base_class_offset(lv, (S19763C19*)(S19763C21*), ABISELECT(43600,27648), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C16*)(S19763C21*), ABISELECT(33632,21332), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(33776,21428), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(33776,21428), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C13*)(S19763C16*)(S19763C21*), ABISELECT(34240,21720), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C13*)(S19763C16*)(S19763C21*), ABISELECT(34240,21720), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C16*)(S19763C21*), ABISELECT(33632,21332), "S19763C20");
    check_base_class_offset(lv, (S19763C21*), ABISELECT(33632,21332), "S19763C20");
    check_base_class_offset(lv, (S19763C24*), ABISELECT(75104,47680), "S19763C20");
    check_field_offset(lv, s19763c20f0, ABISELECT(26276,16660), "S19763C20.s19763c20f0");
    check_field_offset(lv, s19763c20f1, ABISELECT(26280,16664), "S19763C20.s19763c20f1");
    check_field_offset(lv, s19763c20f2, ABISELECT(26304,16688), "S19763C20.s19763c20f2");
    check_field_offset(lv, s19763c20f3, ABISELECT(26328,16700), "S19763C20.s19763c20f3");
    check_field_offset(lv, s19763c20f4, ABISELECT(26336,16704), "S19763C20.s19763c20f4");
    check_field_offset(lv, s19763c20f5, ABISELECT(26340,16708), "S19763C20.s19763c20f5");
    check_field_offset(lv, s19763c20f6, ABISELECT(26344,16712), "S19763C20.s19763c20f6");
    check_field_offset(lv, s19763c20f7, ABISELECT(26348,16716), "S19763C20.s19763c20f7");
    set_bf_and_test(lv, s19763c20f8, ABISELECT(26352,16720), 0, 7, 1, "S19763C20");
    set_bf_and_test(lv, s19763c20f8, ABISELECT(26352,16720), 0, 7, hide_sll(1LL<<6), "S19763C20");
    check_field_offset(lv, s19763c20f9, ABISELECT(26360,16724), "S19763C20.s19763c20f9");
    check_field_offset(lv, s19763c20f10, ABISELECT(26368,16728), "S19763C20.s19763c20f10");
    check_field_offset(lv, s19763c20f11, ABISELECT(26384,16732), "S19763C20.s19763c20f11");
    check_field_offset(lv, s19763c20f12, ABISELECT(27936,17720), "S19763C20.s19763c20f12");
    test_class_info(&lv, &cd_S19763C20);
    dp->~S19763C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C20(Test_S19763C20, "S19763C20", ABISELECT(75168,47724));

#else // __cplusplus

extern void _ZN9S19763C20C1Ev();
extern void _ZN9S19763C20D1Ev();
Name_Map name_map_S19763C20[] = {
  NSPAIR(_ZN9S19763C20C1Ev),
  NSPAIR(_ZN9S19763C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
extern Class_Descriptor cd_S19763C6;
extern VTBL_ENTRY _ZTI8S19763C6[];
extern  VTBL_ENTRY _ZTV8S19763C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C6[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C22;
extern VTBL_ENTRY _ZTI9S19763C22[];
extern  VTBL_ENTRY _ZTV9S19763C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C22[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
extern Class_Descriptor cd_S19763C15;
extern VTBL_ENTRY _ZTI9S19763C15[];
extern  VTBL_ENTRY _ZTV9S19763C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C15[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C16;
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
extern Class_Descriptor cd_S19763C19;
extern VTBL_ENTRY _ZTI9S19763C19[];
extern  VTBL_ENTRY _ZTV9S19763C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C19[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C16;
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
extern Class_Descriptor cd_S19763C21;
extern VTBL_ENTRY _ZTI9S19763C21[];
extern  VTBL_ENTRY _ZTV9S19763C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C21[];
extern Class_Descriptor cd_S19763C24;
extern VTBL_ENTRY _ZTI9S19763C24[];
extern  VTBL_ENTRY _ZTV9S19763C24[];
static Base_Class bases_S19763C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C5,    ABISELECT(27944,17724), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(28096,17820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(28560,18112), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C8,    ABISELECT(29024,18420), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C9,    ABISELECT(29200,18528), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C7,    ABISELECT(28096,17820), //bcp->offset
    53, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19763C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(296,184), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(760,492), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19763C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(29504,18712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(29800,18896), //bcp->offset
    89, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(30264,19204), //bcp->offset
    94, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19763C10,    ABISELECT(29504,18712), //bcp->offset
    76, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19763C12,    ABISELECT(4592,2912), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19763C11,    ABISELECT(4128,2620), //bcp->offset
    30, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19763C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C9,    ABISELECT(36560,23196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(36560,23196), //bcp->offset
    145, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19763C12,    ABISELECT(37200,23596), //bcp->offset
    154, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19763C22,    ABISELECT(36480,23148), //bcp->offset
    134, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(43600,27648), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(43600,27648), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(63624,40388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(64096,40704), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(64096,40704), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19763C12,    ABISELECT(64560,40996), //bcp->offset
    241, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    168, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19763C11,    ABISELECT(64096,40704), //bcp->offset
    227, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    162, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S19763C15,    ABISELECT(63624,40388), //bcp->offset
    210, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    152, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(44064,27940), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(44208,28036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(44208,28036), //bcp->offset
    197, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(44672,28328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(44672,28328), //bcp->offset
    204, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19763C16,    ABISELECT(44064,27940), //bcp->offset
    184, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19763C19,    ABISELECT(43600,27648), //bcp->offset
    163, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(33632,21332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(33776,21428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(33776,21428), //bcp->offset
    121, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(34240,21720), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(34240,21720), //bcp->offset
    128, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19763C16,    ABISELECT(33632,21332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19763C21,    ABISELECT(33632,21332), //bcp->offset
    97, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C24,    ABISELECT(75104,47680), //bcp->offset
    249, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19763C20[];
extern void _ZN8S19763C92v7Ev();
extern void _ZN9S19763C20D1Ev();
extern void _ZN9S19763C20D0Ev();
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C63v10Ev();
extern void _ZN8S19763C63v11Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZThn4128_N9S19763C20D1Ev,_ZThn2620_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn4128_N9S19763C20D0Ev,_ZThn2620_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn4592_N9S19763C20D1Ev,_ZThn2912_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn4592_N9S19763C20D0Ev,_ZThn2912_N9S19763C20D0Ev)();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn29504_N9S19763C20D1Ev,_ZThn18712_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn29504_N9S19763C20D0Ev,_ZThn18712_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTv0_n120_N9S19763C20D1Ev,_ZTv0_n60_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn33632_N9S19763C20D1Ev,_ZThn21332_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19763C20D0Ev,_ZTv0_n60_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn33632_N9S19763C20D0Ev,_ZThn21332_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN9S19763C163v13Ev();
extern void _ZN9S19763C213v16Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn608_n120_N9S19763C20D1Ev,_ZTvn388_n60_N9S19763C20D1Ev)();
extern void ABISELECT(_ZTvn608_n120_N9S19763C20D0Ev,_ZTvn388_n60_N9S19763C20D0Ev)();
extern void _ZN9S19763C133v12Ev();
extern void ABISELECT(_ZTv0_n72_N9S19763C20D1Ev,_ZTv0_n36_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn36480_N9S19763C20D1Ev,_ZThn23148_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19763C20D0Ev,_ZTv0_n36_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn36480_N9S19763C20D0Ev,_ZThn23148_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn36560_N9S19763C20D1Ev,_ZThn23196_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn36560_N9S19763C20D0Ev,_ZThn23196_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
extern void ABISELECT(_ZTv0_n56_N9S19763C20D1Ev,_ZTv0_n28_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn37200_N9S19763C20D1Ev,_ZThn23596_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C20D0Ev,_ZTv0_n28_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn37200_N9S19763C20D0Ev,_ZThn23596_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N9S19763C20D1Ev,_ZTv0_n52_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn43600_N9S19763C20D1Ev,_ZThn27648_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19763C20D0Ev,_ZTv0_n52_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn43600_N9S19763C20D0Ev,_ZThn27648_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N9S19763C20D1Ev,_ZTvn292_n52_N9S19763C20D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N9S19763C20D0Ev,_ZTvn292_n52_N9S19763C20D0Ev)();
extern void _ZN9S19763C163v13Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C20D1Ev,_ZTvn680_n52_N9S19763C20D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C20D0Ev,_ZTvn680_n52_N9S19763C20D0Ev)();
extern void _ZN9S19763C133v12Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C20D1Ev,_ZTv0_n48_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn63624_N9S19763C20D1Ev,_ZThn40388_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C20D0Ev,_ZTv0_n48_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn63624_N9S19763C20D0Ev,_ZThn40388_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C20D1Ev,_ZTv0_n40_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn64096_N9S19763C20D1Ev,_ZThn40704_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C20D0Ev,_ZTv0_n40_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn64096_N9S19763C20D0Ev,_ZThn40704_N9S19763C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S19763C20D1Ev,_ZTvn292_n40_N9S19763C20D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C20D0Ev,_ZTvn292_n40_N9S19763C20D0Ev)();
extern void _ZN9S19763C243v17Ev();
extern void _ZN9S19763C243v18Ev();
static  VTBL_ENTRY vtc_S19763C20[] = {
  ABISELECT(75104,47680),
  ABISELECT(64096,40704),
  ABISELECT(63624,40388),
  ABISELECT(43600,27648),
  ABISELECT(37200,23596),
  ABISELECT(36560,23196),
  ABISELECT(36480,23148),
  ABISELECT(33632,21332),
  ABISELECT(29504,18712),
  ABISELECT(29200,18528),
  ABISELECT(29024,18420),
  ABISELECT(28560,18112),
  ABISELECT(28096,17820),
  ABISELECT(27944,17724),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN9S19763C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C20D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v11Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(25376,16092),
  ABISELECT(25072,15908),
  ABISELECT(23816,15104),
  ABISELECT(24896,15800),
  ABISELECT(24432,15492),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S19763C20D1Ev,_ZThn2620_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S19763C20D0Ev,_ZThn2620_N9S19763C20D0Ev),
  ABISELECT(24432,15508),
  ABISELECT(23352,14812),
  ABISELECT(24912,15800),
  ABISELECT(24608,15616),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S19763C20D1Ev,_ZThn2912_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S19763C20D0Ev,_ZThn2912_N9S19763C20D0Ev),
  0,
  ABISELECT(-27944,-17724),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-28096,-17820),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  0,
  0,
  ABISELECT(-28560,-18112),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-1080,-696),
  ABISELECT(-29024,-18420),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  0,
  ABISELECT(-29200,-18528),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-29504,-18712),
  0,
  ABISELECT(-29504,-18712),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-29800,-18896),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-30264,-19204),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-33632,-21332),
  0,
  ABISELECT(9968,6316),
  ABISELECT(3568,2264),
  ABISELECT(2928,1864),
  ABISELECT(2848,1816),
  ABISELECT(-5072,-3220),
  ABISELECT(-4608,-2912),
  ABISELECT(-5688,-3608),
  ABISELECT(-4128,-2620),
  ABISELECT(30464,19372),
  ABISELECT(29992,19056),
  ABISELECT(-4432,-2804),
  ABISELECT(-33632,-21332),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19763C20D1Ev,_ZTv0_n60_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19763C20D0Ev,_ZTv0_n60_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19763C213v16Ev,
  ABISELECT(-4576,-2900),
  ABISELECT(-5832,-3704),
  ABISELECT(-4752,-3008),
  ABISELECT(-5216,-3316),
  ABISELECT(-33776,-21428),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-34240,-21720),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n120_N9S19763C20D1Ev,_ZTvn388_n60_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n120_N9S19763C20D0Ev,_ZTvn388_n60_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  ABISELECT(-36480,-23148),
  ABISELECT(-7456,-4728),
  ABISELECT(-6976,-4436),
  ABISELECT(-7280,-4620),
  ABISELECT(720,448),
  ABISELECT(-8536,-5424),
  ABISELECT(80,48),
  ABISELECT(-36480,-23148),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C20D1Ev,_ZTv0_n36_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C20D0Ev,_ZTv0_n36_N9S19763C20D0Ev),
  0,
  ABISELECT(-36560,-23196),
  0,
  ABISELECT(-36560,-23196),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  ABISELECT(-37200,-23596),
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  ABISELECT(-37200,-23596),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C20D1Ev,_ZTv0_n28_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C20D0Ev,_ZTv0_n28_N9S19763C20D0Ev),
  ABISELECT(1072,680),
  ABISELECT(1072,680),
  ABISELECT(464,292),
  ABISELECT(-43600,-27648),
  0,
  0,
  0,
  ABISELECT(-14096,-8936),
  ABISELECT(20496,13056),
  ABISELECT(20024,12740),
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  ABISELECT(-43600,-27648),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C20D1Ev,_ZTv0_n52_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C20D0Ev,_ZTv0_n52_N9S19763C20D0Ev),
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  ABISELECT(-44064,-27940),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C20D1Ev,_ZTvn292_n52_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C20D0Ev,_ZTvn292_n52_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-44208,-28036),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-44672,-28328),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C20D1Ev,_ZTvn680_n52_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C20D0Ev,_ZTvn680_n52_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  ABISELECT(-63624,-40388),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-63624,-40388),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C20D1Ev,_ZTv0_n48_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C20D0Ev,_ZTv0_n48_N9S19763C20D0Ev),
  ABISELECT(-64096,-40704),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-64096,-40704),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C20D1Ev,_ZTv0_n40_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C20D0Ev,_ZTv0_n40_N9S19763C20D0Ev),
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-64560,-40996),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C20D1Ev,_ZTvn292_n40_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C20D0Ev,_ZTvn292_n40_N9S19763C20D0Ev),
  0,
  0,
  ABISELECT(-75104,-47680),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN9S19763C243v17Ev,
  (VTBL_ENTRY)&_ZN9S19763C243v18Ev,
};
extern VTBL_ENTRY _ZTV9S19763C20[];
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C6D1Ev();
extern void _ZN8S19763C6D0Ev();
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C63v10Ev();
extern void _ZN8S19763C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C6__9S19763C20[] = {
  ABISELECT(29504,18712),
  ABISELECT(29200,18528),
  ABISELECT(29024,18420),
  ABISELECT(28560,18112),
  ABISELECT(28096,17820),
  ABISELECT(27944,17724),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN8S19763C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19763C6D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v11Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(25376,16092),
  ABISELECT(25072,15908),
  ABISELECT(23816,15104),
  ABISELECT(24896,15800),
  ABISELECT(24432,15492),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C118S19763C6__A1__9S19763C20[] = {
  ABISELECT(25072,15908),
  ABISELECT(23816,15104),
  ABISELECT(24896,15800),
  ABISELECT(24432,15492),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C118S19763C6__A1__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(-24432,-15492),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C118S19763C6__A1__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-24896,-15800),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C118S19763C6__A1__9S19763C20[] = {
  0,
  ABISELECT(-23816,-15104),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C118S19763C6__A1__9S19763C20[] = {
  0,
  ABISELECT(-25072,-15908),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(24432,15508),
  ABISELECT(23352,14812),
  ABISELECT(24912,15800),
  ABISELECT(24608,15616),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C118S19763C6__9S19763C20[] = {
  0,
  ABISELECT(-24608,-15616),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn24912_N9S19763C12D1Ev,_ZThn15800_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn24912_N9S19763C12D0Ev,_ZThn15800_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-24912,-15800),
  0,
  ABISELECT(-24912,-15800),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(-25208,-15984),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(-25672,-16292),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C118S19763C6__9S19763C20[] = {
  0,
  ABISELECT(-23352,-14812),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-24432,-15508),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn25376_N9S19763C11D1Ev,_ZThn16092_N9S19763C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void ABISELECT(_ZThn25376_N9S19763C11D0Ev,_ZThn16092_N9S19763C11D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-25376,-16092),
  0,
  ABISELECT(-25376,-16092),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(-25672,-16276),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(-26136,-16584),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C118S19763C6__9S19763C20[] = {
  0,
  ABISELECT(-23816,-15104),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-24896,-15800),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C118S19763C6__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(-24432,-15492),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C118S19763C6__9S19763C20[] = {
  0,
  ABISELECT(-25072,-15908),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(24432,15508),
  ABISELECT(23352,14812),
  ABISELECT(24912,15800),
  ABISELECT(24608,15616),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C6__9S19763C20[] = {
  0,
  ABISELECT(-27944,-17724),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__8S19763C6__9S19763C20[] = {
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-28096,-17820),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C6__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(-28560,-18112),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C6__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-29024,-18420),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C6__9S19763C20[] = {
  0,
  ABISELECT(-29200,-18528),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZThn4128_N8S19763C6D1Ev,_ZThn2620_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn4128_N8S19763C6D0Ev,_ZThn2620_N8S19763C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C11__8S19763C6__9S19763C20[] = {
  ABISELECT(25376,16092),
  ABISELECT(25072,15908),
  ABISELECT(23816,15104),
  ABISELECT(24896,15800),
  ABISELECT(24432,15492),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C6D1Ev,_ZThn2620_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C6D0Ev,_ZThn2620_N8S19763C6D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn29504_N8S19763C6D1Ev,_ZThn18712_N8S19763C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev)();
extern void ABISELECT(_ZThn29504_N8S19763C6D0Ev,_ZThn18712_N8S19763C6D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__A1__8S19763C6__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-29504,-18712),
  0,
  ABISELECT(-29504,-18712),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A2__8S19763C6__9S19763C20[] = {
  ABISELECT(-29800,-18896),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A3__8S19763C6__9S19763C20[] = {
  ABISELECT(-30264,-19204),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S19763C6D1Ev,_ZThn2912_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn4592_N8S19763C6D0Ev,_ZThn2912_N8S19763C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__8S19763C6__9S19763C20[] = {
  ABISELECT(24432,15508),
  ABISELECT(23352,14812),
  ABISELECT(24912,15800),
  ABISELECT(24608,15616),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C6D1Ev,_ZThn2912_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C6D0Ev,_ZThn2912_N8S19763C6D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__9S19763C20[] = {
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C7__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C7__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C7__9S19763C20[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C7__9S19763C20[] = {
  0,
  ABISELECT(-1104,-708),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C20[] = {
  ABISELECT(-1080,-696),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__9S19763C20[] = {
  0,
  ABISELECT(1080,696),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C21D1Ev();
extern void _ZN9S19763C21D0Ev();
extern void _ZN9S19763C163v13Ev();
extern void _ZN9S19763C213v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C21__9S19763C20[] = {
  ABISELECT(9968,6316),
  ABISELECT(3568,2264),
  ABISELECT(2928,1864),
  ABISELECT(2848,1816),
  ABISELECT(-5072,-3220),
  ABISELECT(-4608,-2912),
  ABISELECT(-5688,-3608),
  ABISELECT(-4128,-2620),
  ABISELECT(30464,19372),
  ABISELECT(29992,19056),
  ABISELECT(-4432,-2804),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C21D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19763C213v16Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C21__A1__9S19763C20[] = {
  ABISELECT(-5072,-3220),
  ABISELECT(-4608,-2912),
  ABISELECT(-5688,-3608),
  ABISELECT(-4128,-2620),
  ABISELECT(30464,19372),
  ABISELECT(29992,19056),
  ABISELECT(-4432,-2804),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C21__A5__9S19763C20[] = {
  ABISELECT(-4576,-2900),
  ABISELECT(-5832,-3704),
  ABISELECT(-4752,-3008),
  ABISELECT(-5216,-3316),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C169S19763C21__A5__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(5216,3316),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C169S19763C21__A5__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(4752,3008),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C21__A5__9S19763C20[] = {
  0,
  ABISELECT(5832,3704),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C169S19763C21__A5__9S19763C20[] = {
  0,
  ABISELECT(4576,2900),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C169S19763C21__A1__9S19763C20[] = {
  0,
  ABISELECT(4432,2804),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn29992_N9S19763C16D1Ev,_ZThn19056_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn29992_N9S19763C16D0Ev,_ZThn19056_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C169S19763C21__A1__9S19763C20[] = {
  ABISELECT(-29992,-19056),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-29992,-19056),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn30464_N9S19763C16D1Ev,_ZThn19372_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn30464_N9S19763C16D0Ev,_ZThn19372_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C169S19763C21__A1__9S19763C20[] = {
  ABISELECT(-30464,-19372),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-30464,-19372),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C169S19763C21__A1__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4128,2620),
  0,
  ABISELECT(4128,2620),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C21__A1__9S19763C20[] = {
  ABISELECT(3832,2436),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C21__A1__9S19763C20[] = {
  ABISELECT(3368,2128),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A2__9S19763C169S19763C21__A1__9S19763C20[] = {
  0,
  ABISELECT(5688,3608),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C169S19763C21__A1__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(4608,2912),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C169S19763C21__A1__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(5072,3220),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C169S19763C21__A1__9S19763C20[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-30928,-19664),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C169S19763C21__A1__9S19763C20[] = {
  ABISELECT(-4576,-2900),
  ABISELECT(-5832,-3704),
  ABISELECT(-4752,-3008),
  ABISELECT(-5216,-3316),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn2848_N9S19763C21D1Ev,_ZThn1816_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn2848_N9S19763C21D0Ev,_ZThn1816_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C22__9S19763C21__9S19763C20[] = {
  ABISELECT(-2848,-1816),
  ABISELECT(-7456,-4728),
  ABISELECT(-6976,-4436),
  ABISELECT(-7280,-4620),
  ABISELECT(720,448),
  ABISELECT(-8536,-5424),
  ABISELECT(80,48),
  ABISELECT(-2848,-1816),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn2928_N9S19763C21D1Ev,_ZThn1864_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn2928_N9S19763C21D0Ev,_ZThn1864_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C13__9S19763C21__9S19763C20[] = {
  0,
  ABISELECT(-2928,-1864),
  0,
  ABISELECT(-2928,-1864),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__9S19763C21__9S19763C20[] = {
  0,
  ABISELECT(5688,3608),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn3568_N9S19763C21D1Ev,_ZThn2264_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn3568_N9S19763C21D0Ev,_ZThn2264_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C21__9S19763C20[] = {
  ABISELECT(-3568,-2264),
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  ABISELECT(-3568,-2264),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C21__9S19763C20[] = {
  0,
  ABISELECT(4432,2804),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C21__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4128,2620),
  0,
  ABISELECT(4128,2620),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C21__9S19763C20[] = {
  ABISELECT(3832,2436),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C21__9S19763C20[] = {
  ABISELECT(3368,2128),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C21__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(4608,2912),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn9968_N9S19763C21D1Ev,_ZThn6316_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn9968_N9S19763C21D0Ev,_ZThn6316_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C19__9S19763C21__9S19763C20[] = {
  ABISELECT(1072,680),
  ABISELECT(1072,680),
  ABISELECT(464,292),
  ABISELECT(-9968,-6316),
  0,
  0,
  0,
  ABISELECT(-14096,-8936),
  ABISELECT(20496,13056),
  ABISELECT(20024,12740),
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  ABISELECT(-9968,-6316),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C21__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(5072,3220),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn29992_N9S19763C21D1Ev,_ZThn19056_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn29992_N9S19763C21D0Ev,_ZThn19056_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C21__9S19763C20[] = {
  ABISELECT(-29992,-19056),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-29992,-19056),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn30464_N9S19763C21D1Ev,_ZThn19372_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn30464_N9S19763C21D0Ev,_ZThn19372_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C21__9S19763C20[] = {
  ABISELECT(-30464,-19372),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-30464,-19372),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev),
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C21D1Ev,_ZTvn292_n40_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C21D0Ev,_ZTvn292_n40_N9S19763C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__A1__9S19763C21__9S19763C20[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-30928,-19664),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C21D1Ev,_ZTvn292_n40_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C21D0Ev,_ZTvn292_n40_N9S19763C21D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N9S19763C21D1Ev,_ZTvn292_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N9S19763C21D0Ev,_ZTvn292_n52_N9S19763C21D0Ev)();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C19__9S19763C21__9S19763C20[] = {
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  ABISELECT(-10432,-6608),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C21D1Ev,_ZTvn292_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C21D0Ev,_ZTvn292_n52_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C19__A2__9S19763C21__9S19763C20[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-10576,-6704),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C21D1Ev,_ZTvn680_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C21D0Ev,_ZTvn680_n52_N9S19763C21D0Ev)();
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C139S19763C169S19763C19__A1__9S19763C21__9S19763C20[] = {
  ABISELECT(-11040,-6996),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C21D1Ev,_ZTvn680_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C21D0Ev,_ZTvn680_n52_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C16__A3__9S19763C21__9S19763C20[] = {
  ABISELECT(-4576,-2900),
  ABISELECT(-5832,-3704),
  ABISELECT(-4752,-3008),
  ABISELECT(-5216,-3316),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN9S19763C22D1Ev();
extern void _ZN9S19763C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C22__9S19763C20[] = {
  ABISELECT(-7456,-4728),
  ABISELECT(-6976,-4436),
  ABISELECT(-7280,-4620),
  ABISELECT(720,448),
  ABISELECT(-8536,-5424),
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN9S19763C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C22D0Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S19763C22D1Ev,_ZThn48_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S19763C22D0Ev,_ZThn48_N9S19763C22D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C13__9S19763C22__9S19763C20[] = {
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__9S19763C22__9S19763C20[] = {
  0,
  ABISELECT(8536,5424),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn720_N9S19763C22D1Ev,_ZThn448_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn720_N9S19763C22D0Ev,_ZThn448_N9S19763C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C22__9S19763C20[] = {
  ABISELECT(-720,-448),
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  ABISELECT(-720,-448),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C22__9S19763C20[] = {
  0,
  ABISELECT(7280,4620),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C22__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(6976,4436),
  0,
  ABISELECT(6976,4436),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C22__9S19763C20[] = {
  ABISELECT(6680,4252),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C22__9S19763C20[] = {
  ABISELECT(6216,3944),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C22__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(7456,4728),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C12__A1__9S19763C20[] = {
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C12__A1__9S19763C20[] = {
  0,
  ABISELECT(8000,5068),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C12__A1__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(7696,4884),
  0,
  ABISELECT(7696,4884),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C12__A1__9S19763C20[] = {
  ABISELECT(7400,4700),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C12__A1__9S19763C20[] = {
  ABISELECT(6936,4392),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C12__A1__9S19763C20[] = {
  0,
  ABISELECT(9256,5872),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C12__A1__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(8176,5176),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void _ZN9S19763C19D1Ev();
extern void _ZN9S19763C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C19__9S19763C20[] = {
  ABISELECT(-14096,-8936),
  ABISELECT(20496,13056),
  ABISELECT(20024,12740),
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&_ZN9S19763C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C19D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C19__A2__9S19763C20[] = {
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C19__A2__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(15040,9536),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C19__A2__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(14576,9228),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C19__A2__9S19763C20[] = {
  0,
  ABISELECT(15656,9924),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C19__A2__9S19763C20[] = {
  0,
  ABISELECT(14400,9120),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C19__9S19763C20[] = {
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C19__A4__9S19763C20[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C169S19763C19__A4__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(15648,9924),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C169S19763C19__A4__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(15184,9616),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C19__A4__9S19763C20[] = {
  0,
  ABISELECT(16264,10312),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C169S19763C19__A4__9S19763C20[] = {
  0,
  ABISELECT(15008,9508),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C169S19763C19__9S19763C20[] = {
  0,
  ABISELECT(14864,9412),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn19560_N9S19763C16D1Ev,_ZThn12448_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn19560_N9S19763C16D0Ev,_ZThn12448_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C169S19763C19__9S19763C20[] = {
  ABISELECT(-19560,-12448),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-19560,-12448),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn20032_N9S19763C16D1Ev,_ZThn12764_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn20032_N9S19763C16D0Ev,_ZThn12764_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C169S19763C19__9S19763C20[] = {
  ABISELECT(-20032,-12764),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-20032,-12764),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C169S19763C19__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(14560,9228),
  0,
  ABISELECT(14560,9228),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C19__9S19763C20[] = {
  ABISELECT(14264,9044),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C19__9S19763C20[] = {
  ABISELECT(13800,8736),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A2__9S19763C169S19763C19__9S19763C20[] = {
  0,
  ABISELECT(16120,10216),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C169S19763C19__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(15040,9520),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C169S19763C19__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(15504,9828),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C169S19763C19__9S19763C20[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-20496,-13056),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C169S19763C19__9S19763C20[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__9S19763C19__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(15040,9536),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C19__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(14576,9228),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C19__9S19763C20[] = {
  0,
  ABISELECT(15656,9924),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C19__9S19763C20[] = {
  0,
  ABISELECT(14400,9120),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn20024_N9S19763C19D1Ev,_ZThn12740_N9S19763C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev)();
extern void ABISELECT(_ZThn20024_N9S19763C19D0Ev,_ZThn12740_N9S19763C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C19__9S19763C20[] = {
  ABISELECT(-20024,-12740),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-20024,-12740),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn20496_N9S19763C19D1Ev,_ZThn13056_N9S19763C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev)();
extern void ABISELECT(_ZThn20496_N9S19763C19D0Ev,_ZThn13056_N9S19763C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C19__9S19763C20[] = {
  ABISELECT(-20496,-13056),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-20496,-13056),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C19D1Ev,_ZTv0_n16_N9S19763C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C19D0Ev,_ZTv0_n16_N9S19763C19D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C19__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(14096,8936),
  0,
  ABISELECT(14096,8936),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C19D1Ev,_ZTv0_n16_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C19D0Ev,_ZTv0_n16_N9S19763C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A2__9S19763C19__9S19763C20[] = {
  ABISELECT(13800,8752),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A2__9S19763C19__9S19763C20[] = {
  ABISELECT(13336,8444),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C19D1Ev,_ZTvn292_n40_N9S19763C19D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C19D0Ev,_ZTvn292_n40_N9S19763C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C19__9S19763C20[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-20960,-13348),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C19D1Ev,_ZTvn292_n40_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C19D0Ev,_ZTvn292_n40_N9S19763C19D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZThn464_N9S19763C19D1Ev,_ZThn292_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C19D0Ev,_ZThn292_N9S19763C19D0Ev)();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C16__9S19763C19__9S19763C20[] = {
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C19D1Ev,_ZThn292_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C19D0Ev,_ZThn292_N9S19763C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C16__A2__9S19763C19__9S19763C20[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN9S19763C15D1Ev();
extern void _ZN9S19763C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C20[] = {
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C15__9S19763C20[] = {
  0,
  ABISELECT(34424,21860),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C15__9S19763C20[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C15__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(34120,21676),
  0,
  ABISELECT(34120,21676),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C15__9S19763C20[] = {
  ABISELECT(33824,21492),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C15__9S19763C20[] = {
  ABISELECT(33360,21184),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C15__9S19763C20[] = {
  0,
  ABISELECT(35680,22664),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C15__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(34600,21968),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C15__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(35064,22276),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C15__9S19763C20[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C11__A1__9S19763C20[] = {
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C11__A3__9S19763C20[] = {
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C11__A3__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(35536,22592),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C11__A3__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(35072,22284),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A3__9S19763C20[] = {
  0,
  ABISELECT(36152,22980),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C11__A3__9S19763C20[] = {
  0,
  ABISELECT(34896,22176),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__A2__9S19763C20[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C11__A2__9S19763C20[] = {
  0,
  ABISELECT(35360,22468),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C11__A2__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(35056,22284),
  0,
  ABISELECT(35056,22284),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__A2__9S19763C20[] = {
  ABISELECT(34760,22100),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__A2__9S19763C20[] = {
  ABISELECT(34296,21792),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C11__A2__9S19763C20[] = {
  0,
  ABISELECT(36616,23272),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C11__A2__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(35536,22576),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C11__A1__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(34592,21992),
  0,
  ABISELECT(34592,21992),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C11__A1__9S19763C20[] = {
  ABISELECT(34296,21808),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C11__A1__9S19763C20[] = {
  ABISELECT(33832,21500),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C11__A1__9S19763C20[] = {
  0,
  ABISELECT(36152,22980),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C11__A1__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(35072,22284),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C11__A1__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(35536,22592),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C11__A1__9S19763C20[] = {
  0,
  ABISELECT(34896,22176),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C11__A1__9S19763C20[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
static  VTT_ENTRY vtt_S19763C20[] = {
  {&(_ZTV9S19763C20[16]),  16,255},
  {&(_tg__ZTV8S19763C6__9S19763C20[8]),  8,14},
  {&(_tg__ZTV9S19763C118S19763C6__9S19763C20[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C118S19763C6__A1__9S19763C20[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C118S19763C6__A1__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C118S19763C6__A1__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C118S19763C6__A1__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C118S19763C6__A1__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C118S19763C6__9S19763C20[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C118S19763C6__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C118S19763C6__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C118S19763C6__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C118S19763C6__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C118S19763C6__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C118S19763C6__9S19763C20[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C118S19763C6__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C118S19763C6__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C118S19763C6__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C118S19763C6__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C118S19763C6__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C118S19763C6__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C118S19763C6__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C118S19763C6__9S19763C20[6]),  6,8},
  {&(_tg__ZTV8S19763C5__8S19763C6__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C7__8S19763C6__9S19763C20[7]),  7,8},
  {&(_tg__ZTV8S19763C4__8S19763C6__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C6__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C9__8S19763C6__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C11__8S19763C6__9S19763C20[7]),  7,11},
  {&(_tg__ZTV9S19763C10__A1__8S19763C6__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A2__8S19763C6__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A3__8S19763C6__9S19763C20[2]),  2,3},
  {&(_tg__ZTV9S19763C129S19763C11__8S19763C6__9S19763C20[6]),  6,8},
  {&(_ZTV9S19763C20[52]),  52,255},
  {&(_ZTV9S19763C20[60]),  60,255},
  {&(_ZTV9S19763C20[66]),  66,255},
  {&(_ZTV9S19763C20[72]),  72,255},
  {&(_ZTV9S19763C20[75]),  75,255},
  {&(_ZTV9S19763C20[37]),  37,255},
  {&(_ZTV9S19763C20[85]),  85,255},
  {&(_ZTV9S19763C20[91]),  91,255},
  {&(_ZTV9S19763C20[96]),  96,255},
  {&(_ZTV9S19763C20[47]),  47,255},
  {&(_ZTV9S19763C20[116]),  116,255},
  {&(_ZTV9S19763C20[143]),  143,255},
  {&(_ZTV9S19763C20[150]),  150,255},
  {&(_ZTV9S19763C20[161]),  161,255},
  {&(_ZTV9S19763C20[179]),  179,255},
  {&(_ZTV9S19763C20[222]),  222,255},
  {&(_ZTV9S19763C20[237]),  237,255},
  {&(_ZTV9S19763C20[247]),  247,255},
  {&(_ZTV9S19763C20[193]),  193,255},
  {&(_ZTV9S19763C20[203]),  203,255},
  {&(_ZTV9S19763C20[206]),  206,255},
  {&(_ZTV9S19763C20[127]),  127,255},
  {&(_ZTV9S19763C20[130]),  130,255},
  {&(_ZTV9S19763C20[253]),  253,255},
  {&(_tg__ZTV8S19763C7__9S19763C20[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C7__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C7__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C7__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C7__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C21__9S19763C20[13]),  13,18},
  {&(_tg__ZTV9S19763C169S19763C21__A1__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C21__A5__9S19763C20[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C169S19763C21__A5__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C169S19763C21__A5__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C21__A5__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C169S19763C21__A5__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C169S19763C21__A1__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C169S19763C21__A1__9S19763C20[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C169S19763C21__A1__9S19763C20[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C169S19763C21__A1__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C21__A1__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C21__A1__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A2__9S19763C169S19763C21__A1__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C169S19763C21__A1__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C169S19763C21__A1__9S19763C20[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C169S19763C21__A1__9S19763C20[6]),  6,8},
  {&(_tg__ZTV8S19763C7__A1__9S19763C169S19763C21__A1__9S19763C20[6]),  6,7},
  {&(_tg__ZTV9S19763C22__9S19763C21__9S19763C20[9]),  9,11},
  {&(_tg__ZTV9S19763C13__9S19763C21__9S19763C20[5]),  5,9},
  {&(_tg__ZTV8S19763C5__9S19763C21__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C21__9S19763C20[7]),  7,9},
  {&(_tg__ZTV8S19763C9__A1__9S19763C21__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C21__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C21__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C21__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C8__9S19763C21__9S19763C20[3]),  3,3},
  {&(_tg__ZTV9S19763C19__9S19763C21__9S19763C20[16]),  16,21},
  {&(_tg__ZTV8S19763C4__A1__9S19763C21__9S19763C20[5]),  5,8},
  {&(_tg__ZTV9S19763C15__9S19763C21__9S19763C20[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C21__9S19763C20[10]),  10,14},
  {&(_tg__ZTV9S19763C129S19763C11__A1__9S19763C21__9S19763C20[6]),  6,8},
  {&(_tg__ZTV9S19763C169S19763C19__9S19763C21__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C19__A2__9S19763C21__9S19763C20[6]),  6,7},
  {&(_tg__ZTV9S19763C139S19763C169S19763C19__A1__9S19763C21__9S19763C20[2]),  2,6},
  {&(_tg__ZTV8S19763C79S19763C16__A3__9S19763C21__9S19763C20[6]),  6,7},
  {&(_tg__ZTV9S19763C22__9S19763C20[8]),  8,10},
  {&(_tg__ZTV9S19763C13__9S19763C22__9S19763C20[5]),  5,9},
  {&(_tg__ZTV8S19763C5__9S19763C22__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C22__9S19763C20[7]),  7,9},
  {&(_tg__ZTV8S19763C9__A1__9S19763C22__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C22__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C22__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C22__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C8__9S19763C22__9S19763C20[3]),  3,3},
  {&(_tg__ZTV9S19763C12__A1__9S19763C20[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C12__A1__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C12__A1__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C12__A1__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C12__A1__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C12__A1__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C12__A1__9S19763C20[3]),  3,3},
  {&(_tg__ZTV9S19763C19__9S19763C20[9]),  9,14},
  {&(_tg__ZTV8S19763C79S19763C19__A2__9S19763C20[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C19__A2__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C19__A2__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C19__A2__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C19__A2__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C169S19763C19__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C19__A4__9S19763C20[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C169S19763C19__A4__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C169S19763C19__A4__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C19__A4__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C169S19763C19__A4__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C169S19763C19__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C169S19763C19__9S19763C20[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C169S19763C19__9S19763C20[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C169S19763C19__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C19__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C19__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A2__9S19763C169S19763C19__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C169S19763C19__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C169S19763C19__9S19763C20[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C169S19763C19__9S19763C20[6]),  6,8},
  {&(_tg__ZTV8S19763C7__A1__9S19763C169S19763C19__9S19763C20[6]),  6,7},
  {&(_tg__ZTV8S19763C4__9S19763C19__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C8__9S19763C19__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C19__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C19__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C19__9S19763C20[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C19__9S19763C20[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C19__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A2__9S19763C19__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A2__9S19763C19__9S19763C20[2]),  2,3},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C19__9S19763C20[6]),  6,8},
  {&(_tg__ZTV9S19763C16__9S19763C19__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C16__A2__9S19763C19__9S19763C20[6]),  6,7},
  {&(_tg__ZTV9S19763C15__9S19763C20[8]),  8,13},
  {&(_tg__ZTV8S19763C9__9S19763C15__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C11__9S19763C15__9S19763C20[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C15__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C15__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C15__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C15__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C15__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C15__9S19763C20[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C15__9S19763C20[6]),  6,8},
  {&(_tg__ZTV9S19763C11__A1__9S19763C20[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C11__A3__9S19763C20[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C11__A3__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C11__A3__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A3__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C11__A3__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C11__A2__9S19763C20[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C11__A2__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C11__A2__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__A2__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__A2__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C11__A2__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C11__A2__9S19763C20[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C11__A1__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C11__A1__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C11__A1__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C11__A1__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C11__A1__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C11__A1__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C11__A1__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C11__A1__9S19763C20[6]),  6,8},
};
extern VTBL_ENTRY _ZTI9S19763C20[];
extern  VTBL_ENTRY _ZTV9S19763C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C20[];
static VTBL_ENTRY alt_thunk_names10[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20496_N9S19763C19D0Ev,_ZThn13056_N9S19763C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20496_N9S19763C19D1Ev,_ZThn13056_N9S19763C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20024_N9S19763C19D0Ev,_ZThn12740_N9S19763C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20024_N9S19763C19D1Ev,_ZThn12740_N9S19763C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19763C22D0Ev,_ZThn448_N9S19763C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19763C22D1Ev,_ZThn448_N9S19763C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19763C22D0Ev,_ZThn48_N9S19763C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19763C22D1Ev,_ZThn48_N9S19763C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19763C21D0Ev,_ZThn19372_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19763C21D1Ev,_ZThn19372_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19763C21D0Ev,_ZThn19056_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19763C21D1Ev,_ZThn19056_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9968_N9S19763C21D0Ev,_ZThn6316_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9968_N9S19763C21D1Ev,_ZThn6316_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3568_N9S19763C21D0Ev,_ZThn2264_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3568_N9S19763C21D1Ev,_ZThn2264_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N9S19763C21D0Ev,_ZThn1864_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N9S19763C21D1Ev,_ZThn1864_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19763C21D0Ev,_ZThn1816_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19763C21D1Ev,_ZThn1816_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20032_N9S19763C16D0Ev,_ZThn12764_N9S19763C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19763C16D0Ev,_ZThn19372_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20032_N9S19763C16D1Ev,_ZThn12764_N9S19763C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19763C16D1Ev,_ZThn19372_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19560_N9S19763C16D0Ev,_ZThn12448_N9S19763C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19763C16D0Ev,_ZThn19056_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19560_N9S19763C16D1Ev,_ZThn12448_N9S19763C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19763C16D1Ev,_ZThn19056_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29504_N8S19763C6D0Ev,_ZThn18712_N8S19763C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29504_N8S19763C6D1Ev,_ZThn18712_N8S19763C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25376_N9S19763C11D0Ev,_ZThn16092_N9S19763C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25376_N9S19763C11D1Ev,_ZThn16092_N9S19763C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24912_N9S19763C12D0Ev,_ZThn15800_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24912_N9S19763C12D1Ev,_ZThn15800_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C20D0Ev,_ZTv0_n40_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64096_N9S19763C20D0Ev,_ZThn40704_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C20D1Ev,_ZTv0_n40_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64096_N9S19763C20D1Ev,_ZThn40704_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C20D0Ev,_ZTv0_n48_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn63624_N9S19763C20D0Ev,_ZThn40388_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C20D1Ev,_ZTv0_n48_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn63624_N9S19763C20D1Ev,_ZThn40388_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C20D0Ev,_ZTv0_n52_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43600_N9S19763C20D0Ev,_ZThn27648_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C20D1Ev,_ZTv0_n52_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43600_N9S19763C20D1Ev,_ZThn27648_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C20D0Ev,_ZTv0_n28_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37200_N9S19763C20D0Ev,_ZThn23596_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C20D1Ev,_ZTv0_n28_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37200_N9S19763C20D1Ev,_ZThn23596_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C20D0Ev,_ZTv0_n36_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36480_N9S19763C20D0Ev,_ZThn23148_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C20D1Ev,_ZTv0_n36_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36480_N9S19763C20D1Ev,_ZThn23148_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19763C20D0Ev,_ZTv0_n60_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33632_N9S19763C20D0Ev,_ZThn21332_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19763C20D1Ev,_ZTv0_n60_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33632_N9S19763C20D1Ev,_ZThn21332_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36560_N9S19763C20D0Ev,_ZThn23196_N9S19763C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn29504_N9S19763C20D0Ev,_ZThn18712_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36560_N9S19763C20D1Ev,_ZThn23196_N9S19763C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn29504_N9S19763C20D1Ev,_ZThn18712_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C20 = {  "S19763C20", // class name
  bases_S19763C20, 46,
  &(vtc_S19763C20[0]), // expected_vtbl_contents
  &(vtt_S19763C20[0]), // expected_vtt_contents
  ABISELECT(75168,47724), // object size
  NSPAIRA(_ZTI9S19763C20),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19763C20),255, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19763C20),182, //virtual table table var
  46, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names10,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C1  : virtual S19763C2 , virtual S19763C17 , S19763C20 , S19763C24 , S19763C21 {
  int s19763c1f0;
  int s19763c1f1;
  int s19763c1f2;
  int s19763c1f3;
  int s19763c1f4;
  ::S19763C5 s19763c1f5[2];
  int s19763c1f6;
  int s19763c1f7;
  int s19763c1f8;
  __tsi64 s19763c1f9;
  char s19763c1f10:8;
  virtual void  v1(); // _ZN8S19763C12v1Ev
  ~S19763C1(); // tgen
  S19763C1(); // tgen
};
//SIG(1 S19763C1) C1{ VBC2{ m Fp Fi[2] Fs Fc Fi FC3{ VBC4{ v4 v5 v6 Fi[2] Fl[2] FC5{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]} BC6{ VBC5 VBC7{ BC5 VBC4 VBC8{ VBC5 Fp FC5 FL:3} VBC9{ v7 FL FD Fp Fc FC5 Fp[2] Fl[8] Fs Fp FL:64} FC9 Fs Fi[2]} BC10{ BC9 BC4 BC5 vd v8 Fl FL Fp[8] FC7 Fp Fi FC7 Fi} BC11{ VBC10 VBC5 VBC8 BC7 BC12{ VBC9 VBC10 VBC5 VBC8 FL:44 Fp Fi FC7 Fl[2] Fi[3] FC10 Fc:7 FC13{ BC9 vd v12 FC8 Fi Fp Fi}} v9 FC10 FL Fc:7} v10 v11 FC12 Fs FL:8} BC14{ VBC8 FC12 FL:6 Fi Fl} VBC15{ VBC9 BC4 VBC11 Fc:8 Fi} VBC16{ BC5 VBC9 VBC15 BC7 BC13 vd v13 Fi FC7 Fi Fs FL:8 Fi} v19 FC15 FC6} Fi} VBC17{ v2 FC18{} FC19{ BC7 VBC15 BC16 v14 v15 FC15 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]} Fi Fc:5} BC20{ BC6 VBC21{ VBC22{ VBC13 VBC5 VBC12 vd Fi FD Fi Fp Fl FU23{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi Fl} VBC19 BC16 v16 Fi Fl Fi[4]} VBC24{ v17 v18 Fp Fl Fi FL Fp Fi Fi Fi Fi} Fi Fi[6] Fl[3] Fl Fi Fi Fi Fi Fc:7 Fp Fc FC7 Fi} BC24 BC21 v1 Fi Fi Fi Fi Fi FC5[2] Fi Fi Fi FL Fc:8}


void  S19763C1 ::v1(){vfunc_called(this, "_ZN8S19763C12v1Ev");}
S19763C1 ::~S19763C1(){ note_dtor("S19763C1", this);} // tgen
S19763C1 ::S19763C1(){ note_ctor("S19763C1", this);} // tgen

static void Test_S19763C1()
{
  extern Class_Descriptor cd_S19763C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13831,35129)];
    init_test(&cd_S19763C1, buf);
    S19763C1 *dp, &lv = *(dp=new (buf) S19763C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(221280,140512), "sizeof(S19763C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C1)");
    check_base_class_offset(lv, (S19763C2*), ABISELECT(31200,19820), "S19763C1");
    check_base_class_offset(lv, (S19763C17*), ABISELECT(137328,87148), "S19763C1");
    /*is_ambiguous_... S19763C6::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C6*)(S19763C20*), ABISELECT(174056,110512), "S19763C1");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(174056,110512), "S19763C1");
    /*is_ambiguous_... S19763C11::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(174056,110512), "S19763C1");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(174056,110512), "S19763C1");
    /*is_ambiguous_... S19763C22::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C22*), ABISELECT(174056,110512), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*), ABISELECT(174056,110512), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*), ABISELECT(174056,110512), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*), ABISELECT(174056,110512), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*), ABISELECT(174208,110608), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*), ABISELECT(174672,110900), "S19763C1");
    check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(174672,110900), "S19763C1");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C19*), ABISELECT(174672,110900), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*), ABISELECT(174672,110900), "S19763C1");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(174672,110900), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(174672,110900), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(174672,110900), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*), ABISELECT(175136,111208), "S19763C1");
    check_base_class_offset(lv, (S19763C8*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(175136,111208), "S19763C1");
    check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(175136,111208), "S19763C1");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(175136,111208), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C12*), ABISELECT(175136,111208), "S19763C1");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C19*), ABISELECT(175136,111208), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C11*), ABISELECT(175136,111208), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*), ABISELECT(175136,111208), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*), ABISELECT(175136,111208), "S19763C1");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(175136,111208), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(175136,111208), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(175136,111208), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*), ABISELECT(175312,111316), "S19763C1");
    check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C19*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C15::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C15*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C16::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C16*)(S19763C19*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C16*)(S19763C21*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C16*)(S19763C21*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C6::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C6*)(S19763C20*), ABISELECT(174208,110608), "S19763C1");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C10*)(S19763C6*)(S19763C20*), 0, "S19763C1");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C10*)(S19763C6*)(S19763C20*), ABISELECT(296,184), "S19763C1");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C10*)(S19763C6*)(S19763C20*), ABISELECT(760,492), "S19763C1");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C6*)(S19763C20*), 0, "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(175616,111500), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(175912,111684), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(176376,111992), "S19763C1");
    check_base_class_offset(lv, (S19763C10*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(175616,111500), "S19763C1");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(175616,111500), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C12*), ABISELECT(175616,111500), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C11*), ABISELECT(175616,111500), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*), ABISELECT(175616,111500), "S19763C1");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(4128,2620), "S19763C1");
    check_base_class_offset(lv, (S19763C7*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(4128,2620), "S19763C1");
    check_base_class_offset(lv, (S19763C12*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(4592,2912), "S19763C1");
    check_base_class_offset(lv, (S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(4128,2620), "S19763C1");
    check_base_class_offset(lv, (S19763C6*)(S19763C20*), 0, "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C13 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C13*), ABISELECT(182672,115984), "S19763C1");
    check_base_class_offset(lv, (S19763C13*)(S19763C22*), ABISELECT(182672,115984), "S19763C1");
    check_base_class_offset(lv, (S19763C12*)(S19763C22*), ABISELECT(183312,116384), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C22*)(S19763C21*), ABISELECT(182592,115936), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C22*)(S19763C21*), ABISELECT(182592,115936), "S19763C1");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C19*), ABISELECT(189712,120436), "S19763C1");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C19*), ABISELECT(189712,120436), "S19763C1");
    /*is_ambiguous_... S19763C15::S19763C4 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C15*), ABISELECT(209736,133176), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*), ABISELECT(210208,133492), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C11*), ABISELECT(210208,133492), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C12*)(S19763C11*), ABISELECT(210672,133784), "S19763C1");
    check_base_class_offset(lv, (S19763C11*)(S19763C15*), ABISELECT(210208,133492), "S19763C1");
    check_base_class_offset(lv, (S19763C15*)(S19763C19*), ABISELECT(209736,133176), "S19763C1");
    check_base_class_offset(lv, (S19763C15*)(S19763C16*)(S19763C19*), ABISELECT(209736,133176), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C15*)(S19763C16*)(S19763C21*), ABISELECT(209736,133176), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C15*)(S19763C16*)(S19763C21*), ABISELECT(209736,133176), "S19763C1");
    /*is_ambiguous_... S19763C16::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C16*)(S19763C19*), ABISELECT(190176,120728), "S19763C1");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(190320,120824), "S19763C1");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(190320,120824), "S19763C1");
    check_base_class_offset(lv, (S19763C9*)(S19763C13*)(S19763C16*)(S19763C19*), ABISELECT(190784,121116), "S19763C1");
    check_base_class_offset(lv, (S19763C13*)(S19763C16*)(S19763C19*), ABISELECT(190784,121116), "S19763C1");
    check_base_class_offset(lv, (S19763C16*)(S19763C19*), ABISELECT(190176,120728), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C19*)(S19763C21*), ABISELECT(189712,120436), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C19*)(S19763C21*), ABISELECT(189712,120436), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C16*)(S19763C21*), ABISELECT(179744,114120), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(179888,114216), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(179888,114216), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C13*)(S19763C16*)(S19763C21*), ABISELECT(180352,114508), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C13*)(S19763C16*)(S19763C21*), ABISELECT(180352,114508), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C16*)(S19763C21*), ABISELECT(179744,114120), "S19763C1");
    check_base_class_offset(lv, (S19763C21*)(S19763C20*), ABISELECT(179744,114120), "S19763C1");
    check_base_class_offset(lv, (S19763C24*)(S19763C20*), ABISELECT(221216,140468), "S19763C1");
    check_base_class_offset(lv, (S19763C20*), 0, "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C24 */ AMB_check_base_class_offset(lv, (S19763C24*), ABISELECT(27944,17724), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C16*)(S19763C21*), ABISELECT(28016,17768), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(28160,17864), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(28160,17864), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C13*)(S19763C16*)(S19763C21*), ABISELECT(28624,18156), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C13*)(S19763C16*)(S19763C21*), ABISELECT(28624,18156), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C16*)(S19763C21*), ABISELECT(28016,17768), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C21*), ABISELECT(28016,17768), "S19763C1");
    check_field_offset(lv, s19763c1f0, ABISELECT(30856,19584), "S19763C1.s19763c1f0");
    check_field_offset(lv, s19763c1f1, ABISELECT(30860,19588), "S19763C1.s19763c1f1");
    check_field_offset(lv, s19763c1f2, ABISELECT(30864,19592), "S19763C1.s19763c1f2");
    check_field_offset(lv, s19763c1f3, ABISELECT(30868,19596), "S19763C1.s19763c1f3");
    check_field_offset(lv, s19763c1f4, ABISELECT(30872,19600), "S19763C1.s19763c1f4");
    check_field_offset(lv, s19763c1f5, ABISELECT(30880,19604), "S19763C1.s19763c1f5");
    check_field_offset(lv, s19763c1f6, ABISELECT(31168,19796), "S19763C1.s19763c1f6");
    check_field_offset(lv, s19763c1f7, ABISELECT(31172,19800), "S19763C1.s19763c1f7");
    check_field_offset(lv, s19763c1f8, ABISELECT(31176,19804), "S19763C1.s19763c1f8");
    check_field_offset(lv, s19763c1f9, ABISELECT(31184,19808), "S19763C1.s19763c1f9");
    set_bf_and_test(lv, s19763c1f10, ABISELECT(31192,19816), 0, 8, 1, "S19763C1");
    set_bf_and_test(lv, s19763c1f10, ABISELECT(31192,19816), 0, 8, hide_sll(1LL<<7), "S19763C1");
    test_class_info(&lv, &cd_S19763C1);
    dp->~S19763C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C1(Test_S19763C1, "S19763C1", ABISELECT(221280,140512));

#else // __cplusplus

extern void _ZN8S19763C1C1Ev();
extern void _ZN8S19763C1D1Ev();
Name_Map name_map_S19763C1[] = {
  NSPAIR(_ZN8S19763C1C1Ev),
  NSPAIR(_ZN8S19763C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C2;
extern VTBL_ENTRY _ZTI8S19763C2[];
extern Class_Descriptor cd_S19763C17;
extern VTBL_ENTRY _ZTI9S19763C17[];
extern  VTBL_ENTRY _ZTV9S19763C17[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
extern Class_Descriptor cd_S19763C6;
extern VTBL_ENTRY _ZTI8S19763C6[];
extern  VTBL_ENTRY _ZTV8S19763C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C6[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C22;
extern VTBL_ENTRY _ZTI9S19763C22[];
extern  VTBL_ENTRY _ZTV9S19763C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C22[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
extern Class_Descriptor cd_S19763C15;
extern VTBL_ENTRY _ZTI9S19763C15[];
extern  VTBL_ENTRY _ZTV9S19763C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C15[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C16;
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
extern Class_Descriptor cd_S19763C19;
extern VTBL_ENTRY _ZTI9S19763C19[];
extern  VTBL_ENTRY _ZTV9S19763C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C19[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C16;
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
extern Class_Descriptor cd_S19763C21;
extern VTBL_ENTRY _ZTI9S19763C21[];
extern  VTBL_ENTRY _ZTV9S19763C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C21[];
extern Class_Descriptor cd_S19763C24;
extern VTBL_ENTRY _ZTI9S19763C24[];
extern  VTBL_ENTRY _ZTV9S19763C24[];
extern Class_Descriptor cd_S19763C20;
extern VTBL_ENTRY _ZTI9S19763C20[];
extern  VTBL_ENTRY _ZTV9S19763C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C20[];
extern Class_Descriptor cd_S19763C24;
extern VTBL_ENTRY _ZTI9S19763C24[];
extern  VTBL_ENTRY _ZTV9S19763C24[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C16;
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
extern Class_Descriptor cd_S19763C21;
extern VTBL_ENTRY _ZTI9S19763C21[];
extern  VTBL_ENTRY _ZTV9S19763C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C21[];
static Base_Class bases_S19763C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C2,    ABISELECT(31200,19820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C17,    ABISELECT(137328,87148), //bcp->offset
    87, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    95, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    ABISELECT(174056,110512), //bcp->offset
    91, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    96, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(174208,110608), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(174672,110900), //bcp->offset
    103, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    98, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19763C8,    ABISELECT(175136,111208), //bcp->offset
    111, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    99, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19763C9,    ABISELECT(175312,111316), //bcp->offset
    114, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    100, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19763C7,    ABISELECT(174208,110608), //bcp->offset
    95, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    97, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19763C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(296,184), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(760,492), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19763C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(175616,111500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(175912,111684), //bcp->offset
    131, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    103, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(176376,111992), //bcp->offset
    136, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    104, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19763C10,    ABISELECT(175616,111500), //bcp->offset
    118, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    102, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19763C12,    ABISELECT(4592,2912), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    105, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19763C11,    ABISELECT(4128,2620), //bcp->offset
    33, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    101, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19763C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(182672,115984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(182672,115984), //bcp->offset
    187, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    108, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19763C12,    ABISELECT(183312,116384), //bcp->offset
    196, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    109, //bcp->index_in_construction_vtbl_array
    174, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19763C22,    ABISELECT(182592,115936), //bcp->offset
    176, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    107, //bcp->index_in_construction_vtbl_array
    165, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(189712,120436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(189712,120436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    182, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(209736,133176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(210208,133492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(210208,133492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    227, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19763C12,    ABISELECT(210672,133784), //bcp->offset
    283, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    113, //bcp->index_in_construction_vtbl_array
    232, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19763C11,    ABISELECT(210208,133492), //bcp->offset
    269, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    112, //bcp->index_in_construction_vtbl_array
    226, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19763C15,    ABISELECT(209736,133176), //bcp->offset
    252, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    111, //bcp->index_in_construction_vtbl_array
    216, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(190176,120728), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(190320,120824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(190320,120824), //bcp->offset
    239, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    115, //bcp->index_in_construction_vtbl_array
    188, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(190784,121116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(190784,121116), //bcp->offset
    246, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    116, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19763C16,    ABISELECT(190176,120728), //bcp->offset
    226, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    114, //bcp->index_in_construction_vtbl_array
    187, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19763C19,    ABISELECT(189712,120436), //bcp->offset
    205, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    110, //bcp->index_in_construction_vtbl_array
    181, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(179744,114120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(179888,114216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(179888,114216), //bcp->offset
    163, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    117, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(180352,114508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(180352,114508), //bcp->offset
    170, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    118, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19763C16,    ABISELECT(179744,114120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19763C21,    ABISELECT(179744,114120), //bcp->offset
    139, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    106, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S19763C24,    ABISELECT(221216,140468), //bcp->offset
    291, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    119, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S19763C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C24,    ABISELECT(27944,17724), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C5,    ABISELECT(28016,17768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(28160,17864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(28160,17864), //bcp->offset
    74, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    121, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(28624,18156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(28624,18156), //bcp->offset
    81, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19763C16,    ABISELECT(28016,17768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S19763C21,    ABISELECT(28016,17768), //bcp->offset
    56, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    120, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19763C1[];
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C1D1Ev();
extern void _ZN8S19763C1D0Ev();
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C63v10Ev();
extern void _ZN8S19763C63v11Ev();
extern void _ZN8S19763C12v1Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZThn4128_N8S19763C1D1Ev,_ZThn2620_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn4128_N8S19763C1D0Ev,_ZThn2620_N8S19763C1D0Ev)();
extern void ABISELECT(_ZThn4592_N8S19763C1D1Ev,_ZThn2912_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn4592_N8S19763C1D0Ev,_ZThn2912_N8S19763C1D0Ev)();
extern void _ZN9S19763C243v17Ev();
extern void _ZN9S19763C243v18Ev();
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZThn28016_N8S19763C1D1Ev,_ZThn17768_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn28016_N8S19763C1D0Ev,_ZThn17768_N8S19763C1D0Ev)();
extern void _ZN9S19763C163v13Ev();
extern void _ZN9S19763C213v16Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZThn28624_N8S19763C1D1Ev,_ZThn18156_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn28624_N8S19763C1D0Ev,_ZThn18156_N8S19763C1D0Ev)();
extern void _ZN9S19763C133v12Ev();
extern void _ZN9S19763C172v2Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19763C1D1Ev,_ZTv0_n16_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn175616_N8S19763C1D1Ev,_ZThn111500_N8S19763C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19763C1D0Ev,_ZTv0_n16_N8S19763C1D0Ev)();
extern void ABISELECT(_ZThn175616_N8S19763C1D0Ev,_ZThn111500_N8S19763C1D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTv0_n120_N8S19763C1D1Ev,_ZTv0_n60_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn179744_N8S19763C1D1Ev,_ZThn114120_N8S19763C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19763C1D0Ev,_ZTv0_n60_N8S19763C1D0Ev)();
extern void ABISELECT(_ZThn179744_N8S19763C1D0Ev,_ZThn114120_N8S19763C1D0Ev)() __attribute__((weak));
extern void _ZN9S19763C163v13Ev();
extern void _ZN9S19763C213v16Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn608_n120_N8S19763C1D1Ev,_ZTvn388_n60_N8S19763C1D1Ev)();
extern void ABISELECT(_ZTvn608_n120_N8S19763C1D0Ev,_ZTvn388_n60_N8S19763C1D0Ev)();
extern void _ZN9S19763C133v12Ev();
extern void ABISELECT(_ZTv0_n72_N8S19763C1D1Ev,_ZTv0_n36_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn182592_N8S19763C1D1Ev,_ZThn115936_N8S19763C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19763C1D0Ev,_ZTv0_n36_N8S19763C1D0Ev)();
extern void ABISELECT(_ZThn182592_N8S19763C1D0Ev,_ZThn115936_N8S19763C1D0Ev)() __attribute__((weak));
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19763C1D1Ev,_ZTv0_n16_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn182672_N8S19763C1D1Ev,_ZThn115984_N8S19763C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19763C1D0Ev,_ZTv0_n16_N8S19763C1D0Ev)();
extern void ABISELECT(_ZThn182672_N8S19763C1D0Ev,_ZThn115984_N8S19763C1D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
extern void ABISELECT(_ZTv0_n56_N8S19763C1D1Ev,_ZTv0_n28_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn183312_N8S19763C1D1Ev,_ZThn116384_N8S19763C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19763C1D0Ev,_ZTv0_n28_N8S19763C1D0Ev)();
extern void ABISELECT(_ZThn183312_N8S19763C1D0Ev,_ZThn116384_N8S19763C1D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N8S19763C1D1Ev,_ZTv0_n52_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn189712_N8S19763C1D1Ev,_ZThn120436_N8S19763C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19763C1D0Ev,_ZTv0_n52_N8S19763C1D0Ev)();
extern void ABISELECT(_ZThn189712_N8S19763C1D0Ev,_ZThn120436_N8S19763C1D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N8S19763C1D1Ev,_ZTvn292_n52_N8S19763C1D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N8S19763C1D0Ev,_ZTvn292_n52_N8S19763C1D0Ev)();
extern void _ZN9S19763C163v13Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N8S19763C1D1Ev,_ZTvn680_n52_N8S19763C1D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N8S19763C1D0Ev,_ZTvn680_n52_N8S19763C1D0Ev)();
extern void _ZN9S19763C133v12Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N8S19763C1D1Ev,_ZTv0_n48_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn209736_N8S19763C1D1Ev,_ZThn133176_N8S19763C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19763C1D0Ev,_ZTv0_n48_N8S19763C1D0Ev)();
extern void ABISELECT(_ZThn209736_N8S19763C1D0Ev,_ZThn133176_N8S19763C1D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N8S19763C1D1Ev,_ZTv0_n40_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn210208_N8S19763C1D1Ev,_ZThn133492_N8S19763C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19763C1D0Ev,_ZTv0_n40_N8S19763C1D0Ev)();
extern void ABISELECT(_ZThn210208_N8S19763C1D0Ev,_ZThn133492_N8S19763C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S19763C1D1Ev,_ZTvn292_n40_N8S19763C1D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S19763C1D0Ev,_ZTvn292_n40_N8S19763C1D0Ev)();
extern void _ZN9S19763C243v17Ev();
extern void _ZN9S19763C243v18Ev();
static  VTBL_ENTRY vtc_S19763C1[] = {
  ABISELECT(137328,87148),
  ABISELECT(31200,19820),
  ABISELECT(221216,140468),
  ABISELECT(210208,133492),
  ABISELECT(209736,133176),
  ABISELECT(189712,120436),
  ABISELECT(183312,116384),
  ABISELECT(182672,115984),
  ABISELECT(182592,115936),
  ABISELECT(179744,114120),
  ABISELECT(175616,111500),
  ABISELECT(175312,111316),
  ABISELECT(175136,111208),
  ABISELECT(174672,110900),
  ABISELECT(174208,110608),
  ABISELECT(174056,110512),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN8S19763C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19763C1D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19763C12v1Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(171488,108880),
  ABISELECT(171184,108696),
  ABISELECT(169928,107892),
  ABISELECT(171008,108588),
  ABISELECT(170544,108280),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C1D1Ev,_ZThn2620_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C1D0Ev,_ZThn2620_N8S19763C1D0Ev),
  ABISELECT(170544,108296),
  ABISELECT(169464,107600),
  ABISELECT(171024,108588),
  ABISELECT(170720,108404),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C1D1Ev,_ZThn2912_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C1D0Ev,_ZThn2912_N8S19763C1D0Ev),
  ABISELECT(-27944,-17724),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN9S19763C243v17Ev,
  (VTBL_ENTRY)&_ZN9S19763C243v18Ev,
  ABISELECT(161696,102668),
  ABISELECT(155296,98616),
  ABISELECT(154656,98216),
  ABISELECT(154576,98168),
  ABISELECT(146656,93132),
  ABISELECT(147120,93440),
  ABISELECT(146040,92744),
  ABISELECT(147600,93732),
  ABISELECT(182192,115724),
  ABISELECT(181720,115408),
  ABISELECT(147296,93548),
  ABISELECT(-28016,-17768),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn28016_N8S19763C1D1Ev,_ZThn17768_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn28016_N8S19763C1D0Ev,_ZThn17768_N8S19763C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19763C213v16Ev,
  ABISELECT(147152,93452),
  ABISELECT(145896,92648),
  ABISELECT(146976,93344),
  ABISELECT(146512,93036),
  ABISELECT(-28160,-17864),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-28624,-18156),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn28624_N8S19763C1D1Ev,_ZThn18156_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn28624_N8S19763C1D0Ev,_ZThn18156_N8S19763C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  0,
  ABISELECT(-137328,-87148),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN9S19763C172v2Ev,
  0,
  ABISELECT(-174056,-110512),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-174208,-110608),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  0,
  0,
  ABISELECT(-174672,-110900),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-1080,-696),
  ABISELECT(-175136,-111208),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  0,
  ABISELECT(-175312,-111316),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-175616,-111500),
  0,
  ABISELECT(-175616,-111500),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C1D1Ev,_ZTv0_n16_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C1D0Ev,_ZTv0_n16_N8S19763C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-175912,-111684),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-176376,-111992),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-179744,-114120),
  0,
  ABISELECT(9968,6316),
  ABISELECT(3568,2264),
  ABISELECT(2928,1864),
  ABISELECT(2848,1816),
  ABISELECT(-5072,-3220),
  ABISELECT(-4608,-2912),
  ABISELECT(-5688,-3608),
  ABISELECT(-4128,-2620),
  ABISELECT(30464,19372),
  ABISELECT(29992,19056),
  ABISELECT(-4432,-2804),
  ABISELECT(-179744,-114120),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19763C1D1Ev,_ZTv0_n60_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19763C1D0Ev,_ZTv0_n60_N8S19763C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19763C213v16Ev,
  ABISELECT(-4576,-2900),
  ABISELECT(-5832,-3704),
  ABISELECT(-4752,-3008),
  ABISELECT(-5216,-3316),
  ABISELECT(-179888,-114216),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-180352,-114508),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n120_N8S19763C1D1Ev,_ZTvn388_n60_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n120_N8S19763C1D0Ev,_ZTvn388_n60_N8S19763C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  ABISELECT(-182592,-115936),
  ABISELECT(-7456,-4728),
  ABISELECT(-6976,-4436),
  ABISELECT(-7280,-4620),
  ABISELECT(720,448),
  ABISELECT(-8536,-5424),
  ABISELECT(80,48),
  ABISELECT(-182592,-115936),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19763C1D1Ev,_ZTv0_n36_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19763C1D0Ev,_ZTv0_n36_N8S19763C1D0Ev),
  0,
  ABISELECT(-182672,-115984),
  0,
  ABISELECT(-182672,-115984),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C1D1Ev,_ZTv0_n16_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C1D0Ev,_ZTv0_n16_N8S19763C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  ABISELECT(-183312,-116384),
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  ABISELECT(-183312,-116384),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19763C1D1Ev,_ZTv0_n28_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19763C1D0Ev,_ZTv0_n28_N8S19763C1D0Ev),
  ABISELECT(1072,680),
  ABISELECT(1072,680),
  ABISELECT(464,292),
  ABISELECT(-189712,-120436),
  0,
  0,
  0,
  ABISELECT(-14096,-8936),
  ABISELECT(20496,13056),
  ABISELECT(20024,12740),
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  ABISELECT(-189712,-120436),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19763C1D1Ev,_ZTv0_n52_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19763C1D0Ev,_ZTv0_n52_N8S19763C1D0Ev),
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  ABISELECT(-190176,-120728),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N8S19763C1D1Ev,_ZTvn292_n52_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N8S19763C1D0Ev,_ZTvn292_n52_N8S19763C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-190320,-120824),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-190784,-121116),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N8S19763C1D1Ev,_ZTvn680_n52_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N8S19763C1D0Ev,_ZTvn680_n52_N8S19763C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  ABISELECT(-209736,-133176),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-209736,-133176),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19763C1D1Ev,_ZTv0_n48_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19763C1D0Ev,_ZTv0_n48_N8S19763C1D0Ev),
  ABISELECT(-210208,-133492),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-210208,-133492),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19763C1D1Ev,_ZTv0_n40_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19763C1D0Ev,_ZTv0_n40_N8S19763C1D0Ev),
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-210672,-133784),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19763C1D1Ev,_ZTvn292_n40_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19763C1D0Ev,_ZTvn292_n40_N8S19763C1D0Ev),
  0,
  0,
  ABISELECT(-221216,-140468),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN9S19763C243v17Ev,
  (VTBL_ENTRY)&_ZN9S19763C243v18Ev,
};
extern VTBL_ENTRY _ZTV8S19763C1[];
extern void _ZN8S19763C92v7Ev();
extern void _ZN9S19763C20D1Ev();
extern void _ZN9S19763C20D0Ev();
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C63v10Ev();
extern void _ZN8S19763C63v11Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C20__8S19763C1[] = {
  ABISELECT(221216,140468),
  ABISELECT(210208,133492),
  ABISELECT(209736,133176),
  ABISELECT(189712,120436),
  ABISELECT(183312,116384),
  ABISELECT(182672,115984),
  ABISELECT(182592,115936),
  ABISELECT(179744,114120),
  ABISELECT(175616,111500),
  ABISELECT(175312,111316),
  ABISELECT(175136,111208),
  ABISELECT(174672,110900),
  ABISELECT(174208,110608),
  ABISELECT(174056,110512),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN9S19763C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C20D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v11Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C6D1Ev();
extern void _ZN8S19763C6D0Ev();
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C63v10Ev();
extern void _ZN8S19763C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(175616,111500),
  ABISELECT(175312,111316),
  ABISELECT(175136,111208),
  ABISELECT(174672,110900),
  ABISELECT(174208,110608),
  ABISELECT(174056,110512),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN8S19763C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19763C6D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v11Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(171488,108880),
  ABISELECT(171184,108696),
  ABISELECT(169928,107892),
  ABISELECT(171008,108588),
  ABISELECT(170544,108280),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[] = {
  ABISELECT(171184,108696),
  ABISELECT(169928,107892),
  ABISELECT(171008,108588),
  ABISELECT(170544,108280),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(-170544,-108280),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-171008,-108588),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[] = {
  0,
  ABISELECT(-169928,-107892),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[] = {
  0,
  ABISELECT(-171184,-108696),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(170544,108296),
  ABISELECT(169464,107600),
  ABISELECT(171024,108588),
  ABISELECT(170720,108404),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[] = {
  0,
  ABISELECT(-170720,-108404),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn171024_N9S19763C12D1Ev,_ZThn108588_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn171024_N9S19763C12D0Ev,_ZThn108588_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-171024,-108588),
  0,
  ABISELECT(-171024,-108588),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(-171320,-108772),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(-171784,-109080),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[] = {
  0,
  ABISELECT(-169464,-107600),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-170544,-108296),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn171488_N9S19763C11D1Ev,_ZThn108880_N9S19763C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void ABISELECT(_ZThn171488_N9S19763C11D0Ev,_ZThn108880_N9S19763C11D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-171488,-108880),
  0,
  ABISELECT(-171488,-108880),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(-171784,-109064),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(-172248,-109372),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C118S19763C69S19763C20__8S19763C1[] = {
  0,
  ABISELECT(-169928,-107892),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-171008,-108588),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C118S19763C69S19763C20__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(-170544,-108280),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C118S19763C69S19763C20__8S19763C1[] = {
  0,
  ABISELECT(-171184,-108696),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(170544,108296),
  ABISELECT(169464,107600),
  ABISELECT(171024,108588),
  ABISELECT(170720,108404),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C69S19763C20__8S19763C1[] = {
  0,
  ABISELECT(-174056,-110512),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__8S19763C69S19763C20__8S19763C1[] = {
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-174208,-110608),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C69S19763C20__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(-174672,-110900),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-175136,-111208),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C69S19763C20__8S19763C1[] = {
  0,
  ABISELECT(-175312,-111316),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZThn4128_N8S19763C6D1Ev,_ZThn2620_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn4128_N8S19763C6D0Ev,_ZThn2620_N8S19763C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C11__8S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(171488,108880),
  ABISELECT(171184,108696),
  ABISELECT(169928,107892),
  ABISELECT(171008,108588),
  ABISELECT(170544,108280),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C6D1Ev,_ZThn2620_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C6D0Ev,_ZThn2620_N8S19763C6D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn175616_N8S19763C6D1Ev,_ZThn111500_N8S19763C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev)();
extern void ABISELECT(_ZThn175616_N8S19763C6D0Ev,_ZThn111500_N8S19763C6D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__A1__8S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-175616,-111500),
  0,
  ABISELECT(-175616,-111500),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A2__8S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(-175912,-111684),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A3__8S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(-176376,-111992),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S19763C6D1Ev,_ZThn2912_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn4592_N8S19763C6D0Ev,_ZThn2912_N8S19763C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__8S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(170544,108296),
  ABISELECT(169464,107600),
  ABISELECT(171024,108588),
  ABISELECT(170720,108404),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C6D1Ev,_ZThn2912_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C6D0Ev,_ZThn2912_N8S19763C6D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__9S19763C20__8S19763C1[] = {
  0,
  ABISELECT(-174056,-110512),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__9S19763C20__8S19763C1[] = {
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-174208,-110608),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__9S19763C20__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(-174672,-110900),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C20__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-175136,-111208),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C20__8S19763C1[] = {
  0,
  ABISELECT(-175312,-111316),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZThn4128_N9S19763C20D1Ev,_ZThn2620_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn4128_N9S19763C20D0Ev,_ZThn2620_N9S19763C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C118S19763C6__9S19763C20__8S19763C1[] = {
  ABISELECT(171488,108880),
  ABISELECT(171184,108696),
  ABISELECT(169928,107892),
  ABISELECT(171008,108588),
  ABISELECT(170544,108280),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S19763C20D1Ev,_ZThn2620_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S19763C20D0Ev,_ZThn2620_N9S19763C20D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn175616_N9S19763C20D1Ev,_ZThn111500_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn175616_N9S19763C20D0Ev,_ZThn111500_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__A1__9S19763C20__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-175616,-111500),
  0,
  ABISELECT(-175616,-111500),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A2__9S19763C20__8S19763C1[] = {
  ABISELECT(-175912,-111684),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A3__9S19763C20__8S19763C1[] = {
  ABISELECT(-176376,-111992),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZThn4592_N9S19763C20D1Ev,_ZThn2912_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn4592_N9S19763C20D0Ev,_ZThn2912_N9S19763C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C118S19763C6__9S19763C20__8S19763C1[] = {
  ABISELECT(170544,108296),
  ABISELECT(169464,107600),
  ABISELECT(171024,108588),
  ABISELECT(170720,108404),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S19763C20D1Ev,_ZThn2912_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S19763C20D0Ev,_ZThn2912_N9S19763C20D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTv0_n120_N9S19763C20D1Ev,_ZTv0_n60_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn179744_N9S19763C20D1Ev,_ZThn114120_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19763C20D0Ev,_ZTv0_n60_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn179744_N9S19763C20D0Ev,_ZThn114120_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN9S19763C163v13Ev();
extern void _ZN9S19763C213v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C21__9S19763C20__8S19763C1[] = {
  0,
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-179744,-114120),
  0,
  ABISELECT(9968,6316),
  ABISELECT(3568,2264),
  ABISELECT(2928,1864),
  ABISELECT(2848,1816),
  ABISELECT(-5072,-3220),
  ABISELECT(-4608,-2912),
  ABISELECT(-5688,-3608),
  ABISELECT(-4128,-2620),
  ABISELECT(30464,19372),
  ABISELECT(29992,19056),
  ABISELECT(-4432,-2804),
  ABISELECT(-179744,-114120),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19763C20D1Ev,_ZTv0_n60_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19763C20D0Ev,_ZTv0_n60_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19763C213v16Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19763C20D1Ev,_ZTv0_n36_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn182592_N9S19763C20D1Ev,_ZThn115936_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19763C20D0Ev,_ZTv0_n36_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn182592_N9S19763C20D0Ev,_ZThn115936_N9S19763C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C22__9S19763C20__8S19763C1[] = {
  ABISELECT(-182592,-115936),
  ABISELECT(-7456,-4728),
  ABISELECT(-6976,-4436),
  ABISELECT(-7280,-4620),
  ABISELECT(720,448),
  ABISELECT(-8536,-5424),
  ABISELECT(80,48),
  ABISELECT(-182592,-115936),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C20D1Ev,_ZTv0_n36_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C20D0Ev,_ZTv0_n36_N9S19763C20D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn182672_N9S19763C20D1Ev,_ZThn115984_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn182672_N9S19763C20D0Ev,_ZThn115984_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C13__9S19763C20__8S19763C1[] = {
  0,
  ABISELECT(-182672,-115984),
  0,
  ABISELECT(-182672,-115984),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19763C20D1Ev,_ZTv0_n28_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn183312_N9S19763C20D1Ev,_ZThn116384_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C20D0Ev,_ZTv0_n28_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn183312_N9S19763C20D0Ev,_ZThn116384_N9S19763C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C12__A1__9S19763C20__8S19763C1[] = {
  ABISELECT(-183312,-116384),
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  ABISELECT(-183312,-116384),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C20D1Ev,_ZTv0_n28_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C20D0Ev,_ZTv0_n28_N9S19763C20D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N9S19763C20D1Ev,_ZTv0_n52_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn189712_N9S19763C20D1Ev,_ZThn120436_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19763C20D0Ev,_ZTv0_n52_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn189712_N9S19763C20D0Ev,_ZThn120436_N9S19763C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C19__9S19763C20__8S19763C1[] = {
  ABISELECT(1072,680),
  ABISELECT(1072,680),
  ABISELECT(464,292),
  ABISELECT(-189712,-120436),
  0,
  0,
  0,
  ABISELECT(-14096,-8936),
  ABISELECT(20496,13056),
  ABISELECT(20024,12740),
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  ABISELECT(-189712,-120436),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C20D1Ev,_ZTv0_n52_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C20D0Ev,_ZTv0_n52_N9S19763C20D0Ev),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C20D1Ev,_ZTv0_n48_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn209736_N9S19763C20D1Ev,_ZThn133176_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C20D0Ev,_ZTv0_n48_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn209736_N9S19763C20D0Ev,_ZThn133176_N9S19763C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C20__8S19763C1[] = {
  ABISELECT(-209736,-133176),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-209736,-133176),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C20D1Ev,_ZTv0_n48_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C20D0Ev,_ZTv0_n48_N9S19763C20D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C20D1Ev,_ZTv0_n40_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn210208_N9S19763C20D1Ev,_ZThn133492_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C20D0Ev,_ZTv0_n40_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn210208_N9S19763C20D0Ev,_ZThn133492_N9S19763C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__A1__9S19763C20__8S19763C1[] = {
  ABISELECT(-210208,-133492),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-210208,-133492),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C20D1Ev,_ZTv0_n40_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C20D0Ev,_ZTv0_n40_N9S19763C20D0Ev),
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C20D1Ev,_ZTvn292_n40_N9S19763C20D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C20D0Ev,_ZTvn292_n40_N9S19763C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__A2__9S19763C20__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-210672,-133784),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C20D1Ev,_ZTvn292_n40_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C20D0Ev,_ZTvn292_n40_N9S19763C20D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N9S19763C20D1Ev,_ZTvn292_n52_N9S19763C20D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N9S19763C20D0Ev,_ZTvn292_n52_N9S19763C20D0Ev)();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C19__9S19763C20__8S19763C1[] = {
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  ABISELECT(-190176,-120728),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C20D1Ev,_ZTvn292_n52_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C20D0Ev,_ZTvn292_n52_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C19__A4__9S19763C20__8S19763C1[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-190320,-120824),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C20D1Ev,_ZTvn680_n52_N9S19763C20D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C20D0Ev,_ZTvn680_n52_N9S19763C20D0Ev)();
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C139S19763C169S19763C19__A1__9S19763C20__8S19763C1[] = {
  ABISELECT(-190784,-121116),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C20D1Ev,_ZTvn680_n52_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C20D0Ev,_ZTvn680_n52_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C21__A5__9S19763C20__8S19763C1[] = {
  ABISELECT(-4576,-2900),
  ABISELECT(-5832,-3704),
  ABISELECT(-4752,-3008),
  ABISELECT(-5216,-3316),
  ABISELECT(-179888,-114216),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn608_n120_N9S19763C20D1Ev,_ZTvn388_n60_N9S19763C20D1Ev)();
extern void ABISELECT(_ZTvn608_n120_N9S19763C20D0Ev,_ZTvn388_n60_N9S19763C20D0Ev)();
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C139S19763C169S19763C21__A2__9S19763C20__8S19763C1[] = {
  ABISELECT(-180352,-114508),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n120_N9S19763C20D1Ev,_ZTvn388_n60_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n120_N9S19763C20D0Ev,_ZTvn388_n60_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN9S19763C243v17Ev();
extern void _ZN9S19763C243v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C24__9S19763C20__8S19763C1[] = {
  0,
  0,
  ABISELECT(-221216,-140468),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN9S19763C243v17Ev,
  (VTBL_ENTRY)&_ZN9S19763C243v18Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C21D1Ev();
extern void _ZN9S19763C21D0Ev();
extern void _ZN9S19763C163v13Ev();
extern void _ZN9S19763C213v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C21__A__8S19763C1[] = {
  ABISELECT(161696,102668),
  ABISELECT(155296,98616),
  ABISELECT(154656,98216),
  ABISELECT(154576,98168),
  ABISELECT(146656,93132),
  ABISELECT(147120,93440),
  ABISELECT(146040,92744),
  ABISELECT(147600,93732),
  ABISELECT(182192,115724),
  ABISELECT(181720,115408),
  ABISELECT(147296,93548),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C21D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19763C213v16Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C21__A2__8S19763C1[] = {
  ABISELECT(146656,93132),
  ABISELECT(147120,93440),
  ABISELECT(146040,92744),
  ABISELECT(147600,93732),
  ABISELECT(182192,115724),
  ABISELECT(181720,115408),
  ABISELECT(147296,93548),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C21__A6__8S19763C1[] = {
  ABISELECT(147152,93452),
  ABISELECT(145896,92648),
  ABISELECT(146976,93344),
  ABISELECT(146512,93036),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C169S19763C21__A6__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(-146512,-93036),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C169S19763C21__A6__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-146976,-93344),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C21__A6__8S19763C1[] = {
  0,
  ABISELECT(-145896,-92648),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C169S19763C21__A6__8S19763C1[] = {
  0,
  ABISELECT(-147152,-93452),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C169S19763C21__A2__8S19763C1[] = {
  0,
  ABISELECT(-147296,-93548),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn181720_N9S19763C16D1Ev,_ZThn115408_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn181720_N9S19763C16D0Ev,_ZThn115408_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C169S19763C21__A2__8S19763C1[] = {
  ABISELECT(-181720,-115408),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-181720,-115408),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn182192_N9S19763C16D1Ev,_ZThn115724_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn182192_N9S19763C16D0Ev,_ZThn115724_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C169S19763C21__A2__8S19763C1[] = {
  ABISELECT(-182192,-115724),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-182192,-115724),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn147600_N9S19763C16D1Ev,_ZThn93732_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn147600_N9S19763C16D0Ev,_ZThn93732_N9S19763C16D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C169S19763C21__A2__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-147600,-93732),
  0,
  ABISELECT(-147600,-93732),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C21__A2__8S19763C1[] = {
  ABISELECT(-147896,-93916),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C21__A2__8S19763C1[] = {
  ABISELECT(-148360,-94224),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A2__9S19763C169S19763C21__A2__8S19763C1[] = {
  0,
  ABISELECT(-146040,-92744),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C169S19763C21__A2__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-147120,-93440),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C169S19763C21__A2__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(-146656,-93132),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C169S19763C21__A2__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-182656,-116016),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C169S19763C21__A2__8S19763C1[] = {
  ABISELECT(147152,93452),
  ABISELECT(145896,92648),
  ABISELECT(146976,93344),
  ABISELECT(146512,93036),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn154576_N9S19763C21D1Ev,_ZThn98168_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn154576_N9S19763C21D0Ev,_ZThn98168_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C22__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-154576,-98168),
  ABISELECT(-7456,-4728),
  ABISELECT(-6976,-4436),
  ABISELECT(-7280,-4620),
  ABISELECT(720,448),
  ABISELECT(-8536,-5424),
  ABISELECT(80,48),
  ABISELECT(-154576,-98168),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn154656_N9S19763C21D1Ev,_ZThn98216_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn154656_N9S19763C21D0Ev,_ZThn98216_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C13__9S19763C21__A__8S19763C1[] = {
  0,
  ABISELECT(-154656,-98216),
  0,
  ABISELECT(-154656,-98216),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__9S19763C21__A__8S19763C1[] = {
  0,
  ABISELECT(-146040,-92744),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn155296_N9S19763C21D1Ev,_ZThn98616_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn155296_N9S19763C21D0Ev,_ZThn98616_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-155296,-98616),
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  ABISELECT(-155296,-98616),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C21__A__8S19763C1[] = {
  0,
  ABISELECT(-147296,-93548),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn147600_N9S19763C21D1Ev,_ZThn93732_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn147600_N9S19763C21D0Ev,_ZThn93732_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C21__A__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-147600,-93732),
  0,
  ABISELECT(-147600,-93732),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-147896,-93916),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-148360,-94224),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-147120,-93440),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn161696_N9S19763C21D1Ev,_ZThn102668_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn161696_N9S19763C21D0Ev,_ZThn102668_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C19__9S19763C21__A__8S19763C1[] = {
  ABISELECT(1072,680),
  ABISELECT(1072,680),
  ABISELECT(464,292),
  ABISELECT(-161696,-102668),
  0,
  0,
  0,
  ABISELECT(-14096,-8936),
  ABISELECT(20496,13056),
  ABISELECT(20024,12740),
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  ABISELECT(-161696,-102668),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C21__A__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(-146656,-93132),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn181720_N9S19763C21D1Ev,_ZThn115408_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn181720_N9S19763C21D0Ev,_ZThn115408_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-181720,-115408),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-181720,-115408),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn182192_N9S19763C21D1Ev,_ZThn115724_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn182192_N9S19763C21D0Ev,_ZThn115724_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-182192,-115724),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-182192,-115724),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev),
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C21D1Ev,_ZTvn292_n40_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C21D0Ev,_ZTvn292_n40_N9S19763C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__A1__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-182656,-116016),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C21D1Ev,_ZTvn292_n40_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C21D0Ev,_ZTvn292_n40_N9S19763C21D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N9S19763C21D1Ev,_ZTvn292_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N9S19763C21D0Ev,_ZTvn292_n52_N9S19763C21D0Ev)();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C19__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  ABISELECT(-162160,-102960),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C21D1Ev,_ZTvn292_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C21D0Ev,_ZTvn292_n52_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C19__A2__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-162304,-103056),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C21D1Ev,_ZTvn680_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C21D0Ev,_ZTvn680_n52_N9S19763C21D0Ev)();
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C139S19763C169S19763C19__A1__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-162768,-103348),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C21D1Ev,_ZTvn680_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C21D0Ev,_ZTvn680_n52_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C16__A3__9S19763C21__A__8S19763C1[] = {
  ABISELECT(147152,93452),
  ABISELECT(145896,92648),
  ABISELECT(146976,93344),
  ABISELECT(146512,93036),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__8S19763C1[] = {
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C7__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C7__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C7__8S19763C1[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C7__8S19763C1[] = {
  0,
  ABISELECT(-1104,-708),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C1[] = {
  ABISELECT(-1080,-696),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__8S19763C1[] = {
  0,
  ABISELECT(1080,696),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C21D1Ev();
extern void _ZN9S19763C21D0Ev();
extern void _ZN9S19763C163v13Ev();
extern void _ZN9S19763C213v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C21__8S19763C1[] = {
  ABISELECT(9968,6316),
  ABISELECT(3568,2264),
  ABISELECT(2928,1864),
  ABISELECT(2848,1816),
  ABISELECT(-5072,-3220),
  ABISELECT(-4608,-2912),
  ABISELECT(-5688,-3608),
  ABISELECT(-4128,-2620),
  ABISELECT(30464,19372),
  ABISELECT(29992,19056),
  ABISELECT(-4432,-2804),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C21D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19763C213v16Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C21__A1__8S19763C1[] = {
  ABISELECT(-5072,-3220),
  ABISELECT(-4608,-2912),
  ABISELECT(-5688,-3608),
  ABISELECT(-4128,-2620),
  ABISELECT(30464,19372),
  ABISELECT(29992,19056),
  ABISELECT(-4432,-2804),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C21__A5__8S19763C1[] = {
  ABISELECT(-4576,-2900),
  ABISELECT(-5832,-3704),
  ABISELECT(-4752,-3008),
  ABISELECT(-5216,-3316),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C169S19763C21__A5__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(5216,3316),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C169S19763C21__A5__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(4752,3008),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C21__A5__8S19763C1[] = {
  0,
  ABISELECT(5832,3704),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C169S19763C21__A5__8S19763C1[] = {
  0,
  ABISELECT(4576,2900),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C169S19763C21__A1__8S19763C1[] = {
  0,
  ABISELECT(4432,2804),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn29992_N9S19763C16D1Ev,_ZThn19056_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn29992_N9S19763C16D0Ev,_ZThn19056_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C169S19763C21__A1__8S19763C1[] = {
  ABISELECT(-29992,-19056),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-29992,-19056),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn30464_N9S19763C16D1Ev,_ZThn19372_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn30464_N9S19763C16D0Ev,_ZThn19372_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C169S19763C21__A1__8S19763C1[] = {
  ABISELECT(-30464,-19372),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-30464,-19372),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C169S19763C21__A1__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4128,2620),
  0,
  ABISELECT(4128,2620),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C21__A1__8S19763C1[] = {
  ABISELECT(3832,2436),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C21__A1__8S19763C1[] = {
  ABISELECT(3368,2128),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A2__9S19763C169S19763C21__A1__8S19763C1[] = {
  0,
  ABISELECT(5688,3608),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C169S19763C21__A1__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(4608,2912),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C169S19763C21__A1__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(5072,3220),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C169S19763C21__A1__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-30928,-19664),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C169S19763C21__A1__8S19763C1[] = {
  ABISELECT(-4576,-2900),
  ABISELECT(-5832,-3704),
  ABISELECT(-4752,-3008),
  ABISELECT(-5216,-3316),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn2848_N9S19763C21D1Ev,_ZThn1816_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn2848_N9S19763C21D0Ev,_ZThn1816_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C22__9S19763C21__8S19763C1[] = {
  ABISELECT(-2848,-1816),
  ABISELECT(-7456,-4728),
  ABISELECT(-6976,-4436),
  ABISELECT(-7280,-4620),
  ABISELECT(720,448),
  ABISELECT(-8536,-5424),
  ABISELECT(80,48),
  ABISELECT(-2848,-1816),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn2928_N9S19763C21D1Ev,_ZThn1864_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn2928_N9S19763C21D0Ev,_ZThn1864_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C13__9S19763C21__8S19763C1[] = {
  0,
  ABISELECT(-2928,-1864),
  0,
  ABISELECT(-2928,-1864),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__9S19763C21__8S19763C1[] = {
  0,
  ABISELECT(5688,3608),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn3568_N9S19763C21D1Ev,_ZThn2264_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn3568_N9S19763C21D0Ev,_ZThn2264_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C21__8S19763C1[] = {
  ABISELECT(-3568,-2264),
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  ABISELECT(-3568,-2264),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C21__8S19763C1[] = {
  0,
  ABISELECT(4432,2804),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C21__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4128,2620),
  0,
  ABISELECT(4128,2620),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C21__8S19763C1[] = {
  ABISELECT(3832,2436),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C21__8S19763C1[] = {
  ABISELECT(3368,2128),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C21__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(4608,2912),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn9968_N9S19763C21D1Ev,_ZThn6316_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn9968_N9S19763C21D0Ev,_ZThn6316_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C19__9S19763C21__8S19763C1[] = {
  ABISELECT(1072,680),
  ABISELECT(1072,680),
  ABISELECT(464,292),
  ABISELECT(-9968,-6316),
  0,
  0,
  0,
  ABISELECT(-14096,-8936),
  ABISELECT(20496,13056),
  ABISELECT(20024,12740),
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  ABISELECT(-9968,-6316),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C21__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(5072,3220),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn29992_N9S19763C21D1Ev,_ZThn19056_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn29992_N9S19763C21D0Ev,_ZThn19056_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C21__8S19763C1[] = {
  ABISELECT(-29992,-19056),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-29992,-19056),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn30464_N9S19763C21D1Ev,_ZThn19372_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn30464_N9S19763C21D0Ev,_ZThn19372_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C21__8S19763C1[] = {
  ABISELECT(-30464,-19372),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-30464,-19372),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev),
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C21D1Ev,_ZTvn292_n40_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C21D0Ev,_ZTvn292_n40_N9S19763C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__A1__9S19763C21__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-30928,-19664),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C21D1Ev,_ZTvn292_n40_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C21D0Ev,_ZTvn292_n40_N9S19763C21D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N9S19763C21D1Ev,_ZTvn292_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N9S19763C21D0Ev,_ZTvn292_n52_N9S19763C21D0Ev)();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C19__9S19763C21__8S19763C1[] = {
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  ABISELECT(-10432,-6608),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C21D1Ev,_ZTvn292_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C21D0Ev,_ZTvn292_n52_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C19__A2__9S19763C21__8S19763C1[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-10576,-6704),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C21D1Ev,_ZTvn680_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C21D0Ev,_ZTvn680_n52_N9S19763C21D0Ev)();
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C139S19763C169S19763C19__A1__9S19763C21__8S19763C1[] = {
  ABISELECT(-11040,-6996),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C21D1Ev,_ZTvn680_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C21D0Ev,_ZTvn680_n52_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C16__A3__9S19763C21__8S19763C1[] = {
  ABISELECT(-4576,-2900),
  ABISELECT(-5832,-3704),
  ABISELECT(-4752,-3008),
  ABISELECT(-5216,-3316),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN9S19763C22D1Ev();
extern void _ZN9S19763C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C22__8S19763C1[] = {
  ABISELECT(-7456,-4728),
  ABISELECT(-6976,-4436),
  ABISELECT(-7280,-4620),
  ABISELECT(720,448),
  ABISELECT(-8536,-5424),
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN9S19763C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C22D0Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S19763C22D1Ev,_ZThn48_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S19763C22D0Ev,_ZThn48_N9S19763C22D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C13__9S19763C22__8S19763C1[] = {
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__9S19763C22__8S19763C1[] = {
  0,
  ABISELECT(8536,5424),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn720_N9S19763C22D1Ev,_ZThn448_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn720_N9S19763C22D0Ev,_ZThn448_N9S19763C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C22__8S19763C1[] = {
  ABISELECT(-720,-448),
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  ABISELECT(-720,-448),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C22__8S19763C1[] = {
  0,
  ABISELECT(7280,4620),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C22__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(6976,4436),
  0,
  ABISELECT(6976,4436),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C22__8S19763C1[] = {
  ABISELECT(6680,4252),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C22__8S19763C1[] = {
  ABISELECT(6216,3944),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C22__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(7456,4728),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C12__A1__8S19763C1[] = {
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C12__A1__8S19763C1[] = {
  0,
  ABISELECT(8000,5068),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C12__A1__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(7696,4884),
  0,
  ABISELECT(7696,4884),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C12__A1__8S19763C1[] = {
  ABISELECT(7400,4700),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C12__A1__8S19763C1[] = {
  ABISELECT(6936,4392),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C12__A1__8S19763C1[] = {
  0,
  ABISELECT(9256,5872),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C12__A1__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(8176,5176),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void _ZN9S19763C19D1Ev();
extern void _ZN9S19763C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C19__8S19763C1[] = {
  ABISELECT(-14096,-8936),
  ABISELECT(20496,13056),
  ABISELECT(20024,12740),
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&_ZN9S19763C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C19D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C19__A2__8S19763C1[] = {
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C19__A2__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(15040,9536),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C19__A2__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(14576,9228),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C19__A2__8S19763C1[] = {
  0,
  ABISELECT(15656,9924),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C19__A2__8S19763C1[] = {
  0,
  ABISELECT(14400,9120),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C19__8S19763C1[] = {
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C19__A4__8S19763C1[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C169S19763C19__A4__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(15648,9924),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C169S19763C19__A4__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(15184,9616),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C19__A4__8S19763C1[] = {
  0,
  ABISELECT(16264,10312),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C169S19763C19__A4__8S19763C1[] = {
  0,
  ABISELECT(15008,9508),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C169S19763C19__8S19763C1[] = {
  0,
  ABISELECT(14864,9412),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn19560_N9S19763C16D1Ev,_ZThn12448_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn19560_N9S19763C16D0Ev,_ZThn12448_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C169S19763C19__8S19763C1[] = {
  ABISELECT(-19560,-12448),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-19560,-12448),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn20032_N9S19763C16D1Ev,_ZThn12764_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn20032_N9S19763C16D0Ev,_ZThn12764_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C169S19763C19__8S19763C1[] = {
  ABISELECT(-20032,-12764),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-20032,-12764),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C169S19763C19__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(14560,9228),
  0,
  ABISELECT(14560,9228),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C19__8S19763C1[] = {
  ABISELECT(14264,9044),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C19__8S19763C1[] = {
  ABISELECT(13800,8736),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A2__9S19763C169S19763C19__8S19763C1[] = {
  0,
  ABISELECT(16120,10216),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C169S19763C19__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(15040,9520),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C169S19763C19__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(15504,9828),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C169S19763C19__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-20496,-13056),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C169S19763C19__8S19763C1[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__9S19763C19__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(15040,9536),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C19__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(14576,9228),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C19__8S19763C1[] = {
  0,
  ABISELECT(15656,9924),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C19__8S19763C1[] = {
  0,
  ABISELECT(14400,9120),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn20024_N9S19763C19D1Ev,_ZThn12740_N9S19763C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev)();
extern void ABISELECT(_ZThn20024_N9S19763C19D0Ev,_ZThn12740_N9S19763C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C19__8S19763C1[] = {
  ABISELECT(-20024,-12740),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-20024,-12740),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn20496_N9S19763C19D1Ev,_ZThn13056_N9S19763C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev)();
extern void ABISELECT(_ZThn20496_N9S19763C19D0Ev,_ZThn13056_N9S19763C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C19__8S19763C1[] = {
  ABISELECT(-20496,-13056),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-20496,-13056),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C19D1Ev,_ZTv0_n16_N9S19763C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C19D0Ev,_ZTv0_n16_N9S19763C19D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C19__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(14096,8936),
  0,
  ABISELECT(14096,8936),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C19D1Ev,_ZTv0_n16_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C19D0Ev,_ZTv0_n16_N9S19763C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A2__9S19763C19__8S19763C1[] = {
  ABISELECT(13800,8752),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A2__9S19763C19__8S19763C1[] = {
  ABISELECT(13336,8444),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C19D1Ev,_ZTvn292_n40_N9S19763C19D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C19D0Ev,_ZTvn292_n40_N9S19763C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C19__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-20960,-13348),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C19D1Ev,_ZTvn292_n40_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C19D0Ev,_ZTvn292_n40_N9S19763C19D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZThn464_N9S19763C19D1Ev,_ZThn292_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C19D0Ev,_ZThn292_N9S19763C19D0Ev)();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C16__9S19763C19__8S19763C1[] = {
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C19D1Ev,_ZThn292_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C19D0Ev,_ZThn292_N9S19763C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C16__A2__9S19763C19__8S19763C1[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN9S19763C15D1Ev();
extern void _ZN9S19763C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C15__8S19763C1[] = {
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C15__8S19763C1[] = {
  0,
  ABISELECT(34424,21860),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C15__8S19763C1[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C15__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(34120,21676),
  0,
  ABISELECT(34120,21676),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C15__8S19763C1[] = {
  ABISELECT(33824,21492),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C15__8S19763C1[] = {
  ABISELECT(33360,21184),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C15__8S19763C1[] = {
  0,
  ABISELECT(35680,22664),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C15__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(34600,21968),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C15__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(35064,22276),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C15__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C11__A1__8S19763C1[] = {
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C11__A3__8S19763C1[] = {
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C11__A3__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(35536,22592),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C11__A3__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(35072,22284),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A3__8S19763C1[] = {
  0,
  ABISELECT(36152,22980),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C11__A3__8S19763C1[] = {
  0,
  ABISELECT(34896,22176),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__A2__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C11__A2__8S19763C1[] = {
  0,
  ABISELECT(35360,22468),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C11__A2__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(35056,22284),
  0,
  ABISELECT(35056,22284),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__A2__8S19763C1[] = {
  ABISELECT(34760,22100),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__A2__8S19763C1[] = {
  ABISELECT(34296,21792),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C11__A2__8S19763C1[] = {
  0,
  ABISELECT(36616,23272),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C11__A2__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(35536,22576),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C11__A1__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(34592,21992),
  0,
  ABISELECT(34592,21992),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C11__A1__8S19763C1[] = {
  ABISELECT(34296,21808),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C11__A1__8S19763C1[] = {
  ABISELECT(33832,21500),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C11__A1__8S19763C1[] = {
  0,
  ABISELECT(36152,22980),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C11__A1__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(35072,22284),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C11__A1__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(35536,22592),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C11__A1__8S19763C1[] = {
  0,
  ABISELECT(34896,22176),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C11__A1__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
static  VTT_ENTRY vtt_S19763C1[] = {
  {&(_ZTV8S19763C1[18]),  18,297},
  {&(_tg__ZTV9S19763C20__8S19763C1[16]),  16,22},
  {&(_tg__ZTV8S19763C69S19763C20__8S19763C1[8]),  8,14},
  {&(_tg__ZTV9S19763C118S19763C69S19763C20__8S19763C1[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C118S19763C69S19763C20__8S19763C1[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C118S19763C69S19763C20__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C118S19763C69S19763C20__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C118S19763C69S19763C20__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C118S19763C69S19763C20__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C118S19763C69S19763C20__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C118S19763C69S19763C20__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C118S19763C69S19763C20__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C118S19763C69S19763C20__8S19763C1[6]),  6,8},
  {&(_tg__ZTV8S19763C5__8S19763C69S19763C20__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C7__8S19763C69S19763C20__8S19763C1[7]),  7,8},
  {&(_tg__ZTV8S19763C4__8S19763C69S19763C20__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C69S19763C20__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C9__8S19763C69S19763C20__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C11__8S19763C69S19763C20__8S19763C1[7]),  7,11},
  {&(_tg__ZTV9S19763C10__A1__8S19763C69S19763C20__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A2__8S19763C69S19763C20__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A3__8S19763C69S19763C20__8S19763C1[2]),  2,3},
  {&(_tg__ZTV9S19763C129S19763C11__8S19763C69S19763C20__8S19763C1[6]),  6,8},
  {&(_tg__ZTV8S19763C5__9S19763C20__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C7__9S19763C20__8S19763C1[7]),  7,8},
  {&(_tg__ZTV8S19763C4__9S19763C20__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__9S19763C20__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C9__9S19763C20__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C118S19763C6__9S19763C20__8S19763C1[7]),  7,11},
  {&(_tg__ZTV9S19763C10__A1__9S19763C20__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A2__9S19763C20__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A3__9S19763C20__8S19763C1[2]),  2,3},
  {&(_tg__ZTV9S19763C129S19763C118S19763C6__9S19763C20__8S19763C1[6]),  6,8},
  {&(_tg__ZTV9S19763C21__9S19763C20__8S19763C1[19]),  19,24},
  {&(_tg__ZTV9S19763C22__9S19763C20__8S19763C1[9]),  9,11},
  {&(_tg__ZTV9S19763C13__9S19763C20__8S19763C1[5]),  5,9},
  {&(_tg__ZTV9S19763C12__A1__9S19763C20__8S19763C1[7]),  7,9},
  {&(_tg__ZTV9S19763C19__9S19763C20__8S19763C1[16]),  16,21},
  {&(_tg__ZTV9S19763C15__9S19763C20__8S19763C1[12]),  12,17},
  {&(_tg__ZTV9S19763C11__A1__9S19763C20__8S19763C1[10]),  10,14},
  {&(_tg__ZTV9S19763C129S19763C11__A2__9S19763C20__8S19763C1[6]),  6,8},
  {&(_tg__ZTV9S19763C169S19763C19__9S19763C20__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C19__A4__9S19763C20__8S19763C1[6]),  6,7},
  {&(_tg__ZTV9S19763C139S19763C169S19763C19__A1__9S19763C20__8S19763C1[2]),  2,6},
  {&(_tg__ZTV8S19763C79S19763C169S19763C21__A5__9S19763C20__8S19763C1[6]),  6,7},
  {&(_tg__ZTV9S19763C139S19763C169S19763C21__A2__9S19763C20__8S19763C1[2]),  2,6},
  {&(_tg__ZTV9S19763C24__9S19763C20__8S19763C1[4]),  4,6},
  {&(_tg__ZTV9S19763C21__A__8S19763C1[13]),  13,18},
  {&(_tg__ZTV9S19763C169S19763C21__A2__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C21__A6__8S19763C1[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C169S19763C21__A6__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C169S19763C21__A6__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C21__A6__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C169S19763C21__A6__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C169S19763C21__A2__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C169S19763C21__A2__8S19763C1[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C169S19763C21__A2__8S19763C1[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C169S19763C21__A2__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C21__A2__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C21__A2__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A2__9S19763C169S19763C21__A2__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C169S19763C21__A2__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C169S19763C21__A2__8S19763C1[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C169S19763C21__A2__8S19763C1[6]),  6,8},
  {&(_tg__ZTV8S19763C7__A1__9S19763C169S19763C21__A2__8S19763C1[6]),  6,7},
  {&(_tg__ZTV9S19763C22__9S19763C21__A__8S19763C1[9]),  9,11},
  {&(_tg__ZTV9S19763C13__9S19763C21__A__8S19763C1[5]),  5,9},
  {&(_tg__ZTV8S19763C5__9S19763C21__A__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C21__A__8S19763C1[7]),  7,9},
  {&(_tg__ZTV8S19763C9__A1__9S19763C21__A__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C21__A__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C21__A__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C21__A__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C8__9S19763C21__A__8S19763C1[3]),  3,3},
  {&(_tg__ZTV9S19763C19__9S19763C21__A__8S19763C1[16]),  16,21},
  {&(_tg__ZTV8S19763C4__A1__9S19763C21__A__8S19763C1[5]),  5,8},
  {&(_tg__ZTV9S19763C15__9S19763C21__A__8S19763C1[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C21__A__8S19763C1[10]),  10,14},
  {&(_tg__ZTV9S19763C129S19763C11__A1__9S19763C21__A__8S19763C1[6]),  6,8},
  {&(_tg__ZTV9S19763C169S19763C19__9S19763C21__A__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C19__A2__9S19763C21__A__8S19763C1[6]),  6,7},
  {&(_tg__ZTV9S19763C139S19763C169S19763C19__A1__9S19763C21__A__8S19763C1[2]),  2,6},
  {&(_tg__ZTV8S19763C79S19763C16__A3__9S19763C21__A__8S19763C1[6]),  6,7},
  {&(_ZTV8S19763C1[90]),  90,297},
  {&(_ZTV8S19763C1[94]),  94,297},
  {&(_ZTV8S19763C1[102]),  102,297},
  {&(_ZTV8S19763C1[108]),  108,297},
  {&(_ZTV8S19763C1[114]),  114,297},
  {&(_ZTV8S19763C1[117]),  117,297},
  {&(_ZTV8S19763C1[40]),  40,297},
  {&(_ZTV8S19763C1[127]),  127,297},
  {&(_ZTV8S19763C1[133]),  133,297},
  {&(_ZTV8S19763C1[138]),  138,297},
  {&(_ZTV8S19763C1[50]),  50,297},
  {&(_ZTV8S19763C1[158]),  158,297},
  {&(_ZTV8S19763C1[185]),  185,297},
  {&(_ZTV8S19763C1[192]),  192,297},
  {&(_ZTV8S19763C1[203]),  203,297},
  {&(_ZTV8S19763C1[221]),  221,297},
  {&(_ZTV8S19763C1[264]),  264,297},
  {&(_ZTV8S19763C1[279]),  279,297},
  {&(_ZTV8S19763C1[289]),  289,297},
  {&(_ZTV8S19763C1[235]),  235,297},
  {&(_ZTV8S19763C1[245]),  245,297},
  {&(_ZTV8S19763C1[248]),  248,297},
  {&(_ZTV8S19763C1[169]),  169,297},
  {&(_ZTV8S19763C1[172]),  172,297},
  {&(_ZTV8S19763C1[295]),  295,297},
  {&(_ZTV8S19763C1[69]),  69,297},
  {&(_ZTV8S19763C1[80]),  80,297},
  {&(_tg__ZTV8S19763C7__8S19763C1[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C7__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C7__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C7__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C7__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C21__8S19763C1[13]),  13,18},
  {&(_tg__ZTV9S19763C169S19763C21__A1__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C21__A5__8S19763C1[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C169S19763C21__A5__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C169S19763C21__A5__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C21__A5__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C169S19763C21__A5__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C169S19763C21__A1__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C169S19763C21__A1__8S19763C1[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C169S19763C21__A1__8S19763C1[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C169S19763C21__A1__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C21__A1__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C21__A1__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A2__9S19763C169S19763C21__A1__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C169S19763C21__A1__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C169S19763C21__A1__8S19763C1[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C169S19763C21__A1__8S19763C1[6]),  6,8},
  {&(_tg__ZTV8S19763C7__A1__9S19763C169S19763C21__A1__8S19763C1[6]),  6,7},
  {&(_tg__ZTV9S19763C22__9S19763C21__8S19763C1[9]),  9,11},
  {&(_tg__ZTV9S19763C13__9S19763C21__8S19763C1[5]),  5,9},
  {&(_tg__ZTV8S19763C5__9S19763C21__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C21__8S19763C1[7]),  7,9},
  {&(_tg__ZTV8S19763C9__A1__9S19763C21__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C21__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C21__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C21__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C8__9S19763C21__8S19763C1[3]),  3,3},
  {&(_tg__ZTV9S19763C19__9S19763C21__8S19763C1[16]),  16,21},
  {&(_tg__ZTV8S19763C4__A1__9S19763C21__8S19763C1[5]),  5,8},
  {&(_tg__ZTV9S19763C15__9S19763C21__8S19763C1[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C21__8S19763C1[10]),  10,14},
  {&(_tg__ZTV9S19763C129S19763C11__A1__9S19763C21__8S19763C1[6]),  6,8},
  {&(_tg__ZTV9S19763C169S19763C19__9S19763C21__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C19__A2__9S19763C21__8S19763C1[6]),  6,7},
  {&(_tg__ZTV9S19763C139S19763C169S19763C19__A1__9S19763C21__8S19763C1[2]),  2,6},
  {&(_tg__ZTV8S19763C79S19763C16__A3__9S19763C21__8S19763C1[6]),  6,7},
  {&(_tg__ZTV9S19763C22__8S19763C1[8]),  8,10},
  {&(_tg__ZTV9S19763C13__9S19763C22__8S19763C1[5]),  5,9},
  {&(_tg__ZTV8S19763C5__9S19763C22__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C22__8S19763C1[7]),  7,9},
  {&(_tg__ZTV8S19763C9__A1__9S19763C22__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C22__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C22__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C22__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C8__9S19763C22__8S19763C1[3]),  3,3},
  {&(_tg__ZTV9S19763C12__A1__8S19763C1[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C12__A1__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C12__A1__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C12__A1__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C12__A1__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C12__A1__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C12__A1__8S19763C1[3]),  3,3},
  {&(_tg__ZTV9S19763C19__8S19763C1[9]),  9,14},
  {&(_tg__ZTV8S19763C79S19763C19__A2__8S19763C1[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C19__A2__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C19__A2__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C19__A2__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C19__A2__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C169S19763C19__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C19__A4__8S19763C1[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C169S19763C19__A4__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C169S19763C19__A4__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C19__A4__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C169S19763C19__A4__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C169S19763C19__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C169S19763C19__8S19763C1[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C169S19763C19__8S19763C1[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C169S19763C19__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C19__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C19__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A2__9S19763C169S19763C19__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C169S19763C19__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C169S19763C19__8S19763C1[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C169S19763C19__8S19763C1[6]),  6,8},
  {&(_tg__ZTV8S19763C7__A1__9S19763C169S19763C19__8S19763C1[6]),  6,7},
  {&(_tg__ZTV8S19763C4__9S19763C19__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__9S19763C19__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C19__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C19__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C19__8S19763C1[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C19__8S19763C1[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C19__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A2__9S19763C19__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A2__9S19763C19__8S19763C1[2]),  2,3},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C19__8S19763C1[6]),  6,8},
  {&(_tg__ZTV9S19763C16__9S19763C19__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C16__A2__9S19763C19__8S19763C1[6]),  6,7},
  {&(_tg__ZTV9S19763C15__8S19763C1[8]),  8,13},
  {&(_tg__ZTV8S19763C9__9S19763C15__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C11__9S19763C15__8S19763C1[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C15__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C15__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C15__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C15__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C15__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C15__8S19763C1[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C15__8S19763C1[6]),  6,8},
  {&(_tg__ZTV9S19763C11__A1__8S19763C1[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C11__A3__8S19763C1[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C11__A3__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C11__A3__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A3__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C11__A3__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C11__A2__8S19763C1[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C11__A2__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C11__A2__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__A2__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__A2__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C11__A2__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C11__A2__8S19763C1[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C11__A1__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C11__A1__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C11__A1__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C11__A1__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C11__A1__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C11__A1__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C11__A1__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C11__A1__8S19763C1[6]),  6,8},
};
extern VTBL_ENTRY _ZTI8S19763C1[];
extern  VTBL_ENTRY _ZTV8S19763C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C1[];
static VTBL_ENTRY alt_thunk_names11[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20496_N9S19763C19D0Ev,_ZThn13056_N9S19763C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20496_N9S19763C19D1Ev,_ZThn13056_N9S19763C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20024_N9S19763C19D0Ev,_ZThn12740_N9S19763C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20024_N9S19763C19D1Ev,_ZThn12740_N9S19763C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19763C22D0Ev,_ZThn448_N9S19763C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19763C22D1Ev,_ZThn448_N9S19763C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19763C22D0Ev,_ZThn48_N9S19763C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19763C22D1Ev,_ZThn48_N9S19763C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19763C21D0Ev,_ZThn19372_N9S19763C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn182192_N9S19763C21D0Ev,_ZThn115724_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19763C21D1Ev,_ZThn19372_N9S19763C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn182192_N9S19763C21D1Ev,_ZThn115724_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19763C21D0Ev,_ZThn19056_N9S19763C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn181720_N9S19763C21D0Ev,_ZThn115408_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19763C21D1Ev,_ZThn19056_N9S19763C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn181720_N9S19763C21D1Ev,_ZThn115408_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9968_N9S19763C21D0Ev,_ZThn6316_N9S19763C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn161696_N9S19763C21D0Ev,_ZThn102668_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9968_N9S19763C21D1Ev,_ZThn6316_N9S19763C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn161696_N9S19763C21D1Ev,_ZThn102668_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3568_N9S19763C21D0Ev,_ZThn2264_N9S19763C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn155296_N9S19763C21D0Ev,_ZThn98616_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3568_N9S19763C21D1Ev,_ZThn2264_N9S19763C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn155296_N9S19763C21D1Ev,_ZThn98616_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N9S19763C21D0Ev,_ZThn1864_N9S19763C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn147600_N9S19763C21D0Ev,_ZThn93732_N9S19763C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn154656_N9S19763C21D0Ev,_ZThn98216_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N9S19763C21D1Ev,_ZThn1864_N9S19763C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn147600_N9S19763C21D1Ev,_ZThn93732_N9S19763C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn154656_N9S19763C21D1Ev,_ZThn98216_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19763C21D0Ev,_ZThn1816_N9S19763C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn154576_N9S19763C21D0Ev,_ZThn98168_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19763C21D1Ev,_ZThn1816_N9S19763C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn154576_N9S19763C21D1Ev,_ZThn98168_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn147600_N9S19763C16D0Ev,_ZThn93732_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn147600_N9S19763C16D1Ev,_ZThn93732_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20032_N9S19763C16D0Ev,_ZThn12764_N9S19763C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19763C16D0Ev,_ZThn19372_N9S19763C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn182192_N9S19763C16D0Ev,_ZThn115724_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20032_N9S19763C16D1Ev,_ZThn12764_N9S19763C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19763C16D1Ev,_ZThn19372_N9S19763C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn182192_N9S19763C16D1Ev,_ZThn115724_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19560_N9S19763C16D0Ev,_ZThn12448_N9S19763C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19763C16D0Ev,_ZThn19056_N9S19763C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn181720_N9S19763C16D0Ev,_ZThn115408_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19560_N9S19763C16D1Ev,_ZThn12448_N9S19763C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19763C16D1Ev,_ZThn19056_N9S19763C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn181720_N9S19763C16D1Ev,_ZThn115408_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C20D0Ev,_ZTv0_n40_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn210208_N9S19763C20D0Ev,_ZThn133492_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C20D1Ev,_ZTv0_n40_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn210208_N9S19763C20D1Ev,_ZThn133492_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C20D0Ev,_ZTv0_n48_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn209736_N9S19763C20D0Ev,_ZThn133176_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C20D1Ev,_ZTv0_n48_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn209736_N9S19763C20D1Ev,_ZThn133176_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C20D0Ev,_ZTv0_n52_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn189712_N9S19763C20D0Ev,_ZThn120436_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C20D1Ev,_ZTv0_n52_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn189712_N9S19763C20D1Ev,_ZThn120436_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C20D0Ev,_ZTv0_n28_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183312_N9S19763C20D0Ev,_ZThn116384_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C20D1Ev,_ZTv0_n28_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183312_N9S19763C20D1Ev,_ZThn116384_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C20D0Ev,_ZTv0_n36_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182592_N9S19763C20D0Ev,_ZThn115936_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C20D1Ev,_ZTv0_n36_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182592_N9S19763C20D1Ev,_ZThn115936_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19763C20D0Ev,_ZTv0_n60_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn179744_N9S19763C20D0Ev,_ZThn114120_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19763C20D1Ev,_ZTv0_n60_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn179744_N9S19763C20D1Ev,_ZThn114120_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182672_N9S19763C20D0Ev,_ZThn115984_N9S19763C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn175616_N9S19763C20D0Ev,_ZThn111500_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182672_N9S19763C20D1Ev,_ZThn115984_N9S19763C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn175616_N9S19763C20D1Ev,_ZThn111500_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn175616_N8S19763C6D0Ev,_ZThn111500_N8S19763C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn175616_N8S19763C6D1Ev,_ZThn111500_N8S19763C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn171488_N9S19763C11D0Ev,_ZThn108880_N9S19763C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn171488_N9S19763C11D1Ev,_ZThn108880_N9S19763C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn171024_N9S19763C12D0Ev,_ZThn108588_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn171024_N9S19763C12D1Ev,_ZThn108588_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19763C1D0Ev,_ZTv0_n40_N8S19763C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn210208_N8S19763C1D0Ev,_ZThn133492_N8S19763C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19763C1D1Ev,_ZTv0_n40_N8S19763C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn210208_N8S19763C1D1Ev,_ZThn133492_N8S19763C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19763C1D0Ev,_ZTv0_n48_N8S19763C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn209736_N8S19763C1D0Ev,_ZThn133176_N8S19763C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19763C1D1Ev,_ZTv0_n48_N8S19763C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn209736_N8S19763C1D1Ev,_ZThn133176_N8S19763C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19763C1D0Ev,_ZTv0_n52_N8S19763C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn189712_N8S19763C1D0Ev,_ZThn120436_N8S19763C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19763C1D1Ev,_ZTv0_n52_N8S19763C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn189712_N8S19763C1D1Ev,_ZThn120436_N8S19763C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19763C1D0Ev,_ZTv0_n28_N8S19763C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183312_N8S19763C1D0Ev,_ZThn116384_N8S19763C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19763C1D1Ev,_ZTv0_n28_N8S19763C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183312_N8S19763C1D1Ev,_ZThn116384_N8S19763C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19763C1D0Ev,_ZTv0_n36_N8S19763C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182592_N8S19763C1D0Ev,_ZThn115936_N8S19763C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19763C1D1Ev,_ZTv0_n36_N8S19763C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182592_N8S19763C1D1Ev,_ZThn115936_N8S19763C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19763C1D0Ev,_ZTv0_n60_N8S19763C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn179744_N8S19763C1D0Ev,_ZThn114120_N8S19763C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19763C1D1Ev,_ZTv0_n60_N8S19763C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn179744_N8S19763C1D1Ev,_ZThn114120_N8S19763C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C1D0Ev,_ZTv0_n16_N8S19763C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182672_N8S19763C1D0Ev,_ZThn115984_N8S19763C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn175616_N8S19763C1D0Ev,_ZThn111500_N8S19763C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C1D1Ev,_ZTv0_n16_N8S19763C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182672_N8S19763C1D1Ev,_ZThn115984_N8S19763C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn175616_N8S19763C1D1Ev,_ZThn111500_N8S19763C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C1 = {  "S19763C1", // class name
  bases_S19763C1, 57,
  &(vtc_S19763C1[0]), // expected_vtbl_contents
  &(vtt_S19763C1[0]), // expected_vtt_contents
  ABISELECT(221280,140512), // object size
  NSPAIRA(_ZTI8S19763C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19763C1),297, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19763C1),246, //virtual table table var
  56, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names11,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C5  {
  short s6003c5f0:6;
  long s6003c5f1;
  short s6003c5f2:4;
  __tsi64 s6003c5f3[6];
  long s6003c5f4[7];
  void *s6003c5f5;
  virtual void  v5(); // _ZN7S6003C52v5Ev
  ~S6003C5(); // tgen
  S6003C5(); // tgen
};
//SIG(-1 S6003C5) C1{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}


void  S6003C5 ::v5(){vfunc_called(this, "_ZN7S6003C52v5Ev");}
S6003C5 ::~S6003C5(){ note_dtor("S6003C5", this);} // tgen
S6003C5 ::S6003C5(){ note_ctor("S6003C5", this);} // tgen

static void Test_S6003C5()
{
  extern Class_Descriptor cd_S6003C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,25)];
    init_test(&cd_S6003C5, buf);
    S6003C5 *dp, &lv = *(dp=new (buf) S6003C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,96), "sizeof(S6003C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6003C5)");
    set_bf_and_test(lv, s6003c5f0, ABISELECT(8,4), 0, 6, 1, "S6003C5");
    set_bf_and_test(lv, s6003c5f0, ABISELECT(8,4), 0, 6, hide_sll(1LL<<5), "S6003C5");
    check_field_offset(lv, s6003c5f1, ABISELECT(16,8), "S6003C5.s6003c5f1");
    set_bf_and_test(lv, s6003c5f2, ABISELECT(24,12), 0, 4, 1, "S6003C5");
    set_bf_and_test(lv, s6003c5f2, ABISELECT(24,12), 0, 4, hide_sll(1LL<<3), "S6003C5");
    check_field_offset(lv, s6003c5f3, ABISELECT(32,16), "S6003C5.s6003c5f3");
    check_field_offset(lv, s6003c5f4, ABISELECT(80,64), "S6003C5.s6003c5f4");
    check_field_offset(lv, s6003c5f5, ABISELECT(136,92), "S6003C5.s6003c5f5");
    test_class_info(&lv, &cd_S6003C5);
    dp->~S6003C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C5(Test_S6003C5, "S6003C5", ABISELECT(144,96));

#else // __cplusplus

extern void _ZN7S6003C5C1Ev();
extern void _ZN7S6003C5D1Ev();
Name_Map name_map_S6003C5[] = {
  NSPAIR(_ZN7S6003C5C1Ev),
  NSPAIR(_ZN7S6003C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6003C5[];
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY vtc_S6003C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C5[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
Class_Descriptor cd_S6003C5 = {  "S6003C5", // class name
  0,0,//no base classes
  &(vtc_S6003C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,96), // object size
  NSPAIRA(_ZTI7S6003C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6003C5),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C4  {
  int s6003c4f0[2];
  long s6003c4f1[2];
  ::S6003C5 s6003c4f2[3];
  virtual void  v2(); // _ZN7S6003C42v2Ev
  virtual void  v3(); // _ZN7S6003C42v3Ev
  virtual void  v4(); // _ZN7S6003C42v4Ev
  ~S6003C4(); // tgen
  S6003C4(); // tgen
};
//SIG(-1 S6003C4) C1{ v1 v2 v3 Fi[2] Fl[2] FC2{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]}


void  S6003C4 ::v2(){vfunc_called(this, "_ZN7S6003C42v2Ev");}
void  S6003C4 ::v3(){vfunc_called(this, "_ZN7S6003C42v3Ev");}
void  S6003C4 ::v4(){vfunc_called(this, "_ZN7S6003C42v4Ev");}
S6003C4 ::~S6003C4(){ note_dtor("S6003C4", this);} // tgen
S6003C4 ::S6003C4(){ note_ctor("S6003C4", this);} // tgen

static void Test_S6003C4()
{
  extern Class_Descriptor cd_S6003C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,78)];
    init_test(&cd_S6003C4, buf);
    S6003C4 *dp, &lv = *(dp=new (buf) S6003C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S6003C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6003C4)");
    check_field_offset(lv, s6003c4f0, ABISELECT(8,4), "S6003C4.s6003c4f0");
    check_field_offset(lv, s6003c4f1, ABISELECT(16,12), "S6003C4.s6003c4f1");
    check_field_offset(lv, s6003c4f2, ABISELECT(32,20), "S6003C4.s6003c4f2");
    test_class_info(&lv, &cd_S6003C4);
    dp->~S6003C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C4(Test_S6003C4, "S6003C4", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN7S6003C4C1Ev();
extern void _ZN7S6003C4D1Ev();
Name_Map name_map_S6003C4[] = {
  NSPAIR(_ZN7S6003C4C1Ev),
  NSPAIR(_ZN7S6003C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6003C4[];
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY vtc_S6003C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C4[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
Class_Descriptor cd_S6003C4 = {  "S6003C4", // class name
  0,0,//no base classes
  &(vtc_S6003C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI7S6003C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6003C4),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C9  {
  __tsi64 s6003c9f0;
  long double s6003c9f1;
  void *s6003c9f2;
  char s6003c9f3;
  ::S6003C5 s6003c9f4;
  void *s6003c9f5[2];
  long s6003c9f6[8];
  short s6003c9f7;
  void *s6003c9f8;
  __tsi64 s6003c9f9:64;
  virtual void  v1(); // _ZN7S6003C92v1Ev
  ~S6003C9(); // tgen
  S6003C9(); // tgen
};
//SIG(-1 S6003C9) C1{ v1 FL FD Fp Fc FC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64}


void  S6003C9 ::v1(){vfunc_called(this, "_ZN7S6003C92v1Ev");}
S6003C9 ::~S6003C9(){ note_dtor("S6003C9", this);} // tgen
S6003C9 ::S6003C9(){ note_ctor("S6003C9", this);} // tgen

static void Test_S6003C9()
{
  extern Class_Descriptor cd_S6003C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,47)];
    init_test(&cd_S6003C9, buf);
    S6003C9 *dp, &lv = *(dp=new (buf) S6003C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,184), "sizeof(S6003C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C9)");
    check_field_offset(lv, s6003c9f0, ABISELECT(8,4), "S6003C9.s6003c9f0");
    check_field_offset(lv, s6003c9f1, ABISELECT(16,12), "S6003C9.s6003c9f1");
    check_field_offset(lv, s6003c9f2, ABISELECT(32,24), "S6003C9.s6003c9f2");
    check_field_offset(lv, s6003c9f3, ABISELECT(40,28), "S6003C9.s6003c9f3");
    check_field_offset(lv, s6003c9f4, ABISELECT(48,32), "S6003C9.s6003c9f4");
    check_field_offset(lv, s6003c9f5, ABISELECT(192,128), "S6003C9.s6003c9f5");
    check_field_offset(lv, s6003c9f6, ABISELECT(208,136), "S6003C9.s6003c9f6");
    check_field_offset(lv, s6003c9f7, ABISELECT(272,168), "S6003C9.s6003c9f7");
    check_field_offset(lv, s6003c9f8, ABISELECT(280,172), "S6003C9.s6003c9f8");
    set_bf_and_test(lv, s6003c9f9, ABISELECT(288,176), 0, 64, 1, "S6003C9");
    set_bf_and_test(lv, s6003c9f9, ABISELECT(288,176), 0, 64, hide_sll(1LL<<63), "S6003C9");
    test_class_info(&lv, &cd_S6003C9);
    dp->~S6003C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C9(Test_S6003C9, "S6003C9", ABISELECT(304,184));

#else // __cplusplus

extern void _ZN7S6003C9C1Ev();
extern void _ZN7S6003C9D1Ev();
Name_Map name_map_S6003C9[] = {
  NSPAIR(_ZN7S6003C9C1Ev),
  NSPAIR(_ZN7S6003C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6003C9[];
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY vtc_S6003C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C9[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
Class_Descriptor cd_S6003C9 = {  "S6003C9", // class name
  0,0,//no base classes
  &(vtc_S6003C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,184), // object size
  NSPAIRA(_ZTI7S6003C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6003C9),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C8  : virtual S6003C5 {
  void *s6003c8f0;
  ::S6003C5 s6003c8f1;
  __tsi64 s6003c8f2:3;
  ~S6003C8(); // tgen
  S6003C8(); // tgen
};
//SIG(-1 S6003C8) C1{ VBC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC2 FL:3}


S6003C8 ::~S6003C8(){ note_dtor("S6003C8", this);} // tgen
S6003C8 ::S6003C8(){ note_ctor("S6003C8", this);} // tgen

static void Test_S6003C8()
{
  extern Class_Descriptor cd_S6003C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,52)];
    init_test(&cd_S6003C8, buf);
    S6003C8 *dp, &lv = *(dp=new (buf) S6003C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,204), "sizeof(S6003C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6003C8)");
    check_base_class_offset(lv, (S6003C5*), ABISELECT(168,108), "S6003C8");
    check_field_offset(lv, s6003c8f0, ABISELECT(8,4), "S6003C8.s6003c8f0");
    check_field_offset(lv, s6003c8f1, ABISELECT(16,8), "S6003C8.s6003c8f1");
    set_bf_and_test(lv, s6003c8f2, ABISELECT(160,104), 0, 3, 1, "S6003C8");
    set_bf_and_test(lv, s6003c8f2, ABISELECT(160,104), 0, 3, hide_sll(1LL<<2), "S6003C8");
    test_class_info(&lv, &cd_S6003C8);
    dp->~S6003C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C8(Test_S6003C8, "S6003C8", ABISELECT(312,204));

#else // __cplusplus

extern void _ZN7S6003C8C1Ev();
extern void _ZN7S6003C8D1Ev();
Name_Map name_map_S6003C8[] = {
  NSPAIR(_ZN7S6003C8C1Ev),
  NSPAIR(_ZN7S6003C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
static Base_Class bases_S6003C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C5,    ABISELECT(168,108), //bcp->offset
    3, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6003C8[];
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY vtc_S6003C8[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern VTBL_ENTRY _ZTV7S6003C8[];
static  VTT_ENTRY vtt_S6003C8[] = {
  {&(_ZTV7S6003C8[3]),  3,7},
  {&(_ZTV7S6003C8[6]),  6,7},
};
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
Class_Descriptor cd_S6003C8 = {  "S6003C8", // class name
  bases_S6003C8, 1,
  &(vtc_S6003C8[0]), // expected_vtbl_contents
  &(vtt_S6003C8[0]), // expected_vtt_contents
  ABISELECT(312,204), // object size
  NSPAIRA(_ZTI7S6003C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S6003C8),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6003C8),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C7  : S6003C5 , virtual S6003C4 , virtual S6003C8 , virtual S6003C9 {
  ::S6003C9 s6003c7f0;
  short s6003c7f1;
  int s6003c7f2[2];
  ~S6003C7(); // tgen
  S6003C7(); // tgen
};
//SIG(-1 S6003C7) C1{ BC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ v2 v3 v4 Fi[2] Fl[2] FC2[3]} VBC4{ VBC2 Fp FC2 FL:3} VBC5{ v5 FL FD Fp Fc FC2 Fp[2] Fl[8] Fs Fp FL:64} FC5 Fs Fi[2]}


S6003C7 ::~S6003C7(){ note_dtor("S6003C7", this);} // tgen
S6003C7 ::S6003C7(){ note_ctor("S6003C7", this);} // tgen

static void Test_S6003C7()
{
  extern Class_Descriptor cd_S6003C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,248)];
    init_test(&cd_S6003C7, buf);
    S6003C7 *dp, &lv = *(dp=new (buf) S6003C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,988), "sizeof(S6003C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C7)");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*), 0, "S6003C7");
    check_base_class_offset(lv, (S6003C4*), ABISELECT(464,292), "S6003C7");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(1096,708), "S6003C7");
    check_base_class_offset(lv, (S6003C8*), ABISELECT(928,600), "S6003C7");
    check_base_class_offset(lv, (S6003C9*), ABISELECT(1248,804), "S6003C7");
    check_field_offset(lv, s6003c7f0, ABISELECT(144,96), "S6003C7.s6003c7f0");
    check_field_offset(lv, s6003c7f1, ABISELECT(448,280), "S6003C7.s6003c7f1");
    check_field_offset(lv, s6003c7f2, ABISELECT(452,284), "S6003C7.s6003c7f2");
    test_class_info(&lv, &cd_S6003C7);
    dp->~S6003C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C7(Test_S6003C7, "S6003C7", ABISELECT(1552,988));

#else // __cplusplus

extern void _ZN7S6003C7C1Ev();
extern void _ZN7S6003C7D1Ev();
Name_Map name_map_S6003C7[] = {
  NSPAIR(_ZN7S6003C7C1Ev),
  NSPAIR(_ZN7S6003C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
static Base_Class bases_S6003C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C4,    ABISELECT(464,292), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C5,    ABISELECT(1096,708), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6003C8,    ABISELECT(928,600), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C9,    ABISELECT(1248,804), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6003C7[];
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY vtc_S6003C7[] = {
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(168,108),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  0,
  ABISELECT(-1096,-708),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern VTBL_ENTRY _ZTV7S6003C7[];
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C7[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__7S6003C7[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTT_ENTRY vtt_S6003C7[] = {
  {&(_ZTV7S6003C7[6]),  6,26},
  {&(_ZTV7S6003C7[12]),  12,26},
  {&(_ZTV7S6003C7[18]),  18,26},
  {&(_ZTV7S6003C7[21]),  21,26},
  {&(_ZTV7S6003C7[25]),  25,26},
  {&(_tg__ZTV7S6003C8__7S6003C7[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__7S6003C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
Class_Descriptor cd_S6003C7 = {  "S6003C7", // class name
  bases_S6003C7, 5,
  &(vtc_S6003C7[0]), // expected_vtbl_contents
  &(vtt_S6003C7[0]), // expected_vtt_contents
  ABISELECT(1552,988), // object size
  NSPAIRA(_ZTI7S6003C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6003C7),26, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6003C7),7, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C10  : S6003C9 , S6003C4 , S6003C5 {
  long s6003c10f0;
  __tsi64 s6003c10f1;
  void *s6003c10f2[8];
  ::S6003C7 s6003c10f3;
  void *s6003c10f4;
  int s6003c10f5;
  ::S6003C7 s6003c10f6;
  int s6003c10f7;
  virtual  ~S6003C10(); // _ZN8S6003C10D1Ev
  virtual void  v6(); // _ZN8S6003C102v6Ev
  S6003C10(); // tgen
};
//SIG(-1 S6003C10) C1{ BC2{ v2 FL FD Fp Fc FC3{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC4{ v3 v4 v5 Fi[2] Fl[2] FC3[3]} BC3 vd v1 Fl FL Fp[8] FC5{ BC3 VBC4 VBC6{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC5 Fi}


 S6003C10 ::~S6003C10(){ note_dtor("S6003C10", this);}
void  S6003C10 ::v6(){vfunc_called(this, "_ZN8S6003C102v6Ev");}
S6003C10 ::S6003C10(){ note_ctor("S6003C10", this);} // tgen

static void Test_S6003C10()
{
  extern Class_Descriptor cd_S6003C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(259,656)];
    init_test(&cd_S6003C10, buf);
    S6003C10 *dp, &lv = *(dp=new (buf) S6003C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4128,2620), "sizeof(S6003C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C10)");
    check_base_class_offset(lv, (S6003C9*), 0, "S6003C10");
    check_base_class_offset(lv, (S6003C4*), ABISELECT(296,184), "S6003C10");
    check_base_class_offset(lv, (S6003C5*), ABISELECT(760,492), "S6003C10");
    check_field_offset(lv, s6003c10f0, ABISELECT(904,588), "S6003C10.s6003c10f0");
    check_field_offset(lv, s6003c10f1, ABISELECT(912,592), "S6003C10.s6003c10f1");
    check_field_offset(lv, s6003c10f2, ABISELECT(920,600), "S6003C10.s6003c10f2");
    check_field_offset(lv, s6003c10f3, ABISELECT(992,632), "S6003C10.s6003c10f3");
    check_field_offset(lv, s6003c10f4, ABISELECT(2544,1620), "S6003C10.s6003c10f4");
    check_field_offset(lv, s6003c10f5, ABISELECT(2552,1624), "S6003C10.s6003c10f5");
    check_field_offset(lv, s6003c10f6, ABISELECT(2560,1628), "S6003C10.s6003c10f6");
    check_field_offset(lv, s6003c10f7, ABISELECT(4112,2616), "S6003C10.s6003c10f7");
    test_class_info(&lv, &cd_S6003C10);
    dp->~S6003C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C10(Test_S6003C10, "S6003C10", ABISELECT(4128,2620));

#else // __cplusplus

extern void _ZN8S6003C10C1Ev();
extern void _ZN8S6003C10D1Ev();
Name_Map name_map_S6003C10[] = {
  NSPAIR(_ZN8S6003C10C1Ev),
  NSPAIR(_ZN8S6003C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
static Base_Class bases_S6003C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C4,    ABISELECT(296,184), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C5,    ABISELECT(760,492), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6003C10[];
extern void _ZN7S6003C92v1Ev();
extern void _ZN8S6003C10D1Ev();
extern void _ZN8S6003C10D0Ev();
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY vtc_S6003C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C10[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&_ZN8S6003C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C10D0Ev,
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI8S6003C10[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI8S6003C10[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
Class_Descriptor cd_S6003C10 = {  "S6003C10", // class name
  bases_S6003C10, 3,
  &(vtc_S6003C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(4128,2620), // object size
  NSPAIRA(_ZTI8S6003C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6003C10),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C13  : S6003C9 {
  ::S6003C8 s6003c13f0;
  int s6003c13f1;
  void *s6003c13f2;
  int s6003c13f3;
  virtual  ~S6003C13(); // _ZN8S6003C13D1Ev
  virtual void  v10(); // _ZN8S6003C133v10Ev
  S6003C13(); // tgen
};
//SIG(-1 S6003C13) C1{ BC2{ v2 FL FD Fp Fc FC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v1 FC4{ VBC3 Fp FC3 FL:3} Fi Fp Fi}


 S6003C13 ::~S6003C13(){ note_dtor("S6003C13", this);}
void  S6003C13 ::v10(){vfunc_called(this, "_ZN8S6003C133v10Ev");}
S6003C13 ::S6003C13(){ note_ctor("S6003C13", this);} // tgen

static void Test_S6003C13()
{
  extern Class_Descriptor cd_S6003C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,101)];
    init_test(&cd_S6003C13, buf);
    S6003C13 *dp, &lv = *(dp=new (buf) S6003C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,400), "sizeof(S6003C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C13)");
    check_base_class_offset(lv, (S6003C9*), 0, "S6003C13");
    check_field_offset(lv, s6003c13f0, ABISELECT(296,184), "S6003C13.s6003c13f0");
    check_field_offset(lv, s6003c13f1, ABISELECT(608,388), "S6003C13.s6003c13f1");
    check_field_offset(lv, s6003c13f2, ABISELECT(616,392), "S6003C13.s6003c13f2");
    check_field_offset(lv, s6003c13f3, ABISELECT(624,396), "S6003C13.s6003c13f3");
    test_class_info(&lv, &cd_S6003C13);
    dp->~S6003C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C13(Test_S6003C13, "S6003C13", ABISELECT(640,400));

#else // __cplusplus

extern void _ZN8S6003C13C1Ev();
extern void _ZN8S6003C13D1Ev();
Name_Map name_map_S6003C13[] = {
  NSPAIR(_ZN8S6003C13C1Ev),
  NSPAIR(_ZN8S6003C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
static Base_Class bases_S6003C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6003C13[];
extern void _ZN7S6003C92v1Ev();
extern void _ZN8S6003C13D1Ev();
extern void _ZN8S6003C13D0Ev();
extern void _ZN8S6003C133v10Ev();
static  VTBL_ENTRY vtc_S6003C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C13[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&_ZN8S6003C13D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C13D0Ev,
  (VTBL_ENTRY)&_ZN8S6003C133v10Ev,
};
extern VTBL_ENTRY _ZTI8S6003C13[];
extern  VTBL_ENTRY _ZTV8S6003C13[];
Class_Descriptor cd_S6003C13 = {  "S6003C13", // class name
  bases_S6003C13, 1,
  &(vtc_S6003C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,400), // object size
  NSPAIRA(_ZTI8S6003C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S6003C13),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C12  : virtual S6003C9 , virtual S6003C10 , virtual S6003C5 , virtual S6003C8 {
  __tsi64 s6003c12f0:44;
  void *s6003c12f1;
  int s6003c12f2;
  ::S6003C7 s6003c12f3;
  long s6003c12f4[2];
  int s6003c12f5[3];
  ::S6003C10 s6003c12f6;
  char s6003c12f7:7;
  ::S6003C13 s6003c12f8;
  ~S6003C12(); // tgen
  S6003C12(); // tgen
};
//SIG(-1 S6003C12) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} VBC4{ BC2 BC5{ v2 v3 v4 Fi[2] Fl[2] FC3[3]} BC3 vd v6 Fl FL Fp[8] FC6{ BC3 VBC5 VBC7{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC6 Fi} VBC3 VBC7 FL:44 Fp Fi FC6 Fl[2] Fi[3] FC4 Fc:7 FC8{ BC2 vd v7 FC7 Fi Fp Fi}}


S6003C12 ::~S6003C12(){ note_dtor("S6003C12", this);} // tgen
S6003C12 ::S6003C12(){ note_ctor("S6003C12", this);} // tgen

static void Test_S6003C12()
{
  extern Class_Descriptor cd_S6003C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(697,1766)];
    init_test(&cd_S6003C12, buf);
    S6003C12 *dp, &lv = *(dp=new (buf) S6003C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11136,7060), "sizeof(S6003C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C12)");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*), ABISELECT(6400,4052), "S6003C12");
    check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(6704,4236), "S6003C12");
    check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(7000,4420), "S6003C12");
    check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(7464,4728), "S6003C12");
    check_base_class_offset(lv, (S6003C10*), ABISELECT(6704,4236), "S6003C12");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*), ABISELECT(10824,6856), "S6003C12");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(10824,6856), "S6003C12");
    check_base_class_offset(lv, (S6003C8*), ABISELECT(10968,6952), "S6003C12");
    set_bf_and_test(lv, s6003c12f0, ABISELECT(8,4), 0, 44, 1, "S6003C12");
    set_bf_and_test(lv, s6003c12f0, ABISELECT(8,4), 0, 44, hide_sll(1LL<<43), "S6003C12");
    check_field_offset(lv, s6003c12f1, ABISELECT(16,12), "S6003C12.s6003c12f1");
    check_field_offset(lv, s6003c12f2, ABISELECT(24,16), "S6003C12.s6003c12f2");
    check_field_offset(lv, s6003c12f3, ABISELECT(32,20), "S6003C12.s6003c12f3");
    check_field_offset(lv, s6003c12f4, ABISELECT(1584,1008), "S6003C12.s6003c12f4");
    check_field_offset(lv, s6003c12f5, ABISELECT(1600,1016), "S6003C12.s6003c12f5");
    check_field_offset(lv, s6003c12f6, ABISELECT(1616,1028), "S6003C12.s6003c12f6");
    set_bf_and_test(lv, s6003c12f7, ABISELECT(5744,3648), 0, 7, 1, "S6003C12");
    set_bf_and_test(lv, s6003c12f7, ABISELECT(5744,3648), 0, 7, hide_sll(1LL<<6), "S6003C12");
    check_field_offset(lv, s6003c12f8, ABISELECT(5760,3652), "S6003C12.s6003c12f8");
    test_class_info(&lv, &cd_S6003C12);
    dp->~S6003C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C12(Test_S6003C12, "S6003C12", ABISELECT(11136,7060));

#else // __cplusplus

extern void _ZN8S6003C12C1Ev();
extern void _ZN8S6003C12D1Ev();
Name_Map name_map_S6003C12[] = {
  NSPAIR(_ZN8S6003C12C1Ev),
  NSPAIR(_ZN8S6003C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
static Base_Class bases_S6003C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C9,    ABISELECT(6400,4052), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C9,    ABISELECT(6704,4236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(7000,4420), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(7464,4728), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6003C10,    ABISELECT(6704,4236), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C5,    ABISELECT(10824,6856), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C8,    ABISELECT(10968,6952), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6003C12[];
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn6704_N8S6003C12D1Ev,_ZThn4236_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn6704_N8S6003C12D0Ev,_ZThn4236_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY vtc_S6003C12[] = {
  ABISELECT(10968,6952),
  ABISELECT(10824,6856),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-144,-96),
  ABISELECT(-10968,-6952),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern VTBL_ENTRY _ZTV8S6003C12[];
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C12[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__8S6003C12[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTT_ENTRY vtt_S6003C12[] = {
  {&(_ZTV8S6003C12[6]),  6,40},
  {&(_ZTV8S6003C12[11]),  11,40},
  {&(_ZTV8S6003C12[21]),  21,40},
  {&(_ZTV8S6003C12[27]),  27,40},
  {&(_ZTV8S6003C12[32]),  32,40},
  {&(_ZTV8S6003C12[36]),  36,40},
  {&(_ZTV8S6003C12[40]),  40,40},
  {&(_tg__ZTV7S6003C8__8S6003C12[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__8S6003C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
static VTBL_ENTRY alt_thunk_names12[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N8S6003C12D0Ev,_ZThn4236_N8S6003C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N8S6003C12D1Ev,_ZThn4236_N8S6003C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C12 = {  "S6003C12", // class name
  bases_S6003C12, 7,
  &(vtc_S6003C12[0]), // expected_vtbl_contents
  &(vtt_S6003C12[0]), // expected_vtt_contents
  ABISELECT(11136,7060), // object size
  NSPAIRA(_ZTI8S6003C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6003C12),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6003C12),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names12,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C11  : virtual S6003C10 , virtual S6003C5 , virtual S6003C8 , S6003C7 , S6003C12 {
  ::S6003C10 s6003c11f0;
  __tsi64 s6003c11f1;
  char s6003c11f2:7;
  virtual void  v7(); // _ZN8S6003C112v7Ev
  ~S6003C11(); // tgen
  S6003C11(); // tgen
};
//SIG(-1 S6003C11) C1{ VBC2{ BC3{ v2 FL FD Fp Fc FC4{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC5{ v3 v4 v5 Fi[2] Fl[2] FC4[3]} BC4 vd v7 Fl FL Fp[8] FC6{ BC4 VBC5 VBC7{ VBC4 Fp FC4 FL:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC6 Fi} VBC4 VBC7 BC6 BC8{ VBC3 VBC2 VBC4 VBC7 FL:44 Fp Fi FC6 Fl[2] Fi[3] FC2 Fc:7 FC9{ BC3 vd v8 FC7 Fi Fp Fi}} v1 FC2 FL Fc:7}


void  S6003C11 ::v7(){vfunc_called(this, "_ZN8S6003C112v7Ev");}
S6003C11 ::~S6003C11(){ note_dtor("S6003C11", this);} // tgen
S6003C11 ::S6003C11(){ note_ctor("S6003C11", this);} // tgen

static void Test_S6003C11()
{
  extern Class_Descriptor cd_S6003C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1014,2574)];
    init_test(&cd_S6003C11, buf);
    S6003C11 *dp, &lv = *(dp=new (buf) S6003C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16208,10292), "sizeof(S6003C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C11)");
    check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(11008,6976), "S6003C11");
    check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(11304,7160), "S6003C11");
    check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(11768,7468), "S6003C11");
    check_base_class_offset(lv, (S6003C10*), ABISELECT(11008,6976), "S6003C11");
    check_base_class_offset(lv, (S6003C10*)(S6003C12*), ABISELECT(11008,6976), "S6003C11");
    /*is_ambiguous_... S6003C11::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*), ABISELECT(15128,9596), "S6003C11");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(15128,9596), "S6003C11");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*), ABISELECT(15128,9596), "S6003C11");
    check_base_class_offset(lv, (S6003C8*), ABISELECT(15272,9692), "S6003C11");
    check_base_class_offset(lv, (S6003C8*)(S6003C7*), ABISELECT(15272,9692), "S6003C11");
    check_base_class_offset(lv, (S6003C8*)(S6003C12*), ABISELECT(15272,9692), "S6003C11");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*), 0, "S6003C11");
    check_base_class_offset(lv, (S6003C4*)(S6003C7*), ABISELECT(15440,9800), "S6003C11");
    check_base_class_offset(lv, (S6003C9*)(S6003C7*), ABISELECT(15904,10108), "S6003C11");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*), ABISELECT(15904,10108), "S6003C11");
    check_base_class_offset(lv, (S6003C7*), 0, "S6003C11");
    check_base_class_offset(lv, (S6003C12*), ABISELECT(464,292), "S6003C11");
    check_field_offset(lv, s6003c11f0, ABISELECT(6864,4344), "S6003C11.s6003c11f0");
    check_field_offset(lv, s6003c11f1, ABISELECT(10992,6964), "S6003C11.s6003c11f1");
    set_bf_and_test(lv, s6003c11f2, ABISELECT(11000,6972), 0, 7, 1, "S6003C11");
    set_bf_and_test(lv, s6003c11f2, ABISELECT(11000,6972), 0, 7, hide_sll(1LL<<6), "S6003C11");
    test_class_info(&lv, &cd_S6003C11);
    dp->~S6003C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C11(Test_S6003C11, "S6003C11", ABISELECT(16208,10292));

#else // __cplusplus

extern void _ZN8S6003C11C1Ev();
extern void _ZN8S6003C11D1Ev();
Name_Map name_map_S6003C11[] = {
  NSPAIR(_ZN8S6003C11C1Ev),
  NSPAIR(_ZN8S6003C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
static Base_Class bases_S6003C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C9,    ABISELECT(11008,6976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(11304,7160), //bcp->offset
    32, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(11768,7468), //bcp->offset
    37, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6003C10,    ABISELECT(11008,6976), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C5,    ABISELECT(15128,9596), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C8,    ABISELECT(15272,9692), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(15440,9800), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6003C9,    ABISELECT(15904,10108), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6003C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C12,    ABISELECT(464,292), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6003C11[];
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void _ZN8S6003C11D1Ev();
extern void _ZN8S6003C11D0Ev();
extern void ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev)();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY vtc_S6003C11[] = {
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D0Ev,
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S6003C11[];
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__8S6003C11[] = {
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C7__8S6003C11[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C7__8S6003C11[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C7__8S6003C11[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C7__8S6003C11[] = {
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C11[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C12__8S6003C11[] = {
  0,
  ABISELECT(-15440,-9816),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C12__8S6003C11[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C12__8S6003C11[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C12__8S6003C11[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C12__8S6003C11[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C12__8S6003C11[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C11[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__8S6003C11[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTT_ENTRY vtt_S6003C11[] = {
  {&(_ZTV8S6003C11[7]),  7,59},
  {&(_tg__ZTV7S6003C7__8S6003C11[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C7__8S6003C11[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C7__8S6003C11[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C7__8S6003C11[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C7__8S6003C11[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C11[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C12__8S6003C11[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C12__8S6003C11[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C12__8S6003C11[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C12__8S6003C11[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C12__8S6003C11[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C12__8S6003C11[3]),  3,3},
  {&(_ZTV8S6003C11[28]),  28,59},
  {&(_ZTV8S6003C11[34]),  34,59},
  {&(_ZTV8S6003C11[39]),  39,59},
  {&(_ZTV8S6003C11[43]),  43,59},
  {&(_ZTV8S6003C11[47]),  47,59},
  {&(_ZTV8S6003C11[52]),  52,59},
  {&(_ZTV8S6003C11[58]),  58,59},
  {&(_ZTV8S6003C11[17]),  17,59},
  {&(_tg__ZTV7S6003C8__8S6003C11[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__8S6003C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6003C11[];
extern  VTBL_ENTRY _ZTV8S6003C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C11[];
static VTBL_ENTRY alt_thunk_names13[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C11 = {  "S6003C11", // class name
  bases_S6003C11, 11,
  &(vtc_S6003C11[0]), // expected_vtbl_contents
  &(vtt_S6003C11[0]), // expected_vtt_contents
  ABISELECT(16208,10292), // object size
  NSPAIRA(_ZTI8S6003C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6003C11),59, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6003C11),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names13,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C15  : virtual S6003C9 , S6003C4 , virtual S6003C11 {
  char s6003c15f0:8;
  int s6003c15f1;
  ~S6003C15(); // tgen
  S6003C15(); // tgen
};
//SIG(-1 S6003C15) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC4{ v2 v3 v4 Fi[2] Fl[2] FC3[3]} VBC5{ VBC6{ BC2 BC4 BC3 vd v6 Fl FL Fp[8] FC7{ BC3 VBC4 VBC8{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC7 Fi} VBC3 VBC8 BC7 BC9{ VBC2 VBC6 VBC3 VBC8 FL:44 Fp Fi FC7 Fl[2] Fi[3] FC6 Fc:7 FC10{ BC2 vd v8 FC8 Fi Fp Fi}} v7 FC6 FL Fc:7} Fc:8 Fi}


S6003C15 ::~S6003C15(){ note_dtor("S6003C15", this);} // tgen
S6003C15 ::S6003C15(){ note_ctor("S6003C15", this);} // tgen

static void Test_S6003C15()
{
  extern Class_Descriptor cd_S6003C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1044,2653)];
    init_test(&cd_S6003C15, buf);
    S6003C15 *dp, &lv = *(dp=new (buf) S6003C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16688,10608), "sizeof(S6003C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C15)");
    /*is_ambiguous_... S6003C15::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*), ABISELECT(480,316), "S6003C15");
    check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C11*), ABISELECT(480,316), "S6003C15");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C11*), ABISELECT(480,316), "S6003C15");
    /*is_ambiguous_... S6003C15::S6003C4 */ AMB_check_base_class_offset(lv, (S6003C4*), 0, "S6003C15");
    check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(11792,7476), "S6003C15");
    check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(12088,7660), "S6003C15");
    check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(12552,7968), "S6003C15");
    check_base_class_offset(lv, (S6003C10*)(S6003C11*), ABISELECT(11792,7476), "S6003C15");
    check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C11*), ABISELECT(11792,7476), "S6003C15");
    /*is_ambiguous_... S6003C11::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C11*), ABISELECT(15912,10096), "S6003C15");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(15912,10096), "S6003C15");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C11*), ABISELECT(15912,10096), "S6003C15");
    check_base_class_offset(lv, (S6003C8*)(S6003C11*), ABISELECT(16056,10192), "S6003C15");
    check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C11*), ABISELECT(16056,10192), "S6003C15");
    check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C11*), ABISELECT(16056,10192), "S6003C15");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C11*), ABISELECT(784,500), "S6003C15");
    check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C11*), ABISELECT(16224,10300), "S6003C15");
    check_base_class_offset(lv, (S6003C7*)(S6003C11*), ABISELECT(784,500), "S6003C15");
    check_base_class_offset(lv, (S6003C12*)(S6003C11*), ABISELECT(1248,792), "S6003C15");
    check_base_class_offset(lv, (S6003C11*), ABISELECT(784,500), "S6003C15");
    set_bf_and_test(lv, s6003c15f0, ABISELECT(464,308), 0, 8, 1, "S6003C15");
    set_bf_and_test(lv, s6003c15f0, ABISELECT(464,308), 0, 8, hide_sll(1LL<<7), "S6003C15");
    check_field_offset(lv, s6003c15f1, ABISELECT(468,312), "S6003C15.s6003c15f1");
    test_class_info(&lv, &cd_S6003C15);
    dp->~S6003C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C15(Test_S6003C15, "S6003C15", ABISELECT(16688,10608));

#else // __cplusplus

extern void _ZN8S6003C15C1Ev();
extern void _ZN8S6003C15D1Ev();
Name_Map name_map_S6003C15[] = {
  NSPAIR(_ZN8S6003C15C1Ev),
  NSPAIR(_ZN8S6003C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C11;
extern VTBL_ENTRY _ZTI8S6003C11[];
extern  VTBL_ENTRY _ZTV8S6003C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C11[];
static Base_Class bases_S6003C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C9,    ABISELECT(480,316), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C9,    ABISELECT(11792,7476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(12088,7660), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(12552,7968), //bcp->offset
    57, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6003C10,    ABISELECT(11792,7476), //bcp->offset
    39, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6003C5,    ABISELECT(15912,10096), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6003C8,    ABISELECT(16056,10192), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6003C5,    ABISELECT(784,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(16224,10300), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6003C7,    ABISELECT(784,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6003C12,    ABISELECT(1248,792), //bcp->offset
    31, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6003C11,    ABISELECT(784,500), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6003C15[];
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN8S6003C15D1Ev();
extern void _ZN8S6003C15D0Ev();
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn784_N8S6003C15D1Ev,_ZThn500_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn784_N8S6003C15D0Ev,_ZThn500_N8S6003C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev)();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn11792_N8S6003C15D1Ev,_ZThn7476_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn11792_N8S6003C15D0Ev,_ZThn7476_N8S6003C15D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY vtc_S6003C15[] = {
  ABISELECT(16224,10300),
  ABISELECT(16056,10192),
  ABISELECT(15912,10096),
  ABISELECT(11792,7476),
  ABISELECT(784,500),
  ABISELECT(480,316),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D0Ev,
  0,
  ABISELECT(-480,-316),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  ABISELECT(-784,-500),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-784,-500),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-1248,-792),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11792,-7476),
  0,
  ABISELECT(-11792,-7476),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-12088,-7660),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-12552,-7968),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-15912,-10096),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-144,-96),
  ABISELECT(-16056,-10192),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  0,
  0,
  0,
  ABISELECT(-16224,-10300),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S6003C15[];
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void _ZN8S6003C11D1Ev();
extern void _ZN8S6003C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C15[] = {
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D0Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C11__8S6003C15[] = {
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C11__8S6003C15[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C11__8S6003C15[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C11__8S6003C15[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C11__8S6003C15[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C15[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C11__8S6003C15[] = {
  0,
  ABISELECT(768,476),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C11__8S6003C15[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__8S6003C15[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__8S6003C15[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C11__8S6003C15[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C11__8S6003C15[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C11__8S6003C15[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C11__8S6003C15[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C11__8S6003C15[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C11__8S6003C15[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C11__8S6003C15[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A1__8S6003C11__8S6003C15[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__A1__8S6003C11__8S6003C15[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C11__8S6003C15[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C15[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__8S6003C15[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTT_ENTRY vtt_S6003C15[] = {
  {&(_ZTV8S6003C15[8]),  8,75},
  {&(_ZTV8S6003C15[16]),  16,75},
  {&(_ZTV8S6003C15[27]),  27,75},
  {&(_ZTV8S6003C15[48]),  48,75},
  {&(_ZTV8S6003C15[54]),  54,75},
  {&(_ZTV8S6003C15[59]),  59,75},
  {&(_ZTV8S6003C15[63]),  63,75},
  {&(_ZTV8S6003C15[67]),  67,75},
  {&(_ZTV8S6003C15[72]),  72,75},
  {&(_ZTV8S6003C15[37]),  37,75},
  {&(_tg__ZTV8S6003C11__8S6003C15[7]),  7,11},
  {&(_tg__ZTV7S6003C78S6003C11__8S6003C15[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C11__8S6003C15[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C11__8S6003C15[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C11__8S6003C15[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C11__8S6003C15[3]),  3,4},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C15[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C11__8S6003C15[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C11__8S6003C15[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__8S6003C15[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__8S6003C15[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C11__8S6003C15[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C11__8S6003C15[3]),  3,3},
  {&(_tg__ZTV8S6003C10__8S6003C11__8S6003C15[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C11__8S6003C15[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C11__8S6003C15[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C11__8S6003C15[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C11__8S6003C15[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A1__8S6003C11__8S6003C15[5]),  5,8},
  {&(_tg__ZTV7S6003C9__A1__8S6003C11__8S6003C15[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C11__8S6003C15[6]),  6,8},
  {&(_tg__ZTV7S6003C8__8S6003C15[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__8S6003C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6003C15[];
extern  VTBL_ENTRY _ZTV8S6003C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C15[];
static VTBL_ENTRY alt_thunk_names14[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N8S6003C15D0Ev,_ZThn7476_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N8S6003C15D1Ev,_ZThn7476_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S6003C15D0Ev,_ZThn500_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S6003C15D1Ev,_ZThn500_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C15 = {  "S6003C15", // class name
  bases_S6003C15, 13,
  &(vtc_S6003C15[0]), // expected_vtbl_contents
  &(vtt_S6003C15[0]), // expected_vtt_contents
  ABISELECT(16688,10608), // object size
  NSPAIRA(_ZTI8S6003C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6003C15),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6003C15),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names14,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C6  : virtual S6003C5 , virtual S6003C7 , S6003C10 , S6003C11 {
  ::S6003C12 s6003c6f0;
  short s6003c6f1;
  __tsi64 s6003c6f2:8;
  virtual void  v8(); // _ZN7S6003C62v8Ev
  virtual void  v9(); // _ZN7S6003C62v9Ev
  ~S6003C6(); // tgen
  S6003C6(); // tgen
};
//SIG(-1 S6003C6) C1{ VBC2{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ BC2 VBC4{ v4 v5 v6 Fi[2] Fl[2] FC2[3]} VBC5{ VBC2 Fp FC2 FL:3} VBC6{ v7 FL FD Fp Fc FC2 Fp[2] Fl[8] Fs Fp FL:64} FC6 Fs Fi[2]} BC7{ BC6 BC4 BC2 vd v8 Fl FL Fp[8] FC3 Fp Fi FC3 Fi} BC8{ VBC7 VBC2 VBC5 BC3 BC9{ VBC6 VBC7 VBC2 VBC5 FL:44 Fp Fi FC3 Fl[2] Fi[3] FC7 Fc:7 FC10{ BC6 vd v10 FC5 Fi Fp Fi}} v9 FC7 FL Fc:7} v1 v2 FC9 Fs FL:8}


void  S6003C6 ::v8(){vfunc_called(this, "_ZN7S6003C62v8Ev");}
void  S6003C6 ::v9(){vfunc_called(this, "_ZN7S6003C62v9Ev");}
S6003C6 ::~S6003C6(){ note_dtor("S6003C6", this);} // tgen
S6003C6 ::S6003C6(){ note_ctor("S6003C6", this);} // tgen

static void Test_S6003C6()
{
  extern Class_Descriptor cd_S6003C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1999,5068)];
    init_test(&cd_S6003C6, buf);
    S6003C6 *dp, &lv = *(dp=new (buf) S6003C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(31968,20268), "sizeof(S6003C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C6)");
    /*is_ambiguous_... S6003C6::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*), ABISELECT(26280,16660), "S6003C6");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(26280,16660), "S6003C6");
    /*is_ambiguous_... S6003C11::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C11*), ABISELECT(26280,16660), "S6003C6");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C11*), ABISELECT(26280,16660), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*), ABISELECT(26432,16756), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C7*), ABISELECT(26896,17048), "S6003C6");
    check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C11*), ABISELECT(26896,17048), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C7*), ABISELECT(27360,17356), "S6003C6");
    check_base_class_offset(lv, (S6003C8*)(S6003C11*), ABISELECT(27360,17356), "S6003C6");
    check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C11*), ABISELECT(27360,17356), "S6003C6");
    check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C11*), ABISELECT(27360,17356), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C7*), ABISELECT(27536,17464), "S6003C6");
    check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C11*), ABISELECT(27536,17464), "S6003C6");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C11*), ABISELECT(27536,17464), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C7*), ABISELECT(26432,16756), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C10*), 0, "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(296,184), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(760,492), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C10*), 0, "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(27840,17648), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(28136,17832), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(28600,18140), "S6003C6");
    check_base_class_offset(lv, (S6003C10*)(S6003C11*), ABISELECT(27840,17648), "S6003C6");
    check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C11*), ABISELECT(27840,17648), "S6003C6");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C11*), ABISELECT(4128,2620), "S6003C6");
    check_base_class_offset(lv, (S6003C7*)(S6003C11*), ABISELECT(4128,2620), "S6003C6");
    check_base_class_offset(lv, (S6003C12*)(S6003C11*), ABISELECT(4592,2912), "S6003C6");
    check_base_class_offset(lv, (S6003C11*), ABISELECT(4128,2620), "S6003C6");
    check_field_offset(lv, s6003c6f0, ABISELECT(15136,9596), "S6003C6.s6003c6f0");
    check_field_offset(lv, s6003c6f1, ABISELECT(26272,16656), "S6003C6.s6003c6f1");
    set_bf_and_test(lv, s6003c6f2, ABISELECT(26274,16658), 0, 8, 1, "S6003C6");
    set_bf_and_test(lv, s6003c6f2, ABISELECT(26274,16658), 0, 8, hide_sll(1LL<<7), "S6003C6");
    test_class_info(&lv, &cd_S6003C6);
    dp->~S6003C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C6(Test_S6003C6, "S6003C6", ABISELECT(31968,20268));

#else // __cplusplus

extern void _ZN7S6003C6C1Ev();
extern void _ZN7S6003C6D1Ev();
Name_Map name_map_S6003C6[] = {
  NSPAIR(_ZN7S6003C6C1Ev),
  NSPAIR(_ZN7S6003C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C11;
extern VTBL_ENTRY _ZTI8S6003C11[];
extern  VTBL_ENTRY _ZTV8S6003C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C11[];
static Base_Class bases_S6003C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C5,    ABISELECT(26280,16660), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C5,    ABISELECT(26432,16756), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(26896,17048), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6003C8,    ABISELECT(27360,17356), //bcp->offset
    61, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6003C9,    ABISELECT(27536,17464), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6003C7,    ABISELECT(26432,16756), //bcp->offset
    45, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(296,184), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(760,492), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6003C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C9,    ABISELECT(27840,17648), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(28136,17832), //bcp->offset
    81, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(28600,18140), //bcp->offset
    86, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6003C10,    ABISELECT(27840,17648), //bcp->offset
    68, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S6003C5,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S6003C7,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6003C12,    ABISELECT(4592,2912), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6003C11,    ABISELECT(4128,2620), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6003C6[];
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C6D1Ev();
extern void _ZN7S6003C6D0Ev();
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C62v8Ev();
extern void _ZN7S6003C62v9Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZThn4128_N7S6003C6D1Ev,_ZThn2620_N7S6003C6D1Ev)();
extern void ABISELECT(_ZThn4128_N7S6003C6D0Ev,_ZThn2620_N7S6003C6D0Ev)();
extern void ABISELECT(_ZThn4592_N7S6003C6D1Ev,_ZThn2912_N7S6003C6D1Ev)();
extern void ABISELECT(_ZThn4592_N7S6003C6D0Ev,_ZThn2912_N7S6003C6D0Ev)();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N7S6003C6D1Ev,_ZTv0_n16_N7S6003C6D1Ev)();
extern void ABISELECT(_ZThn27840_N7S6003C6D1Ev,_ZThn17648_N7S6003C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6003C6D0Ev,_ZTv0_n16_N7S6003C6D0Ev)();
extern void ABISELECT(_ZThn27840_N7S6003C6D0Ev,_ZThn17648_N7S6003C6D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY vtc_S6003C6[] = {
  ABISELECT(27840,17648),
  ABISELECT(27536,17464),
  ABISELECT(27360,17356),
  ABISELECT(26896,17048),
  ABISELECT(26432,16756),
  ABISELECT(26280,16660),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&_ZN7S6003C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6003C6D0Ev,
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v8Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v9Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N7S6003C6D1Ev,_ZThn2620_N7S6003C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N7S6003C6D0Ev,_ZThn2620_N7S6003C6D0Ev),
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N7S6003C6D1Ev,_ZThn2912_N7S6003C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N7S6003C6D0Ev,_ZThn2912_N7S6003C6D0Ev),
  0,
  ABISELECT(-26280,-16660),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-26432,-16756),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  0,
  0,
  ABISELECT(-26896,-17048),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-1080,-696),
  ABISELECT(-27360,-17356),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  0,
  ABISELECT(-27536,-17464),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-27840,-17648),
  0,
  ABISELECT(-27840,-17648),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6003C6D1Ev,_ZTv0_n16_N7S6003C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6003C6D0Ev,_ZTv0_n16_N7S6003C6D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-28136,-17832),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-28600,-18140),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern VTBL_ENTRY _ZTV7S6003C6[];
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void _ZN8S6003C11D1Ev();
extern void _ZN8S6003C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C11__7S6003C6[] = {
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D0Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C11__A1__7S6003C6[] = {
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C11__A1__7S6003C6[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C11__A1__7S6003C6[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C11__A1__7S6003C6[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C11__A1__7S6003C6[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__7S6003C6[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C11__7S6003C6[] = {
  0,
  ABISELECT(-22944,-14552),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn23248_N8S6003C12D1Ev,_ZThn14736_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn23248_N8S6003C12D0Ev,_ZThn14736_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C11__7S6003C6[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23248,-14736),
  0,
  ABISELECT(-23248,-14736),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__7S6003C6[] = {
  ABISELECT(-23544,-14920),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__7S6003C6[] = {
  ABISELECT(-24008,-15228),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C11__7S6003C6[] = {
  0,
  ABISELECT(-21688,-13748),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C11__7S6003C6[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-22768,-14444),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn23712_N8S6003C11D1Ev,_ZThn15028_N8S6003C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev)();
extern void ABISELECT(_ZThn23712_N8S6003C11D0Ev,_ZThn15028_N8S6003C11D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C11__7S6003C6[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23712,-15028),
  0,
  ABISELECT(-23712,-15028),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C11__7S6003C6[] = {
  ABISELECT(-24008,-15212),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C11__7S6003C6[] = {
  ABISELECT(-24472,-15520),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C11__7S6003C6[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C11__7S6003C6[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A1__8S6003C11__7S6003C6[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__A1__8S6003C11__7S6003C6[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C11__7S6003C6[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__7S6003C6[] = {
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C7__7S6003C6[] = {
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C7__7S6003C6[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C7__7S6003C6[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C7__7S6003C6[] = {
  0,
  ABISELECT(-1104,-708),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C6[] = {
  ABISELECT(-1080,-696),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__7S6003C6[] = {
  0,
  ABISELECT(1080,696),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTT_ENTRY vtt_S6003C6[] = {
  {&(_ZTV7S6003C6[8]),  8,89},
  {&(_tg__ZTV8S6003C11__7S6003C6[7]),  7,11},
  {&(_tg__ZTV7S6003C78S6003C11__A1__7S6003C6[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C11__A1__7S6003C6[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C11__A1__7S6003C6[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C11__A1__7S6003C6[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C11__A1__7S6003C6[3]),  3,4},
  {&(_tg__ZTV8S6003C128S6003C11__7S6003C6[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C11__7S6003C6[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C11__7S6003C6[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__7S6003C6[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__7S6003C6[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C11__7S6003C6[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C11__7S6003C6[3]),  3,3},
  {&(_tg__ZTV8S6003C10__8S6003C11__7S6003C6[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C11__7S6003C6[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C11__7S6003C6[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C11__7S6003C6[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C11__7S6003C6[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A1__8S6003C11__7S6003C6[5]),  5,8},
  {&(_tg__ZTV7S6003C9__A1__8S6003C11__7S6003C6[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C11__7S6003C6[6]),  6,8},
  {&(_ZTV7S6003C6[44]),  44,89},
  {&(_ZTV7S6003C6[52]),  52,89},
  {&(_ZTV7S6003C6[58]),  58,89},
  {&(_ZTV7S6003C6[64]),  64,89},
  {&(_ZTV7S6003C6[67]),  67,89},
  {&(_ZTV7S6003C6[29]),  29,89},
  {&(_ZTV7S6003C6[77]),  77,89},
  {&(_ZTV7S6003C6[83]),  83,89},
  {&(_ZTV7S6003C6[88]),  88,89},
  {&(_ZTV7S6003C6[39]),  39,89},
  {&(_tg__ZTV7S6003C7__7S6003C6[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C7__7S6003C6[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C7__7S6003C6[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C7__7S6003C6[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C7__7S6003C6[3]),  3,4},
  {&(_tg__ZTV7S6003C8__7S6003C6[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__7S6003C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S6003C6[];
extern  VTBL_ENTRY _ZTV7S6003C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C6[];
static VTBL_ENTRY alt_thunk_names15[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N8S6003C11D0Ev,_ZThn15028_N8S6003C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N8S6003C11D1Ev,_ZThn15028_N8S6003C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N8S6003C12D0Ev,_ZThn14736_N8S6003C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N8S6003C12D1Ev,_ZThn14736_N8S6003C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6003C6D0Ev,_ZTv0_n16_N7S6003C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N7S6003C6D0Ev,_ZThn17648_N7S6003C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6003C6D1Ev,_ZTv0_n16_N7S6003C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N7S6003C6D1Ev,_ZThn17648_N7S6003C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C6 = {  "S6003C6", // class name
  bases_S6003C6, 18,
  &(vtc_S6003C6[0]), // expected_vtbl_contents
  &(vtt_S6003C6[0]), // expected_vtt_contents
  ABISELECT(31968,20268), // object size
  NSPAIRA(_ZTI7S6003C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6003C6),89, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6003C6),39, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names15,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S6003C18  {
  long s6003c18f0;
  int s6003c18f1;
  long s6003c18f2;
  short s6003c18f3;
  int s6003c18f4;
  void  mf6003c18(); // _ZN8S6003C189mf6003c18Ev
};
//SIG(1 S6003C18) U1{ m Fl Fi Fl Fs Fi}

#endif // __cplusplus
#ifdef __cplusplus

struct  S6003C17  : virtual S6003C4 , S6003C15 , virtual S6003C6 , S6003C12 , S6003C13 {
  ::S6003C18 s6003c17f0;
  __tsi64 s6003c17f1;
  long double s6003c17f2;
  void *s6003c17f3;
  __tsi64 s6003c17f4;
  int s6003c17f5;
  ::S6003C15 s6003c17f6;
  int s6003c17f7;
  ::S6003C5 s6003c17f8;
  virtual  ~S6003C17(); // _ZN8S6003C17D2Ev
  S6003C17(); // tgen
};
//SIG(-1 S6003C17) C1{ VBC2{ v1 v2 v3 Fi[2] Fl[2] FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]} BC4{ VBC5{ v4 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} BC2 VBC6{ VBC7{ BC5 BC2 BC3 vd v6 Fl FL Fp[8] FC8{ BC3 VBC2 VBC9{ VBC3 Fp FC3 FL:3} VBC5 FC5 Fs Fi[2]} Fp Fi FC8 Fi} VBC3 VBC9 BC8 BC10{ VBC5 VBC7 VBC3 VBC9 FL:44 Fp Fi FC8 Fl[2] Fi[3] FC7 Fc:7 FC11{ BC5 vd v10 FC9 Fi Fp Fi}} v7 FC7 FL Fc:7} Fc:8 Fi} VBC12{ VBC3 VBC8 BC7 BC6 v8 v9 FC10 Fs FL:8} BC10 BC11 vd FU13{ m Fl Fi Fl Fs Fi} FL FD Fp FL Fi FC4 Fi FC3}


 S6003C17 ::~S6003C17(){ note_dtor("S6003C17", this);}
S6003C17 ::S6003C17(){ note_ctor("S6003C17", this);} // tgen

static void Test_S6003C17()
{
  extern Class_Descriptor cd_S6003C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4213,10691)];
    init_test(&cd_S6003C17, buf);
    S6003C17 *dp, &lv = *(dp=new (buf) S6003C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(67392,42760), "sizeof(S6003C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C17)");
    /*is_ambiguous_... S6003C17::S6003C4 */ AMB_check_base_class_offset(lv, (S6003C4*), ABISELECT(24424,15516), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C11*), ABISELECT(24424,15516), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C7*), ABISELECT(24424,15516), "S6003C17");
    check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(24424,15516), "S6003C17");
    /*is_ambiguous_... S6003C15::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C15*), ABISELECT(24896,15824), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C11*), ABISELECT(24896,15824), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C11*), ABISELECT(24896,15824), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C7*), ABISELECT(24896,15824), "S6003C17");
    check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(24896,15824), "S6003C17");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(24896,15824), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*), ABISELECT(24896,15824), "S6003C17");
    /*is_ambiguous_... S6003C15::S6003C4 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C15*), 0, "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(36208,22984), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(36504,23168), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(36968,23476), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C10*)(S6003C11*), ABISELECT(36208,22984), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C11*), ABISELECT(36208,22984), "S6003C17");
    check_base_class_offset(lv, (S6003C10*)(S6003C11*)(S6003C6*), ABISELECT(36208,22984), "S6003C17");
    check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(36208,22984), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C10*)(S6003C12*), ABISELECT(36208,22984), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C11*), ABISELECT(40328,25604), "S6003C17");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(40328,25604), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C11*), ABISELECT(40328,25604), "S6003C17");
    /*is_ambiguous_... S6003C6::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C6*), ABISELECT(40328,25604), "S6003C17");
    /*is_ambiguous_... S6003C11::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C11*)(S6003C6*), ABISELECT(40328,25604), "S6003C17");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(40328,25604), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*), ABISELECT(40328,25604), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C11*), ABISELECT(40472,25700), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C11*), ABISELECT(40472,25700), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C11*), ABISELECT(40472,25700), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C7*), ABISELECT(40472,25700), "S6003C17");
    check_base_class_offset(lv, (S6003C8*)(S6003C11*)(S6003C6*), ABISELECT(40472,25700), "S6003C17");
    check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(40472,25700), "S6003C17");
    check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(40472,25700), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C12*), ABISELECT(40472,25700), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C11*), ABISELECT(25200,16008), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C7*)(S6003C11*), ABISELECT(25200,16008), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C12*)(S6003C11*), ABISELECT(25664,16300), "S6003C17");
    check_base_class_offset(lv, (S6003C11*)(S6003C15*), ABISELECT(25200,16008), "S6003C17");
    check_base_class_offset(lv, (S6003C15*), 0, "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*), ABISELECT(66928,42468), "S6003C17");
    /*is_ambiguous_... S6003C6::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C7*)(S6003C6*), ABISELECT(66928,42468), "S6003C17");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C10*)(S6003C6*), ABISELECT(40640,25808), "S6003C17");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C10*)(S6003C6*), ABISELECT(40936,25992), "S6003C17");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C10*)(S6003C6*), ABISELECT(41400,26300), "S6003C17");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C10*)(S6003C6*), ABISELECT(40640,25808), "S6003C17");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(44768,28428), "S6003C17");
    check_base_class_offset(lv, (S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(44768,28428), "S6003C17");
    check_base_class_offset(lv, (S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(45232,28720), "S6003C17");
    check_base_class_offset(lv, (S6003C11*)(S6003C6*), ABISELECT(44768,28428), "S6003C17");
    check_base_class_offset(lv, (S6003C6*), ABISELECT(40640,25808), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C12*), ABISELECT(480,316), "S6003C17");
    check_base_class_offset(lv, (S6003C9*)(S6003C13*), ABISELECT(6880,4368), "S6003C17");
    check_base_class_offset(lv, (S6003C13*), ABISELECT(6880,4368), "S6003C17");
    check_field_offset(lv, s6003c17f0, ABISELECT(7512,4768), "S6003C17.s6003c17f0");
    check_field_offset(lv, s6003c17f1, ABISELECT(7520,4772), "S6003C17.s6003c17f1");
    check_field_offset(lv, s6003c17f2, ABISELECT(7536,4780), "S6003C17.s6003c17f2");
    check_field_offset(lv, s6003c17f3, ABISELECT(7552,4792), "S6003C17.s6003c17f3");
    check_field_offset(lv, s6003c17f4, ABISELECT(7560,4796), "S6003C17.s6003c17f4");
    check_field_offset(lv, s6003c17f5, ABISELECT(7568,4804), "S6003C17.s6003c17f5");
    check_field_offset(lv, s6003c17f6, ABISELECT(7584,4808), "S6003C17.s6003c17f6");
    check_field_offset(lv, s6003c17f7, ABISELECT(24272,15416), "S6003C17.s6003c17f7");
    check_field_offset(lv, s6003c17f8, ABISELECT(24280,15420), "S6003C17.s6003c17f8");
    test_class_info(&lv, &cd_S6003C17);
    dp->~S6003C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C17(Test_S6003C17, "S6003C17", ABISELECT(67392,42760));

#else // __cplusplus

extern void _ZN8S6003C17C1Ev();
extern void _ZN8S6003C17D2Ev();
Name_Map name_map_S6003C17[] = {
  NSPAIR(_ZN8S6003C17C1Ev),
  NSPAIR(_ZN8S6003C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C11;
extern VTBL_ENTRY _ZTI8S6003C11[];
extern  VTBL_ENTRY _ZTV8S6003C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C11[];
extern Class_Descriptor cd_S6003C15;
extern VTBL_ENTRY _ZTI8S6003C15[];
extern  VTBL_ENTRY _ZTV8S6003C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C15[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C11;
extern VTBL_ENTRY _ZTI8S6003C11[];
extern  VTBL_ENTRY _ZTV8S6003C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C11[];
extern Class_Descriptor cd_S6003C6;
extern VTBL_ENTRY _ZTI7S6003C6[];
extern  VTBL_ENTRY _ZTV7S6003C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C6[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C13;
extern VTBL_ENTRY _ZTI8S6003C13[];
extern  VTBL_ENTRY _ZTV8S6003C13[];
static Base_Class bases_S6003C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C4,    ABISELECT(24424,15516), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C9,    ABISELECT(24896,15824), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6003C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6003C9,    ABISELECT(36208,22984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(36504,23168), //bcp->offset
    76, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(36968,23476), //bcp->offset
    81, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6003C10,    ABISELECT(36208,22984), //bcp->offset
    63, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6003C5,    ABISELECT(40328,25604), //bcp->offset
    84, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6003C8,    ABISELECT(40472,25700), //bcp->offset
    88, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6003C5,    ABISELECT(25200,16008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6003C7,    ABISELECT(25200,16008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6003C12,    ABISELECT(25664,16300), //bcp->offset
    55, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6003C11,    ABISELECT(25200,16008), //bcp->offset
    41, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6003C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C5,    ABISELECT(66928,42468), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S6003C7,    ABISELECT(66928,42468), //bcp->offset
    142, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S6003C9,    ABISELECT(40640,25808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(40936,25992), //bcp->offset
    115, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(41400,26300), //bcp->offset
    120, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6003C10,    ABISELECT(40640,25808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(44768,28428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6003C7,    ABISELECT(44768,28428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S6003C12,    ABISELECT(45232,28720), //bcp->offset
    134, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S6003C11,    ABISELECT(44768,28428), //bcp->offset
    123, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6003C6,    ABISELECT(40640,25808), //bcp->offset
    91, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C12,    ABISELECT(480,316), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C9,    ABISELECT(6880,4368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S6003C13,    ABISELECT(6880,4368), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6003C17[];
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN8S6003C17D1Ev();
extern void _ZN8S6003C17D0Ev();
extern void ABISELECT(_ZThn480_N8S6003C17D1Ev,_ZThn316_N8S6003C17D1Ev)();
extern void ABISELECT(_ZThn480_N8S6003C17D0Ev,_ZThn316_N8S6003C17D0Ev)();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZThn6880_N8S6003C17D1Ev,_ZThn4368_N8S6003C17D1Ev)();
extern void ABISELECT(_ZThn6880_N8S6003C17D0Ev,_ZThn4368_N8S6003C17D0Ev)();
extern void _ZN8S6003C133v10Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZThn25200_N8S6003C17D1Ev,_ZThn16008_N8S6003C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev)();
extern void ABISELECT(_ZThn25200_N8S6003C17D0Ev,_ZThn16008_N8S6003C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S6003C17D1Ev,_ZTvn292_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C17D0Ev,_ZTvn292_n40_N8S6003C17D0Ev)();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C17D1Ev,_ZTv0_n16_N8S6003C17D1Ev)();
extern void ABISELECT(_ZThn36208_N8S6003C17D1Ev,_ZThn22984_N8S6003C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C17D0Ev,_ZTv0_n16_N8S6003C17D0Ev)();
extern void ABISELECT(_ZThn36208_N8S6003C17D0Ev,_ZThn22984_N8S6003C17D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZThn40640_N8S6003C17D1Ev,_ZThn25808_N8S6003C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev)();
extern void ABISELECT(_ZThn40640_N8S6003C17D0Ev,_ZThn25808_N8S6003C17D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C62v8Ev();
extern void _ZN7S6003C62v9Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTvn4128_n80_N8S6003C17D1Ev,_ZTvn2620_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZTvn4128_n80_N8S6003C17D0Ev,_ZTvn2620_n40_N8S6003C17D0Ev)();
extern void ABISELECT(_ZTvn4592_n80_N8S6003C17D1Ev,_ZTvn2912_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZTvn4592_n80_N8S6003C17D0Ev,_ZTvn2912_n40_N8S6003C17D0Ev)();
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY vtc_S6003C17[] = {
  ABISELECT(66928,42468),
  ABISELECT(40640,25808),
  ABISELECT(24424,15516),
  ABISELECT(40472,25700),
  ABISELECT(40328,25604),
  ABISELECT(36208,22984),
  ABISELECT(25200,16008),
  ABISELECT(24896,15824),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6003C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C17D0Ev,
  ABISELECT(39992,25384),
  ABISELECT(39848,25288),
  ABISELECT(35728,22668),
  ABISELECT(24416,15508),
  ABISELECT(-480,-316),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn480_N8S6003C17D1Ev,_ZThn316_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn480_N8S6003C17D0Ev,_ZThn316_N8S6003C17D0Ev),
  ABISELECT(-6880,-4368),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn6880_N8S6003C17D1Ev,_ZThn4368_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn6880_N8S6003C17D0Ev,_ZThn4368_N8S6003C17D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C133v10Ev,
  0,
  0,
  0,
  ABISELECT(-24424,-15516),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  0,
  ABISELECT(-24896,-15824),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  ABISELECT(-25200,-16008),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(-776,-492),
  ABISELECT(-25200,-16008),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-25664,-16300),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C17D1Ev,_ZTvn292_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C17D0Ev,_ZTvn292_n40_N8S6003C17D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-36208,-22984),
  0,
  ABISELECT(-36208,-22984),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C17D1Ev,_ZTv0_n16_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C17D0Ev,_ZTv0_n16_N8S6003C17D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-36504,-23168),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-36968,-23476),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-40328,-25604),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-144,-96),
  ABISELECT(-40472,-25700),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  ABISELECT(4128,2620),
  0,
  0,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-40640,-25808),
  0,
  ABISELECT(-4432,-2824),
  ABISELECT(-15744,-9984),
  ABISELECT(-168,-108),
  ABISELECT(-16216,-10292),
  ABISELECT(26288,16660),
  ABISELECT(-312,-204),
  ABISELECT(-40640,-25808),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v8Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v9Ev,
  ABISELECT(-40936,-25992),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-41400,-26300),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-8560,-5444),
  ABISELECT(-19872,-12604),
  ABISELECT(-4440,-2824),
  ABISELECT(-4296,-2728),
  ABISELECT(-20344,-12912),
  ABISELECT(-44768,-28428),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S6003C17D1Ev,_ZTvn2620_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S6003C17D0Ev,_ZTvn2620_n40_N8S6003C17D0Ev),
  ABISELECT(-4760,-3020),
  ABISELECT(-4904,-3116),
  ABISELECT(-9024,-5736),
  ABISELECT(-20336,-12896),
  ABISELECT(-45232,-28720),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S6003C17D1Ev,_ZTvn2912_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S6003C17D0Ev,_ZTvn2912_n40_N8S6003C17D0Ev),
  0,
  ABISELECT(-42032,-26644),
  ABISELECT(-26600,-16864),
  ABISELECT(-26456,-16768),
  ABISELECT(-42504,-26952),
  ABISELECT(-66928,-42468),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern VTBL_ENTRY _ZTV8S6003C17[];
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN8S6003C15D1Ev();
extern void _ZN8S6003C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C15__8S6003C17[] = {
  ABISELECT(24424,15516),
  ABISELECT(40472,25700),
  ABISELECT(40328,25604),
  ABISELECT(36208,22984),
  ABISELECT(25200,16008),
  ABISELECT(24896,15824),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C15__8S6003C17[] = {
  0,
  ABISELECT(-24896,-15824),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn25200_N8S6003C15D1Ev,_ZThn16008_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn25200_N8S6003C15D0Ev,_ZThn16008_N8S6003C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C15__8S6003C17[] = {
  ABISELECT(-25200,-16008),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(-776,-492),
  ABISELECT(-25200,-16008),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn36208_N8S6003C15D1Ev,_ZThn22984_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn36208_N8S6003C15D0Ev,_ZThn22984_N8S6003C15D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C15__8S6003C17[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-36208,-22984),
  0,
  ABISELECT(-36208,-22984),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__A1__8S6003C15__8S6003C17[] = {
  ABISELECT(-36504,-23168),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C15__8S6003C17[] = {
  ABISELECT(-36968,-23476),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C15__8S6003C17[] = {
  0,
  ABISELECT(-40328,-25604),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C15__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(-40472,-25700),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A2__8S6003C15__8S6003C17[] = {
  0,
  0,
  0,
  ABISELECT(-24424,-15516),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C15__8S6003C17[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-25664,-16300),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev),
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C12__A2__8S6003C17[] = {
  ABISELECT(39992,25384),
  ABISELECT(39848,25288),
  ABISELECT(35728,22668),
  ABISELECT(24416,15508),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C12__A2__8S6003C17[] = {
  0,
  ABISELECT(-24416,-15508),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn35728_N8S6003C12D1Ev,_ZThn22668_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn35728_N8S6003C12D0Ev,_ZThn22668_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C12__A2__8S6003C17[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-35728,-22668),
  0,
  ABISELECT(-35728,-22668),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C12__A2__8S6003C17[] = {
  ABISELECT(-36024,-22852),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C12__A2__8S6003C17[] = {
  ABISELECT(-36488,-23160),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C12__A2__8S6003C17[] = {
  0,
  ABISELECT(-39848,-25288),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C12__A2__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(-39992,-25384),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void _ZN8S6003C11D1Ev();
extern void _ZN8S6003C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C17[] = {
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(-776,-492),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D0Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C11__8S6003C17[] = {
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(-776,-492),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C11__8S6003C17[] = {
  0,
  0,
  0,
  ABISELECT(776,492),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C11__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C11__8S6003C17[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C11__8S6003C17[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C17[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C11__8S6003C17[] = {
  0,
  ABISELECT(768,476),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C11__8S6003C17[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__8S6003C17[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__8S6003C17[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C11__8S6003C17[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C11__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C11__8S6003C17[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C11__8S6003C17[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C11__8S6003C17[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C11__8S6003C17[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C11__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A1__8S6003C11__8S6003C17[] = {
  0,
  0,
  0,
  ABISELECT(776,492),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__A1__8S6003C11__8S6003C17[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C11__8S6003C17[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C17[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__8S6003C17[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C6D1Ev();
extern void _ZN7S6003C6D0Ev();
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C62v8Ev();
extern void _ZN7S6003C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C6__8S6003C17[] = {
  ABISELECT(-4432,-2824),
  ABISELECT(-15744,-9984),
  ABISELECT(-168,-108),
  ABISELECT(-16216,-10292),
  ABISELECT(26288,16660),
  ABISELECT(-312,-204),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&_ZN7S6003C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6003C6D0Ev,
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v8Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v9Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void _ZN8S6003C11D1Ev();
extern void _ZN8S6003C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(-8560,-5444),
  ABISELECT(-19872,-12604),
  ABISELECT(-4440,-2824),
  ABISELECT(-4296,-2728),
  ABISELECT(-20344,-12912),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D0Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C117S6003C6__A2__8S6003C17[] = {
  ABISELECT(-19872,-12604),
  ABISELECT(-4440,-2824),
  ABISELECT(-4296,-2728),
  ABISELECT(-20344,-12912),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C117S6003C6__A2__8S6003C17[] = {
  0,
  0,
  0,
  ABISELECT(20344,12912),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C117S6003C6__A2__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(4296,2728),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C117S6003C6__A2__8S6003C17[] = {
  0,
  ABISELECT(4440,2824),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C117S6003C6__A2__8S6003C17[] = {
  0,
  ABISELECT(19872,12604),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(-4760,-3020),
  ABISELECT(-4904,-3116),
  ABISELECT(-9024,-5736),
  ABISELECT(-20336,-12896),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C117S6003C6__A1__8S6003C17[] = {
  0,
  ABISELECT(20336,12896),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(9024,5736),
  0,
  ABISELECT(9024,5736),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(8728,5552),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(8264,5244),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C117S6003C6__A1__8S6003C17[] = {
  0,
  ABISELECT(4904,3116),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(4760,3020),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev)();
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(8560,5444),
  0,
  ABISELECT(8560,5444),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(8264,5260),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(7800,4952),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C117S6003C6__A1__8S6003C17[] = {
  0,
  ABISELECT(4440,2824),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(4296,2728),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A1__8S6003C117S6003C6__A1__8S6003C17[] = {
  0,
  0,
  0,
  ABISELECT(20344,12912),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__A1__8S6003C117S6003C6__A1__8S6003C17[] = {
  0,
  ABISELECT(19872,12604),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(-4760,-3020),
  ABISELECT(-4904,-3116),
  ABISELECT(-9024,-5736),
  ABISELECT(-20336,-12896),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C6__8S6003C17[] = {
  0,
  ABISELECT(312,204),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__7S6003C6__8S6003C17[] = {
  0,
  ABISELECT(-42032,-26644),
  ABISELECT(-26600,-16864),
  ABISELECT(-26456,-16768),
  ABISELECT(-42504,-26952),
  ABISELECT(-26288,-16660),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C6__8S6003C17[] = {
  0,
  0,
  0,
  ABISELECT(16216,10292),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C6__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(168,108),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C6__8S6003C17[] = {
  0,
  ABISELECT(15744,9984),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZThn4128_N7S6003C6D1Ev,_ZThn2620_N7S6003C6D1Ev)();
extern void ABISELECT(_ZThn4128_N7S6003C6D0Ev,_ZThn2620_N7S6003C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C11__7S6003C6__8S6003C17[] = {
  ABISELECT(-8560,-5444),
  ABISELECT(-19872,-12604),
  ABISELECT(-4440,-2824),
  ABISELECT(-4296,-2728),
  ABISELECT(-20344,-12912),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N7S6003C6D1Ev,_ZThn2620_N7S6003C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N7S6003C6D0Ev,_ZThn2620_N7S6003C6D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N7S6003C6D1Ev,_ZTv0_n16_N7S6003C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S6003C6D0Ev,_ZTv0_n16_N7S6003C6D0Ev)();
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__A1__7S6003C6__8S6003C17[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4432,2824),
  0,
  ABISELECT(4432,2824),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6003C6D1Ev,_ZTv0_n16_N7S6003C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6003C6D0Ev,_ZTv0_n16_N7S6003C6D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__A2__7S6003C6__8S6003C17[] = {
  ABISELECT(4136,2640),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__A3__7S6003C6__8S6003C17[] = {
  ABISELECT(3672,2332),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void ABISELECT(_ZThn4592_N7S6003C6D1Ev,_ZThn2912_N7S6003C6D1Ev)();
extern void ABISELECT(_ZThn4592_N7S6003C6D0Ev,_ZThn2912_N7S6003C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__7S6003C6__8S6003C17[] = {
  ABISELECT(-4760,-3020),
  ABISELECT(-4904,-3116),
  ABISELECT(-9024,-5736),
  ABISELECT(-20336,-12896),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N7S6003C6D1Ev,_ZThn2912_N7S6003C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N7S6003C6D0Ev,_ZThn2912_N7S6003C6D0Ev),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__A1__8S6003C17[] = {
  ABISELECT(-42032,-26644),
  ABISELECT(-26600,-16864),
  ABISELECT(-26456,-16768),
  ABISELECT(-42504,-26952),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C7__A1__8S6003C17[] = {
  0,
  0,
  0,
  ABISELECT(42504,26952),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C7__A1__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(26456,16768),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C7__A1__8S6003C17[] = {
  0,
  ABISELECT(26600,16864),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C7__A1__8S6003C17[] = {
  0,
  ABISELECT(42032,26644),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
static  VTT_ENTRY vtt_S6003C17[] = {
  {&(_ZTV8S6003C17[10]),  10,150},
  {&(_tg__ZTV8S6003C15__8S6003C17[8]),  8,13},
  {&(_tg__ZTV7S6003C9__8S6003C15__8S6003C17[3]),  3,4},
  {&(_tg__ZTV8S6003C11__8S6003C15__8S6003C17[10]),  10,14},
  {&(_tg__ZTV8S6003C10__8S6003C15__8S6003C17[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__A1__8S6003C15__8S6003C17[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C15__8S6003C17[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C15__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C15__8S6003C17[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A2__8S6003C15__8S6003C17[5]),  5,8},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C15__8S6003C17[6]),  6,8},
  {&(_tg__ZTV8S6003C12__A2__8S6003C17[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C12__A2__8S6003C17[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C12__A2__8S6003C17[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C12__A2__8S6003C17[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C12__A2__8S6003C17[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C12__A2__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C12__A2__8S6003C17[3]),  3,3},
  {&(_ZTV8S6003C17[34]),  34,150},
  {&(_ZTV8S6003C17[40]),  40,150},
  {&(_ZTV8S6003C17[51]),  51,150},
  {&(_ZTV8S6003C17[72]),  72,150},
  {&(_ZTV8S6003C17[78]),  78,150},
  {&(_ZTV8S6003C17[83]),  83,150},
  {&(_ZTV8S6003C17[87]),  87,150},
  {&(_ZTV8S6003C17[91]),  91,150},
  {&(_ZTV8S6003C17[61]),  61,150},
  {&(_ZTV8S6003C17[109]),  109,150},
  {&(_ZTV8S6003C17[149]),  149,150},
  {&(_ZTV8S6003C17[117]),  117,150},
  {&(_ZTV8S6003C17[122]),  122,150},
  {&(_ZTV8S6003C17[130]),  130,150},
  {&(_ZTV8S6003C17[140]),  140,150},
  {&(_ZTV8S6003C17[21]),  21,150},
  {&(_tg__ZTV8S6003C11__8S6003C17[7]),  7,11},
  {&(_tg__ZTV7S6003C78S6003C11__8S6003C17[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C11__8S6003C17[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C11__8S6003C17[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C11__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C11__8S6003C17[3]),  3,4},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C17[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C11__8S6003C17[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C11__8S6003C17[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__8S6003C17[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__8S6003C17[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C11__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C11__8S6003C17[3]),  3,3},
  {&(_tg__ZTV8S6003C10__8S6003C11__8S6003C17[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C11__8S6003C17[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C11__8S6003C17[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C11__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C11__8S6003C17[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A1__8S6003C11__8S6003C17[5]),  5,8},
  {&(_tg__ZTV7S6003C9__A1__8S6003C11__8S6003C17[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C11__8S6003C17[6]),  6,8},
  {&(_tg__ZTV7S6003C8__8S6003C17[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C6__8S6003C17[8]),  8,14},
  {&(_tg__ZTV8S6003C117S6003C6__A1__8S6003C17[7]),  7,11},
  {&(_tg__ZTV7S6003C78S6003C117S6003C6__A2__8S6003C17[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C117S6003C6__A2__8S6003C17[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C117S6003C6__A2__8S6003C17[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C117S6003C6__A2__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C117S6003C6__A2__8S6003C17[3]),  3,4},
  {&(_tg__ZTV8S6003C128S6003C117S6003C6__A1__8S6003C17[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C117S6003C6__A1__8S6003C17[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C117S6003C6__A1__8S6003C17[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C117S6003C6__A1__8S6003C17[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C117S6003C6__A1__8S6003C17[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C117S6003C6__A1__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C117S6003C6__A1__8S6003C17[3]),  3,3},
  {&(_tg__ZTV8S6003C10__8S6003C117S6003C6__A1__8S6003C17[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C117S6003C6__A1__8S6003C17[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C117S6003C6__A1__8S6003C17[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C117S6003C6__A1__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C117S6003C6__A1__8S6003C17[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A1__8S6003C117S6003C6__A1__8S6003C17[5]),  5,8},
  {&(_tg__ZTV7S6003C9__A1__8S6003C117S6003C6__A1__8S6003C17[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C117S6003C6__A1__8S6003C17[6]),  6,8},
  {&(_tg__ZTV7S6003C5__7S6003C6__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C7__7S6003C6__8S6003C17[7]),  7,8},
  {&(_tg__ZTV7S6003C4__7S6003C6__8S6003C17[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C6__8S6003C17[3]),  3,3},
  {&(_tg__ZTV7S6003C9__7S6003C6__8S6003C17[3]),  3,4},
  {&(_tg__ZTV8S6003C11__7S6003C6__8S6003C17[7]),  7,11},
  {&(_tg__ZTV8S6003C10__A1__7S6003C6__8S6003C17[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__A2__7S6003C6__8S6003C17[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__A3__7S6003C6__8S6003C17[2]),  2,3},
  {&(_tg__ZTV8S6003C128S6003C11__7S6003C6__8S6003C17[6]),  6,8},
  {&(_tg__ZTV7S6003C7__A1__8S6003C17[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C7__A1__8S6003C17[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C7__A1__8S6003C17[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C7__A1__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C7__A1__8S6003C17[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6003C17[];
extern  VTBL_ENTRY _ZTV8S6003C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C17[];
static VTBL_ENTRY alt_thunk_names16[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35728_N8S6003C12D0Ev,_ZThn22668_N8S6003C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35728_N8S6003C12D1Ev,_ZThn22668_N8S6003C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6003C15D0Ev,_ZThn22984_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6003C15D1Ev,_ZThn22984_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6003C15D0Ev,_ZThn16008_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6003C15D1Ev,_ZThn16008_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C17D0Ev,_ZTv0_n16_N8S6003C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6003C17D0Ev,_ZThn22984_N8S6003C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C17D1Ev,_ZTv0_n16_N8S6003C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6003C17D1Ev,_ZThn22984_N8S6003C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40640_N8S6003C17D0Ev,_ZThn25808_N8S6003C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6003C17D0Ev,_ZThn16008_N8S6003C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40640_N8S6003C17D1Ev,_ZThn25808_N8S6003C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6003C17D1Ev,_ZThn16008_N8S6003C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C17 = {  "S6003C17", // class name
  bases_S6003C17, 28,
  &(vtc_S6003C17[0]), // expected_vtbl_contents
  &(vtt_S6003C17[0]), // expected_vtt_contents
  ABISELECT(67392,42760), // object size
  NSPAIRA(_ZTI8S6003C17),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6003C17),150, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6003C17),94, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names16,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C16  : S6003C5 , virtual S6003C9 , virtual S6003C15 , S6003C7 , S6003C13 {
  int s6003c16f0;
  ::S6003C7 s6003c16f1;
  int s6003c16f2;
  short s6003c16f3;
  __tsi64 s6003c16f4:8;
  int s6003c16f5;
  virtual  ~S6003C16(); // _ZN8S6003C16D2Ev
  virtual void  v15(); // _ZN8S6003C163v15Ev
  S6003C16(); // tgen
};
//SIG(-1 S6003C16) C1{ BC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ v3 FL FD Fp Fc FC2 Fp[2] Fl[8] Fs Fp FL:64} VBC4{ VBC3 BC5{ v4 v5 v6 Fi[2] Fl[2] FC2[3]} VBC6{ VBC7{ BC3 BC5 BC2 vd v7 Fl FL Fp[8] FC8{ BC2 VBC5 VBC9{ VBC2 Fp FC2 FL:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC8 Fi} VBC2 VBC9 BC8 BC10{ VBC3 VBC7 VBC2 VBC9 FL:44 Fp Fi FC8 Fl[2] Fi[3] FC7 Fc:7 FC11{ BC3 vd v9 FC9 Fi Fp Fi}} v8 FC7 FL Fc:7} Fc:8 Fi} BC8 BC11 vd v1 Fi FC8 Fi Fs FL:8 Fi}


 S6003C16 ::~S6003C16(){ note_dtor("S6003C16", this);}
void  S6003C16 ::v15(){vfunc_called(this, "_ZN8S6003C163v15Ev");}
S6003C16 ::S6003C16(){ note_ctor("S6003C16", this);} // tgen

static void Test_S6003C16()
{
  extern Class_Descriptor cd_S6003C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1219,3101)];
    init_test(&cd_S6003C16, buf);
    S6003C16 *dp, &lv = *(dp=new (buf) S6003C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(19488,12400), "sizeof(S6003C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C16)");
    /*is_ambiguous_... S6003C16::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*), 0, "S6003C16");
    /*is_ambiguous_... S6003C16::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*), ABISELECT(2816,1792), "S6003C16");
    /*is_ambiguous_... S6003C15::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C15*), ABISELECT(2816,1792), "S6003C16");
    check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C11*), ABISELECT(2816,1792), "S6003C16");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C11*), ABISELECT(2816,1792), "S6003C16");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C7*), ABISELECT(2816,1792), "S6003C16");
    /*is_ambiguous_... S6003C15::S6003C4 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C15*), ABISELECT(3112,1976), "S6003C16");
    check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(14592,9268), "S6003C16");
    check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(14888,9452), "S6003C16");
    check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(15352,9760), "S6003C16");
    check_base_class_offset(lv, (S6003C10*)(S6003C11*), ABISELECT(14592,9268), "S6003C16");
    check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C11*), ABISELECT(14592,9268), "S6003C16");
    /*is_ambiguous_... S6003C11::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C11*), ABISELECT(18712,11888), "S6003C16");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(18712,11888), "S6003C16");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C11*), ABISELECT(18712,11888), "S6003C16");
    check_base_class_offset(lv, (S6003C8*)(S6003C11*), ABISELECT(18856,11984), "S6003C16");
    check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C11*), ABISELECT(18856,11984), "S6003C16");
    check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C11*), ABISELECT(18856,11984), "S6003C16");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C7*), ABISELECT(18856,11984), "S6003C16");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C11*), ABISELECT(3584,2292), "S6003C16");
    check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C11*), ABISELECT(19024,12092), "S6003C16");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C7*), ABISELECT(19024,12092), "S6003C16");
    check_base_class_offset(lv, (S6003C7*)(S6003C11*), ABISELECT(3584,2292), "S6003C16");
    check_base_class_offset(lv, (S6003C12*)(S6003C11*), ABISELECT(4048,2584), "S6003C16");
    check_base_class_offset(lv, (S6003C11*)(S6003C15*), ABISELECT(3584,2292), "S6003C16");
    check_base_class_offset(lv, (S6003C15*), ABISELECT(3112,1976), "S6003C16");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*), ABISELECT(144,96), "S6003C16");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C7*), ABISELECT(144,96), "S6003C16");
    check_base_class_offset(lv, (S6003C9*)(S6003C13*), ABISELECT(608,388), "S6003C16");
    check_base_class_offset(lv, (S6003C13*), ABISELECT(608,388), "S6003C16");
    check_field_offset(lv, s6003c16f0, ABISELECT(1236,788), "S6003C16.s6003c16f0");
    check_field_offset(lv, s6003c16f1, ABISELECT(1248,792), "S6003C16.s6003c16f1");
    check_field_offset(lv, s6003c16f2, ABISELECT(2800,1780), "S6003C16.s6003c16f2");
    check_field_offset(lv, s6003c16f3, ABISELECT(2804,1784), "S6003C16.s6003c16f3");
    set_bf_and_test(lv, s6003c16f4, ABISELECT(2806,1786), 0, 8, 1, "S6003C16");
    set_bf_and_test(lv, s6003c16f4, ABISELECT(2806,1786), 0, 8, hide_sll(1LL<<7), "S6003C16");
    check_field_offset(lv, s6003c16f5, ABISELECT(2808,1788), "S6003C16.s6003c16f5");
    test_class_info(&lv, &cd_S6003C16);
    dp->~S6003C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C16(Test_S6003C16, "S6003C16", ABISELECT(19488,12400));

#else // __cplusplus

extern void _ZN8S6003C16C1Ev();
extern void _ZN8S6003C16D2Ev();
Name_Map name_map_S6003C16[] = {
  NSPAIR(_ZN8S6003C16C1Ev),
  NSPAIR(_ZN8S6003C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C11;
extern VTBL_ENTRY _ZTI8S6003C11[];
extern  VTBL_ENTRY _ZTV8S6003C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C11[];
extern Class_Descriptor cd_S6003C15;
extern VTBL_ENTRY _ZTI8S6003C15[];
extern  VTBL_ENTRY _ZTV8S6003C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C15[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C13;
extern VTBL_ENTRY _ZTI8S6003C13[];
extern  VTBL_ENTRY _ZTV8S6003C13[];
static Base_Class bases_S6003C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C9,    ABISELECT(2816,1792), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C4,    ABISELECT(3112,1976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6003C9,    ABISELECT(14592,9268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(14888,9452), //bcp->offset
    82, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(15352,9760), //bcp->offset
    87, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6003C10,    ABISELECT(14592,9268), //bcp->offset
    69, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S6003C5,    ABISELECT(18712,11888), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6003C8,    ABISELECT(18856,11984), //bcp->offset
    94, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6003C5,    ABISELECT(3584,2292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(19024,12092), //bcp->offset
    97, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6003C7,    ABISELECT(3584,2292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6003C12,    ABISELECT(4048,2584), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6003C11,    ABISELECT(3584,2292), //bcp->offset
    47, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S6003C15,    ABISELECT(3112,1976), //bcp->offset
    30, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C5,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6003C7,    ABISELECT(144,96), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C9,    ABISELECT(608,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6003C13,    ABISELECT(608,388), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6003C16[];
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C16D1Ev();
extern void _ZN8S6003C16D0Ev();
extern void _ZN8S6003C163v15Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZThn608_N8S6003C16D1Ev,_ZThn388_N8S6003C16D1Ev)();
extern void ABISELECT(_ZThn608_N8S6003C16D0Ev,_ZThn388_N8S6003C16D0Ev)();
extern void _ZN8S6003C133v10Ev();
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S6003C16D1Ev,_ZTv0_n48_N8S6003C16D1Ev)();
extern void ABISELECT(_ZThn3112_N8S6003C16D1Ev,_ZThn1976_N8S6003C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S6003C16D0Ev,_ZTv0_n48_N8S6003C16D0Ev)();
extern void ABISELECT(_ZThn3112_N8S6003C16D0Ev,_ZThn1976_N8S6003C16D0Ev)() __attribute__((weak));
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C16D1Ev,_ZTv0_n40_N8S6003C16D1Ev)();
extern void ABISELECT(_ZThn3584_N8S6003C16D1Ev,_ZThn2292_N8S6003C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C16D0Ev,_ZTv0_n40_N8S6003C16D0Ev)();
extern void ABISELECT(_ZThn3584_N8S6003C16D0Ev,_ZThn2292_N8S6003C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S6003C16D1Ev,_ZTvn292_n40_N8S6003C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C16D0Ev,_ZTvn292_n40_N8S6003C16D0Ev)();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C16D1Ev,_ZTv0_n16_N8S6003C16D1Ev)();
extern void ABISELECT(_ZThn14592_N8S6003C16D1Ev,_ZThn9268_N8S6003C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C16D0Ev,_ZTv0_n16_N8S6003C16D0Ev)();
extern void ABISELECT(_ZThn14592_N8S6003C16D0Ev,_ZThn9268_N8S6003C16D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY vtc_S6003C16[] = {
  ABISELECT(19024,12092),
  ABISELECT(18856,11984),
  ABISELECT(18712,11888),
  ABISELECT(14592,9268),
  ABISELECT(3584,2292),
  ABISELECT(3112,1976),
  ABISELECT(2816,1792),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C16D0Ev,
  (VTBL_ENTRY)&_ZN8S6003C163v15Ev,
  ABISELECT(2672,1696),
  ABISELECT(18568,11792),
  ABISELECT(18712,11888),
  ABISELECT(18880,11996),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N8S6003C16D1Ev,_ZThn388_N8S6003C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N8S6003C16D0Ev,_ZThn388_N8S6003C16D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C133v10Ev,
  0,
  ABISELECT(-2816,-1792),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  ABISELECT(-3112,-1976),
  0,
  0,
  0,
  ABISELECT(15912,10116),
  ABISELECT(15744,10008),
  ABISELECT(15600,9912),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  ABISELECT(-3112,-1976),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S6003C16D1Ev,_ZTv0_n48_N8S6003C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S6003C16D0Ev,_ZTv0_n48_N8S6003C16D0Ev),
  ABISELECT(-3584,-2292),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-3584,-2292),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C16D1Ev,_ZTv0_n40_N8S6003C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C16D0Ev,_ZTv0_n40_N8S6003C16D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-4048,-2584),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C16D1Ev,_ZTvn292_n40_N8S6003C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C16D0Ev,_ZTvn292_n40_N8S6003C16D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-14592,-9268),
  0,
  ABISELECT(-14592,-9268),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C16D1Ev,_ZTv0_n16_N8S6003C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C16D0Ev,_ZTv0_n16_N8S6003C16D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-14888,-9452),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-15352,-9760),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-18712,-11888),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-144,-96),
  ABISELECT(-18856,-11984),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  0,
  0,
  0,
  ABISELECT(-19024,-12092),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S6003C16[];
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__A1__8S6003C16[] = {
  ABISELECT(2672,1696),
  ABISELECT(18568,11792),
  ABISELECT(18712,11888),
  ABISELECT(18880,11996),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C7__A1__8S6003C16[] = {
  0,
  0,
  0,
  ABISELECT(-18880,-11996),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C7__A1__8S6003C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-18712,-11888),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C7__A1__8S6003C16[] = {
  0,
  ABISELECT(-18568,-11792),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C7__A1__8S6003C16[] = {
  0,
  ABISELECT(-2672,-1696),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN8S6003C15D1Ev();
extern void _ZN8S6003C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C15__8S6003C16[] = {
  ABISELECT(15912,10116),
  ABISELECT(15744,10008),
  ABISELECT(15600,9912),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C15__8S6003C16[] = {
  0,
  ABISELECT(296,184),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn472_N8S6003C15D1Ev,_ZThn316_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn472_N8S6003C15D0Ev,_ZThn316_N8S6003C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C15__8S6003C16[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn11480_N8S6003C15D1Ev,_ZThn7292_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn11480_N8S6003C15D0Ev,_ZThn7292_N8S6003C15D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C15__8S6003C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11480,-7292),
  0,
  ABISELECT(-11480,-7292),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__A1__8S6003C15__8S6003C16[] = {
  ABISELECT(-11776,-7476),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C15__8S6003C16[] = {
  ABISELECT(-12240,-7784),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C15__8S6003C16[] = {
  0,
  ABISELECT(-15600,-9912),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C15__8S6003C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15744,-10008),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A2__8S6003C15__8S6003C16[] = {
  0,
  0,
  0,
  ABISELECT(-15912,-10116),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C15__8S6003C16[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev),
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void _ZN8S6003C11D1Ev();
extern void _ZN8S6003C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C16[] = {
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D0Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C11__8S6003C16[] = {
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C11__8S6003C16[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C11__8S6003C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C11__8S6003C16[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C11__8S6003C16[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C16[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C11__8S6003C16[] = {
  0,
  ABISELECT(1232,792),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C11__8S6003C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__8S6003C16[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__8S6003C16[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C11__8S6003C16[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C11__8S6003C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C11__8S6003C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C11__8S6003C16[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C11__8S6003C16[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C11__8S6003C16[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C11__8S6003C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A1__8S6003C11__8S6003C16[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__A1__8S6003C11__8S6003C16[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C11__8S6003C16[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C16[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__8S6003C16[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTT_ENTRY vtt_S6003C16[] = {
  {&(_ZTV8S6003C16[9]),  9,105},
  {&(_tg__ZTV7S6003C7__A1__8S6003C16[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C7__A1__8S6003C16[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C7__A1__8S6003C16[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C7__A1__8S6003C16[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C7__A1__8S6003C16[3]),  3,4},
  {&(_ZTV8S6003C16[29]),  29,105},
  {&(_ZTV8S6003C16[42]),  42,105},
  {&(_ZTV8S6003C16[57]),  57,105},
  {&(_ZTV8S6003C16[78]),  78,105},
  {&(_ZTV8S6003C16[84]),  84,105},
  {&(_ZTV8S6003C16[89]),  89,105},
  {&(_ZTV8S6003C16[93]),  93,105},
  {&(_ZTV8S6003C16[97]),  97,105},
  {&(_ZTV8S6003C16[102]),  102,105},
  {&(_ZTV8S6003C16[67]),  67,105},
  {&(_ZTV8S6003C16[19]),  19,105},
  {&(_tg__ZTV8S6003C15__8S6003C16[8]),  8,13},
  {&(_tg__ZTV7S6003C9__8S6003C15__8S6003C16[3]),  3,4},
  {&(_tg__ZTV8S6003C11__8S6003C15__8S6003C16[10]),  10,14},
  {&(_tg__ZTV8S6003C10__8S6003C15__8S6003C16[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__A1__8S6003C15__8S6003C16[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C15__8S6003C16[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C15__8S6003C16[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C15__8S6003C16[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A2__8S6003C15__8S6003C16[5]),  5,8},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C15__8S6003C16[6]),  6,8},
  {&(_tg__ZTV8S6003C11__8S6003C16[7]),  7,11},
  {&(_tg__ZTV7S6003C78S6003C11__8S6003C16[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C11__8S6003C16[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C11__8S6003C16[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C11__8S6003C16[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C11__8S6003C16[3]),  3,4},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C16[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C11__8S6003C16[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C11__8S6003C16[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__8S6003C16[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__8S6003C16[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C11__8S6003C16[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C11__8S6003C16[3]),  3,3},
  {&(_tg__ZTV8S6003C10__8S6003C11__8S6003C16[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C11__8S6003C16[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C11__8S6003C16[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C11__8S6003C16[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C11__8S6003C16[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A1__8S6003C11__8S6003C16[5]),  5,8},
  {&(_tg__ZTV7S6003C9__A1__8S6003C11__8S6003C16[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C11__8S6003C16[6]),  6,8},
  {&(_tg__ZTV7S6003C8__8S6003C16[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__8S6003C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6003C16[];
extern  VTBL_ENTRY _ZTV8S6003C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C16[];
static VTBL_ENTRY alt_thunk_names17[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N8S6003C15D0Ev,_ZThn7292_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N8S6003C15D1Ev,_ZThn7292_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S6003C15D0Ev,_ZThn316_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S6003C15D1Ev,_ZThn316_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C16D0Ev,_ZTv0_n16_N8S6003C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N8S6003C16D0Ev,_ZThn9268_N8S6003C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C16D1Ev,_ZTv0_n16_N8S6003C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N8S6003C16D1Ev,_ZThn9268_N8S6003C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C16D0Ev,_ZTv0_n40_N8S6003C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N8S6003C16D0Ev,_ZThn2292_N8S6003C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C16D1Ev,_ZTv0_n40_N8S6003C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N8S6003C16D1Ev,_ZThn2292_N8S6003C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S6003C16D0Ev,_ZTv0_n48_N8S6003C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N8S6003C16D0Ev,_ZThn1976_N8S6003C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S6003C16D1Ev,_ZTv0_n48_N8S6003C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N8S6003C16D1Ev,_ZThn1976_N8S6003C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C16 = {  "S6003C16", // class name
  bases_S6003C16, 19,
  &(vtc_S6003C16[0]), // expected_vtbl_contents
  &(vtt_S6003C16[0]), // expected_vtt_contents
  ABISELECT(19488,12400), // object size
  NSPAIRA(_ZTI8S6003C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6003C16),105, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6003C16),50, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names17,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C21  : S6003C7 , virtual S6003C15 , S6003C16 {
  ::S6003C15 s6003c21f0;
  int s6003c21f1;
  int s6003c21f2;
  char s6003c21f3;
  int s6003c21f4;
  __tsi64 s6003c21f5;
  int s6003c21f6;
  int s6003c21f7;
  void *s6003c21f8;
  void *s6003c21f9;
  int s6003c21f10;
  int s6003c21f11;
  virtual void  v16(); // _ZN8S6003C213v16Ev
  virtual void  v17(); // _ZN8S6003C213v17Ev
  ~S6003C21(); // tgen
  S6003C21(); // tgen
};
//SIG(-1 S6003C21) C1{ BC2{ BC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC4{ v4 v5 v6 Fi[2] Fl[2] FC3[3]} VBC5{ VBC3 Fp FC3 FL:3} VBC6{ v7 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} FC6 Fs Fi[2]} VBC7{ VBC6 BC4 VBC8{ VBC9{ BC6 BC4 BC3 vd v8 Fl FL Fp[8] FC2 Fp Fi FC2 Fi} VBC3 VBC5 BC2 BC10{ VBC6 VBC9 VBC3 VBC5 FL:44 Fp Fi FC2 Fl[2] Fi[3] FC9 Fc:7 FC11{ BC6 vd v10 FC5 Fi Fp Fi}} v9 FC9 FL Fc:7} Fc:8 Fi} BC12{ BC3 VBC6 VBC7 BC2 BC11 vd v11 Fi FC2 Fi Fs FL:8 Fi} v1 v2 FC7 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]}


void  S6003C21 ::v16(){vfunc_called(this, "_ZN8S6003C213v16Ev");}
void  S6003C21 ::v17(){vfunc_called(this, "_ZN8S6003C213v17Ev");}
S6003C21 ::~S6003C21(){ note_dtor("S6003C21", this);} // tgen
S6003C21 ::S6003C21(){ note_ctor("S6003C21", this);} // tgen

static void Test_S6003C21()
{
  extern Class_Descriptor cd_S6003C21;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2295,5838)];
    init_test(&cd_S6003C21, buf);
    S6003C21 *dp, &lv = *(dp=new (buf) S6003C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(36704,23348), "sizeof(S6003C21)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C21)");
    /*is_ambiguous_... S6003C21::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*), 0, "S6003C21");
    /*is_ambiguous_... S6003C21::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C7*), ABISELECT(20024,12740), "S6003C21");
    check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C11*), ABISELECT(20024,12740), "S6003C21");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C16*), ABISELECT(20024,12740), "S6003C21");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(20656,13156), "S6003C21");
    /*is_ambiguous_... S6003C11::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C11*), ABISELECT(20656,13156), "S6003C21");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C11*), ABISELECT(20656,13156), "S6003C21");
    /*is_ambiguous_... S6003C21::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C7*), ABISELECT(20488,13048), "S6003C21");
    check_base_class_offset(lv, (S6003C8*)(S6003C11*), ABISELECT(20488,13048), "S6003C21");
    check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C11*), ABISELECT(20488,13048), "S6003C21");
    check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C11*), ABISELECT(20488,13048), "S6003C21");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C16*), ABISELECT(20488,13048), "S6003C21");
    /*is_ambiguous_... S6003C21::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C7*), ABISELECT(20800,13252), "S6003C21");
    /*is_ambiguous_... S6003C15::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C15*), ABISELECT(20800,13252), "S6003C21");
    check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C11*), ABISELECT(20800,13252), "S6003C21");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C11*), ABISELECT(20800,13252), "S6003C21");
    /*is_ambiguous_... S6003C16::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C16*), ABISELECT(20800,13252), "S6003C21");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C16*), ABISELECT(20800,13252), "S6003C21");
    /*is_ambiguous_... S6003C21::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C7*), 0, "S6003C21");
    /*is_ambiguous_... S6003C15::S6003C4 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C15*), ABISELECT(21096,13436), "S6003C21");
    check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(32576,20728), "S6003C21");
    check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(32872,20912), "S6003C21");
    check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(33336,21220), "S6003C21");
    check_base_class_offset(lv, (S6003C10*)(S6003C11*), ABISELECT(32576,20728), "S6003C21");
    check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C11*), ABISELECT(32576,20728), "S6003C21");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C11*), ABISELECT(21568,13752), "S6003C21");
    check_base_class_offset(lv, (S6003C7*)(S6003C11*), ABISELECT(21568,13752), "S6003C21");
    check_base_class_offset(lv, (S6003C12*)(S6003C11*), ABISELECT(22032,14044), "S6003C21");
    check_base_class_offset(lv, (S6003C11*)(S6003C15*), ABISELECT(21568,13752), "S6003C21");
    check_base_class_offset(lv, (S6003C15*), ABISELECT(21096,13436), "S6003C21");
    check_base_class_offset(lv, (S6003C15*)(S6003C16*), ABISELECT(21096,13436), "S6003C21");
    /*is_ambiguous_... S6003C16::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C16*), ABISELECT(464,292), "S6003C21");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C16*), ABISELECT(608,388), "S6003C21");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C7*)(S6003C16*), ABISELECT(608,388), "S6003C21");
    check_base_class_offset(lv, (S6003C9*)(S6003C13*)(S6003C16*), ABISELECT(1072,680), "S6003C21");
    check_base_class_offset(lv, (S6003C13*)(S6003C16*), ABISELECT(1072,680), "S6003C21");
    check_base_class_offset(lv, (S6003C16*), ABISELECT(464,292), "S6003C21");
    check_field_offset(lv, s6003c21f0, ABISELECT(3280,2084), "S6003C21.s6003c21f0");
    check_field_offset(lv, s6003c21f1, ABISELECT(19968,12692), "S6003C21.s6003c21f1");
    check_field_offset(lv, s6003c21f2, ABISELECT(19972,12696), "S6003C21.s6003c21f2");
    check_field_offset(lv, s6003c21f3, ABISELECT(19976,12700), "S6003C21.s6003c21f3");
    check_field_offset(lv, s6003c21f4, ABISELECT(19980,12704), "S6003C21.s6003c21f4");
    check_field_offset(lv, s6003c21f5, ABISELECT(19984,12708), "S6003C21.s6003c21f5");
    check_field_offset(lv, s6003c21f6, ABISELECT(19992,12716), "S6003C21.s6003c21f6");
    check_field_offset(lv, s6003c21f7, ABISELECT(19996,12720), "S6003C21.s6003c21f7");
    check_field_offset(lv, s6003c21f8, ABISELECT(20000,12724), "S6003C21.s6003c21f8");
    check_field_offset(lv, s6003c21f9, ABISELECT(20008,12728), "S6003C21.s6003c21f9");
    check_field_offset(lv, s6003c21f10, ABISELECT(20016,12732), "S6003C21.s6003c21f10");
    check_field_offset(lv, s6003c21f11, ABISELECT(20020,12736), "S6003C21.s6003c21f11");
    test_class_info(&lv, &cd_S6003C21);
    dp->~S6003C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C21(Test_S6003C21, "S6003C21", ABISELECT(36704,23348));

#else // __cplusplus

extern void _ZN8S6003C21C1Ev();
extern void _ZN8S6003C21D1Ev();
Name_Map name_map_S6003C21[] = {
  NSPAIR(_ZN8S6003C21C1Ev),
  NSPAIR(_ZN8S6003C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C11;
extern VTBL_ENTRY _ZTI8S6003C11[];
extern  VTBL_ENTRY _ZTV8S6003C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C11[];
extern Class_Descriptor cd_S6003C15;
extern VTBL_ENTRY _ZTI8S6003C15[];
extern  VTBL_ENTRY _ZTV8S6003C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C15[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C13;
extern VTBL_ENTRY _ZTI8S6003C13[];
extern  VTBL_ENTRY _ZTV8S6003C13[];
extern Class_Descriptor cd_S6003C16;
extern VTBL_ENTRY _ZTI8S6003C16[];
extern  VTBL_ENTRY _ZTV8S6003C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C16[];
static Base_Class bases_S6003C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(20024,12740), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6003C5,    ABISELECT(20656,13156), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6003C8,    ABISELECT(20488,13048), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6003C9,    ABISELECT(20800,13252), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6003C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C4,    ABISELECT(21096,13436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S6003C9,    ABISELECT(32576,20728), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(32872,20912), //bcp->offset
    111, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(33336,21220), //bcp->offset
    116, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6003C10,    ABISELECT(32576,20728), //bcp->offset
    98, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6003C5,    ABISELECT(21568,13752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6003C7,    ABISELECT(21568,13752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6003C12,    ABISELECT(22032,14044), //bcp->offset
    90, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6003C11,    ABISELECT(21568,13752), //bcp->offset
    76, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S6003C15,    ABISELECT(21096,13436), //bcp->offset
    59, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C5,    ABISELECT(464,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(608,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6003C7,    ABISELECT(608,388), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6003C9,    ABISELECT(1072,680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6003C13,    ABISELECT(1072,680), //bcp->offset
    34, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6003C16,    ABISELECT(464,292), //bcp->offset
    14, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6003C21[];
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C213v16Ev();
extern void _ZN8S6003C213v17Ev();
extern void _ZN8S6003C21D1Ev();
extern void _ZN8S6003C21D0Ev();
extern void _ZN7S6003C52v5Ev();
extern void ABISELECT(_ZThn464_N8S6003C21D1Ev,_ZThn292_N8S6003C21D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C21D0Ev,_ZThn292_N8S6003C21D0Ev)();
extern void _ZN8S6003C163v15Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZThn1072_N8S6003C21D1Ev,_ZThn680_N8S6003C21D1Ev)();
extern void ABISELECT(_ZThn1072_N8S6003C21D0Ev,_ZThn680_N8S6003C21D0Ev)();
extern void _ZN8S6003C133v10Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S6003C21D1Ev,_ZTv0_n48_N8S6003C21D1Ev)();
extern void ABISELECT(_ZThn21096_N8S6003C21D1Ev,_ZThn13436_N8S6003C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S6003C21D0Ev,_ZTv0_n48_N8S6003C21D0Ev)();
extern void ABISELECT(_ZThn21096_N8S6003C21D0Ev,_ZThn13436_N8S6003C21D0Ev)() __attribute__((weak));
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C21D1Ev,_ZTv0_n40_N8S6003C21D1Ev)();
extern void ABISELECT(_ZThn21568_N8S6003C21D1Ev,_ZThn13752_N8S6003C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C21D0Ev,_ZTv0_n40_N8S6003C21D0Ev)();
extern void ABISELECT(_ZThn21568_N8S6003C21D0Ev,_ZThn13752_N8S6003C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S6003C21D1Ev,_ZTvn292_n40_N8S6003C21D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C21D0Ev,_ZTvn292_n40_N8S6003C21D0Ev)();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C21D1Ev,_ZTv0_n16_N8S6003C21D1Ev)();
extern void ABISELECT(_ZThn32576_N8S6003C21D1Ev,_ZThn20728_N8S6003C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C21D0Ev,_ZTv0_n16_N8S6003C21D0Ev)();
extern void ABISELECT(_ZThn32576_N8S6003C21D0Ev,_ZThn20728_N8S6003C21D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY vtc_S6003C21[] = {
  ABISELECT(32576,20728),
  ABISELECT(21568,13752),
  ABISELECT(21096,13436),
  ABISELECT(20800,13252),
  ABISELECT(20656,13156),
  ABISELECT(20488,13048),
  ABISELECT(20024,12740),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C213v16Ev,
  (VTBL_ENTRY)&_ZN8S6003C213v17Ev,
  (VTBL_ENTRY)&_ZN8S6003C21D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C21D0Ev,
  ABISELECT(19560,12448),
  ABISELECT(20024,12756),
  ABISELECT(20192,12864),
  ABISELECT(32112,20436),
  ABISELECT(21104,13460),
  ABISELECT(20632,13144),
  ABISELECT(20336,12960),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C21D1Ev,_ZThn292_N8S6003C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C21D0Ev,_ZThn292_N8S6003C21D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C163v15Ev,
  ABISELECT(20192,12864),
  ABISELECT(20048,12768),
  ABISELECT(19880,12660),
  ABISELECT(19416,12352),
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-1072,-680),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1072_N8S6003C21D1Ev,_ZThn680_N8S6003C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1072_N8S6003C21D0Ev,_ZThn680_N8S6003C21D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C133v10Ev,
  0,
  0,
  0,
  ABISELECT(-20024,-12740),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(168,108),
  ABISELECT(-20488,-13048),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  0,
  ABISELECT(-20656,-13156),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-20800,-13252),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  ABISELECT(-21096,-13436),
  0,
  0,
  0,
  ABISELECT(-1072,-696),
  ABISELECT(-608,-388),
  ABISELECT(-440,-280),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  ABISELECT(-21096,-13436),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S6003C21D1Ev,_ZTv0_n48_N8S6003C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S6003C21D0Ev,_ZTv0_n48_N8S6003C21D0Ev),
  ABISELECT(-21568,-13752),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  ABISELECT(-21568,-13752),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C21D1Ev,_ZTv0_n40_N8S6003C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C21D0Ev,_ZTv0_n40_N8S6003C21D0Ev),
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-22032,-14044),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C21D1Ev,_ZTvn292_n40_N8S6003C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C21D0Ev,_ZTvn292_n40_N8S6003C21D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-32576,-20728),
  0,
  ABISELECT(-32576,-20728),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C21D1Ev,_ZTv0_n16_N8S6003C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C21D0Ev,_ZTv0_n16_N8S6003C21D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-32872,-20912),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-33336,-21220),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern VTBL_ENTRY _ZTV8S6003C21[];
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__8S6003C21[] = {
  ABISELECT(20800,13252),
  ABISELECT(20656,13156),
  ABISELECT(20488,13048),
  ABISELECT(20024,12740),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C7__8S6003C21[] = {
  0,
  0,
  0,
  ABISELECT(-20024,-12740),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C7__8S6003C21[] = {
  ABISELECT(168,108),
  ABISELECT(-20488,-13048),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C7__8S6003C21[] = {
  0,
  ABISELECT(-20656,-13156),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C7__8S6003C21[] = {
  0,
  ABISELECT(-20800,-13252),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C16D1Ev();
extern void _ZN8S6003C16D0Ev();
extern void _ZN8S6003C163v15Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C16__8S6003C21[] = {
  ABISELECT(19560,12448),
  ABISELECT(20024,12756),
  ABISELECT(20192,12864),
  ABISELECT(32112,20436),
  ABISELECT(21104,13460),
  ABISELECT(20632,13144),
  ABISELECT(20336,12960),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C16D0Ev,
  (VTBL_ENTRY)&_ZN8S6003C163v15Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C16__A2__8S6003C21[] = {
  ABISELECT(20192,12864),
  ABISELECT(20048,12768),
  ABISELECT(19880,12660),
  ABISELECT(19416,12352),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C16__A2__8S6003C21[] = {
  0,
  0,
  0,
  ABISELECT(-19416,-12352),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C16__A2__8S6003C21[] = {
  ABISELECT(168,108),
  ABISELECT(-19880,-12660),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C16__A2__8S6003C21[] = {
  0,
  ABISELECT(-20048,-12768),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C16__A2__8S6003C21[] = {
  0,
  ABISELECT(-20192,-12864),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C16__8S6003C21[] = {
  0,
  ABISELECT(-20336,-12960),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S6003C16D1Ev,_ZTv0_n48_N8S6003C16D1Ev)();
extern void ABISELECT(_ZThn20632_N8S6003C16D1Ev,_ZThn13144_N8S6003C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S6003C16D0Ev,_ZTv0_n48_N8S6003C16D0Ev)();
extern void ABISELECT(_ZThn20632_N8S6003C16D0Ev,_ZThn13144_N8S6003C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6003C15__8S6003C16__8S6003C21[] = {
  ABISELECT(-20632,-13144),
  0,
  0,
  0,
  ABISELECT(-1072,-696),
  ABISELECT(-608,-388),
  ABISELECT(-440,-280),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  ABISELECT(-20632,-13144),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S6003C16D1Ev,_ZTv0_n48_N8S6003C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S6003C16D0Ev,_ZTv0_n48_N8S6003C16D0Ev),
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C16D1Ev,_ZTv0_n40_N8S6003C16D1Ev)();
extern void ABISELECT(_ZThn21104_N8S6003C16D1Ev,_ZThn13460_N8S6003C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C16D0Ev,_ZTv0_n40_N8S6003C16D0Ev)();
extern void ABISELECT(_ZThn21104_N8S6003C16D0Ev,_ZThn13460_N8S6003C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C16__8S6003C21[] = {
  ABISELECT(-21104,-13460),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  ABISELECT(-21104,-13460),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C16D1Ev,_ZTv0_n40_N8S6003C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C16D0Ev,_ZTv0_n40_N8S6003C16D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C16D1Ev,_ZTv0_n16_N8S6003C16D1Ev)();
extern void ABISELECT(_ZThn32112_N8S6003C16D1Ev,_ZThn20436_N8S6003C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C16D0Ev,_ZTv0_n16_N8S6003C16D0Ev)();
extern void ABISELECT(_ZThn32112_N8S6003C16D0Ev,_ZThn20436_N8S6003C16D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C16__8S6003C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-32112,-20436),
  0,
  ABISELECT(-32112,-20436),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C16D1Ev,_ZTv0_n16_N8S6003C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C16D0Ev,_ZTv0_n16_N8S6003C16D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__A1__8S6003C16__8S6003C21[] = {
  ABISELECT(-32408,-20620),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__A1__8S6003C16__8S6003C21[] = {
  ABISELECT(-32872,-20928),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A2__8S6003C16__8S6003C21[] = {
  0,
  ABISELECT(-20192,-12864),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C16__8S6003C21[] = {
  ABISELECT(168,108),
  ABISELECT(-20024,-12756),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A2__8S6003C16__8S6003C21[] = {
  0,
  0,
  0,
  ABISELECT(-19560,-12448),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S6003C16D1Ev,_ZTvn292_n40_N8S6003C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C16D0Ev,_ZTvn292_n40_N8S6003C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C16__8S6003C21[] = {
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-21568,-13752),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C16D1Ev,_ZTvn292_n40_N8S6003C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C16D0Ev,_ZTvn292_n40_N8S6003C16D0Ev),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__A1__8S6003C16__8S6003C21[] = {
  ABISELECT(20192,12864),
  ABISELECT(20048,12768),
  ABISELECT(19880,12660),
  ABISELECT(19416,12352),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C21[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__8S6003C21[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN8S6003C15D1Ev();
extern void _ZN8S6003C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C15__8S6003C21[] = {
  ABISELECT(-1072,-696),
  ABISELECT(-608,-388),
  ABISELECT(-440,-280),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C15__8S6003C21[] = {
  0,
  ABISELECT(296,184),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn472_N8S6003C15D1Ev,_ZThn316_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn472_N8S6003C15D0Ev,_ZThn316_N8S6003C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C15__8S6003C21[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn11480_N8S6003C15D1Ev,_ZThn7292_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn11480_N8S6003C15D0Ev,_ZThn7292_N8S6003C15D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C15__8S6003C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11480,-7292),
  0,
  ABISELECT(-11480,-7292),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__A1__8S6003C15__8S6003C21[] = {
  ABISELECT(-11776,-7476),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C15__8S6003C21[] = {
  ABISELECT(-12240,-7784),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C15__8S6003C21[] = {
  0,
  ABISELECT(440,280),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C15__8S6003C21[] = {
  ABISELECT(168,108),
  ABISELECT(608,388),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A2__8S6003C15__8S6003C21[] = {
  0,
  0,
  0,
  ABISELECT(1072,696),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C15__8S6003C21[] = {
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev),
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void _ZN8S6003C11D1Ev();
extern void _ZN8S6003C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C21[] = {
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D0Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C11__A1__8S6003C21[] = {
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C11__A1__8S6003C21[] = {
  0,
  0,
  0,
  ABISELECT(1544,1012),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C11__A1__8S6003C21[] = {
  ABISELECT(168,108),
  ABISELECT(1080,704),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C11__A1__8S6003C21[] = {
  0,
  ABISELECT(912,596),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C11__A1__8S6003C21[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C21[] = {
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C11__8S6003C21[] = {
  0,
  ABISELECT(1232,792),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C11__8S6003C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__8S6003C21[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__8S6003C21[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C11__8S6003C21[] = {
  0,
  ABISELECT(1376,888),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C11__8S6003C21[] = {
  ABISELECT(168,108),
  ABISELECT(1544,996),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C11__8S6003C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C11__8S6003C21[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C11__8S6003C21[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C11__8S6003C21[] = {
  0,
  ABISELECT(912,596),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C11__8S6003C21[] = {
  ABISELECT(168,108),
  ABISELECT(1080,704),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A1__8S6003C11__8S6003C21[] = {
  0,
  0,
  0,
  ABISELECT(1544,1012),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__A1__8S6003C11__8S6003C21[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C11__8S6003C21[] = {
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev),
};
static  VTT_ENTRY vtt_S6003C21[] = {
  {&(_ZTV8S6003C21[9]),  9,119},
  {&(_tg__ZTV7S6003C7__8S6003C21[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C7__8S6003C21[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C7__8S6003C21[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C7__8S6003C21[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C7__8S6003C21[3]),  3,4},
  {&(_tg__ZTV8S6003C16__8S6003C21[9]),  9,13},
  {&(_tg__ZTV7S6003C78S6003C16__A2__8S6003C21[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C16__A2__8S6003C21[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C16__A2__8S6003C21[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C16__A2__8S6003C21[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C16__A2__8S6003C21[3]),  3,4},
  {&(_tg__ZTV7S6003C9__8S6003C16__8S6003C21[3]),  3,4},
  {&(_tg__ZTV8S6003C15__8S6003C16__8S6003C21[12]),  12,17},
  {&(_tg__ZTV8S6003C11__8S6003C16__8S6003C21[10]),  10,14},
  {&(_tg__ZTV8S6003C10__8S6003C16__8S6003C21[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__A1__8S6003C16__8S6003C21[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__A1__8S6003C16__8S6003C21[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A2__8S6003C16__8S6003C21[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C16__8S6003C21[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A2__8S6003C16__8S6003C21[5]),  5,8},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C16__8S6003C21[6]),  6,8},
  {&(_tg__ZTV7S6003C7__A1__8S6003C16__8S6003C21[6]),  6,7},
  {&(_ZTV8S6003C21[45]),  45,119},
  {&(_ZTV8S6003C21[51]),  51,119},
  {&(_ZTV8S6003C21[54]),  54,119},
  {&(_ZTV8S6003C21[58]),  58,119},
  {&(_ZTV8S6003C21[71]),  71,119},
  {&(_ZTV8S6003C21[86]),  86,119},
  {&(_ZTV8S6003C21[107]),  107,119},
  {&(_ZTV8S6003C21[113]),  113,119},
  {&(_ZTV8S6003C21[118]),  118,119},
  {&(_ZTV8S6003C21[96]),  96,119},
  {&(_ZTV8S6003C21[23]),  23,119},
  {&(_ZTV8S6003C21[33]),  33,119},
  {&(_tg__ZTV7S6003C8__8S6003C21[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__8S6003C21[3]),  3,4},
  {&(_tg__ZTV8S6003C15__8S6003C21[8]),  8,13},
  {&(_tg__ZTV7S6003C9__8S6003C15__8S6003C21[3]),  3,4},
  {&(_tg__ZTV8S6003C11__8S6003C15__8S6003C21[10]),  10,14},
  {&(_tg__ZTV8S6003C10__8S6003C15__8S6003C21[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__A1__8S6003C15__8S6003C21[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C15__8S6003C21[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C15__8S6003C21[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C15__8S6003C21[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A2__8S6003C15__8S6003C21[5]),  5,8},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C15__8S6003C21[6]),  6,8},
  {&(_tg__ZTV8S6003C11__8S6003C21[7]),  7,11},
  {&(_tg__ZTV7S6003C78S6003C11__A1__8S6003C21[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C11__A1__8S6003C21[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C11__A1__8S6003C21[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C11__A1__8S6003C21[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C11__A1__8S6003C21[3]),  3,4},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C21[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C11__8S6003C21[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C11__8S6003C21[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__8S6003C21[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__8S6003C21[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C11__8S6003C21[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C11__8S6003C21[3]),  3,3},
  {&(_tg__ZTV8S6003C10__8S6003C11__8S6003C21[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C11__8S6003C21[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C11__8S6003C21[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C11__8S6003C21[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C11__8S6003C21[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A1__8S6003C11__8S6003C21[5]),  5,8},
  {&(_tg__ZTV7S6003C9__A1__8S6003C11__8S6003C21[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C11__8S6003C21[6]),  6,8},
};
extern VTBL_ENTRY _ZTI8S6003C21[];
extern  VTBL_ENTRY _ZTV8S6003C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C21[];
static VTBL_ENTRY alt_thunk_names18[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N8S6003C15D0Ev,_ZThn7292_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N8S6003C15D1Ev,_ZThn7292_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S6003C15D0Ev,_ZThn316_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S6003C15D1Ev,_ZThn316_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C16D0Ev,_ZTv0_n16_N8S6003C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32112_N8S6003C16D0Ev,_ZThn20436_N8S6003C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C16D1Ev,_ZTv0_n16_N8S6003C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32112_N8S6003C16D1Ev,_ZThn20436_N8S6003C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C16D0Ev,_ZTv0_n40_N8S6003C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21104_N8S6003C16D0Ev,_ZThn13460_N8S6003C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C16D1Ev,_ZTv0_n40_N8S6003C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21104_N8S6003C16D1Ev,_ZThn13460_N8S6003C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S6003C16D0Ev,_ZTv0_n48_N8S6003C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20632_N8S6003C16D0Ev,_ZThn13144_N8S6003C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S6003C16D1Ev,_ZTv0_n48_N8S6003C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20632_N8S6003C16D1Ev,_ZThn13144_N8S6003C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C21D0Ev,_ZTv0_n16_N8S6003C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32576_N8S6003C21D0Ev,_ZThn20728_N8S6003C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C21D1Ev,_ZTv0_n16_N8S6003C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32576_N8S6003C21D1Ev,_ZThn20728_N8S6003C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C21D0Ev,_ZTv0_n40_N8S6003C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21568_N8S6003C21D0Ev,_ZThn13752_N8S6003C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C21D1Ev,_ZTv0_n40_N8S6003C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21568_N8S6003C21D1Ev,_ZThn13752_N8S6003C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S6003C21D0Ev,_ZTv0_n48_N8S6003C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21096_N8S6003C21D0Ev,_ZThn13436_N8S6003C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S6003C21D1Ev,_ZTv0_n48_N8S6003C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21096_N8S6003C21D1Ev,_ZThn13436_N8S6003C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C21 = {  "S6003C21", // class name
  bases_S6003C21, 22,
  &(vtc_S6003C21[0]), // expected_vtbl_contents
  &(vtt_S6003C21[0]), // expected_vtt_contents
  ABISELECT(36704,23348), // object size
  NSPAIRA(_ZTI8S6003C21),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6003C21),119, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6003C21),68, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names18,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C19  {
  ::S19763C18_nt s6003c19f0;
  ::S6003C21 s6003c19f1;
  int s6003c19f2;
  char s6003c19f3:5;
  virtual void  v11(); // _ZN8S6003C193v11Ev
  ~S6003C19(); // tgen
  S6003C19(); // tgen
};
//SIG(-1 S6003C19) C1{ v1 FC2{} FC3{ BC4{ BC5{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC6{ v5 v6 v7 Fi[2] Fl[2] FC5[3]} VBC7{ VBC5 Fp FC5 FL:3} VBC8{ v8 FL FD Fp Fc FC5 Fp[2] Fl[8] Fs Fp FL:64} FC8 Fs Fi[2]} VBC9{ VBC8 BC6 VBC10{ VBC11{ BC8 BC6 BC5 vd v9 Fl FL Fp[8] FC4 Fp Fi FC4 Fi} VBC5 VBC7 BC4 BC12{ VBC8 VBC11 VBC5 VBC7 FL:44 Fp Fi FC4 Fl[2] Fi[3] FC11 Fc:7 FC13{ BC8 vd v11 FC7 Fi Fp Fi}} v10 FC11 FL Fc:7} Fc:8 Fi} BC14{ BC5 VBC8 VBC9 BC4 BC13 vd v12 Fi FC4 Fi Fs FL:8 Fi} v2 v3 FC9 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]} Fi Fc:5}


void  S6003C19 ::v11(){vfunc_called(this, "_ZN8S6003C193v11Ev");}
S6003C19 ::~S6003C19(){ note_dtor("S6003C19", this);} // tgen
S6003C19 ::S6003C19(){ note_ctor("S6003C19", this);} // tgen

static void Test_S6003C19()
{
  extern Class_Descriptor cd_S6003C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2297,5842)];
    init_test(&cd_S6003C19, buf);
    S6003C19 *dp, &lv = *(dp=new (buf) S6003C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(36736,23364), "sizeof(S6003C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C19)");
    check_field_offset(lv, s6003c19f0, ABISELECT(8,4), "S6003C19.s6003c19f0");
    check_field_offset(lv, s6003c19f1, ABISELECT(16,8), "S6003C19.s6003c19f1");
    check_field_offset(lv, s6003c19f2, ABISELECT(36720,23356), "S6003C19.s6003c19f2");
    set_bf_and_test(lv, s6003c19f3, ABISELECT(36724,23360), 0, 5, 1, "S6003C19");
    set_bf_and_test(lv, s6003c19f3, ABISELECT(36724,23360), 0, 5, hide_sll(1LL<<4), "S6003C19");
    test_class_info(&lv, &cd_S6003C19);
    dp->~S6003C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C19(Test_S6003C19, "S6003C19", ABISELECT(36736,23364));

#else // __cplusplus

extern void _ZN8S6003C19C1Ev();
extern void _ZN8S6003C19D1Ev();
Name_Map name_map_S6003C19[] = {
  NSPAIR(_ZN8S6003C19C1Ev),
  NSPAIR(_ZN8S6003C19D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S6003C19[];
extern void _ZN8S6003C193v11Ev();
static  VTBL_ENTRY vtc_S6003C19[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C19[0]),
  (VTBL_ENTRY)&_ZN8S6003C193v11Ev,
};
extern VTBL_ENTRY _ZTI8S6003C19[];
extern  VTBL_ENTRY _ZTV8S6003C19[];
Class_Descriptor cd_S6003C19 = {  "S6003C19", // class name
  0,0,//no base classes
  &(vtc_S6003C19[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(36736,23364), // object size
  NSPAIRA(_ZTI8S6003C19),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S6003C19),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C22  : S6003C7 , S6003C12 {
  int s6003c22f0:13;
  long s6003c22f1;
  int s6003c22f2;
  void *s6003c22f3[2];
  __tsi64 s6003c22f4;
  ::S6003C4 s6003c22f5;
  virtual  ~S6003C22(); // _ZN8S6003C22D2Ev
  virtual void  v12(); // _ZN8S6003C223v12Ev
  virtual void  v13(); // _ZN8S6003C223v13Ev
  S6003C22(); // tgen
};
//SIG(-1 S6003C22) C1{ BC2{ BC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC4{ v4 v5 v6 Fi[2] Fl[2] FC3[3]} VBC5{ VBC3 Fp FC3 FL:3} VBC6{ v7 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} FC6 Fs Fi[2]} BC7{ VBC6 VBC8{ BC6 BC4 BC3 vd v8 Fl FL Fp[8] FC2 Fp Fi FC2 Fi} VBC3 VBC5 FL:44 Fp Fi FC2 Fl[2] Fi[3] FC8 Fc:7 FC9{ BC6 vd v9 FC5 Fi Fp Fi}} vd v1 v2 Fi:13 Fl Fi Fp[2] FL FC4}


 S6003C22 ::~S6003C22(){ note_dtor("S6003C22", this);}
void  S6003C22 ::v12(){vfunc_called(this, "_ZN8S6003C223v12Ev");}
void  S6003C22 ::v13(){vfunc_called(this, "_ZN8S6003C223v13Ev");}
S6003C22 ::S6003C22(){ note_ctor("S6003C22", this);} // tgen

static void Test_S6003C22()
{
  extern Class_Descriptor cd_S6003C22;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(788,2000)];
    init_test(&cd_S6003C22, buf);
    S6003C22 *dp, &lv = *(dp=new (buf) S6003C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(12592,7996), "sizeof(S6003C22)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C22)");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*), 0, "S6003C22");
    check_base_class_offset(lv, (S6003C4*)(S6003C7*), ABISELECT(7376,4680), "S6003C22");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(8008,5096), "S6003C22");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*), ABISELECT(8008,5096), "S6003C22");
    check_base_class_offset(lv, (S6003C8*)(S6003C7*), ABISELECT(7840,4988), "S6003C22");
    check_base_class_offset(lv, (S6003C8*)(S6003C12*), ABISELECT(7840,4988), "S6003C22");
    check_base_class_offset(lv, (S6003C9*)(S6003C7*), ABISELECT(8160,5192), "S6003C22");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*), ABISELECT(8160,5192), "S6003C22");
    check_base_class_offset(lv, (S6003C7*), 0, "S6003C22");
    check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(8464,5376), "S6003C22");
    check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(8760,5560), "S6003C22");
    check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(9224,5868), "S6003C22");
    check_base_class_offset(lv, (S6003C10*)(S6003C12*), ABISELECT(8464,5376), "S6003C22");
    check_base_class_offset(lv, (S6003C12*), ABISELECT(464,292), "S6003C22");
    set_bf_and_test(lv, s6003c22f0, ABISELECT(6864,4344), 0, 13, 1, "S6003C22");
    set_bf_and_test(lv, s6003c22f0, ABISELECT(6864,4344), 0, 13, hide_sll(1LL<<12), "S6003C22");
    check_field_offset(lv, s6003c22f1, ABISELECT(6872,4348), "S6003C22.s6003c22f1");
    check_field_offset(lv, s6003c22f2, ABISELECT(6880,4352), "S6003C22.s6003c22f2");
    check_field_offset(lv, s6003c22f3, ABISELECT(6888,4356), "S6003C22.s6003c22f3");
    check_field_offset(lv, s6003c22f4, ABISELECT(6904,4364), "S6003C22.s6003c22f4");
    check_field_offset(lv, s6003c22f5, ABISELECT(6912,4372), "S6003C22.s6003c22f5");
    test_class_info(&lv, &cd_S6003C22);
    dp->~S6003C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C22(Test_S6003C22, "S6003C22", ABISELECT(12592,7996));

#else // __cplusplus

extern void _ZN8S6003C22C1Ev();
extern void _ZN8S6003C22D2Ev();
Name_Map name_map_S6003C22[] = {
  NSPAIR(_ZN8S6003C22C1Ev),
  NSPAIR(_ZN8S6003C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
static Base_Class bases_S6003C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(7376,4680), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6003C5,    ABISELECT(8008,5096), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6003C8,    ABISELECT(7840,4988), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6003C9,    ABISELECT(8160,5192), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6003C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C9,    ABISELECT(8464,5376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(8760,5560), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(9224,5868), //bcp->offset
    57, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6003C10,    ABISELECT(8464,5376), //bcp->offset
    39, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6003C12,    ABISELECT(464,292), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6003C22[];
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C22D1Ev();
extern void _ZN8S6003C22D0Ev();
extern void _ZN8S6003C223v12Ev();
extern void _ZN8S6003C223v13Ev();
extern void ABISELECT(_ZThn464_N8S6003C22D1Ev,_ZThn292_N8S6003C22D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C22D0Ev,_ZThn292_N8S6003C22D0Ev)();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C22D1Ev,_ZTv0_n16_N8S6003C22D1Ev)();
extern void ABISELECT(_ZThn8464_N8S6003C22D1Ev,_ZThn5376_N8S6003C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C22D0Ev,_ZTv0_n16_N8S6003C22D0Ev)();
extern void ABISELECT(_ZThn8464_N8S6003C22D0Ev,_ZThn5376_N8S6003C22D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY vtc_S6003C22[] = {
  ABISELECT(8464,5376),
  ABISELECT(8160,5192),
  ABISELECT(8008,5096),
  ABISELECT(7840,4988),
  ABISELECT(7376,4680),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C22D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C22D0Ev,
  (VTBL_ENTRY)&_ZN8S6003C223v12Ev,
  (VTBL_ENTRY)&_ZN8S6003C223v13Ev,
  ABISELECT(7376,4696),
  ABISELECT(7544,4804),
  ABISELECT(8000,5084),
  ABISELECT(7696,4900),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C22D1Ev,_ZThn292_N8S6003C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C22D0Ev,_ZThn292_N8S6003C22D0Ev),
  0,
  0,
  0,
  ABISELECT(-7376,-4680),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(168,108),
  ABISELECT(-7840,-4988),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  0,
  ABISELECT(-8008,-5096),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-8160,-5192),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-8464,-5376),
  0,
  ABISELECT(-8464,-5376),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C22D1Ev,_ZTv0_n16_N8S6003C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C22D0Ev,_ZTv0_n16_N8S6003C22D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-8760,-5560),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-9224,-5868),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern VTBL_ENTRY _ZTV8S6003C22[];
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__8S6003C22[] = {
  ABISELECT(8160,5192),
  ABISELECT(8008,5096),
  ABISELECT(7840,4988),
  ABISELECT(7376,4680),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C7__8S6003C22[] = {
  0,
  0,
  0,
  ABISELECT(-7376,-4680),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C7__8S6003C22[] = {
  ABISELECT(168,108),
  ABISELECT(-7840,-4988),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C7__8S6003C22[] = {
  0,
  ABISELECT(-8008,-5096),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C7__8S6003C22[] = {
  0,
  ABISELECT(-8160,-5192),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C22[] = {
  ABISELECT(7376,4696),
  ABISELECT(7544,4804),
  ABISELECT(8000,5084),
  ABISELECT(7696,4900),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C12__8S6003C22[] = {
  0,
  ABISELECT(-7696,-4900),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn8000_N8S6003C12D1Ev,_ZThn5084_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn8000_N8S6003C12D0Ev,_ZThn5084_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C12__8S6003C22[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-8000,-5084),
  0,
  ABISELECT(-8000,-5084),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C12__8S6003C22[] = {
  ABISELECT(-8296,-5268),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C12__8S6003C22[] = {
  ABISELECT(-8760,-5576),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C12__8S6003C22[] = {
  0,
  ABISELECT(-7544,-4804),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C12__8S6003C22[] = {
  ABISELECT(168,108),
  ABISELECT(-7376,-4696),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C22[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__8S6003C22[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTT_ENTRY vtt_S6003C22[] = {
  {&(_ZTV8S6003C22[7]),  7,60},
  {&(_tg__ZTV7S6003C7__8S6003C22[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C7__8S6003C22[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C7__8S6003C22[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C7__8S6003C22[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C7__8S6003C22[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C22[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C12__8S6003C22[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C12__8S6003C22[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C12__8S6003C22[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C12__8S6003C22[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C12__8S6003C22[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C12__8S6003C22[3]),  3,3},
  {&(_ZTV8S6003C22[25]),  25,60},
  {&(_ZTV8S6003C22[31]),  31,60},
  {&(_ZTV8S6003C22[34]),  34,60},
  {&(_ZTV8S6003C22[38]),  38,60},
  {&(_ZTV8S6003C22[18]),  18,60},
  {&(_ZTV8S6003C22[48]),  48,60},
  {&(_ZTV8S6003C22[54]),  54,60},
  {&(_ZTV8S6003C22[59]),  59,60},
  {&(_tg__ZTV7S6003C8__8S6003C22[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__8S6003C22[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6003C22[];
extern  VTBL_ENTRY _ZTV8S6003C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C22[];
static VTBL_ENTRY alt_thunk_names19[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N8S6003C12D0Ev,_ZThn5084_N8S6003C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N8S6003C12D1Ev,_ZThn5084_N8S6003C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C22D0Ev,_ZTv0_n16_N8S6003C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N8S6003C22D0Ev,_ZThn5376_N8S6003C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C22D1Ev,_ZTv0_n16_N8S6003C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N8S6003C22D1Ev,_ZThn5376_N8S6003C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C22 = {  "S6003C22", // class name
  bases_S6003C22, 11,
  &(vtc_S6003C22[0]), // expected_vtbl_contents
  &(vtt_S6003C22[0]), // expected_vtt_contents
  ABISELECT(12592,7996), // object size
  NSPAIRA(_ZTI8S6003C22),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6003C22),60, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6003C22),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names19,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C23  : virtual S6003C10 , virtual S6003C9 {
  __tsi64 s6003c23f0;
  int s6003c23f1;
  void *s6003c23f2;
  void *s6003c23f3[3];
  __tsi64 s6003c23f4;
  ~S6003C23(); // tgen
  S6003C23(); // tgen
};
//SIG(-1 S6003C23) C1{ VBC2{ BC3{ v1 FL FD Fp Fc FC4{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC5{ v2 v3 v4 Fi[2] Fl[2] FC4[3]} BC4 vd v6 Fl FL Fp[8] FC6{ BC4 VBC5 VBC7{ VBC4 Fp FC4 FL:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC6 Fi} VBC3 FL Fi Fp[4] FL}


S6003C23 ::~S6003C23(){ note_dtor("S6003C23", this);} // tgen
S6003C23 ::S6003C23(){ note_ctor("S6003C23", this);} // tgen

static void Test_S6003C23()
{
  extern Class_Descriptor cd_S6003C23;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(282,712)];
    init_test(&cd_S6003C23, buf);
    S6003C23 *dp, &lv = *(dp=new (buf) S6003C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4496,2844), "sizeof(S6003C23)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C23)");
    check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(64,40), "S6003C23");
    check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(360,224), "S6003C23");
    check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(824,532), "S6003C23");
    check_base_class_offset(lv, (S6003C10*), ABISELECT(64,40), "S6003C23");
    /*is_ambiguous_... S6003C23::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*), ABISELECT(4192,2660), "S6003C23");
    check_field_offset(lv, s6003c23f0, ABISELECT(8,4), "S6003C23.s6003c23f0");
    check_field_offset(lv, s6003c23f1, ABISELECT(16,12), "S6003C23.s6003c23f1");
    check_field_offset(lv, s6003c23f2, ABISELECT(24,16), "S6003C23.s6003c23f2");
    check_field_offset(lv, s6003c23f3, ABISELECT(32,20), "S6003C23.s6003c23f3");
    check_field_offset(lv, s6003c23f4, ABISELECT(56,32), "S6003C23.s6003c23f4");
    test_class_info(&lv, &cd_S6003C23);
    dp->~S6003C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C23(Test_S6003C23, "S6003C23", ABISELECT(4496,2844));

#else // __cplusplus

extern void _ZN8S6003C23C1Ev();
extern void _ZN8S6003C23D1Ev();
Name_Map name_map_S6003C23[] = {
  NSPAIR(_ZN8S6003C23C1Ev),
  NSPAIR(_ZN8S6003C23D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
static Base_Class bases_S6003C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C9,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(360,224), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(824,532), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6003C10,    ABISELECT(64,40), //bcp->offset
    6, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C9,    ABISELECT(4192,2660), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6003C23[];
extern void _ZN8S6003C23D1Ev();
extern void _ZN8S6003C23D0Ev();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C23D1Ev,_ZTv0_n16_N8S6003C23D1Ev)();
extern void ABISELECT(_ZThn64_N8S6003C23D1Ev,_ZThn40_N8S6003C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C23D0Ev,_ZTv0_n16_N8S6003C23D0Ev)();
extern void ABISELECT(_ZThn64_N8S6003C23D0Ev,_ZThn40_N8S6003C23D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY vtc_S6003C23[] = {
  ABISELECT(4192,2660),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C23[0]),
  (VTBL_ENTRY)&_ZN8S6003C23D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C23D0Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-64,-40),
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S6003C23[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C23D1Ev,_ZTv0_n16_N8S6003C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C23D0Ev,_ZTv0_n16_N8S6003C23D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-360,-224),
  (VTBL_ENTRY)&(_ZTI8S6003C23[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-824,-532),
  (VTBL_ENTRY)&(_ZTI8S6003C23[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-4192,-2660),
  (VTBL_ENTRY)&(_ZTI8S6003C23[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S6003C23[];
static  VTT_ENTRY vtt_S6003C23[] = {
  {&(_ZTV8S6003C23[4]),  4,31},
  {&(_ZTV8S6003C23[15]),  15,31},
  {&(_ZTV8S6003C23[21]),  21,31},
  {&(_ZTV8S6003C23[26]),  26,31},
  {&(_ZTV8S6003C23[30]),  30,31},
};
extern VTBL_ENTRY _ZTI8S6003C23[];
extern  VTBL_ENTRY _ZTV8S6003C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C23[];
static VTBL_ENTRY alt_thunk_names20[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C23D0Ev,_ZTv0_n16_N8S6003C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6003C23D0Ev,_ZThn40_N8S6003C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C23D1Ev,_ZTv0_n16_N8S6003C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6003C23D1Ev,_ZThn40_N8S6003C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C23 = {  "S6003C23", // class name
  bases_S6003C23, 5,
  &(vtc_S6003C23[0]), // expected_vtbl_contents
  &(vtt_S6003C23[0]), // expected_vtt_contents
  ABISELECT(4496,2844), // object size
  NSPAIRA(_ZTI8S6003C23),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6003C23),31, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6003C23),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names20,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C1  : S19763C2 , virtual S6003C17 , virtual S6003C19 , S6003C5 , virtual S6003C22 {
  int s6003c1f0;
  void *s6003c1f1;
  int s6003c1f2;
  ::S6003C23 s6003c1f3;
  char s6003c1f4:3;
  ::S6003C5 s6003c1f5;
  void *s6003c1f6;
  __tsi64 s6003c1f7:64;
  int s6003c1f8;
  ~S6003C1(); // tgen
  S6003C1(); // tgen
};
//SIG(1 S6003C1) C1{ BC2{ m Fp Fi[2] Fs Fc Fi FC3{ VBC4{ v15 v16 v17 Fi[2] Fl[2] FC5{ v18 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]} BC6{ VBC5 VBC7{ BC5 VBC4 VBC8{ VBC5 Fp FC5 FL:3} VBC9{ v19 FL FD Fp Fc FC5 Fp[2] Fl[8] Fs Fp FL:64} FC9 Fs Fi[2]} BC10{ BC9 BC4 BC5 vd v20 Fl FL Fp[8] FC7 Fp Fi FC7 Fi} BC11{ VBC10 VBC5 VBC8 BC7 BC12{ VBC9 VBC10 VBC5 VBC8 FL:44 Fp Fi FC7 Fl[2] Fi[3] FC10 Fc:7 FC13{ BC9 vd v24 FC8 Fi Fp Fi}} v21 FC10 FL Fc:7} v22 v23 FC12 Fs FL:8} BC14{ VBC8 FC12 FL:6 Fi Fl} VBC15{ VBC9 BC4 VBC11 Fc:8 Fi} VBC16{ BC5 VBC9 VBC15 BC7 BC13 vd v25 Fi FC7 Fi Fs FL:8 Fi} v14 FC15 FC6} Fi} VBC17{ VBC18{ v1 v2 v3 Fi[2] Fl[2] FC19{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]} BC20{ VBC21{ v4 FL FD Fp Fc FC19 Fp[2] Fl[8] Fs Fp FL:64} BC18 VBC22{ VBC23{ BC21 BC18 BC19 vd v6 Fl FL Fp[8] FC24{ BC19 VBC18 VBC25{ VBC19 Fp FC19 FL:3} VBC21 FC21 Fs Fi[2]} Fp Fi FC24 Fi} VBC19 VBC25 BC24 BC26{ VBC21 VBC23 VBC19 VBC25 FL:44 Fp Fi FC24 Fl[2] Fi[3] FC23 Fc:7 FC27{ BC21 vd v10 FC25 Fi Fp Fi}} v7 FC23 FL Fc:7} Fc:8 Fi} VBC28{ VBC19 VBC24 BC23 BC22 v8 v9 FC26 Fs FL:8} BC26 BC27 vd FU29{ m Fl Fi Fl Fs Fi} FL FD Fp FL Fi FC20 Fi FC19} VBC30{ v11 FC31{} FC32{ BC24 VBC20 BC33{ BC19 VBC21 VBC20 BC24 BC27 vd v28 Fi FC24 Fi Fs FL:8 Fi} v26 v27 FC20 Fi Fi Fc Fi FL Fi Fi Fp Fp Fi Fi} Fi Fc:5} BC19 VBC34{ BC24 BC26 vd v12 v13 Fi:13 Fl Fi Fp[2] FL FC18} Fi Fp Fi FC35{ VBC23 VBC21 FL Fi Fp Fp[3] FL} Fc:3 FC19 Fp FL:64 Fi}


S6003C1 ::~S6003C1(){ note_dtor("S6003C1", this);} // tgen
S6003C1 ::S6003C1(){ note_ctor("S6003C1", this);} // tgen

static void Test_S6003C1()
{
  extern Class_Descriptor cd_S6003C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13905,35301)];
    init_test(&cd_S6003C1, buf);
    S6003C1 *dp, &lv = *(dp=new (buf) S6003C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(222464,141200), "sizeof(S6003C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C1)");
    check_base_class_offset(lv, (S19763C2*), ABISELECT(144,96), "S6003C1");
    /*is_ambiguous_... S6003C17::S6003C4 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C17*), ABISELECT(135384,85912), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C11*), ABISELECT(135384,85912), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C7*), ABISELECT(135384,85912), "S6003C1");
    check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(135384,85912), "S6003C1");
    check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C22*), ABISELECT(135384,85912), "S6003C1");
    /*is_ambiguous_... S6003C15::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C15*)(S6003C17*), ABISELECT(135856,86220), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C11*), ABISELECT(135856,86220), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C11*), ABISELECT(135856,86220), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C7*), ABISELECT(135856,86220), "S6003C1");
    check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(135856,86220), "S6003C1");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(135856,86220), "S6003C1");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C17*), ABISELECT(135856,86220), "S6003C1");
    check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C22*), ABISELECT(135856,86220), "S6003C1");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C22*), ABISELECT(135856,86220), "S6003C1");
    /*is_ambiguous_... S6003C15::S6003C4 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C15*)(S6003C17*), ABISELECT(110960,70396), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(147168,93380), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(147464,93564), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(147928,93872), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C10*)(S6003C11*), ABISELECT(147168,93380), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C11*), ABISELECT(147168,93380), "S6003C1");
    check_base_class_offset(lv, (S6003C10*)(S6003C11*)(S6003C6*), ABISELECT(147168,93380), "S6003C1");
    check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(147168,93380), "S6003C1");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C17*), ABISELECT(147168,93380), "S6003C1");
    check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C22*), ABISELECT(147168,93380), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C11*), ABISELECT(151288,96000), "S6003C1");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(151288,96000), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C11*), ABISELECT(151288,96000), "S6003C1");
    /*is_ambiguous_... S6003C6::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C6*), ABISELECT(151288,96000), "S6003C1");
    /*is_ambiguous_... S6003C11::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C11*)(S6003C6*), ABISELECT(151288,96000), "S6003C1");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(151288,96000), "S6003C1");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C17*), ABISELECT(151288,96000), "S6003C1");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C22*), ABISELECT(151288,96000), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C11*), ABISELECT(151432,96096), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C11*), ABISELECT(151432,96096), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C11*), ABISELECT(151432,96096), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C7*), ABISELECT(151432,96096), "S6003C1");
    check_base_class_offset(lv, (S6003C8*)(S6003C11*)(S6003C6*), ABISELECT(151432,96096), "S6003C1");
    check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(151432,96096), "S6003C1");
    check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(151432,96096), "S6003C1");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C17*), ABISELECT(151432,96096), "S6003C1");
    check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C22*), ABISELECT(151432,96096), "S6003C1");
    check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C22*), ABISELECT(151432,96096), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C11*), ABISELECT(136160,86404), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C7*)(S6003C11*), ABISELECT(136160,86404), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C12*)(S6003C11*), ABISELECT(136624,86696), "S6003C1");
    check_base_class_offset(lv, (S6003C11*)(S6003C15*)(S6003C17*), ABISELECT(136160,86404), "S6003C1");
    check_base_class_offset(lv, (S6003C15*)(S6003C17*), ABISELECT(110960,70396), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*), ABISELECT(177888,112864), "S6003C1");
    /*is_ambiguous_... S6003C6::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C7*)(S6003C6*), ABISELECT(177888,112864), "S6003C1");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C10*)(S6003C6*), ABISELECT(151600,96204), "S6003C1");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C10*)(S6003C6*), ABISELECT(151896,96388), "S6003C1");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C10*)(S6003C6*), ABISELECT(152360,96696), "S6003C1");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C10*)(S6003C6*), ABISELECT(151600,96204), "S6003C1");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(155728,98824), "S6003C1");
    check_base_class_offset(lv, (S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(155728,98824), "S6003C1");
    check_base_class_offset(lv, (S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(156192,99116), "S6003C1");
    check_base_class_offset(lv, (S6003C11*)(S6003C6*), ABISELECT(155728,98824), "S6003C1");
    check_base_class_offset(lv, (S6003C6*)(S6003C17*), ABISELECT(151600,96204), "S6003C1");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C12*)(S6003C17*), ABISELECT(111440,70712), "S6003C1");
    check_base_class_offset(lv, (S6003C9*)(S6003C13*)(S6003C17*), ABISELECT(117840,74764), "S6003C1");
    check_base_class_offset(lv, (S6003C13*)(S6003C17*), ABISELECT(117840,74764), "S6003C1");
    check_base_class_offset(lv, (S6003C17*), ABISELECT(110960,70396), "S6003C1");
    check_base_class_offset(lv, (S6003C19*), ABISELECT(178352,113156), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*), 0, "S6003C1");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C22*), ABISELECT(215088,136520), "S6003C1");
    check_base_class_offset(lv, (S6003C7*)(S6003C22*), ABISELECT(215088,136520), "S6003C1");
    check_base_class_offset(lv, (S6003C12*)(S6003C22*), ABISELECT(215552,136812), "S6003C1");
    check_base_class_offset(lv, (S6003C22*), ABISELECT(215088,136520), "S6003C1");
    check_field_offset(lv, s6003c1f0, ABISELECT(106260,67424), "S6003C1.s6003c1f0");
    check_field_offset(lv, s6003c1f1, ABISELECT(106264,67428), "S6003C1.s6003c1f1");
    check_field_offset(lv, s6003c1f2, ABISELECT(106272,67432), "S6003C1.s6003c1f2");
    check_field_offset(lv, s6003c1f3, ABISELECT(106288,67436), "S6003C1.s6003c1f3");
    set_bf_and_test(lv, s6003c1f4, ABISELECT(110784,70280), 0, 3, 1, "S6003C1");
    set_bf_and_test(lv, s6003c1f4, ABISELECT(110784,70280), 0, 3, hide_sll(1LL<<2), "S6003C1");
    check_field_offset(lv, s6003c1f5, ABISELECT(110792,70284), "S6003C1.s6003c1f5");
    check_field_offset(lv, s6003c1f6, ABISELECT(110936,70380), "S6003C1.s6003c1f6");
    set_bf_and_test(lv, s6003c1f7, ABISELECT(110944,70384), 0, 64, 1, "S6003C1");
    set_bf_and_test(lv, s6003c1f7, ABISELECT(110944,70384), 0, 64, hide_sll(1LL<<63), "S6003C1");
    check_field_offset(lv, s6003c1f8, ABISELECT(110952,70392), "S6003C1.s6003c1f8");
    test_class_info(&lv, &cd_S6003C1);
    dp->~S6003C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C1(Test_S6003C1, "S6003C1", ABISELECT(222464,141200));

#else // __cplusplus

extern void _ZN7S6003C1C1Ev();
extern void _ZN7S6003C1D1Ev();
Name_Map name_map_S6003C1[] = {
  NSPAIR(_ZN7S6003C1C1Ev),
  NSPAIR(_ZN7S6003C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C2;
extern VTBL_ENTRY _ZTI8S19763C2[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C11;
extern VTBL_ENTRY _ZTI8S6003C11[];
extern  VTBL_ENTRY _ZTV8S6003C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C11[];
extern Class_Descriptor cd_S6003C15;
extern VTBL_ENTRY _ZTI8S6003C15[];
extern  VTBL_ENTRY _ZTV8S6003C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C15[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C11;
extern VTBL_ENTRY _ZTI8S6003C11[];
extern  VTBL_ENTRY _ZTV8S6003C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C11[];
extern Class_Descriptor cd_S6003C6;
extern VTBL_ENTRY _ZTI7S6003C6[];
extern  VTBL_ENTRY _ZTV7S6003C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C6[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C13;
extern VTBL_ENTRY _ZTI8S6003C13[];
extern  VTBL_ENTRY _ZTV8S6003C13[];
extern Class_Descriptor cd_S6003C17;
extern VTBL_ENTRY _ZTI8S6003C17[];
extern  VTBL_ENTRY _ZTV8S6003C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C17[];
extern Class_Descriptor cd_S6003C19;
extern VTBL_ENTRY _ZTI8S6003C19[];
extern  VTBL_ENTRY _ZTV8S6003C19[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C22;
extern VTBL_ENTRY _ZTI8S6003C22[];
extern  VTBL_ENTRY _ZTV8S6003C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C22[];
static Base_Class bases_S6003C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C2,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C4,    ABISELECT(135384,85912), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6003C9,    ABISELECT(135856,86220), //bcp->offset
    59, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6003C4,    ABISELECT(110960,70396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6003C9,    ABISELECT(147168,93380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(147464,93564), //bcp->offset
    98, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(147928,93872), //bcp->offset
    103, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6003C10,    ABISELECT(147168,93380), //bcp->offset
    85, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S6003C5,    ABISELECT(151288,96000), //bcp->offset
    106, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6003C8,    ABISELECT(151432,96096), //bcp->offset
    110, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6003C5,    ABISELECT(136160,86404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6003C7,    ABISELECT(136160,86404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6003C12,    ABISELECT(136624,86696), //bcp->offset
    77, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6003C11,    ABISELECT(136160,86404), //bcp->offset
    63, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S6003C15,    ABISELECT(110960,70396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(177888,112864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6003C7,    ABISELECT(177888,112864), //bcp->offset
    164, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S6003C9,    ABISELECT(151600,96204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(151896,96388), //bcp->offset
    137, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(152360,96696), //bcp->offset
    142, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6003C10,    ABISELECT(151600,96204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(155728,98824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6003C7,    ABISELECT(155728,98824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6003C12,    ABISELECT(156192,99116), //bcp->offset
    156, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6003C11,    ABISELECT(155728,98824), //bcp->offset
    145, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6003C6,    ABISELECT(151600,96204), //bcp->offset
    113, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S6003C12,    ABISELECT(111440,70712), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S6003C9,    ABISELECT(117840,74764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S6003C13,    ABISELECT(117840,74764), //bcp->offset
    45, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S6003C17,    ABISELECT(110960,70396), //bcp->offset
    16, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C19,    ABISELECT(178352,113156), //bcp->offset
    172, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C5,    ABISELECT(215088,136520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S6003C7,    ABISELECT(215088,136520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S6003C12,    ABISELECT(215552,136812), //bcp->offset
    192, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S6003C22,    ABISELECT(215088,136520), //bcp->offset
    176, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6003C1[];
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C1D1Ev();
extern void _ZN7S6003C1D0Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void ABISELECT(_ZTv0_n112_N7S6003C1D1Ev,_ZTv0_n56_N7S6003C1D1Ev)();
extern void ABISELECT(_ZThn110960_N7S6003C1D1Ev,_ZThn70396_N7S6003C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N7S6003C1D0Ev,_ZTv0_n56_N7S6003C1D0Ev)();
extern void ABISELECT(_ZThn110960_N7S6003C1D0Ev,_ZThn70396_N7S6003C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn480_n112_N7S6003C1D1Ev,_ZTvn316_n56_N7S6003C1D1Ev)();
extern void ABISELECT(_ZTvn480_n112_N7S6003C1D0Ev,_ZTvn316_n56_N7S6003C1D0Ev)();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTvn6880_n112_N7S6003C1D1Ev,_ZTvn4368_n56_N7S6003C1D1Ev)();
extern void ABISELECT(_ZTvn6880_n112_N7S6003C1D0Ev,_ZTvn4368_n56_N7S6003C1D0Ev)();
extern void _ZN8S6003C133v10Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N7S6003C1D1Ev,_ZTv0_n40_N7S6003C1D1Ev)();
extern void ABISELECT(_ZThn136160_N7S6003C1D1Ev,_ZThn86404_N7S6003C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6003C1D0Ev,_ZTv0_n40_N7S6003C1D0Ev)();
extern void ABISELECT(_ZThn136160_N7S6003C1D0Ev,_ZThn86404_N7S6003C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N7S6003C1D1Ev,_ZTvn292_n40_N7S6003C1D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N7S6003C1D0Ev,_ZTvn292_n40_N7S6003C1D0Ev)();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N7S6003C1D1Ev,_ZTv0_n16_N7S6003C1D1Ev)();
extern void ABISELECT(_ZThn147168_N7S6003C1D1Ev,_ZThn93380_N7S6003C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6003C1D0Ev,_ZTv0_n16_N7S6003C1D0Ev)();
extern void ABISELECT(_ZThn147168_N7S6003C1D0Ev,_ZThn93380_N7S6003C1D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n80_N7S6003C1D1Ev,_ZTv0_n40_N7S6003C1D1Ev)();
extern void ABISELECT(_ZThn151600_N7S6003C1D1Ev,_ZThn96204_N7S6003C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6003C1D0Ev,_ZTv0_n40_N7S6003C1D0Ev)();
extern void ABISELECT(_ZThn151600_N7S6003C1D0Ev,_ZThn96204_N7S6003C1D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C62v8Ev();
extern void _ZN7S6003C62v9Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTvn4128_n80_N7S6003C1D1Ev,_ZTvn2620_n40_N7S6003C1D1Ev)();
extern void ABISELECT(_ZTvn4128_n80_N7S6003C1D0Ev,_ZTvn2620_n40_N7S6003C1D0Ev)();
extern void ABISELECT(_ZTvn4592_n80_N7S6003C1D1Ev,_ZTvn2912_n40_N7S6003C1D1Ev)();
extern void ABISELECT(_ZTvn4592_n80_N7S6003C1D0Ev,_ZTvn2912_n40_N7S6003C1D0Ev)();
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C193v11Ev();
extern void _ZN7S6003C52v5Ev();
extern void ABISELECT(_ZTv0_n72_N7S6003C1D1Ev,_ZTv0_n36_N7S6003C1D1Ev)();
extern void ABISELECT(_ZThn215088_N7S6003C1D1Ev,_ZThn136520_N7S6003C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6003C1D0Ev,_ZTv0_n36_N7S6003C1D0Ev)();
extern void ABISELECT(_ZThn215088_N7S6003C1D0Ev,_ZThn136520_N7S6003C1D0Ev)() __attribute__((weak));
extern void _ZN8S6003C223v12Ev();
extern void _ZN8S6003C223v13Ev();
extern void ABISELECT(_ZTvn464_n72_N7S6003C1D1Ev,_ZTvn292_n36_N7S6003C1D1Ev)();
extern void ABISELECT(_ZTvn464_n72_N7S6003C1D0Ev,_ZTvn292_n36_N7S6003C1D0Ev)();
static  VTBL_ENTRY vtc_S6003C1[] = {
  ABISELECT(215088,136520),
  ABISELECT(178352,113156),
  ABISELECT(177888,112864),
  ABISELECT(151600,96204),
  ABISELECT(151432,96096),
  ABISELECT(151288,96000),
  ABISELECT(147168,93380),
  ABISELECT(136160,86404),
  ABISELECT(135856,86220),
  ABISELECT(135384,85912),
  ABISELECT(110960,70396),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN7S6003C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6003C1D0Ev,
  ABISELECT(6880,4368),
  ABISELECT(6880,4368),
  ABISELECT(-110960,-70396),
  0,
  0,
  0,
  ABISELECT(66928,42468),
  ABISELECT(40640,25808),
  ABISELECT(24424,15516),
  ABISELECT(40472,25700),
  ABISELECT(40328,25604),
  ABISELECT(36208,22984),
  ABISELECT(25200,16008),
  ABISELECT(24896,15824),
  ABISELECT(-110960,-70396),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N7S6003C1D1Ev,_ZTv0_n56_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N7S6003C1D0Ev,_ZTv0_n56_N7S6003C1D0Ev),
  ABISELECT(39992,25384),
  ABISELECT(39848,25288),
  ABISELECT(35728,22668),
  ABISELECT(24416,15508),
  ABISELECT(-111440,-70712),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn480_n112_N7S6003C1D1Ev,_ZTvn316_n56_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn480_n112_N7S6003C1D0Ev,_ZTvn316_n56_N7S6003C1D0Ev),
  ABISELECT(-117840,-74764),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn6880_n112_N7S6003C1D1Ev,_ZTvn4368_n56_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn6880_n112_N7S6003C1D0Ev,_ZTvn4368_n56_N7S6003C1D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C133v10Ev,
  0,
  0,
  0,
  ABISELECT(-135384,-85912),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  0,
  ABISELECT(-135856,-86220),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  ABISELECT(-136160,-86404),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(-776,-492),
  ABISELECT(-136160,-86404),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6003C1D1Ev,_ZTv0_n40_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6003C1D0Ev,_ZTv0_n40_N7S6003C1D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-136624,-86696),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N7S6003C1D1Ev,_ZTvn292_n40_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N7S6003C1D0Ev,_ZTvn292_n40_N7S6003C1D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-147168,-93380),
  0,
  ABISELECT(-147168,-93380),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6003C1D1Ev,_ZTv0_n16_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6003C1D0Ev,_ZTv0_n16_N7S6003C1D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-147464,-93564),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-147928,-93872),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-151288,-96000),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-144,-96),
  ABISELECT(-151432,-96096),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  ABISELECT(4128,2620),
  0,
  0,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-151600,-96204),
  0,
  ABISELECT(-4432,-2824),
  ABISELECT(-15744,-9984),
  ABISELECT(-168,-108),
  ABISELECT(-16216,-10292),
  ABISELECT(26288,16660),
  ABISELECT(-312,-204),
  ABISELECT(-151600,-96204),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6003C1D1Ev,_ZTv0_n40_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6003C1D0Ev,_ZTv0_n40_N7S6003C1D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v8Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v9Ev,
  ABISELECT(-151896,-96388),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-152360,-96696),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-8560,-5444),
  ABISELECT(-19872,-12604),
  ABISELECT(-4440,-2824),
  ABISELECT(-4296,-2728),
  ABISELECT(-20344,-12912),
  ABISELECT(-155728,-98824),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N7S6003C1D1Ev,_ZTvn2620_n40_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N7S6003C1D0Ev,_ZTvn2620_n40_N7S6003C1D0Ev),
  ABISELECT(-4760,-3020),
  ABISELECT(-4904,-3116),
  ABISELECT(-9024,-5736),
  ABISELECT(-20336,-12896),
  ABISELECT(-156192,-99116),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N7S6003C1D1Ev,_ZTvn2912_n40_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N7S6003C1D0Ev,_ZTvn2912_n40_N7S6003C1D0Ev),
  0,
  ABISELECT(-42032,-26644),
  ABISELECT(-26600,-16864),
  ABISELECT(-26456,-16768),
  ABISELECT(-42504,-26952),
  ABISELECT(-177888,-112864),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-178352,-113156),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN8S6003C193v11Ev,
  0,
  0,
  ABISELECT(-215088,-136520),
  0,
  ABISELECT(-67920,-43140),
  ABISELECT(-79232,-50300),
  ABISELECT(-63800,-40520),
  ABISELECT(-63656,-40424),
  ABISELECT(-79704,-50608),
  ABISELECT(-215088,-136520),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6003C1D1Ev,_ZTv0_n36_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6003C1D0Ev,_ZTv0_n36_N7S6003C1D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C223v12Ev,
  (VTBL_ENTRY)&_ZN8S6003C223v13Ev,
  ABISELECT(-64120,-40716),
  ABISELECT(-64264,-40812),
  ABISELECT(-68384,-43432),
  ABISELECT(-79696,-50592),
  ABISELECT(-215552,-136812),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n72_N7S6003C1D1Ev,_ZTvn292_n36_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n72_N7S6003C1D0Ev,_ZTvn292_n36_N7S6003C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S6003C1[];
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN8S6003C17D1Ev();
extern void _ZN8S6003C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C17__7S6003C1[] = {
  ABISELECT(66928,42468),
  ABISELECT(40640,25808),
  ABISELECT(24424,15516),
  ABISELECT(40472,25700),
  ABISELECT(40328,25604),
  ABISELECT(36208,22984),
  ABISELECT(25200,16008),
  ABISELECT(24896,15824),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6003C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C17D0Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN8S6003C15D1Ev();
extern void _ZN8S6003C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C158S6003C17__7S6003C1[] = {
  ABISELECT(24424,15516),
  ABISELECT(40472,25700),
  ABISELECT(40328,25604),
  ABISELECT(36208,22984),
  ABISELECT(25200,16008),
  ABISELECT(24896,15824),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C158S6003C17__7S6003C1[] = {
  0,
  ABISELECT(-24896,-15824),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn25200_N8S6003C15D1Ev,_ZThn16008_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn25200_N8S6003C15D0Ev,_ZThn16008_N8S6003C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C158S6003C17__7S6003C1[] = {
  ABISELECT(-25200,-16008),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(-776,-492),
  ABISELECT(-25200,-16008),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn36208_N8S6003C15D1Ev,_ZThn22984_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn36208_N8S6003C15D0Ev,_ZThn22984_N8S6003C15D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C158S6003C17__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-36208,-22984),
  0,
  ABISELECT(-36208,-22984),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__A1__8S6003C158S6003C17__7S6003C1[] = {
  ABISELECT(-36504,-23168),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C158S6003C17__7S6003C1[] = {
  ABISELECT(-36968,-23476),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C158S6003C17__7S6003C1[] = {
  0,
  ABISELECT(-40328,-25604),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C158S6003C17__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(-40472,-25700),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A2__8S6003C158S6003C17__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(-24424,-15516),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C158S6003C17__7S6003C1[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-25664,-16300),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev),
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C17__A2__7S6003C1[] = {
  ABISELECT(39992,25384),
  ABISELECT(39848,25288),
  ABISELECT(35728,22668),
  ABISELECT(24416,15508),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C17__A2__7S6003C1[] = {
  0,
  ABISELECT(-24416,-15508),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn35728_N8S6003C12D1Ev,_ZThn22668_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn35728_N8S6003C12D0Ev,_ZThn22668_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C17__A2__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-35728,-22668),
  0,
  ABISELECT(-35728,-22668),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C17__A2__7S6003C1[] = {
  ABISELECT(-36024,-22852),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C17__A2__7S6003C1[] = {
  ABISELECT(-36488,-23160),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C17__A2__7S6003C1[] = {
  0,
  ABISELECT(-39848,-25288),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C17__A2__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(-39992,-25384),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__8S6003C17__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(-24424,-15516),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C17__7S6003C1[] = {
  0,
  ABISELECT(-24896,-15824),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZThn25200_N8S6003C17D1Ev,_ZThn16008_N8S6003C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev)();
extern void ABISELECT(_ZThn25200_N8S6003C17D0Ev,_ZThn16008_N8S6003C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C17__7S6003C1[] = {
  ABISELECT(-25200,-16008),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(-776,-492),
  ABISELECT(-25200,-16008),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C17D1Ev,_ZTv0_n16_N8S6003C17D1Ev)();
extern void ABISELECT(_ZThn36208_N8S6003C17D1Ev,_ZThn22984_N8S6003C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C17D0Ev,_ZTv0_n16_N8S6003C17D0Ev)();
extern void ABISELECT(_ZThn36208_N8S6003C17D0Ev,_ZThn22984_N8S6003C17D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C17__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-36208,-22984),
  0,
  ABISELECT(-36208,-22984),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C17D1Ev,_ZTv0_n16_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C17D0Ev,_ZTv0_n16_N8S6003C17D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__A2__8S6003C17__7S6003C1[] = {
  ABISELECT(-36504,-23168),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C17__7S6003C1[] = {
  ABISELECT(-36968,-23476),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C17__7S6003C1[] = {
  0,
  ABISELECT(-40328,-25604),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C17__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(-40472,-25700),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
};
extern void ABISELECT(_ZTvn464_n80_N8S6003C17D1Ev,_ZTvn292_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C17D0Ev,_ZTvn292_n40_N8S6003C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C17__7S6003C1[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-25664,-16300),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C17D1Ev,_ZTvn292_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C17D0Ev,_ZTvn292_n40_N8S6003C17D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZThn40640_N8S6003C17D1Ev,_ZThn25808_N8S6003C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev)();
extern void ABISELECT(_ZThn40640_N8S6003C17D0Ev,_ZThn25808_N8S6003C17D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C62v8Ev();
extern void _ZN7S6003C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C6__8S6003C17__7S6003C1[] = {
  ABISELECT(4128,2620),
  0,
  0,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-40640,-25808),
  0,
  ABISELECT(-4432,-2824),
  ABISELECT(-15744,-9984),
  ABISELECT(-168,-108),
  ABISELECT(-16216,-10292),
  ABISELECT(26288,16660),
  ABISELECT(-312,-204),
  ABISELECT(-40640,-25808),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v8Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v9Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__A1__8S6003C17__7S6003C1[] = {
  0,
  ABISELECT(-42032,-26644),
  ABISELECT(-26600,-16864),
  ABISELECT(-26456,-16768),
  ABISELECT(-42504,-26952),
  ABISELECT(-66928,-42468),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C107S6003C6__A3__8S6003C17__7S6003C1[] = {
  ABISELECT(-40936,-25992),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C107S6003C6__A4__8S6003C17__7S6003C1[] = {
  ABISELECT(-41400,-26300),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTvn4128_n80_N8S6003C17D1Ev,_ZTvn2620_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZTvn4128_n80_N8S6003C17D0Ev,_ZTvn2620_n40_N8S6003C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C117S6003C6__A1__8S6003C17__7S6003C1[] = {
  ABISELECT(-8560,-5444),
  ABISELECT(-19872,-12604),
  ABISELECT(-4440,-2824),
  ABISELECT(-4296,-2728),
  ABISELECT(-20344,-12912),
  ABISELECT(-44768,-28428),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S6003C17D1Ev,_ZTvn2620_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S6003C17D0Ev,_ZTvn2620_n40_N8S6003C17D0Ev),
};
extern void ABISELECT(_ZTvn4592_n80_N8S6003C17D1Ev,_ZTvn2912_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZTvn4592_n80_N8S6003C17D0Ev,_ZTvn2912_n40_N8S6003C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C117S6003C6__A1__8S6003C17__7S6003C1[] = {
  ABISELECT(-4760,-3020),
  ABISELECT(-4904,-3116),
  ABISELECT(-9024,-5736),
  ABISELECT(-20336,-12896),
  ABISELECT(-45232,-28720),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S6003C17D1Ev,_ZTvn2912_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S6003C17D0Ev,_ZTvn2912_n40_N8S6003C17D0Ev),
};
extern void ABISELECT(_ZThn480_N8S6003C17D1Ev,_ZThn316_N8S6003C17D1Ev)();
extern void ABISELECT(_ZThn480_N8S6003C17D0Ev,_ZThn316_N8S6003C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__A2__8S6003C17__7S6003C1[] = {
  ABISELECT(39992,25384),
  ABISELECT(39848,25288),
  ABISELECT(35728,22668),
  ABISELECT(24416,15508),
  ABISELECT(-480,-316),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn480_N8S6003C17D1Ev,_ZThn316_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn480_N8S6003C17D0Ev,_ZThn316_N8S6003C17D0Ev),
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void _ZN8S6003C11D1Ev();
extern void _ZN8S6003C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C11__7S6003C1[] = {
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(-776,-492),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D0Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C11__7S6003C1[] = {
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(-776,-492),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C11__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(776,492),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C11__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C11__7S6003C1[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C11__7S6003C1[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__7S6003C1[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C11__7S6003C1[] = {
  0,
  ABISELECT(768,476),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C11__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__7S6003C1[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__7S6003C1[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C11__7S6003C1[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C11__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C11__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C11__7S6003C1[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C11__7S6003C1[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C11__7S6003C1[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C11__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A1__8S6003C11__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(776,492),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__A1__8S6003C11__7S6003C1[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C11__7S6003C1[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C1[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__7S6003C1[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C6D1Ev();
extern void _ZN7S6003C6D0Ev();
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C62v8Ev();
extern void _ZN7S6003C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C6__7S6003C1[] = {
  ABISELECT(-4432,-2824),
  ABISELECT(-15744,-9984),
  ABISELECT(-168,-108),
  ABISELECT(-16216,-10292),
  ABISELECT(26288,16660),
  ABISELECT(-312,-204),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&_ZN7S6003C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6003C6D0Ev,
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v8Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v9Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void _ZN8S6003C11D1Ev();
extern void _ZN8S6003C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(-8560,-5444),
  ABISELECT(-19872,-12604),
  ABISELECT(-4440,-2824),
  ABISELECT(-4296,-2728),
  ABISELECT(-20344,-12912),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D0Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C117S6003C6__A2__7S6003C1[] = {
  ABISELECT(-19872,-12604),
  ABISELECT(-4440,-2824),
  ABISELECT(-4296,-2728),
  ABISELECT(-20344,-12912),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C117S6003C6__A2__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(20344,12912),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C117S6003C6__A2__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(4296,2728),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C117S6003C6__A2__7S6003C1[] = {
  0,
  ABISELECT(4440,2824),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C117S6003C6__A2__7S6003C1[] = {
  0,
  ABISELECT(19872,12604),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(-4760,-3020),
  ABISELECT(-4904,-3116),
  ABISELECT(-9024,-5736),
  ABISELECT(-20336,-12896),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C117S6003C6__A1__7S6003C1[] = {
  0,
  ABISELECT(20336,12896),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(9024,5736),
  0,
  ABISELECT(9024,5736),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(8728,5552),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(8264,5244),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C117S6003C6__A1__7S6003C1[] = {
  0,
  ABISELECT(4904,3116),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(4760,3020),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev)();
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(8560,5444),
  0,
  ABISELECT(8560,5444),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(8264,5260),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(7800,4952),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C117S6003C6__A1__7S6003C1[] = {
  0,
  ABISELECT(4440,2824),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(4296,2728),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A1__8S6003C117S6003C6__A1__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(20344,12912),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__A1__8S6003C117S6003C6__A1__7S6003C1[] = {
  0,
  ABISELECT(19872,12604),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(-4760,-3020),
  ABISELECT(-4904,-3116),
  ABISELECT(-9024,-5736),
  ABISELECT(-20336,-12896),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C6__7S6003C1[] = {
  0,
  ABISELECT(312,204),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__7S6003C6__7S6003C1[] = {
  0,
  ABISELECT(-42032,-26644),
  ABISELECT(-26600,-16864),
  ABISELECT(-26456,-16768),
  ABISELECT(-42504,-26952),
  ABISELECT(-26288,-16660),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C6__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(16216,10292),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C6__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(168,108),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C6__7S6003C1[] = {
  0,
  ABISELECT(15744,9984),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZThn4128_N7S6003C6D1Ev,_ZThn2620_N7S6003C6D1Ev)();
extern void ABISELECT(_ZThn4128_N7S6003C6D0Ev,_ZThn2620_N7S6003C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C11__7S6003C6__7S6003C1[] = {
  ABISELECT(-8560,-5444),
  ABISELECT(-19872,-12604),
  ABISELECT(-4440,-2824),
  ABISELECT(-4296,-2728),
  ABISELECT(-20344,-12912),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N7S6003C6D1Ev,_ZThn2620_N7S6003C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N7S6003C6D0Ev,_ZThn2620_N7S6003C6D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N7S6003C6D1Ev,_ZTv0_n16_N7S6003C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S6003C6D0Ev,_ZTv0_n16_N7S6003C6D0Ev)();
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__A1__7S6003C6__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4432,2824),
  0,
  ABISELECT(4432,2824),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6003C6D1Ev,_ZTv0_n16_N7S6003C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6003C6D0Ev,_ZTv0_n16_N7S6003C6D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__A2__7S6003C6__7S6003C1[] = {
  ABISELECT(4136,2640),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__A3__7S6003C6__7S6003C1[] = {
  ABISELECT(3672,2332),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void ABISELECT(_ZThn4592_N7S6003C6D1Ev,_ZThn2912_N7S6003C6D1Ev)();
extern void ABISELECT(_ZThn4592_N7S6003C6D0Ev,_ZThn2912_N7S6003C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__7S6003C6__7S6003C1[] = {
  ABISELECT(-4760,-3020),
  ABISELECT(-4904,-3116),
  ABISELECT(-9024,-5736),
  ABISELECT(-20336,-12896),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N7S6003C6D1Ev,_ZThn2912_N7S6003C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N7S6003C6D0Ev,_ZThn2912_N7S6003C6D0Ev),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__A1__7S6003C1[] = {
  ABISELECT(-42032,-26644),
  ABISELECT(-26600,-16864),
  ABISELECT(-26456,-16768),
  ABISELECT(-42504,-26952),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C7__A1__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(42504,26952),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C7__A1__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(26456,16768),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C7__A1__7S6003C1[] = {
  0,
  ABISELECT(26600,16864),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C7__A1__7S6003C1[] = {
  0,
  ABISELECT(42032,26644),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C22D1Ev();
extern void _ZN8S6003C22D0Ev();
extern void _ZN8S6003C223v12Ev();
extern void _ZN8S6003C223v13Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C22__7S6003C1[] = {
  ABISELECT(-67920,-43140),
  ABISELECT(-79232,-50300),
  ABISELECT(-63800,-40520),
  ABISELECT(-63656,-40424),
  ABISELECT(-79704,-50608),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C22D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C22D0Ev,
  (VTBL_ENTRY)&_ZN8S6003C223v12Ev,
  (VTBL_ENTRY)&_ZN8S6003C223v13Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C22__A3__7S6003C1[] = {
  ABISELECT(-79232,-50300),
  ABISELECT(-63800,-40520),
  ABISELECT(-63656,-40424),
  ABISELECT(-79704,-50608),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C22__A3__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(79704,50608),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C22__A3__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(63656,40424),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C22__A3__7S6003C1[] = {
  0,
  ABISELECT(63800,40520),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C22__A3__7S6003C1[] = {
  0,
  ABISELECT(79232,50300),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C22__A3__7S6003C1[] = {
  ABISELECT(-64120,-40716),
  ABISELECT(-64264,-40812),
  ABISELECT(-68384,-43432),
  ABISELECT(-79696,-50592),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C22__A3__7S6003C1[] = {
  0,
  ABISELECT(79696,50592),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C22__A3__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(68384,43432),
  0,
  ABISELECT(68384,43432),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C22__A3__7S6003C1[] = {
  ABISELECT(68088,43248),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C22__A3__7S6003C1[] = {
  ABISELECT(67624,42940),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C22__A3__7S6003C1[] = {
  0,
  ABISELECT(64264,40812),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C22__A3__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(64120,40716),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__8S6003C22__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(79704,50608),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C22__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(63656,40424),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C22__7S6003C1[] = {
  0,
  ABISELECT(63800,40520),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C22__7S6003C1[] = {
  0,
  ABISELECT(79232,50300),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6003C22D1Ev,_ZThn292_N8S6003C22D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C22D0Ev,_ZThn292_N8S6003C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C22__7S6003C1[] = {
  ABISELECT(-64120,-40716),
  ABISELECT(-64264,-40812),
  ABISELECT(-68384,-43432),
  ABISELECT(-79696,-50592),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C22D1Ev,_ZThn292_N8S6003C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C22D0Ev,_ZThn292_N8S6003C22D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C22D1Ev,_ZTv0_n16_N8S6003C22D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6003C22D0Ev,_ZTv0_n16_N8S6003C22D0Ev)();
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C22__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(67920,43140),
  0,
  ABISELECT(67920,43140),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C22D1Ev,_ZTv0_n16_N8S6003C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C22D0Ev,_ZTv0_n16_N8S6003C22D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__A1__8S6003C22__7S6003C1[] = {
  ABISELECT(67624,42956),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__A2__8S6003C22__7S6003C1[] = {
  ABISELECT(67160,42648),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTT_ENTRY vtt_S6003C1[] = {
  {&(_ZTV7S6003C1[13]),  13,200},
  {&(_ZTV7S6003C1[32]),  32,200},
  {&(_ZTV7S6003C1[56]),  56,200},
  {&(_ZTV7S6003C1[62]),  62,200},
  {&(_ZTV7S6003C1[73]),  73,200},
  {&(_ZTV7S6003C1[94]),  94,200},
  {&(_ZTV7S6003C1[100]),  100,200},
  {&(_ZTV7S6003C1[105]),  105,200},
  {&(_ZTV7S6003C1[109]),  109,200},
  {&(_ZTV7S6003C1[113]),  113,200},
  {&(_ZTV7S6003C1[83]),  83,200},
  {&(_ZTV7S6003C1[131]),  131,200},
  {&(_ZTV7S6003C1[171]),  171,200},
  {&(_ZTV7S6003C1[139]),  139,200},
  {&(_ZTV7S6003C1[144]),  144,200},
  {&(_ZTV7S6003C1[152]),  152,200},
  {&(_ZTV7S6003C1[162]),  162,200},
  {&(_ZTV7S6003C1[43]),  43,200},
  {&(_ZTV7S6003C1[47]),  47,200},
  {&(_ZTV7S6003C1[175]),  175,200},
  {&(_ZTV7S6003C1[187]),  187,200},
  {&(_ZTV7S6003C1[198]),  198,200},
  {&(_tg__ZTV8S6003C17__7S6003C1[10]),  10,15},
  {&(_tg__ZTV8S6003C158S6003C17__7S6003C1[8]),  8,13},
  {&(_tg__ZTV7S6003C9__8S6003C158S6003C17__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C11__8S6003C158S6003C17__7S6003C1[10]),  10,14},
  {&(_tg__ZTV8S6003C10__8S6003C158S6003C17__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__A1__8S6003C158S6003C17__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C158S6003C17__7S6003C1[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C158S6003C17__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C158S6003C17__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A2__8S6003C158S6003C17__7S6003C1[5]),  5,8},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C158S6003C17__7S6003C1[6]),  6,8},
  {&(_tg__ZTV8S6003C128S6003C17__A2__7S6003C1[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C17__A2__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C17__A2__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C17__A2__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C17__A2__7S6003C1[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C17__A2__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C17__A2__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C4__8S6003C17__7S6003C1[5]),  5,8},
  {&(_tg__ZTV7S6003C9__8S6003C17__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C11__8S6003C17__7S6003C1[10]),  10,14},
  {&(_tg__ZTV8S6003C10__8S6003C17__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__A2__8S6003C17__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C17__7S6003C1[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C17__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C17__7S6003C1[3]),  3,3},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C17__7S6003C1[6]),  6,8},
  {&(_tg__ZTV7S6003C6__8S6003C17__7S6003C1[18]),  18,24},
  {&(_tg__ZTV7S6003C7__A1__8S6003C17__7S6003C1[7]),  7,8},
  {&(_tg__ZTV7S6003C48S6003C107S6003C6__A3__8S6003C17__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C107S6003C6__A4__8S6003C17__7S6003C1[2]),  2,3},
  {&(_tg__ZTV8S6003C117S6003C6__A1__8S6003C17__7S6003C1[7]),  7,11},
  {&(_tg__ZTV8S6003C128S6003C117S6003C6__A1__8S6003C17__7S6003C1[6]),  6,8},
  {&(_tg__ZTV8S6003C12__A2__8S6003C17__7S6003C1[6]),  6,8},
  {&(_tg__ZTV8S6003C11__7S6003C1[7]),  7,11},
  {&(_tg__ZTV7S6003C78S6003C11__7S6003C1[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C11__7S6003C1[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C11__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C11__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C11__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C128S6003C11__7S6003C1[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C11__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C11__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__7S6003C1[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C11__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C11__7S6003C1[3]),  3,3},
  {&(_tg__ZTV8S6003C10__8S6003C11__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C11__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C11__7S6003C1[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C11__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C11__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A1__8S6003C11__7S6003C1[5]),  5,8},
  {&(_tg__ZTV7S6003C9__A1__8S6003C11__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C11__7S6003C1[6]),  6,8},
  {&(_tg__ZTV7S6003C8__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C6__7S6003C1[8]),  8,14},
  {&(_tg__ZTV8S6003C117S6003C6__A1__7S6003C1[7]),  7,11},
  {&(_tg__ZTV7S6003C78S6003C117S6003C6__A2__7S6003C1[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C117S6003C6__A2__7S6003C1[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C117S6003C6__A2__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C117S6003C6__A2__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C117S6003C6__A2__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C128S6003C117S6003C6__A1__7S6003C1[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C117S6003C6__A1__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C117S6003C6__A1__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C117S6003C6__A1__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C117S6003C6__A1__7S6003C1[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C117S6003C6__A1__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C117S6003C6__A1__7S6003C1[3]),  3,3},
  {&(_tg__ZTV8S6003C10__8S6003C117S6003C6__A1__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C117S6003C6__A1__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C117S6003C6__A1__7S6003C1[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C117S6003C6__A1__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C117S6003C6__A1__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A1__8S6003C117S6003C6__A1__7S6003C1[5]),  5,8},
  {&(_tg__ZTV7S6003C9__A1__8S6003C117S6003C6__A1__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C117S6003C6__A1__7S6003C1[6]),  6,8},
  {&(_tg__ZTV7S6003C5__7S6003C6__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C7__7S6003C6__7S6003C1[7]),  7,8},
  {&(_tg__ZTV7S6003C4__7S6003C6__7S6003C1[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C6__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C9__7S6003C6__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C11__7S6003C6__7S6003C1[7]),  7,11},
  {&(_tg__ZTV8S6003C10__A1__7S6003C6__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__A2__7S6003C6__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__A3__7S6003C6__7S6003C1[2]),  2,3},
  {&(_tg__ZTV8S6003C128S6003C11__7S6003C6__7S6003C1[6]),  6,8},
  {&(_tg__ZTV7S6003C7__A1__7S6003C1[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C7__A1__7S6003C1[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C7__A1__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C7__A1__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C7__A1__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C22__7S6003C1[7]),  7,12},
  {&(_tg__ZTV7S6003C78S6003C22__A3__7S6003C1[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C22__A3__7S6003C1[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C22__A3__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C22__A3__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C22__A3__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C128S6003C22__A3__7S6003C1[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C22__A3__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C22__A3__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C22__A3__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C22__A3__7S6003C1[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C22__A3__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C22__A3__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C4__8S6003C22__7S6003C1[5]),  5,8},
  {&(_tg__ZTV7S6003C8__8S6003C22__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C22__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C9__8S6003C22__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C22__7S6003C1[6]),  6,8},
  {&(_tg__ZTV8S6003C10__8S6003C22__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__A1__8S6003C22__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__A2__8S6003C22__7S6003C1[2]),  2,3},
};
extern VTBL_ENTRY _ZTI7S6003C1[];
extern  VTBL_ENTRY _ZTV7S6003C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C1[];
static VTBL_ENTRY alt_thunk_names21[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C17D0Ev,_ZTv0_n16_N8S6003C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6003C17D0Ev,_ZThn22984_N8S6003C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C17D1Ev,_ZTv0_n16_N8S6003C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6003C17D1Ev,_ZThn22984_N8S6003C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40640_N8S6003C17D0Ev,_ZThn25808_N8S6003C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6003C17D0Ev,_ZThn16008_N8S6003C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40640_N8S6003C17D1Ev,_ZThn25808_N8S6003C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6003C17D1Ev,_ZThn16008_N8S6003C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35728_N8S6003C12D0Ev,_ZThn22668_N8S6003C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35728_N8S6003C12D1Ev,_ZThn22668_N8S6003C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6003C15D0Ev,_ZThn22984_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6003C15D1Ev,_ZThn22984_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6003C15D0Ev,_ZThn16008_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6003C15D1Ev,_ZThn16008_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6003C1D0Ev,_ZTv0_n36_N7S6003C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn215088_N7S6003C1D0Ev,_ZThn136520_N7S6003C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6003C1D1Ev,_ZTv0_n36_N7S6003C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn215088_N7S6003C1D1Ev,_ZThn136520_N7S6003C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6003C1D0Ev,_ZTv0_n16_N7S6003C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn147168_N7S6003C1D0Ev,_ZThn93380_N7S6003C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6003C1D1Ev,_ZTv0_n16_N7S6003C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn147168_N7S6003C1D1Ev,_ZThn93380_N7S6003C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6003C1D0Ev,_ZTv0_n40_N7S6003C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn151600_N7S6003C1D0Ev,_ZThn96204_N7S6003C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136160_N7S6003C1D0Ev,_ZThn86404_N7S6003C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6003C1D1Ev,_ZTv0_n40_N7S6003C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn151600_N7S6003C1D1Ev,_ZThn96204_N7S6003C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136160_N7S6003C1D1Ev,_ZThn86404_N7S6003C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N7S6003C1D0Ev,_ZTv0_n56_N7S6003C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn110960_N7S6003C1D0Ev,_ZThn70396_N7S6003C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N7S6003C1D1Ev,_ZTv0_n56_N7S6003C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn110960_N7S6003C1D1Ev,_ZThn70396_N7S6003C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C1 = {  "S6003C1", // class name
  bases_S6003C1, 36,
  &(vtc_S6003C1[0]), // expected_vtbl_contents
  &(vtt_S6003C1[0]), // expected_vtt_contents
  ABISELECT(222464,141200), // object size
  NSPAIRA(_ZTI7S6003C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6003C1),200, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6003C1),137, //virtual table table var
  35, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names21,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S205C6  {
  int s205c6f0;
  __tsi64 s205c6f1;
  void *s205c6f2[4];
  int s205c6f3[2];
  void *s205c6f4;
  ::S3423C4_nt s205c6f5;
  void *s205c6f6[2];
  virtual  ~S205C6(); // _ZN6S205C6D1Ev
  virtual void  v4(); // _ZN6S205C62v4Ev
  virtual void  v5(); // _ZN6S205C62v5Ev
  virtual void  v6(); // _ZN6S205C62v6Ev
  virtual void  v7(); // _ZN6S205C62v7Ev
  virtual void  v8(); // _ZN6S205C62v8Ev
  virtual void  v9(); // _ZN6S205C62v9Ev
  virtual void  v10(); // _ZN6S205C63v10Ev
  virtual void  v11(); // _ZN6S205C63v11Ev
  virtual void  v12(); // _ZN6S205C63v12Ev
  virtual void  v13(); // _ZN6S205C63v13Ev
  virtual void  v14(); // _ZN6S205C63v14Ev
  virtual void  v15(); // _ZN6S205C63v15Ev
  virtual void  v16(); // _ZN6S205C63v16Ev
  virtual void  v17(); // _ZN6S205C63v17Ev
  virtual void  v18(); // _ZN6S205C63v18Ev
  virtual void  v19(); // _ZN6S205C63v19Ev
  virtual void  v20(); // _ZN6S205C63v20Ev
  virtual void  v21(); // _ZN6S205C63v21Ev
  virtual void  v22(); // _ZN6S205C63v22Ev
  virtual void  v23(); // _ZN6S205C63v23Ev
  virtual void  v24(); // _ZN6S205C63v24Ev
  virtual void  v25(); // _ZN6S205C63v25Ev
  virtual void  v26(); // _ZN6S205C63v26Ev
  virtual void  v27(); // _ZN6S205C63v27Ev
  virtual void  v28(); // _ZN6S205C63v28Ev
  virtual void  v29(); // _ZN6S205C63v29Ev
  virtual void  v30(); // _ZN6S205C63v30Ev
  virtual void  v31(); // _ZN6S205C63v31Ev
  virtual void  v32(); // _ZN6S205C63v32Ev
  virtual void  v33(); // _ZN6S205C63v33Ev
  virtual void  v34(); // _ZN6S205C63v34Ev
  virtual void  v35(); // _ZN6S205C63v35Ev
  virtual void  v36(); // _ZN6S205C63v36Ev
  virtual void  v37(); // _ZN6S205C63v37Ev
  virtual void  v38(); // _ZN6S205C63v38Ev
  virtual void  v39(); // _ZN6S205C63v39Ev
  virtual void  v40(); // _ZN6S205C63v40Ev
  virtual void  v41(); // _ZN6S205C63v41Ev
  virtual void  v42(); // _ZN6S205C63v42Ev
  virtual void  v43(); // _ZN6S205C63v43Ev
  virtual void  v44(); // _ZN6S205C63v44Ev
  virtual void  v45(); // _ZN6S205C63v45Ev
  virtual void  v46(); // _ZN6S205C63v46Ev
  virtual void  v47(); // _ZN6S205C63v47Ev
  virtual void  v48(); // _ZN6S205C63v48Ev
  virtual void  v49(); // _ZN6S205C63v49Ev
  virtual void  v50(); // _ZN6S205C63v50Ev
  virtual void  v51(); // _ZN6S205C63v51Ev
  virtual void  v52(); // _ZN6S205C63v52Ev
  virtual void  v53(); // _ZN6S205C63v53Ev
  virtual void  v54(); // _ZN6S205C63v54Ev
  virtual void  v55(); // _ZN6S205C63v55Ev
  virtual void  v56(); // _ZN6S205C63v56Ev
  virtual void  v57(); // _ZN6S205C63v57Ev
  virtual void  v58(); // _ZN6S205C63v58Ev
  virtual void  v59(); // _ZN6S205C63v59Ev
  virtual void  v60(); // _ZN6S205C63v60Ev
  virtual void  v61(); // _ZN6S205C63v61Ev
  virtual void  v62(); // _ZN6S205C63v62Ev
  virtual void  v63(); // _ZN6S205C63v63Ev
  virtual void  v64(); // _ZN6S205C63v64Ev
  virtual void  v65(); // _ZN6S205C63v65Ev
  virtual void  v66(); // _ZN6S205C63v66Ev
  virtual void  v67(); // _ZN6S205C63v67Ev
  S205C6(); // tgen
};
//SIG(-1 S205C6) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S205C6 ::~S205C6(){ note_dtor("S205C6", this);}
void  S205C6 ::v4(){vfunc_called(this, "_ZN6S205C62v4Ev");}
void  S205C6 ::v5(){vfunc_called(this, "_ZN6S205C62v5Ev");}
void  S205C6 ::v6(){vfunc_called(this, "_ZN6S205C62v6Ev");}
void  S205C6 ::v7(){vfunc_called(this, "_ZN6S205C62v7Ev");}
void  S205C6 ::v8(){vfunc_called(this, "_ZN6S205C62v8Ev");}
void  S205C6 ::v9(){vfunc_called(this, "_ZN6S205C62v9Ev");}
void  S205C6 ::v10(){vfunc_called(this, "_ZN6S205C63v10Ev");}
void  S205C6 ::v11(){vfunc_called(this, "_ZN6S205C63v11Ev");}
void  S205C6 ::v12(){vfunc_called(this, "_ZN6S205C63v12Ev");}
void  S205C6 ::v13(){vfunc_called(this, "_ZN6S205C63v13Ev");}
void  S205C6 ::v14(){vfunc_called(this, "_ZN6S205C63v14Ev");}
void  S205C6 ::v15(){vfunc_called(this, "_ZN6S205C63v15Ev");}
void  S205C6 ::v16(){vfunc_called(this, "_ZN6S205C63v16Ev");}
void  S205C6 ::v17(){vfunc_called(this, "_ZN6S205C63v17Ev");}
void  S205C6 ::v18(){vfunc_called(this, "_ZN6S205C63v18Ev");}
void  S205C6 ::v19(){vfunc_called(this, "_ZN6S205C63v19Ev");}
void  S205C6 ::v20(){vfunc_called(this, "_ZN6S205C63v20Ev");}
void  S205C6 ::v21(){vfunc_called(this, "_ZN6S205C63v21Ev");}
void  S205C6 ::v22(){vfunc_called(this, "_ZN6S205C63v22Ev");}
void  S205C6 ::v23(){vfunc_called(this, "_ZN6S205C63v23Ev");}
void  S205C6 ::v24(){vfunc_called(this, "_ZN6S205C63v24Ev");}
void  S205C6 ::v25(){vfunc_called(this, "_ZN6S205C63v25Ev");}
void  S205C6 ::v26(){vfunc_called(this, "_ZN6S205C63v26Ev");}
void  S205C6 ::v27(){vfunc_called(this, "_ZN6S205C63v27Ev");}
void  S205C6 ::v28(){vfunc_called(this, "_ZN6S205C63v28Ev");}
void  S205C6 ::v29(){vfunc_called(this, "_ZN6S205C63v29Ev");}
void  S205C6 ::v30(){vfunc_called(this, "_ZN6S205C63v30Ev");}
void  S205C6 ::v31(){vfunc_called(this, "_ZN6S205C63v31Ev");}
void  S205C6 ::v32(){vfunc_called(this, "_ZN6S205C63v32Ev");}
void  S205C6 ::v33(){vfunc_called(this, "_ZN6S205C63v33Ev");}
void  S205C6 ::v34(){vfunc_called(this, "_ZN6S205C63v34Ev");}
void  S205C6 ::v35(){vfunc_called(this, "_ZN6S205C63v35Ev");}
void  S205C6 ::v36(){vfunc_called(this, "_ZN6S205C63v36Ev");}
void  S205C6 ::v37(){vfunc_called(this, "_ZN6S205C63v37Ev");}
void  S205C6 ::v38(){vfunc_called(this, "_ZN6S205C63v38Ev");}
void  S205C6 ::v39(){vfunc_called(this, "_ZN6S205C63v39Ev");}
void  S205C6 ::v40(){vfunc_called(this, "_ZN6S205C63v40Ev");}
void  S205C6 ::v41(){vfunc_called(this, "_ZN6S205C63v41Ev");}
void  S205C6 ::v42(){vfunc_called(this, "_ZN6S205C63v42Ev");}
void  S205C6 ::v43(){vfunc_called(this, "_ZN6S205C63v43Ev");}
void  S205C6 ::v44(){vfunc_called(this, "_ZN6S205C63v44Ev");}
void  S205C6 ::v45(){vfunc_called(this, "_ZN6S205C63v45Ev");}
void  S205C6 ::v46(){vfunc_called(this, "_ZN6S205C63v46Ev");}
void  S205C6 ::v47(){vfunc_called(this, "_ZN6S205C63v47Ev");}
void  S205C6 ::v48(){vfunc_called(this, "_ZN6S205C63v48Ev");}
void  S205C6 ::v49(){vfunc_called(this, "_ZN6S205C63v49Ev");}
void  S205C6 ::v50(){vfunc_called(this, "_ZN6S205C63v50Ev");}
void  S205C6 ::v51(){vfunc_called(this, "_ZN6S205C63v51Ev");}
void  S205C6 ::v52(){vfunc_called(this, "_ZN6S205C63v52Ev");}
void  S205C6 ::v53(){vfunc_called(this, "_ZN6S205C63v53Ev");}
void  S205C6 ::v54(){vfunc_called(this, "_ZN6S205C63v54Ev");}
void  S205C6 ::v55(){vfunc_called(this, "_ZN6S205C63v55Ev");}
void  S205C6 ::v56(){vfunc_called(this, "_ZN6S205C63v56Ev");}
void  S205C6 ::v57(){vfunc_called(this, "_ZN6S205C63v57Ev");}
void  S205C6 ::v58(){vfunc_called(this, "_ZN6S205C63v58Ev");}
void  S205C6 ::v59(){vfunc_called(this, "_ZN6S205C63v59Ev");}
void  S205C6 ::v60(){vfunc_called(this, "_ZN6S205C63v60Ev");}
void  S205C6 ::v61(){vfunc_called(this, "_ZN6S205C63v61Ev");}
void  S205C6 ::v62(){vfunc_called(this, "_ZN6S205C63v62Ev");}
void  S205C6 ::v63(){vfunc_called(this, "_ZN6S205C63v63Ev");}
void  S205C6 ::v64(){vfunc_called(this, "_ZN6S205C63v64Ev");}
void  S205C6 ::v65(){vfunc_called(this, "_ZN6S205C63v65Ev");}
void  S205C6 ::v66(){vfunc_called(this, "_ZN6S205C63v66Ev");}
void  S205C6 ::v67(){vfunc_called(this, "_ZN6S205C63v67Ev");}
S205C6 ::S205C6(){ note_ctor("S205C6", this);} // tgen

static void Test_S205C6()
{
  extern Class_Descriptor cd_S205C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S205C6, buf);
    S205C6 *dp, &lv = *(dp=new (buf) S205C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S205C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S205C6)");
    check_field_offset(lv, s205c6f0, ABISELECT(8,4), "S205C6.s205c6f0");
    check_field_offset(lv, s205c6f1, ABISELECT(16,8), "S205C6.s205c6f1");
    check_field_offset(lv, s205c6f2, ABISELECT(24,16), "S205C6.s205c6f2");
    check_field_offset(lv, s205c6f3, ABISELECT(56,32), "S205C6.s205c6f3");
    check_field_offset(lv, s205c6f4, ABISELECT(64,40), "S205C6.s205c6f4");
    check_field_offset(lv, s205c6f5, ABISELECT(72,44), "S205C6.s205c6f5");
    check_field_offset(lv, s205c6f6, ABISELECT(80,52), "S205C6.s205c6f6");
    test_class_info(&lv, &cd_S205C6);
    dp->~S205C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS205C6(Test_S205C6, "S205C6", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S205C6C1Ev();
extern void _ZN6S205C6D1Ev();
Name_Map name_map_S205C6[] = {
  NSPAIR(_ZN6S205C6C1Ev),
  NSPAIR(_ZN6S205C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S205C6[];
extern void _ZN6S205C6D1Ev();
extern void _ZN6S205C6D0Ev();
extern void _ZN6S205C62v4Ev();
extern void _ZN6S205C62v5Ev();
extern void _ZN6S205C62v6Ev();
extern void _ZN6S205C62v7Ev();
extern void _ZN6S205C62v8Ev();
extern void _ZN6S205C62v9Ev();
extern void _ZN6S205C63v10Ev();
extern void _ZN6S205C63v11Ev();
extern void _ZN6S205C63v12Ev();
extern void _ZN6S205C63v13Ev();
extern void _ZN6S205C63v14Ev();
extern void _ZN6S205C63v15Ev();
extern void _ZN6S205C63v16Ev();
extern void _ZN6S205C63v17Ev();
extern void _ZN6S205C63v18Ev();
extern void _ZN6S205C63v19Ev();
extern void _ZN6S205C63v20Ev();
extern void _ZN6S205C63v21Ev();
extern void _ZN6S205C63v22Ev();
extern void _ZN6S205C63v23Ev();
extern void _ZN6S205C63v24Ev();
extern void _ZN6S205C63v25Ev();
extern void _ZN6S205C63v26Ev();
extern void _ZN6S205C63v27Ev();
extern void _ZN6S205C63v28Ev();
extern void _ZN6S205C63v29Ev();
extern void _ZN6S205C63v30Ev();
extern void _ZN6S205C63v31Ev();
extern void _ZN6S205C63v32Ev();
extern void _ZN6S205C63v33Ev();
extern void _ZN6S205C63v34Ev();
extern void _ZN6S205C63v35Ev();
extern void _ZN6S205C63v36Ev();
extern void _ZN6S205C63v37Ev();
extern void _ZN6S205C63v38Ev();
extern void _ZN6S205C63v39Ev();
extern void _ZN6S205C63v40Ev();
extern void _ZN6S205C63v41Ev();
extern void _ZN6S205C63v42Ev();
extern void _ZN6S205C63v43Ev();
extern void _ZN6S205C63v44Ev();
extern void _ZN6S205C63v45Ev();
extern void _ZN6S205C63v46Ev();
extern void _ZN6S205C63v47Ev();
extern void _ZN6S205C63v48Ev();
extern void _ZN6S205C63v49Ev();
extern void _ZN6S205C63v50Ev();
extern void _ZN6S205C63v51Ev();
extern void _ZN6S205C63v52Ev();
extern void _ZN6S205C63v53Ev();
extern void _ZN6S205C63v54Ev();
extern void _ZN6S205C63v55Ev();
extern void _ZN6S205C63v56Ev();
extern void _ZN6S205C63v57Ev();
extern void _ZN6S205C63v58Ev();
extern void _ZN6S205C63v59Ev();
extern void _ZN6S205C63v60Ev();
extern void _ZN6S205C63v61Ev();
extern void _ZN6S205C63v62Ev();
extern void _ZN6S205C63v63Ev();
extern void _ZN6S205C63v64Ev();
extern void _ZN6S205C63v65Ev();
extern void _ZN6S205C63v66Ev();
extern void _ZN6S205C63v67Ev();
static  VTBL_ENTRY vtc_S205C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S205C6[0]),
  (VTBL_ENTRY)&_ZN6S205C6D1Ev,
  (VTBL_ENTRY)&_ZN6S205C6D0Ev,
  (VTBL_ENTRY)&_ZN6S205C62v4Ev,
  (VTBL_ENTRY)&_ZN6S205C62v5Ev,
  (VTBL_ENTRY)&_ZN6S205C62v6Ev,
  (VTBL_ENTRY)&_ZN6S205C62v7Ev,
  (VTBL_ENTRY)&_ZN6S205C62v8Ev,
  (VTBL_ENTRY)&_ZN6S205C62v9Ev,
  (VTBL_ENTRY)&_ZN6S205C63v10Ev,
  (VTBL_ENTRY)&_ZN6S205C63v11Ev,
  (VTBL_ENTRY)&_ZN6S205C63v12Ev,
  (VTBL_ENTRY)&_ZN6S205C63v13Ev,
  (VTBL_ENTRY)&_ZN6S205C63v14Ev,
  (VTBL_ENTRY)&_ZN6S205C63v15Ev,
  (VTBL_ENTRY)&_ZN6S205C63v16Ev,
  (VTBL_ENTRY)&_ZN6S205C63v17Ev,
  (VTBL_ENTRY)&_ZN6S205C63v18Ev,
  (VTBL_ENTRY)&_ZN6S205C63v19Ev,
  (VTBL_ENTRY)&_ZN6S205C63v20Ev,
  (VTBL_ENTRY)&_ZN6S205C63v21Ev,
  (VTBL_ENTRY)&_ZN6S205C63v22Ev,
  (VTBL_ENTRY)&_ZN6S205C63v23Ev,
  (VTBL_ENTRY)&_ZN6S205C63v24Ev,
  (VTBL_ENTRY)&_ZN6S205C63v25Ev,
  (VTBL_ENTRY)&_ZN6S205C63v26Ev,
  (VTBL_ENTRY)&_ZN6S205C63v27Ev,
  (VTBL_ENTRY)&_ZN6S205C63v28Ev,
  (VTBL_ENTRY)&_ZN6S205C63v29Ev,
  (VTBL_ENTRY)&_ZN6S205C63v30Ev,
  (VTBL_ENTRY)&_ZN6S205C63v31Ev,
  (VTBL_ENTRY)&_ZN6S205C63v32Ev,
  (VTBL_ENTRY)&_ZN6S205C63v33Ev,
  (VTBL_ENTRY)&_ZN6S205C63v34Ev,
  (VTBL_ENTRY)&_ZN6S205C63v35Ev,
  (VTBL_ENTRY)&_ZN6S205C63v36Ev,
  (VTBL_ENTRY)&_ZN6S205C63v37Ev,
  (VTBL_ENTRY)&_ZN6S205C63v38Ev,
  (VTBL_ENTRY)&_ZN6S205C63v39Ev,
  (VTBL_ENTRY)&_ZN6S205C63v40Ev,
  (VTBL_ENTRY)&_ZN6S205C63v41Ev,
  (VTBL_ENTRY)&_ZN6S205C63v42Ev,
  (VTBL_ENTRY)&_ZN6S205C63v43Ev,
  (VTBL_ENTRY)&_ZN6S205C63v44Ev,
  (VTBL_ENTRY)&_ZN6S205C63v45Ev,
  (VTBL_ENTRY)&_ZN6S205C63v46Ev,
  (VTBL_ENTRY)&_ZN6S205C63v47Ev,
  (VTBL_ENTRY)&_ZN6S205C63v48Ev,
  (VTBL_ENTRY)&_ZN6S205C63v49Ev,
  (VTBL_ENTRY)&_ZN6S205C63v50Ev,
  (VTBL_ENTRY)&_ZN6S205C63v51Ev,
  (VTBL_ENTRY)&_ZN6S205C63v52Ev,
  (VTBL_ENTRY)&_ZN6S205C63v53Ev,
  (VTBL_ENTRY)&_ZN6S205C63v54Ev,
  (VTBL_ENTRY)&_ZN6S205C63v55Ev,
  (VTBL_ENTRY)&_ZN6S205C63v56Ev,
  (VTBL_ENTRY)&_ZN6S205C63v57Ev,
  (VTBL_ENTRY)&_ZN6S205C63v58Ev,
  (VTBL_ENTRY)&_ZN6S205C63v59Ev,
  (VTBL_ENTRY)&_ZN6S205C63v60Ev,
  (VTBL_ENTRY)&_ZN6S205C63v61Ev,
  (VTBL_ENTRY)&_ZN6S205C63v62Ev,
  (VTBL_ENTRY)&_ZN6S205C63v63Ev,
  (VTBL_ENTRY)&_ZN6S205C63v64Ev,
  (VTBL_ENTRY)&_ZN6S205C63v65Ev,
  (VTBL_ENTRY)&_ZN6S205C63v66Ev,
  (VTBL_ENTRY)&_ZN6S205C63v67Ev,
};
extern VTBL_ENTRY _ZTI6S205C6[];
extern  VTBL_ENTRY _ZTV6S205C6[];
Class_Descriptor cd_S205C6 = {  "S205C6", // class name
  0,0,//no base classes
  &(vtc_S205C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S205C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S205C6),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S205C10  : S3423C7_nt {
};
//SIG(-1 S205C10) C1{ BC2{ m Fp Fi[2]}}



static void Test_S205C10()
{
  extern Class_Descriptor cd_S205C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S205C10, buf);
    S205C10 &lv = *(new (buf) S205C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S205C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S205C10)");
    check_base_class_offset(lv, (S3423C7_nt*), 0, "S205C10");
    test_class_info(&lv, &cd_S205C10);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS205C10(Test_S205C10, "S205C10", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
static Base_Class bases_S205C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S205C10 = {  "S205C10", // class name
  bases_S205C10, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S205C9  : S205C10 {
};
//SIG(-1 S205C9) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S205C9()
{
  extern Class_Descriptor cd_S205C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S205C9, buf);
    S205C9 &lv = *(new (buf) S205C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S205C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S205C9)");
    check_base_class_offset(lv, (S3423C7_nt*)(S205C10*), 0, "S205C9");
    check_base_class_offset(lv, (S205C10*), 0, "S205C9");
    test_class_info(&lv, &cd_S205C9);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS205C9(Test_S205C9, "S205C9", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
extern Class_Descriptor cd_S205C10;
static Base_Class bases_S205C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S205C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S205C9 = {  "S205C9", // class name
  bases_S205C9, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S205C8_nt  : S205C9 {
};
//SIG(-1 S205C8_nt) C1{ BC2{ BC3{ BC4{ m Fp Fi[2]}}}}



//skip512 S205C8_nt

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
extern Class_Descriptor cd_S205C10;
extern Class_Descriptor cd_S205C9;
static Base_Class bases_S205C8_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S205C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S205C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S205C5_nt  : S205C6 {
  int s205c5f0[2];
  void *s205c5f1;
  int s205c5f2[2];
  ::S205C8_nt s205c5f3;
  ::S205C8_nt s205c5f4;
  ::S4228C37 s205c5f5;
  ::S205C8_nt s205c5f6;
  unsigned int s205c5f7:1;
  unsigned int s205c5f8:1;
  unsigned int s205c5f9:1;
  unsigned int s205c5f10:1;
  unsigned int s205c5f11:1;
  int s205c5f12[2];
  virtual  ~S205C5_nt(); // _ZN9S205C5_ntD1Ev
  virtual void  v68(); // _ZN9S205C5_nt3v68Ev
  virtual void  v69(); // _ZN9S205C5_nt3v69Ev
  virtual void  v70(); // _ZN9S205C5_nt3v70Ev
  virtual void  v71(); // _ZN9S205C5_nt3v71Ev
  virtual void  v72(); // _ZN9S205C5_nt3v72Ev
  virtual void  v73(); // _ZN9S205C5_nt3v73Ev
  virtual void  v74(); // _ZN9S205C5_nt3v74Ev
  virtual void  v75(); // _ZN9S205C5_nt3v75Ev
  virtual void  v76(); // _ZN9S205C5_nt3v76Ev
  virtual void  v77(); // _ZN9S205C5_nt3v77Ev
  virtual void  v78(); // _ZN9S205C5_nt3v78Ev
  virtual void  v79(); // _ZN9S205C5_nt3v79Ev
  virtual void  v80(); // _ZN9S205C5_nt3v80Ev
  virtual void  v81(); // _ZN9S205C5_nt3v81Ev
  virtual void  v82(); // _ZN9S205C5_nt3v82Ev
  virtual void  v83(); // _ZN9S205C5_nt3v83Ev
  virtual void  v84(); // _ZN9S205C5_nt3v84Ev
  virtual void  v85(); // _ZN9S205C5_nt3v85Ev
  virtual void  v86(); // _ZN9S205C5_nt3v86Ev
  virtual void  v87(); // _ZN9S205C5_nt3v87Ev
  virtual void  v88(); // _ZN9S205C5_nt3v88Ev
  virtual void  v89(); // _ZN9S205C5_nt3v89Ev
  S205C5_nt(); // tgen
};
//SIG(-1 S205C5_nt) C1{ BC2{ vd v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fi[2] Fp Fi[2] FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} FC4 FC8{ m} FC4 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]}


 S205C5_nt ::~S205C5_nt(){ note_dtor("S205C5_nt", this);}
void  S205C5_nt ::v68(){vfunc_called(this, "_ZN9S205C5_nt3v68Ev");}
void  S205C5_nt ::v69(){vfunc_called(this, "_ZN9S205C5_nt3v69Ev");}
void  S205C5_nt ::v70(){vfunc_called(this, "_ZN9S205C5_nt3v70Ev");}
void  S205C5_nt ::v71(){vfunc_called(this, "_ZN9S205C5_nt3v71Ev");}
void  S205C5_nt ::v72(){vfunc_called(this, "_ZN9S205C5_nt3v72Ev");}
void  S205C5_nt ::v73(){vfunc_called(this, "_ZN9S205C5_nt3v73Ev");}
void  S205C5_nt ::v74(){vfunc_called(this, "_ZN9S205C5_nt3v74Ev");}
void  S205C5_nt ::v75(){vfunc_called(this, "_ZN9S205C5_nt3v75Ev");}
void  S205C5_nt ::v76(){vfunc_called(this, "_ZN9S205C5_nt3v76Ev");}
void  S205C5_nt ::v77(){vfunc_called(this, "_ZN9S205C5_nt3v77Ev");}
void  S205C5_nt ::v78(){vfunc_called(this, "_ZN9S205C5_nt3v78Ev");}
void  S205C5_nt ::v79(){vfunc_called(this, "_ZN9S205C5_nt3v79Ev");}
void  S205C5_nt ::v80(){vfunc_called(this, "_ZN9S205C5_nt3v80Ev");}
void  S205C5_nt ::v81(){vfunc_called(this, "_ZN9S205C5_nt3v81Ev");}
void  S205C5_nt ::v82(){vfunc_called(this, "_ZN9S205C5_nt3v82Ev");}
void  S205C5_nt ::v83(){vfunc_called(this, "_ZN9S205C5_nt3v83Ev");}
void  S205C5_nt ::v84(){vfunc_called(this, "_ZN9S205C5_nt3v84Ev");}
void  S205C5_nt ::v85(){vfunc_called(this, "_ZN9S205C5_nt3v85Ev");}
void  S205C5_nt ::v86(){vfunc_called(this, "_ZN9S205C5_nt3v86Ev");}
void  S205C5_nt ::v87(){vfunc_called(this, "_ZN9S205C5_nt3v87Ev");}
void  S205C5_nt ::v88(){vfunc_called(this, "_ZN9S205C5_nt3v88Ev");}
void  S205C5_nt ::v89(){vfunc_called(this, "_ZN9S205C5_nt3v89Ev");}
S205C5_nt ::S205C5_nt(){ note_ctor("S205C5_nt", this);} // tgen

//skip512 S205C5_nt

#else // __cplusplus

extern void _ZN9S205C5_ntC1Ev();
extern void _ZN9S205C5_ntD1Ev();
Name_Map name_map_S205C5_nt[] = {
  NSPAIR(_ZN9S205C5_ntC1Ev),
  NSPAIR(_ZN9S205C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S205C6;
extern VTBL_ENTRY _ZTI6S205C6[];
extern  VTBL_ENTRY _ZTV6S205C6[];
static Base_Class bases_S205C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S205C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S205C5_nt[];
extern void _ZN9S205C5_ntD1Ev();
extern void _ZN9S205C5_ntD0Ev();
extern void _ZN6S205C62v4Ev();
extern void _ZN6S205C62v5Ev();
extern void _ZN6S205C62v6Ev();
extern void _ZN6S205C62v7Ev();
extern void _ZN6S205C62v8Ev();
extern void _ZN6S205C62v9Ev();
extern void _ZN6S205C63v10Ev();
extern void _ZN6S205C63v11Ev();
extern void _ZN6S205C63v12Ev();
extern void _ZN6S205C63v13Ev();
extern void _ZN6S205C63v14Ev();
extern void _ZN6S205C63v15Ev();
extern void _ZN6S205C63v16Ev();
extern void _ZN6S205C63v17Ev();
extern void _ZN6S205C63v18Ev();
extern void _ZN6S205C63v19Ev();
extern void _ZN6S205C63v20Ev();
extern void _ZN6S205C63v21Ev();
extern void _ZN6S205C63v22Ev();
extern void _ZN6S205C63v23Ev();
extern void _ZN6S205C63v24Ev();
extern void _ZN6S205C63v25Ev();
extern void _ZN6S205C63v26Ev();
extern void _ZN6S205C63v27Ev();
extern void _ZN6S205C63v28Ev();
extern void _ZN6S205C63v29Ev();
extern void _ZN6S205C63v30Ev();
extern void _ZN6S205C63v31Ev();
extern void _ZN6S205C63v32Ev();
extern void _ZN6S205C63v33Ev();
extern void _ZN6S205C63v34Ev();
extern void _ZN6S205C63v35Ev();
extern void _ZN6S205C63v36Ev();
extern void _ZN6S205C63v37Ev();
extern void _ZN6S205C63v38Ev();
extern void _ZN6S205C63v39Ev();
extern void _ZN6S205C63v40Ev();
extern void _ZN6S205C63v41Ev();
extern void _ZN6S205C63v42Ev();
extern void _ZN6S205C63v43Ev();
extern void _ZN6S205C63v44Ev();
extern void _ZN6S205C63v45Ev();
extern void _ZN6S205C63v46Ev();
extern void _ZN6S205C63v47Ev();
extern void _ZN6S205C63v48Ev();
extern void _ZN6S205C63v49Ev();
extern void _ZN6S205C63v50Ev();
extern void _ZN6S205C63v51Ev();
extern void _ZN6S205C63v52Ev();
extern void _ZN6S205C63v53Ev();
extern void _ZN6S205C63v54Ev();
extern void _ZN6S205C63v55Ev();
extern void _ZN6S205C63v56Ev();
extern void _ZN6S205C63v57Ev();
extern void _ZN6S205C63v58Ev();
extern void _ZN6S205C63v59Ev();
extern void _ZN6S205C63v60Ev();
extern void _ZN6S205C63v61Ev();
extern void _ZN6S205C63v62Ev();
extern void _ZN6S205C63v63Ev();
extern void _ZN6S205C63v64Ev();
extern void _ZN6S205C63v65Ev();
extern void _ZN6S205C63v66Ev();
extern void _ZN6S205C63v67Ev();
extern void _ZN9S205C5_nt3v68Ev();
extern void _ZN9S205C5_nt3v69Ev();
extern void _ZN9S205C5_nt3v70Ev();
extern void _ZN9S205C5_nt3v71Ev();
extern void _ZN9S205C5_nt3v72Ev();
extern void _ZN9S205C5_nt3v73Ev();
extern void _ZN9S205C5_nt3v74Ev();
extern void _ZN9S205C5_nt3v75Ev();
extern void _ZN9S205C5_nt3v76Ev();
extern void _ZN9S205C5_nt3v77Ev();
extern void _ZN9S205C5_nt3v78Ev();
extern void _ZN9S205C5_nt3v79Ev();
extern void _ZN9S205C5_nt3v80Ev();
extern void _ZN9S205C5_nt3v81Ev();
extern void _ZN9S205C5_nt3v82Ev();
extern void _ZN9S205C5_nt3v83Ev();
extern void _ZN9S205C5_nt3v84Ev();
extern void _ZN9S205C5_nt3v85Ev();
extern void _ZN9S205C5_nt3v86Ev();
extern void _ZN9S205C5_nt3v87Ev();
extern void _ZN9S205C5_nt3v88Ev();
extern void _ZN9S205C5_nt3v89Ev();
static  VTBL_ENTRY vtc_S205C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S205C5_nt[0]),
  (VTBL_ENTRY)&_ZN9S205C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S205C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S205C62v4Ev,
  (VTBL_ENTRY)&_ZN6S205C62v5Ev,
  (VTBL_ENTRY)&_ZN6S205C62v6Ev,
  (VTBL_ENTRY)&_ZN6S205C62v7Ev,
  (VTBL_ENTRY)&_ZN6S205C62v8Ev,
  (VTBL_ENTRY)&_ZN6S205C62v9Ev,
  (VTBL_ENTRY)&_ZN6S205C63v10Ev,
  (VTBL_ENTRY)&_ZN6S205C63v11Ev,
  (VTBL_ENTRY)&_ZN6S205C63v12Ev,
  (VTBL_ENTRY)&_ZN6S205C63v13Ev,
  (VTBL_ENTRY)&_ZN6S205C63v14Ev,
  (VTBL_ENTRY)&_ZN6S205C63v15Ev,
  (VTBL_ENTRY)&_ZN6S205C63v16Ev,
  (VTBL_ENTRY)&_ZN6S205C63v17Ev,
  (VTBL_ENTRY)&_ZN6S205C63v18Ev,
  (VTBL_ENTRY)&_ZN6S205C63v19Ev,
  (VTBL_ENTRY)&_ZN6S205C63v20Ev,
  (VTBL_ENTRY)&_ZN6S205C63v21Ev,
  (VTBL_ENTRY)&_ZN6S205C63v22Ev,
  (VTBL_ENTRY)&_ZN6S205C63v23Ev,
  (VTBL_ENTRY)&_ZN6S205C63v24Ev,
  (VTBL_ENTRY)&_ZN6S205C63v25Ev,
  (VTBL_ENTRY)&_ZN6S205C63v26Ev,
  (VTBL_ENTRY)&_ZN6S205C63v27Ev,
  (VTBL_ENTRY)&_ZN6S205C63v28Ev,
  (VTBL_ENTRY)&_ZN6S205C63v29Ev,
  (VTBL_ENTRY)&_ZN6S205C63v30Ev,
  (VTBL_ENTRY)&_ZN6S205C63v31Ev,
  (VTBL_ENTRY)&_ZN6S205C63v32Ev,
  (VTBL_ENTRY)&_ZN6S205C63v33Ev,
  (VTBL_ENTRY)&_ZN6S205C63v34Ev,
  (VTBL_ENTRY)&_ZN6S205C63v35Ev,
  (VTBL_ENTRY)&_ZN6S205C63v36Ev,
  (VTBL_ENTRY)&_ZN6S205C63v37Ev,
  (VTBL_ENTRY)&_ZN6S205C63v38Ev,
  (VTBL_ENTRY)&_ZN6S205C63v39Ev,
  (VTBL_ENTRY)&_ZN6S205C63v40Ev,
  (VTBL_ENTRY)&_ZN6S205C63v41Ev,
  (VTBL_ENTRY)&_ZN6S205C63v42Ev,
  (VTBL_ENTRY)&_ZN6S205C63v43Ev,
  (VTBL_ENTRY)&_ZN6S205C63v44Ev,
  (VTBL_ENTRY)&_ZN6S205C63v45Ev,
  (VTBL_ENTRY)&_ZN6S205C63v46Ev,
  (VTBL_ENTRY)&_ZN6S205C63v47Ev,
  (VTBL_ENTRY)&_ZN6S205C63v48Ev,
  (VTBL_ENTRY)&_ZN6S205C63v49Ev,
  (VTBL_ENTRY)&_ZN6S205C63v50Ev,
  (VTBL_ENTRY)&_ZN6S205C63v51Ev,
  (VTBL_ENTRY)&_ZN6S205C63v52Ev,
  (VTBL_ENTRY)&_ZN6S205C63v53Ev,
  (VTBL_ENTRY)&_ZN6S205C63v54Ev,
  (VTBL_ENTRY)&_ZN6S205C63v55Ev,
  (VTBL_ENTRY)&_ZN6S205C63v56Ev,
  (VTBL_ENTRY)&_ZN6S205C63v57Ev,
  (VTBL_ENTRY)&_ZN6S205C63v58Ev,
  (VTBL_ENTRY)&_ZN6S205C63v59Ev,
  (VTBL_ENTRY)&_ZN6S205C63v60Ev,
  (VTBL_ENTRY)&_ZN6S205C63v61Ev,
  (VTBL_ENTRY)&_ZN6S205C63v62Ev,
  (VTBL_ENTRY)&_ZN6S205C63v63Ev,
  (VTBL_ENTRY)&_ZN6S205C63v64Ev,
  (VTBL_ENTRY)&_ZN6S205C63v65Ev,
  (VTBL_ENTRY)&_ZN6S205C63v66Ev,
  (VTBL_ENTRY)&_ZN6S205C63v67Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v89Ev,
};
extern VTBL_ENTRY _ZTI9S205C5_nt[];
VTBL_ENTRY *P__ZTI9S205C5_nt = _ZTI9S205C5_nt; 
extern  VTBL_ENTRY _ZTV9S205C5_nt[];
Class_Descriptor cd_S205C5_nt = {  "S205C5_nt", // class name
  bases_S205C5_nt, 1,
  &(vtc_S205C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI9S205C5_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S205C5_nt),90, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S205C20  : S3423C7_nt {
};
//SIG(-1 S205C20) C1{ BC2{ m Fp Fi[2]}}



static void Test_S205C20()
{
  extern Class_Descriptor cd_S205C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S205C20, buf);
    S205C20 &lv = *(new (buf) S205C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S205C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S205C20)");
    check_base_class_offset(lv, (S3423C7_nt*), 0, "S205C20");
    test_class_info(&lv, &cd_S205C20);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS205C20(Test_S205C20, "S205C20", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
static Base_Class bases_S205C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S205C20 = {  "S205C20", // class name
  bases_S205C20, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S205C19  : S205C20 {
};
//SIG(-1 S205C19) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S205C19()
{
  extern Class_Descriptor cd_S205C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S205C19, buf);
    S205C19 &lv = *(new (buf) S205C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S205C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S205C19)");
    check_base_class_offset(lv, (S3423C7_nt*)(S205C20*), 0, "S205C19");
    check_base_class_offset(lv, (S205C20*), 0, "S205C19");
    test_class_info(&lv, &cd_S205C19);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS205C19(Test_S205C19, "S205C19", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
extern Class_Descriptor cd_S205C20;
static Base_Class bases_S205C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S205C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S205C19 = {  "S205C19", // class name
  bases_S205C19, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S205C4_nt  : S205C5_nt {
  unsigned int s205c4f0:1;
  unsigned int s205c4f1:1;
  unsigned int s205c4f2:1;
  ::S3423C17 s205c4f3;
  ::S3423C11 s205c4f4;
  ::S3423C5_nt s205c4f5;
  ::S205C19 s205c4f6;
  int s205c4f7[3];
  virtual  ~S205C4_nt(); // _ZN9S205C4_ntD1Ev
  virtual void  v90(); // _ZN9S205C4_nt3v90Ev
  virtual void  v91(); // _ZN9S205C4_nt3v91Ev
  virtual void  v92(); // _ZN9S205C4_nt3v92Ev
  virtual void  v93(); // _ZN9S205C4_nt3v93Ev
  virtual void  v94(); // _ZN9S205C4_nt3v94Ev
  virtual void  v95(); // _ZN9S205C4_nt3v95Ev
  virtual void  v96(); // _ZN9S205C4_nt3v96Ev
  virtual void  v97(); // _ZN9S205C4_nt3v97Ev
  virtual void  v98(); // _ZN9S205C4_nt3v98Ev
  virtual void  v99(); // _ZN9S205C4_nt3v99Ev
  virtual void  v100(); // _ZN9S205C4_nt4v100Ev
  virtual void  v101(); // _ZN9S205C4_nt4v101Ev
  virtual void  v102(); // _ZN9S205C4_nt4v102Ev
  virtual void  v103(); // _ZN9S205C4_nt4v103Ev
  virtual void  v104(); // _ZN9S205C4_nt4v104Ev
  virtual void  v105(); // _ZN9S205C4_nt4v105Ev
  virtual void  v106(); // _ZN9S205C4_nt4v106Ev
  virtual void  v107(); // _ZN9S205C4_nt4v107Ev
  virtual void  v108(); // _ZN9S205C4_nt4v108Ev
  virtual void  v109(); // _ZN9S205C4_nt4v109Ev
  S205C4_nt(); // tgen
};
//SIG(-1 S205C4_nt) C1{ BC2{ BC3{ vd v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 Fi[2] Fp Fi[2] FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} FC5 FC9{ m} FC5 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fi:1 Fi:1 Fi:1 FC10{ BC11{ BC8}} FC12{ BC13{ BC8}} FC14{ BC15{ BC8}} FC16{ BC17{ BC8}} Fi[3]}


 S205C4_nt ::~S205C4_nt(){ note_dtor("S205C4_nt", this);}
void  S205C4_nt ::v90(){vfunc_called(this, "_ZN9S205C4_nt3v90Ev");}
void  S205C4_nt ::v91(){vfunc_called(this, "_ZN9S205C4_nt3v91Ev");}
void  S205C4_nt ::v92(){vfunc_called(this, "_ZN9S205C4_nt3v92Ev");}
void  S205C4_nt ::v93(){vfunc_called(this, "_ZN9S205C4_nt3v93Ev");}
void  S205C4_nt ::v94(){vfunc_called(this, "_ZN9S205C4_nt3v94Ev");}
void  S205C4_nt ::v95(){vfunc_called(this, "_ZN9S205C4_nt3v95Ev");}
void  S205C4_nt ::v96(){vfunc_called(this, "_ZN9S205C4_nt3v96Ev");}
void  S205C4_nt ::v97(){vfunc_called(this, "_ZN9S205C4_nt3v97Ev");}
void  S205C4_nt ::v98(){vfunc_called(this, "_ZN9S205C4_nt3v98Ev");}
void  S205C4_nt ::v99(){vfunc_called(this, "_ZN9S205C4_nt3v99Ev");}
void  S205C4_nt ::v100(){vfunc_called(this, "_ZN9S205C4_nt4v100Ev");}
void  S205C4_nt ::v101(){vfunc_called(this, "_ZN9S205C4_nt4v101Ev");}
void  S205C4_nt ::v102(){vfunc_called(this, "_ZN9S205C4_nt4v102Ev");}
void  S205C4_nt ::v103(){vfunc_called(this, "_ZN9S205C4_nt4v103Ev");}
void  S205C4_nt ::v104(){vfunc_called(this, "_ZN9S205C4_nt4v104Ev");}
void  S205C4_nt ::v105(){vfunc_called(this, "_ZN9S205C4_nt4v105Ev");}
void  S205C4_nt ::v106(){vfunc_called(this, "_ZN9S205C4_nt4v106Ev");}
void  S205C4_nt ::v107(){vfunc_called(this, "_ZN9S205C4_nt4v107Ev");}
void  S205C4_nt ::v108(){vfunc_called(this, "_ZN9S205C4_nt4v108Ev");}
void  S205C4_nt ::v109(){vfunc_called(this, "_ZN9S205C4_nt4v109Ev");}
S205C4_nt ::S205C4_nt(){ note_ctor("S205C4_nt", this);} // tgen

//skip512 S205C4_nt

#else // __cplusplus

extern void _ZN9S205C4_ntC1Ev();
extern void _ZN9S205C4_ntD1Ev();
Name_Map name_map_S205C4_nt[] = {
  NSPAIR(_ZN9S205C4_ntC1Ev),
  NSPAIR(_ZN9S205C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S205C6;
extern VTBL_ENTRY _ZTI6S205C6[];
extern  VTBL_ENTRY _ZTV6S205C6[];
extern Class_Descriptor cd_S205C5_nt;
extern VTBL_ENTRY _ZTI9S205C5_nt[];
extern  VTBL_ENTRY _ZTV9S205C5_nt[];
static Base_Class bases_S205C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S205C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S205C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S205C4_nt[];
extern void _ZN9S205C4_ntD1Ev();
extern void _ZN9S205C4_ntD0Ev();
extern void _ZN6S205C62v4Ev();
extern void _ZN6S205C62v5Ev();
extern void _ZN6S205C62v6Ev();
extern void _ZN6S205C62v7Ev();
extern void _ZN6S205C62v8Ev();
extern void _ZN6S205C62v9Ev();
extern void _ZN6S205C63v10Ev();
extern void _ZN6S205C63v11Ev();
extern void _ZN6S205C63v12Ev();
extern void _ZN6S205C63v13Ev();
extern void _ZN6S205C63v14Ev();
extern void _ZN6S205C63v15Ev();
extern void _ZN6S205C63v16Ev();
extern void _ZN6S205C63v17Ev();
extern void _ZN6S205C63v18Ev();
extern void _ZN6S205C63v19Ev();
extern void _ZN6S205C63v20Ev();
extern void _ZN6S205C63v21Ev();
extern void _ZN6S205C63v22Ev();
extern void _ZN6S205C63v23Ev();
extern void _ZN6S205C63v24Ev();
extern void _ZN6S205C63v25Ev();
extern void _ZN6S205C63v26Ev();
extern void _ZN6S205C63v27Ev();
extern void _ZN6S205C63v28Ev();
extern void _ZN6S205C63v29Ev();
extern void _ZN6S205C63v30Ev();
extern void _ZN6S205C63v31Ev();
extern void _ZN6S205C63v32Ev();
extern void _ZN6S205C63v33Ev();
extern void _ZN6S205C63v34Ev();
extern void _ZN6S205C63v35Ev();
extern void _ZN6S205C63v36Ev();
extern void _ZN6S205C63v37Ev();
extern void _ZN6S205C63v38Ev();
extern void _ZN6S205C63v39Ev();
extern void _ZN6S205C63v40Ev();
extern void _ZN6S205C63v41Ev();
extern void _ZN6S205C63v42Ev();
extern void _ZN6S205C63v43Ev();
extern void _ZN6S205C63v44Ev();
extern void _ZN6S205C63v45Ev();
extern void _ZN6S205C63v46Ev();
extern void _ZN6S205C63v47Ev();
extern void _ZN6S205C63v48Ev();
extern void _ZN6S205C63v49Ev();
extern void _ZN6S205C63v50Ev();
extern void _ZN6S205C63v51Ev();
extern void _ZN6S205C63v52Ev();
extern void _ZN6S205C63v53Ev();
extern void _ZN6S205C63v54Ev();
extern void _ZN6S205C63v55Ev();
extern void _ZN6S205C63v56Ev();
extern void _ZN6S205C63v57Ev();
extern void _ZN6S205C63v58Ev();
extern void _ZN6S205C63v59Ev();
extern void _ZN6S205C63v60Ev();
extern void _ZN6S205C63v61Ev();
extern void _ZN6S205C63v62Ev();
extern void _ZN6S205C63v63Ev();
extern void _ZN6S205C63v64Ev();
extern void _ZN6S205C63v65Ev();
extern void _ZN6S205C63v66Ev();
extern void _ZN6S205C63v67Ev();
extern void _ZN9S205C5_nt3v68Ev();
extern void _ZN9S205C5_nt3v69Ev();
extern void _ZN9S205C5_nt3v70Ev();
extern void _ZN9S205C5_nt3v71Ev();
extern void _ZN9S205C5_nt3v72Ev();
extern void _ZN9S205C5_nt3v73Ev();
extern void _ZN9S205C5_nt3v74Ev();
extern void _ZN9S205C5_nt3v75Ev();
extern void _ZN9S205C5_nt3v76Ev();
extern void _ZN9S205C5_nt3v77Ev();
extern void _ZN9S205C5_nt3v78Ev();
extern void _ZN9S205C5_nt3v79Ev();
extern void _ZN9S205C5_nt3v80Ev();
extern void _ZN9S205C5_nt3v81Ev();
extern void _ZN9S205C5_nt3v82Ev();
extern void _ZN9S205C5_nt3v83Ev();
extern void _ZN9S205C5_nt3v84Ev();
extern void _ZN9S205C5_nt3v85Ev();
extern void _ZN9S205C5_nt3v86Ev();
extern void _ZN9S205C5_nt3v87Ev();
extern void _ZN9S205C5_nt3v88Ev();
extern void _ZN9S205C5_nt3v89Ev();
extern void _ZN9S205C4_nt3v90Ev();
extern void _ZN9S205C4_nt3v91Ev();
extern void _ZN9S205C4_nt3v92Ev();
extern void _ZN9S205C4_nt3v93Ev();
extern void _ZN9S205C4_nt3v94Ev();
extern void _ZN9S205C4_nt3v95Ev();
extern void _ZN9S205C4_nt3v96Ev();
extern void _ZN9S205C4_nt3v97Ev();
extern void _ZN9S205C4_nt3v98Ev();
extern void _ZN9S205C4_nt3v99Ev();
extern void _ZN9S205C4_nt4v100Ev();
extern void _ZN9S205C4_nt4v101Ev();
extern void _ZN9S205C4_nt4v102Ev();
extern void _ZN9S205C4_nt4v103Ev();
extern void _ZN9S205C4_nt4v104Ev();
extern void _ZN9S205C4_nt4v105Ev();
extern void _ZN9S205C4_nt4v106Ev();
extern void _ZN9S205C4_nt4v107Ev();
extern void _ZN9S205C4_nt4v108Ev();
extern void _ZN9S205C4_nt4v109Ev();
static  VTBL_ENTRY vtc_S205C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S205C4_nt[0]),
  (VTBL_ENTRY)&_ZN9S205C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S205C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S205C62v4Ev,
  (VTBL_ENTRY)&_ZN6S205C62v5Ev,
  (VTBL_ENTRY)&_ZN6S205C62v6Ev,
  (VTBL_ENTRY)&_ZN6S205C62v7Ev,
  (VTBL_ENTRY)&_ZN6S205C62v8Ev,
  (VTBL_ENTRY)&_ZN6S205C62v9Ev,
  (VTBL_ENTRY)&_ZN6S205C63v10Ev,
  (VTBL_ENTRY)&_ZN6S205C63v11Ev,
  (VTBL_ENTRY)&_ZN6S205C63v12Ev,
  (VTBL_ENTRY)&_ZN6S205C63v13Ev,
  (VTBL_ENTRY)&_ZN6S205C63v14Ev,
  (VTBL_ENTRY)&_ZN6S205C63v15Ev,
  (VTBL_ENTRY)&_ZN6S205C63v16Ev,
  (VTBL_ENTRY)&_ZN6S205C63v17Ev,
  (VTBL_ENTRY)&_ZN6S205C63v18Ev,
  (VTBL_ENTRY)&_ZN6S205C63v19Ev,
  (VTBL_ENTRY)&_ZN6S205C63v20Ev,
  (VTBL_ENTRY)&_ZN6S205C63v21Ev,
  (VTBL_ENTRY)&_ZN6S205C63v22Ev,
  (VTBL_ENTRY)&_ZN6S205C63v23Ev,
  (VTBL_ENTRY)&_ZN6S205C63v24Ev,
  (VTBL_ENTRY)&_ZN6S205C63v25Ev,
  (VTBL_ENTRY)&_ZN6S205C63v26Ev,
  (VTBL_ENTRY)&_ZN6S205C63v27Ev,
  (VTBL_ENTRY)&_ZN6S205C63v28Ev,
  (VTBL_ENTRY)&_ZN6S205C63v29Ev,
  (VTBL_ENTRY)&_ZN6S205C63v30Ev,
  (VTBL_ENTRY)&_ZN6S205C63v31Ev,
  (VTBL_ENTRY)&_ZN6S205C63v32Ev,
  (VTBL_ENTRY)&_ZN6S205C63v33Ev,
  (VTBL_ENTRY)&_ZN6S205C63v34Ev,
  (VTBL_ENTRY)&_ZN6S205C63v35Ev,
  (VTBL_ENTRY)&_ZN6S205C63v36Ev,
  (VTBL_ENTRY)&_ZN6S205C63v37Ev,
  (VTBL_ENTRY)&_ZN6S205C63v38Ev,
  (VTBL_ENTRY)&_ZN6S205C63v39Ev,
  (VTBL_ENTRY)&_ZN6S205C63v40Ev,
  (VTBL_ENTRY)&_ZN6S205C63v41Ev,
  (VTBL_ENTRY)&_ZN6S205C63v42Ev,
  (VTBL_ENTRY)&_ZN6S205C63v43Ev,
  (VTBL_ENTRY)&_ZN6S205C63v44Ev,
  (VTBL_ENTRY)&_ZN6S205C63v45Ev,
  (VTBL_ENTRY)&_ZN6S205C63v46Ev,
  (VTBL_ENTRY)&_ZN6S205C63v47Ev,
  (VTBL_ENTRY)&_ZN6S205C63v48Ev,
  (VTBL_ENTRY)&_ZN6S205C63v49Ev,
  (VTBL_ENTRY)&_ZN6S205C63v50Ev,
  (VTBL_ENTRY)&_ZN6S205C63v51Ev,
  (VTBL_ENTRY)&_ZN6S205C63v52Ev,
  (VTBL_ENTRY)&_ZN6S205C63v53Ev,
  (VTBL_ENTRY)&_ZN6S205C63v54Ev,
  (VTBL_ENTRY)&_ZN6S205C63v55Ev,
  (VTBL_ENTRY)&_ZN6S205C63v56Ev,
  (VTBL_ENTRY)&_ZN6S205C63v57Ev,
  (VTBL_ENTRY)&_ZN6S205C63v58Ev,
  (VTBL_ENTRY)&_ZN6S205C63v59Ev,
  (VTBL_ENTRY)&_ZN6S205C63v60Ev,
  (VTBL_ENTRY)&_ZN6S205C63v61Ev,
  (VTBL_ENTRY)&_ZN6S205C63v62Ev,
  (VTBL_ENTRY)&_ZN6S205C63v63Ev,
  (VTBL_ENTRY)&_ZN6S205C63v64Ev,
  (VTBL_ENTRY)&_ZN6S205C63v65Ev,
  (VTBL_ENTRY)&_ZN6S205C63v66Ev,
  (VTBL_ENTRY)&_ZN6S205C63v67Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v109Ev,
};
extern VTBL_ENTRY _ZTI9S205C4_nt[];
VTBL_ENTRY *P__ZTI9S205C4_nt = _ZTI9S205C4_nt; 
extern  VTBL_ENTRY _ZTV9S205C4_nt[];
Class_Descriptor cd_S205C4_nt = {  "S205C4_nt", // class name
  bases_S205C4_nt, 2,
  &(vtc_S205C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,196), // object size
  NSPAIRA(_ZTI9S205C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S205C4_nt),110, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S205C3_nt  : S205C4_nt {
  ::S3423C4_nt s205c3f0;
  unsigned int s205c3f1:1;
  ::S205C19 s205c3f2;
  virtual  ~S205C3_nt(); // _ZN9S205C3_ntD1Ev
  virtual void  v110(); // _ZN9S205C3_nt4v110Ev
  virtual void  v111(); // _ZN9S205C3_nt4v111Ev
  virtual void  v112(); // _ZN9S205C3_nt4v112Ev
  virtual void  v113(); // _ZN9S205C3_nt4v113Ev
  S205C3_nt(); // tgen
};
//SIG(-1 S205C3_nt) C1{ BC2{ BC3{ BC4{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 Fi[2] Fp Fi[2] FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} FC6 FC10{ m} FC6 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 Fi:1 Fi:1 Fi:1 FC11{ BC12{ BC9}} FC13{ BC14{ BC9}} FC15{ BC16{ BC9}} FC17{ BC18{ BC9}} Fi[3]} vd v1 v2 v3 v4 FC5 Fi:1 FC17}


 S205C3_nt ::~S205C3_nt(){ note_dtor("S205C3_nt", this);}
void  S205C3_nt ::v110(){vfunc_called(this, "_ZN9S205C3_nt4v110Ev");}
void  S205C3_nt ::v111(){vfunc_called(this, "_ZN9S205C3_nt4v111Ev");}
void  S205C3_nt ::v112(){vfunc_called(this, "_ZN9S205C3_nt4v112Ev");}
void  S205C3_nt ::v113(){vfunc_called(this, "_ZN9S205C3_nt4v113Ev");}
S205C3_nt ::S205C3_nt(){ note_ctor("S205C3_nt", this);} // tgen

//skip512 S205C3_nt

#else // __cplusplus

extern void _ZN9S205C3_ntC1Ev();
extern void _ZN9S205C3_ntD1Ev();
Name_Map name_map_S205C3_nt[] = {
  NSPAIR(_ZN9S205C3_ntC1Ev),
  NSPAIR(_ZN9S205C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S205C6;
extern VTBL_ENTRY _ZTI6S205C6[];
extern  VTBL_ENTRY _ZTV6S205C6[];
extern Class_Descriptor cd_S205C5_nt;
extern VTBL_ENTRY _ZTI9S205C5_nt[];
extern  VTBL_ENTRY _ZTV9S205C5_nt[];
extern Class_Descriptor cd_S205C4_nt;
extern VTBL_ENTRY _ZTI9S205C4_nt[];
extern  VTBL_ENTRY _ZTV9S205C4_nt[];
static Base_Class bases_S205C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S205C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S205C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S205C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S205C3_nt[];
extern void _ZN9S205C3_ntD1Ev();
extern void _ZN9S205C3_ntD0Ev();
extern void _ZN6S205C62v4Ev();
extern void _ZN6S205C62v5Ev();
extern void _ZN6S205C62v6Ev();
extern void _ZN6S205C62v7Ev();
extern void _ZN6S205C62v8Ev();
extern void _ZN6S205C62v9Ev();
extern void _ZN6S205C63v10Ev();
extern void _ZN6S205C63v11Ev();
extern void _ZN6S205C63v12Ev();
extern void _ZN6S205C63v13Ev();
extern void _ZN6S205C63v14Ev();
extern void _ZN6S205C63v15Ev();
extern void _ZN6S205C63v16Ev();
extern void _ZN6S205C63v17Ev();
extern void _ZN6S205C63v18Ev();
extern void _ZN6S205C63v19Ev();
extern void _ZN6S205C63v20Ev();
extern void _ZN6S205C63v21Ev();
extern void _ZN6S205C63v22Ev();
extern void _ZN6S205C63v23Ev();
extern void _ZN6S205C63v24Ev();
extern void _ZN6S205C63v25Ev();
extern void _ZN6S205C63v26Ev();
extern void _ZN6S205C63v27Ev();
extern void _ZN6S205C63v28Ev();
extern void _ZN6S205C63v29Ev();
extern void _ZN6S205C63v30Ev();
extern void _ZN6S205C63v31Ev();
extern void _ZN6S205C63v32Ev();
extern void _ZN6S205C63v33Ev();
extern void _ZN6S205C63v34Ev();
extern void _ZN6S205C63v35Ev();
extern void _ZN6S205C63v36Ev();
extern void _ZN6S205C63v37Ev();
extern void _ZN6S205C63v38Ev();
extern void _ZN6S205C63v39Ev();
extern void _ZN6S205C63v40Ev();
extern void _ZN6S205C63v41Ev();
extern void _ZN6S205C63v42Ev();
extern void _ZN6S205C63v43Ev();
extern void _ZN6S205C63v44Ev();
extern void _ZN6S205C63v45Ev();
extern void _ZN6S205C63v46Ev();
extern void _ZN6S205C63v47Ev();
extern void _ZN6S205C63v48Ev();
extern void _ZN6S205C63v49Ev();
extern void _ZN6S205C63v50Ev();
extern void _ZN6S205C63v51Ev();
extern void _ZN6S205C63v52Ev();
extern void _ZN6S205C63v53Ev();
extern void _ZN6S205C63v54Ev();
extern void _ZN6S205C63v55Ev();
extern void _ZN6S205C63v56Ev();
extern void _ZN6S205C63v57Ev();
extern void _ZN6S205C63v58Ev();
extern void _ZN6S205C63v59Ev();
extern void _ZN6S205C63v60Ev();
extern void _ZN6S205C63v61Ev();
extern void _ZN6S205C63v62Ev();
extern void _ZN6S205C63v63Ev();
extern void _ZN6S205C63v64Ev();
extern void _ZN6S205C63v65Ev();
extern void _ZN6S205C63v66Ev();
extern void _ZN6S205C63v67Ev();
extern void _ZN9S205C5_nt3v68Ev();
extern void _ZN9S205C5_nt3v69Ev();
extern void _ZN9S205C5_nt3v70Ev();
extern void _ZN9S205C5_nt3v71Ev();
extern void _ZN9S205C5_nt3v72Ev();
extern void _ZN9S205C5_nt3v73Ev();
extern void _ZN9S205C5_nt3v74Ev();
extern void _ZN9S205C5_nt3v75Ev();
extern void _ZN9S205C5_nt3v76Ev();
extern void _ZN9S205C5_nt3v77Ev();
extern void _ZN9S205C5_nt3v78Ev();
extern void _ZN9S205C5_nt3v79Ev();
extern void _ZN9S205C5_nt3v80Ev();
extern void _ZN9S205C5_nt3v81Ev();
extern void _ZN9S205C5_nt3v82Ev();
extern void _ZN9S205C5_nt3v83Ev();
extern void _ZN9S205C5_nt3v84Ev();
extern void _ZN9S205C5_nt3v85Ev();
extern void _ZN9S205C5_nt3v86Ev();
extern void _ZN9S205C5_nt3v87Ev();
extern void _ZN9S205C5_nt3v88Ev();
extern void _ZN9S205C5_nt3v89Ev();
extern void _ZN9S205C4_nt3v90Ev();
extern void _ZN9S205C4_nt3v91Ev();
extern void _ZN9S205C4_nt3v92Ev();
extern void _ZN9S205C4_nt3v93Ev();
extern void _ZN9S205C4_nt3v94Ev();
extern void _ZN9S205C4_nt3v95Ev();
extern void _ZN9S205C4_nt3v96Ev();
extern void _ZN9S205C4_nt3v97Ev();
extern void _ZN9S205C4_nt3v98Ev();
extern void _ZN9S205C4_nt3v99Ev();
extern void _ZN9S205C4_nt4v100Ev();
extern void _ZN9S205C4_nt4v101Ev();
extern void _ZN9S205C4_nt4v102Ev();
extern void _ZN9S205C4_nt4v103Ev();
extern void _ZN9S205C4_nt4v104Ev();
extern void _ZN9S205C4_nt4v105Ev();
extern void _ZN9S205C4_nt4v106Ev();
extern void _ZN9S205C4_nt4v107Ev();
extern void _ZN9S205C4_nt4v108Ev();
extern void _ZN9S205C4_nt4v109Ev();
extern void _ZN9S205C3_nt4v110Ev();
extern void _ZN9S205C3_nt4v111Ev();
extern void _ZN9S205C3_nt4v112Ev();
extern void _ZN9S205C3_nt4v113Ev();
static  VTBL_ENTRY vtc_S205C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S205C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S205C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S205C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S205C62v4Ev,
  (VTBL_ENTRY)&_ZN6S205C62v5Ev,
  (VTBL_ENTRY)&_ZN6S205C62v6Ev,
  (VTBL_ENTRY)&_ZN6S205C62v7Ev,
  (VTBL_ENTRY)&_ZN6S205C62v8Ev,
  (VTBL_ENTRY)&_ZN6S205C62v9Ev,
  (VTBL_ENTRY)&_ZN6S205C63v10Ev,
  (VTBL_ENTRY)&_ZN6S205C63v11Ev,
  (VTBL_ENTRY)&_ZN6S205C63v12Ev,
  (VTBL_ENTRY)&_ZN6S205C63v13Ev,
  (VTBL_ENTRY)&_ZN6S205C63v14Ev,
  (VTBL_ENTRY)&_ZN6S205C63v15Ev,
  (VTBL_ENTRY)&_ZN6S205C63v16Ev,
  (VTBL_ENTRY)&_ZN6S205C63v17Ev,
  (VTBL_ENTRY)&_ZN6S205C63v18Ev,
  (VTBL_ENTRY)&_ZN6S205C63v19Ev,
  (VTBL_ENTRY)&_ZN6S205C63v20Ev,
  (VTBL_ENTRY)&_ZN6S205C63v21Ev,
  (VTBL_ENTRY)&_ZN6S205C63v22Ev,
  (VTBL_ENTRY)&_ZN6S205C63v23Ev,
  (VTBL_ENTRY)&_ZN6S205C63v24Ev,
  (VTBL_ENTRY)&_ZN6S205C63v25Ev,
  (VTBL_ENTRY)&_ZN6S205C63v26Ev,
  (VTBL_ENTRY)&_ZN6S205C63v27Ev,
  (VTBL_ENTRY)&_ZN6S205C63v28Ev,
  (VTBL_ENTRY)&_ZN6S205C63v29Ev,
  (VTBL_ENTRY)&_ZN6S205C63v30Ev,
  (VTBL_ENTRY)&_ZN6S205C63v31Ev,
  (VTBL_ENTRY)&_ZN6S205C63v32Ev,
  (VTBL_ENTRY)&_ZN6S205C63v33Ev,
  (VTBL_ENTRY)&_ZN6S205C63v34Ev,
  (VTBL_ENTRY)&_ZN6S205C63v35Ev,
  (VTBL_ENTRY)&_ZN6S205C63v36Ev,
  (VTBL_ENTRY)&_ZN6S205C63v37Ev,
  (VTBL_ENTRY)&_ZN6S205C63v38Ev,
  (VTBL_ENTRY)&_ZN6S205C63v39Ev,
  (VTBL_ENTRY)&_ZN6S205C63v40Ev,
  (VTBL_ENTRY)&_ZN6S205C63v41Ev,
  (VTBL_ENTRY)&_ZN6S205C63v42Ev,
  (VTBL_ENTRY)&_ZN6S205C63v43Ev,
  (VTBL_ENTRY)&_ZN6S205C63v44Ev,
  (VTBL_ENTRY)&_ZN6S205C63v45Ev,
  (VTBL_ENTRY)&_ZN6S205C63v46Ev,
  (VTBL_ENTRY)&_ZN6S205C63v47Ev,
  (VTBL_ENTRY)&_ZN6S205C63v48Ev,
  (VTBL_ENTRY)&_ZN6S205C63v49Ev,
  (VTBL_ENTRY)&_ZN6S205C63v50Ev,
  (VTBL_ENTRY)&_ZN6S205C63v51Ev,
  (VTBL_ENTRY)&_ZN6S205C63v52Ev,
  (VTBL_ENTRY)&_ZN6S205C63v53Ev,
  (VTBL_ENTRY)&_ZN6S205C63v54Ev,
  (VTBL_ENTRY)&_ZN6S205C63v55Ev,
  (VTBL_ENTRY)&_ZN6S205C63v56Ev,
  (VTBL_ENTRY)&_ZN6S205C63v57Ev,
  (VTBL_ENTRY)&_ZN6S205C63v58Ev,
  (VTBL_ENTRY)&_ZN6S205C63v59Ev,
  (VTBL_ENTRY)&_ZN6S205C63v60Ev,
  (VTBL_ENTRY)&_ZN6S205C63v61Ev,
  (VTBL_ENTRY)&_ZN6S205C63v62Ev,
  (VTBL_ENTRY)&_ZN6S205C63v63Ev,
  (VTBL_ENTRY)&_ZN6S205C63v64Ev,
  (VTBL_ENTRY)&_ZN6S205C63v65Ev,
  (VTBL_ENTRY)&_ZN6S205C63v66Ev,
  (VTBL_ENTRY)&_ZN6S205C63v67Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v113Ev,
};
extern VTBL_ENTRY _ZTI9S205C3_nt[];
VTBL_ENTRY *P__ZTI9S205C3_nt = _ZTI9S205C3_nt; 
extern  VTBL_ENTRY _ZTV9S205C3_nt[];
Class_Descriptor cd_S205C3_nt = {  "S205C3_nt", // class name
  bases_S205C3_nt, 3,
  &(vtc_S205C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,220), // object size
  NSPAIRA(_ZTI9S205C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S205C3_nt),114, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S205C2_nt  : S205C3_nt {
  int s205c2f0;
  unsigned int s205c2f1:1;
  virtual  ~S205C2_nt(); // _ZN9S205C2_ntD1Ev
  virtual void  v114(); // _ZN9S205C2_nt4v114Ev
  virtual void  v115(); // _ZN9S205C2_nt4v115Ev
  virtual void  v116(); // _ZN9S205C2_nt4v116Ev
  virtual void  v117(); // _ZN9S205C2_nt4v117Ev
  virtual void  v118(); // _ZN9S205C2_nt4v118Ev
  virtual void  v119(); // _ZN9S205C2_nt4v119Ev
  virtual void  v120(); // _ZN9S205C2_nt4v120Ev
  virtual void  v121(); // _ZN9S205C2_nt4v121Ev
  S205C2_nt(); // tgen
};
//SIG(-1 S205C2_nt) C1{ BC2{ BC3{ BC4{ BC5{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC6{ m Fi[2]} Fp[2]} vd v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 Fi[2] Fp Fi[2] FC7{ BC8{ BC9{ BC10{ m Fp Fi[2]}}}} FC7 FC11{ m} FC7 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 Fi:1 Fi:1 Fi:1 FC12{ BC13{ BC10}} FC14{ BC15{ BC10}} FC16{ BC17{ BC10}} FC18{ BC19{ BC10}} Fi[3]} vd v115 v116 v117 v118 FC6 Fi:1 FC18} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi Fi:1}


 S205C2_nt ::~S205C2_nt(){ note_dtor("S205C2_nt", this);}
void  S205C2_nt ::v114(){vfunc_called(this, "_ZN9S205C2_nt4v114Ev");}
void  S205C2_nt ::v115(){vfunc_called(this, "_ZN9S205C2_nt4v115Ev");}
void  S205C2_nt ::v116(){vfunc_called(this, "_ZN9S205C2_nt4v116Ev");}
void  S205C2_nt ::v117(){vfunc_called(this, "_ZN9S205C2_nt4v117Ev");}
void  S205C2_nt ::v118(){vfunc_called(this, "_ZN9S205C2_nt4v118Ev");}
void  S205C2_nt ::v119(){vfunc_called(this, "_ZN9S205C2_nt4v119Ev");}
void  S205C2_nt ::v120(){vfunc_called(this, "_ZN9S205C2_nt4v120Ev");}
void  S205C2_nt ::v121(){vfunc_called(this, "_ZN9S205C2_nt4v121Ev");}
S205C2_nt ::S205C2_nt(){ note_ctor("S205C2_nt", this);} // tgen

//skip512 S205C2_nt

#else // __cplusplus

extern void _ZN9S205C2_ntC1Ev();
extern void _ZN9S205C2_ntD1Ev();
Name_Map name_map_S205C2_nt[] = {
  NSPAIR(_ZN9S205C2_ntC1Ev),
  NSPAIR(_ZN9S205C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S205C6;
extern VTBL_ENTRY _ZTI6S205C6[];
extern  VTBL_ENTRY _ZTV6S205C6[];
extern Class_Descriptor cd_S205C5_nt;
extern VTBL_ENTRY _ZTI9S205C5_nt[];
extern  VTBL_ENTRY _ZTV9S205C5_nt[];
extern Class_Descriptor cd_S205C4_nt;
extern VTBL_ENTRY _ZTI9S205C4_nt[];
extern  VTBL_ENTRY _ZTV9S205C4_nt[];
extern Class_Descriptor cd_S205C3_nt;
extern VTBL_ENTRY _ZTI9S205C3_nt[];
extern  VTBL_ENTRY _ZTV9S205C3_nt[];
static Base_Class bases_S205C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S205C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S205C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S205C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S205C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S205C2_nt[];
extern void _ZN9S205C2_ntD1Ev();
extern void _ZN9S205C2_ntD0Ev();
extern void _ZN6S205C62v4Ev();
extern void _ZN6S205C62v5Ev();
extern void _ZN6S205C62v6Ev();
extern void _ZN6S205C62v7Ev();
extern void _ZN6S205C62v8Ev();
extern void _ZN6S205C62v9Ev();
extern void _ZN6S205C63v10Ev();
extern void _ZN6S205C63v11Ev();
extern void _ZN6S205C63v12Ev();
extern void _ZN6S205C63v13Ev();
extern void _ZN6S205C63v14Ev();
extern void _ZN6S205C63v15Ev();
extern void _ZN6S205C63v16Ev();
extern void _ZN6S205C63v17Ev();
extern void _ZN6S205C63v18Ev();
extern void _ZN6S205C63v19Ev();
extern void _ZN6S205C63v20Ev();
extern void _ZN6S205C63v21Ev();
extern void _ZN6S205C63v22Ev();
extern void _ZN6S205C63v23Ev();
extern void _ZN6S205C63v24Ev();
extern void _ZN6S205C63v25Ev();
extern void _ZN6S205C63v26Ev();
extern void _ZN6S205C63v27Ev();
extern void _ZN6S205C63v28Ev();
extern void _ZN6S205C63v29Ev();
extern void _ZN6S205C63v30Ev();
extern void _ZN6S205C63v31Ev();
extern void _ZN6S205C63v32Ev();
extern void _ZN6S205C63v33Ev();
extern void _ZN6S205C63v34Ev();
extern void _ZN6S205C63v35Ev();
extern void _ZN6S205C63v36Ev();
extern void _ZN6S205C63v37Ev();
extern void _ZN6S205C63v38Ev();
extern void _ZN6S205C63v39Ev();
extern void _ZN6S205C63v40Ev();
extern void _ZN6S205C63v41Ev();
extern void _ZN6S205C63v42Ev();
extern void _ZN6S205C63v43Ev();
extern void _ZN6S205C63v44Ev();
extern void _ZN6S205C63v45Ev();
extern void _ZN6S205C63v46Ev();
extern void _ZN6S205C63v47Ev();
extern void _ZN6S205C63v48Ev();
extern void _ZN6S205C63v49Ev();
extern void _ZN6S205C63v50Ev();
extern void _ZN6S205C63v51Ev();
extern void _ZN6S205C63v52Ev();
extern void _ZN6S205C63v53Ev();
extern void _ZN6S205C63v54Ev();
extern void _ZN6S205C63v55Ev();
extern void _ZN6S205C63v56Ev();
extern void _ZN6S205C63v57Ev();
extern void _ZN6S205C63v58Ev();
extern void _ZN6S205C63v59Ev();
extern void _ZN6S205C63v60Ev();
extern void _ZN6S205C63v61Ev();
extern void _ZN6S205C63v62Ev();
extern void _ZN6S205C63v63Ev();
extern void _ZN6S205C63v64Ev();
extern void _ZN6S205C63v65Ev();
extern void _ZN6S205C63v66Ev();
extern void _ZN6S205C63v67Ev();
extern void _ZN9S205C5_nt3v68Ev();
extern void _ZN9S205C5_nt3v69Ev();
extern void _ZN9S205C5_nt3v70Ev();
extern void _ZN9S205C5_nt3v71Ev();
extern void _ZN9S205C5_nt3v72Ev();
extern void _ZN9S205C5_nt3v73Ev();
extern void _ZN9S205C5_nt3v74Ev();
extern void _ZN9S205C5_nt3v75Ev();
extern void _ZN9S205C5_nt3v76Ev();
extern void _ZN9S205C5_nt3v77Ev();
extern void _ZN9S205C5_nt3v78Ev();
extern void _ZN9S205C5_nt3v79Ev();
extern void _ZN9S205C5_nt3v80Ev();
extern void _ZN9S205C5_nt3v81Ev();
extern void _ZN9S205C5_nt3v82Ev();
extern void _ZN9S205C5_nt3v83Ev();
extern void _ZN9S205C5_nt3v84Ev();
extern void _ZN9S205C5_nt3v85Ev();
extern void _ZN9S205C5_nt3v86Ev();
extern void _ZN9S205C5_nt3v87Ev();
extern void _ZN9S205C5_nt3v88Ev();
extern void _ZN9S205C5_nt3v89Ev();
extern void _ZN9S205C4_nt3v90Ev();
extern void _ZN9S205C4_nt3v91Ev();
extern void _ZN9S205C4_nt3v92Ev();
extern void _ZN9S205C4_nt3v93Ev();
extern void _ZN9S205C4_nt3v94Ev();
extern void _ZN9S205C4_nt3v95Ev();
extern void _ZN9S205C4_nt3v96Ev();
extern void _ZN9S205C4_nt3v97Ev();
extern void _ZN9S205C4_nt3v98Ev();
extern void _ZN9S205C4_nt3v99Ev();
extern void _ZN9S205C4_nt4v100Ev();
extern void _ZN9S205C4_nt4v101Ev();
extern void _ZN9S205C4_nt4v102Ev();
extern void _ZN9S205C4_nt4v103Ev();
extern void _ZN9S205C4_nt4v104Ev();
extern void _ZN9S205C4_nt4v105Ev();
extern void _ZN9S205C4_nt4v106Ev();
extern void _ZN9S205C4_nt4v107Ev();
extern void _ZN9S205C4_nt4v108Ev();
extern void _ZN9S205C4_nt4v109Ev();
extern void _ZN9S205C3_nt4v110Ev();
extern void _ZN9S205C3_nt4v111Ev();
extern void _ZN9S205C3_nt4v112Ev();
extern void _ZN9S205C3_nt4v113Ev();
extern void _ZN9S205C2_nt4v114Ev();
extern void _ZN9S205C2_nt4v115Ev();
extern void _ZN9S205C2_nt4v116Ev();
extern void _ZN9S205C2_nt4v117Ev();
extern void _ZN9S205C2_nt4v118Ev();
extern void _ZN9S205C2_nt4v119Ev();
extern void _ZN9S205C2_nt4v120Ev();
extern void _ZN9S205C2_nt4v121Ev();
static  VTBL_ENTRY vtc_S205C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S205C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S205C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S205C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S205C62v4Ev,
  (VTBL_ENTRY)&_ZN6S205C62v5Ev,
  (VTBL_ENTRY)&_ZN6S205C62v6Ev,
  (VTBL_ENTRY)&_ZN6S205C62v7Ev,
  (VTBL_ENTRY)&_ZN6S205C62v8Ev,
  (VTBL_ENTRY)&_ZN6S205C62v9Ev,
  (VTBL_ENTRY)&_ZN6S205C63v10Ev,
  (VTBL_ENTRY)&_ZN6S205C63v11Ev,
  (VTBL_ENTRY)&_ZN6S205C63v12Ev,
  (VTBL_ENTRY)&_ZN6S205C63v13Ev,
  (VTBL_ENTRY)&_ZN6S205C63v14Ev,
  (VTBL_ENTRY)&_ZN6S205C63v15Ev,
  (VTBL_ENTRY)&_ZN6S205C63v16Ev,
  (VTBL_ENTRY)&_ZN6S205C63v17Ev,
  (VTBL_ENTRY)&_ZN6S205C63v18Ev,
  (VTBL_ENTRY)&_ZN6S205C63v19Ev,
  (VTBL_ENTRY)&_ZN6S205C63v20Ev,
  (VTBL_ENTRY)&_ZN6S205C63v21Ev,
  (VTBL_ENTRY)&_ZN6S205C63v22Ev,
  (VTBL_ENTRY)&_ZN6S205C63v23Ev,
  (VTBL_ENTRY)&_ZN6S205C63v24Ev,
  (VTBL_ENTRY)&_ZN6S205C63v25Ev,
  (VTBL_ENTRY)&_ZN6S205C63v26Ev,
  (VTBL_ENTRY)&_ZN6S205C63v27Ev,
  (VTBL_ENTRY)&_ZN6S205C63v28Ev,
  (VTBL_ENTRY)&_ZN6S205C63v29Ev,
  (VTBL_ENTRY)&_ZN6S205C63v30Ev,
  (VTBL_ENTRY)&_ZN6S205C63v31Ev,
  (VTBL_ENTRY)&_ZN6S205C63v32Ev,
  (VTBL_ENTRY)&_ZN6S205C63v33Ev,
  (VTBL_ENTRY)&_ZN6S205C63v34Ev,
  (VTBL_ENTRY)&_ZN6S205C63v35Ev,
  (VTBL_ENTRY)&_ZN6S205C63v36Ev,
  (VTBL_ENTRY)&_ZN6S205C63v37Ev,
  (VTBL_ENTRY)&_ZN6S205C63v38Ev,
  (VTBL_ENTRY)&_ZN6S205C63v39Ev,
  (VTBL_ENTRY)&_ZN6S205C63v40Ev,
  (VTBL_ENTRY)&_ZN6S205C63v41Ev,
  (VTBL_ENTRY)&_ZN6S205C63v42Ev,
  (VTBL_ENTRY)&_ZN6S205C63v43Ev,
  (VTBL_ENTRY)&_ZN6S205C63v44Ev,
  (VTBL_ENTRY)&_ZN6S205C63v45Ev,
  (VTBL_ENTRY)&_ZN6S205C63v46Ev,
  (VTBL_ENTRY)&_ZN6S205C63v47Ev,
  (VTBL_ENTRY)&_ZN6S205C63v48Ev,
  (VTBL_ENTRY)&_ZN6S205C63v49Ev,
  (VTBL_ENTRY)&_ZN6S205C63v50Ev,
  (VTBL_ENTRY)&_ZN6S205C63v51Ev,
  (VTBL_ENTRY)&_ZN6S205C63v52Ev,
  (VTBL_ENTRY)&_ZN6S205C63v53Ev,
  (VTBL_ENTRY)&_ZN6S205C63v54Ev,
  (VTBL_ENTRY)&_ZN6S205C63v55Ev,
  (VTBL_ENTRY)&_ZN6S205C63v56Ev,
  (VTBL_ENTRY)&_ZN6S205C63v57Ev,
  (VTBL_ENTRY)&_ZN6S205C63v58Ev,
  (VTBL_ENTRY)&_ZN6S205C63v59Ev,
  (VTBL_ENTRY)&_ZN6S205C63v60Ev,
  (VTBL_ENTRY)&_ZN6S205C63v61Ev,
  (VTBL_ENTRY)&_ZN6S205C63v62Ev,
  (VTBL_ENTRY)&_ZN6S205C63v63Ev,
  (VTBL_ENTRY)&_ZN6S205C63v64Ev,
  (VTBL_ENTRY)&_ZN6S205C63v65Ev,
  (VTBL_ENTRY)&_ZN6S205C63v66Ev,
  (VTBL_ENTRY)&_ZN6S205C63v67Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v121Ev,
};
extern VTBL_ENTRY _ZTI9S205C2_nt[];
VTBL_ENTRY *P__ZTI9S205C2_nt = _ZTI9S205C2_nt; 
extern  VTBL_ENTRY _ZTV9S205C2_nt[];
Class_Descriptor cd_S205C2_nt = {  "S205C2_nt", // class name
  bases_S205C2_nt, 4,
  &(vtc_S205C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,228), // object size
  NSPAIRA(_ZTI9S205C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S205C2_nt),122, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S205C1  : S205C2_nt {
  int s205c1f0[4];
  virtual  ~S205C1(); // _ZN6S205C1D1Ev
  virtual void  v1(); // _ZN6S205C12v1Ev
  virtual void  v2(); // _ZN6S205C12v2Ev
  virtual void  v3(); // _ZN6S205C12v3Ev
  S205C1(); // tgen
};
//SIG(1 S205C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC7{ m Fi[2]} Fp[2]} vd v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 Fi[2] Fp Fi[2] FC8{ BC9{ BC10{ BC11{ m Fp Fi[2]}}}} FC8 FC12{ m} FC8 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 Fi:1 Fi:1 Fi:1 FC13{ BC14{ BC11}} FC15{ BC16{ BC11}} FC17{ BC18{ BC11}} FC19{ BC20{ BC11}} Fi[3]} vd v110 v111 v112 v113 FC7 Fi:1 FC19} vd v114 v115 v116 v117 v118 v119 v120 v121 Fi Fi:1} vd v1 v2 v3 Fi[4]}


 S205C1 ::~S205C1(){ note_dtor("S205C1", this);}
void  S205C1 ::v1(){vfunc_called(this, "_ZN6S205C12v1Ev");}
void  S205C1 ::v2(){vfunc_called(this, "_ZN6S205C12v2Ev");}
void  S205C1 ::v3(){vfunc_called(this, "_ZN6S205C12v3Ev");}
S205C1 ::S205C1(){ note_ctor("S205C1", this);} // tgen

static void Test_S205C1()
{
  extern Class_Descriptor cd_S205C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,62)];
    init_test(&cd_S205C1, buf);
    S205C1 *dp, &lv = *(dp=new (buf) S205C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,244), "sizeof(S205C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S205C1)");
    check_base_class_offset(lv, (S205C6*)(S205C5_nt*)(S205C4_nt*)(S205C3_nt*)(S205C2_nt*), 0, "S205C1");
    check_base_class_offset(lv, (S205C5_nt*)(S205C4_nt*)(S205C3_nt*)(S205C2_nt*), 0, "S205C1");
    check_base_class_offset(lv, (S205C4_nt*)(S205C3_nt*)(S205C2_nt*), 0, "S205C1");
    check_base_class_offset(lv, (S205C3_nt*)(S205C2_nt*), 0, "S205C1");
    check_base_class_offset(lv, (S205C2_nt*), 0, "S205C1");
    check_field_offset(lv, s205c1f0, ABISELECT(304,228), "S205C1.s205c1f0");
    test_class_info(&lv, &cd_S205C1);
    dp->~S205C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS205C1(Test_S205C1, "S205C1", ABISELECT(320,244));

#else // __cplusplus

extern void _ZN6S205C1C1Ev();
extern void _ZN6S205C1D1Ev();
Name_Map name_map_S205C1[] = {
  NSPAIR(_ZN6S205C1C1Ev),
  NSPAIR(_ZN6S205C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S205C6;
extern VTBL_ENTRY _ZTI6S205C6[];
extern  VTBL_ENTRY _ZTV6S205C6[];
extern Class_Descriptor cd_S205C5_nt;
extern VTBL_ENTRY _ZTI9S205C5_nt[];
extern  VTBL_ENTRY _ZTV9S205C5_nt[];
extern Class_Descriptor cd_S205C4_nt;
extern VTBL_ENTRY _ZTI9S205C4_nt[];
extern  VTBL_ENTRY _ZTV9S205C4_nt[];
extern Class_Descriptor cd_S205C3_nt;
extern VTBL_ENTRY _ZTI9S205C3_nt[];
extern  VTBL_ENTRY _ZTV9S205C3_nt[];
extern Class_Descriptor cd_S205C2_nt;
extern VTBL_ENTRY _ZTI9S205C2_nt[];
extern  VTBL_ENTRY _ZTV9S205C2_nt[];
static Base_Class bases_S205C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S205C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S205C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S205C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S205C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S205C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S205C1[];
extern void _ZN6S205C1D1Ev();
extern void _ZN6S205C1D0Ev();
extern void _ZN6S205C62v4Ev();
extern void _ZN6S205C62v5Ev();
extern void _ZN6S205C62v6Ev();
extern void _ZN6S205C62v7Ev();
extern void _ZN6S205C62v8Ev();
extern void _ZN6S205C62v9Ev();
extern void _ZN6S205C63v10Ev();
extern void _ZN6S205C63v11Ev();
extern void _ZN6S205C63v12Ev();
extern void _ZN6S205C63v13Ev();
extern void _ZN6S205C63v14Ev();
extern void _ZN6S205C63v15Ev();
extern void _ZN6S205C63v16Ev();
extern void _ZN6S205C63v17Ev();
extern void _ZN6S205C63v18Ev();
extern void _ZN6S205C63v19Ev();
extern void _ZN6S205C63v20Ev();
extern void _ZN6S205C63v21Ev();
extern void _ZN6S205C63v22Ev();
extern void _ZN6S205C63v23Ev();
extern void _ZN6S205C63v24Ev();
extern void _ZN6S205C63v25Ev();
extern void _ZN6S205C63v26Ev();
extern void _ZN6S205C63v27Ev();
extern void _ZN6S205C63v28Ev();
extern void _ZN6S205C63v29Ev();
extern void _ZN6S205C63v30Ev();
extern void _ZN6S205C63v31Ev();
extern void _ZN6S205C63v32Ev();
extern void _ZN6S205C63v33Ev();
extern void _ZN6S205C63v34Ev();
extern void _ZN6S205C63v35Ev();
extern void _ZN6S205C63v36Ev();
extern void _ZN6S205C63v37Ev();
extern void _ZN6S205C63v38Ev();
extern void _ZN6S205C63v39Ev();
extern void _ZN6S205C63v40Ev();
extern void _ZN6S205C63v41Ev();
extern void _ZN6S205C63v42Ev();
extern void _ZN6S205C63v43Ev();
extern void _ZN6S205C63v44Ev();
extern void _ZN6S205C63v45Ev();
extern void _ZN6S205C63v46Ev();
extern void _ZN6S205C63v47Ev();
extern void _ZN6S205C63v48Ev();
extern void _ZN6S205C63v49Ev();
extern void _ZN6S205C63v50Ev();
extern void _ZN6S205C63v51Ev();
extern void _ZN6S205C63v52Ev();
extern void _ZN6S205C63v53Ev();
extern void _ZN6S205C63v54Ev();
extern void _ZN6S205C63v55Ev();
extern void _ZN6S205C63v56Ev();
extern void _ZN6S205C63v57Ev();
extern void _ZN6S205C63v58Ev();
extern void _ZN6S205C63v59Ev();
extern void _ZN6S205C63v60Ev();
extern void _ZN6S205C63v61Ev();
extern void _ZN6S205C63v62Ev();
extern void _ZN6S205C63v63Ev();
extern void _ZN6S205C63v64Ev();
extern void _ZN6S205C63v65Ev();
extern void _ZN6S205C63v66Ev();
extern void _ZN6S205C63v67Ev();
extern void _ZN9S205C5_nt3v68Ev();
extern void _ZN9S205C5_nt3v69Ev();
extern void _ZN9S205C5_nt3v70Ev();
extern void _ZN9S205C5_nt3v71Ev();
extern void _ZN9S205C5_nt3v72Ev();
extern void _ZN9S205C5_nt3v73Ev();
extern void _ZN9S205C5_nt3v74Ev();
extern void _ZN9S205C5_nt3v75Ev();
extern void _ZN9S205C5_nt3v76Ev();
extern void _ZN9S205C5_nt3v77Ev();
extern void _ZN9S205C5_nt3v78Ev();
extern void _ZN9S205C5_nt3v79Ev();
extern void _ZN9S205C5_nt3v80Ev();
extern void _ZN9S205C5_nt3v81Ev();
extern void _ZN9S205C5_nt3v82Ev();
extern void _ZN9S205C5_nt3v83Ev();
extern void _ZN9S205C5_nt3v84Ev();
extern void _ZN9S205C5_nt3v85Ev();
extern void _ZN9S205C5_nt3v86Ev();
extern void _ZN9S205C5_nt3v87Ev();
extern void _ZN9S205C5_nt3v88Ev();
extern void _ZN9S205C5_nt3v89Ev();
extern void _ZN9S205C4_nt3v90Ev();
extern void _ZN9S205C4_nt3v91Ev();
extern void _ZN9S205C4_nt3v92Ev();
extern void _ZN9S205C4_nt3v93Ev();
extern void _ZN9S205C4_nt3v94Ev();
extern void _ZN9S205C4_nt3v95Ev();
extern void _ZN9S205C4_nt3v96Ev();
extern void _ZN9S205C4_nt3v97Ev();
extern void _ZN9S205C4_nt3v98Ev();
extern void _ZN9S205C4_nt3v99Ev();
extern void _ZN9S205C4_nt4v100Ev();
extern void _ZN9S205C4_nt4v101Ev();
extern void _ZN9S205C4_nt4v102Ev();
extern void _ZN9S205C4_nt4v103Ev();
extern void _ZN9S205C4_nt4v104Ev();
extern void _ZN9S205C4_nt4v105Ev();
extern void _ZN9S205C4_nt4v106Ev();
extern void _ZN9S205C4_nt4v107Ev();
extern void _ZN9S205C4_nt4v108Ev();
extern void _ZN9S205C4_nt4v109Ev();
extern void _ZN9S205C3_nt4v110Ev();
extern void _ZN9S205C3_nt4v111Ev();
extern void _ZN9S205C3_nt4v112Ev();
extern void _ZN9S205C3_nt4v113Ev();
extern void _ZN9S205C2_nt4v114Ev();
extern void _ZN9S205C2_nt4v115Ev();
extern void _ZN9S205C2_nt4v116Ev();
extern void _ZN9S205C2_nt4v117Ev();
extern void _ZN9S205C2_nt4v118Ev();
extern void _ZN9S205C2_nt4v119Ev();
extern void _ZN9S205C2_nt4v120Ev();
extern void _ZN9S205C2_nt4v121Ev();
extern void _ZN6S205C12v1Ev();
extern void _ZN6S205C12v2Ev();
extern void _ZN6S205C12v3Ev();
static  VTBL_ENTRY vtc_S205C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S205C1[0]),
  (VTBL_ENTRY)&_ZN6S205C1D1Ev,
  (VTBL_ENTRY)&_ZN6S205C1D0Ev,
  (VTBL_ENTRY)&_ZN6S205C62v4Ev,
  (VTBL_ENTRY)&_ZN6S205C62v5Ev,
  (VTBL_ENTRY)&_ZN6S205C62v6Ev,
  (VTBL_ENTRY)&_ZN6S205C62v7Ev,
  (VTBL_ENTRY)&_ZN6S205C62v8Ev,
  (VTBL_ENTRY)&_ZN6S205C62v9Ev,
  (VTBL_ENTRY)&_ZN6S205C63v10Ev,
  (VTBL_ENTRY)&_ZN6S205C63v11Ev,
  (VTBL_ENTRY)&_ZN6S205C63v12Ev,
  (VTBL_ENTRY)&_ZN6S205C63v13Ev,
  (VTBL_ENTRY)&_ZN6S205C63v14Ev,
  (VTBL_ENTRY)&_ZN6S205C63v15Ev,
  (VTBL_ENTRY)&_ZN6S205C63v16Ev,
  (VTBL_ENTRY)&_ZN6S205C63v17Ev,
  (VTBL_ENTRY)&_ZN6S205C63v18Ev,
  (VTBL_ENTRY)&_ZN6S205C63v19Ev,
  (VTBL_ENTRY)&_ZN6S205C63v20Ev,
  (VTBL_ENTRY)&_ZN6S205C63v21Ev,
  (VTBL_ENTRY)&_ZN6S205C63v22Ev,
  (VTBL_ENTRY)&_ZN6S205C63v23Ev,
  (VTBL_ENTRY)&_ZN6S205C63v24Ev,
  (VTBL_ENTRY)&_ZN6S205C63v25Ev,
  (VTBL_ENTRY)&_ZN6S205C63v26Ev,
  (VTBL_ENTRY)&_ZN6S205C63v27Ev,
  (VTBL_ENTRY)&_ZN6S205C63v28Ev,
  (VTBL_ENTRY)&_ZN6S205C63v29Ev,
  (VTBL_ENTRY)&_ZN6S205C63v30Ev,
  (VTBL_ENTRY)&_ZN6S205C63v31Ev,
  (VTBL_ENTRY)&_ZN6S205C63v32Ev,
  (VTBL_ENTRY)&_ZN6S205C63v33Ev,
  (VTBL_ENTRY)&_ZN6S205C63v34Ev,
  (VTBL_ENTRY)&_ZN6S205C63v35Ev,
  (VTBL_ENTRY)&_ZN6S205C63v36Ev,
  (VTBL_ENTRY)&_ZN6S205C63v37Ev,
  (VTBL_ENTRY)&_ZN6S205C63v38Ev,
  (VTBL_ENTRY)&_ZN6S205C63v39Ev,
  (VTBL_ENTRY)&_ZN6S205C63v40Ev,
  (VTBL_ENTRY)&_ZN6S205C63v41Ev,
  (VTBL_ENTRY)&_ZN6S205C63v42Ev,
  (VTBL_ENTRY)&_ZN6S205C63v43Ev,
  (VTBL_ENTRY)&_ZN6S205C63v44Ev,
  (VTBL_ENTRY)&_ZN6S205C63v45Ev,
  (VTBL_ENTRY)&_ZN6S205C63v46Ev,
  (VTBL_ENTRY)&_ZN6S205C63v47Ev,
  (VTBL_ENTRY)&_ZN6S205C63v48Ev,
  (VTBL_ENTRY)&_ZN6S205C63v49Ev,
  (VTBL_ENTRY)&_ZN6S205C63v50Ev,
  (VTBL_ENTRY)&_ZN6S205C63v51Ev,
  (VTBL_ENTRY)&_ZN6S205C63v52Ev,
  (VTBL_ENTRY)&_ZN6S205C63v53Ev,
  (VTBL_ENTRY)&_ZN6S205C63v54Ev,
  (VTBL_ENTRY)&_ZN6S205C63v55Ev,
  (VTBL_ENTRY)&_ZN6S205C63v56Ev,
  (VTBL_ENTRY)&_ZN6S205C63v57Ev,
  (VTBL_ENTRY)&_ZN6S205C63v58Ev,
  (VTBL_ENTRY)&_ZN6S205C63v59Ev,
  (VTBL_ENTRY)&_ZN6S205C63v60Ev,
  (VTBL_ENTRY)&_ZN6S205C63v61Ev,
  (VTBL_ENTRY)&_ZN6S205C63v62Ev,
  (VTBL_ENTRY)&_ZN6S205C63v63Ev,
  (VTBL_ENTRY)&_ZN6S205C63v64Ev,
  (VTBL_ENTRY)&_ZN6S205C63v65Ev,
  (VTBL_ENTRY)&_ZN6S205C63v66Ev,
  (VTBL_ENTRY)&_ZN6S205C63v67Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN6S205C12v1Ev,
  (VTBL_ENTRY)&_ZN6S205C12v2Ev,
  (VTBL_ENTRY)&_ZN6S205C12v3Ev,
};
extern VTBL_ENTRY _ZTI6S205C1[];
extern  VTBL_ENTRY _ZTV6S205C1[];
Class_Descriptor cd_S205C1 = {  "S205C1", // class name
  bases_S205C1, 5,
  &(vtc_S205C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(320,244), // object size
  NSPAIRA(_ZTI6S205C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S205C1),125, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C6  {
  void *s19942c6f0[3];
  int s19942c6f1[2];
  __tsi64 s19942c6f2;
  virtual void  v3(); // _ZN8S19942C62v3Ev
  ~S19942C6(); // tgen
  S19942C6(); // tgen
};
//SIG(-1 S19942C6) C1{ v1 Fp[3] Fi[2] FL}


void  S19942C6 ::v3(){vfunc_called(this, "_ZN8S19942C62v3Ev");}
S19942C6 ::~S19942C6(){ note_dtor("S19942C6", this);} // tgen
S19942C6 ::S19942C6(){ note_ctor("S19942C6", this);} // tgen

static void Test_S19942C6()
{
  extern Class_Descriptor cd_S19942C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S19942C6, buf);
    S19942C6 *dp, &lv = *(dp=new (buf) S19942C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S19942C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19942C6)");
    check_field_offset(lv, s19942c6f0, ABISELECT(8,4), "S19942C6.s19942c6f0");
    check_field_offset(lv, s19942c6f1, ABISELECT(32,16), "S19942C6.s19942c6f1");
    check_field_offset(lv, s19942c6f2, ABISELECT(40,24), "S19942C6.s19942c6f2");
    test_class_info(&lv, &cd_S19942C6);
    dp->~S19942C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C6(Test_S19942C6, "S19942C6", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S19942C6C1Ev();
extern void _ZN8S19942C6D1Ev();
Name_Map name_map_S19942C6[] = {
  NSPAIR(_ZN8S19942C6C1Ev),
  NSPAIR(_ZN8S19942C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19942C6[];
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY vtc_S19942C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C6[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
Class_Descriptor cd_S19942C6 = {  "S19942C6", // class name
  0,0,//no base classes
  &(vtc_S19942C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S19942C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19942C6),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S19942C8  {
  void *s19942c8f0;
  int s19942c8f1;
  long double s19942c8f2;
  void *s19942c8f3;
  __tsi64 s19942c8f4;
  __tsi64 s19942c8f5:64;
  int s19942c8f6;
  void *s19942c8f7;
  int s19942c8f8;
  __tsi64 s19942c8f9;
  int s19942c8f10;
  char s19942c8f11:8;
  void  mf19942c8(); // _ZN8S19942C89mf19942c8Ev
};
//SIG(1 S19942C8) U1{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19942C5  : S19942C6 {
  char s19942c5f0[10];
  long s19942c5f1[6];
  ::S19942C6 s19942c5f2;
  void *s19942c5f3;
  ::S19763C18_nt s19942c5f4;
  int s19942c5f5[4];
  ::S19942C8 s19942c5f6;
  int s19942c5f7;
  void *s19942c5f8;
  __tsi64 s19942c5f9;
  int s19942c5f10:19;
  virtual void  v4(); // _ZN8S19942C52v4Ev
  virtual void  v5(); // _ZN8S19942C52v5Ev
  ~S19942C5(); // tgen
  S19942C5(); // tgen
};
//SIG(-1 S19942C5) C1{ BC2{ v3 Fp[3] Fi[2] FL} v1 v2 Fc[10] Fl[6] FC2 Fp FC3{} Fi[4] FU4{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19}


void  S19942C5 ::v4(){vfunc_called(this, "_ZN8S19942C52v4Ev");}
void  S19942C5 ::v5(){vfunc_called(this, "_ZN8S19942C52v5Ev");}
S19942C5 ::~S19942C5(){ note_dtor("S19942C5", this);} // tgen
S19942C5 ::S19942C5(){ note_ctor("S19942C5", this);} // tgen

static void Test_S19942C5()
{
  extern Class_Descriptor cd_S19942C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,40)];
    init_test(&cd_S19942C5, buf);
    S19942C5 *dp, &lv = *(dp=new (buf) S19942C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,156), "sizeof(S19942C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C5)");
    check_base_class_offset(lv, (S19942C6*), 0, "S19942C5");
    check_field_offset(lv, s19942c5f0, ABISELECT(48,32), "S19942C5.s19942c5f0");
    check_field_offset(lv, s19942c5f1, ABISELECT(64,44), "S19942C5.s19942c5f1");
    check_field_offset(lv, s19942c5f2, ABISELECT(112,68), "S19942C5.s19942c5f2");
    check_field_offset(lv, s19942c5f3, ABISELECT(160,100), "S19942C5.s19942c5f3");
    check_field_offset(lv, s19942c5f4, ABISELECT(168,104), "S19942C5.s19942c5f4");
    check_field_offset(lv, s19942c5f5, ABISELECT(172,108), "S19942C5.s19942c5f5");
    check_field_offset(lv, s19942c5f6, ABISELECT(192,124), "S19942C5.s19942c5f6");
    check_field_offset(lv, s19942c5f7, ABISELECT(208,136), "S19942C5.s19942c5f7");
    check_field_offset(lv, s19942c5f8, ABISELECT(216,140), "S19942C5.s19942c5f8");
    check_field_offset(lv, s19942c5f9, ABISELECT(224,144), "S19942C5.s19942c5f9");
    set_bf_and_test(lv, s19942c5f10, ABISELECT(232,152), 0, 19, 1, "S19942C5");
    set_bf_and_test(lv, s19942c5f10, ABISELECT(232,152), 0, 19, hide_sll(1LL<<18), "S19942C5");
    test_class_info(&lv, &cd_S19942C5);
    dp->~S19942C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C5(Test_S19942C5, "S19942C5", ABISELECT(240,156));

#else // __cplusplus

extern void _ZN8S19942C5C1Ev();
extern void _ZN8S19942C5D1Ev();
Name_Map name_map_S19942C5[] = {
  NSPAIR(_ZN8S19942C5C1Ev),
  NSPAIR(_ZN8S19942C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
static Base_Class bases_S19942C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19942C5[];
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY vtc_S19942C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C5[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
Class_Descriptor cd_S19942C5 = {  "S19942C5", // class name
  bases_S19942C5, 1,
  &(vtc_S19942C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,156), // object size
  NSPAIRA(_ZTI8S19942C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19942C5),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C9  : S19942C6 {
  int s19942c9f0[10];
  short s19942c9f1:11;
  ::S19942C6 s19942c9f2;
  ~S19942C9(); // tgen
  S19942C9(); // tgen
};
//SIG(-1 S19942C9) C1{ BC2{ v1 Fp[3] Fi[2] FL} Fi[10] Fs:11 FC2}


S19942C9 ::~S19942C9(){ note_dtor("S19942C9", this);} // tgen
S19942C9 ::S19942C9(){ note_ctor("S19942C9", this);} // tgen

static void Test_S19942C9()
{
  extern Class_Descriptor cd_S19942C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,28)];
    init_test(&cd_S19942C9, buf);
    S19942C9 *dp, &lv = *(dp=new (buf) S19942C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,108), "sizeof(S19942C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19942C9)");
    check_base_class_offset(lv, (S19942C6*), 0, "S19942C9");
    check_field_offset(lv, s19942c9f0, ABISELECT(48,32), "S19942C9.s19942c9f0");
    set_bf_and_test(lv, s19942c9f1, ABISELECT(88,72), 0, 11, 1, "S19942C9");
    set_bf_and_test(lv, s19942c9f1, ABISELECT(88,72), 0, 11, hide_sll(1LL<<10), "S19942C9");
    check_field_offset(lv, s19942c9f2, ABISELECT(96,76), "S19942C9.s19942c9f2");
    test_class_info(&lv, &cd_S19942C9);
    dp->~S19942C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C9(Test_S19942C9, "S19942C9", ABISELECT(144,108));

#else // __cplusplus

extern void _ZN8S19942C9C1Ev();
extern void _ZN8S19942C9D1Ev();
Name_Map name_map_S19942C9[] = {
  NSPAIR(_ZN8S19942C9C1Ev),
  NSPAIR(_ZN8S19942C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
static Base_Class bases_S19942C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C6,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19942C9[];
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY vtc_S19942C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C9[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
Class_Descriptor cd_S19942C9 = {  "S19942C9", // class name
  bases_S19942C9, 1,
  &(vtc_S19942C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,108), // object size
  NSPAIRA(_ZTI8S19942C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19942C9),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S19942C11  {
  void *s19942c11f0;
  long double s19942c11f1[10];
  void *s19942c11f2;
  short s19942c11f3;
  int s19942c11f4;
  int s19942c11f5:10;
  void *s19942c11f6;
  int s19942c11f7;
  char s19942c11f8[3];
  void *s19942c11f9;
  void  mf19942c11(); // _ZN9S19942C1110mf19942c11Ev
};
//SIG(1 S19942C11) U1{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19942C10  {
  void *s19942c10f0;
  short s19942c10f1;
  ::S19763C18_nt s19942c10f2;
  void *s19942c10f3;
  __tsi64 s19942c10f4;
  int s19942c10f5;
  ::S19942C11 s19942c10f6;
  int s19942c10f7;
  int s19942c10f8:12;
  int s19942c10f9;
  int s19942c10f10:8;
  virtual void  v6(); // _ZN9S19942C102v6Ev
  ~S19942C10(); // tgen
  S19942C10(); // tgen
};
//SIG(-1 S19942C10) C1{ v1 Fp Fs FC2{} Fp FL Fi FU3{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8}


void  S19942C10 ::v6(){vfunc_called(this, "_ZN9S19942C102v6Ev");}
S19942C10 ::~S19942C10(){ note_dtor("S19942C10", this);} // tgen
S19942C10 ::S19942C10(){ note_ctor("S19942C10", this);} // tgen

static void Test_S19942C10()
{
  extern Class_Descriptor cd_S19942C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,42)];
    init_test(&cd_S19942C10, buf);
    S19942C10 *dp, &lv = *(dp=new (buf) S19942C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,164), "sizeof(S19942C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C10)");
    check_field_offset(lv, s19942c10f0, ABISELECT(8,4), "S19942C10.s19942c10f0");
    check_field_offset(lv, s19942c10f1, ABISELECT(16,8), "S19942C10.s19942c10f1");
    check_field_offset(lv, s19942c10f2, ABISELECT(18,10), "S19942C10.s19942c10f2");
    check_field_offset(lv, s19942c10f3, ABISELECT(24,12), "S19942C10.s19942c10f3");
    check_field_offset(lv, s19942c10f4, ABISELECT(32,16), "S19942C10.s19942c10f4");
    check_field_offset(lv, s19942c10f5, ABISELECT(40,24), "S19942C10.s19942c10f5");
    check_field_offset(lv, s19942c10f6, ABISELECT(48,28), "S19942C10.s19942c10f6");
    check_field_offset(lv, s19942c10f7, ABISELECT(208,148), "S19942C10.s19942c10f7");
    set_bf_and_test(lv, s19942c10f8, ABISELECT(212,152), 0, 12, 1, "S19942C10");
    set_bf_and_test(lv, s19942c10f8, ABISELECT(212,152), 0, 12, hide_sll(1LL<<11), "S19942C10");
    check_field_offset(lv, s19942c10f9, ABISELECT(216,156), "S19942C10.s19942c10f9");
    set_bf_and_test(lv, s19942c10f10, ABISELECT(220,160), 0, 8, 1, "S19942C10");
    set_bf_and_test(lv, s19942c10f10, ABISELECT(220,160), 0, 8, hide_sll(1LL<<7), "S19942C10");
    test_class_info(&lv, &cd_S19942C10);
    dp->~S19942C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C10(Test_S19942C10, "S19942C10", ABISELECT(224,164));

#else // __cplusplus

extern void _ZN9S19942C10C1Ev();
extern void _ZN9S19942C10D1Ev();
Name_Map name_map_S19942C10[] = {
  NSPAIR(_ZN9S19942C10C1Ev),
  NSPAIR(_ZN9S19942C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19942C10[];
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY vtc_S19942C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C10[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
Class_Descriptor cd_S19942C10 = {  "S19942C10", // class name
  0,0,//no base classes
  &(vtc_S19942C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,164), // object size
  NSPAIRA(_ZTI9S19942C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19942C10),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C4  : virtual S19942C5 , virtual S19942C6 , virtual S19942C9 , S19942C10 {
  long double s19942c4f0;
  int s19942c4f1;
  long double s19942c4f2[3];
  long double s19942c4f3;
  int s19942c4f4;
  __tsi64 s19942c4f5[9];
  int s19942c4f6;
  int s19942c4f7;
  int s19942c4f8;
  int s19942c4f9;
  virtual void  v7(); // _ZN8S19942C42v7Ev
  ~S19942C4(); // tgen
  S19942C4(); // tgen
};
//SIG(-1 S19942C4) C1{ VBC2{ BC3{ v2 Fp[3] Fi[2] FL} v3 v4 Fc[10] Fl[6] FC3 Fp FC4{} Fi[4] FU5{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC3 VBC6{ BC3 Fi[10] Fs:11 FC3} BC7{ v5 Fp Fs FC4 Fp FL Fi FU8{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v1 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi}


void  S19942C4 ::v7(){vfunc_called(this, "_ZN8S19942C42v7Ev");}
S19942C4 ::~S19942C4(){ note_dtor("S19942C4", this);} // tgen
S19942C4 ::S19942C4(){ note_ctor("S19942C4", this);} // tgen

static void Test_S19942C4()
{
  extern Class_Descriptor cd_S19942C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,155)];
    init_test(&cd_S19942C4, buf);
    S19942C4 *dp, &lv = *(dp=new (buf) S19942C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,616), "sizeof(S19942C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C4)");
    check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(416,320), "S19942C4");
    check_base_class_offset(lv, (S19942C5*), ABISELECT(416,320), "S19942C4");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*), ABISELECT(656,476), "S19942C4");
    check_base_class_offset(lv, (S19942C6*)(S19942C9*), ABISELECT(704,508), "S19942C4");
    check_base_class_offset(lv, (S19942C9*), ABISELECT(704,508), "S19942C4");
    check_base_class_offset(lv, (S19942C10*), 0, "S19942C4");
    check_field_offset(lv, s19942c4f0, ABISELECT(224,164), "S19942C4.s19942c4f0");
    check_field_offset(lv, s19942c4f1, ABISELECT(240,176), "S19942C4.s19942c4f1");
    check_field_offset(lv, s19942c4f2, ABISELECT(256,180), "S19942C4.s19942c4f2");
    check_field_offset(lv, s19942c4f3, ABISELECT(304,216), "S19942C4.s19942c4f3");
    check_field_offset(lv, s19942c4f4, ABISELECT(320,228), "S19942C4.s19942c4f4");
    check_field_offset(lv, s19942c4f5, ABISELECT(328,232), "S19942C4.s19942c4f5");
    check_field_offset(lv, s19942c4f6, ABISELECT(400,304), "S19942C4.s19942c4f6");
    check_field_offset(lv, s19942c4f7, ABISELECT(404,308), "S19942C4.s19942c4f7");
    check_field_offset(lv, s19942c4f8, ABISELECT(408,312), "S19942C4.s19942c4f8");
    check_field_offset(lv, s19942c4f9, ABISELECT(412,316), "S19942C4.s19942c4f9");
    test_class_info(&lv, &cd_S19942C4);
    dp->~S19942C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C4(Test_S19942C4, "S19942C4", ABISELECT(848,616));

#else // __cplusplus

extern void _ZN8S19942C4C1Ev();
extern void _ZN8S19942C4D1Ev();
Name_Map name_map_S19942C4[] = {
  NSPAIR(_ZN8S19942C4C1Ev),
  NSPAIR(_ZN8S19942C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
static Base_Class bases_S19942C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C6,    ABISELECT(416,320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(416,320), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C6,    ABISELECT(656,476), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C6,    ABISELECT(704,508), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19942C9,    ABISELECT(704,508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19942C4[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY vtc_S19942C4[] = {
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  ABISELECT(-704,-508),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern VTBL_ENTRY _ZTV8S19942C4[];
static  VTT_ENTRY vtt_S19942C4[] = {
  {&(_ZTV8S19942C4[5]),  5,23},
  {&(_ZTV8S19942C4[12]),  12,23},
  {&(_ZTV8S19942C4[18]),  18,23},
  {&(_ZTV8S19942C4[22]),  22,23},
};
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
Class_Descriptor cd_S19942C4 = {  "S19942C4", // class name
  bases_S19942C4, 6,
  &(vtc_S19942C4[0]), // expected_vtbl_contents
  &(vtt_S19942C4[0]), // expected_vtt_contents
  ABISELECT(848,616), // object size
  NSPAIRA(_ZTI8S19942C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19942C4),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19942C4),4, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C12_nt  {
  char s19942c12f0[2];
  void  mf19942c12(); // _ZN12S19942C12_nt10mf19942c12Ev
};
//SIG(-1 S19942C12_nt) C1{ m Fc[2]}


void  S19942C12_nt ::mf19942c12(){}

//skip512 S19942C12_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI12S19942C12_nt[];
VTBL_ENTRY *P__ZTI12S19942C12_nt = _ZTI12S19942C12_nt; 
Class_Descriptor cd_S19942C12_nt = {  "S19942C12_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  2, // object size
  NSPAIRA(_ZTI12S19942C12_nt),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C13  : S19942C6 , virtual S19942C9 , virtual S19942C4 , virtual S19942C10 , S19942C5 {
  __tsi64 s19942c13f0[3];
  ::S19942C12_nt s19942c13f1;
  void *s19942c13f2;
  short s19942c13f3;
  char s19942c13f4;
  int s19942c13f5;
  int s19942c13f6;
  virtual  ~S19942C13(); // _ZN9S19942C13D2Ev
  S19942C13(); // tgen
};
//SIG(-1 S19942C13) C1{ BC2{ v1 Fp[3] Fi[2] FL} VBC3{ BC2 Fi[10] Fs:11 FC2} VBC4{ VBC5{ BC2 v2 v3 Fc[10] Fl[6] FC2 Fp FC6{} Fi[4] FU7{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC2 VBC3 BC8{ v4 Fp Fs FC6 Fp FL Fi FU9{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v5 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC8 BC5 vd FL[3] FC10{ m Fc[2]} Fp Fs Fc Fi Fi}


 S19942C13 ::~S19942C13(){ note_dtor("S19942C13", this);}
S19942C13 ::S19942C13(){ note_ctor("S19942C13", this);} // tgen

static void Test_S19942C13()
{
  extern Class_Descriptor cd_S19942C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(90,254)];
    init_test(&cd_S19942C13, buf);
    S19942C13 *dp, &lv = *(dp=new (buf) S19942C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1424,1012), "sizeof(S19942C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C13)");
    /*is_ambiguous_... S19942C13::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*), 0, "S19942C13");
    check_base_class_offset(lv, (S19942C6*)(S19942C9*), ABISELECT(344,232), "S19942C13");
    check_base_class_offset(lv, (S19942C9*), ABISELECT(344,232), "S19942C13");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*), ABISELECT(344,232), "S19942C13");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(912,660), "S19942C13");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*), ABISELECT(912,660), "S19942C13");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*), ABISELECT(1152,816), "S19942C13");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*), ABISELECT(496,340), "S19942C13");
    check_base_class_offset(lv, (S19942C4*), ABISELECT(496,340), "S19942C13");
    /*is_ambiguous_... S19942C13::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*), ABISELECT(1200,848), "S19942C13");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(48,32), "S19942C13");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C5*), ABISELECT(48,32), "S19942C13");
    check_field_offset(lv, s19942c13f0, ABISELECT(288,188), "S19942C13.s19942c13f0");
    check_field_offset(lv, s19942c13f1, ABISELECT(312,212), "S19942C13.s19942c13f1");
    check_field_offset(lv, s19942c13f2, ABISELECT(320,216), "S19942C13.s19942c13f2");
    check_field_offset(lv, s19942c13f3, ABISELECT(328,220), "S19942C13.s19942c13f3");
    check_field_offset(lv, s19942c13f4, ABISELECT(330,222), "S19942C13.s19942c13f4");
    check_field_offset(lv, s19942c13f5, ABISELECT(332,224), "S19942C13.s19942c13f5");
    check_field_offset(lv, s19942c13f6, ABISELECT(336,228), "S19942C13.s19942c13f6");
    test_class_info(&lv, &cd_S19942C13);
    dp->~S19942C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C13(Test_S19942C13, "S19942C13", ABISELECT(1424,1012));

#else // __cplusplus

extern void _ZN9S19942C13C1Ev();
extern void _ZN9S19942C13D2Ev();
Name_Map name_map_S19942C13[] = {
  NSPAIR(_ZN9S19942C13C1Ev),
  NSPAIR(_ZN9S19942C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
static Base_Class bases_S19942C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C6,    ABISELECT(344,232), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19942C9,    ABISELECT(344,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C6,    ABISELECT(912,660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(912,660), //bcp->offset
    28, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(1152,816), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19942C10,    ABISELECT(496,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19942C4,    ABISELECT(496,340), //bcp->offset
    19, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C10,    ABISELECT(1200,848), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C6,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(48,32), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19942C13[];
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C13D1Ev();
extern void _ZN9S19942C13D0Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY vtc_S19942C13[] = {
  ABISELECT(1200,848),
  ABISELECT(1152,816),
  ABISELECT(912,660),
  ABISELECT(496,340),
  ABISELECT(344,232),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D0Ev,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-344,-232),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  0,
  ABISELECT(-152,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-496,-340),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  0,
  0,
  0,
  ABISELECT(-912,-660),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-1152,-816),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  ABISELECT(-1200,-848),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern VTBL_ENTRY _ZTV9S19942C13[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C13[] = {
  ABISELECT(-152,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C4__9S19942C13[] = {
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C4__9S19942C13[] = {
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C13[] = {
  0,
  ABISELECT(152,108),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
static  VTT_ENTRY vtt_S19942C13[] = {
  {&(_ZTV9S19942C13[7]),  7,44},
  {&(_ZTV9S19942C13[18]),  18,44},
  {&(_ZTV9S19942C13[26]),  26,44},
  {&(_ZTV9S19942C13[33]),  33,44},
  {&(_ZTV9S19942C13[39]),  39,44},
  {&(_ZTV9S19942C13[43]),  43,44},
  {&(_tg__ZTV8S19942C4__9S19942C13[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C4__9S19942C13[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C4__9S19942C13[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19942C13[];
extern  VTBL_ENTRY _ZTV9S19942C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C13[];
Class_Descriptor cd_S19942C13 = {  "S19942C13", // class name
  bases_S19942C13, 11,
  &(vtc_S19942C13[0]), // expected_vtbl_contents
  &(vtt_S19942C13[0]), // expected_vtt_contents
  ABISELECT(1424,1012), // object size
  NSPAIRA(_ZTI9S19942C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19942C13),44, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19942C13),10, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C3  : S19942C4 , virtual S19942C12_nt {
  ::S19942C13 s19942c3f0;
  void *s19942c3f1;
  virtual  ~S19942C3(); // _ZN8S19942C3D2Ev
  virtual void  v10(); // _ZN8S19942C33v10Ev
  virtual void  v11(); // _ZN8S19942C33v11Ev
  virtual void  v12(); // _ZN8S19942C33v12Ev
  S19942C3(); // tgen
};
//SIG(-1 S19942C3) C1{ BC2{ VBC3{ BC4{ v4 Fp[3] Fi[2] FL} v5 v6 Fc[10] Fl[6] FC4 Fp FC5{} Fi[4] FU6{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC4 VBC7{ BC4 Fi[10] Fs:11 FC4} BC8{ v7 Fp Fs FC5 Fp FL Fi FU9{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v8 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC10{ m Fc[2]} vd v1 v2 v3 FC11{ BC4 VBC7 VBC2 VBC8 BC3 vd FL[3] FC10 Fp Fs Fc Fi Fi} Fp}


 S19942C3 ::~S19942C3(){ note_dtor("S19942C3", this);}
void  S19942C3 ::v10(){vfunc_called(this, "_ZN8S19942C33v10Ev");}
void  S19942C3 ::v11(){vfunc_called(this, "_ZN8S19942C33v11Ev");}
void  S19942C3 ::v12(){vfunc_called(this, "_ZN8S19942C33v12Ev");}
S19942C3 ::S19942C3(){ note_ctor("S19942C3", this);} // tgen

static void Test_S19942C3()
{
  extern Class_Descriptor cd_S19942C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(145,410)];
    init_test(&cd_S19942C3, buf);
    S19942C3 *dp, &lv = *(dp=new (buf) S19942C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2304,1636), "sizeof(S19942C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C3)");
    check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(1856,1336), "S19942C3");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*), ABISELECT(1856,1336), "S19942C3");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*), ABISELECT(2096,1492), "S19942C3");
    check_base_class_offset(lv, (S19942C6*)(S19942C9*), ABISELECT(2144,1524), "S19942C3");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*), ABISELECT(2144,1524), "S19942C3");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*), 0, "S19942C3");
    check_base_class_offset(lv, (S19942C4*), 0, "S19942C3");
    check_base_class_offset(lv, (S19942C12_nt*), ABISELECT(2288,1632), "S19942C3");
    check_field_offset(lv, s19942c3f0, ABISELECT(416,320), "S19942C3.s19942c3f0");
    check_field_offset(lv, s19942c3f1, ABISELECT(1840,1332), "S19942C3.s19942c3f1");
    test_class_info(&lv, &cd_S19942C3);
    dp->~S19942C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C3(Test_S19942C3, "S19942C3", ABISELECT(2304,1636));

#else // __cplusplus

extern void _ZN8S19942C3C1Ev();
extern void _ZN8S19942C3D2Ev();
Name_Map name_map_S19942C3[] = {
  NSPAIR(_ZN8S19942C3C1Ev),
  NSPAIR(_ZN8S19942C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
static Base_Class bases_S19942C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C6,    ABISELECT(1856,1336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(1856,1336), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(2096,1492), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(2144,1524), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19942C9,    ABISELECT(2144,1524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19942C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19942C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C12_nt,    ABISELECT(2288,1632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19942C3[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C3D1Ev();
extern void _ZN8S19942C3D0Ev();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY vtc_S19942C3[] = {
  ABISELECT(2288,1632),
  ABISELECT(2144,1524),
  ABISELECT(2096,1492),
  ABISELECT(1856,1336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
  0,
  0,
  0,
  ABISELECT(-1856,-1336),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-2096,-1492),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  ABISELECT(-2144,-1524),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern VTBL_ENTRY _ZTV8S19942C3[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__8S19942C3[] = {
  ABISELECT(2144,1524),
  ABISELECT(2096,1492),
  ABISELECT(1856,1336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C4__8S19942C3[] = {
  0,
  0,
  0,
  ABISELECT(-1856,-1336),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C4__8S19942C3[] = {
  0,
  ABISELECT(-2096,-1492),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C4__8S19942C3[] = {
  0,
  ABISELECT(-2144,-1524),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
static  VTT_ENTRY vtt_S19942C3[] = {
  {&(_ZTV8S19942C3[6]),  6,29},
  {&(_tg__ZTV8S19942C4__8S19942C3[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C4__8S19942C3[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C4__8S19942C3[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C4__8S19942C3[3]),  3,4},
  {&(_ZTV8S19942C3[18]),  18,29},
  {&(_ZTV8S19942C3[24]),  24,29},
  {&(_ZTV8S19942C3[28]),  28,29},
};
extern VTBL_ENTRY _ZTI8S19942C3[];
extern  VTBL_ENTRY _ZTV8S19942C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C3[];
Class_Descriptor cd_S19942C3 = {  "S19942C3", // class name
  bases_S19942C3, 8,
  &(vtc_S19942C3[0]), // expected_vtbl_contents
  &(vtt_S19942C3[0]), // expected_vtt_contents
  ABISELECT(2304,1636), // object size
  NSPAIRA(_ZTI8S19942C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19942C3),29, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19942C3),8, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C2  {
  int s19942c2f0[2];
  ::S19942C3 s19942c2f1[9];
  int s19942c2f2;
  long s19942c2f3;
  int s19942c2f4;
  int s19942c2f5;
  ::S19942C6 s19942c2f6;
  int s19942c2f7;
  int s19942c2f8;
  int s19942c2f9;
  long double s19942c2f10;
  int s19942c2f11;
  virtual void  v1(); // _ZN8S19942C22v1Ev
  virtual void  v2(); // _ZN8S19942C22v2Ev
  ~S19942C2(); // tgen
  S19942C2(); // tgen
};
//SIG(-1 S19942C2) C1{ v1 v2 Fi[2] FC2{ BC3{ VBC4{ BC5{ v6 Fp[3] Fi[2] FL} v7 v8 Fc[10] Fl[6] FC5 Fp FC6{} Fi[4] FU7{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC5 VBC8{ BC5 Fi[10] Fs:11 FC5} BC9{ v9 Fp Fs FC6 Fp FL Fi FU10{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v10 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC11{ m Fc[2]} vd v3 v4 v5 FC12{ BC5 VBC8 VBC3 VBC9 BC4 vd FL[3] FC11 Fp Fs Fc Fi Fi} Fp}[9] Fi Fl Fi Fi FC5 Fi Fi Fi FD Fi}


void  S19942C2 ::v1(){vfunc_called(this, "_ZN8S19942C22v1Ev");}
void  S19942C2 ::v2(){vfunc_called(this, "_ZN8S19942C22v2Ev");}
S19942C2 ::~S19942C2(){ note_dtor("S19942C2", this);} // tgen
S19942C2 ::S19942C2(){ note_ctor("S19942C2", this);} // tgen

static void Test_S19942C2()
{
  extern Class_Descriptor cd_S19942C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1306,3704)];
    init_test(&cd_S19942C2, buf);
    S19942C2 *dp, &lv = *(dp=new (buf) S19942C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(20880,14812), "sizeof(S19942C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C2)");
    check_field_offset(lv, s19942c2f0, ABISELECT(8,4), "S19942C2.s19942c2f0");
    check_field_offset(lv, s19942c2f1, ABISELECT(16,12), "S19942C2.s19942c2f1");
    check_field_offset(lv, s19942c2f2, ABISELECT(20752,14736), "S19942C2.s19942c2f2");
    check_field_offset(lv, s19942c2f3, ABISELECT(20760,14740), "S19942C2.s19942c2f3");
    check_field_offset(lv, s19942c2f4, ABISELECT(20768,14744), "S19942C2.s19942c2f4");
    check_field_offset(lv, s19942c2f5, ABISELECT(20772,14748), "S19942C2.s19942c2f5");
    check_field_offset(lv, s19942c2f6, ABISELECT(20776,14752), "S19942C2.s19942c2f6");
    check_field_offset(lv, s19942c2f7, ABISELECT(20824,14784), "S19942C2.s19942c2f7");
    check_field_offset(lv, s19942c2f8, ABISELECT(20828,14788), "S19942C2.s19942c2f8");
    check_field_offset(lv, s19942c2f9, ABISELECT(20832,14792), "S19942C2.s19942c2f9");
    check_field_offset(lv, s19942c2f10, ABISELECT(20848,14796), "S19942C2.s19942c2f10");
    check_field_offset(lv, s19942c2f11, ABISELECT(20864,14808), "S19942C2.s19942c2f11");
    test_class_info(&lv, &cd_S19942C2);
    dp->~S19942C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C2(Test_S19942C2, "S19942C2", ABISELECT(20880,14812));

#else // __cplusplus

extern void _ZN8S19942C2C1Ev();
extern void _ZN8S19942C2D1Ev();
Name_Map name_map_S19942C2[] = {
  NSPAIR(_ZN8S19942C2C1Ev),
  NSPAIR(_ZN8S19942C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19942C2[];
extern void _ZN8S19942C22v1Ev();
extern void _ZN8S19942C22v2Ev();
static  VTBL_ENTRY vtc_S19942C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C2[0]),
  (VTBL_ENTRY)&_ZN8S19942C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19942C22v2Ev,
};
extern VTBL_ENTRY _ZTI8S19942C2[];
extern  VTBL_ENTRY _ZTV8S19942C2[];
Class_Descriptor cd_S19942C2 = {  "S19942C2", // class name
  0,0,//no base classes
  &(vtc_S19942C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(20880,14812), // object size
  NSPAIRA(_ZTI8S19942C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19942C2),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C15  : virtual S19942C6 , S19942C4 , virtual S19942C12_nt , S19942C10 {
  int s19942c15f0;
  long double s19942c15f1;
  ::S19942C12_nt s19942c15f2;
  void *s19942c15f3;
  short s19942c15f4;
  int s19942c15f5;
  int s19942c15f6;
  int s19942c15f7;
  virtual void  v8(); // _ZN9S19942C152v8Ev
  ~S19942C15(); // tgen
  S19942C15(); // tgen
};
//SIG(-1 S19942C15) C1{ VBC2{ v2 Fp[3] Fi[2] FL} BC3{ VBC4{ BC2 v3 v4 Fc[10] Fl[6] FC2 Fp FC5{} Fi[4] FU6{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC2 VBC7{ BC2 Fi[10] Fs:11 FC2} BC8{ v5 Fp Fs FC5 Fp FL Fi FU9{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v6 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC10{ m Fc[2]} BC8 v1 Fi FD FC10 Fp Fs Fi Fi Fi}


void  S19942C15 ::v8(){vfunc_called(this, "_ZN9S19942C152v8Ev");}
S19942C15 ::~S19942C15(){ note_dtor("S19942C15", this);} // tgen
S19942C15 ::S19942C15(){ note_ctor("S19942C15", this);} // tgen

static void Test_S19942C15()
{
  extern Class_Descriptor cd_S19942C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(73,207)];
    init_test(&cd_S19942C15, buf);
    S19942C15 *dp, &lv = *(dp=new (buf) S19942C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1152,824), "sizeof(S19942C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C15)");
    /*is_ambiguous_... S19942C15::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*), ABISELECT(704,524), "S19942C15");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*), ABISELECT(704,524), "S19942C15");
    check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(752,556), "S19942C15");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*), ABISELECT(752,556), "S19942C15");
    check_base_class_offset(lv, (S19942C6*)(S19942C9*), ABISELECT(992,712), "S19942C15");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*), ABISELECT(992,712), "S19942C15");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*), 0, "S19942C15");
    check_base_class_offset(lv, (S19942C4*), 0, "S19942C15");
    check_base_class_offset(lv, (S19942C12_nt*), ABISELECT(1136,820), "S19942C15");
    /*is_ambiguous_... S19942C15::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*), ABISELECT(416,320), "S19942C15");
    check_field_offset(lv, s19942c15f0, ABISELECT(640,484), "S19942C15.s19942c15f0");
    check_field_offset(lv, s19942c15f1, ABISELECT(656,488), "S19942C15.s19942c15f1");
    check_field_offset(lv, s19942c15f2, ABISELECT(672,500), "S19942C15.s19942c15f2");
    check_field_offset(lv, s19942c15f3, ABISELECT(680,504), "S19942C15.s19942c15f3");
    check_field_offset(lv, s19942c15f4, ABISELECT(688,508), "S19942C15.s19942c15f4");
    check_field_offset(lv, s19942c15f5, ABISELECT(692,512), "S19942C15.s19942c15f5");
    check_field_offset(lv, s19942c15f6, ABISELECT(696,516), "S19942C15.s19942c15f6");
    check_field_offset(lv, s19942c15f7, ABISELECT(700,520), "S19942C15.s19942c15f7");
    test_class_info(&lv, &cd_S19942C15);
    dp->~S19942C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C15(Test_S19942C15, "S19942C15", ABISELECT(1152,824));

#else // __cplusplus

extern void _ZN9S19942C15C1Ev();
extern void _ZN9S19942C15D1Ev();
Name_Map name_map_S19942C15[] = {
  NSPAIR(_ZN9S19942C15C1Ev),
  NSPAIR(_ZN9S19942C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
static Base_Class bases_S19942C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C6,    ABISELECT(704,524), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C6,    ABISELECT(752,556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(752,556), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(992,712), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19942C9,    ABISELECT(992,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19942C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19942C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C12_nt,    ABISELECT(1136,820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C10,    ABISELECT(416,320), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19942C15[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C152v8Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY vtc_S19942C15[] = {
  ABISELECT(1136,820),
  ABISELECT(992,712),
  ABISELECT(704,524),
  ABISELECT(752,556),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C152v8Ev,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  0,
  ABISELECT(-704,-524),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  0,
  0,
  ABISELECT(-752,-556),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-992,-712),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern VTBL_ENTRY _ZTV9S19942C15[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C15[] = {
  ABISELECT(992,712),
  ABISELECT(704,524),
  ABISELECT(752,556),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C4__9S19942C15[] = {
  0,
  0,
  0,
  ABISELECT(-752,-556),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C4__9S19942C15[] = {
  0,
  ABISELECT(-704,-524),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C15[] = {
  0,
  ABISELECT(-992,-712),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
static  VTT_ENTRY vtt_S19942C15[] = {
  {&(_ZTV9S19942C15[6]),  6,28},
  {&(_tg__ZTV8S19942C4__9S19942C15[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C4__9S19942C15[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C4__9S19942C15[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C15[3]),  3,4},
  {&(_ZTV9S19942C15[15]),  15,28},
  {&(_ZTV9S19942C15[21]),  21,28},
  {&(_ZTV9S19942C15[27]),  27,28},
};
extern VTBL_ENTRY _ZTI9S19942C15[];
extern  VTBL_ENTRY _ZTV9S19942C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C15[];
Class_Descriptor cd_S19942C15 = {  "S19942C15", // class name
  bases_S19942C15, 9,
  &(vtc_S19942C15[0]), // expected_vtbl_contents
  &(vtt_S19942C15[0]), // expected_vtt_contents
  ABISELECT(1152,824), // object size
  NSPAIRA(_ZTI9S19942C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19942C15),28, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19942C15),8, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C14  : S19942C5 , virtual S19942C10 , virtual S19942C4 , S19942C13 , S19942C15 {
  void *s19942c14f0;
  int s19942c14f1;
  ::S19942C13 s19942c14f2;
  char s19942c14f3;
  int s19942c14f4;
  ::S19763C18_nt s19942c14f5;
  int s19942c14f6;
  int s19942c14f7;
  ::S19942C5 s19942c14f8;
  ::S19942C11 s19942c14f9;
  virtual void  v9(); // _ZN9S19942C142v9Ev
  ~S19942C14(); // tgen
  S19942C14(); // tgen
};
//SIG(-1 S19942C14) C1{ BC2{ BC3{ v2 Fp[3] Fi[2] FL} v3 v4 Fc[10] Fl[6] FC3 Fp FC4{} Fi[4] FU5{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC6{ v5 Fp Fs FC4 Fp FL Fi FU7{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} VBC8{ VBC2 VBC3 VBC9{ BC3 Fi[10] Fs:11 FC3} BC6 v6 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} BC10{ BC3 VBC9 VBC8 VBC6 BC2 vd FL[3] FC11{ m Fc[2]} Fp Fs Fc Fi Fi} BC12{ VBC3 BC8 VBC11 BC6 v7 Fi FD FC11 Fp Fs Fi Fi Fi} v1 Fp Fi FC10 Fc Fi FC4 Fi Fi FC2 FU7}


void  S19942C14 ::v9(){vfunc_called(this, "_ZN9S19942C142v9Ev");}
S19942C14 ::~S19942C14(){ note_dtor("S19942C14", this);} // tgen
S19942C14 ::S19942C14(){ note_ctor("S19942C14", this);} // tgen

static void Test_S19942C14()
{
  extern Class_Descriptor cd_S19942C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(267,754)];
    init_test(&cd_S19942C14, buf);
    S19942C14 *dp, &lv = *(dp=new (buf) S19942C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4256,3012), "sizeof(S19942C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C14)");
    /*is_ambiguous_... S19942C14::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*), 0, "S19942C14");
    /*is_ambiguous_... S19942C14::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C5*), 0, "S19942C14");
    /*is_ambiguous_... S19942C14::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*), ABISELECT(3168,2228), "S19942C14");
    /*is_ambiguous_... S19942C13::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C13*), ABISELECT(3168,2228), "S19942C14");
    /*is_ambiguous_... S19942C14::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(3808,2712), "S19942C14");
    /*is_ambiguous_... S19942C14::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C4*), ABISELECT(3808,2712), "S19942C14");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*)(S19942C15*), ABISELECT(3808,2712), "S19942C14");
    /*is_ambiguous_... S19942C14::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*), ABISELECT(4048,2868), "S19942C14");
    /*is_ambiguous_... S19942C15::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C15*), ABISELECT(4048,2868), "S19942C14");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*)(S19942C15*), ABISELECT(4048,2868), "S19942C14");
    check_base_class_offset(lv, (S19942C6*)(S19942C9*), ABISELECT(4096,2900), "S19942C14");
    /*is_ambiguous_... S19942C14::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C9*)(S19942C4*), ABISELECT(4096,2900), "S19942C14");
    check_base_class_offset(lv, (S19942C9*)(S19942C13*), ABISELECT(4096,2900), "S19942C14");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*)(S19942C15*), ABISELECT(4096,2900), "S19942C14");
    /*is_ambiguous_... S19942C14::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C4*), ABISELECT(3392,2392), "S19942C14");
    /*is_ambiguous_... S19942C14::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C4*), ABISELECT(3392,2392), "S19942C14");
    check_base_class_offset(lv, (S19942C4*)(S19942C13*), ABISELECT(3392,2392), "S19942C14");
    /*is_ambiguous_... S19942C13::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C13*), ABISELECT(240,156), "S19942C14");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*)(S19942C13*), ABISELECT(288,188), "S19942C14");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C13*), ABISELECT(288,188), "S19942C14");
    check_base_class_offset(lv, (S19942C13*), ABISELECT(240,156), "S19942C14");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*)(S19942C15*), ABISELECT(592,388), "S19942C14");
    check_base_class_offset(lv, (S19942C4*)(S19942C15*), ABISELECT(592,388), "S19942C14");
    check_base_class_offset(lv, (S19942C12_nt*)(S19942C15*), ABISELECT(4240,3008), "S19942C14");
    /*is_ambiguous_... S19942C15::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C15*), ABISELECT(1008,708), "S19942C14");
    check_base_class_offset(lv, (S19942C15*), ABISELECT(592,388), "S19942C14");
    check_field_offset(lv, s19942c14f0, ABISELECT(1296,912), "S19942C14.s19942c14f0");
    check_field_offset(lv, s19942c14f1, ABISELECT(1304,916), "S19942C14.s19942c14f1");
    check_field_offset(lv, s19942c14f2, ABISELECT(1312,920), "S19942C14.s19942c14f2");
    check_field_offset(lv, s19942c14f3, ABISELECT(2736,1932), "S19942C14.s19942c14f3");
    check_field_offset(lv, s19942c14f4, ABISELECT(2740,1936), "S19942C14.s19942c14f4");
    check_field_offset(lv, s19942c14f5, ABISELECT(2744,1940), "S19942C14.s19942c14f5");
    check_field_offset(lv, s19942c14f6, ABISELECT(2748,1944), "S19942C14.s19942c14f6");
    check_field_offset(lv, s19942c14f7, ABISELECT(2752,1948), "S19942C14.s19942c14f7");
    check_field_offset(lv, s19942c14f8, ABISELECT(2768,1952), "S19942C14.s19942c14f8");
    check_field_offset(lv, s19942c14f9, ABISELECT(3008,2108), "S19942C14.s19942c14f9");
    test_class_info(&lv, &cd_S19942C14);
    dp->~S19942C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C14(Test_S19942C14, "S19942C14", ABISELECT(4256,3012));

#else // __cplusplus

extern void _ZN9S19942C14C1Ev();
extern void _ZN9S19942C14D1Ev();
Name_Map name_map_S19942C14[] = {
  NSPAIR(_ZN9S19942C14C1Ev),
  NSPAIR(_ZN9S19942C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C13;
extern VTBL_ENTRY _ZTI9S19942C13[];
extern  VTBL_ENTRY _ZTV9S19942C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C13[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C15;
extern VTBL_ENTRY _ZTI9S19942C15[];
extern  VTBL_ENTRY _ZTV9S19942C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C15[];
static Base_Class bases_S19942C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19942C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C10,    ABISELECT(3168,2228), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C6,    ABISELECT(3808,2712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(3808,2712), //bcp->offset
    54, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(4048,2868), //bcp->offset
    62, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(4096,2900), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19942C9,    ABISELECT(4096,2900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19942C10,    ABISELECT(3392,2392), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19942C4,    ABISELECT(3392,2392), //bcp->offset
    45, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C6,    ABISELECT(240,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19942C6,    ABISELECT(288,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(288,188), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19942C13,    ABISELECT(240,156), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C10,    ABISELECT(592,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19942C4,    ABISELECT(592,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19942C12_nt,    ABISELECT(4240,3008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19942C10,    ABISELECT(1008,708), //bcp->offset
    38, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19942C15,    ABISELECT(592,388), //bcp->offset
    29, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19942C14[];
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN9S19942C142v9Ev();
extern void _ZN9S19942C14D1Ev();
extern void _ZN9S19942C14D0Ev();
extern void _ZN8S19942C62v3Ev();
extern void ABISELECT(_ZThn240_N9S19942C14D1Ev,_ZThn156_N9S19942C14D1Ev)();
extern void ABISELECT(_ZThn240_N9S19942C14D0Ev,_ZThn156_N9S19942C14D0Ev)();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C152v8Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY vtc_S19942C14[] = {
  ABISELECT(4240,3008),
  ABISELECT(4096,2900),
  ABISELECT(4048,2868),
  ABISELECT(3808,2712),
  ABISELECT(3392,2392),
  ABISELECT(3168,2228),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19942C142v9Ev,
  (VTBL_ENTRY)&_ZN9S19942C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C14D0Ev,
  ABISELECT(2928,2072),
  ABISELECT(3808,2712),
  ABISELECT(3568,2556),
  ABISELECT(3152,2236),
  ABISELECT(3856,2744),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N9S19942C14D1Ev,_ZThn156_N9S19942C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N9S19942C14D0Ev,_ZThn156_N9S19942C14D0Ev),
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  ABISELECT(3648,2620),
  ABISELECT(3504,2512),
  ABISELECT(3456,2480),
  ABISELECT(3216,2324),
  ABISELECT(-592,-388),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C152v8Ev,
  ABISELECT(-1008,-708),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  0,
  ABISELECT(-3168,-2228),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  0,
  0,
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-3392,-2392),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  0,
  0,
  0,
  ABISELECT(-3808,-2712),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-4048,-2868),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  ABISELECT(-4096,-2900),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern VTBL_ENTRY _ZTV9S19942C14[];
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C13D1Ev();
extern void _ZN9S19942C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C13__9S19942C14[] = {
  ABISELECT(2928,2072),
  ABISELECT(3808,2712),
  ABISELECT(3568,2556),
  ABISELECT(3152,2236),
  ABISELECT(3856,2744),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D0Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A1__9S19942C13__9S19942C14[] = {
  0,
  ABISELECT(-3856,-2744),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C13__9S19942C14[] = {
  0,
  0,
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-3152,-2236),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__9S19942C13__9S19942C14[] = {
  0,
  0,
  0,
  ABISELECT(-3568,-2556),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A3__9S19942C13__9S19942C14[] = {
  0,
  ABISELECT(-3808,-2712),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C10__A1__9S19942C13__9S19942C14[] = {
  0,
  ABISELECT(-2928,-2072),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C15__9S19942C14[] = {
  ABISELECT(3648,2620),
  ABISELECT(3504,2512),
  ABISELECT(3456,2480),
  ABISELECT(3216,2324),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C152v8Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C49S19942C15__A1__9S19942C14[] = {
  ABISELECT(3504,2512),
  ABISELECT(3456,2480),
  ABISELECT(3216,2324),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C49S19942C15__A1__9S19942C14[] = {
  0,
  0,
  0,
  ABISELECT(-3216,-2324),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C49S19942C15__A1__9S19942C14[] = {
  0,
  ABISELECT(-3456,-2480),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C49S19942C15__A1__9S19942C14[] = {
  0,
  ABISELECT(-3504,-2512),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__9S19942C15__9S19942C14[] = {
  0,
  ABISELECT(-3456,-2480),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__9S19942C15__9S19942C14[] = {
  0,
  0,
  0,
  ABISELECT(-3216,-2324),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__9S19942C15__9S19942C14[] = {
  0,
  ABISELECT(-3504,-2512),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C14[] = {
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C4__9S19942C14[] = {
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C4__9S19942C14[] = {
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C14[] = {
  0,
  ABISELECT(-704,-508),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
static  VTT_ENTRY vtt_S19942C14[] = {
  {&(_ZTV9S19942C14[8]),  8,70},
  {&(_tg__ZTV9S19942C13__9S19942C14[7]),  7,10},
  {&(_tg__ZTV8S19942C68S19942C9__A1__9S19942C13__9S19942C14[3]),  3,4},
  {&(_tg__ZTV8S19942C4__9S19942C13__9S19942C14[7]),  7,9},
  {&(_tg__ZTV8S19942C5__9S19942C13__9S19942C14[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A3__9S19942C13__9S19942C14[3]),  3,4},
  {&(_tg__ZTV9S19942C10__A1__9S19942C13__9S19942C14[3]),  3,4},
  {&(_tg__ZTV9S19942C15__9S19942C14[6]),  6,9},
  {&(_tg__ZTV8S19942C49S19942C15__A1__9S19942C14[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C49S19942C15__A1__9S19942C14[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C49S19942C15__A1__9S19942C14[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C49S19942C15__A1__9S19942C14[3]),  3,4},
  {&(_tg__ZTV8S19942C6__9S19942C15__9S19942C14[3]),  3,4},
  {&(_tg__ZTV8S19942C5__9S19942C15__9S19942C14[5]),  5,8},
  {&(_tg__ZTV8S19942C68S19942C9__A2__9S19942C15__9S19942C14[3]),  3,4},
  {&(_ZTV9S19942C14[44]),  44,70},
  {&(_ZTV9S19942C14[52]),  52,70},
  {&(_ZTV9S19942C14[59]),  59,70},
  {&(_ZTV9S19942C14[65]),  65,70},
  {&(_ZTV9S19942C14[69]),  69,70},
  {&(_ZTV9S19942C14[21]),  21,70},
  {&(_ZTV9S19942C14[35]),  35,70},
  {&(_tg__ZTV8S19942C4__9S19942C14[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C4__9S19942C14[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C4__9S19942C14[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19942C14[];
extern  VTBL_ENTRY _ZTV9S19942C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C14[];
Class_Descriptor cd_S19942C14 = {  "S19942C14", // class name
  bases_S19942C14, 19,
  &(vtc_S19942C14[0]), // expected_vtbl_contents
  &(vtt_S19942C14[0]), // expected_vtt_contents
  ABISELECT(4256,3012), // object size
  NSPAIRA(_ZTI9S19942C14),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19942C14),70, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19942C14),26, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C16  : virtual S19942C10 , virtual S19942C13 , S19942C12_nt , S19942C3 {
  long s19942c16f0;
  ::S19942C9 s19942c16f1[10];
  ~S19942C16(); // tgen
  S19942C16(); // tgen
};
//SIG(-1 S19942C16) C1{ VBC2{ v1 Fp Fs FC3{} Fp FL Fi FU4{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} VBC5{ BC6{ v2 Fp[3] Fi[2] FL} VBC7{ BC6 Fi[10] Fs:11 FC6} VBC8{ VBC9{ BC6 v3 v4 Fc[10] Fl[6] FC6 Fp FC3 Fi[4] FU10{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC6 VBC7 BC2 v5 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC2 BC9 vd FL[3] FC11{ m Fc[2]} Fp Fs Fc Fi Fi} BC11 BC12{ BC8 VBC11 vd v6 v7 v8 FC5 Fp} Fl FC7[10]}


S19942C16 ::~S19942C16(){ note_dtor("S19942C16", this);} // tgen
S19942C16 ::S19942C16(){ note_ctor("S19942C16", this);} // tgen

static void Test_S19942C16()
{
  extern Class_Descriptor cd_S19942C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(298,861)];
    init_test(&cd_S19942C16, buf);
    S19942C16 *dp, &lv = *(dp=new (buf) S19942C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4752,3440), "sizeof(S19942C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C16)");
    /*is_ambiguous_... S19942C16::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*), ABISELECT(3312,2424), "S19942C16");
    /*is_ambiguous_... S19942C13::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C13*), ABISELECT(3312,2424), "S19942C16");
    /*is_ambiguous_... S19942C13::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C13*), ABISELECT(3536,2588), "S19942C16");
    check_base_class_offset(lv, (S19942C6*)(S19942C9*), ABISELECT(3880,2820), "S19942C16");
    check_base_class_offset(lv, (S19942C9*)(S19942C13*), ABISELECT(3880,2820), "S19942C16");
    /*is_ambiguous_... S19942C16::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C9*)(S19942C4*), ABISELECT(3880,2820), "S19942C16");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*)(S19942C3*), ABISELECT(3880,2820), "S19942C16");
    /*is_ambiguous_... S19942C16::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(4448,3248), "S19942C16");
    /*is_ambiguous_... S19942C16::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C4*), ABISELECT(4448,3248), "S19942C16");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*)(S19942C3*), ABISELECT(4448,3248), "S19942C16");
    /*is_ambiguous_... S19942C16::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*), ABISELECT(4688,3404), "S19942C16");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*)(S19942C3*), ABISELECT(4688,3404), "S19942C16");
    /*is_ambiguous_... S19942C16::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C4*), ABISELECT(4032,2928), "S19942C16");
    check_base_class_offset(lv, (S19942C4*)(S19942C13*), ABISELECT(4032,2928), "S19942C16");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*)(S19942C13*), ABISELECT(3584,2620), "S19942C16");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C13*), ABISELECT(3584,2620), "S19942C16");
    check_base_class_offset(lv, (S19942C13*), ABISELECT(3536,2588), "S19942C16");
    /*is_ambiguous_... S19942C16::S19942C12_nt */ AMB_check_base_class_offset(lv, (S19942C12_nt*), ABISELECT(1848,1336), "S19942C16");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*)(S19942C3*), 0, "S19942C16");
    check_base_class_offset(lv, (S19942C4*)(S19942C3*), 0, "S19942C16");
    check_base_class_offset(lv, (S19942C12_nt*)(S19942C3*), ABISELECT(4736,3436), "S19942C16");
    check_base_class_offset(lv, (S19942C3*), 0, "S19942C16");
    check_field_offset(lv, s19942c16f0, ABISELECT(1856,1340), "S19942C16.s19942c16f0");
    check_field_offset(lv, s19942c16f1, ABISELECT(1864,1344), "S19942C16.s19942c16f1");
    test_class_info(&lv, &cd_S19942C16);
    dp->~S19942C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C16(Test_S19942C16, "S19942C16", ABISELECT(4752,3440));

#else // __cplusplus

extern void _ZN9S19942C16C1Ev();
extern void _ZN9S19942C16D1Ev();
Name_Map name_map_S19942C16[] = {
  NSPAIR(_ZN9S19942C16C1Ev),
  NSPAIR(_ZN9S19942C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C13;
extern VTBL_ENTRY _ZTI9S19942C13[];
extern  VTBL_ENTRY _ZTV9S19942C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C13[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S19942C3;
extern VTBL_ENTRY _ZTI8S19942C3[];
extern  VTBL_ENTRY _ZTV8S19942C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C3[];
static Base_Class bases_S19942C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C10,    ABISELECT(3312,2424), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C6,    ABISELECT(3536,2588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19942C6,    ABISELECT(3880,2820), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19942C9,    ABISELECT(3880,2820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(4448,3248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(4448,3248), //bcp->offset
    52, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(4688,3404), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19942C10,    ABISELECT(4032,2928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19942C4,    ABISELECT(4032,2928), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(3584,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(3584,2620), //bcp->offset
    34, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19942C13,    ABISELECT(3536,2588), //bcp->offset
    20, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C12_nt,    ABISELECT(1848,1336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19942C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19942C12_nt,    ABISELECT(4736,3436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19942C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19942C16[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C16D1Ev();
extern void _ZN9S19942C16D0Ev();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C62v3Ev();
extern void ABISELECT(_ZTv0_n72_N9S19942C16D1Ev,_ZTv0_n36_N9S19942C16D1Ev)();
extern void ABISELECT(_ZThn3536_N9S19942C16D1Ev,_ZThn2588_N9S19942C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19942C16D0Ev,_ZTv0_n36_N9S19942C16D0Ev)();
extern void ABISELECT(_ZThn3536_N9S19942C16D0Ev,_ZThn2588_N9S19942C16D0Ev)() __attribute__((weak));
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY vtc_S19942C16[] = {
  ABISELECT(4032,2928),
  ABISELECT(3536,2588),
  ABISELECT(3312,2424),
  ABISELECT(4736,3436),
  ABISELECT(3880,2820),
  ABISELECT(4688,3404),
  ABISELECT(4448,3248),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C16D0Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
  0,
  ABISELECT(-3312,-2424),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(-3536,-2588),
  0,
  ABISELECT(-224,-164),
  ABISELECT(1152,816),
  ABISELECT(912,660),
  ABISELECT(496,340),
  ABISELECT(344,232),
  ABISELECT(-3536,-2588),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19942C16D1Ev,_ZTv0_n36_N9S19942C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19942C16D0Ev,_ZTv0_n36_N9S19942C16D0Ev),
  ABISELECT(-3584,-2620),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-3880,-2820),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  0,
  ABISELECT(-152,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-4032,-2928),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  0,
  0,
  0,
  ABISELECT(-4448,-3248),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-4688,-3404),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern VTBL_ENTRY _ZTV9S19942C16[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C3D1Ev();
extern void _ZN8S19942C3D0Ev();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C3__9S19942C16[] = {
  ABISELECT(4736,3436),
  ABISELECT(3880,2820),
  ABISELECT(4688,3404),
  ABISELECT(4448,3248),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C48S19942C3__A1__9S19942C16[] = {
  ABISELECT(3880,2820),
  ABISELECT(4688,3404),
  ABISELECT(4448,3248),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C48S19942C3__A1__9S19942C16[] = {
  0,
  0,
  0,
  ABISELECT(-4448,-3248),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C48S19942C3__A1__9S19942C16[] = {
  0,
  ABISELECT(-4688,-3404),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C48S19942C3__A1__9S19942C16[] = {
  0,
  ABISELECT(-3880,-2820),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C3__9S19942C16[] = {
  0,
  0,
  0,
  ABISELECT(-4448,-3248),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C3__9S19942C16[] = {
  0,
  ABISELECT(-4688,-3404),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C3__9S19942C16[] = {
  0,
  ABISELECT(-3880,-2820),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C13D1Ev();
extern void _ZN9S19942C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C13__9S19942C16[] = {
  ABISELECT(-224,-164),
  ABISELECT(1152,816),
  ABISELECT(912,660),
  ABISELECT(496,340),
  ABISELECT(344,232),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D0Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A1__9S19942C13__9S19942C16[] = {
  0,
  ABISELECT(-344,-232),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C13__9S19942C16[] = {
  0,
  0,
  ABISELECT(-152,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-496,-340),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__9S19942C13__9S19942C16[] = {
  0,
  0,
  0,
  ABISELECT(-912,-660),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A3__9S19942C13__9S19942C16[] = {
  0,
  ABISELECT(-1152,-816),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C10__A1__9S19942C13__9S19942C16[] = {
  0,
  ABISELECT(224,164),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C16[] = {
  ABISELECT(-152,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C4__9S19942C16[] = {
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C4__9S19942C16[] = {
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C16[] = {
  0,
  ABISELECT(152,108),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
static  VTT_ENTRY vtt_S19942C16[] = {
  {&(_ZTV9S19942C16[9]),  9,64},
  {&(_tg__ZTV8S19942C3__9S19942C16[6]),  6,13},
  {&(_tg__ZTV8S19942C48S19942C3__A1__9S19942C16[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C48S19942C3__A1__9S19942C16[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C48S19942C3__A1__9S19942C16[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C48S19942C3__A1__9S19942C16[3]),  3,4},
  {&(_tg__ZTV8S19942C5__8S19942C3__9S19942C16[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C3__9S19942C16[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C3__9S19942C16[3]),  3,4},
  {&(_ZTV9S19942C16[19]),  19,64},
  {&(_ZTV9S19942C16[31]),  31,64},
  {&(_ZTV9S19942C16[42]),  42,64},
  {&(_ZTV9S19942C16[50]),  50,64},
  {&(_ZTV9S19942C16[57]),  57,64},
  {&(_ZTV9S19942C16[63]),  63,64},
  {&(_ZTV9S19942C16[36]),  36,64},
  {&(_tg__ZTV9S19942C13__9S19942C16[7]),  7,10},
  {&(_tg__ZTV8S19942C68S19942C9__A1__9S19942C13__9S19942C16[3]),  3,4},
  {&(_tg__ZTV8S19942C4__9S19942C13__9S19942C16[7]),  7,9},
  {&(_tg__ZTV8S19942C5__9S19942C13__9S19942C16[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A3__9S19942C13__9S19942C16[3]),  3,4},
  {&(_tg__ZTV9S19942C10__A1__9S19942C13__9S19942C16[3]),  3,4},
  {&(_tg__ZTV8S19942C4__9S19942C16[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C4__9S19942C16[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C4__9S19942C16[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19942C16[];
extern  VTBL_ENTRY _ZTV9S19942C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C16[];
static VTBL_ENTRY alt_thunk_names22[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19942C16D0Ev,_ZTv0_n36_N9S19942C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3536_N9S19942C16D0Ev,_ZThn2588_N9S19942C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19942C16D1Ev,_ZTv0_n36_N9S19942C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3536_N9S19942C16D1Ev,_ZThn2588_N9S19942C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19942C16 = {  "S19942C16", // class name
  bases_S19942C16, 17,
  &(vtc_S19942C16[0]), // expected_vtbl_contents
  &(vtt_S19942C16[0]), // expected_vtt_contents
  ABISELECT(4752,3440), // object size
  NSPAIRA(_ZTI9S19942C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19942C16),64, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19942C16),26, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names22,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C18  {
  char s19942c18f0;
  int s19942c18f1;
  unsigned char s19942c18f2:1;
  void *s19942c18f3;
  ::S19942C15 s19942c18f4[7];
  void *s19942c18f5;
  ::S19942C6 s19942c18f6;
  int s19942c18f7;
  int s19942c18f8;
  virtual void  v13(); // _ZN9S19942C183v13Ev
  ~S19942C18(); // tgen
  S19942C18(); // tgen
};
//SIG(-1 S19942C18) C1{ v1 Fc Fi Fc:1 Fp FC2{ VBC3{ v3 Fp[3] Fi[2] FL} BC4{ VBC5{ BC3 v4 v5 Fc[10] Fl[6] FC3 Fp FC6{} Fi[4] FU7{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC3 VBC8{ BC3 Fi[10] Fs:11 FC3} BC9{ v6 Fp Fs FC6 Fp FL Fi FU10{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v7 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC11{ m Fc[2]} BC9 v2 Fi FD FC11 Fp Fs Fi Fi Fi}[7] Fp FC3 Fi Fi}


void  S19942C18 ::v13(){vfunc_called(this, "_ZN9S19942C183v13Ev");}
S19942C18 ::~S19942C18(){ note_dtor("S19942C18", this);} // tgen
S19942C18 ::S19942C18(){ note_ctor("S19942C18", this);} // tgen

static void Test_S19942C18()
{
  extern Class_Descriptor cd_S19942C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(511,1459)];
    init_test(&cd_S19942C18, buf);
    S19942C18 *dp, &lv = *(dp=new (buf) S19942C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8160,5832), "sizeof(S19942C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C18)");
    check_field_offset(lv, s19942c18f0, ABISELECT(8,4), "S19942C18.s19942c18f0");
    check_field_offset(lv, s19942c18f1, ABISELECT(12,8), "S19942C18.s19942c18f1");
    set_bf_and_test(lv, s19942c18f2, ABISELECT(16,12), 0, 1, 1, "S19942C18");
    check_field_offset(lv, s19942c18f3, ABISELECT(24,16), "S19942C18.s19942c18f3");
    check_field_offset(lv, s19942c18f4, ABISELECT(32,20), "S19942C18.s19942c18f4");
    check_field_offset(lv, s19942c18f5, ABISELECT(8096,5788), "S19942C18.s19942c18f5");
    check_field_offset(lv, s19942c18f6, ABISELECT(8104,5792), "S19942C18.s19942c18f6");
    check_field_offset(lv, s19942c18f7, ABISELECT(8152,5824), "S19942C18.s19942c18f7");
    check_field_offset(lv, s19942c18f8, ABISELECT(8156,5828), "S19942C18.s19942c18f8");
    test_class_info(&lv, &cd_S19942C18);
    dp->~S19942C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C18(Test_S19942C18, "S19942C18", ABISELECT(8160,5832));

#else // __cplusplus

extern void _ZN9S19942C18C1Ev();
extern void _ZN9S19942C18D1Ev();
Name_Map name_map_S19942C18[] = {
  NSPAIR(_ZN9S19942C18C1Ev),
  NSPAIR(_ZN9S19942C18D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19942C18[];
extern void _ZN9S19942C183v13Ev();
static  VTBL_ENTRY vtc_S19942C18[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C18[0]),
  (VTBL_ENTRY)&_ZN9S19942C183v13Ev,
};
extern VTBL_ENTRY _ZTI9S19942C18[];
extern  VTBL_ENTRY _ZTV9S19942C18[];
Class_Descriptor cd_S19942C18 = {  "S19942C18", // class name
  0,0,//no base classes
  &(vtc_S19942C18[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8160,5832), // object size
  NSPAIRA(_ZTI9S19942C18),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19942C18),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C17  : S19942C4 , S19942C18 , S19942C3 , virtual S19942C10 {
  ::S19942C8 s19942c17f0[6];
  virtual  ~S19942C17(); // _ZN9S19942C17D2Ev
  S19942C17(); // tgen
};
//SIG(-1 S19942C17) C1{ BC2{ VBC3{ BC4{ v1 Fp[3] Fi[2] FL} v2 v3 Fc[10] Fl[6] FC4 Fp FC5{} Fi[4] FU6{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC4 VBC7{ BC4 Fi[10] Fs:11 FC4} BC8{ v4 Fp Fs FC5 Fp FL Fi FU9{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v5 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} BC10{ v6 Fc Fi Fc:1 Fp FC11{ VBC4 BC2 VBC12{ m Fc[2]} BC8 v10 Fi FD FC12 Fp Fs Fi Fi Fi}[7] Fp FC4 Fi Fi} BC13{ BC2 VBC12 vd v7 v8 v9 FC14{ BC4 VBC7 VBC2 VBC8 BC3 vd FL[3] FC12 Fp Fs Fc Fi Fi} Fp} VBC8 vd FU6[6]}


 S19942C17 ::~S19942C17(){ note_dtor("S19942C17", this);}
S19942C17 ::S19942C17(){ note_ctor("S19942C17", this);} // tgen

static void Test_S19942C17()
{
  extern Class_Descriptor cd_S19942C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(701,2007)];
    init_test(&cd_S19942C17, buf);
    S19942C17 *dp, &lv = *(dp=new (buf) S19942C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11200,8024), "sizeof(S19942C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C17)");
    check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(10528,7560), "S19942C17");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C4*), ABISELECT(10528,7560), "S19942C17");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*)(S19942C3*), ABISELECT(10528,7560), "S19942C17");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*), ABISELECT(10768,7716), "S19942C17");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*)(S19942C3*), ABISELECT(10768,7716), "S19942C17");
    check_base_class_offset(lv, (S19942C6*)(S19942C9*), ABISELECT(10816,7748), "S19942C17");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C9*)(S19942C4*), ABISELECT(10816,7748), "S19942C17");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*)(S19942C3*), ABISELECT(10816,7748), "S19942C17");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C4*), 0, "S19942C17");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C4*), 0, "S19942C17");
    check_base_class_offset(lv, (S19942C18*), ABISELECT(416,320), "S19942C17");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*)(S19942C3*), ABISELECT(8576,6152), "S19942C17");
    check_base_class_offset(lv, (S19942C4*)(S19942C3*), ABISELECT(8576,6152), "S19942C17");
    check_base_class_offset(lv, (S19942C12_nt*)(S19942C3*), ABISELECT(10960,7856), "S19942C17");
    check_base_class_offset(lv, (S19942C3*), ABISELECT(8576,6152), "S19942C17");
    /*is_ambiguous_... S19942C17::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*), ABISELECT(10976,7860), "S19942C17");
    check_field_offset(lv, s19942c17f0, ABISELECT(10432,7488), "S19942C17.s19942c17f0");
    test_class_info(&lv, &cd_S19942C17);
    dp->~S19942C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C17(Test_S19942C17, "S19942C17", ABISELECT(11200,8024));

#else // __cplusplus

extern void _ZN9S19942C17C1Ev();
extern void _ZN9S19942C17D2Ev();
Name_Map name_map_S19942C17[] = {
  NSPAIR(_ZN9S19942C17C1Ev),
  NSPAIR(_ZN9S19942C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C18;
extern VTBL_ENTRY _ZTI9S19942C18[];
extern  VTBL_ENTRY _ZTV9S19942C18[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S19942C3;
extern VTBL_ENTRY _ZTI8S19942C3[];
extern  VTBL_ENTRY _ZTV8S19942C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C3[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
static Base_Class bases_S19942C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C6,    ABISELECT(10528,7560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(10528,7560), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(10768,7716), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(10816,7748), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19942C9,    ABISELECT(10816,7748), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19942C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19942C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C18,    ABISELECT(416,320), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C10,    ABISELECT(8576,6152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19942C4,    ABISELECT(8576,6152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19942C12_nt,    ABISELECT(10960,7856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19942C3,    ABISELECT(8576,6152), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C10,    ABISELECT(10976,7860), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19942C17[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C17D1Ev();
extern void _ZN9S19942C17D0Ev();
extern void _ZN9S19942C183v13Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void ABISELECT(_ZThn8576_N9S19942C17D1Ev,_ZThn6152_N9S19942C17D1Ev)();
extern void ABISELECT(_ZThn8576_N9S19942C17D0Ev,_ZThn6152_N9S19942C17D0Ev)();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY vtc_S19942C17[] = {
  ABISELECT(10976,7860),
  ABISELECT(10960,7856),
  ABISELECT(10816,7748),
  ABISELECT(10768,7716),
  ABISELECT(10528,7560),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C17D0Ev,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN9S19942C183v13Ev,
  ABISELECT(2384,1704),
  ABISELECT(2240,1596),
  ABISELECT(2192,1564),
  ABISELECT(1952,1408),
  ABISELECT(-8576,-6152),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8576_N9S19942C17D1Ev,_ZThn6152_N9S19942C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8576_N9S19942C17D0Ev,_ZThn6152_N9S19942C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
  0,
  0,
  0,
  ABISELECT(-10528,-7560),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-10768,-7716),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  ABISELECT(-10816,-7748),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  ABISELECT(-10976,-7860),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern VTBL_ENTRY _ZTV9S19942C17[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C17[] = {
  ABISELECT(10816,7748),
  ABISELECT(10768,7716),
  ABISELECT(10528,7560),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C4__9S19942C17[] = {
  0,
  0,
  0,
  ABISELECT(-10528,-7560),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C4__9S19942C17[] = {
  0,
  ABISELECT(-10768,-7716),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C17[] = {
  0,
  ABISELECT(-10816,-7748),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C3D1Ev();
extern void _ZN8S19942C3D0Ev();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C3__9S19942C17[] = {
  ABISELECT(2384,1704),
  ABISELECT(2240,1596),
  ABISELECT(2192,1564),
  ABISELECT(1952,1408),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C48S19942C3__A1__9S19942C17[] = {
  ABISELECT(2240,1596),
  ABISELECT(2192,1564),
  ABISELECT(1952,1408),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C48S19942C3__A1__9S19942C17[] = {
  0,
  0,
  0,
  ABISELECT(-1952,-1408),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C48S19942C3__A1__9S19942C17[] = {
  0,
  ABISELECT(-2192,-1564),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C48S19942C3__A1__9S19942C17[] = {
  0,
  ABISELECT(-2240,-1596),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C3__9S19942C17[] = {
  0,
  0,
  0,
  ABISELECT(-1952,-1408),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C3__9S19942C17[] = {
  0,
  ABISELECT(-2192,-1564),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C3__9S19942C17[] = {
  0,
  ABISELECT(-2240,-1596),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
static  VTT_ENTRY vtt_S19942C17[] = {
  {&(_ZTV9S19942C17[7]),  7,47},
  {&(_tg__ZTV8S19942C4__9S19942C17[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C4__9S19942C17[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C4__9S19942C17[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C17[3]),  3,4},
  {&(_tg__ZTV8S19942C3__9S19942C17[6]),  6,13},
  {&(_tg__ZTV8S19942C48S19942C3__A1__9S19942C17[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C48S19942C3__A1__9S19942C17[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C48S19942C3__A1__9S19942C17[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C48S19942C3__A1__9S19942C17[3]),  3,4},
  {&(_tg__ZTV8S19942C5__8S19942C3__9S19942C17[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C3__9S19942C17[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C3__9S19942C17[3]),  3,4},
  {&(_ZTV9S19942C17[32]),  32,47},
  {&(_ZTV9S19942C17[38]),  38,47},
  {&(_ZTV9S19942C17[42]),  42,47},
  {&(_ZTV9S19942C17[20]),  20,47},
  {&(_ZTV9S19942C17[46]),  46,47},
};
extern VTBL_ENTRY _ZTI9S19942C17[];
extern  VTBL_ENTRY _ZTV9S19942C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C17[];
Class_Descriptor cd_S19942C17 = {  "S19942C17", // class name
  bases_S19942C17, 13,
  &(vtc_S19942C17[0]), // expected_vtbl_contents
  &(vtt_S19942C17[0]), // expected_vtt_contents
  ABISELECT(11200,8024), // object size
  NSPAIRA(_ZTI9S19942C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19942C17),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19942C17),18, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C19  : S19942C9 , S19942C13 {
  void *s19942c19f0;
  virtual  ~S19942C19(); // _ZN9S19942C19D2Ev
  virtual void  v14(); // _ZN9S19942C193v14Ev
  virtual void  v15(); // _ZN9S19942C193v15Ev
  S19942C19(); // tgen
};
//SIG(-1 S19942C19) C1{ BC2{ BC3{ v3 Fp[3] Fi[2] FL} Fi[10] Fs:11 FC3} BC4{ BC3 VBC2 VBC5{ VBC6{ BC3 v4 v5 Fc[10] Fl[6] FC3 Fp FC7{} Fi[4] FU8{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC3 VBC2 BC9{ v6 Fp Fs FC7 Fp FL Fi FU10{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v7 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC9 BC6 vd FL[3] FC11{ m Fc[2]} Fp Fs Fc Fi Fi} vd v1 v2 Fp}


 S19942C19 ::~S19942C19(){ note_dtor("S19942C19", this);}
void  S19942C19 ::v14(){vfunc_called(this, "_ZN9S19942C193v14Ev");}
void  S19942C19 ::v15(){vfunc_called(this, "_ZN9S19942C193v15Ev");}
S19942C19 ::S19942C19(){ note_ctor("S19942C19", this);} // tgen

static void Test_S19942C19()
{
  extern Class_Descriptor cd_S19942C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(99,282)];
    init_test(&cd_S19942C19, buf);
    S19942C19 *dp, &lv = *(dp=new (buf) S19942C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1568,1124), "sizeof(S19942C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C19)");
    /*is_ambiguous_... S19942C19::S19942C9 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C9*), 0, "S19942C19");
    /*is_ambiguous_... S19942C19::S19942C9 */ AMB_check_base_class_offset(lv, (S19942C9*), 0, "S19942C19");
    /*is_ambiguous_... S19942C13::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C13*), ABISELECT(144,108), "S19942C19");
    /*is_ambiguous_... S19942C19::S19942C9 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C9*), ABISELECT(496,344), "S19942C19");
    check_base_class_offset(lv, (S19942C9*)(S19942C13*), ABISELECT(496,344), "S19942C19");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*), ABISELECT(496,344), "S19942C19");
    /*is_ambiguous_... S19942C19::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(1056,772), "S19942C19");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*), ABISELECT(1056,772), "S19942C19");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*), ABISELECT(1296,928), "S19942C19");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*), ABISELECT(640,452), "S19942C19");
    check_base_class_offset(lv, (S19942C4*)(S19942C13*), ABISELECT(640,452), "S19942C19");
    /*is_ambiguous_... S19942C13::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C13*), ABISELECT(1344,960), "S19942C19");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*)(S19942C13*), ABISELECT(192,140), "S19942C19");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C13*), ABISELECT(192,140), "S19942C19");
    check_base_class_offset(lv, (S19942C13*), ABISELECT(144,108), "S19942C19");
    check_field_offset(lv, s19942c19f0, ABISELECT(488,340), "S19942C19.s19942c19f0");
    test_class_info(&lv, &cd_S19942C19);
    dp->~S19942C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C19(Test_S19942C19, "S19942C19", ABISELECT(1568,1124));

#else // __cplusplus

extern void _ZN9S19942C19C1Ev();
extern void _ZN9S19942C19D2Ev();
Name_Map name_map_S19942C19[] = {
  NSPAIR(_ZN9S19942C19C1Ev),
  NSPAIR(_ZN9S19942C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C13;
extern VTBL_ENTRY _ZTI9S19942C13[];
extern  VTBL_ENTRY _ZTV9S19942C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C13[];
static Base_Class bases_S19942C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19942C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C6,    ABISELECT(144,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19942C6,    ABISELECT(496,344), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19942C9,    ABISELECT(496,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(1056,772), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(1056,772), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(1296,928), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19942C10,    ABISELECT(640,452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19942C4,    ABISELECT(640,452), //bcp->offset
    31, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19942C10,    ABISELECT(1344,960), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(192,140), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19942C13,    ABISELECT(144,108), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19942C19[];
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C19D1Ev();
extern void _ZN9S19942C19D0Ev();
extern void _ZN9S19942C193v14Ev();
extern void _ZN9S19942C193v15Ev();
extern void _ZN8S19942C62v3Ev();
extern void ABISELECT(_ZThn144_N9S19942C19D1Ev,_ZThn108_N9S19942C19D1Ev)();
extern void ABISELECT(_ZThn144_N9S19942C19D0Ev,_ZThn108_N9S19942C19D0Ev)();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY vtc_S19942C19[] = {
  ABISELECT(1344,960),
  ABISELECT(1296,928),
  ABISELECT(1056,772),
  ABISELECT(640,452),
  ABISELECT(496,344),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C19[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN9S19942C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C19D0Ev,
  (VTBL_ENTRY)&_ZN9S19942C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19942C193v15Ev,
  ABISELECT(1200,852),
  ABISELECT(1152,820),
  ABISELECT(912,664),
  ABISELECT(496,344),
  ABISELECT(352,236),
  ABISELECT(-144,-108),
  (VTBL_ENTRY)&(_ZTI9S19942C19[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S19942C19D1Ev,_ZThn108_N9S19942C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S19942C19D0Ev,_ZThn108_N9S19942C19D0Ev),
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S19942C19[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-496,-344),
  (VTBL_ENTRY)&(_ZTI9S19942C19[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  0,
  ABISELECT(-144,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-640,-452),
  (VTBL_ENTRY)&(_ZTI9S19942C19[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  0,
  0,
  0,
  ABISELECT(-1056,-772),
  (VTBL_ENTRY)&(_ZTI9S19942C19[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-1296,-928),
  (VTBL_ENTRY)&(_ZTI9S19942C19[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  ABISELECT(-1344,-960),
  (VTBL_ENTRY)&(_ZTI9S19942C19[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern VTBL_ENTRY _ZTV9S19942C19[];
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C13D1Ev();
extern void _ZN9S19942C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C13__9S19942C19[] = {
  ABISELECT(1200,852),
  ABISELECT(1152,820),
  ABISELECT(912,664),
  ABISELECT(496,344),
  ABISELECT(352,236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D0Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A1__9S19942C13__9S19942C19[] = {
  0,
  ABISELECT(-352,-236),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C13__9S19942C19[] = {
  0,
  0,
  ABISELECT(-144,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-496,-344),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__9S19942C13__9S19942C19[] = {
  0,
  0,
  0,
  ABISELECT(-912,-664),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A3__9S19942C13__9S19942C19[] = {
  0,
  ABISELECT(-1152,-820),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C10__A1__9S19942C13__9S19942C19[] = {
  0,
  ABISELECT(-1200,-852),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C19[] = {
  ABISELECT(-144,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C4__9S19942C19[] = {
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C4__9S19942C19[] = {
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C19[] = {
  0,
  ABISELECT(144,108),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
static  VTT_ENTRY vtt_S19942C19[] = {
  {&(_ZTV9S19942C19[7]),  7,56},
  {&(_tg__ZTV9S19942C13__9S19942C19[7]),  7,10},
  {&(_tg__ZTV8S19942C68S19942C9__A1__9S19942C13__9S19942C19[3]),  3,4},
  {&(_tg__ZTV8S19942C4__9S19942C13__9S19942C19[7]),  7,9},
  {&(_tg__ZTV8S19942C5__9S19942C13__9S19942C19[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A3__9S19942C13__9S19942C19[3]),  3,4},
  {&(_tg__ZTV9S19942C10__A1__9S19942C13__9S19942C19[3]),  3,4},
  {&(_ZTV9S19942C19[19]),  19,56},
  {&(_ZTV9S19942C19[30]),  30,56},
  {&(_ZTV9S19942C19[38]),  38,56},
  {&(_ZTV9S19942C19[45]),  45,56},
  {&(_ZTV9S19942C19[51]),  51,56},
  {&(_ZTV9S19942C19[55]),  55,56},
  {&(_tg__ZTV8S19942C4__9S19942C19[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C4__9S19942C19[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C4__9S19942C19[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C19[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19942C19[];
extern  VTBL_ENTRY _ZTV9S19942C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C19[];
Class_Descriptor cd_S19942C19 = {  "S19942C19", // class name
  bases_S19942C19, 14,
  &(vtc_S19942C19[0]), // expected_vtbl_contents
  &(vtt_S19942C19[0]), // expected_vtt_contents
  ABISELECT(1568,1124), // object size
  NSPAIRA(_ZTI9S19942C19),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19942C19),56, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19942C19),17, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C1  : virtual S19942C2 , virtual S19942C10 , virtual S19942C14 , S19942C16 , S19942C17 {
  ::S19942C17 s19942c1f0;
  __tsi64 s19942c1f1;
  ::S19942C9 s19942c1f2;
  char s19942c1f3[6];
  ::S19942C19 s19942c1f4;
  short s19942c1f5;
  char s19942c1f6[6];
  long double s19942c1f7[6];
  int s19942c1f8;
  int s19942c1f9;
  int s19942c1f10;
  ~S19942C1(); // tgen
  S19942C1(); // tgen
};
//SIG(1 S19942C1) C1{ VBC2{ v1 v2 Fi[2] FC3{ BC4{ VBC5{ BC6{ v4 Fp[3] Fi[2] FL} v5 v6 Fc[10] Fl[6] FC6 Fp FC7{} Fi[4] FU8{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC6 VBC9{ BC6 Fi[10] Fs:11 FC6} BC10{ v3 Fp Fs FC7 Fp FL Fi FU11{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v7 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC12{ m Fc[2]} vd v10 v11 v12 FC13{ BC6 VBC9 VBC4 VBC10 BC5 vd FL[3] FC12 Fp Fs Fc Fi Fi} Fp}[9] Fi Fl Fi Fi FC6 Fi Fi Fi FD Fi} VBC10 VBC14{ BC5 VBC10 VBC4 BC13 BC15{ VBC6 BC4 VBC12 BC10 v8 Fi FD FC12 Fp Fs Fi Fi Fi} v9 Fp Fi FC13 Fc Fi FC7 Fi Fi FC5 FU11} BC16{ VBC10 VBC13 BC12 BC3 Fl FC9[10]} BC17{ BC4 BC18{ v13 Fc Fi Fc:1 Fp FC15[7] Fp FC6 Fi Fi} BC3 VBC10 vd FU8[6]} FC17 FL FC9 Fc[6] FC19{ BC9 BC13 vd v14 v15 Fp} Fs Fc[6] FD[6] Fi Fi Fi}


S19942C1 ::~S19942C1(){ note_dtor("S19942C1", this);} // tgen
S19942C1 ::S19942C1(){ note_ctor("S19942C1", this);} // tgen

static void Test_S19942C1()
{
  extern Class_Descriptor cd_S19942C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3275,9352)];
    init_test(&cd_S19942C1, buf);
    S19942C1 *dp, &lv = *(dp=new (buf) S19942C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(52384,37404), "sizeof(S19942C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C1)");
    check_base_class_offset(lv, (S19942C2*), ABISELECT(26896,19348), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*), ABISELECT(47776,34160), "S19942C1");
    /*is_ambiguous_... S19942C14::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C14*), ABISELECT(47776,34160), "S19942C1");
    /*is_ambiguous_... S19942C13::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C13*)(S19942C14*), ABISELECT(47776,34160), "S19942C1");
    /*is_ambiguous_... S19942C16::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C16*), ABISELECT(47776,34160), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C13 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C13*), ABISELECT(47776,34160), "S19942C1");
    /*is_ambiguous_... S19942C17::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C17*), ABISELECT(47776,34160), "S19942C1");
    /*is_ambiguous_... S19942C14::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*)(S19942C14*), ABISELECT(48000,34324), "S19942C1");
    /*is_ambiguous_... S19942C14::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C14*), ABISELECT(48000,34324), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(51584,36872), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C4*), ABISELECT(51584,36872), "S19942C1");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*)(S19942C15*)(S19942C14*), ABISELECT(51584,36872), "S19942C1");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*)(S19942C3*)(S19942C16*), ABISELECT(51584,36872), "S19942C1");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C4*)(S19942C17*), ABISELECT(51584,36872), "S19942C1");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*)(S19942C3*)(S19942C17*), ABISELECT(51584,36872), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*), ABISELECT(51824,37028), "S19942C1");
    /*is_ambiguous_... S19942C15::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C15*)(S19942C14*), ABISELECT(51824,37028), "S19942C1");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*)(S19942C15*)(S19942C14*), ABISELECT(51824,37028), "S19942C1");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*)(S19942C3*)(S19942C16*), ABISELECT(51824,37028), "S19942C1");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*)(S19942C17*), ABISELECT(51824,37028), "S19942C1");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*)(S19942C3*)(S19942C17*), ABISELECT(51824,37028), "S19942C1");
    check_base_class_offset(lv, (S19942C6*)(S19942C9*), ABISELECT(51872,37060), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C9*)(S19942C4*), ABISELECT(51872,37060), "S19942C1");
    check_base_class_offset(lv, (S19942C9*)(S19942C13*)(S19942C14*), ABISELECT(51872,37060), "S19942C1");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*)(S19942C15*)(S19942C14*), ABISELECT(51872,37060), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C13 */ AMB_check_base_class_offset(lv, (S19942C9*)(S19942C13*), ABISELECT(51872,37060), "S19942C1");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*)(S19942C3*)(S19942C16*), ABISELECT(51872,37060), "S19942C1");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C9*)(S19942C4*)(S19942C17*), ABISELECT(51872,37060), "S19942C1");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*)(S19942C3*)(S19942C17*), ABISELECT(51872,37060), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C4*), ABISELECT(51168,36552), "S19942C1");
    /*is_ambiguous_... S19942C14::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C4*)(S19942C14*), ABISELECT(51168,36552), "S19942C1");
    check_base_class_offset(lv, (S19942C4*)(S19942C13*)(S19942C14*), ABISELECT(51168,36552), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C13 */ AMB_check_base_class_offset(lv, (S19942C4*)(S19942C13*), ABISELECT(51168,36552), "S19942C1");
    /*is_ambiguous_... S19942C13::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C13*)(S19942C14*), ABISELECT(48240,34480), "S19942C1");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*)(S19942C13*)(S19942C14*), ABISELECT(48288,34512), "S19942C1");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C13*)(S19942C14*), ABISELECT(48288,34512), "S19942C1");
    check_base_class_offset(lv, (S19942C13*)(S19942C14*), ABISELECT(48240,34480), "S19942C1");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*)(S19942C15*)(S19942C14*), ABISELECT(48592,34712), "S19942C1");
    check_base_class_offset(lv, (S19942C4*)(S19942C15*)(S19942C14*), ABISELECT(48592,34712), "S19942C1");
    check_base_class_offset(lv, (S19942C12_nt*)(S19942C15*)(S19942C14*), ABISELECT(52016,37168), "S19942C1");
    check_base_class_offset(lv, (S19942C12_nt*)(S19942C3*)(S19942C16*), ABISELECT(52016,37168), "S19942C1");
    check_base_class_offset(lv, (S19942C12_nt*)(S19942C3*)(S19942C17*), ABISELECT(52016,37168), "S19942C1");
    /*is_ambiguous_... S19942C15::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C15*)(S19942C14*), ABISELECT(49008,35032), "S19942C1");
    check_base_class_offset(lv, (S19942C15*)(S19942C14*), ABISELECT(48592,34712), "S19942C1");
    check_base_class_offset(lv, (S19942C14*), ABISELECT(48000,34324), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C13 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C13*), ABISELECT(52032,37172), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C13 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*)(S19942C13*), ABISELECT(52080,37204), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C13 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C13*), ABISELECT(52080,37204), "S19942C1");
    check_base_class_offset(lv, (S19942C13*)(S19942C16*), ABISELECT(52032,37172), "S19942C1");
    /*is_ambiguous_... S19942C16::S19942C12_nt */ AMB_check_base_class_offset(lv, (S19942C12_nt*)(S19942C16*), ABISELECT(1848,1336), "S19942C1");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*)(S19942C3*)(S19942C16*), 0, "S19942C1");
    check_base_class_offset(lv, (S19942C4*)(S19942C3*)(S19942C16*), 0, "S19942C1");
    check_base_class_offset(lv, (S19942C3*)(S19942C16*), 0, "S19942C1");
    check_base_class_offset(lv, (S19942C16*), 0, "S19942C1");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C4*)(S19942C17*), ABISELECT(3312,2424), "S19942C1");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C4*)(S19942C17*), ABISELECT(3312,2424), "S19942C1");
    check_base_class_offset(lv, (S19942C18*)(S19942C17*), ABISELECT(3728,2744), "S19942C1");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*)(S19942C3*)(S19942C17*), ABISELECT(11888,8576), "S19942C1");
    check_base_class_offset(lv, (S19942C4*)(S19942C3*)(S19942C17*), ABISELECT(11888,8576), "S19942C1");
    check_base_class_offset(lv, (S19942C3*)(S19942C17*), ABISELECT(11888,8576), "S19942C1");
    check_base_class_offset(lv, (S19942C17*), ABISELECT(3312,2424), "S19942C1");
    check_field_offset(lv, s19942c1f0, ABISELECT(13840,9984), "S19942C1.s19942c1f0");
    check_field_offset(lv, s19942c1f1, ABISELECT(25040,18008), "S19942C1.s19942c1f1");
    check_field_offset(lv, s19942c1f2, ABISELECT(25048,18016), "S19942C1.s19942c1f2");
    check_field_offset(lv, s19942c1f3, ABISELECT(25192,18124), "S19942C1.s19942c1f3");
    check_field_offset(lv, s19942c1f4, ABISELECT(25200,18132), "S19942C1.s19942c1f4");
    check_field_offset(lv, s19942c1f5, ABISELECT(26768,19256), "S19942C1.s19942c1f5");
    check_field_offset(lv, s19942c1f6, ABISELECT(26770,19258), "S19942C1.s19942c1f6");
    check_field_offset(lv, s19942c1f7, ABISELECT(26784,19264), "S19942C1.s19942c1f7");
    check_field_offset(lv, s19942c1f8, ABISELECT(26880,19336), "S19942C1.s19942c1f8");
    check_field_offset(lv, s19942c1f9, ABISELECT(26884,19340), "S19942C1.s19942c1f9");
    check_field_offset(lv, s19942c1f10, ABISELECT(26888,19344), "S19942C1.s19942c1f10");
    test_class_info(&lv, &cd_S19942C1);
    dp->~S19942C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C1(Test_S19942C1, "S19942C1", ABISELECT(52384,37404));

#else // __cplusplus

extern void _ZN8S19942C1C1Ev();
extern void _ZN8S19942C1D1Ev();
Name_Map name_map_S19942C1[] = {
  NSPAIR(_ZN8S19942C1C1Ev),
  NSPAIR(_ZN8S19942C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C2;
extern VTBL_ENTRY _ZTI8S19942C2[];
extern  VTBL_ENTRY _ZTV8S19942C2[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C13;
extern VTBL_ENTRY _ZTI9S19942C13[];
extern  VTBL_ENTRY _ZTV9S19942C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C13[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C15;
extern VTBL_ENTRY _ZTI9S19942C15[];
extern  VTBL_ENTRY _ZTV9S19942C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C15[];
extern Class_Descriptor cd_S19942C14;
extern VTBL_ENTRY _ZTI9S19942C14[];
extern  VTBL_ENTRY _ZTV9S19942C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C14[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C13;
extern VTBL_ENTRY _ZTI9S19942C13[];
extern  VTBL_ENTRY _ZTV9S19942C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C13[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C3;
extern VTBL_ENTRY _ZTI8S19942C3[];
extern  VTBL_ENTRY _ZTV8S19942C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C3[];
extern Class_Descriptor cd_S19942C16;
extern VTBL_ENTRY _ZTI9S19942C16[];
extern  VTBL_ENTRY _ZTV9S19942C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C16[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C18;
extern VTBL_ENTRY _ZTI9S19942C18[];
extern  VTBL_ENTRY _ZTV9S19942C18[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C3;
extern VTBL_ENTRY _ZTI8S19942C3[];
extern  VTBL_ENTRY _ZTV8S19942C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C3[];
extern Class_Descriptor cd_S19942C17;
extern VTBL_ENTRY _ZTI9S19942C17[];
extern  VTBL_ENTRY _ZTV9S19942C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C17[];
static Base_Class bases_S19942C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C2,    ABISELECT(26896,19348), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C10,    ABISELECT(47776,34160), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C6,    ABISELECT(48000,34324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(48000,34324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19942C6,    ABISELECT(51584,36872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(51584,36872), //bcp->offset
    113, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(51824,37028), //bcp->offset
    121, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(51872,37060), //bcp->offset
    125, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19942C9,    ABISELECT(51872,37060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19942C10,    ABISELECT(51168,36552), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19942C4,    ABISELECT(51168,36552), //bcp->offset
    104, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(48240,34480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19942C6,    ABISELECT(48288,34512), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(48288,34512), //bcp->offset
    87, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19942C13,    ABISELECT(48240,34480), //bcp->offset
    77, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19942C10,    ABISELECT(48592,34712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19942C4,    ABISELECT(48592,34712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19942C12_nt,    ABISELECT(52016,37168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19942C10,    ABISELECT(49008,35032), //bcp->offset
    101, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19942C15,    ABISELECT(48592,34712), //bcp->offset
    92, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19942C14,    ABISELECT(48000,34324), //bcp->offset
    55, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C6,    ABISELECT(52032,37172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19942C6,    ABISELECT(52080,37204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(52080,37204), //bcp->offset
    143, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19942C13,    ABISELECT(52032,37172), //bcp->offset
    129, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19942C12_nt,    ABISELECT(1848,1336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19942C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19942C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19942C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19942C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C10,    ABISELECT(3312,2424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19942C4,    ABISELECT(3312,2424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19942C18,    ABISELECT(3728,2744), //bcp->offset
    29, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19942C10,    ABISELECT(11888,8576), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19942C4,    ABISELECT(11888,8576), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19942C3,    ABISELECT(11888,8576), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19942C17,    ABISELECT(3312,2424), //bcp->offset
    18, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19942C1[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C1D1Ev();
extern void _ZN8S19942C1D0Ev();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void ABISELECT(_ZThn3312_N8S19942C1D1Ev,_ZThn2424_N8S19942C1D1Ev)();
extern void ABISELECT(_ZThn3312_N8S19942C1D0Ev,_ZThn2424_N8S19942C1D0Ev)();
extern void _ZN9S19942C183v13Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void ABISELECT(_ZThn11888_N8S19942C1D1Ev,_ZThn8576_N8S19942C1D1Ev)();
extern void ABISELECT(_ZThn11888_N8S19942C1D0Ev,_ZThn8576_N8S19942C1D0Ev)();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
extern void _ZN8S19942C22v1Ev();
extern void _ZN8S19942C22v2Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN9S19942C142v9Ev();
extern void ABISELECT(_ZTv0_n104_N8S19942C1D1Ev,_ZTv0_n52_N8S19942C1D1Ev)();
extern void ABISELECT(_ZThn48000_N8S19942C1D1Ev,_ZThn34324_N8S19942C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19942C1D0Ev,_ZTv0_n52_N8S19942C1D0Ev)();
extern void ABISELECT(_ZThn48000_N8S19942C1D0Ev,_ZThn34324_N8S19942C1D0Ev)() __attribute__((weak));
extern void _ZN8S19942C62v3Ev();
extern void ABISELECT(_ZTvn240_n104_N8S19942C1D1Ev,_ZTvn156_n52_N8S19942C1D1Ev)();
extern void ABISELECT(_ZTvn240_n104_N8S19942C1D0Ev,_ZTvn156_n52_N8S19942C1D0Ev)();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C152v8Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C62v3Ev();
extern void ABISELECT(_ZTv0_n72_N8S19942C1D1Ev,_ZTv0_n36_N8S19942C1D1Ev)();
extern void ABISELECT(_ZThn52032_N8S19942C1D1Ev,_ZThn37172_N8S19942C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19942C1D0Ev,_ZTv0_n36_N8S19942C1D0Ev)();
extern void ABISELECT(_ZThn52032_N8S19942C1D0Ev,_ZThn37172_N8S19942C1D0Ev)() __attribute__((weak));
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY vtc_S19942C1[] = {
  ABISELECT(48000,34324),
  ABISELECT(26896,19348),
  ABISELECT(51168,36552),
  ABISELECT(52032,37172),
  ABISELECT(47776,34160),
  ABISELECT(52016,37168),
  ABISELECT(51872,37060),
  ABISELECT(51824,37028),
  ABISELECT(51584,36872),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19942C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19942C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
  ABISELECT(44464,31736),
  ABISELECT(48704,34744),
  ABISELECT(48560,34636),
  ABISELECT(48512,34604),
  ABISELECT(48272,34448),
  ABISELECT(-3312,-2424),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn3312_N8S19942C1D1Ev,_ZThn2424_N8S19942C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn3312_N8S19942C1D0Ev,_ZThn2424_N8S19942C1D0Ev),
  ABISELECT(-3728,-2744),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN9S19942C183v13Ev,
  ABISELECT(40128,28592),
  ABISELECT(39984,28484),
  ABISELECT(39936,28452),
  ABISELECT(39696,28296),
  ABISELECT(-11888,-8576),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn11888_N8S19942C1D1Ev,_ZThn8576_N8S19942C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn11888_N8S19942C1D0Ev,_ZThn8576_N8S19942C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
  0,
  0,
  ABISELECT(-26896,-19348),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN8S19942C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19942C22v2Ev,
  0,
  ABISELECT(-47776,-34160),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  ABISELECT(592,388),
  ABISELECT(592,388),
  ABISELECT(592,388),
  ABISELECT(-48000,-34324),
  0,
  0,
  0,
  0,
  ABISELECT(4016,2844),
  ABISELECT(3872,2736),
  ABISELECT(3824,2704),
  ABISELECT(3584,2548),
  ABISELECT(3168,2228),
  ABISELECT(-224,-164),
  ABISELECT(-48000,-34324),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19942C142v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19942C1D1Ev,_ZTv0_n52_N8S19942C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19942C1D0Ev,_ZTv0_n52_N8S19942C1D0Ev),
  ABISELECT(-464,-320),
  ABISELECT(3584,2548),
  ABISELECT(3344,2392),
  ABISELECT(2928,2072),
  ABISELECT(3632,2580),
  ABISELECT(-48240,-34480),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n104_N8S19942C1D1Ev,_ZTvn156_n52_N8S19942C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n104_N8S19942C1D0Ev,_ZTvn156_n52_N8S19942C1D0Ev),
  ABISELECT(-48288,-34512),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  ABISELECT(3424,2456),
  ABISELECT(3280,2348),
  ABISELECT(3232,2316),
  ABISELECT(2992,2160),
  ABISELECT(-48592,-34712),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C152v8Ev,
  ABISELECT(-49008,-35032),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  0,
  0,
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-51168,-36552),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  0,
  0,
  0,
  ABISELECT(-51584,-36872),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-51824,-37028),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  ABISELECT(-51872,-37060),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(-52032,-37172),
  0,
  ABISELECT(-4256,-3012),
  ABISELECT(-208,-144),
  ABISELECT(-448,-300),
  ABISELECT(-864,-620),
  ABISELECT(-160,-112),
  ABISELECT(-52032,-37172),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19942C1D1Ev,_ZTv0_n36_N8S19942C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19942C1D0Ev,_ZTv0_n36_N8S19942C1D0Ev),
  ABISELECT(-52080,-37204),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern VTBL_ENTRY _ZTV8S19942C1[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C16D1Ev();
extern void _ZN9S19942C16D0Ev();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C16__8S19942C1[] = {
  ABISELECT(51168,36552),
  ABISELECT(52032,37172),
  ABISELECT(47776,34160),
  ABISELECT(52016,37168),
  ABISELECT(51872,37060),
  ABISELECT(51824,37028),
  ABISELECT(51584,36872),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C16D0Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C3D1Ev();
extern void _ZN8S19942C3D0Ev();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C39S19942C16__8S19942C1[] = {
  ABISELECT(52016,37168),
  ABISELECT(51872,37060),
  ABISELECT(51824,37028),
  ABISELECT(51584,36872),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C48S19942C39S19942C16__A2__8S19942C1[] = {
  ABISELECT(51872,37060),
  ABISELECT(51824,37028),
  ABISELECT(51584,36872),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C48S19942C39S19942C16__A2__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-51584,-36872),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C48S19942C39S19942C16__A2__8S19942C1[] = {
  0,
  ABISELECT(-51824,-37028),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C48S19942C39S19942C16__A2__8S19942C1[] = {
  0,
  ABISELECT(-51872,-37060),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C39S19942C16__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-51584,-36872),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C39S19942C16__8S19942C1[] = {
  0,
  ABISELECT(-51824,-37028),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C39S19942C16__8S19942C1[] = {
  0,
  ABISELECT(-51872,-37060),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C10__9S19942C16__8S19942C1[] = {
  0,
  ABISELECT(-47776,-34160),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void ABISELECT(_ZTv0_n72_N9S19942C16D1Ev,_ZTv0_n36_N9S19942C16D1Ev)();
extern void ABISELECT(_ZThn52032_N9S19942C16D1Ev,_ZThn37172_N9S19942C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19942C16D0Ev,_ZTv0_n36_N9S19942C16D0Ev)();
extern void ABISELECT(_ZThn52032_N9S19942C16D0Ev,_ZThn37172_N9S19942C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19942C13__9S19942C16__8S19942C1[] = {
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(-52032,-37172),
  0,
  ABISELECT(-4256,-3012),
  ABISELECT(-208,-144),
  ABISELECT(-448,-300),
  ABISELECT(-864,-620),
  ABISELECT(-160,-112),
  ABISELECT(-52032,-37172),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19942C16D1Ev,_ZTv0_n36_N9S19942C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19942C16D0Ev,_ZTv0_n36_N9S19942C16D0Ev),
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A1__9S19942C16__8S19942C1[] = {
  0,
  ABISELECT(-51872,-37060),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C16__8S19942C1[] = {
  0,
  0,
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-51168,-36552),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__9S19942C16__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-51584,-36872),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A3__9S19942C16__8S19942C1[] = {
  0,
  ABISELECT(-51824,-37028),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C59S19942C13__A1__9S19942C16__8S19942C1[] = {
  ABISELECT(-52080,-37204),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C17D1Ev();
extern void _ZN9S19942C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C17__8S19942C1[] = {
  ABISELECT(44464,31736),
  ABISELECT(48704,34744),
  ABISELECT(48560,34636),
  ABISELECT(48512,34604),
  ABISELECT(48272,34448),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C17D0Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C49S19942C17__A3__8S19942C1[] = {
  ABISELECT(48560,34636),
  ABISELECT(48512,34604),
  ABISELECT(48272,34448),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C49S19942C17__A3__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-48272,-34448),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C49S19942C17__A3__8S19942C1[] = {
  0,
  ABISELECT(-48512,-34604),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C49S19942C17__A3__8S19942C1[] = {
  0,
  ABISELECT(-48560,-34636),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C3D1Ev();
extern void _ZN8S19942C3D0Ev();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C39S19942C17__A1__8S19942C1[] = {
  ABISELECT(40128,28592),
  ABISELECT(39984,28484),
  ABISELECT(39936,28452),
  ABISELECT(39696,28296),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C48S19942C39S19942C17__A4__8S19942C1[] = {
  ABISELECT(39984,28484),
  ABISELECT(39936,28452),
  ABISELECT(39696,28296),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C48S19942C39S19942C17__A4__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-39696,-28296),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C48S19942C39S19942C17__A4__8S19942C1[] = {
  0,
  ABISELECT(-39936,-28452),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C48S19942C39S19942C17__A4__8S19942C1[] = {
  0,
  ABISELECT(-39984,-28484),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C39S19942C17__A1__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-39696,-28296),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C39S19942C17__A1__8S19942C1[] = {
  0,
  ABISELECT(-39936,-28452),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C39S19942C17__A1__8S19942C1[] = {
  0,
  ABISELECT(-39984,-28484),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__9S19942C17__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-48272,-34448),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__9S19942C17__8S19942C1[] = {
  0,
  ABISELECT(-48512,-34604),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__9S19942C17__8S19942C1[] = {
  0,
  ABISELECT(-48560,-34636),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void ABISELECT(_ZThn8576_N9S19942C17D1Ev,_ZThn6152_N9S19942C17D1Ev)();
extern void ABISELECT(_ZThn8576_N9S19942C17D0Ev,_ZThn6152_N9S19942C17D0Ev)();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C3__9S19942C17__8S19942C1[] = {
  ABISELECT(40128,28592),
  ABISELECT(39984,28484),
  ABISELECT(39936,28452),
  ABISELECT(39696,28296),
  ABISELECT(-8576,-6152),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8576_N9S19942C17D1Ev,_ZThn6152_N9S19942C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8576_N9S19942C17D0Ev,_ZThn6152_N9S19942C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
};
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C10__A2__9S19942C17__8S19942C1[] = {
  0,
  ABISELECT(-44464,-31736),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN9S19942C142v9Ev();
extern void _ZN9S19942C14D1Ev();
extern void _ZN9S19942C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C14__8S19942C1[] = {
  ABISELECT(4016,2844),
  ABISELECT(3872,2736),
  ABISELECT(3824,2704),
  ABISELECT(3584,2548),
  ABISELECT(3168,2228),
  ABISELECT(-224,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19942C142v9Ev,
  (VTBL_ENTRY)&_ZN9S19942C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C14D0Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C13D1Ev();
extern void _ZN9S19942C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C139S19942C14__8S19942C1[] = {
  ABISELECT(-464,-320),
  ABISELECT(3584,2548),
  ABISELECT(3344,2392),
  ABISELECT(2928,2072),
  ABISELECT(3632,2580),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D0Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A1__9S19942C139S19942C14__8S19942C1[] = {
  0,
  ABISELECT(-3632,-2580),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C139S19942C14__8S19942C1[] = {
  0,
  0,
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-2928,-2072),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__9S19942C139S19942C14__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-3344,-2392),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A3__9S19942C139S19942C14__8S19942C1[] = {
  0,
  ABISELECT(-3584,-2548),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C10__A1__9S19942C139S19942C14__8S19942C1[] = {
  0,
  ABISELECT(464,320),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C159S19942C14__8S19942C1[] = {
  ABISELECT(3424,2456),
  ABISELECT(3280,2348),
  ABISELECT(3232,2316),
  ABISELECT(2992,2160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C152v8Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C49S19942C159S19942C14__A1__8S19942C1[] = {
  ABISELECT(3280,2348),
  ABISELECT(3232,2316),
  ABISELECT(2992,2160),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C49S19942C159S19942C14__A1__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-2992,-2160),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C49S19942C159S19942C14__A1__8S19942C1[] = {
  0,
  ABISELECT(-3232,-2316),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C49S19942C159S19942C14__A1__8S19942C1[] = {
  0,
  ABISELECT(-3280,-2348),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__9S19942C159S19942C14__8S19942C1[] = {
  0,
  ABISELECT(-3232,-2316),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__9S19942C159S19942C14__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-2992,-2160),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__9S19942C159S19942C14__8S19942C1[] = {
  0,
  ABISELECT(-3280,-2348),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C10__9S19942C14__8S19942C1[] = {
  0,
  ABISELECT(224,164),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C14__8S19942C1[] = {
  0,
  0,
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-3168,-2228),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__A1__9S19942C14__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-3584,-2548),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A2__9S19942C14__8S19942C1[] = {
  0,
  ABISELECT(-3824,-2704),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A3__9S19942C14__8S19942C1[] = {
  0,
  ABISELECT(-3872,-2736),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void ABISELECT(_ZThn240_N9S19942C14D1Ev,_ZThn156_N9S19942C14D1Ev)();
extern void ABISELECT(_ZThn240_N9S19942C14D0Ev,_ZThn156_N9S19942C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19942C13__9S19942C14__8S19942C1[] = {
  ABISELECT(-464,-320),
  ABISELECT(3584,2548),
  ABISELECT(3344,2392),
  ABISELECT(2928,2072),
  ABISELECT(3632,2580),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N9S19942C14D1Ev,_ZThn156_N9S19942C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N9S19942C14D0Ev,_ZThn156_N9S19942C14D0Ev),
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C15__9S19942C14__8S19942C1[] = {
  ABISELECT(3424,2456),
  ABISELECT(3280,2348),
  ABISELECT(3232,2316),
  ABISELECT(2992,2160),
  ABISELECT(-592,-388),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C152v8Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__8S19942C1[] = {
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C4__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C4__8S19942C1[] = {
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C4__8S19942C1[] = {
  0,
  ABISELECT(-704,-508),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C13D1Ev();
extern void _ZN9S19942C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C13__A1__8S19942C1[] = {
  ABISELECT(-4256,-3012),
  ABISELECT(-208,-144),
  ABISELECT(-448,-300),
  ABISELECT(-864,-620),
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D0Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A1__9S19942C13__A1__8S19942C1[] = {
  0,
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C13__A1__8S19942C1[] = {
  0,
  0,
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(864,620),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__9S19942C13__A1__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(448,300),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A3__9S19942C13__A1__8S19942C1[] = {
  0,
  ABISELECT(208,144),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C10__A1__9S19942C13__A1__8S19942C1[] = {
  0,
  ABISELECT(4256,3012),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
static  VTT_ENTRY vtt_S19942C1[] = {
  {&(_ZTV8S19942C1[11]),  11,148},
  {&(_tg__ZTV9S19942C16__8S19942C1[9]),  9,16},
  {&(_tg__ZTV8S19942C39S19942C16__8S19942C1[6]),  6,13},
  {&(_tg__ZTV8S19942C48S19942C39S19942C16__A2__8S19942C1[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C48S19942C39S19942C16__A2__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C48S19942C39S19942C16__A2__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C48S19942C39S19942C16__A2__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C5__8S19942C39S19942C16__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C39S19942C16__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C39S19942C16__8S19942C1[3]),  3,4},
  {&(_tg__ZTV9S19942C10__9S19942C16__8S19942C1[3]),  3,4},
  {&(_tg__ZTV9S19942C13__9S19942C16__8S19942C1[11]),  11,14},
  {&(_tg__ZTV8S19942C68S19942C9__A1__9S19942C16__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C4__9S19942C16__8S19942C1[7]),  7,9},
  {&(_tg__ZTV8S19942C5__9S19942C16__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A3__9S19942C16__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C59S19942C13__A1__9S19942C16__8S19942C1[2]),  2,5},
  {&(_tg__ZTV9S19942C17__8S19942C1[7]),  7,11},
  {&(_tg__ZTV8S19942C49S19942C17__A3__8S19942C1[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C49S19942C17__A3__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C49S19942C17__A3__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C49S19942C17__A3__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C39S19942C17__A1__8S19942C1[6]),  6,13},
  {&(_tg__ZTV8S19942C48S19942C39S19942C17__A4__8S19942C1[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C48S19942C39S19942C17__A4__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C48S19942C39S19942C17__A4__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C48S19942C39S19942C17__A4__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C5__8S19942C39S19942C17__A1__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C39S19942C17__A1__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C39S19942C17__A1__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C5__9S19942C17__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__9S19942C17__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__9S19942C17__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C3__9S19942C17__8S19942C1[6]),  6,13},
  {&(_tg__ZTV9S19942C10__A2__9S19942C17__8S19942C1[3]),  3,4},
  {&(_ZTV8S19942C1[49]),  49,148},
  {&(_ZTV8S19942C1[54]),  54,148},
  {&(_ZTV8S19942C1[71]),  71,148},
  {&(_ZTV8S19942C1[111]),  111,148},
  {&(_ZTV8S19942C1[118]),  118,148},
  {&(_ZTV8S19942C1[124]),  124,148},
  {&(_ZTV8S19942C1[128]),  128,148},
  {&(_ZTV8S19942C1[84]),  84,148},
  {&(_ZTV8S19942C1[89]),  89,148},
  {&(_ZTV8S19942C1[98]),  98,148},
  {&(_ZTV8S19942C1[103]),  103,148},
  {&(_ZTV8S19942C1[140]),  140,148},
  {&(_ZTV8S19942C1[145]),  145,148},
  {&(_ZTV8S19942C1[25]),  25,148},
  {&(_ZTV8S19942C1[38]),  38,148},
  {&(_tg__ZTV9S19942C14__8S19942C1[8]),  8,14},
  {&(_tg__ZTV9S19942C139S19942C14__8S19942C1[7]),  7,10},
  {&(_tg__ZTV8S19942C68S19942C9__A1__9S19942C139S19942C14__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C4__9S19942C139S19942C14__8S19942C1[7]),  7,9},
  {&(_tg__ZTV8S19942C5__9S19942C139S19942C14__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A3__9S19942C139S19942C14__8S19942C1[3]),  3,4},
  {&(_tg__ZTV9S19942C10__A1__9S19942C139S19942C14__8S19942C1[3]),  3,4},
  {&(_tg__ZTV9S19942C159S19942C14__8S19942C1[6]),  6,9},
  {&(_tg__ZTV8S19942C49S19942C159S19942C14__A1__8S19942C1[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C49S19942C159S19942C14__A1__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C49S19942C159S19942C14__A1__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C49S19942C159S19942C14__A1__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C6__9S19942C159S19942C14__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C5__9S19942C159S19942C14__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C68S19942C9__A2__9S19942C159S19942C14__8S19942C1[3]),  3,4},
  {&(_tg__ZTV9S19942C10__9S19942C14__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C4__9S19942C14__8S19942C1[7]),  7,9},
  {&(_tg__ZTV8S19942C5__A1__9S19942C14__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A2__9S19942C14__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A3__9S19942C14__8S19942C1[3]),  3,4},
  {&(_tg__ZTV9S19942C13__9S19942C14__8S19942C1[7]),  7,10},
  {&(_tg__ZTV9S19942C15__9S19942C14__8S19942C1[6]),  6,9},
  {&(_tg__ZTV8S19942C4__8S19942C1[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C4__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C4__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C4__8S19942C1[3]),  3,4},
  {&(_tg__ZTV9S19942C13__A1__8S19942C1[7]),  7,10},
  {&(_tg__ZTV8S19942C68S19942C9__A1__9S19942C13__A1__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C4__9S19942C13__A1__8S19942C1[7]),  7,9},
  {&(_tg__ZTV8S19942C5__9S19942C13__A1__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A3__9S19942C13__A1__8S19942C1[3]),  3,4},
  {&(_tg__ZTV9S19942C10__A1__9S19942C13__A1__8S19942C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19942C1[];
extern  VTBL_ENTRY _ZTV8S19942C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C1[];
static VTBL_ENTRY alt_thunk_names23[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19942C16D0Ev,_ZTv0_n36_N9S19942C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn52032_N9S19942C16D0Ev,_ZThn37172_N9S19942C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19942C16D1Ev,_ZTv0_n36_N9S19942C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn52032_N9S19942C16D1Ev,_ZThn37172_N9S19942C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19942C1D0Ev,_ZTv0_n36_N8S19942C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn52032_N8S19942C1D0Ev,_ZThn37172_N8S19942C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19942C1D1Ev,_ZTv0_n36_N8S19942C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn52032_N8S19942C1D1Ev,_ZThn37172_N8S19942C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19942C1D0Ev,_ZTv0_n52_N8S19942C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48000_N8S19942C1D0Ev,_ZThn34324_N8S19942C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19942C1D1Ev,_ZTv0_n52_N8S19942C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48000_N8S19942C1D1Ev,_ZThn34324_N8S19942C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19942C1 = {  "S19942C1", // class name
  bases_S19942C1, 37,
  &(vtc_S19942C1[0]), // expected_vtbl_contents
  &(vtt_S19942C1[0]), // expected_vtt_contents
  ABISELECT(52384,37404), // object size
  NSPAIRA(_ZTI8S19942C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19942C1),148, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19942C1),82, //virtual table table var
  35, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names23,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C4  {
  short s18575c4f0:6;
  long s18575c4f1;
  short s18575c4f2:4;
  __tsi64 s18575c4f3[6];
  long s18575c4f4[7];
  void *s18575c4f5;
  virtual void  v3(); // _ZN8S18575C42v3Ev
  ~S18575C4(); // tgen
  S18575C4(); // tgen
};
//SIG(-1 S18575C4) C1{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}


void  S18575C4 ::v3(){vfunc_called(this, "_ZN8S18575C42v3Ev");}
S18575C4 ::~S18575C4(){ note_dtor("S18575C4", this);} // tgen
S18575C4 ::S18575C4(){ note_ctor("S18575C4", this);} // tgen

static void Test_S18575C4()
{
  extern Class_Descriptor cd_S18575C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,25)];
    init_test(&cd_S18575C4, buf);
    S18575C4 *dp, &lv = *(dp=new (buf) S18575C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,96), "sizeof(S18575C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18575C4)");
    set_bf_and_test(lv, s18575c4f0, ABISELECT(8,4), 0, 6, 1, "S18575C4");
    set_bf_and_test(lv, s18575c4f0, ABISELECT(8,4), 0, 6, hide_sll(1LL<<5), "S18575C4");
    check_field_offset(lv, s18575c4f1, ABISELECT(16,8), "S18575C4.s18575c4f1");
    set_bf_and_test(lv, s18575c4f2, ABISELECT(24,12), 0, 4, 1, "S18575C4");
    set_bf_and_test(lv, s18575c4f2, ABISELECT(24,12), 0, 4, hide_sll(1LL<<3), "S18575C4");
    check_field_offset(lv, s18575c4f3, ABISELECT(32,16), "S18575C4.s18575c4f3");
    check_field_offset(lv, s18575c4f4, ABISELECT(80,64), "S18575C4.s18575c4f4");
    check_field_offset(lv, s18575c4f5, ABISELECT(136,92), "S18575C4.s18575c4f5");
    test_class_info(&lv, &cd_S18575C4);
    dp->~S18575C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C4(Test_S18575C4, "S18575C4", ABISELECT(144,96));

#else // __cplusplus

extern void _ZN8S18575C4C1Ev();
extern void _ZN8S18575C4D1Ev();
Name_Map name_map_S18575C4[] = {
  NSPAIR(_ZN8S18575C4C1Ev),
  NSPAIR(_ZN8S18575C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18575C4[];
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY vtc_S18575C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C4[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
Class_Descriptor cd_S18575C4 = {  "S18575C4", // class name
  0,0,//no base classes
  &(vtc_S18575C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,96), // object size
  NSPAIRA(_ZTI8S18575C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18575C4),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C5  {
  int s18575c5f0[2];
  long s18575c5f1[2];
  ::S18575C4 s18575c5f2[3];
  virtual void  v4(); // _ZN8S18575C52v4Ev
  virtual void  v5(); // _ZN8S18575C52v5Ev
  virtual void  v6(); // _ZN8S18575C52v6Ev
  ~S18575C5(); // tgen
  S18575C5(); // tgen
};
//SIG(-1 S18575C5) C1{ v1 v2 v3 Fi[2] Fl[2] FC2{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]}


void  S18575C5 ::v4(){vfunc_called(this, "_ZN8S18575C52v4Ev");}
void  S18575C5 ::v5(){vfunc_called(this, "_ZN8S18575C52v5Ev");}
void  S18575C5 ::v6(){vfunc_called(this, "_ZN8S18575C52v6Ev");}
S18575C5 ::~S18575C5(){ note_dtor("S18575C5", this);} // tgen
S18575C5 ::S18575C5(){ note_ctor("S18575C5", this);} // tgen

static void Test_S18575C5()
{
  extern Class_Descriptor cd_S18575C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,78)];
    init_test(&cd_S18575C5, buf);
    S18575C5 *dp, &lv = *(dp=new (buf) S18575C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S18575C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18575C5)");
    check_field_offset(lv, s18575c5f0, ABISELECT(8,4), "S18575C5.s18575c5f0");
    check_field_offset(lv, s18575c5f1, ABISELECT(16,12), "S18575C5.s18575c5f1");
    check_field_offset(lv, s18575c5f2, ABISELECT(32,20), "S18575C5.s18575c5f2");
    test_class_info(&lv, &cd_S18575C5);
    dp->~S18575C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C5(Test_S18575C5, "S18575C5", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN8S18575C5C1Ev();
extern void _ZN8S18575C5D1Ev();
Name_Map name_map_S18575C5[] = {
  NSPAIR(_ZN8S18575C5C1Ev),
  NSPAIR(_ZN8S18575C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18575C5[];
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY vtc_S18575C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C5[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
Class_Descriptor cd_S18575C5 = {  "S18575C5", // class name
  0,0,//no base classes
  &(vtc_S18575C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI8S18575C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18575C5),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C6  : virtual S18575C4 {
  void *s18575c6f0;
  ::S18575C4 s18575c6f1;
  __tsi64 s18575c6f2:3;
  ~S18575C6(); // tgen
  S18575C6(); // tgen
};
//SIG(-1 S18575C6) C1{ VBC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC2 FL:3}


S18575C6 ::~S18575C6(){ note_dtor("S18575C6", this);} // tgen
S18575C6 ::S18575C6(){ note_ctor("S18575C6", this);} // tgen

static void Test_S18575C6()
{
  extern Class_Descriptor cd_S18575C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,52)];
    init_test(&cd_S18575C6, buf);
    S18575C6 *dp, &lv = *(dp=new (buf) S18575C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,204), "sizeof(S18575C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18575C6)");
    check_base_class_offset(lv, (S18575C4*), ABISELECT(168,108), "S18575C6");
    check_field_offset(lv, s18575c6f0, ABISELECT(8,4), "S18575C6.s18575c6f0");
    check_field_offset(lv, s18575c6f1, ABISELECT(16,8), "S18575C6.s18575c6f1");
    set_bf_and_test(lv, s18575c6f2, ABISELECT(160,104), 0, 3, 1, "S18575C6");
    set_bf_and_test(lv, s18575c6f2, ABISELECT(160,104), 0, 3, hide_sll(1LL<<2), "S18575C6");
    test_class_info(&lv, &cd_S18575C6);
    dp->~S18575C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C6(Test_S18575C6, "S18575C6", ABISELECT(312,204));

#else // __cplusplus

extern void _ZN8S18575C6C1Ev();
extern void _ZN8S18575C6D1Ev();
Name_Map name_map_S18575C6[] = {
  NSPAIR(_ZN8S18575C6C1Ev),
  NSPAIR(_ZN8S18575C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
static Base_Class bases_S18575C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C4,    ABISELECT(168,108), //bcp->offset
    3, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18575C6[];
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY vtc_S18575C6[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S18575C6[];
static  VTT_ENTRY vtt_S18575C6[] = {
  {&(_ZTV8S18575C6[3]),  3,7},
  {&(_ZTV8S18575C6[6]),  6,7},
};
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
Class_Descriptor cd_S18575C6 = {  "S18575C6", // class name
  bases_S18575C6, 1,
  &(vtc_S18575C6[0]), // expected_vtbl_contents
  &(vtt_S18575C6[0]), // expected_vtt_contents
  ABISELECT(312,204), // object size
  NSPAIRA(_ZTI8S18575C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S18575C6),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18575C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C7  {
  __tsi64 s18575c7f0;
  long double s18575c7f1;
  void *s18575c7f2;
  char s18575c7f3;
  ::S18575C4 s18575c7f4;
  void *s18575c7f5[2];
  long s18575c7f6[8];
  short s18575c7f7;
  void *s18575c7f8;
  __tsi64 s18575c7f9:64;
  virtual void  v7(); // _ZN8S18575C72v7Ev
  ~S18575C7(); // tgen
  S18575C7(); // tgen
};
//SIG(-1 S18575C7) C1{ v1 FL FD Fp Fc FC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64}


void  S18575C7 ::v7(){vfunc_called(this, "_ZN8S18575C72v7Ev");}
S18575C7 ::~S18575C7(){ note_dtor("S18575C7", this);} // tgen
S18575C7 ::S18575C7(){ note_ctor("S18575C7", this);} // tgen

static void Test_S18575C7()
{
  extern Class_Descriptor cd_S18575C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,47)];
    init_test(&cd_S18575C7, buf);
    S18575C7 *dp, &lv = *(dp=new (buf) S18575C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,184), "sizeof(S18575C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C7)");
    check_field_offset(lv, s18575c7f0, ABISELECT(8,4), "S18575C7.s18575c7f0");
    check_field_offset(lv, s18575c7f1, ABISELECT(16,12), "S18575C7.s18575c7f1");
    check_field_offset(lv, s18575c7f2, ABISELECT(32,24), "S18575C7.s18575c7f2");
    check_field_offset(lv, s18575c7f3, ABISELECT(40,28), "S18575C7.s18575c7f3");
    check_field_offset(lv, s18575c7f4, ABISELECT(48,32), "S18575C7.s18575c7f4");
    check_field_offset(lv, s18575c7f5, ABISELECT(192,128), "S18575C7.s18575c7f5");
    check_field_offset(lv, s18575c7f6, ABISELECT(208,136), "S18575C7.s18575c7f6");
    check_field_offset(lv, s18575c7f7, ABISELECT(272,168), "S18575C7.s18575c7f7");
    check_field_offset(lv, s18575c7f8, ABISELECT(280,172), "S18575C7.s18575c7f8");
    set_bf_and_test(lv, s18575c7f9, ABISELECT(288,176), 0, 64, 1, "S18575C7");
    set_bf_and_test(lv, s18575c7f9, ABISELECT(288,176), 0, 64, hide_sll(1LL<<63), "S18575C7");
    test_class_info(&lv, &cd_S18575C7);
    dp->~S18575C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C7(Test_S18575C7, "S18575C7", ABISELECT(304,184));

#else // __cplusplus

extern void _ZN8S18575C7C1Ev();
extern void _ZN8S18575C7D1Ev();
Name_Map name_map_S18575C7[] = {
  NSPAIR(_ZN8S18575C7C1Ev),
  NSPAIR(_ZN8S18575C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18575C7[];
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY vtc_S18575C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C7[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
Class_Descriptor cd_S18575C7 = {  "S18575C7", // class name
  0,0,//no base classes
  &(vtc_S18575C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,184), // object size
  NSPAIRA(_ZTI8S18575C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18575C7),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C3  : S18575C4 , virtual S18575C5 , virtual S18575C6 , virtual S18575C7 {
  ::S18575C7 s18575c3f0;
  short s18575c3f1;
  int s18575c3f2[2];
  ~S18575C3(); // tgen
  S18575C3(); // tgen
};
//SIG(-1 S18575C3) C1{ BC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ v2 v3 v4 Fi[2] Fl[2] FC2[3]} VBC4{ VBC2 Fp FC2 FL:3} VBC5{ v5 FL FD Fp Fc FC2 Fp[2] Fl[8] Fs Fp FL:64} FC5 Fs Fi[2]}


S18575C3 ::~S18575C3(){ note_dtor("S18575C3", this);} // tgen
S18575C3 ::S18575C3(){ note_ctor("S18575C3", this);} // tgen

static void Test_S18575C3()
{
  extern Class_Descriptor cd_S18575C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,248)];
    init_test(&cd_S18575C3, buf);
    S18575C3 *dp, &lv = *(dp=new (buf) S18575C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,988), "sizeof(S18575C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C3)");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*), 0, "S18575C3");
    check_base_class_offset(lv, (S18575C5*), ABISELECT(464,292), "S18575C3");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(1096,708), "S18575C3");
    check_base_class_offset(lv, (S18575C6*), ABISELECT(928,600), "S18575C3");
    check_base_class_offset(lv, (S18575C7*), ABISELECT(1248,804), "S18575C3");
    check_field_offset(lv, s18575c3f0, ABISELECT(144,96), "S18575C3.s18575c3f0");
    check_field_offset(lv, s18575c3f1, ABISELECT(448,280), "S18575C3.s18575c3f1");
    check_field_offset(lv, s18575c3f2, ABISELECT(452,284), "S18575C3.s18575c3f2");
    test_class_info(&lv, &cd_S18575C3);
    dp->~S18575C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C3(Test_S18575C3, "S18575C3", ABISELECT(1552,988));

#else // __cplusplus

extern void _ZN8S18575C3C1Ev();
extern void _ZN8S18575C3D1Ev();
Name_Map name_map_S18575C3[] = {
  NSPAIR(_ZN8S18575C3C1Ev),
  NSPAIR(_ZN8S18575C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
static Base_Class bases_S18575C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C5,    ABISELECT(464,292), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C4,    ABISELECT(1096,708), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18575C6,    ABISELECT(928,600), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C7,    ABISELECT(1248,804), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18575C3[];
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY vtc_S18575C3[] = {
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(168,108),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  0,
  ABISELECT(-1096,-708),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern VTBL_ENTRY _ZTV8S18575C3[];
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C3[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__8S18575C3[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C3[] = {
  {&(_ZTV8S18575C3[6]),  6,26},
  {&(_ZTV8S18575C3[12]),  12,26},
  {&(_ZTV8S18575C3[18]),  18,26},
  {&(_ZTV8S18575C3[21]),  21,26},
  {&(_ZTV8S18575C3[25]),  25,26},
  {&(_tg__ZTV8S18575C6__8S18575C3[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__8S18575C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
Class_Descriptor cd_S18575C3 = {  "S18575C3", // class name
  bases_S18575C3, 5,
  &(vtc_S18575C3[0]), // expected_vtbl_contents
  &(vtt_S18575C3[0]), // expected_vtt_contents
  ABISELECT(1552,988), // object size
  NSPAIRA(_ZTI8S18575C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S18575C3),26, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18575C3),7, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C9  : S18575C7 , S18575C5 , S18575C4 {
  long s18575c9f0;
  __tsi64 s18575c9f1;
  void *s18575c9f2[8];
  ::S18575C3 s18575c9f3;
  void *s18575c9f4;
  int s18575c9f5;
  ::S18575C3 s18575c9f6;
  int s18575c9f7;
  virtual  ~S18575C9(); // _ZN8S18575C9D1Ev
  virtual void  v8(); // _ZN8S18575C92v8Ev
  S18575C9(); // tgen
};
//SIG(-1 S18575C9) C1{ BC2{ v2 FL FD Fp Fc FC3{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC4{ v3 v4 v5 Fi[2] Fl[2] FC3[3]} BC3 vd v1 Fl FL Fp[8] FC5{ BC3 VBC4 VBC6{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC5 Fi}


 S18575C9 ::~S18575C9(){ note_dtor("S18575C9", this);}
void  S18575C9 ::v8(){vfunc_called(this, "_ZN8S18575C92v8Ev");}
S18575C9 ::S18575C9(){ note_ctor("S18575C9", this);} // tgen

static void Test_S18575C9()
{
  extern Class_Descriptor cd_S18575C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(259,656)];
    init_test(&cd_S18575C9, buf);
    S18575C9 *dp, &lv = *(dp=new (buf) S18575C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4128,2620), "sizeof(S18575C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C9)");
    check_base_class_offset(lv, (S18575C7*), 0, "S18575C9");
    check_base_class_offset(lv, (S18575C5*), ABISELECT(296,184), "S18575C9");
    check_base_class_offset(lv, (S18575C4*), ABISELECT(760,492), "S18575C9");
    check_field_offset(lv, s18575c9f0, ABISELECT(904,588), "S18575C9.s18575c9f0");
    check_field_offset(lv, s18575c9f1, ABISELECT(912,592), "S18575C9.s18575c9f1");
    check_field_offset(lv, s18575c9f2, ABISELECT(920,600), "S18575C9.s18575c9f2");
    check_field_offset(lv, s18575c9f3, ABISELECT(992,632), "S18575C9.s18575c9f3");
    check_field_offset(lv, s18575c9f4, ABISELECT(2544,1620), "S18575C9.s18575c9f4");
    check_field_offset(lv, s18575c9f5, ABISELECT(2552,1624), "S18575C9.s18575c9f5");
    check_field_offset(lv, s18575c9f6, ABISELECT(2560,1628), "S18575C9.s18575c9f6");
    check_field_offset(lv, s18575c9f7, ABISELECT(4112,2616), "S18575C9.s18575c9f7");
    test_class_info(&lv, &cd_S18575C9);
    dp->~S18575C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C9(Test_S18575C9, "S18575C9", ABISELECT(4128,2620));

#else // __cplusplus

extern void _ZN8S18575C9C1Ev();
extern void _ZN8S18575C9D1Ev();
Name_Map name_map_S18575C9[] = {
  NSPAIR(_ZN8S18575C9C1Ev),
  NSPAIR(_ZN8S18575C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
static Base_Class bases_S18575C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C5,    ABISELECT(296,184), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C4,    ABISELECT(760,492), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S18575C9[];
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C9D1Ev();
extern void _ZN8S18575C9D0Ev();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY vtc_S18575C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C9[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18575C9D1Ev,
  (VTBL_ENTRY)&_ZN8S18575C9D0Ev,
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI8S18575C9[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI8S18575C9[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
Class_Descriptor cd_S18575C9 = {  "S18575C9", // class name
  bases_S18575C9, 3,
  &(vtc_S18575C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(4128,2620), // object size
  NSPAIRA(_ZTI8S18575C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S18575C9),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C12  : S18575C7 {
  ::S18575C6 s18575c12f0;
  int s18575c12f1;
  void *s18575c12f2;
  int s18575c12f3;
  virtual  ~S18575C12(); // _ZN9S18575C12D1Ev
  virtual void  v12(); // _ZN9S18575C123v12Ev
  S18575C12(); // tgen
};
//SIG(-1 S18575C12) C1{ BC2{ v2 FL FD Fp Fc FC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v1 FC4{ VBC3 Fp FC3 FL:3} Fi Fp Fi}


 S18575C12 ::~S18575C12(){ note_dtor("S18575C12", this);}
void  S18575C12 ::v12(){vfunc_called(this, "_ZN9S18575C123v12Ev");}
S18575C12 ::S18575C12(){ note_ctor("S18575C12", this);} // tgen

static void Test_S18575C12()
{
  extern Class_Descriptor cd_S18575C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,101)];
    init_test(&cd_S18575C12, buf);
    S18575C12 *dp, &lv = *(dp=new (buf) S18575C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,400), "sizeof(S18575C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C12)");
    check_base_class_offset(lv, (S18575C7*), 0, "S18575C12");
    check_field_offset(lv, s18575c12f0, ABISELECT(296,184), "S18575C12.s18575c12f0");
    check_field_offset(lv, s18575c12f1, ABISELECT(608,388), "S18575C12.s18575c12f1");
    check_field_offset(lv, s18575c12f2, ABISELECT(616,392), "S18575C12.s18575c12f2");
    check_field_offset(lv, s18575c12f3, ABISELECT(624,396), "S18575C12.s18575c12f3");
    test_class_info(&lv, &cd_S18575C12);
    dp->~S18575C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C12(Test_S18575C12, "S18575C12", ABISELECT(640,400));

#else // __cplusplus

extern void _ZN9S18575C12C1Ev();
extern void _ZN9S18575C12D1Ev();
Name_Map name_map_S18575C12[] = {
  NSPAIR(_ZN9S18575C12C1Ev),
  NSPAIR(_ZN9S18575C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
static Base_Class bases_S18575C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S18575C12[];
extern void _ZN8S18575C72v7Ev();
extern void _ZN9S18575C12D1Ev();
extern void _ZN9S18575C12D0Ev();
extern void _ZN9S18575C123v12Ev();
static  VTBL_ENTRY vtc_S18575C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C12[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN9S18575C12D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C12D0Ev,
  (VTBL_ENTRY)&_ZN9S18575C123v12Ev,
};
extern VTBL_ENTRY _ZTI9S18575C12[];
extern  VTBL_ENTRY _ZTV9S18575C12[];
Class_Descriptor cd_S18575C12 = {  "S18575C12", // class name
  bases_S18575C12, 1,
  &(vtc_S18575C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,400), // object size
  NSPAIRA(_ZTI9S18575C12),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S18575C12),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C11  : virtual S18575C7 , virtual S18575C9 , virtual S18575C4 , virtual S18575C6 {
  __tsi64 s18575c11f0:44;
  void *s18575c11f1;
  int s18575c11f2;
  ::S18575C3 s18575c11f3;
  long s18575c11f4[2];
  int s18575c11f5[3];
  ::S18575C9 s18575c11f6;
  char s18575c11f7:7;
  ::S18575C12 s18575c11f8;
  ~S18575C11(); // tgen
  S18575C11(); // tgen
};
//SIG(-1 S18575C11) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} VBC4{ BC2 BC5{ v2 v3 v4 Fi[2] Fl[2] FC3[3]} BC3 vd v6 Fl FL Fp[8] FC6{ BC3 VBC5 VBC7{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC6 Fi} VBC3 VBC7 FL:44 Fp Fi FC6 Fl[2] Fi[3] FC4 Fc:7 FC8{ BC2 vd v7 FC7 Fi Fp Fi}}


S18575C11 ::~S18575C11(){ note_dtor("S18575C11", this);} // tgen
S18575C11 ::S18575C11(){ note_ctor("S18575C11", this);} // tgen

static void Test_S18575C11()
{
  extern Class_Descriptor cd_S18575C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(697,1766)];
    init_test(&cd_S18575C11, buf);
    S18575C11 *dp, &lv = *(dp=new (buf) S18575C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11136,7060), "sizeof(S18575C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C11)");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*), ABISELECT(6400,4052), "S18575C11");
    check_base_class_offset(lv, (S18575C7*)(S18575C9*), ABISELECT(6704,4236), "S18575C11");
    check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(7000,4420), "S18575C11");
    check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(7464,4728), "S18575C11");
    check_base_class_offset(lv, (S18575C9*), ABISELECT(6704,4236), "S18575C11");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*), ABISELECT(10824,6856), "S18575C11");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(10824,6856), "S18575C11");
    check_base_class_offset(lv, (S18575C6*), ABISELECT(10968,6952), "S18575C11");
    set_bf_and_test(lv, s18575c11f0, ABISELECT(8,4), 0, 44, 1, "S18575C11");
    set_bf_and_test(lv, s18575c11f0, ABISELECT(8,4), 0, 44, hide_sll(1LL<<43), "S18575C11");
    check_field_offset(lv, s18575c11f1, ABISELECT(16,12), "S18575C11.s18575c11f1");
    check_field_offset(lv, s18575c11f2, ABISELECT(24,16), "S18575C11.s18575c11f2");
    check_field_offset(lv, s18575c11f3, ABISELECT(32,20), "S18575C11.s18575c11f3");
    check_field_offset(lv, s18575c11f4, ABISELECT(1584,1008), "S18575C11.s18575c11f4");
    check_field_offset(lv, s18575c11f5, ABISELECT(1600,1016), "S18575C11.s18575c11f5");
    check_field_offset(lv, s18575c11f6, ABISELECT(1616,1028), "S18575C11.s18575c11f6");
    set_bf_and_test(lv, s18575c11f7, ABISELECT(5744,3648), 0, 7, 1, "S18575C11");
    set_bf_and_test(lv, s18575c11f7, ABISELECT(5744,3648), 0, 7, hide_sll(1LL<<6), "S18575C11");
    check_field_offset(lv, s18575c11f8, ABISELECT(5760,3652), "S18575C11.s18575c11f8");
    test_class_info(&lv, &cd_S18575C11);
    dp->~S18575C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C11(Test_S18575C11, "S18575C11", ABISELECT(11136,7060));

#else // __cplusplus

extern void _ZN9S18575C11C1Ev();
extern void _ZN9S18575C11D1Ev();
Name_Map name_map_S18575C11[] = {
  NSPAIR(_ZN9S18575C11C1Ev),
  NSPAIR(_ZN9S18575C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
static Base_Class bases_S18575C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C7,    ABISELECT(6400,4052), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C7,    ABISELECT(6704,4236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(7000,4420), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(7464,4728), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S18575C9,    ABISELECT(6704,4236), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C4,    ABISELECT(10824,6856), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C6,    ABISELECT(10968,6952), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S18575C11[];
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn6704_N9S18575C11D1Ev,_ZThn4236_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn6704_N9S18575C11D0Ev,_ZThn4236_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY vtc_S18575C11[] = {
  ABISELECT(10968,6952),
  ABISELECT(10824,6856),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-144,-96),
  ABISELECT(-10968,-6952),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern VTBL_ENTRY _ZTV9S18575C11[];
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C11[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__9S18575C11[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C11[] = {
  {&(_ZTV9S18575C11[6]),  6,40},
  {&(_ZTV9S18575C11[11]),  11,40},
  {&(_ZTV9S18575C11[21]),  21,40},
  {&(_ZTV9S18575C11[27]),  27,40},
  {&(_ZTV9S18575C11[32]),  32,40},
  {&(_ZTV9S18575C11[36]),  36,40},
  {&(_ZTV9S18575C11[40]),  40,40},
  {&(_tg__ZTV8S18575C6__9S18575C11[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__9S18575C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
static VTBL_ENTRY alt_thunk_names24[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S18575C11D0Ev,_ZThn4236_N9S18575C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S18575C11D1Ev,_ZThn4236_N9S18575C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18575C11 = {  "S18575C11", // class name
  bases_S18575C11, 7,
  &(vtc_S18575C11[0]), // expected_vtbl_contents
  &(vtt_S18575C11[0]), // expected_vtt_contents
  ABISELECT(11136,7060), // object size
  NSPAIRA(_ZTI9S18575C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S18575C11),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18575C11),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names24,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C10  : virtual S18575C9 , virtual S18575C4 , virtual S18575C6 , S18575C3 , S18575C11 {
  ::S18575C9 s18575c10f0;
  __tsi64 s18575c10f1;
  char s18575c10f2:7;
  virtual void  v9(); // _ZN9S18575C102v9Ev
  ~S18575C10(); // tgen
  S18575C10(); // tgen
};
//SIG(-1 S18575C10) C1{ VBC2{ BC3{ v2 FL FD Fp Fc FC4{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC5{ v3 v4 v5 Fi[2] Fl[2] FC4[3]} BC4 vd v7 Fl FL Fp[8] FC6{ BC4 VBC5 VBC7{ VBC4 Fp FC4 FL:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC6 Fi} VBC4 VBC7 BC6 BC8{ VBC3 VBC2 VBC4 VBC7 FL:44 Fp Fi FC6 Fl[2] Fi[3] FC2 Fc:7 FC9{ BC3 vd v8 FC7 Fi Fp Fi}} v1 FC2 FL Fc:7}


void  S18575C10 ::v9(){vfunc_called(this, "_ZN9S18575C102v9Ev");}
S18575C10 ::~S18575C10(){ note_dtor("S18575C10", this);} // tgen
S18575C10 ::S18575C10(){ note_ctor("S18575C10", this);} // tgen

static void Test_S18575C10()
{
  extern Class_Descriptor cd_S18575C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1014,2574)];
    init_test(&cd_S18575C10, buf);
    S18575C10 *dp, &lv = *(dp=new (buf) S18575C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16208,10292), "sizeof(S18575C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C10)");
    check_base_class_offset(lv, (S18575C7*)(S18575C9*), ABISELECT(11008,6976), "S18575C10");
    check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(11304,7160), "S18575C10");
    check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(11768,7468), "S18575C10");
    check_base_class_offset(lv, (S18575C9*), ABISELECT(11008,6976), "S18575C10");
    check_base_class_offset(lv, (S18575C9*)(S18575C11*), ABISELECT(11008,6976), "S18575C10");
    /*is_ambiguous_... S18575C10::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*), ABISELECT(15128,9596), "S18575C10");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(15128,9596), "S18575C10");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*), ABISELECT(15128,9596), "S18575C10");
    check_base_class_offset(lv, (S18575C6*), ABISELECT(15272,9692), "S18575C10");
    check_base_class_offset(lv, (S18575C6*)(S18575C3*), ABISELECT(15272,9692), "S18575C10");
    check_base_class_offset(lv, (S18575C6*)(S18575C11*), ABISELECT(15272,9692), "S18575C10");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*), 0, "S18575C10");
    check_base_class_offset(lv, (S18575C5*)(S18575C3*), ABISELECT(15440,9800), "S18575C10");
    check_base_class_offset(lv, (S18575C7*)(S18575C3*), ABISELECT(15904,10108), "S18575C10");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*), ABISELECT(15904,10108), "S18575C10");
    check_base_class_offset(lv, (S18575C3*), 0, "S18575C10");
    check_base_class_offset(lv, (S18575C11*), ABISELECT(464,292), "S18575C10");
    check_field_offset(lv, s18575c10f0, ABISELECT(6864,4344), "S18575C10.s18575c10f0");
    check_field_offset(lv, s18575c10f1, ABISELECT(10992,6964), "S18575C10.s18575c10f1");
    set_bf_and_test(lv, s18575c10f2, ABISELECT(11000,6972), 0, 7, 1, "S18575C10");
    set_bf_and_test(lv, s18575c10f2, ABISELECT(11000,6972), 0, 7, hide_sll(1LL<<6), "S18575C10");
    test_class_info(&lv, &cd_S18575C10);
    dp->~S18575C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C10(Test_S18575C10, "S18575C10", ABISELECT(16208,10292));

#else // __cplusplus

extern void _ZN9S18575C10C1Ev();
extern void _ZN9S18575C10D1Ev();
Name_Map name_map_S18575C10[] = {
  NSPAIR(_ZN9S18575C10C1Ev),
  NSPAIR(_ZN9S18575C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
static Base_Class bases_S18575C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C7,    ABISELECT(11008,6976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(11304,7160), //bcp->offset
    32, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(11768,7468), //bcp->offset
    37, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S18575C9,    ABISELECT(11008,6976), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C4,    ABISELECT(15128,9596), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C6,    ABISELECT(15272,9692), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(15440,9800), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S18575C7,    ABISELECT(15904,10108), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S18575C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C11,    ABISELECT(464,292), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S18575C10[];
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn11008_N9S18575C10D1Ev,_ZThn6976_N9S18575C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void ABISELECT(_ZThn11008_N9S18575C10D0Ev,_ZThn6976_N9S18575C10D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY vtc_S18575C10[] = {
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern VTBL_ENTRY _ZTV9S18575C10[];
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__9S18575C10[] = {
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C3__9S18575C10[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C3__9S18575C10[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C3__9S18575C10[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C3__9S18575C10[] = {
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C10[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C11__9S18575C10[] = {
  0,
  ABISELECT(-15440,-9816),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn10544_N9S18575C11D1Ev,_ZThn6684_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn10544_N9S18575C11D0Ev,_ZThn6684_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C11__9S18575C10[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C11__9S18575C10[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C11__9S18575C10[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C11__9S18575C10[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C11__9S18575C10[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C10[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__9S18575C10[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C10[] = {
  {&(_ZTV9S18575C10[7]),  7,59},
  {&(_tg__ZTV8S18575C3__9S18575C10[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C3__9S18575C10[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C3__9S18575C10[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C3__9S18575C10[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C3__9S18575C10[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C10[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C11__9S18575C10[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C11__9S18575C10[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C11__9S18575C10[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C11__9S18575C10[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C11__9S18575C10[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C11__9S18575C10[3]),  3,3},
  {&(_ZTV9S18575C10[28]),  28,59},
  {&(_ZTV9S18575C10[34]),  34,59},
  {&(_ZTV9S18575C10[39]),  39,59},
  {&(_ZTV9S18575C10[43]),  43,59},
  {&(_ZTV9S18575C10[47]),  47,59},
  {&(_ZTV9S18575C10[52]),  52,59},
  {&(_ZTV9S18575C10[58]),  58,59},
  {&(_ZTV9S18575C10[17]),  17,59},
  {&(_tg__ZTV8S18575C6__9S18575C10[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__9S18575C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
static VTBL_ENTRY alt_thunk_names25[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S18575C11D0Ev,_ZThn6684_N9S18575C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S18575C11D1Ev,_ZThn6684_N9S18575C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S18575C10D0Ev,_ZThn6976_N9S18575C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S18575C10D1Ev,_ZThn6976_N9S18575C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18575C10 = {  "S18575C10", // class name
  bases_S18575C10, 11,
  &(vtc_S18575C10[0]), // expected_vtbl_contents
  &(vtt_S18575C10[0]), // expected_vtt_contents
  ABISELECT(16208,10292), // object size
  NSPAIRA(_ZTI9S18575C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S18575C10),59, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18575C10),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names25,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C8  : virtual S18575C4 , virtual S18575C3 , S18575C9 , S18575C10 {
  ::S18575C11 s18575c8f0;
  short s18575c8f1;
  __tsi64 s18575c8f2:8;
  virtual void  v10(); // _ZN8S18575C83v10Ev
  virtual void  v11(); // _ZN8S18575C83v11Ev
  ~S18575C8(); // tgen
  S18575C8(); // tgen
};
//SIG(-1 S18575C8) C1{ VBC2{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ BC2 VBC4{ v4 v5 v6 Fi[2] Fl[2] FC2[3]} VBC5{ VBC2 Fp FC2 FL:3} VBC6{ v7 FL FD Fp Fc FC2 Fp[2] Fl[8] Fs Fp FL:64} FC6 Fs Fi[2]} BC7{ BC6 BC4 BC2 vd v8 Fl FL Fp[8] FC3 Fp Fi FC3 Fi} BC8{ VBC7 VBC2 VBC5 BC3 BC9{ VBC6 VBC7 VBC2 VBC5 FL:44 Fp Fi FC3 Fl[2] Fi[3] FC7 Fc:7 FC10{ BC6 vd v10 FC5 Fi Fp Fi}} v9 FC7 FL Fc:7} v1 v2 FC9 Fs FL:8}


void  S18575C8 ::v10(){vfunc_called(this, "_ZN8S18575C83v10Ev");}
void  S18575C8 ::v11(){vfunc_called(this, "_ZN8S18575C83v11Ev");}
S18575C8 ::~S18575C8(){ note_dtor("S18575C8", this);} // tgen
S18575C8 ::S18575C8(){ note_ctor("S18575C8", this);} // tgen

static void Test_S18575C8()
{
  extern Class_Descriptor cd_S18575C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1999,5068)];
    init_test(&cd_S18575C8, buf);
    S18575C8 *dp, &lv = *(dp=new (buf) S18575C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(31968,20268), "sizeof(S18575C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C8)");
    /*is_ambiguous_... S18575C8::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*), ABISELECT(26280,16660), "S18575C8");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(26280,16660), "S18575C8");
    /*is_ambiguous_... S18575C10::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C10*), ABISELECT(26280,16660), "S18575C8");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C10*), ABISELECT(26280,16660), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*), ABISELECT(26432,16756), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*), ABISELECT(26896,17048), "S18575C8");
    check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C10*), ABISELECT(26896,17048), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*), ABISELECT(27360,17356), "S18575C8");
    check_base_class_offset(lv, (S18575C6*)(S18575C10*), ABISELECT(27360,17356), "S18575C8");
    check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C10*), ABISELECT(27360,17356), "S18575C8");
    check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C10*), ABISELECT(27360,17356), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*), ABISELECT(27536,17464), "S18575C8");
    check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C10*), ABISELECT(27536,17464), "S18575C8");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C10*), ABISELECT(27536,17464), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C3*), ABISELECT(26432,16756), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C9*), 0, "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(296,184), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(760,492), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C9*), 0, "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C9*), ABISELECT(27840,17648), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(28136,17832), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(28600,18140), "S18575C8");
    check_base_class_offset(lv, (S18575C9*)(S18575C10*), ABISELECT(27840,17648), "S18575C8");
    check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C10*), ABISELECT(27840,17648), "S18575C8");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C10*), ABISELECT(4128,2620), "S18575C8");
    check_base_class_offset(lv, (S18575C3*)(S18575C10*), ABISELECT(4128,2620), "S18575C8");
    check_base_class_offset(lv, (S18575C11*)(S18575C10*), ABISELECT(4592,2912), "S18575C8");
    check_base_class_offset(lv, (S18575C10*), ABISELECT(4128,2620), "S18575C8");
    check_field_offset(lv, s18575c8f0, ABISELECT(15136,9596), "S18575C8.s18575c8f0");
    check_field_offset(lv, s18575c8f1, ABISELECT(26272,16656), "S18575C8.s18575c8f1");
    set_bf_and_test(lv, s18575c8f2, ABISELECT(26274,16658), 0, 8, 1, "S18575C8");
    set_bf_and_test(lv, s18575c8f2, ABISELECT(26274,16658), 0, 8, hide_sll(1LL<<7), "S18575C8");
    test_class_info(&lv, &cd_S18575C8);
    dp->~S18575C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C8(Test_S18575C8, "S18575C8", ABISELECT(31968,20268));

#else // __cplusplus

extern void _ZN8S18575C8C1Ev();
extern void _ZN8S18575C8D1Ev();
Name_Map name_map_S18575C8[] = {
  NSPAIR(_ZN8S18575C8C1Ev),
  NSPAIR(_ZN8S18575C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C10;
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
static Base_Class bases_S18575C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C4,    ABISELECT(26280,16660), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C4,    ABISELECT(26432,16756), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(26896,17048), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18575C6,    ABISELECT(27360,17356), //bcp->offset
    61, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18575C7,    ABISELECT(27536,17464), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18575C3,    ABISELECT(26432,16756), //bcp->offset
    45, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(296,184), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(760,492), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18575C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C7,    ABISELECT(27840,17648), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(28136,17832), //bcp->offset
    81, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(28600,18140), //bcp->offset
    86, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18575C9,    ABISELECT(27840,17648), //bcp->offset
    68, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S18575C3,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S18575C11,    ABISELECT(4592,2912), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S18575C10,    ABISELECT(4128,2620), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S18575C8[];
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C8D1Ev();
extern void _ZN8S18575C8D0Ev();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev)();
extern void ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev)();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn27840_N8S18575C8D1Ev,_ZThn17648_N8S18575C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev)();
extern void ABISELECT(_ZThn27840_N8S18575C8D0Ev,_ZThn17648_N8S18575C8D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY vtc_S18575C8[] = {
  ABISELECT(27840,17648),
  ABISELECT(27536,17464),
  ABISELECT(27360,17356),
  ABISELECT(26896,17048),
  ABISELECT(26432,16756),
  ABISELECT(26280,16660),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D1Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D0Ev,
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev),
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev),
  0,
  ABISELECT(-26280,-16660),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-26432,-16756),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  0,
  0,
  ABISELECT(-26896,-17048),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-1080,-696),
  ABISELECT(-27360,-17356),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  0,
  ABISELECT(-27536,-17464),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-27840,-17648),
  0,
  ABISELECT(-27840,-17648),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-28136,-17832),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-28600,-18140),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S18575C8[];
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C10__8S18575C8[] = {
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C10__A1__8S18575C8[] = {
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C10__A1__8S18575C8[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C10__A1__8S18575C8[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C10__A1__8S18575C8[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C10__A1__8S18575C8[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__8S18575C8[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C10__8S18575C8[] = {
  0,
  ABISELECT(-22944,-14552),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn23248_N9S18575C11D1Ev,_ZThn14736_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn23248_N9S18575C11D0Ev,_ZThn14736_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C10__8S18575C8[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23248,-14736),
  0,
  ABISELECT(-23248,-14736),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__8S18575C8[] = {
  ABISELECT(-23544,-14920),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__8S18575C8[] = {
  ABISELECT(-24008,-15228),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C10__8S18575C8[] = {
  0,
  ABISELECT(-21688,-13748),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C10__8S18575C8[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-22768,-14444),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn23712_N9S18575C10D1Ev,_ZThn15028_N9S18575C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void ABISELECT(_ZThn23712_N9S18575C10D0Ev,_ZThn15028_N9S18575C10D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C10__8S18575C8[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23712,-15028),
  0,
  ABISELECT(-23712,-15028),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C10__8S18575C8[] = {
  ABISELECT(-24008,-15212),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C10__8S18575C8[] = {
  ABISELECT(-24472,-15520),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C10__8S18575C8[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C10__8S18575C8[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A1__9S18575C10__8S18575C8[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__A1__9S18575C10__8S18575C8[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C10__8S18575C8[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__8S18575C8[] = {
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C3__8S18575C8[] = {
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C3__8S18575C8[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C3__8S18575C8[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C3__8S18575C8[] = {
  0,
  ABISELECT(-1104,-708),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C8[] = {
  ABISELECT(-1080,-696),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__8S18575C8[] = {
  0,
  ABISELECT(1080,696),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C8[] = {
  {&(_ZTV8S18575C8[8]),  8,89},
  {&(_tg__ZTV9S18575C10__8S18575C8[7]),  7,11},
  {&(_tg__ZTV8S18575C39S18575C10__A1__8S18575C8[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C10__A1__8S18575C8[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C10__A1__8S18575C8[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C10__A1__8S18575C8[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C10__A1__8S18575C8[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C10__8S18575C8[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C10__8S18575C8[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C10__8S18575C8[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__8S18575C8[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__8S18575C8[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C10__8S18575C8[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C10__8S18575C8[3]),  3,3},
  {&(_tg__ZTV8S18575C9__9S18575C10__8S18575C8[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C10__8S18575C8[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C10__8S18575C8[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C10__8S18575C8[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C10__8S18575C8[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A1__9S18575C10__8S18575C8[5]),  5,8},
  {&(_tg__ZTV8S18575C7__A1__9S18575C10__8S18575C8[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C10__8S18575C8[6]),  6,8},
  {&(_ZTV8S18575C8[44]),  44,89},
  {&(_ZTV8S18575C8[52]),  52,89},
  {&(_ZTV8S18575C8[58]),  58,89},
  {&(_ZTV8S18575C8[64]),  64,89},
  {&(_ZTV8S18575C8[67]),  67,89},
  {&(_ZTV8S18575C8[29]),  29,89},
  {&(_ZTV8S18575C8[77]),  77,89},
  {&(_ZTV8S18575C8[83]),  83,89},
  {&(_ZTV8S18575C8[88]),  88,89},
  {&(_ZTV8S18575C8[39]),  39,89},
  {&(_tg__ZTV8S18575C3__8S18575C8[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C3__8S18575C8[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C3__8S18575C8[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C3__8S18575C8[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C3__8S18575C8[3]),  3,4},
  {&(_tg__ZTV8S18575C6__8S18575C8[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__8S18575C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S18575C8[];
extern  VTBL_ENTRY _ZTV8S18575C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C8[];
static VTBL_ENTRY alt_thunk_names26[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S18575C10D0Ev,_ZThn15028_N9S18575C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S18575C10D1Ev,_ZThn15028_N9S18575C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S18575C11D0Ev,_ZThn14736_N9S18575C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S18575C11D1Ev,_ZThn14736_N9S18575C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N8S18575C8D0Ev,_ZThn17648_N8S18575C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N8S18575C8D1Ev,_ZThn17648_N8S18575C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18575C8 = {  "S18575C8", // class name
  bases_S18575C8, 18,
  &(vtc_S18575C8[0]), // expected_vtbl_contents
  &(vtt_S18575C8[0]), // expected_vtt_contents
  ABISELECT(31968,20268), // object size
  NSPAIRA(_ZTI8S18575C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S18575C8),89, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18575C8),39, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names26,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C14  : virtual S18575C6 {
  ::S18575C11 s18575c14f0;
  __tsi64 s18575c14f1:6;
  int s18575c14f2;
  long s18575c14f3;
  ~S18575C14(); // tgen
  S18575C14(); // tgen
};
//SIG(-1 S18575C14) C1{ VBC2{ VBC3{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC3 FL:3} FC4{ VBC5{ v2 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} VBC6{ BC5 BC7{ v3 v4 v5 Fi[2] Fl[2] FC3[3]} BC3 vd v6 Fl FL Fp[8] FC8{ BC3 VBC7 VBC2 VBC5 FC5 Fs Fi[2]} Fp Fi FC8 Fi} VBC3 VBC2 FL:44 Fp Fi FC8 Fl[2] Fi[3] FC6 Fc:7 FC9{ BC5 vd v7 FC2 Fi Fp Fi}} FL:6 Fi Fl}


S18575C14 ::~S18575C14(){ note_dtor("S18575C14", this);} // tgen
S18575C14 ::S18575C14(){ note_ctor("S18575C14", this);} // tgen

static void Test_S18575C14()
{
  extern Class_Descriptor cd_S18575C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(719,1821)];
    init_test(&cd_S18575C14, buf);
    S18575C14 *dp, &lv = *(dp=new (buf) S18575C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11488,7280), "sizeof(S18575C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C14)");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(11336,7184), "S18575C14");
    check_base_class_offset(lv, (S18575C6*), ABISELECT(11168,7076), "S18575C14");
    check_field_offset(lv, s18575c14f0, ABISELECT(16,4), "S18575C14.s18575c14f0");
    set_bf_and_test(lv, s18575c14f1, ABISELECT(11152,7064), 0, 6, 1, "S18575C14");
    set_bf_and_test(lv, s18575c14f1, ABISELECT(11152,7064), 0, 6, hide_sll(1LL<<5), "S18575C14");
    check_field_offset(lv, s18575c14f2, ABISELECT(11156,7068), "S18575C14.s18575c14f2");
    check_field_offset(lv, s18575c14f3, ABISELECT(11160,7072), "S18575C14.s18575c14f3");
    test_class_info(&lv, &cd_S18575C14);
    dp->~S18575C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C14(Test_S18575C14, "S18575C14", ABISELECT(11488,7280));

#else // __cplusplus

extern void _ZN9S18575C14C1Ev();
extern void _ZN9S18575C14D1Ev();
Name_Map name_map_S18575C14[] = {
  NSPAIR(_ZN9S18575C14C1Ev),
  NSPAIR(_ZN9S18575C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
static Base_Class bases_S18575C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C4,    ABISELECT(11336,7184), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S18575C6,    ABISELECT(11168,7076), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S18575C14[];
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY vtc_S18575C14[] = {
  ABISELECT(11336,7184),
  ABISELECT(11168,7076),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C14[0]),
  ABISELECT(168,108),
  ABISELECT(-11168,-7076),
  (VTBL_ENTRY)&(_ZTI9S18575C14[0]),
  0,
  ABISELECT(-11336,-7184),
  (VTBL_ENTRY)&(_ZTI9S18575C14[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern VTBL_ENTRY _ZTV9S18575C14[];
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C14[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__9S18575C14[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C14[] = {
  {&(_ZTV9S18575C14[4]),  4,11},
  {&(_ZTV9S18575C14[7]),  7,11},
  {&(_ZTV9S18575C14[10]),  10,11},
  {&(_tg__ZTV8S18575C6__9S18575C14[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__9S18575C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18575C14[];
extern  VTBL_ENTRY _ZTV9S18575C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C14[];
Class_Descriptor cd_S18575C14 = {  "S18575C14", // class name
  bases_S18575C14, 2,
  &(vtc_S18575C14[0]), // expected_vtbl_contents
  &(vtt_S18575C14[0]), // expected_vtt_contents
  ABISELECT(11488,7280), // object size
  NSPAIRA(_ZTI9S18575C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S18575C14),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18575C14),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C15  : virtual S18575C7 , S18575C5 , virtual S18575C10 {
  char s18575c15f0:8;
  int s18575c15f1;
  ~S18575C15(); // tgen
  S18575C15(); // tgen
};
//SIG(-1 S18575C15) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC4{ v2 v3 v4 Fi[2] Fl[2] FC3[3]} VBC5{ VBC6{ BC2 BC4 BC3 vd v6 Fl FL Fp[8] FC7{ BC3 VBC4 VBC8{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC7 Fi} VBC3 VBC8 BC7 BC9{ VBC2 VBC6 VBC3 VBC8 FL:44 Fp Fi FC7 Fl[2] Fi[3] FC6 Fc:7 FC10{ BC2 vd v8 FC8 Fi Fp Fi}} v7 FC6 FL Fc:7} Fc:8 Fi}


S18575C15 ::~S18575C15(){ note_dtor("S18575C15", this);} // tgen
S18575C15 ::S18575C15(){ note_ctor("S18575C15", this);} // tgen

static void Test_S18575C15()
{
  extern Class_Descriptor cd_S18575C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1044,2653)];
    init_test(&cd_S18575C15, buf);
    S18575C15 *dp, &lv = *(dp=new (buf) S18575C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16688,10608), "sizeof(S18575C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C15)");
    /*is_ambiguous_... S18575C15::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*), ABISELECT(480,316), "S18575C15");
    check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C10*), ABISELECT(480,316), "S18575C15");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C10*), ABISELECT(480,316), "S18575C15");
    /*is_ambiguous_... S18575C15::S18575C5 */ AMB_check_base_class_offset(lv, (S18575C5*), 0, "S18575C15");
    check_base_class_offset(lv, (S18575C7*)(S18575C9*), ABISELECT(11792,7476), "S18575C15");
    check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(12088,7660), "S18575C15");
    check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(12552,7968), "S18575C15");
    check_base_class_offset(lv, (S18575C9*)(S18575C10*), ABISELECT(11792,7476), "S18575C15");
    check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C10*), ABISELECT(11792,7476), "S18575C15");
    /*is_ambiguous_... S18575C10::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C10*), ABISELECT(15912,10096), "S18575C15");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(15912,10096), "S18575C15");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C10*), ABISELECT(15912,10096), "S18575C15");
    check_base_class_offset(lv, (S18575C6*)(S18575C10*), ABISELECT(16056,10192), "S18575C15");
    check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C10*), ABISELECT(16056,10192), "S18575C15");
    check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C10*), ABISELECT(16056,10192), "S18575C15");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C10*), ABISELECT(784,500), "S18575C15");
    check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C10*), ABISELECT(16224,10300), "S18575C15");
    check_base_class_offset(lv, (S18575C3*)(S18575C10*), ABISELECT(784,500), "S18575C15");
    check_base_class_offset(lv, (S18575C11*)(S18575C10*), ABISELECT(1248,792), "S18575C15");
    check_base_class_offset(lv, (S18575C10*), ABISELECT(784,500), "S18575C15");
    set_bf_and_test(lv, s18575c15f0, ABISELECT(464,308), 0, 8, 1, "S18575C15");
    set_bf_and_test(lv, s18575c15f0, ABISELECT(464,308), 0, 8, hide_sll(1LL<<7), "S18575C15");
    check_field_offset(lv, s18575c15f1, ABISELECT(468,312), "S18575C15.s18575c15f1");
    test_class_info(&lv, &cd_S18575C15);
    dp->~S18575C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C15(Test_S18575C15, "S18575C15", ABISELECT(16688,10608));

#else // __cplusplus

extern void _ZN9S18575C15C1Ev();
extern void _ZN9S18575C15D1Ev();
Name_Map name_map_S18575C15[] = {
  NSPAIR(_ZN9S18575C15C1Ev),
  NSPAIR(_ZN9S18575C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C10;
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
static Base_Class bases_S18575C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C7,    ABISELECT(480,316), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C7,    ABISELECT(11792,7476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(12088,7660), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(12552,7968), //bcp->offset
    57, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S18575C9,    ABISELECT(11792,7476), //bcp->offset
    39, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(15912,10096), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S18575C6,    ABISELECT(16056,10192), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(784,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(16224,10300), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S18575C3,    ABISELECT(784,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S18575C11,    ABISELECT(1248,792), //bcp->offset
    31, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S18575C10,    ABISELECT(784,500), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S18575C15[];
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN9S18575C15D1Ev();
extern void _ZN9S18575C15D0Ev();
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev)();
extern void ABISELECT(_ZThn784_N9S18575C15D1Ev,_ZThn500_N9S18575C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev)();
extern void ABISELECT(_ZThn784_N9S18575C15D0Ev,_ZThn500_N9S18575C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S18575C15D1Ev,_ZTvn292_n40_N9S18575C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18575C15D0Ev,_ZTvn292_n40_N9S18575C15D0Ev)();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev)();
extern void ABISELECT(_ZThn11792_N9S18575C15D1Ev,_ZThn7476_N9S18575C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev)();
extern void ABISELECT(_ZThn11792_N9S18575C15D0Ev,_ZThn7476_N9S18575C15D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY vtc_S18575C15[] = {
  ABISELECT(16224,10300),
  ABISELECT(16056,10192),
  ABISELECT(15912,10096),
  ABISELECT(11792,7476),
  ABISELECT(784,500),
  ABISELECT(480,316),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&_ZN9S18575C15D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C15D0Ev,
  0,
  ABISELECT(-480,-316),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  ABISELECT(-784,-500),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-784,-500),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-1248,-792),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C15D1Ev,_ZTvn292_n40_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C15D0Ev,_ZTvn292_n40_N9S18575C15D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11792,-7476),
  0,
  ABISELECT(-11792,-7476),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-12088,-7660),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-12552,-7968),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(-15912,-10096),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-144,-96),
  ABISELECT(-16056,-10192),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  0,
  0,
  0,
  ABISELECT(-16224,-10300),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern VTBL_ENTRY _ZTV9S18575C15[];
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C10__9S18575C15[] = {
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C10__9S18575C15[] = {
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C10__9S18575C15[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C10__9S18575C15[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C10__9S18575C15[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C10__9S18575C15[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__9S18575C15[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C10__9S18575C15[] = {
  0,
  ABISELECT(768,476),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn10544_N9S18575C11D1Ev,_ZThn6684_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn10544_N9S18575C11D0Ev,_ZThn6684_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C10__9S18575C15[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__9S18575C15[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__9S18575C15[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C10__9S18575C15[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C10__9S18575C15[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn11008_N9S18575C10D1Ev,_ZThn6976_N9S18575C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void ABISELECT(_ZThn11008_N9S18575C10D0Ev,_ZThn6976_N9S18575C10D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C10__9S18575C15[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C10__9S18575C15[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C10__9S18575C15[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C10__9S18575C15[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C10__9S18575C15[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A1__9S18575C10__9S18575C15[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__A1__9S18575C10__9S18575C15[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C10__9S18575C15[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C15[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__9S18575C15[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C15[] = {
  {&(_ZTV9S18575C15[8]),  8,75},
  {&(_ZTV9S18575C15[16]),  16,75},
  {&(_ZTV9S18575C15[27]),  27,75},
  {&(_ZTV9S18575C15[48]),  48,75},
  {&(_ZTV9S18575C15[54]),  54,75},
  {&(_ZTV9S18575C15[59]),  59,75},
  {&(_ZTV9S18575C15[63]),  63,75},
  {&(_ZTV9S18575C15[67]),  67,75},
  {&(_ZTV9S18575C15[72]),  72,75},
  {&(_ZTV9S18575C15[37]),  37,75},
  {&(_tg__ZTV9S18575C10__9S18575C15[7]),  7,11},
  {&(_tg__ZTV8S18575C39S18575C10__9S18575C15[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C10__9S18575C15[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C10__9S18575C15[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C10__9S18575C15[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C10__9S18575C15[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C10__9S18575C15[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C10__9S18575C15[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C10__9S18575C15[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__9S18575C15[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__9S18575C15[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C10__9S18575C15[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C10__9S18575C15[3]),  3,3},
  {&(_tg__ZTV8S18575C9__9S18575C10__9S18575C15[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C10__9S18575C15[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C10__9S18575C15[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C10__9S18575C15[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C10__9S18575C15[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A1__9S18575C10__9S18575C15[5]),  5,8},
  {&(_tg__ZTV8S18575C7__A1__9S18575C10__9S18575C15[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C10__9S18575C15[6]),  6,8},
  {&(_tg__ZTV8S18575C6__9S18575C15[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__9S18575C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18575C15[];
extern  VTBL_ENTRY _ZTV9S18575C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C15[];
static VTBL_ENTRY alt_thunk_names27[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S18575C10D0Ev,_ZThn6976_N9S18575C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S18575C10D1Ev,_ZThn6976_N9S18575C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S18575C11D0Ev,_ZThn6684_N9S18575C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S18575C11D1Ev,_ZThn6684_N9S18575C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N9S18575C15D0Ev,_ZThn7476_N9S18575C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N9S18575C15D1Ev,_ZThn7476_N9S18575C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S18575C15D0Ev,_ZThn500_N9S18575C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S18575C15D1Ev,_ZThn500_N9S18575C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18575C15 = {  "S18575C15", // class name
  bases_S18575C15, 13,
  &(vtc_S18575C15[0]), // expected_vtbl_contents
  &(vtt_S18575C15[0]), // expected_vtt_contents
  ABISELECT(16688,10608), // object size
  NSPAIRA(_ZTI9S18575C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S18575C15),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18575C15),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names27,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C16  : S18575C4 , virtual S18575C7 , virtual S18575C15 , S18575C3 , S18575C12 {
  int s18575c16f0;
  ::S18575C3 s18575c16f1;
  int s18575c16f2;
  short s18575c16f3;
  __tsi64 s18575c16f4:8;
  int s18575c16f5;
  virtual  ~S18575C16(); // _ZN9S18575C16D2Ev
  virtual void  v13(); // _ZN9S18575C163v13Ev
  S18575C16(); // tgen
};
//SIG(-1 S18575C16) C1{ BC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ v3 FL FD Fp Fc FC2 Fp[2] Fl[8] Fs Fp FL:64} VBC4{ VBC3 BC5{ v4 v5 v6 Fi[2] Fl[2] FC2[3]} VBC6{ VBC7{ BC3 BC5 BC2 vd v7 Fl FL Fp[8] FC8{ BC2 VBC5 VBC9{ VBC2 Fp FC2 FL:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC8 Fi} VBC2 VBC9 BC8 BC10{ VBC3 VBC7 VBC2 VBC9 FL:44 Fp Fi FC8 Fl[2] Fi[3] FC7 Fc:7 FC11{ BC3 vd v9 FC9 Fi Fp Fi}} v8 FC7 FL Fc:7} Fc:8 Fi} BC8 BC11 vd v1 Fi FC8 Fi Fs FL:8 Fi}


 S18575C16 ::~S18575C16(){ note_dtor("S18575C16", this);}
void  S18575C16 ::v13(){vfunc_called(this, "_ZN9S18575C163v13Ev");}
S18575C16 ::S18575C16(){ note_ctor("S18575C16", this);} // tgen

static void Test_S18575C16()
{
  extern Class_Descriptor cd_S18575C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1219,3101)];
    init_test(&cd_S18575C16, buf);
    S18575C16 *dp, &lv = *(dp=new (buf) S18575C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(19488,12400), "sizeof(S18575C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C16)");
    /*is_ambiguous_... S18575C16::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*), 0, "S18575C16");
    /*is_ambiguous_... S18575C16::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*), ABISELECT(2816,1792), "S18575C16");
    /*is_ambiguous_... S18575C15::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C15*), ABISELECT(2816,1792), "S18575C16");
    check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C10*), ABISELECT(2816,1792), "S18575C16");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C10*), ABISELECT(2816,1792), "S18575C16");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*), ABISELECT(2816,1792), "S18575C16");
    /*is_ambiguous_... S18575C15::S18575C5 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C15*), ABISELECT(3112,1976), "S18575C16");
    check_base_class_offset(lv, (S18575C7*)(S18575C9*), ABISELECT(14592,9268), "S18575C16");
    check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(14888,9452), "S18575C16");
    check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(15352,9760), "S18575C16");
    check_base_class_offset(lv, (S18575C9*)(S18575C10*), ABISELECT(14592,9268), "S18575C16");
    check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C10*), ABISELECT(14592,9268), "S18575C16");
    /*is_ambiguous_... S18575C10::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C10*), ABISELECT(18712,11888), "S18575C16");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(18712,11888), "S18575C16");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C10*), ABISELECT(18712,11888), "S18575C16");
    check_base_class_offset(lv, (S18575C6*)(S18575C10*), ABISELECT(18856,11984), "S18575C16");
    check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C10*), ABISELECT(18856,11984), "S18575C16");
    check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C10*), ABISELECT(18856,11984), "S18575C16");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*), ABISELECT(18856,11984), "S18575C16");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C10*), ABISELECT(3584,2292), "S18575C16");
    check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C10*), ABISELECT(19024,12092), "S18575C16");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*), ABISELECT(19024,12092), "S18575C16");
    check_base_class_offset(lv, (S18575C3*)(S18575C10*), ABISELECT(3584,2292), "S18575C16");
    check_base_class_offset(lv, (S18575C11*)(S18575C10*), ABISELECT(4048,2584), "S18575C16");
    check_base_class_offset(lv, (S18575C10*)(S18575C15*), ABISELECT(3584,2292), "S18575C16");
    check_base_class_offset(lv, (S18575C15*), ABISELECT(3112,1976), "S18575C16");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*), ABISELECT(144,96), "S18575C16");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C3*), ABISELECT(144,96), "S18575C16");
    check_base_class_offset(lv, (S18575C7*)(S18575C12*), ABISELECT(608,388), "S18575C16");
    check_base_class_offset(lv, (S18575C12*), ABISELECT(608,388), "S18575C16");
    check_field_offset(lv, s18575c16f0, ABISELECT(1236,788), "S18575C16.s18575c16f0");
    check_field_offset(lv, s18575c16f1, ABISELECT(1248,792), "S18575C16.s18575c16f1");
    check_field_offset(lv, s18575c16f2, ABISELECT(2800,1780), "S18575C16.s18575c16f2");
    check_field_offset(lv, s18575c16f3, ABISELECT(2804,1784), "S18575C16.s18575c16f3");
    set_bf_and_test(lv, s18575c16f4, ABISELECT(2806,1786), 0, 8, 1, "S18575C16");
    set_bf_and_test(lv, s18575c16f4, ABISELECT(2806,1786), 0, 8, hide_sll(1LL<<7), "S18575C16");
    check_field_offset(lv, s18575c16f5, ABISELECT(2808,1788), "S18575C16.s18575c16f5");
    test_class_info(&lv, &cd_S18575C16);
    dp->~S18575C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C16(Test_S18575C16, "S18575C16", ABISELECT(19488,12400));

#else // __cplusplus

extern void _ZN9S18575C16C1Ev();
extern void _ZN9S18575C16D2Ev();
Name_Map name_map_S18575C16[] = {
  NSPAIR(_ZN9S18575C16C1Ev),
  NSPAIR(_ZN9S18575C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C10;
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
extern Class_Descriptor cd_S18575C15;
extern VTBL_ENTRY _ZTI9S18575C15[];
extern  VTBL_ENTRY _ZTV9S18575C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C15[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C12;
extern VTBL_ENTRY _ZTI9S18575C12[];
extern  VTBL_ENTRY _ZTV9S18575C12[];
static Base_Class bases_S18575C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C7,    ABISELECT(2816,1792), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C5,    ABISELECT(3112,1976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S18575C7,    ABISELECT(14592,9268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(14888,9452), //bcp->offset
    82, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(15352,9760), //bcp->offset
    87, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S18575C9,    ABISELECT(14592,9268), //bcp->offset
    69, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(18712,11888), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S18575C6,    ABISELECT(18856,11984), //bcp->offset
    94, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(3584,2292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(19024,12092), //bcp->offset
    97, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S18575C3,    ABISELECT(3584,2292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18575C11,    ABISELECT(4048,2584), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18575C10,    ABISELECT(3584,2292), //bcp->offset
    47, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S18575C15,    ABISELECT(3112,1976), //bcp->offset
    30, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C4,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S18575C3,    ABISELECT(144,96), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C7,    ABISELECT(608,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18575C12,    ABISELECT(608,388), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S18575C16[];
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C16D1Ev();
extern void _ZN9S18575C16D0Ev();
extern void _ZN9S18575C163v13Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZThn608_N9S18575C16D1Ev,_ZThn388_N9S18575C16D1Ev)();
extern void ABISELECT(_ZThn608_N9S18575C16D0Ev,_ZThn388_N9S18575C16D0Ev)();
extern void _ZN9S18575C123v12Ev();
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S18575C16D1Ev,_ZTv0_n48_N9S18575C16D1Ev)();
extern void ABISELECT(_ZThn3112_N9S18575C16D1Ev,_ZThn1976_N9S18575C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S18575C16D0Ev,_ZTv0_n48_N9S18575C16D0Ev)();
extern void ABISELECT(_ZThn3112_N9S18575C16D0Ev,_ZThn1976_N9S18575C16D0Ev)() __attribute__((weak));
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C16D1Ev,_ZTv0_n40_N9S18575C16D1Ev)();
extern void ABISELECT(_ZThn3584_N9S18575C16D1Ev,_ZThn2292_N9S18575C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18575C16D0Ev,_ZTv0_n40_N9S18575C16D0Ev)();
extern void ABISELECT(_ZThn3584_N9S18575C16D0Ev,_ZThn2292_N9S18575C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S18575C16D1Ev,_ZTvn292_n40_N9S18575C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18575C16D0Ev,_ZTvn292_n40_N9S18575C16D0Ev)();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C16D1Ev,_ZTv0_n16_N9S18575C16D1Ev)();
extern void ABISELECT(_ZThn14592_N9S18575C16D1Ev,_ZThn9268_N9S18575C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C16D0Ev,_ZTv0_n16_N9S18575C16D0Ev)();
extern void ABISELECT(_ZThn14592_N9S18575C16D0Ev,_ZThn9268_N9S18575C16D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY vtc_S18575C16[] = {
  ABISELECT(19024,12092),
  ABISELECT(18856,11984),
  ABISELECT(18712,11888),
  ABISELECT(14592,9268),
  ABISELECT(3584,2292),
  ABISELECT(3112,1976),
  ABISELECT(2816,1792),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C16D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C16D0Ev,
  (VTBL_ENTRY)&_ZN9S18575C163v13Ev,
  ABISELECT(2672,1696),
  ABISELECT(18568,11792),
  ABISELECT(18712,11888),
  ABISELECT(18880,11996),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S18575C16D1Ev,_ZThn388_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S18575C16D0Ev,_ZThn388_N9S18575C16D0Ev),
  (VTBL_ENTRY)&_ZN9S18575C123v12Ev,
  0,
  ABISELECT(-2816,-1792),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  ABISELECT(-3112,-1976),
  0,
  0,
  0,
  ABISELECT(15912,10116),
  ABISELECT(15744,10008),
  ABISELECT(15600,9912),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  ABISELECT(-3112,-1976),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C16D1Ev,_ZTv0_n48_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C16D0Ev,_ZTv0_n48_N9S18575C16D0Ev),
  ABISELECT(-3584,-2292),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-3584,-2292),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C16D1Ev,_ZTv0_n40_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C16D0Ev,_ZTv0_n40_N9S18575C16D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-4048,-2584),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C16D1Ev,_ZTvn292_n40_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C16D0Ev,_ZTvn292_n40_N9S18575C16D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-14592,-9268),
  0,
  ABISELECT(-14592,-9268),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C16D1Ev,_ZTv0_n16_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C16D0Ev,_ZTv0_n16_N9S18575C16D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-14888,-9452),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-15352,-9760),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(-18712,-11888),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-144,-96),
  ABISELECT(-18856,-11984),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  0,
  0,
  0,
  ABISELECT(-19024,-12092),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern VTBL_ENTRY _ZTV9S18575C16[];
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__A1__9S18575C16[] = {
  ABISELECT(2672,1696),
  ABISELECT(18568,11792),
  ABISELECT(18712,11888),
  ABISELECT(18880,11996),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C3__A1__9S18575C16[] = {
  0,
  0,
  0,
  ABISELECT(-18880,-11996),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C3__A1__9S18575C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-18712,-11888),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C3__A1__9S18575C16[] = {
  0,
  ABISELECT(-18568,-11792),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C3__A1__9S18575C16[] = {
  0,
  ABISELECT(-2672,-1696),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN9S18575C15D1Ev();
extern void _ZN9S18575C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C15__9S18575C16[] = {
  ABISELECT(15912,10116),
  ABISELECT(15744,10008),
  ABISELECT(15600,9912),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&_ZN9S18575C15D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C15D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C15__9S18575C16[] = {
  0,
  ABISELECT(296,184),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S18575C15D1Ev,_ZThn316_N9S18575C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S18575C15D0Ev,_ZThn316_N9S18575C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S18575C10__9S18575C15__9S18575C16[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev)();
extern void ABISELECT(_ZThn11480_N9S18575C15D1Ev,_ZThn7292_N9S18575C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev)();
extern void ABISELECT(_ZThn11480_N9S18575C15D0Ev,_ZThn7292_N9S18575C15D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C15__9S18575C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11480,-7292),
  0,
  ABISELECT(-11480,-7292),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A1__9S18575C15__9S18575C16[] = {
  ABISELECT(-11776,-7476),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C15__9S18575C16[] = {
  ABISELECT(-12240,-7784),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C15__9S18575C16[] = {
  0,
  ABISELECT(-15600,-9912),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C15__9S18575C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15744,-10008),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A2__9S18575C15__9S18575C16[] = {
  0,
  0,
  0,
  ABISELECT(-15912,-10116),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S18575C15D1Ev,_ZTvn292_n40_N9S18575C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18575C15D0Ev,_ZTvn292_n40_N9S18575C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__9S18575C15__9S18575C16[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C15D1Ev,_ZTvn292_n40_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C15D0Ev,_ZTvn292_n40_N9S18575C15D0Ev),
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C10__9S18575C16[] = {
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C10__9S18575C16[] = {
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C10__9S18575C16[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C10__9S18575C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C10__9S18575C16[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C10__9S18575C16[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__9S18575C16[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C10__9S18575C16[] = {
  0,
  ABISELECT(1232,792),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn10544_N9S18575C11D1Ev,_ZThn6684_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn10544_N9S18575C11D0Ev,_ZThn6684_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C10__9S18575C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__9S18575C16[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__9S18575C16[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C10__9S18575C16[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C10__9S18575C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn11008_N9S18575C10D1Ev,_ZThn6976_N9S18575C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void ABISELECT(_ZThn11008_N9S18575C10D0Ev,_ZThn6976_N9S18575C10D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C10__9S18575C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C10__9S18575C16[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C10__9S18575C16[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C10__9S18575C16[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C10__9S18575C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A1__9S18575C10__9S18575C16[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__A1__9S18575C10__9S18575C16[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C10__9S18575C16[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C16[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__9S18575C16[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C16[] = {
  {&(_ZTV9S18575C16[9]),  9,105},
  {&(_tg__ZTV8S18575C3__A1__9S18575C16[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C3__A1__9S18575C16[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C3__A1__9S18575C16[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C3__A1__9S18575C16[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C3__A1__9S18575C16[3]),  3,4},
  {&(_ZTV9S18575C16[29]),  29,105},
  {&(_ZTV9S18575C16[42]),  42,105},
  {&(_ZTV9S18575C16[57]),  57,105},
  {&(_ZTV9S18575C16[78]),  78,105},
  {&(_ZTV9S18575C16[84]),  84,105},
  {&(_ZTV9S18575C16[89]),  89,105},
  {&(_ZTV9S18575C16[93]),  93,105},
  {&(_ZTV9S18575C16[97]),  97,105},
  {&(_ZTV9S18575C16[102]),  102,105},
  {&(_ZTV9S18575C16[67]),  67,105},
  {&(_ZTV9S18575C16[19]),  19,105},
  {&(_tg__ZTV9S18575C15__9S18575C16[8]),  8,13},
  {&(_tg__ZTV8S18575C7__9S18575C15__9S18575C16[3]),  3,4},
  {&(_tg__ZTV9S18575C10__9S18575C15__9S18575C16[10]),  10,14},
  {&(_tg__ZTV8S18575C9__9S18575C15__9S18575C16[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A1__9S18575C15__9S18575C16[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C15__9S18575C16[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C15__9S18575C16[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C15__9S18575C16[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A2__9S18575C15__9S18575C16[5]),  5,8},
  {&(_tg__ZTV9S18575C119S18575C10__9S18575C15__9S18575C16[6]),  6,8},
  {&(_tg__ZTV9S18575C10__9S18575C16[7]),  7,11},
  {&(_tg__ZTV8S18575C39S18575C10__9S18575C16[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C10__9S18575C16[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C10__9S18575C16[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C10__9S18575C16[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C10__9S18575C16[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C10__9S18575C16[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C10__9S18575C16[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C10__9S18575C16[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__9S18575C16[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__9S18575C16[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C10__9S18575C16[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C10__9S18575C16[3]),  3,3},
  {&(_tg__ZTV8S18575C9__9S18575C10__9S18575C16[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C10__9S18575C16[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C10__9S18575C16[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C10__9S18575C16[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C10__9S18575C16[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A1__9S18575C10__9S18575C16[5]),  5,8},
  {&(_tg__ZTV8S18575C7__A1__9S18575C10__9S18575C16[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C10__9S18575C16[6]),  6,8},
  {&(_tg__ZTV8S18575C6__9S18575C16[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__9S18575C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18575C16[];
extern  VTBL_ENTRY _ZTV9S18575C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C16[];
static VTBL_ENTRY alt_thunk_names28[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S18575C10D0Ev,_ZThn6976_N9S18575C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S18575C10D1Ev,_ZThn6976_N9S18575C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S18575C11D0Ev,_ZThn6684_N9S18575C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S18575C11D1Ev,_ZThn6684_N9S18575C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S18575C15D0Ev,_ZThn7292_N9S18575C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S18575C15D1Ev,_ZThn7292_N9S18575C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S18575C15D0Ev,_ZThn316_N9S18575C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S18575C15D1Ev,_ZThn316_N9S18575C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C16D0Ev,_ZTv0_n16_N9S18575C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N9S18575C16D0Ev,_ZThn9268_N9S18575C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C16D1Ev,_ZTv0_n16_N9S18575C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N9S18575C16D1Ev,_ZThn9268_N9S18575C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C16D0Ev,_ZTv0_n40_N9S18575C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N9S18575C16D0Ev,_ZThn2292_N9S18575C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C16D1Ev,_ZTv0_n40_N9S18575C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N9S18575C16D1Ev,_ZThn2292_N9S18575C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S18575C16D0Ev,_ZTv0_n48_N9S18575C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N9S18575C16D0Ev,_ZThn1976_N9S18575C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S18575C16D1Ev,_ZTv0_n48_N9S18575C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N9S18575C16D1Ev,_ZThn1976_N9S18575C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18575C16 = {  "S18575C16", // class name
  bases_S18575C16, 19,
  &(vtc_S18575C16[0]), // expected_vtbl_contents
  &(vtt_S18575C16[0]), // expected_vtt_contents
  ABISELECT(19488,12400), // object size
  NSPAIRA(_ZTI9S18575C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S18575C16),105, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18575C16),50, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names28,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C13  : virtual S18575C5 , S18575C8 , S18575C14 , virtual S18575C15 , virtual S18575C16 {
  ::S18575C15 s18575c13f0;
  ::S18575C8 s18575c13f1;
  virtual void  v14(); // _ZN9S18575C133v14Ev
  ~S18575C13(); // tgen
  S18575C13(); // tgen
};
//SIG(-1 S18575C13) C1{ VBC2{ v2 v3 v4 Fi[2] Fl[2] FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]} BC4{ VBC3 VBC5{ BC3 VBC2 VBC6{ VBC3 Fp FC3 FL:3} VBC7{ v6 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} FC7 Fs Fi[2]} BC8{ BC7 BC2 BC3 vd v7 Fl FL Fp[8] FC5 Fp Fi FC5 Fi} BC9{ VBC8 VBC3 VBC6 BC5 BC10{ VBC7 VBC8 VBC3 VBC6 FL:44 Fp Fi FC5 Fl[2] Fi[3] FC8 Fc:7 FC11{ BC7 vd v11 FC6 Fi Fp Fi}} v8 FC8 FL Fc:7} v9 v10 FC10 Fs FL:8} BC12{ VBC6 FC10 FL:6 Fi Fl} VBC13{ VBC7 BC2 VBC9 Fc:8 Fi} VBC14{ BC3 VBC7 VBC13 BC5 BC11 vd v12 Fi FC5 Fi Fs FL:8 Fi} v1 FC13 FC4}


void  S18575C13 ::v14(){vfunc_called(this, "_ZN9S18575C133v14Ev");}
S18575C13 ::~S18575C13(){ note_dtor("S18575C13", this);} // tgen
S18575C13 ::S18575C13(){ note_ctor("S18575C13", this);} // tgen

static void Test_S18575C13()
{
  extern Class_Descriptor cd_S18575C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6631,16827)];
    init_test(&cd_S18575C13, buf);
    S18575C13 *dp, &lv = *(dp=new (buf) S18575C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(106080,67304), "sizeof(S18575C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C13)");
    /*is_ambiguous_... S18575C13::S18575C5 */ AMB_check_base_class_offset(lv, (S18575C5*), ABISELECT(86112,54612), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*), ABISELECT(86112,54612), "S18575C13");
    check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(86112,54612), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C10*), ABISELECT(86112,54612), "S18575C13");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C16*), ABISELECT(86112,54612), "S18575C13");
    /*is_ambiguous_... S18575C8::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C8*), ABISELECT(86576,54920), "S18575C13");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(86576,54920), "S18575C13");
    /*is_ambiguous_... S18575C10::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C10*)(S18575C8*), ABISELECT(86576,54920), "S18575C13");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(86576,54920), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C10*), ABISELECT(86576,54920), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C10*), ABISELECT(86576,54920), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*), ABISELECT(86720,55016), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*), ABISELECT(87184,55308), "S18575C13");
    check_base_class_offset(lv, (S18575C6*)(S18575C10*)(S18575C8*), ABISELECT(87184,55308), "S18575C13");
    check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(87184,55308), "S18575C13");
    check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(87184,55308), "S18575C13");
    check_base_class_offset(lv, (S18575C6*)(S18575C14*), ABISELECT(87184,55308), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C10*), ABISELECT(87184,55308), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C10*), ABISELECT(87184,55308), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C10*), ABISELECT(87184,55308), "S18575C13");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C16*), ABISELECT(87184,55308), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*), ABISELECT(87360,55416), "S18575C13");
    check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(87360,55416), "S18575C13");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(87360,55416), "S18575C13");
    /*is_ambiguous_... S18575C15::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C15*), ABISELECT(87360,55416), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C10*), ABISELECT(87360,55416), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C10*), ABISELECT(87360,55416), "S18575C13");
    /*is_ambiguous_... S18575C16::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C16*), ABISELECT(87360,55416), "S18575C13");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C16*), ABISELECT(87360,55416), "S18575C13");
    /*is_ambiguous_... S18575C8::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C3*)(S18575C8*), ABISELECT(86720,55016), "S18575C13");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C9*)(S18575C8*), 0, "S18575C13");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C9*)(S18575C8*), ABISELECT(296,184), "S18575C13");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C9*)(S18575C8*), ABISELECT(760,492), "S18575C13");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C8*), 0, "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C9*), ABISELECT(87664,55600), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(87960,55784), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(88424,56092), "S18575C13");
    check_base_class_offset(lv, (S18575C9*)(S18575C10*)(S18575C8*), ABISELECT(87664,55600), "S18575C13");
    check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(87664,55600), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C10*), ABISELECT(87664,55600), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C10*), ABISELECT(87664,55600), "S18575C13");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(4128,2620), "S18575C13");
    check_base_class_offset(lv, (S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(4128,2620), "S18575C13");
    check_base_class_offset(lv, (S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(4592,2912), "S18575C13");
    check_base_class_offset(lv, (S18575C10*)(S18575C8*), ABISELECT(4128,2620), "S18575C13");
    check_base_class_offset(lv, (S18575C8*), 0, "S18575C13");
    check_base_class_offset(lv, (S18575C14*), ABISELECT(26288,16660), "S18575C13");
    /*is_ambiguous_... S18575C15::S18575C5 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C15*), ABISELECT(91784,58220), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C10*), ABISELECT(92256,58536), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C3*)(S18575C10*), ABISELECT(92256,58536), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C11*)(S18575C10*), ABISELECT(92720,58828), "S18575C13");
    check_base_class_offset(lv, (S18575C10*)(S18575C15*), ABISELECT(92256,58536), "S18575C13");
    check_base_class_offset(lv, (S18575C15*), ABISELECT(91784,58220), "S18575C13");
    check_base_class_offset(lv, (S18575C15*)(S18575C16*), ABISELECT(91784,58220), "S18575C13");
    /*is_ambiguous_... S18575C16::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C16*), ABISELECT(103264,65512), "S18575C13");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C16*), ABISELECT(103408,65608), "S18575C13");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C3*)(S18575C16*), ABISELECT(103408,65608), "S18575C13");
    check_base_class_offset(lv, (S18575C7*)(S18575C12*)(S18575C16*), ABISELECT(103872,65900), "S18575C13");
    check_base_class_offset(lv, (S18575C12*)(S18575C16*), ABISELECT(103872,65900), "S18575C13");
    check_base_class_offset(lv, (S18575C16*), ABISELECT(103264,65512), "S18575C13");
    check_field_offset(lv, s18575c13f0, ABISELECT(37456,23736), "S18575C13.s18575c13f0");
    check_field_offset(lv, s18575c13f1, ABISELECT(54144,34344), "S18575C13.s18575c13f1");
    test_class_info(&lv, &cd_S18575C13);
    dp->~S18575C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C13(Test_S18575C13, "S18575C13", ABISELECT(106080,67304));

#else // __cplusplus

extern void _ZN9S18575C13C1Ev();
extern void _ZN9S18575C13D1Ev();
Name_Map name_map_S18575C13[] = {
  NSPAIR(_ZN9S18575C13C1Ev),
  NSPAIR(_ZN9S18575C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C10;
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
extern Class_Descriptor cd_S18575C8;
extern VTBL_ENTRY _ZTI8S18575C8[];
extern  VTBL_ENTRY _ZTV8S18575C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C8[];
extern Class_Descriptor cd_S18575C14;
extern VTBL_ENTRY _ZTI9S18575C14[];
extern  VTBL_ENTRY _ZTV9S18575C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C14[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C10;
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
extern Class_Descriptor cd_S18575C15;
extern VTBL_ENTRY _ZTI9S18575C15[];
extern  VTBL_ENTRY _ZTV9S18575C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C15[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C12;
extern VTBL_ENTRY _ZTI9S18575C12[];
extern  VTBL_ENTRY _ZTV9S18575C12[];
extern Class_Descriptor cd_S18575C16;
extern VTBL_ENTRY _ZTI9S18575C16[];
extern  VTBL_ENTRY _ZTV9S18575C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C16[];
static Base_Class bases_S18575C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C5,    ABISELECT(86112,54612), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C4,    ABISELECT(86576,54920), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(86720,55016), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S18575C6,    ABISELECT(87184,55308), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18575C7,    ABISELECT(87360,55416), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18575C3,    ABISELECT(86720,55016), //bcp->offset
    61, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S18575C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(296,184), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(760,492), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18575C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18575C7,    ABISELECT(87664,55600), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(87960,55784), //bcp->offset
    89, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(88424,56092), //bcp->offset
    94, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18575C9,    ABISELECT(87664,55600), //bcp->offset
    76, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S18575C3,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S18575C11,    ABISELECT(4592,2912), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S18575C10,    ABISELECT(4128,2620), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18575C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C14,    ABISELECT(26288,16660), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C5,    ABISELECT(91784,58220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(92256,58536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S18575C3,    ABISELECT(92256,58536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S18575C11,    ABISELECT(92720,58828), //bcp->offset
    128, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S18575C10,    ABISELECT(92256,58536), //bcp->offset
    114, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S18575C15,    ABISELECT(91784,58220), //bcp->offset
    97, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C4,    ABISELECT(103264,65512), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(103408,65608), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S18575C3,    ABISELECT(103408,65608), //bcp->offset
    154, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S18575C7,    ABISELECT(103872,65900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S18575C12,    ABISELECT(103872,65900), //bcp->offset
    161, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S18575C16,    ABISELECT(103264,65512), //bcp->offset
    136, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S18575C13[];
extern void _ZN8S18575C72v7Ev();
extern void _ZN9S18575C13D1Ev();
extern void _ZN9S18575C13D0Ev();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
extern void _ZN9S18575C133v14Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZThn4128_N9S18575C13D1Ev,_ZThn2620_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn4128_N9S18575C13D0Ev,_ZThn2620_N9S18575C13D0Ev)();
extern void ABISELECT(_ZThn4592_N9S18575C13D1Ev,_ZThn2912_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn4592_N9S18575C13D0Ev,_ZThn2912_N9S18575C13D0Ev)();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C13D1Ev,_ZTv0_n16_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn87664_N9S18575C13D1Ev,_ZThn55600_N9S18575C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C13D0Ev,_ZTv0_n16_N9S18575C13D0Ev)();
extern void ABISELECT(_ZThn87664_N9S18575C13D0Ev,_ZThn55600_N9S18575C13D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S18575C13D1Ev,_ZTv0_n48_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn91784_N9S18575C13D1Ev,_ZThn58220_N9S18575C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S18575C13D0Ev,_ZTv0_n48_N9S18575C13D0Ev)();
extern void ABISELECT(_ZThn91784_N9S18575C13D0Ev,_ZThn58220_N9S18575C13D0Ev)() __attribute__((weak));
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C13D1Ev,_ZTv0_n40_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn92256_N9S18575C13D1Ev,_ZThn58536_N9S18575C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18575C13D0Ev,_ZTv0_n40_N9S18575C13D0Ev)();
extern void ABISELECT(_ZThn92256_N9S18575C13D0Ev,_ZThn58536_N9S18575C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S18575C13D1Ev,_ZTvn292_n40_N9S18575C13D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18575C13D0Ev,_ZTvn292_n40_N9S18575C13D0Ev)();
extern void _ZN8S18575C42v3Ev();
extern void ABISELECT(_ZTv0_n88_N9S18575C13D1Ev,_ZTv0_n44_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn103264_N9S18575C13D1Ev,_ZThn65512_N9S18575C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S18575C13D0Ev,_ZTv0_n44_N9S18575C13D0Ev)();
extern void ABISELECT(_ZThn103264_N9S18575C13D0Ev,_ZThn65512_N9S18575C13D0Ev)() __attribute__((weak));
extern void _ZN9S18575C163v13Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTvn608_n88_N9S18575C13D1Ev,_ZTvn388_n44_N9S18575C13D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N9S18575C13D0Ev,_ZTvn388_n44_N9S18575C13D0Ev)();
extern void _ZN9S18575C123v12Ev();
static  VTBL_ENTRY vtc_S18575C13[] = {
  ABISELECT(103264,65512),
  ABISELECT(92256,58536),
  ABISELECT(91784,58220),
  ABISELECT(87664,55600),
  ABISELECT(87360,55416),
  ABISELECT(87184,55308),
  ABISELECT(86112,54612),
  ABISELECT(86720,55016),
  ABISELECT(86576,54920),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN9S18575C13D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C13D0Ev,
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
  (VTBL_ENTRY)&_ZN9S18575C133v14Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(83536,52980),
  ABISELECT(83232,52796),
  ABISELECT(82448,52300),
  ABISELECT(83056,52688),
  ABISELECT(81984,51992),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S18575C13D1Ev,_ZThn2620_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S18575C13D0Ev,_ZThn2620_N9S18575C13D0Ev),
  ABISELECT(82592,52396),
  ABISELECT(81984,52008),
  ABISELECT(83072,52688),
  ABISELECT(82768,52504),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S18575C13D1Ev,_ZThn2912_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S18575C13D0Ev,_ZThn2912_N9S18575C13D0Ev),
  ABISELECT(60288,38260),
  ABISELECT(60896,38648),
  ABISELECT(-26288,-16660),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  0,
  0,
  0,
  ABISELECT(-86112,-54612),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  0,
  ABISELECT(-86576,-54920),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(640,400),
  ABISELECT(-144,-96),
  ABISELECT(464,292),
  ABISELECT(-608,-404),
  ABISELECT(-86720,-55016),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-608,-388),
  ABISELECT(-87184,-55308),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  0,
  ABISELECT(-87360,-55416),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-87664,-55600),
  0,
  ABISELECT(-87664,-55600),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C13D1Ev,_ZTv0_n16_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C13D0Ev,_ZTv0_n16_N9S18575C13D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-87960,-55784),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-88424,-56092),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-91784,-58220),
  0,
  0,
  0,
  ABISELECT(-5672,-3608),
  ABISELECT(-4600,-2912),
  ABISELECT(-5208,-3300),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  ABISELECT(-91784,-58220),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C13D1Ev,_ZTv0_n48_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C13D0Ev,_ZTv0_n48_N9S18575C13D0Ev),
  ABISELECT(-92256,-58536),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  ABISELECT(-92256,-58536),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C13D1Ev,_ZTv0_n40_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C13D0Ev,_ZTv0_n40_N9S18575C13D0Ev),
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-92720,-58828),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C13D1Ev,_ZTvn292_n40_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C13D0Ev,_ZTvn292_n40_N9S18575C13D0Ev),
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-103264,-65512),
  0,
  ABISELECT(-17152,-10900),
  ABISELECT(-16080,-10204),
  ABISELECT(-16688,-10592),
  ABISELECT(-15600,-9912),
  ABISELECT(-11008,-6976),
  ABISELECT(-11480,-7292),
  ABISELECT(-15904,-10096),
  ABISELECT(-103264,-65512),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S18575C13D1Ev,_ZTv0_n44_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S18575C13D0Ev,_ZTv0_n44_N9S18575C13D0Ev),
  (VTBL_ENTRY)&_ZN9S18575C163v13Ev,
  ABISELECT(-16048,-10192),
  ABISELECT(-16832,-10688),
  ABISELECT(-16224,-10300),
  ABISELECT(-17296,-10996),
  ABISELECT(-103408,-65608),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-103872,-65900),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N9S18575C13D1Ev,_ZTvn388_n44_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N9S18575C13D0Ev,_ZTvn388_n44_N9S18575C13D0Ev),
  (VTBL_ENTRY)&_ZN9S18575C123v12Ev,
};
extern VTBL_ENTRY _ZTV9S18575C13[];
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C8D1Ev();
extern void _ZN8S18575C8D0Ev();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C8__9S18575C13[] = {
  ABISELECT(87664,55600),
  ABISELECT(87360,55416),
  ABISELECT(87184,55308),
  ABISELECT(86112,54612),
  ABISELECT(86720,55016),
  ABISELECT(86576,54920),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D1Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D0Ev,
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(83536,52980),
  ABISELECT(83232,52796),
  ABISELECT(82448,52300),
  ABISELECT(83056,52688),
  ABISELECT(81984,51992),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C108S18575C8__A1__9S18575C13[] = {
  ABISELECT(83232,52796),
  ABISELECT(82448,52300),
  ABISELECT(83056,52688),
  ABISELECT(81984,51992),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C108S18575C8__A1__9S18575C13[] = {
  0,
  0,
  0,
  ABISELECT(-81984,-51992),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C108S18575C8__A1__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(-83056,-52688),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C108S18575C8__A1__9S18575C13[] = {
  0,
  ABISELECT(-82448,-52300),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C108S18575C8__A1__9S18575C13[] = {
  0,
  ABISELECT(-83232,-52796),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(82592,52396),
  ABISELECT(81984,52008),
  ABISELECT(83072,52688),
  ABISELECT(82768,52504),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C108S18575C8__9S18575C13[] = {
  0,
  ABISELECT(-82768,-52504),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn83072_N9S18575C11D1Ev,_ZThn52688_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn83072_N9S18575C11D0Ev,_ZThn52688_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-83072,-52688),
  0,
  ABISELECT(-83072,-52688),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(-83368,-52872),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(-83832,-53180),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C108S18575C8__9S18575C13[] = {
  0,
  ABISELECT(-81984,-52008),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(-82592,-52396),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn83536_N9S18575C10D1Ev,_ZThn52980_N9S18575C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void ABISELECT(_ZThn83536_N9S18575C10D0Ev,_ZThn52980_N9S18575C10D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-83536,-52980),
  0,
  ABISELECT(-83536,-52980),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(-83832,-53164),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(-84296,-53472),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C108S18575C8__9S18575C13[] = {
  0,
  ABISELECT(-82448,-52300),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(-83056,-52688),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A1__9S18575C108S18575C8__9S18575C13[] = {
  0,
  0,
  0,
  ABISELECT(-81984,-51992),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__A1__9S18575C108S18575C8__9S18575C13[] = {
  0,
  ABISELECT(-83232,-52796),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(82592,52396),
  ABISELECT(81984,52008),
  ABISELECT(83072,52688),
  ABISELECT(82768,52504),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C8__9S18575C13[] = {
  0,
  ABISELECT(-86576,-54920),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__8S18575C8__9S18575C13[] = {
  0,
  ABISELECT(640,400),
  ABISELECT(-144,-96),
  ABISELECT(464,292),
  ABISELECT(-608,-404),
  ABISELECT(-86720,-55016),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C8__9S18575C13[] = {
  0,
  0,
  0,
  ABISELECT(-86112,-54612),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C8__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(-87184,-55308),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C8__9S18575C13[] = {
  0,
  ABISELECT(-87360,-55416),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C10__8S18575C8__9S18575C13[] = {
  ABISELECT(83536,52980),
  ABISELECT(83232,52796),
  ABISELECT(82448,52300),
  ABISELECT(83056,52688),
  ABISELECT(81984,51992),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn87664_N8S18575C8D1Ev,_ZThn55600_N8S18575C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev)();
extern void ABISELECT(_ZThn87664_N8S18575C8D0Ev,_ZThn55600_N8S18575C8D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__A1__8S18575C8__9S18575C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-87664,-55600),
  0,
  ABISELECT(-87664,-55600),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A2__8S18575C8__9S18575C13[] = {
  ABISELECT(-87960,-55784),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__A3__8S18575C8__9S18575C13[] = {
  ABISELECT(-88424,-56092),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__8S18575C8__9S18575C13[] = {
  ABISELECT(82592,52396),
  ABISELECT(81984,52008),
  ABISELECT(83072,52688),
  ABISELECT(82768,52504),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S18575C14__9S18575C13[] = {
  ABISELECT(60288,38260),
  ABISELECT(60896,38648),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C14__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(-60896,-38648),
  (VTBL_ENTRY)&(_ZTI9S18575C14[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__9S18575C14__9S18575C13[] = {
  0,
  ABISELECT(-60288,-38260),
  (VTBL_ENTRY)&(_ZTI9S18575C14[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__9S18575C13[] = {
  ABISELECT(640,400),
  ABISELECT(-144,-96),
  ABISELECT(464,292),
  ABISELECT(-608,-404),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C3__9S18575C13[] = {
  0,
  0,
  0,
  ABISELECT(608,404),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C3__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C3__9S18575C13[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C3__9S18575C13[] = {
  0,
  ABISELECT(-640,-400),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C13[] = {
  ABISELECT(-608,-388),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__9S18575C13[] = {
  0,
  ABISELECT(608,388),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN9S18575C15D1Ev();
extern void _ZN9S18575C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C15__9S18575C13[] = {
  ABISELECT(-5672,-3608),
  ABISELECT(-4600,-2912),
  ABISELECT(-5208,-3300),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&_ZN9S18575C15D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C15D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C15__9S18575C13[] = {
  0,
  ABISELECT(4424,2804),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S18575C15D1Ev,_ZThn316_N9S18575C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S18575C15D0Ev,_ZThn316_N9S18575C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S18575C10__9S18575C15__9S18575C13[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C15__9S18575C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4120,2620),
  0,
  ABISELECT(4120,2620),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A1__9S18575C15__9S18575C13[] = {
  ABISELECT(3824,2436),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C15__9S18575C13[] = {
  ABISELECT(3360,2128),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C15__9S18575C13[] = {
  0,
  ABISELECT(5208,3300),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C15__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(4600,2912),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A2__9S18575C15__9S18575C13[] = {
  0,
  0,
  0,
  ABISELECT(5672,3608),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S18575C15D1Ev,_ZTvn292_n40_N9S18575C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18575C15D0Ev,_ZTvn292_n40_N9S18575C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__9S18575C15__9S18575C13[] = {
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C15D1Ev,_ZTvn292_n40_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C15D0Ev,_ZTvn292_n40_N9S18575C15D0Ev),
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C10__A1__9S18575C13[] = {
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C10__A2__9S18575C13[] = {
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C10__A2__9S18575C13[] = {
  0,
  0,
  0,
  ABISELECT(6144,3924),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C10__A2__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(5072,3228),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C10__A2__9S18575C13[] = {
  0,
  ABISELECT(5680,3616),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C10__A2__9S18575C13[] = {
  0,
  ABISELECT(4896,3120),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__A1__9S18575C13[] = {
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C10__A1__9S18575C13[] = {
  0,
  ABISELECT(5360,3412),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C10__A1__9S18575C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(5056,3228),
  0,
  ABISELECT(5056,3228),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__A1__9S18575C13[] = {
  ABISELECT(4760,3044),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__A1__9S18575C13[] = {
  ABISELECT(4296,2736),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C10__A1__9S18575C13[] = {
  0,
  ABISELECT(6144,3908),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C10__A1__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(5536,3520),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C10__A1__9S18575C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4592,2936),
  0,
  ABISELECT(4592,2936),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C10__A1__9S18575C13[] = {
  ABISELECT(4296,2752),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C10__A1__9S18575C13[] = {
  ABISELECT(3832,2444),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C10__A1__9S18575C13[] = {
  0,
  ABISELECT(5680,3616),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C10__A1__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(5072,3228),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A1__9S18575C10__A1__9S18575C13[] = {
  0,
  0,
  0,
  ABISELECT(6144,3924),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__A1__9S18575C10__A1__9S18575C13[] = {
  0,
  ABISELECT(4896,3120),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C10__A1__9S18575C13[] = {
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C16D1Ev();
extern void _ZN9S18575C16D0Ev();
extern void _ZN9S18575C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C16__9S18575C13[] = {
  ABISELECT(-17152,-10900),
  ABISELECT(-16080,-10204),
  ABISELECT(-16688,-10592),
  ABISELECT(-15600,-9912),
  ABISELECT(-11008,-6976),
  ABISELECT(-11480,-7292),
  ABISELECT(-15904,-10096),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C16D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C16D0Ev,
  (VTBL_ENTRY)&_ZN9S18575C163v13Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C16__A3__9S18575C13[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-16832,-10688),
  ABISELECT(-16224,-10300),
  ABISELECT(-17296,-10996),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C16__A3__9S18575C13[] = {
  0,
  0,
  0,
  ABISELECT(17296,10996),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C16__A3__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(16224,10300),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C16__A3__9S18575C13[] = {
  0,
  ABISELECT(16832,10688),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C16__A3__9S18575C13[] = {
  0,
  ABISELECT(16048,10192),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C16__9S18575C13[] = {
  0,
  ABISELECT(15904,10096),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S18575C16D1Ev,_ZTv0_n48_N9S18575C16D1Ev)();
extern void ABISELECT(_ZTv0_n96_N9S18575C16D0Ev,_ZTv0_n48_N9S18575C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C15__9S18575C16__9S18575C13[] = {
  ABISELECT(11480,7292),
  0,
  0,
  0,
  ABISELECT(-5672,-3608),
  ABISELECT(-4600,-2912),
  ABISELECT(-5208,-3300),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  ABISELECT(11480,7292),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C16D1Ev,_ZTv0_n48_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C16D0Ev,_ZTv0_n48_N9S18575C16D0Ev),
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C16D1Ev,_ZTv0_n40_N9S18575C16D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S18575C16D0Ev,_ZTv0_n40_N9S18575C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C10__9S18575C16__9S18575C13[] = {
  ABISELECT(11008,6976),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  ABISELECT(11008,6976),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C16D1Ev,_ZTv0_n40_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C16D0Ev,_ZTv0_n40_N9S18575C16D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C16D1Ev,_ZTv0_n16_N9S18575C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C16D0Ev,_ZTv0_n16_N9S18575C16D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C16__9S18575C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(15600,9912),
  0,
  ABISELECT(15600,9912),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C16D1Ev,_ZTv0_n16_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C16D0Ev,_ZTv0_n16_N9S18575C16D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A1__9S18575C16__9S18575C13[] = {
  ABISELECT(15304,9728),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__A1__9S18575C16__9S18575C13[] = {
  ABISELECT(14840,9420),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A2__9S18575C16__9S18575C13[] = {
  0,
  ABISELECT(16688,10592),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C16__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(16080,10204),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A2__9S18575C16__9S18575C13[] = {
  0,
  0,
  0,
  ABISELECT(17152,10900),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S18575C16D1Ev,_ZTvn292_n40_N9S18575C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18575C16D0Ev,_ZTvn292_n40_N9S18575C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__9S18575C16__9S18575C13[] = {
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(10544,6684),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C16D1Ev,_ZTvn292_n40_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C16D0Ev,_ZTvn292_n40_N9S18575C16D0Ev),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__A1__9S18575C16__9S18575C13[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-16832,-10688),
  ABISELECT(-16224,-10300),
  ABISELECT(-17296,-10996),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C13[] = {
  {&(_ZTV9S18575C13[11]),  11,167},
  {&(_tg__ZTV8S18575C8__9S18575C13[8]),  8,14},
  {&(_tg__ZTV9S18575C108S18575C8__9S18575C13[7]),  7,11},
  {&(_tg__ZTV8S18575C39S18575C108S18575C8__A1__9S18575C13[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C108S18575C8__A1__9S18575C13[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C108S18575C8__A1__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C108S18575C8__A1__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C108S18575C8__A1__9S18575C13[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C108S18575C8__9S18575C13[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C108S18575C8__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C108S18575C8__9S18575C13[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C108S18575C8__9S18575C13[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C108S18575C8__9S18575C13[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C108S18575C8__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C108S18575C8__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C9__9S18575C108S18575C8__9S18575C13[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C108S18575C8__9S18575C13[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C108S18575C8__9S18575C13[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C108S18575C8__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C108S18575C8__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A1__9S18575C108S18575C8__9S18575C13[5]),  5,8},
  {&(_tg__ZTV8S18575C7__A1__9S18575C108S18575C8__9S18575C13[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C108S18575C8__9S18575C13[6]),  6,8},
  {&(_tg__ZTV8S18575C4__8S18575C8__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C3__8S18575C8__9S18575C13[7]),  7,8},
  {&(_tg__ZTV8S18575C5__8S18575C8__9S18575C13[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C8__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C7__8S18575C8__9S18575C13[3]),  3,4},
  {&(_tg__ZTV9S18575C10__8S18575C8__9S18575C13[7]),  7,11},
  {&(_tg__ZTV8S18575C9__A1__8S18575C8__9S18575C13[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A2__8S18575C8__9S18575C13[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__A3__8S18575C8__9S18575C13[2]),  2,3},
  {&(_tg__ZTV9S18575C119S18575C10__8S18575C8__9S18575C13[6]),  6,8},
  {&(_tg__ZTV9S18575C14__9S18575C13[4]),  4,4},
  {&(_tg__ZTV8S18575C6__9S18575C14__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C4__9S18575C14__9S18575C13[3]),  3,4},
  {&(_ZTV9S18575C13[54]),  54,167},
  {&(_ZTV9S18575C13[60]),  60,167},
  {&(_ZTV9S18575C13[68]),  68,167},
  {&(_ZTV9S18575C13[72]),  72,167},
  {&(_ZTV9S18575C13[75]),  75,167},
  {&(_ZTV9S18575C13[33]),  33,167},
  {&(_ZTV9S18575C13[85]),  85,167},
  {&(_ZTV9S18575C13[91]),  91,167},
  {&(_ZTV9S18575C13[96]),  96,167},
  {&(_ZTV9S18575C13[43]),  43,167},
  {&(_ZTV9S18575C13[49]),  49,167},
  {&(_ZTV9S18575C13[109]),  109,167},
  {&(_ZTV9S18575C13[124]),  124,167},
  {&(_ZTV9S18575C13[134]),  134,167},
  {&(_ZTV9S18575C13[150]),  150,167},
  {&(_ZTV9S18575C13[160]),  160,167},
  {&(_ZTV9S18575C13[163]),  163,167},
  {&(_tg__ZTV8S18575C3__9S18575C13[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C3__9S18575C13[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C3__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C3__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C3__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__9S18575C13[3]),  3,4},
  {&(_tg__ZTV9S18575C15__9S18575C13[8]),  8,13},
  {&(_tg__ZTV8S18575C7__9S18575C15__9S18575C13[3]),  3,4},
  {&(_tg__ZTV9S18575C10__9S18575C15__9S18575C13[10]),  10,14},
  {&(_tg__ZTV8S18575C9__9S18575C15__9S18575C13[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A1__9S18575C15__9S18575C13[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C15__9S18575C13[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C15__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C15__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A2__9S18575C15__9S18575C13[5]),  5,8},
  {&(_tg__ZTV9S18575C119S18575C10__9S18575C15__9S18575C13[6]),  6,8},
  {&(_tg__ZTV9S18575C10__A1__9S18575C13[7]),  7,11},
  {&(_tg__ZTV8S18575C39S18575C10__A2__9S18575C13[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C10__A2__9S18575C13[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C10__A2__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C10__A2__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C10__A2__9S18575C13[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C10__A1__9S18575C13[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C10__A1__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C10__A1__9S18575C13[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__A1__9S18575C13[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__A1__9S18575C13[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C10__A1__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C10__A1__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C9__9S18575C10__A1__9S18575C13[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C10__A1__9S18575C13[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C10__A1__9S18575C13[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C10__A1__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C10__A1__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A1__9S18575C10__A1__9S18575C13[5]),  5,8},
  {&(_tg__ZTV8S18575C7__A1__9S18575C10__A1__9S18575C13[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C10__A1__9S18575C13[6]),  6,8},
  {&(_tg__ZTV9S18575C16__9S18575C13[9]),  9,13},
  {&(_tg__ZTV8S18575C39S18575C16__A3__9S18575C13[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C16__A3__9S18575C13[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C16__A3__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C16__A3__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C16__A3__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C7__9S18575C16__9S18575C13[3]),  3,4},
  {&(_tg__ZTV9S18575C15__9S18575C16__9S18575C13[12]),  12,17},
  {&(_tg__ZTV9S18575C10__9S18575C16__9S18575C13[10]),  10,14},
  {&(_tg__ZTV8S18575C9__9S18575C16__9S18575C13[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A1__9S18575C16__9S18575C13[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__A1__9S18575C16__9S18575C13[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A2__9S18575C16__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C16__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A2__9S18575C16__9S18575C13[5]),  5,8},
  {&(_tg__ZTV9S18575C119S18575C10__9S18575C16__9S18575C13[6]),  6,8},
  {&(_tg__ZTV8S18575C3__A1__9S18575C16__9S18575C13[6]),  6,7},
};
extern VTBL_ENTRY _ZTI9S18575C13[];
extern  VTBL_ENTRY _ZTV9S18575C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C13[];
static VTBL_ENTRY alt_thunk_names29[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S18575C15D0Ev,_ZThn316_N9S18575C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S18575C15D1Ev,_ZThn316_N9S18575C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N8S18575C8D0Ev,_ZThn55600_N8S18575C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N8S18575C8D1Ev,_ZThn55600_N8S18575C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83536_N9S18575C10D0Ev,_ZThn52980_N9S18575C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83536_N9S18575C10D1Ev,_ZThn52980_N9S18575C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83072_N9S18575C11D0Ev,_ZThn52688_N9S18575C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83072_N9S18575C11D1Ev,_ZThn52688_N9S18575C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S18575C13D0Ev,_ZTv0_n44_N9S18575C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn103264_N9S18575C13D0Ev,_ZThn65512_N9S18575C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S18575C13D1Ev,_ZTv0_n44_N9S18575C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn103264_N9S18575C13D1Ev,_ZThn65512_N9S18575C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C13D0Ev,_ZTv0_n40_N9S18575C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn92256_N9S18575C13D0Ev,_ZThn58536_N9S18575C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C13D1Ev,_ZTv0_n40_N9S18575C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn92256_N9S18575C13D1Ev,_ZThn58536_N9S18575C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S18575C13D0Ev,_ZTv0_n48_N9S18575C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn91784_N9S18575C13D0Ev,_ZThn58220_N9S18575C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S18575C13D1Ev,_ZTv0_n48_N9S18575C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn91784_N9S18575C13D1Ev,_ZThn58220_N9S18575C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C13D0Ev,_ZTv0_n16_N9S18575C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N9S18575C13D0Ev,_ZThn55600_N9S18575C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C13D1Ev,_ZTv0_n16_N9S18575C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N9S18575C13D1Ev,_ZThn55600_N9S18575C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18575C13 = {  "S18575C13", // class name
  bases_S18575C13, 32,
  &(vtc_S18575C13[0]), // expected_vtbl_contents
  &(vtt_S18575C13[0]), // expected_vtt_contents
  ABISELECT(106080,67304), // object size
  NSPAIRA(_ZTI9S18575C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S18575C13),167, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18575C13),108, //virtual table table var
  32, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names29,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C17  : S18575C3 , S18575C11 {
  int s18575c17f0:13;
  long s18575c17f1;
  int s18575c17f2;
  void *s18575c17f3[2];
  __tsi64 s18575c17f4;
  ::S18575C5 s18575c17f5;
  virtual  ~S18575C17(); // _ZN9S18575C17D2Ev
  virtual void  v15(); // _ZN9S18575C173v15Ev
  virtual void  v16(); // _ZN9S18575C173v16Ev
  S18575C17(); // tgen
};
//SIG(-1 S18575C17) C1{ BC2{ BC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC4{ v4 v5 v6 Fi[2] Fl[2] FC3[3]} VBC5{ VBC3 Fp FC3 FL:3} VBC6{ v7 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} FC6 Fs Fi[2]} BC7{ VBC6 VBC8{ BC6 BC4 BC3 vd v8 Fl FL Fp[8] FC2 Fp Fi FC2 Fi} VBC3 VBC5 FL:44 Fp Fi FC2 Fl[2] Fi[3] FC8 Fc:7 FC9{ BC6 vd v9 FC5 Fi Fp Fi}} vd v1 v2 Fi:13 Fl Fi Fp[2] FL FC4}


 S18575C17 ::~S18575C17(){ note_dtor("S18575C17", this);}
void  S18575C17 ::v15(){vfunc_called(this, "_ZN9S18575C173v15Ev");}
void  S18575C17 ::v16(){vfunc_called(this, "_ZN9S18575C173v16Ev");}
S18575C17 ::S18575C17(){ note_ctor("S18575C17", this);} // tgen

static void Test_S18575C17()
{
  extern Class_Descriptor cd_S18575C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(788,2000)];
    init_test(&cd_S18575C17, buf);
    S18575C17 *dp, &lv = *(dp=new (buf) S18575C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(12592,7996), "sizeof(S18575C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C17)");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*), 0, "S18575C17");
    check_base_class_offset(lv, (S18575C5*)(S18575C3*), ABISELECT(7376,4680), "S18575C17");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(8008,5096), "S18575C17");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*), ABISELECT(8008,5096), "S18575C17");
    check_base_class_offset(lv, (S18575C6*)(S18575C3*), ABISELECT(7840,4988), "S18575C17");
    check_base_class_offset(lv, (S18575C6*)(S18575C11*), ABISELECT(7840,4988), "S18575C17");
    check_base_class_offset(lv, (S18575C7*)(S18575C3*), ABISELECT(8160,5192), "S18575C17");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*), ABISELECT(8160,5192), "S18575C17");
    check_base_class_offset(lv, (S18575C3*), 0, "S18575C17");
    check_base_class_offset(lv, (S18575C7*)(S18575C9*), ABISELECT(8464,5376), "S18575C17");
    check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(8760,5560), "S18575C17");
    check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(9224,5868), "S18575C17");
    check_base_class_offset(lv, (S18575C9*)(S18575C11*), ABISELECT(8464,5376), "S18575C17");
    check_base_class_offset(lv, (S18575C11*), ABISELECT(464,292), "S18575C17");
    set_bf_and_test(lv, s18575c17f0, ABISELECT(6864,4344), 0, 13, 1, "S18575C17");
    set_bf_and_test(lv, s18575c17f0, ABISELECT(6864,4344), 0, 13, hide_sll(1LL<<12), "S18575C17");
    check_field_offset(lv, s18575c17f1, ABISELECT(6872,4348), "S18575C17.s18575c17f1");
    check_field_offset(lv, s18575c17f2, ABISELECT(6880,4352), "S18575C17.s18575c17f2");
    check_field_offset(lv, s18575c17f3, ABISELECT(6888,4356), "S18575C17.s18575c17f3");
    check_field_offset(lv, s18575c17f4, ABISELECT(6904,4364), "S18575C17.s18575c17f4");
    check_field_offset(lv, s18575c17f5, ABISELECT(6912,4372), "S18575C17.s18575c17f5");
    test_class_info(&lv, &cd_S18575C17);
    dp->~S18575C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C17(Test_S18575C17, "S18575C17", ABISELECT(12592,7996));

#else // __cplusplus

extern void _ZN9S18575C17C1Ev();
extern void _ZN9S18575C17D2Ev();
Name_Map name_map_S18575C17[] = {
  NSPAIR(_ZN9S18575C17C1Ev),
  NSPAIR(_ZN9S18575C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
static Base_Class bases_S18575C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(7376,4680), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(8008,5096), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18575C6,    ABISELECT(7840,4988), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18575C7,    ABISELECT(8160,5192), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18575C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C7,    ABISELECT(8464,5376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(8760,5560), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(9224,5868), //bcp->offset
    57, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18575C9,    ABISELECT(8464,5376), //bcp->offset
    39, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S18575C11,    ABISELECT(464,292), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S18575C17[];
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C17D1Ev();
extern void _ZN9S18575C17D0Ev();
extern void _ZN9S18575C173v15Ev();
extern void _ZN9S18575C173v16Ev();
extern void ABISELECT(_ZThn464_N9S18575C17D1Ev,_ZThn292_N9S18575C17D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C17D0Ev,_ZThn292_N9S18575C17D0Ev)();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C17D1Ev,_ZTv0_n16_N9S18575C17D1Ev)();
extern void ABISELECT(_ZThn8464_N9S18575C17D1Ev,_ZThn5376_N9S18575C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C17D0Ev,_ZTv0_n16_N9S18575C17D0Ev)();
extern void ABISELECT(_ZThn8464_N9S18575C17D0Ev,_ZThn5376_N9S18575C17D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY vtc_S18575C17[] = {
  ABISELECT(8464,5376),
  ABISELECT(8160,5192),
  ABISELECT(8008,5096),
  ABISELECT(7840,4988),
  ABISELECT(7376,4680),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C17D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C17D0Ev,
  (VTBL_ENTRY)&_ZN9S18575C173v15Ev,
  (VTBL_ENTRY)&_ZN9S18575C173v16Ev,
  ABISELECT(7376,4696),
  ABISELECT(7544,4804),
  ABISELECT(8000,5084),
  ABISELECT(7696,4900),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C17D1Ev,_ZThn292_N9S18575C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C17D0Ev,_ZThn292_N9S18575C17D0Ev),
  0,
  0,
  0,
  ABISELECT(-7376,-4680),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(168,108),
  ABISELECT(-7840,-4988),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  0,
  ABISELECT(-8008,-5096),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(-8160,-5192),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-8464,-5376),
  0,
  ABISELECT(-8464,-5376),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C17D1Ev,_ZTv0_n16_N9S18575C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C17D0Ev,_ZTv0_n16_N9S18575C17D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-8760,-5560),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-9224,-5868),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern VTBL_ENTRY _ZTV9S18575C17[];
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__9S18575C17[] = {
  ABISELECT(8160,5192),
  ABISELECT(8008,5096),
  ABISELECT(7840,4988),
  ABISELECT(7376,4680),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C3__9S18575C17[] = {
  0,
  0,
  0,
  ABISELECT(-7376,-4680),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C3__9S18575C17[] = {
  ABISELECT(168,108),
  ABISELECT(-7840,-4988),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C3__9S18575C17[] = {
  0,
  ABISELECT(-8008,-5096),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C3__9S18575C17[] = {
  0,
  ABISELECT(-8160,-5192),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C17[] = {
  ABISELECT(7376,4696),
  ABISELECT(7544,4804),
  ABISELECT(8000,5084),
  ABISELECT(7696,4900),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C11__9S18575C17[] = {
  0,
  ABISELECT(-7696,-4900),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn8000_N9S18575C11D1Ev,_ZThn5084_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn8000_N9S18575C11D0Ev,_ZThn5084_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C11__9S18575C17[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-8000,-5084),
  0,
  ABISELECT(-8000,-5084),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C11__9S18575C17[] = {
  ABISELECT(-8296,-5268),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C11__9S18575C17[] = {
  ABISELECT(-8760,-5576),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C11__9S18575C17[] = {
  0,
  ABISELECT(-7544,-4804),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C11__9S18575C17[] = {
  ABISELECT(168,108),
  ABISELECT(-7376,-4696),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C17[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__9S18575C17[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C17[] = {
  {&(_ZTV9S18575C17[7]),  7,60},
  {&(_tg__ZTV8S18575C3__9S18575C17[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C3__9S18575C17[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C3__9S18575C17[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C3__9S18575C17[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C3__9S18575C17[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C17[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C11__9S18575C17[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C11__9S18575C17[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C11__9S18575C17[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C11__9S18575C17[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C11__9S18575C17[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C11__9S18575C17[3]),  3,3},
  {&(_ZTV9S18575C17[25]),  25,60},
  {&(_ZTV9S18575C17[31]),  31,60},
  {&(_ZTV9S18575C17[34]),  34,60},
  {&(_ZTV9S18575C17[38]),  38,60},
  {&(_ZTV9S18575C17[18]),  18,60},
  {&(_ZTV9S18575C17[48]),  48,60},
  {&(_ZTV9S18575C17[54]),  54,60},
  {&(_ZTV9S18575C17[59]),  59,60},
  {&(_tg__ZTV8S18575C6__9S18575C17[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__9S18575C17[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18575C17[];
extern  VTBL_ENTRY _ZTV9S18575C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C17[];
static VTBL_ENTRY alt_thunk_names30[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N9S18575C11D0Ev,_ZThn5084_N9S18575C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N9S18575C11D1Ev,_ZThn5084_N9S18575C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C17D0Ev,_ZTv0_n16_N9S18575C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N9S18575C17D0Ev,_ZThn5376_N9S18575C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C17D1Ev,_ZTv0_n16_N9S18575C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N9S18575C17D1Ev,_ZThn5376_N9S18575C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18575C17 = {  "S18575C17", // class name
  bases_S18575C17, 11,
  &(vtc_S18575C17[0]), // expected_vtbl_contents
  &(vtt_S18575C17[0]), // expected_vtt_contents
  ABISELECT(12592,7996), // object size
  NSPAIRA(_ZTI9S18575C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S18575C17),60, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18575C17),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names30,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S18575C19  {
  char s18575c19f0:8;
  void *s18575c19f1;
  short s18575c19f2;
  long double s18575c19f3;
  void *s18575c19f4;
  void *s18575c19f5;
  long s18575c19f6[5];
  void  mf18575c19(); // _ZN9S18575C1910mf18575c19Ev
};
//SIG(1 S18575C19) U1{ m Fc:8 Fp Fs FD Fp Fp Fl[5]}

#endif // __cplusplus
#ifdef __cplusplus

struct  S18575C18  : S18575C5 , virtual S18575C8 , S18575C4 {
  int s18575c18f0;
  ::S18575C19 s18575c18f1;
  int s18575c18f2;
  ::S18575C8 s18575c18f3;
  char s18575c18f4[6];
  long s18575c18f5;
  int s18575c18f6;
  int  :0;
  virtual  ~S18575C18(); // _ZN9S18575C18D2Ev
  S18575C18(); // tgen
};
//SIG(-1 S18575C18) C1{ BC2{ v1 v2 v3 Fi[2] Fl[2] FC3{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]} VBC4{ VBC3 VBC5{ BC3 VBC2 VBC6{ VBC3 Fp FC3 FL:3} VBC7{ v5 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} FC7 Fs Fi[2]} BC8{ BC7 BC2 BC3 vd v6 Fl FL Fp[8] FC5 Fp Fi FC5 Fi} BC9{ VBC8 VBC3 VBC6 BC5 BC10{ VBC7 VBC8 VBC3 VBC6 FL:44 Fp Fi FC5 Fl[2] Fi[3] FC8 Fc:7 FC11{ BC7 vd v10 FC6 Fi Fp Fi}} v7 FC8 FL Fc:7} v8 v9 FC10 Fs FL:8} BC3 vd Fi FU12{ m Fc:8 Fp Fs FD Fp Fp Fl[5]} Fi FC4 Fc[6] Fl Fi Fi:0}


 S18575C18 ::~S18575C18(){ note_dtor("S18575C18", this);}
S18575C18 ::S18575C18(){ note_ctor("S18575C18", this);} // tgen

static void Test_S18575C18()
{
  extern Class_Descriptor cd_S18575C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4042,10247)];
    init_test(&cd_S18575C18, buf);
    S18575C18 *dp, &lv = *(dp=new (buf) S18575C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64656,40984), "sizeof(S18575C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C18)");
    /*is_ambiguous_... S18575C18::S18575C5 */ AMB_check_base_class_offset(lv, (S18575C5*), 0, "S18575C18");
    /*is_ambiguous_... S18575C8::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C8*), ABISELECT(58968,37376), "S18575C18");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(58968,37376), "S18575C18");
    /*is_ambiguous_... S18575C10::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C10*)(S18575C8*), ABISELECT(58968,37376), "S18575C18");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(58968,37376), "S18575C18");
    /*is_ambiguous_... S18575C18::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*), ABISELECT(59120,37472), "S18575C18");
    /*is_ambiguous_... S18575C18::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*), ABISELECT(59584,37764), "S18575C18");
    check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(59584,37764), "S18575C18");
    /*is_ambiguous_... S18575C18::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*), ABISELECT(60048,38072), "S18575C18");
    check_base_class_offset(lv, (S18575C6*)(S18575C10*)(S18575C8*), ABISELECT(60048,38072), "S18575C18");
    check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(60048,38072), "S18575C18");
    check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(60048,38072), "S18575C18");
    /*is_ambiguous_... S18575C18::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*), ABISELECT(60224,38180), "S18575C18");
    check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(60224,38180), "S18575C18");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(60224,38180), "S18575C18");
    /*is_ambiguous_... S18575C8::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C3*)(S18575C8*), ABISELECT(59120,37472), "S18575C18");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C9*)(S18575C8*), ABISELECT(32688,20716), "S18575C18");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C9*)(S18575C8*), ABISELECT(32984,20900), "S18575C18");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C9*)(S18575C8*), ABISELECT(33448,21208), "S18575C18");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C8*), ABISELECT(32688,20716), "S18575C18");
    /*is_ambiguous_... S18575C18::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C9*), ABISELECT(60528,38364), "S18575C18");
    /*is_ambiguous_... S18575C18::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(60824,38548), "S18575C18");
    /*is_ambiguous_... S18575C18::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(61288,38856), "S18575C18");
    check_base_class_offset(lv, (S18575C9*)(S18575C10*)(S18575C8*), ABISELECT(60528,38364), "S18575C18");
    check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(60528,38364), "S18575C18");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(36816,23336), "S18575C18");
    check_base_class_offset(lv, (S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(36816,23336), "S18575C18");
    check_base_class_offset(lv, (S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(37280,23628), "S18575C18");
    check_base_class_offset(lv, (S18575C10*)(S18575C8*), ABISELECT(36816,23336), "S18575C18");
    check_base_class_offset(lv, (S18575C8*), ABISELECT(32688,20716), "S18575C18");
    /*is_ambiguous_... S18575C18::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*), ABISELECT(464,308), "S18575C18");
    check_field_offset(lv, s18575c18f0, ABISELECT(608,404), "S18575C18.s18575c18f0");
    check_field_offset(lv, s18575c18f1, ABISELECT(624,408), "S18575C18.s18575c18f1");
    check_field_offset(lv, s18575c18f2, ABISELECT(672,428), "S18575C18.s18575c18f2");
    check_field_offset(lv, s18575c18f3, ABISELECT(688,432), "S18575C18.s18575c18f3");
    check_field_offset(lv, s18575c18f4, ABISELECT(32656,20700), "S18575C18.s18575c18f4");
    check_field_offset(lv, s18575c18f5, ABISELECT(32664,20708), "S18575C18.s18575c18f5");
    check_field_offset(lv, s18575c18f6, ABISELECT(32672,20712), "S18575C18.s18575c18f6");
    test_class_info(&lv, &cd_S18575C18);
    dp->~S18575C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C18(Test_S18575C18, "S18575C18", ABISELECT(64656,40984));

#else // __cplusplus

extern void _ZN9S18575C18C1Ev();
extern void _ZN9S18575C18D2Ev();
Name_Map name_map_S18575C18[] = {
  NSPAIR(_ZN9S18575C18C1Ev),
  NSPAIR(_ZN9S18575C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C10;
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
extern Class_Descriptor cd_S18575C8;
extern VTBL_ENTRY _ZTI8S18575C8[];
extern  VTBL_ENTRY _ZTV8S18575C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C8[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
static Base_Class bases_S18575C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C4,    ABISELECT(58968,37376), //bcp->offset
    68, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(59120,37472), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(59584,37764), //bcp->offset
    80, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S18575C6,    ABISELECT(60048,38072), //bcp->offset
    88, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S18575C7,    ABISELECT(60224,38180), //bcp->offset
    91, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S18575C3,    ABISELECT(59120,37472), //bcp->offset
    72, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S18575C7,    ABISELECT(32688,20716), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(32984,20900), //bcp->offset
    41, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(33448,21208), //bcp->offset
    46, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S18575C9,    ABISELECT(32688,20716), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S18575C7,    ABISELECT(60528,38364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(60824,38548), //bcp->offset
    108, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(61288,38856), //bcp->offset
    113, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S18575C9,    ABISELECT(60528,38364), //bcp->offset
    95, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(36816,23336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S18575C3,    ABISELECT(36816,23336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18575C11,    ABISELECT(37280,23628), //bcp->offset
    60, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18575C10,    ABISELECT(36816,23336), //bcp->offset
    49, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S18575C8,    ABISELECT(32688,20716), //bcp->offset
    17, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C4,    ABISELECT(464,308), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S18575C18[];
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN9S18575C18D1Ev();
extern void _ZN9S18575C18D0Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C18D1Ev,_ZTv0_n40_N9S18575C18D1Ev)();
extern void ABISELECT(_ZThn32688_N9S18575C18D1Ev,_ZThn20716_N9S18575C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18575C18D0Ev,_ZTv0_n40_N9S18575C18D0Ev)();
extern void ABISELECT(_ZThn32688_N9S18575C18D0Ev,_ZThn20716_N9S18575C18D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTvn4128_n80_N9S18575C18D1Ev,_ZTvn2620_n40_N9S18575C18D1Ev)();
extern void ABISELECT(_ZTvn4128_n80_N9S18575C18D0Ev,_ZTvn2620_n40_N9S18575C18D0Ev)();
extern void ABISELECT(_ZTvn4592_n80_N9S18575C18D1Ev,_ZTvn2912_n40_N9S18575C18D1Ev)();
extern void ABISELECT(_ZTvn4592_n80_N9S18575C18D0Ev,_ZTvn2912_n40_N9S18575C18D0Ev)();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C18D1Ev,_ZTv0_n16_N9S18575C18D1Ev)();
extern void ABISELECT(_ZThn60528_N9S18575C18D1Ev,_ZThn38364_N9S18575C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C18D0Ev,_ZTv0_n16_N9S18575C18D0Ev)();
extern void ABISELECT(_ZThn60528_N9S18575C18D0Ev,_ZThn38364_N9S18575C18D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY vtc_S18575C18[] = {
  ABISELECT(60528,38364),
  ABISELECT(60224,38180),
  ABISELECT(60048,38072),
  ABISELECT(59584,37764),
  ABISELECT(59120,37472),
  ABISELECT(58968,37376),
  ABISELECT(32688,20716),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&_ZN9S18575C18D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C18D0Ev,
  ABISELECT(-464,-308),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(4128,2620),
  0,
  0,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-32688,-20716),
  0,
  ABISELECT(27840,17648),
  ABISELECT(27536,17464),
  ABISELECT(27360,17356),
  ABISELECT(26896,17048),
  ABISELECT(26432,16756),
  ABISELECT(26280,16660),
  ABISELECT(-32688,-20716),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C18D1Ev,_ZTv0_n40_N9S18575C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C18D0Ev,_ZTv0_n40_N9S18575C18D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
  ABISELECT(-32984,-20900),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-33448,-21208),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  ABISELECT(-36816,-23336),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N9S18575C18D1Ev,_ZTvn2620_n40_N9S18575C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N9S18575C18D0Ev,_ZTvn2620_n40_N9S18575C18D0Ev),
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-37280,-23628),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N9S18575C18D1Ev,_ZTvn2912_n40_N9S18575C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N9S18575C18D0Ev,_ZTvn2912_n40_N9S18575C18D0Ev),
  0,
  ABISELECT(-58968,-37376),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-59120,-37472),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  0,
  0,
  ABISELECT(-59584,-37764),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-1080,-696),
  ABISELECT(-60048,-38072),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  0,
  ABISELECT(-60224,-38180),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-60528,-38364),
  0,
  ABISELECT(-60528,-38364),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C18D1Ev,_ZTv0_n16_N9S18575C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C18D0Ev,_ZTv0_n16_N9S18575C18D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-60824,-38548),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-61288,-38856),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern VTBL_ENTRY _ZTV9S18575C18[];
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C8D1Ev();
extern void _ZN8S18575C8D0Ev();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C8__9S18575C18[] = {
  ABISELECT(27840,17648),
  ABISELECT(27536,17464),
  ABISELECT(27360,17356),
  ABISELECT(26896,17048),
  ABISELECT(26432,16756),
  ABISELECT(26280,16660),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D1Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D0Ev,
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C108S18575C8__A1__9S18575C18[] = {
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C108S18575C8__A1__9S18575C18[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C108S18575C8__A1__9S18575C18[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C108S18575C8__A1__9S18575C18[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C108S18575C8__A1__9S18575C18[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C108S18575C8__9S18575C18[] = {
  0,
  ABISELECT(-22944,-14552),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn23248_N9S18575C11D1Ev,_ZThn14736_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn23248_N9S18575C11D0Ev,_ZThn14736_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23248,-14736),
  0,
  ABISELECT(-23248,-14736),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(-23544,-14920),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(-24008,-15228),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C108S18575C8__9S18575C18[] = {
  0,
  ABISELECT(-21688,-13748),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-22768,-14444),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn23712_N9S18575C10D1Ev,_ZThn15028_N9S18575C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void ABISELECT(_ZThn23712_N9S18575C10D0Ev,_ZThn15028_N9S18575C10D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23712,-15028),
  0,
  ABISELECT(-23712,-15028),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(-24008,-15212),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(-24472,-15520),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C108S18575C8__9S18575C18[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A1__9S18575C108S18575C8__9S18575C18[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__A1__9S18575C108S18575C8__9S18575C18[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C8__9S18575C18[] = {
  0,
  ABISELECT(-26280,-16660),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__8S18575C8__9S18575C18[] = {
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-26432,-16756),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C8__9S18575C18[] = {
  0,
  0,
  0,
  ABISELECT(-26896,-17048),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C8__9S18575C18[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-27360,-17356),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C8__9S18575C18[] = {
  0,
  ABISELECT(-27536,-17464),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C10__8S18575C8__9S18575C18[] = {
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn27840_N8S18575C8D1Ev,_ZThn17648_N8S18575C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev)();
extern void ABISELECT(_ZThn27840_N8S18575C8D0Ev,_ZThn17648_N8S18575C8D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__A1__8S18575C8__9S18575C18[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-27840,-17648),
  0,
  ABISELECT(-27840,-17648),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A2__8S18575C8__9S18575C18[] = {
  ABISELECT(-28136,-17832),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__A3__8S18575C8__9S18575C18[] = {
  ABISELECT(-28600,-18140),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__8S18575C8__9S18575C18[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__9S18575C18[] = {
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C3__9S18575C18[] = {
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C3__9S18575C18[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C3__9S18575C18[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C3__9S18575C18[] = {
  0,
  ABISELECT(-1104,-708),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C18[] = {
  ABISELECT(-1080,-696),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__9S18575C18[] = {
  0,
  ABISELECT(1080,696),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C18[] = {
  {&(_ZTV9S18575C18[9]),  9,116},
  {&(_ZTV9S18575C18[35]),  35,116},
  {&(_ZTV9S18575C18[71]),  71,116},
  {&(_ZTV9S18575C18[79]),  79,116},
  {&(_ZTV9S18575C18[85]),  85,116},
  {&(_ZTV9S18575C18[91]),  91,116},
  {&(_ZTV9S18575C18[94]),  94,116},
  {&(_ZTV9S18575C18[43]),  43,116},
  {&(_ZTV9S18575C18[48]),  48,116},
  {&(_ZTV9S18575C18[56]),  56,116},
  {&(_ZTV9S18575C18[104]),  104,116},
  {&(_ZTV9S18575C18[110]),  110,116},
  {&(_ZTV9S18575C18[115]),  115,116},
  {&(_ZTV9S18575C18[66]),  66,116},
  {&(_tg__ZTV8S18575C8__9S18575C18[8]),  8,14},
  {&(_tg__ZTV9S18575C108S18575C8__9S18575C18[7]),  7,11},
  {&(_tg__ZTV8S18575C39S18575C108S18575C8__A1__9S18575C18[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C108S18575C8__A1__9S18575C18[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C108S18575C8__A1__9S18575C18[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C108S18575C8__A1__9S18575C18[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C108S18575C8__A1__9S18575C18[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C108S18575C8__9S18575C18[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C108S18575C8__9S18575C18[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C108S18575C8__9S18575C18[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C108S18575C8__9S18575C18[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C108S18575C8__9S18575C18[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C108S18575C8__9S18575C18[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C108S18575C8__9S18575C18[3]),  3,3},
  {&(_tg__ZTV8S18575C9__9S18575C108S18575C8__9S18575C18[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C108S18575C8__9S18575C18[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C108S18575C8__9S18575C18[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C108S18575C8__9S18575C18[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C108S18575C8__9S18575C18[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A1__9S18575C108S18575C8__9S18575C18[5]),  5,8},
  {&(_tg__ZTV8S18575C7__A1__9S18575C108S18575C8__9S18575C18[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C108S18575C8__9S18575C18[6]),  6,8},
  {&(_tg__ZTV8S18575C4__8S18575C8__9S18575C18[3]),  3,4},
  {&(_tg__ZTV8S18575C3__8S18575C8__9S18575C18[7]),  7,8},
  {&(_tg__ZTV8S18575C5__8S18575C8__9S18575C18[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C8__9S18575C18[3]),  3,3},
  {&(_tg__ZTV8S18575C7__8S18575C8__9S18575C18[3]),  3,4},
  {&(_tg__ZTV9S18575C10__8S18575C8__9S18575C18[7]),  7,11},
  {&(_tg__ZTV8S18575C9__A1__8S18575C8__9S18575C18[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A2__8S18575C8__9S18575C18[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__A3__8S18575C8__9S18575C18[2]),  2,3},
  {&(_tg__ZTV9S18575C119S18575C10__8S18575C8__9S18575C18[6]),  6,8},
  {&(_tg__ZTV8S18575C3__9S18575C18[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C3__9S18575C18[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C3__9S18575C18[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C3__9S18575C18[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C3__9S18575C18[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C18[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__9S18575C18[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18575C18[];
extern  VTBL_ENTRY _ZTV9S18575C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C18[];
static VTBL_ENTRY alt_thunk_names31[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N8S18575C8D0Ev,_ZThn17648_N8S18575C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N8S18575C8D1Ev,_ZThn17648_N8S18575C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S18575C10D0Ev,_ZThn15028_N9S18575C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S18575C10D1Ev,_ZThn15028_N9S18575C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S18575C11D0Ev,_ZThn14736_N9S18575C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S18575C11D1Ev,_ZThn14736_N9S18575C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C18D0Ev,_ZTv0_n16_N9S18575C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60528_N9S18575C18D0Ev,_ZThn38364_N9S18575C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C18D1Ev,_ZTv0_n16_N9S18575C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60528_N9S18575C18D1Ev,_ZThn38364_N9S18575C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C18D0Ev,_ZTv0_n40_N9S18575C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32688_N9S18575C18D0Ev,_ZThn20716_N9S18575C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C18D1Ev,_ZTv0_n40_N9S18575C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32688_N9S18575C18D1Ev,_ZThn20716_N9S18575C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18575C18 = {  "S18575C18", // class name
  bases_S18575C18, 21,
  &(vtc_S18575C18[0]), // expected_vtbl_contents
  &(vtt_S18575C18[0]), // expected_vtt_contents
  ABISELECT(64656,40984), // object size
  NSPAIRA(_ZTI9S18575C18),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S18575C18),116, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18575C18),53, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names31,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C2  : virtual S18575C3 , S18575C8 , S18575C13 , virtual S18575C17 {
  ::S18575C18 s18575c2f0;
  int s18575c2f1;
  int s18575c2f2;
  int s18575c2f3;
  int s18575c2f4;
  int s18575c2f5;
  char s18575c2f6;
  int s18575c2f7;
  void *s18575c2f8;
  void *s18575c2f9;
  int s18575c2f10;
  ::S18575C6 s18575c2f11;
  ~S18575C2(); // tgen
  S18575C2(); // tgen
};
//SIG(-1 S18575C2) C1{ VBC2{ BC3{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC4{ v2 v3 v4 Fi[2] Fl[2] FC3[3]} VBC5{ VBC3 Fp FC3 FL:3} VBC6{ v5 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} FC6 Fs Fi[2]} BC7{ VBC3 VBC2 BC8{ BC6 BC4 BC3 vd v6 Fl FL Fp[8] FC2 Fp Fi FC2 Fi} BC9{ VBC8 VBC3 VBC5 BC2 BC10{ VBC6 VBC8 VBC3 VBC5 FL:44 Fp Fi FC2 Fl[2] Fi[3] FC8 Fc:7 FC11{ BC6 vd v10 FC5 Fi Fp Fi}} v7 FC8 FL Fc:7} v8 v9 FC10 Fs FL:8} BC12{ VBC4 BC7 BC13{ VBC5 FC10 FL:6 Fi Fl} VBC14{ VBC6 BC4 VBC9 Fc:8 Fi} VBC15{ BC3 VBC6 VBC14 BC2 BC11 vd v11 Fi FC2 Fi Fs FL:8 Fi} v12 FC14 FC7} VBC16{ BC2 BC10 vd v13 v14 Fi:13 Fl Fi Fp[2] FL FC4} FC17{ BC4 VBC7 BC3 vd Fi FU18{ m Fc:8 Fp Fs FD Fp Fp Fl[5]} Fi FC7 Fc[6] Fl Fi Fi:0} Fi Fi Fi Fi Fi Fc Fi Fp Fp Fi FC5}


S18575C2 ::~S18575C2(){ note_dtor("S18575C2", this);} // tgen
S18575C2 ::S18575C2(){ note_ctor("S18575C2", this);} // tgen

static void Test_S18575C2()
{
  extern Class_Descriptor cd_S18575C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12799,32469)];
    init_test(&cd_S18575C2, buf);
    S18575C2 *dp, &lv = *(dp=new (buf) S18575C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(204768,129872), "sizeof(S18575C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C2)");
    /*is_ambiguous_... S18575C2::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*), ABISELECT(177424,112500), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*), ABISELECT(177888,112792), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(177888,112792), "S18575C2");
    /*is_ambiguous_... S18575C13::S18575C5 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C13*), ABISELECT(177888,112792), "S18575C2");
    check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(177888,112792), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C10*), ABISELECT(177888,112792), "S18575C2");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C16*), ABISELECT(177888,112792), "S18575C2");
    check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C17*), ABISELECT(177888,112792), "S18575C2");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C8*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C10*)(S18575C8*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C8::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C8*)(S18575C13*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C10::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C10*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C10*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C17*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*), ABISELECT(178352,113100), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C10*)(S18575C8*), ABISELECT(178352,113100), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(178352,113100), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(178352,113100), "S18575C2");
    check_base_class_offset(lv, (S18575C6*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(178352,113100), "S18575C2");
    check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(178352,113100), "S18575C2");
    check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(178352,113100), "S18575C2");
    check_base_class_offset(lv, (S18575C6*)(S18575C14*)(S18575C13*), ABISELECT(178352,113100), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C10*), ABISELECT(178352,113100), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C10*), ABISELECT(178352,113100), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C10*), ABISELECT(178352,113100), "S18575C2");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C16*), ABISELECT(178352,113100), "S18575C2");
    check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C17*), ABISELECT(178352,113100), "S18575C2");
    check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C17*), ABISELECT(178352,113100), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(178672,113304), "S18575C2");
    check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C15::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C15*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C10*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C10*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C16::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C16*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C16*), ABISELECT(178672,113304), "S18575C2");
    check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C17*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C17*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C3*), ABISELECT(177424,112500), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C3*)(S18575C8*), ABISELECT(177424,112500), "S18575C2");
    /*is_ambiguous_... S18575C8::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C3*)(S18575C8*)(S18575C13*), ABISELECT(177424,112500), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C9*)(S18575C8*), 0, "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C9*)(S18575C8*), ABISELECT(296,184), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C9*)(S18575C8*), ABISELECT(760,492), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C8*), 0, "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C9*), ABISELECT(178976,113488), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(179272,113672), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(179736,113980), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C10*)(S18575C8*), ABISELECT(178976,113488), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(178976,113488), "S18575C2");
    check_base_class_offset(lv, (S18575C9*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(178976,113488), "S18575C2");
    check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(178976,113488), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C10*), ABISELECT(178976,113488), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C10*), ABISELECT(178976,113488), "S18575C2");
    check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C17*), ABISELECT(178976,113488), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(4128,2620), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(4128,2620), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(4592,2912), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C10*)(S18575C8*), ABISELECT(4128,2620), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C8*), 0, "S18575C2");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C9*)(S18575C8*)(S18575C13*), ABISELECT(26288,16660), "S18575C2");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C9*)(S18575C8*)(S18575C13*), ABISELECT(26584,16844), "S18575C2");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C9*)(S18575C8*)(S18575C13*), ABISELECT(27048,17152), "S18575C2");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C8*)(S18575C13*), ABISELECT(26288,16660), "S18575C2");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(30416,19280), "S18575C2");
    check_base_class_offset(lv, (S18575C3*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(30416,19280), "S18575C2");
    check_base_class_offset(lv, (S18575C11*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(30880,19572), "S18575C2");
    check_base_class_offset(lv, (S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(30416,19280), "S18575C2");
    check_base_class_offset(lv, (S18575C8*)(S18575C13*), ABISELECT(26288,16660), "S18575C2");
    check_base_class_offset(lv, (S18575C14*)(S18575C13*), ABISELECT(52576,33320), "S18575C2");
    /*is_ambiguous_... S18575C15::S18575C5 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C15*), ABISELECT(183096,116108), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C10*), ABISELECT(183568,116424), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C3*)(S18575C10*), ABISELECT(183568,116424), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C11*)(S18575C10*), ABISELECT(184032,116716), "S18575C2");
    check_base_class_offset(lv, (S18575C10*)(S18575C15*), ABISELECT(183568,116424), "S18575C2");
    check_base_class_offset(lv, (S18575C15*)(S18575C13*), ABISELECT(183096,116108), "S18575C2");
    check_base_class_offset(lv, (S18575C15*)(S18575C16*), ABISELECT(183096,116108), "S18575C2");
    /*is_ambiguous_... S18575C16::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C16*), ABISELECT(194576,123400), "S18575C2");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C16*), ABISELECT(194720,123496), "S18575C2");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C3*)(S18575C16*), ABISELECT(194720,123496), "S18575C2");
    check_base_class_offset(lv, (S18575C7*)(S18575C12*)(S18575C16*), ABISELECT(195184,123788), "S18575C2");
    check_base_class_offset(lv, (S18575C12*)(S18575C16*), ABISELECT(195184,123788), "S18575C2");
    check_base_class_offset(lv, (S18575C16*)(S18575C13*), ABISELECT(194576,123400), "S18575C2");
    check_base_class_offset(lv, (S18575C13*), ABISELECT(26288,16660), "S18575C2");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C17*), ABISELECT(197392,125192), "S18575C2");
    check_base_class_offset(lv, (S18575C3*)(S18575C17*), ABISELECT(197392,125192), "S18575C2");
    check_base_class_offset(lv, (S18575C11*)(S18575C17*), ABISELECT(197856,125484), "S18575C2");
    check_base_class_offset(lv, (S18575C17*), ABISELECT(197392,125192), "S18575C2");
    check_field_offset(lv, s18575c2f0, ABISELECT(112400,71272), "S18575C2.s18575c2f0");
    check_field_offset(lv, s18575c2f1, ABISELECT(177056,112256), "S18575C2.s18575c2f1");
    check_field_offset(lv, s18575c2f2, ABISELECT(177060,112260), "S18575C2.s18575c2f2");
    check_field_offset(lv, s18575c2f3, ABISELECT(177064,112264), "S18575C2.s18575c2f3");
    check_field_offset(lv, s18575c2f4, ABISELECT(177068,112268), "S18575C2.s18575c2f4");
    check_field_offset(lv, s18575c2f5, ABISELECT(177072,112272), "S18575C2.s18575c2f5");
    check_field_offset(lv, s18575c2f6, ABISELECT(177076,112276), "S18575C2.s18575c2f6");
    check_field_offset(lv, s18575c2f7, ABISELECT(177080,112280), "S18575C2.s18575c2f7");
    check_field_offset(lv, s18575c2f8, ABISELECT(177088,112284), "S18575C2.s18575c2f8");
    check_field_offset(lv, s18575c2f9, ABISELECT(177096,112288), "S18575C2.s18575c2f9");
    check_field_offset(lv, s18575c2f10, ABISELECT(177104,112292), "S18575C2.s18575c2f10");
    check_field_offset(lv, s18575c2f11, ABISELECT(177112,112296), "S18575C2.s18575c2f11");
    test_class_info(&lv, &cd_S18575C2);
    dp->~S18575C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C2(Test_S18575C2, "S18575C2", ABISELECT(204768,129872));

#else // __cplusplus

extern void _ZN8S18575C2C1Ev();
extern void _ZN8S18575C2D1Ev();
Name_Map name_map_S18575C2[] = {
  NSPAIR(_ZN8S18575C2C1Ev),
  NSPAIR(_ZN8S18575C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C10;
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
extern Class_Descriptor cd_S18575C8;
extern VTBL_ENTRY _ZTI8S18575C8[];
extern  VTBL_ENTRY _ZTV8S18575C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C8[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C10;
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
extern Class_Descriptor cd_S18575C8;
extern VTBL_ENTRY _ZTI8S18575C8[];
extern  VTBL_ENTRY _ZTV8S18575C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C8[];
extern Class_Descriptor cd_S18575C14;
extern VTBL_ENTRY _ZTI9S18575C14[];
extern  VTBL_ENTRY _ZTV9S18575C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C14[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C10;
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
extern Class_Descriptor cd_S18575C15;
extern VTBL_ENTRY _ZTI9S18575C15[];
extern  VTBL_ENTRY _ZTV9S18575C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C15[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C12;
extern VTBL_ENTRY _ZTI9S18575C12[];
extern  VTBL_ENTRY _ZTV9S18575C12[];
extern Class_Descriptor cd_S18575C16;
extern VTBL_ENTRY _ZTI9S18575C16[];
extern  VTBL_ENTRY _ZTV9S18575C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C16[];
extern Class_Descriptor cd_S18575C13;
extern VTBL_ENTRY _ZTI9S18575C13[];
extern  VTBL_ENTRY _ZTV9S18575C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C13[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C17;
extern VTBL_ENTRY _ZTI9S18575C17[];
extern  VTBL_ENTRY _ZTV9S18575C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C17[];
static Base_Class bases_S18575C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C4,    ABISELECT(177424,112500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(177888,112792), //bcp->offset
    102, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    88, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(178520,113208), //bcp->offset
    113, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    90, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18575C6,    ABISELECT(178352,113100), //bcp->offset
    110, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    89, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18575C7,    ABISELECT(178672,113304), //bcp->offset
    117, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    91, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18575C3,    ABISELECT(177424,112500), //bcp->offset
    94, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    87, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(296,184), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(760,492), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18575C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18575C7,    ABISELECT(178976,113488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(179272,113672), //bcp->offset
    134, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    94, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(179736,113980), //bcp->offset
    139, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    95, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18575C9,    ABISELECT(178976,113488), //bcp->offset
    121, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    93, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S18575C3,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S18575C11,    ABISELECT(4592,2912), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    96, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S18575C10,    ABISELECT(4128,2620), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    92, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18575C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C7,    ABISELECT(26288,16660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(26584,16844), //bcp->offset
    63, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(27048,17152), //bcp->offset
    68, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S18575C9,    ABISELECT(26288,16660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(30416,19280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S18575C3,    ABISELECT(30416,19280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S18575C11,    ABISELECT(30880,19572), //bcp->offset
    82, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    99, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S18575C10,    ABISELECT(30416,19280), //bcp->offset
    71, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    98, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S18575C8,    ABISELECT(26288,16660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S18575C14,    ABISELECT(52576,33320), //bcp->offset
    90, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    100, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(183096,116108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(183568,116424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S18575C3,    ABISELECT(183568,116424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S18575C11,    ABISELECT(184032,116716), //bcp->offset
    173, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    103, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S18575C10,    ABISELECT(183568,116424), //bcp->offset
    159, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    102, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    34, //immediately_derived
  0, 1},
  {&cd_S18575C15,    ABISELECT(183096,116108), //bcp->offset
    142, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    101, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(194576,123400), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(194720,123496), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S18575C3,    ABISELECT(194720,123496), //bcp->offset
    199, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    105, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S18575C7,    ABISELECT(195184,123788), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S18575C12,    ABISELECT(195184,123788), //bcp->offset
    206, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    106, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S18575C16,    ABISELECT(194576,123400), //bcp->offset
    181, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    104, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S18575C13,    ABISELECT(26288,16660), //bcp->offset
    45, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    97, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C4,    ABISELECT(197392,125192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S18575C3,    ABISELECT(197392,125192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    165, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S18575C11,    ABISELECT(197856,125484), //bcp->offset
    228, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    108, //bcp->index_in_construction_vtbl_array
    170, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S18575C17,    ABISELECT(197392,125192), //bcp->offset
    212, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    107, //bcp->index_in_construction_vtbl_array
    164, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18575C2[];
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C2D1Ev();
extern void _ZN8S18575C2D0Ev();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZThn4128_N8S18575C2D1Ev,_ZThn2620_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn4128_N8S18575C2D0Ev,_ZThn2620_N8S18575C2D0Ev)();
extern void ABISELECT(_ZThn4592_N8S18575C2D1Ev,_ZThn2912_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn4592_N8S18575C2D0Ev,_ZThn2912_N8S18575C2D0Ev)();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZThn26288_N8S18575C2D1Ev,_ZThn16660_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn26288_N8S18575C2D0Ev,_ZThn16660_N8S18575C2D0Ev)();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
extern void _ZN9S18575C133v14Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZThn30416_N8S18575C2D1Ev,_ZThn19280_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn30416_N8S18575C2D0Ev,_ZThn19280_N8S18575C2D0Ev)();
extern void ABISELECT(_ZThn30880_N8S18575C2D1Ev,_ZThn19572_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn30880_N8S18575C2D0Ev,_ZThn19572_N8S18575C2D0Ev)();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S18575C2D1Ev,_ZTv0_n16_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn178976_N8S18575C2D1Ev,_ZThn113488_N8S18575C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S18575C2D0Ev,_ZTv0_n16_N8S18575C2D0Ev)();
extern void ABISELECT(_ZThn178976_N8S18575C2D0Ev,_ZThn113488_N8S18575C2D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void ABISELECT(_ZTv0_n96_N8S18575C2D1Ev,_ZTv0_n48_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn183096_N8S18575C2D1Ev,_ZThn116108_N8S18575C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S18575C2D0Ev,_ZTv0_n48_N8S18575C2D0Ev)();
extern void ABISELECT(_ZThn183096_N8S18575C2D0Ev,_ZThn116108_N8S18575C2D0Ev)() __attribute__((weak));
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N8S18575C2D1Ev,_ZTv0_n40_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn183568_N8S18575C2D1Ev,_ZThn116424_N8S18575C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S18575C2D0Ev,_ZTv0_n40_N8S18575C2D0Ev)();
extern void ABISELECT(_ZThn183568_N8S18575C2D0Ev,_ZThn116424_N8S18575C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S18575C2D1Ev,_ZTvn292_n40_N8S18575C2D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S18575C2D0Ev,_ZTvn292_n40_N8S18575C2D0Ev)();
extern void _ZN8S18575C42v3Ev();
extern void ABISELECT(_ZTv0_n88_N8S18575C2D1Ev,_ZTv0_n44_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn194576_N8S18575C2D1Ev,_ZThn123400_N8S18575C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S18575C2D0Ev,_ZTv0_n44_N8S18575C2D0Ev)();
extern void ABISELECT(_ZThn194576_N8S18575C2D0Ev,_ZThn123400_N8S18575C2D0Ev)() __attribute__((weak));
extern void _ZN9S18575C163v13Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTvn608_n88_N8S18575C2D1Ev,_ZTvn388_n44_N8S18575C2D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N8S18575C2D0Ev,_ZTvn388_n44_N8S18575C2D0Ev)();
extern void _ZN9S18575C123v12Ev();
extern void _ZN8S18575C42v3Ev();
extern void ABISELECT(_ZTv0_n72_N8S18575C2D1Ev,_ZTv0_n36_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn197392_N8S18575C2D1Ev,_ZThn125192_N8S18575C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S18575C2D0Ev,_ZTv0_n36_N8S18575C2D0Ev)();
extern void ABISELECT(_ZThn197392_N8S18575C2D0Ev,_ZThn125192_N8S18575C2D0Ev)() __attribute__((weak));
extern void _ZN9S18575C173v15Ev();
extern void _ZN9S18575C173v16Ev();
extern void ABISELECT(_ZTvn464_n72_N8S18575C2D1Ev,_ZTvn292_n36_N8S18575C2D1Ev)();
extern void ABISELECT(_ZTvn464_n72_N8S18575C2D0Ev,_ZTvn292_n36_N8S18575C2D0Ev)();
static  VTBL_ENTRY vtc_S18575C2[] = {
  ABISELECT(197392,125192),
  ABISELECT(194576,123400),
  ABISELECT(183568,116424),
  ABISELECT(183096,116108),
  ABISELECT(178976,113488),
  ABISELECT(178672,113304),
  ABISELECT(178352,113100),
  ABISELECT(177888,112792),
  ABISELECT(177424,112500),
  ABISELECT(178520,113208),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18575C2D1Ev,
  (VTBL_ENTRY)&_ZN8S18575C2D0Ev,
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(174848,110868),
  ABISELECT(174544,110684),
  ABISELECT(174392,110588),
  ABISELECT(174224,110480),
  ABISELECT(173760,110172),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C2D1Ev,_ZThn2620_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C2D0Ev,_ZThn2620_N8S18575C2D0Ev),
  ABISELECT(173760,110188),
  ABISELECT(173928,110296),
  ABISELECT(174384,110576),
  ABISELECT(174080,110392),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C2D1Ev,_ZThn2912_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C2D0Ev,_ZThn2912_N8S18575C2D0Ev),
  ABISELECT(168288,106740),
  ABISELECT(157280,99764),
  ABISELECT(156808,99448),
  ABISELECT(152688,96828),
  ABISELECT(152384,96644),
  ABISELECT(152064,96440),
  ABISELECT(151600,96132),
  ABISELECT(151136,95840),
  ABISELECT(152232,96548),
  ABISELECT(-26288,-16660),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn26288_N8S18575C2D1Ev,_ZThn16660_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn26288_N8S18575C2D0Ev,_ZThn16660_N8S18575C2D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
  (VTBL_ENTRY)&_ZN9S18575C133v14Ev,
  ABISELECT(-26584,-16844),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-27048,-17152),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(148560,94208),
  ABISELECT(148256,94024),
  ABISELECT(148104,93928),
  ABISELECT(147936,93820),
  ABISELECT(147472,93512),
  ABISELECT(-30416,-19280),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn30416_N8S18575C2D1Ev,_ZThn19280_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn30416_N8S18575C2D0Ev,_ZThn19280_N8S18575C2D0Ev),
  ABISELECT(147472,93528),
  ABISELECT(147640,93636),
  ABISELECT(148096,93916),
  ABISELECT(147792,93732),
  ABISELECT(-30880,-19572),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn30880_N8S18575C2D1Ev,_ZThn19572_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn30880_N8S18575C2D0Ev,_ZThn19572_N8S18575C2D0Ev),
  ABISELECT(125944,79888),
  ABISELECT(125776,79780),
  ABISELECT(-52576,-33320),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  0,
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-177424,-112500),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  0,
  0,
  ABISELECT(-177888,-112792),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(168,108),
  ABISELECT(-178352,-113100),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  0,
  ABISELECT(-178520,-113208),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(-178672,-113304),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-178976,-113488),
  0,
  ABISELECT(-178976,-113488),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C2D1Ev,_ZTv0_n16_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C2D0Ev,_ZTv0_n16_N8S18575C2D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-179272,-113672),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-179736,-113980),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-183096,-116108),
  0,
  0,
  0,
  ABISELECT(-5208,-3316),
  ABISELECT(-4744,-3008),
  ABISELECT(-4576,-2900),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  ABISELECT(-183096,-116108),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S18575C2D1Ev,_ZTv0_n48_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S18575C2D0Ev,_ZTv0_n48_N8S18575C2D0Ev),
  ABISELECT(-183568,-116424),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5048,-3216),
  ABISELECT(-5216,-3324),
  ABISELECT(-5680,-3632),
  ABISELECT(-183568,-116424),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S18575C2D1Ev,_ZTv0_n40_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S18575C2D0Ev,_ZTv0_n40_N8S18575C2D0Ev),
  ABISELECT(-5680,-3616),
  ABISELECT(-5512,-3508),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-184032,-116716),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S18575C2D1Ev,_ZTvn292_n40_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S18575C2D0Ev,_ZTvn292_n40_N8S18575C2D0Ev),
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-194576,-123400),
  0,
  ABISELECT(-16688,-10608),
  ABISELECT(-16224,-10300),
  ABISELECT(-16056,-10192),
  ABISELECT(-15600,-9912),
  ABISELECT(-11008,-6976),
  ABISELECT(-11480,-7292),
  ABISELECT(-15904,-10096),
  ABISELECT(-194576,-123400),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S18575C2D1Ev,_ZTv0_n44_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S18575C2D0Ev,_ZTv0_n44_N8S18575C2D0Ev),
  (VTBL_ENTRY)&_ZN9S18575C163v13Ev,
  ABISELECT(-16048,-10192),
  ABISELECT(-16200,-10288),
  ABISELECT(-16368,-10396),
  ABISELECT(-16832,-10704),
  ABISELECT(-194720,-123496),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-195184,-123788),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S18575C2D1Ev,_ZTvn388_n44_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S18575C2D0Ev,_ZTvn388_n44_N8S18575C2D0Ev),
  (VTBL_ENTRY)&_ZN9S18575C123v12Ev,
  0,
  0,
  ABISELECT(-197392,-125192),
  0,
  ABISELECT(-18416,-11704),
  ABISELECT(-18720,-11888),
  ABISELECT(-18872,-11984),
  ABISELECT(-19040,-12092),
  ABISELECT(-19504,-12400),
  ABISELECT(-197392,-125192),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S18575C2D1Ev,_ZTv0_n36_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S18575C2D0Ev,_ZTv0_n36_N8S18575C2D0Ev),
  (VTBL_ENTRY)&_ZN9S18575C173v15Ev,
  (VTBL_ENTRY)&_ZN9S18575C173v16Ev,
  ABISELECT(-19504,-12384),
  ABISELECT(-19336,-12276),
  ABISELECT(-18880,-11996),
  ABISELECT(-19184,-12180),
  ABISELECT(-197856,-125484),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n72_N8S18575C2D1Ev,_ZTvn292_n36_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n72_N8S18575C2D0Ev,_ZTvn292_n36_N8S18575C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S18575C2[];
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C8D1Ev();
extern void _ZN8S18575C8D0Ev();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C8__8S18575C2[] = {
  ABISELECT(178976,113488),
  ABISELECT(178672,113304),
  ABISELECT(178352,113100),
  ABISELECT(177888,112792),
  ABISELECT(177424,112500),
  ABISELECT(178520,113208),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D1Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D0Ev,
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(174848,110868),
  ABISELECT(174544,110684),
  ABISELECT(174392,110588),
  ABISELECT(174224,110480),
  ABISELECT(173760,110172),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C108S18575C8__A1__8S18575C2[] = {
  ABISELECT(174544,110684),
  ABISELECT(174392,110588),
  ABISELECT(174224,110480),
  ABISELECT(173760,110172),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C108S18575C8__A1__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(-173760,-110172),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C108S18575C8__A1__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-174224,-110480),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C108S18575C8__A1__8S18575C2[] = {
  0,
  ABISELECT(-174392,-110588),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C108S18575C8__A1__8S18575C2[] = {
  0,
  ABISELECT(-174544,-110684),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(173760,110188),
  ABISELECT(173928,110296),
  ABISELECT(174384,110576),
  ABISELECT(174080,110392),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C108S18575C8__8S18575C2[] = {
  0,
  ABISELECT(-174080,-110392),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn174384_N9S18575C11D1Ev,_ZThn110576_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn174384_N9S18575C11D0Ev,_ZThn110576_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-174384,-110576),
  0,
  ABISELECT(-174384,-110576),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(-174680,-110760),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(-175144,-111068),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C108S18575C8__8S18575C2[] = {
  0,
  ABISELECT(-173928,-110296),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-173760,-110188),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn174848_N9S18575C10D1Ev,_ZThn110868_N9S18575C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void ABISELECT(_ZThn174848_N9S18575C10D0Ev,_ZThn110868_N9S18575C10D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-174848,-110868),
  0,
  ABISELECT(-174848,-110868),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(-175144,-111052),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(-175608,-111360),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C108S18575C8__8S18575C2[] = {
  0,
  ABISELECT(-174392,-110588),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-174224,-110480),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A1__9S18575C108S18575C8__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(-173760,-110172),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__A1__9S18575C108S18575C8__8S18575C2[] = {
  0,
  ABISELECT(-174544,-110684),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(173760,110188),
  ABISELECT(173928,110296),
  ABISELECT(174384,110576),
  ABISELECT(174080,110392),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C8__8S18575C2[] = {
  0,
  ABISELECT(-178520,-113208),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__8S18575C8__8S18575C2[] = {
  0,
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-177424,-112500),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C8__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(-177888,-112792),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C8__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-178352,-113100),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C8__8S18575C2[] = {
  0,
  ABISELECT(-178672,-113304),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C10__8S18575C8__8S18575C2[] = {
  ABISELECT(174848,110868),
  ABISELECT(174544,110684),
  ABISELECT(174392,110588),
  ABISELECT(174224,110480),
  ABISELECT(173760,110172),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn178976_N8S18575C8D1Ev,_ZThn113488_N8S18575C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev)();
extern void ABISELECT(_ZThn178976_N8S18575C8D0Ev,_ZThn113488_N8S18575C8D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__A1__8S18575C8__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-178976,-113488),
  0,
  ABISELECT(-178976,-113488),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A2__8S18575C8__8S18575C2[] = {
  ABISELECT(-179272,-113672),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__A3__8S18575C8__8S18575C2[] = {
  ABISELECT(-179736,-113980),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__8S18575C8__8S18575C2[] = {
  ABISELECT(173760,110188),
  ABISELECT(173928,110296),
  ABISELECT(174384,110576),
  ABISELECT(174080,110392),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void _ZN9S18575C13D1Ev();
extern void _ZN9S18575C13D0Ev();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
extern void _ZN9S18575C133v14Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C13__8S18575C2[] = {
  ABISELECT(168288,106740),
  ABISELECT(157280,99764),
  ABISELECT(156808,99448),
  ABISELECT(152688,96828),
  ABISELECT(152384,96644),
  ABISELECT(152064,96440),
  ABISELECT(151600,96132),
  ABISELECT(151136,95840),
  ABISELECT(152232,96548),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN9S18575C13D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C13D0Ev,
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
  (VTBL_ENTRY)&_ZN9S18575C133v14Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C8D1Ev();
extern void _ZN8S18575C8D0Ev();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(152688,96828),
  ABISELECT(152384,96644),
  ABISELECT(152064,96440),
  ABISELECT(151600,96132),
  ABISELECT(151136,95840),
  ABISELECT(152232,96548),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D1Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D0Ev,
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(148560,94208),
  ABISELECT(148256,94024),
  ABISELECT(148104,93928),
  ABISELECT(147936,93820),
  ABISELECT(147472,93512),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[] = {
  ABISELECT(148256,94024),
  ABISELECT(148104,93928),
  ABISELECT(147936,93820),
  ABISELECT(147472,93512),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(-147472,-93512),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-147936,-93820),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[] = {
  0,
  ABISELECT(-148104,-93928),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[] = {
  0,
  ABISELECT(-148256,-94024),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(147472,93528),
  ABISELECT(147640,93636),
  ABISELECT(148096,93916),
  ABISELECT(147792,93732),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  0,
  ABISELECT(-147792,-93732),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn148096_N9S18575C11D1Ev,_ZThn93916_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn148096_N9S18575C11D0Ev,_ZThn93916_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-148096,-93916),
  0,
  ABISELECT(-148096,-93916),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(-148392,-94100),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(-148856,-94408),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  0,
  ABISELECT(-147640,-93636),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-147472,-93528),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn148560_N9S18575C10D1Ev,_ZThn94208_N9S18575C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void ABISELECT(_ZThn148560_N9S18575C10D0Ev,_ZThn94208_N9S18575C10D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-148560,-94208),
  0,
  ABISELECT(-148560,-94208),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(-148856,-94392),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(-149320,-94700),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  0,
  ABISELECT(-148104,-93928),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-147936,-93820),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A1__9S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(-147472,-93512),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__A1__9S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  0,
  ABISELECT(-148256,-94024),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(147472,93528),
  ABISELECT(147640,93636),
  ABISELECT(148096,93916),
  ABISELECT(147792,93732),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C89S18575C13__A1__8S18575C2[] = {
  0,
  ABISELECT(-152232,-96548),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__8S18575C89S18575C13__A1__8S18575C2[] = {
  0,
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-151136,-95840),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C89S18575C13__A1__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(-151600,-96132),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-152064,-96440),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C89S18575C13__A1__8S18575C2[] = {
  0,
  ABISELECT(-152384,-96644),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C10__8S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(148560,94208),
  ABISELECT(148256,94024),
  ABISELECT(148104,93928),
  ABISELECT(147936,93820),
  ABISELECT(147472,93512),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn152688_N8S18575C8D1Ev,_ZThn96828_N8S18575C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev)();
extern void ABISELECT(_ZThn152688_N8S18575C8D0Ev,_ZThn96828_N8S18575C8D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__A1__8S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-152688,-96828),
  0,
  ABISELECT(-152688,-96828),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A2__8S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(-152984,-97012),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__A3__8S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(-153448,-97320),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__8S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(147472,93528),
  ABISELECT(147640,93636),
  ABISELECT(148096,93916),
  ABISELECT(147792,93732),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S18575C149S18575C13__8S18575C2[] = {
  ABISELECT(125944,79888),
  ABISELECT(125776,79780),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C149S18575C13__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-125776,-79780),
  (VTBL_ENTRY)&(_ZTI9S18575C14[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__9S18575C149S18575C13__8S18575C2[] = {
  0,
  ABISELECT(-125944,-79888),
  (VTBL_ENTRY)&(_ZTI9S18575C14[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__9S18575C13__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(-151600,-96132),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__9S18575C13__8S18575C2[] = {
  0,
  ABISELECT(-152232,-96548),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__9S18575C13__8S18575C2[] = {
  0,
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-151136,-95840),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C13__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-152064,-96440),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C13__8S18575C2[] = {
  0,
  ABISELECT(-152384,-96644),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZThn4128_N9S18575C13D1Ev,_ZThn2620_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn4128_N9S18575C13D0Ev,_ZThn2620_N9S18575C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C108S18575C8__9S18575C13__8S18575C2[] = {
  ABISELECT(148560,94208),
  ABISELECT(148256,94024),
  ABISELECT(148104,93928),
  ABISELECT(147936,93820),
  ABISELECT(147472,93512),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S18575C13D1Ev,_ZThn2620_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S18575C13D0Ev,_ZThn2620_N9S18575C13D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C13D1Ev,_ZTv0_n16_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn152688_N9S18575C13D1Ev,_ZThn96828_N9S18575C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C13D0Ev,_ZTv0_n16_N9S18575C13D0Ev)();
extern void ABISELECT(_ZThn152688_N9S18575C13D0Ev,_ZThn96828_N9S18575C13D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__A1__9S18575C13__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-152688,-96828),
  0,
  ABISELECT(-152688,-96828),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C13D1Ev,_ZTv0_n16_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C13D0Ev,_ZTv0_n16_N9S18575C13D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A2__9S18575C13__8S18575C2[] = {
  ABISELECT(-152984,-97012),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__A3__9S18575C13__8S18575C2[] = {
  ABISELECT(-153448,-97320),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void ABISELECT(_ZThn4592_N9S18575C13D1Ev,_ZThn2912_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn4592_N9S18575C13D0Ev,_ZThn2912_N9S18575C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C108S18575C8__9S18575C13__8S18575C2[] = {
  ABISELECT(147472,93528),
  ABISELECT(147640,93636),
  ABISELECT(148096,93916),
  ABISELECT(147792,93732),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S18575C13D1Ev,_ZThn2912_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S18575C13D0Ev,_ZThn2912_N9S18575C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S18575C14__9S18575C13__8S18575C2[] = {
  ABISELECT(125944,79888),
  ABISELECT(125776,79780),
  ABISELECT(-26288,-16660),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S18575C13D1Ev,_ZTv0_n48_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn156808_N9S18575C13D1Ev,_ZThn99448_N9S18575C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S18575C13D0Ev,_ZTv0_n48_N9S18575C13D0Ev)();
extern void ABISELECT(_ZThn156808_N9S18575C13D0Ev,_ZThn99448_N9S18575C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S18575C15__9S18575C13__8S18575C2[] = {
  ABISELECT(-156808,-99448),
  0,
  0,
  0,
  ABISELECT(-5208,-3316),
  ABISELECT(-4744,-3008),
  ABISELECT(-4576,-2900),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  ABISELECT(-156808,-99448),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C13D1Ev,_ZTv0_n48_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C13D0Ev,_ZTv0_n48_N9S18575C13D0Ev),
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C13D1Ev,_ZTv0_n40_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn157280_N9S18575C13D1Ev,_ZThn99764_N9S18575C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18575C13D0Ev,_ZTv0_n40_N9S18575C13D0Ev)();
extern void ABISELECT(_ZThn157280_N9S18575C13D0Ev,_ZThn99764_N9S18575C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S18575C10__A1__9S18575C13__8S18575C2[] = {
  ABISELECT(-157280,-99764),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5048,-3216),
  ABISELECT(-5216,-3324),
  ABISELECT(-5680,-3632),
  ABISELECT(-157280,-99764),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C13D1Ev,_ZTv0_n40_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C13D0Ev,_ZTv0_n40_N9S18575C13D0Ev),
};
extern void ABISELECT(_ZTvn464_n80_N9S18575C13D1Ev,_ZTvn292_n40_N9S18575C13D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18575C13D0Ev,_ZTvn292_n40_N9S18575C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__A1__9S18575C13__8S18575C2[] = {
  ABISELECT(-5680,-3616),
  ABISELECT(-5512,-3508),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-157744,-100056),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C13D1Ev,_ZTvn292_n40_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C13D0Ev,_ZTvn292_n40_N9S18575C13D0Ev),
};
extern void _ZN8S18575C42v3Ev();
extern void ABISELECT(_ZTv0_n88_N9S18575C13D1Ev,_ZTv0_n44_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn168288_N9S18575C13D1Ev,_ZThn106740_N9S18575C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S18575C13D0Ev,_ZTv0_n44_N9S18575C13D0Ev)();
extern void ABISELECT(_ZThn168288_N9S18575C13D0Ev,_ZThn106740_N9S18575C13D0Ev)() __attribute__((weak));
extern void _ZN9S18575C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C16__9S18575C13__8S18575C2[] = {
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-168288,-106740),
  0,
  ABISELECT(-16688,-10608),
  ABISELECT(-16224,-10300),
  ABISELECT(-16056,-10192),
  ABISELECT(-15600,-9912),
  ABISELECT(-11008,-6976),
  ABISELECT(-11480,-7292),
  ABISELECT(-15904,-10096),
  ABISELECT(-168288,-106740),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S18575C13D1Ev,_ZTv0_n44_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S18575C13D0Ev,_ZTv0_n44_N9S18575C13D0Ev),
  (VTBL_ENTRY)&_ZN9S18575C163v13Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C16__A3__9S18575C13__8S18575C2[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-16200,-10288),
  ABISELECT(-16368,-10396),
  ABISELECT(-16832,-10704),
  ABISELECT(-168432,-106836),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTvn608_n88_N9S18575C13D1Ev,_ZTvn388_n44_N9S18575C13D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N9S18575C13D0Ev,_ZTvn388_n44_N9S18575C13D0Ev)();
extern void _ZN9S18575C123v12Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C129S18575C16__9S18575C13__8S18575C2[] = {
  ABISELECT(-168896,-107128),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N9S18575C13D1Ev,_ZTvn388_n44_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N9S18575C13D0Ev,_ZTvn388_n44_N9S18575C13D0Ev),
  (VTBL_ENTRY)&_ZN9S18575C123v12Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__8S18575C2[] = {
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C3__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C3__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C3__8S18575C2[] = {
  0,
  ABISELECT(-1096,-708),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C3__8S18575C2[] = {
  0,
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C2[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__8S18575C2[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN9S18575C15D1Ev();
extern void _ZN9S18575C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C15__8S18575C2[] = {
  ABISELECT(-5208,-3316),
  ABISELECT(-4744,-3008),
  ABISELECT(-4576,-2900),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&_ZN9S18575C15D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C15D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C15__8S18575C2[] = {
  0,
  ABISELECT(4424,2804),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S18575C15D1Ev,_ZThn316_N9S18575C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S18575C15D0Ev,_ZThn316_N9S18575C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S18575C10__9S18575C15__8S18575C2[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5048,-3216),
  ABISELECT(-5216,-3324),
  ABISELECT(-5680,-3632),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C15__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4120,2620),
  0,
  ABISELECT(4120,2620),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A1__9S18575C15__8S18575C2[] = {
  ABISELECT(3824,2436),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C15__8S18575C2[] = {
  ABISELECT(3360,2128),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C15__8S18575C2[] = {
  0,
  ABISELECT(4576,2900),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C15__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(4744,3008),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A2__9S18575C15__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(5208,3316),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S18575C15D1Ev,_ZTvn292_n40_N9S18575C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18575C15D0Ev,_ZTvn292_n40_N9S18575C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__9S18575C15__8S18575C2[] = {
  ABISELECT(-5680,-3616),
  ABISELECT(-5512,-3508),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C15D1Ev,_ZTvn292_n40_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C15D0Ev,_ZTvn292_n40_N9S18575C15D0Ev),
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C10__A2__8S18575C2[] = {
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5048,-3216),
  ABISELECT(-5216,-3324),
  ABISELECT(-5680,-3632),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C10__A3__8S18575C2[] = {
  ABISELECT(-4896,-3120),
  ABISELECT(-5048,-3216),
  ABISELECT(-5216,-3324),
  ABISELECT(-5680,-3632),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C10__A3__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(5680,3632),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C10__A3__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(5216,3324),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C10__A3__8S18575C2[] = {
  0,
  ABISELECT(5048,3216),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C10__A3__8S18575C2[] = {
  0,
  ABISELECT(4896,3120),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__A2__8S18575C2[] = {
  ABISELECT(-5680,-3616),
  ABISELECT(-5512,-3508),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C10__A2__8S18575C2[] = {
  0,
  ABISELECT(5360,3412),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C10__A2__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(5056,3228),
  0,
  ABISELECT(5056,3228),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__A2__8S18575C2[] = {
  ABISELECT(4760,3044),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__A2__8S18575C2[] = {
  ABISELECT(4296,2736),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C10__A2__8S18575C2[] = {
  0,
  ABISELECT(5512,3508),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C10__A2__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(5680,3616),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C10__A2__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4592,2936),
  0,
  ABISELECT(4592,2936),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C10__A2__8S18575C2[] = {
  ABISELECT(4296,2752),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C10__A2__8S18575C2[] = {
  ABISELECT(3832,2444),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C10__A2__8S18575C2[] = {
  0,
  ABISELECT(5048,3216),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C10__A2__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(5216,3324),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A1__9S18575C10__A2__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(5680,3632),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__A1__9S18575C10__A2__8S18575C2[] = {
  0,
  ABISELECT(4896,3120),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C10__A2__8S18575C2[] = {
  ABISELECT(-5680,-3616),
  ABISELECT(-5512,-3508),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C16D1Ev();
extern void _ZN9S18575C16D0Ev();
extern void _ZN9S18575C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C16__8S18575C2[] = {
  ABISELECT(-16688,-10608),
  ABISELECT(-16224,-10300),
  ABISELECT(-16056,-10192),
  ABISELECT(-15600,-9912),
  ABISELECT(-11008,-6976),
  ABISELECT(-11480,-7292),
  ABISELECT(-15904,-10096),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C16D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C16D0Ev,
  (VTBL_ENTRY)&_ZN9S18575C163v13Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C16__A4__8S18575C2[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-16200,-10288),
  ABISELECT(-16368,-10396),
  ABISELECT(-16832,-10704),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C16__A4__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(16832,10704),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C16__A4__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(16368,10396),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C16__A4__8S18575C2[] = {
  0,
  ABISELECT(16200,10288),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C16__A4__8S18575C2[] = {
  0,
  ABISELECT(16048,10192),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C16__8S18575C2[] = {
  0,
  ABISELECT(15904,10096),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S18575C16D1Ev,_ZTv0_n48_N9S18575C16D1Ev)();
extern void ABISELECT(_ZTv0_n96_N9S18575C16D0Ev,_ZTv0_n48_N9S18575C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C15__9S18575C16__8S18575C2[] = {
  ABISELECT(11480,7292),
  0,
  0,
  0,
  ABISELECT(-5208,-3316),
  ABISELECT(-4744,-3008),
  ABISELECT(-4576,-2900),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  ABISELECT(11480,7292),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C16D1Ev,_ZTv0_n48_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C16D0Ev,_ZTv0_n48_N9S18575C16D0Ev),
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C16D1Ev,_ZTv0_n40_N9S18575C16D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S18575C16D0Ev,_ZTv0_n40_N9S18575C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C10__9S18575C16__8S18575C2[] = {
  ABISELECT(11008,6976),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5048,-3216),
  ABISELECT(-5216,-3324),
  ABISELECT(-5680,-3632),
  ABISELECT(11008,6976),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C16D1Ev,_ZTv0_n40_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C16D0Ev,_ZTv0_n40_N9S18575C16D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C16D1Ev,_ZTv0_n16_N9S18575C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C16D0Ev,_ZTv0_n16_N9S18575C16D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C16__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(15600,9912),
  0,
  ABISELECT(15600,9912),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C16D1Ev,_ZTv0_n16_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C16D0Ev,_ZTv0_n16_N9S18575C16D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A1__9S18575C16__8S18575C2[] = {
  ABISELECT(15304,9728),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__A1__9S18575C16__8S18575C2[] = {
  ABISELECT(14840,9420),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A2__9S18575C16__8S18575C2[] = {
  0,
  ABISELECT(16056,10192),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C16__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(16224,10300),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A2__9S18575C16__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(16688,10608),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S18575C16D1Ev,_ZTvn292_n40_N9S18575C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18575C16D0Ev,_ZTvn292_n40_N9S18575C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__9S18575C16__8S18575C2[] = {
  ABISELECT(-5680,-3616),
  ABISELECT(-5512,-3508),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(10544,6684),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C16D1Ev,_ZTvn292_n40_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C16D0Ev,_ZTvn292_n40_N9S18575C16D0Ev),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__A1__9S18575C16__8S18575C2[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-16200,-10288),
  ABISELECT(-16368,-10396),
  ABISELECT(-16832,-10704),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C17D1Ev();
extern void _ZN9S18575C17D0Ev();
extern void _ZN9S18575C173v15Ev();
extern void _ZN9S18575C173v16Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C17__8S18575C2[] = {
  ABISELECT(-18416,-11704),
  ABISELECT(-18720,-11888),
  ABISELECT(-18872,-11984),
  ABISELECT(-19040,-12092),
  ABISELECT(-19504,-12400),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C17D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C17D0Ev,
  (VTBL_ENTRY)&_ZN9S18575C173v15Ev,
  (VTBL_ENTRY)&_ZN9S18575C173v16Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C17__A5__8S18575C2[] = {
  ABISELECT(-18720,-11888),
  ABISELECT(-18872,-11984),
  ABISELECT(-19040,-12092),
  ABISELECT(-19504,-12400),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C17__A5__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(19504,12400),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C17__A5__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(19040,12092),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C17__A5__8S18575C2[] = {
  0,
  ABISELECT(18872,11984),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C17__A5__8S18575C2[] = {
  0,
  ABISELECT(18720,11888),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C17__A3__8S18575C2[] = {
  ABISELECT(-19504,-12384),
  ABISELECT(-19336,-12276),
  ABISELECT(-18880,-11996),
  ABISELECT(-19184,-12180),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C17__A3__8S18575C2[] = {
  0,
  ABISELECT(19184,12180),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C17__A3__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(18880,11996),
  0,
  ABISELECT(18880,11996),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C17__A3__8S18575C2[] = {
  ABISELECT(18584,11812),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C17__A3__8S18575C2[] = {
  ABISELECT(18120,11504),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C17__A3__8S18575C2[] = {
  0,
  ABISELECT(19336,12276),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C17__A3__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(19504,12384),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__9S18575C17__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(19504,12400),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C17__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(19040,12092),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C17__8S18575C2[] = {
  0,
  ABISELECT(18872,11984),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C17__8S18575C2[] = {
  0,
  ABISELECT(18720,11888),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C17D1Ev,_ZThn292_N9S18575C17D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C17D0Ev,_ZThn292_N9S18575C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C17__8S18575C2[] = {
  ABISELECT(-19504,-12384),
  ABISELECT(-19336,-12276),
  ABISELECT(-18880,-11996),
  ABISELECT(-19184,-12180),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C17D1Ev,_ZThn292_N9S18575C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C17D0Ev,_ZThn292_N9S18575C17D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C17D1Ev,_ZTv0_n16_N9S18575C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C17D0Ev,_ZTv0_n16_N9S18575C17D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C17__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(18416,11704),
  0,
  ABISELECT(18416,11704),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C17D1Ev,_ZTv0_n16_N9S18575C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C17D0Ev,_ZTv0_n16_N9S18575C17D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A1__9S18575C17__8S18575C2[] = {
  ABISELECT(18120,11520),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__A2__9S18575C17__8S18575C2[] = {
  ABISELECT(17656,11212),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C2[] = {
  {&(_ZTV8S18575C2[12]),  12,236},
  {&(_tg__ZTV8S18575C8__8S18575C2[8]),  8,14},
  {&(_tg__ZTV9S18575C108S18575C8__8S18575C2[7]),  7,11},
  {&(_tg__ZTV8S18575C39S18575C108S18575C8__A1__8S18575C2[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C108S18575C8__A1__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C108S18575C8__A1__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C108S18575C8__A1__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C108S18575C8__A1__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C108S18575C8__8S18575C2[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C108S18575C8__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C108S18575C8__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C108S18575C8__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C108S18575C8__8S18575C2[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C108S18575C8__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C108S18575C8__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C9__9S18575C108S18575C8__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C108S18575C8__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C108S18575C8__8S18575C2[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C108S18575C8__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C108S18575C8__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A1__9S18575C108S18575C8__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C7__A1__9S18575C108S18575C8__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C108S18575C8__8S18575C2[6]),  6,8},
  {&(_tg__ZTV8S18575C4__8S18575C8__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C3__8S18575C8__8S18575C2[7]),  7,8},
  {&(_tg__ZTV8S18575C5__8S18575C8__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C8__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C7__8S18575C8__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C10__8S18575C8__8S18575C2[7]),  7,11},
  {&(_tg__ZTV8S18575C9__A1__8S18575C8__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A2__8S18575C8__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__A3__8S18575C8__8S18575C2[2]),  2,3},
  {&(_tg__ZTV9S18575C119S18575C10__8S18575C8__8S18575C2[6]),  6,8},
  {&(_tg__ZTV9S18575C13__8S18575C2[11]),  11,18},
  {&(_tg__ZTV8S18575C89S18575C13__A1__8S18575C2[8]),  8,14},
  {&(_tg__ZTV9S18575C108S18575C89S18575C13__A1__8S18575C2[7]),  7,11},
  {&(_tg__ZTV8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C9__9S18575C108S18575C89S18575C13__A1__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C108S18575C89S18575C13__A1__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C108S18575C89S18575C13__A1__8S18575C2[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C108S18575C89S18575C13__A1__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C108S18575C89S18575C13__A1__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A1__9S18575C108S18575C89S18575C13__A1__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C7__A1__9S18575C108S18575C89S18575C13__A1__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C108S18575C89S18575C13__A1__8S18575C2[6]),  6,8},
  {&(_tg__ZTV8S18575C4__8S18575C89S18575C13__A1__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C3__8S18575C89S18575C13__A1__8S18575C2[7]),  7,8},
  {&(_tg__ZTV8S18575C5__8S18575C89S18575C13__A1__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C89S18575C13__A1__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C7__8S18575C89S18575C13__A1__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C10__8S18575C89S18575C13__A1__8S18575C2[7]),  7,11},
  {&(_tg__ZTV8S18575C9__A1__8S18575C89S18575C13__A1__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A2__8S18575C89S18575C13__A1__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__A3__8S18575C89S18575C13__A1__8S18575C2[2]),  2,3},
  {&(_tg__ZTV9S18575C119S18575C10__8S18575C89S18575C13__A1__8S18575C2[6]),  6,8},
  {&(_tg__ZTV9S18575C149S18575C13__8S18575C2[4]),  4,4},
  {&(_tg__ZTV8S18575C6__9S18575C149S18575C13__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C4__9S18575C149S18575C13__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C5__9S18575C13__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C4__9S18575C13__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C3__9S18575C13__8S18575C2[7]),  7,8},
  {&(_tg__ZTV8S18575C6__9S18575C13__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C7__9S18575C13__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C108S18575C8__9S18575C13__8S18575C2[7]),  7,11},
  {&(_tg__ZTV8S18575C9__A1__9S18575C13__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A2__9S18575C13__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__A3__9S18575C13__8S18575C2[2]),  2,3},
  {&(_tg__ZTV9S18575C119S18575C108S18575C8__9S18575C13__8S18575C2[6]),  6,8},
  {&(_tg__ZTV9S18575C14__9S18575C13__8S18575C2[4]),  4,4},
  {&(_tg__ZTV9S18575C15__9S18575C13__8S18575C2[12]),  12,17},
  {&(_tg__ZTV9S18575C10__A1__9S18575C13__8S18575C2[10]),  10,14},
  {&(_tg__ZTV9S18575C119S18575C10__A1__9S18575C13__8S18575C2[6]),  6,8},
  {&(_tg__ZTV9S18575C16__9S18575C13__8S18575C2[14]),  14,18},
  {&(_tg__ZTV8S18575C39S18575C16__A3__9S18575C13__8S18575C2[6]),  6,7},
  {&(_tg__ZTV9S18575C129S18575C16__9S18575C13__8S18575C2[2]),  2,6},
  {&(_ZTV8S18575C2[101]),  101,236},
  {&(_ZTV8S18575C2[107]),  107,236},
  {&(_ZTV8S18575C2[113]),  113,236},
  {&(_ZTV8S18575C2[116]),  116,236},
  {&(_ZTV8S18575C2[120]),  120,236},
  {&(_ZTV8S18575C2[33]),  33,236},
  {&(_ZTV8S18575C2[130]),  130,236},
  {&(_ZTV8S18575C2[136]),  136,236},
  {&(_ZTV8S18575C2[141]),  141,236},
  {&(_ZTV8S18575C2[43]),  43,236},
  {&(_ZTV8S18575C2[56]),  56,236},
  {&(_ZTV8S18575C2[78]),  78,236},
  {&(_ZTV8S18575C2[88]),  88,236},
  {&(_ZTV8S18575C2[94]),  94,236},
  {&(_ZTV8S18575C2[154]),  154,236},
  {&(_ZTV8S18575C2[169]),  169,236},
  {&(_ZTV8S18575C2[179]),  179,236},
  {&(_ZTV8S18575C2[195]),  195,236},
  {&(_ZTV8S18575C2[205]),  205,236},
  {&(_ZTV8S18575C2[208]),  208,236},
  {&(_ZTV8S18575C2[223]),  223,236},
  {&(_ZTV8S18575C2[234]),  234,236},
  {&(_tg__ZTV8S18575C3__8S18575C2[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C3__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C3__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C3__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C3__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C15__8S18575C2[8]),  8,13},
  {&(_tg__ZTV8S18575C7__9S18575C15__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C10__9S18575C15__8S18575C2[10]),  10,14},
  {&(_tg__ZTV8S18575C9__9S18575C15__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A1__9S18575C15__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C15__8S18575C2[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C15__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C15__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A2__9S18575C15__8S18575C2[5]),  5,8},
  {&(_tg__ZTV9S18575C119S18575C10__9S18575C15__8S18575C2[6]),  6,8},
  {&(_tg__ZTV9S18575C10__A2__8S18575C2[7]),  7,11},
  {&(_tg__ZTV8S18575C39S18575C10__A3__8S18575C2[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C10__A3__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C10__A3__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C10__A3__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C10__A3__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C10__A2__8S18575C2[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C10__A2__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C10__A2__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__A2__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__A2__8S18575C2[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C10__A2__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C10__A2__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C9__9S18575C10__A2__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C10__A2__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C10__A2__8S18575C2[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C10__A2__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C10__A2__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A1__9S18575C10__A2__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C7__A1__9S18575C10__A2__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C10__A2__8S18575C2[6]),  6,8},
  {&(_tg__ZTV9S18575C16__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C39S18575C16__A4__8S18575C2[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C16__A4__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C16__A4__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C16__A4__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C16__A4__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C7__9S18575C16__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C15__9S18575C16__8S18575C2[12]),  12,17},
  {&(_tg__ZTV9S18575C10__9S18575C16__8S18575C2[10]),  10,14},
  {&(_tg__ZTV8S18575C9__9S18575C16__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A1__9S18575C16__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__A1__9S18575C16__8S18575C2[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A2__9S18575C16__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C16__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A2__9S18575C16__8S18575C2[5]),  5,8},
  {&(_tg__ZTV9S18575C119S18575C10__9S18575C16__8S18575C2[6]),  6,8},
  {&(_tg__ZTV8S18575C3__A1__9S18575C16__8S18575C2[6]),  6,7},
  {&(_tg__ZTV9S18575C17__8S18575C2[7]),  7,12},
  {&(_tg__ZTV8S18575C39S18575C17__A5__8S18575C2[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C17__A5__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C17__A5__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C17__A5__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C17__A5__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C17__A3__8S18575C2[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C17__A3__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C17__A3__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C17__A3__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C17__A3__8S18575C2[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C17__A3__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C17__A3__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C5__9S18575C17__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C6__9S18575C17__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C17__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C7__9S18575C17__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C17__8S18575C2[6]),  6,8},
  {&(_tg__ZTV8S18575C9__9S18575C17__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A1__9S18575C17__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__A2__9S18575C17__8S18575C2[2]),  2,3},
};
extern VTBL_ENTRY _ZTI8S18575C2[];
extern  VTBL_ENTRY _ZTV8S18575C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C2[];
static VTBL_ENTRY alt_thunk_names32[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S18575C15D0Ev,_ZThn316_N9S18575C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S18575C15D1Ev,_ZThn316_N9S18575C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S18575C13D0Ev,_ZTv0_n44_N9S18575C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168288_N9S18575C13D0Ev,_ZThn106740_N9S18575C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S18575C13D1Ev,_ZTv0_n44_N9S18575C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168288_N9S18575C13D1Ev,_ZThn106740_N9S18575C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C13D0Ev,_ZTv0_n40_N9S18575C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn157280_N9S18575C13D0Ev,_ZThn99764_N9S18575C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C13D1Ev,_ZTv0_n40_N9S18575C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn157280_N9S18575C13D1Ev,_ZThn99764_N9S18575C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S18575C13D0Ev,_ZTv0_n48_N9S18575C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn156808_N9S18575C13D0Ev,_ZThn99448_N9S18575C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S18575C13D1Ev,_ZTv0_n48_N9S18575C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn156808_N9S18575C13D1Ev,_ZThn99448_N9S18575C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C13D0Ev,_ZTv0_n16_N9S18575C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152688_N9S18575C13D0Ev,_ZThn96828_N9S18575C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C13D1Ev,_ZTv0_n16_N9S18575C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152688_N9S18575C13D1Ev,_ZThn96828_N9S18575C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152688_N8S18575C8D0Ev,_ZThn96828_N8S18575C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn178976_N8S18575C8D0Ev,_ZThn113488_N8S18575C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152688_N8S18575C8D1Ev,_ZThn96828_N8S18575C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn178976_N8S18575C8D1Ev,_ZThn113488_N8S18575C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn148560_N9S18575C10D0Ev,_ZThn94208_N9S18575C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn174848_N9S18575C10D0Ev,_ZThn110868_N9S18575C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn148560_N9S18575C10D1Ev,_ZThn94208_N9S18575C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn174848_N9S18575C10D1Ev,_ZThn110868_N9S18575C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn148096_N9S18575C11D0Ev,_ZThn93916_N9S18575C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn174384_N9S18575C11D0Ev,_ZThn110576_N9S18575C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn148096_N9S18575C11D1Ev,_ZThn93916_N9S18575C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn174384_N9S18575C11D1Ev,_ZThn110576_N9S18575C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S18575C2D0Ev,_ZTv0_n36_N8S18575C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn197392_N8S18575C2D0Ev,_ZThn125192_N8S18575C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S18575C2D1Ev,_ZTv0_n36_N8S18575C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn197392_N8S18575C2D1Ev,_ZThn125192_N8S18575C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S18575C2D0Ev,_ZTv0_n44_N8S18575C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn194576_N8S18575C2D0Ev,_ZThn123400_N8S18575C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S18575C2D1Ev,_ZTv0_n44_N8S18575C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn194576_N8S18575C2D1Ev,_ZThn123400_N8S18575C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S18575C2D0Ev,_ZTv0_n40_N8S18575C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183568_N8S18575C2D0Ev,_ZThn116424_N8S18575C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S18575C2D1Ev,_ZTv0_n40_N8S18575C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183568_N8S18575C2D1Ev,_ZThn116424_N8S18575C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S18575C2D0Ev,_ZTv0_n48_N8S18575C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183096_N8S18575C2D0Ev,_ZThn116108_N8S18575C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S18575C2D1Ev,_ZTv0_n48_N8S18575C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183096_N8S18575C2D1Ev,_ZThn116108_N8S18575C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C2D0Ev,_ZTv0_n16_N8S18575C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn178976_N8S18575C2D0Ev,_ZThn113488_N8S18575C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C2D1Ev,_ZTv0_n16_N8S18575C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn178976_N8S18575C2D1Ev,_ZThn113488_N8S18575C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18575C2 = {  "S18575C2", // class name
  bases_S18575C2, 46,
  &(vtc_S18575C2[0]), // expected_vtbl_contents
  &(vtt_S18575C2[0]), // expected_vtt_contents
  ABISELECT(204768,129872), // object size
  NSPAIRA(_ZTI8S18575C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S18575C2),236, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18575C2),184, //virtual table table var
  46, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names32,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C1  {
  int s18575c1f0;
  ::S18575C2 s18575c1f1;
  short s18575c1f2;
  ::S19763C23 s18575c1f3;
  ::S18575C7 s18575c1f4;
  int s18575c1f5;
  virtual void  v1(); // _ZN8S18575C12v1Ev
  virtual void  v2(); // _ZN8S18575C12v2Ev
  ~S18575C1(); // tgen
  S18575C1(); // tgen
};
//SIG(1 S18575C1) C1{ v1 v2 Fi FC2{ VBC3{ BC4{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC5{ v4 v5 v6 Fi[2] Fl[2] FC4[3]} VBC6{ VBC4 Fp FC4 FL:3} VBC7{ v7 FL FD Fp Fc FC4 Fp[2] Fl[8] Fs Fp FL:64} FC7 Fs Fi[2]} BC8{ VBC4 VBC3 BC9{ BC7 BC5 BC4 vd v8 Fl FL Fp[8] FC3 Fp Fi FC3 Fi} BC10{ VBC9 VBC4 VBC6 BC3 BC11{ VBC7 VBC9 VBC4 VBC6 FL:44 Fp Fi FC3 Fl[2] Fi[3] FC9 Fc:7 FC12{ BC7 vd v12 FC6 Fi Fp Fi}} v9 FC9 FL Fc:7} v10 v11 FC11 Fs FL:8} BC13{ VBC5 BC8 BC14{ VBC6 FC11 FL:6 Fi Fl} VBC15{ VBC7 BC5 VBC10 Fc:8 Fi} VBC16{ BC4 VBC7 VBC15 BC3 BC12 vd v13 Fi FC3 Fi Fs FL:8 Fi} v14 FC15 FC8} VBC17{ BC3 BC11 vd v15 v16 Fi:13 Fl Fi Fp[2] FL FC5} FC18{ BC5 VBC8 BC4 vd Fi FU19{ m Fc:8 Fp Fs FD Fp Fp Fl[5]} Fi FC8 Fc[6] Fl Fi Fi:0} Fi Fi Fi Fi Fi Fc Fi Fp Fp Fi FC6} Fs FU20{ m Fi:8 Fi Fp FL Fp Fp Fi} FC7 Fi}


void  S18575C1 ::v1(){vfunc_called(this, "_ZN8S18575C12v1Ev");}
void  S18575C1 ::v2(){vfunc_called(this, "_ZN8S18575C12v2Ev");}
S18575C1 ::~S18575C1(){ note_dtor("S18575C1", this);} // tgen
S18575C1 ::S18575C1(){ note_ctor("S18575C1", this);} // tgen

static void Test_S18575C1()
{
  extern Class_Descriptor cd_S18575C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12821,32521)];
    init_test(&cd_S18575C1, buf);
    S18575C1 *dp, &lv = *(dp=new (buf) S18575C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(205120,130080), "sizeof(S18575C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C1)");
    check_field_offset(lv, s18575c1f0, ABISELECT(8,4), "S18575C1.s18575c1f0");
    check_field_offset(lv, s18575c1f1, ABISELECT(16,8), "S18575C1.s18575c1f1");
    check_field_offset(lv, s18575c1f2, ABISELECT(204784,129880), "S18575C1.s18575c1f2");
    check_field_offset(lv, s18575c1f3, ABISELECT(204792,129884), "S18575C1.s18575c1f3");
    check_field_offset(lv, s18575c1f4, ABISELECT(204800,129892), "S18575C1.s18575c1f4");
    check_field_offset(lv, s18575c1f5, ABISELECT(205104,130076), "S18575C1.s18575c1f5");
    test_class_info(&lv, &cd_S18575C1);
    dp->~S18575C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C1(Test_S18575C1, "S18575C1", ABISELECT(205120,130080));

#else // __cplusplus

extern void _ZN8S18575C1C1Ev();
extern void _ZN8S18575C1D1Ev();
Name_Map name_map_S18575C1[] = {
  NSPAIR(_ZN8S18575C1C1Ev),
  NSPAIR(_ZN8S18575C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18575C1[];
extern void _ZN8S18575C12v1Ev();
extern void _ZN8S18575C12v2Ev();
static  VTBL_ENTRY vtc_S18575C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C1[0]),
  (VTBL_ENTRY)&_ZN8S18575C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18575C12v2Ev,
};
extern VTBL_ENTRY _ZTI8S18575C1[];
extern  VTBL_ENTRY _ZTV8S18575C1[];
Class_Descriptor cd_S18575C1 = {  "S18575C1", // class name
  0,0,//no base classes
  &(vtc_S18575C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(205120,130080), // object size
  NSPAIRA(_ZTI8S18575C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18575C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C3  {
  void *s10007c3f0;
  int s10007c3f1[10];
};
//SIG(-1 S10007C3) C1{ Fp Fi[10]}



static void Test_S10007C3()
{
  {
    init_simple_test("S10007C3");
    S10007C3 lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S10007C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C3)");
    check_field_offset(lv, s10007c3f0, 0, "S10007C3.s10007c3f0");
    check_field_offset(lv, s10007c3f1, ABISELECT(8,4), "S10007C3.s10007c3f1");
  }
}
static Arrange_To_Call_Me vS10007C3(Test_S10007C3, "S10007C3", ABISELECT(48,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C6_nt  {
  int s10007c6f0[4];
};
//SIG(-1 S10007C6_nt) C1{ Fi[4]}



//skip512 S10007C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C5  {
  int s10007c5f0[8];
  ::S10007C6_nt s10007c5f1;
};
//SIG(1 S10007C5) C1{ Fi[8] FC2{ Fi[4]}}



static void Test_S10007C5()
{
  {
    init_simple_test("S10007C5");
    S10007C5 lv;
    check2(sizeof(lv), 48, "sizeof(S10007C5)");
    check2(__alignof__(lv), 4, "__alignof__(S10007C5)");
    check_field_offset(lv, s10007c5f0, 0, "S10007C5.s10007c5f0");
    check_field_offset(lv, s10007c5f1, 32, "S10007C5.s10007c5f1");
  }
}
static Arrange_To_Call_Me vS10007C5(Test_S10007C5, "S10007C5", 48);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C7  {
  int s10007c7f0;
  void *s10007c7f1[2];
  int s10007c7f2[2];
};
//SIG(-1 S10007C7) C1{ Fi Fp[2] Fi[2]}



static void Test_S10007C7()
{
  {
    init_simple_test("S10007C7");
    S10007C7 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S10007C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C7)");
    check_field_offset(lv, s10007c7f0, 0, "S10007C7.s10007c7f0");
    check_field_offset(lv, s10007c7f1, ABISELECT(8,4), "S10007C7.s10007c7f1");
    check_field_offset(lv, s10007c7f2, ABISELECT(24,12), "S10007C7.s10007c7f2");
  }
}
static Arrange_To_Call_Me vS10007C7(Test_S10007C7, "S10007C7", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C9  {
  void *s10007c9f0;
  int s10007c9f1;
  void *s10007c9f2;
  int s10007c9f3;
  void *s10007c9f4;
  int s10007c9f5;
  void *s10007c9f6;
  int s10007c9f7;
  void *s10007c9f8;
  int s10007c9f9[2];
};
//SIG(-1 S10007C9) C1{ Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi[2]}



static void Test_S10007C9()
{
  {
    init_simple_test("S10007C9");
    S10007C9 lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S10007C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C9)");
    check_field_offset(lv, s10007c9f0, 0, "S10007C9.s10007c9f0");
    check_field_offset(lv, s10007c9f1, ABISELECT(8,4), "S10007C9.s10007c9f1");
    check_field_offset(lv, s10007c9f2, ABISELECT(16,8), "S10007C9.s10007c9f2");
    check_field_offset(lv, s10007c9f3, ABISELECT(24,12), "S10007C9.s10007c9f3");
    check_field_offset(lv, s10007c9f4, ABISELECT(32,16), "S10007C9.s10007c9f4");
    check_field_offset(lv, s10007c9f5, ABISELECT(40,20), "S10007C9.s10007c9f5");
    check_field_offset(lv, s10007c9f6, ABISELECT(48,24), "S10007C9.s10007c9f6");
    check_field_offset(lv, s10007c9f7, ABISELECT(56,28), "S10007C9.s10007c9f7");
    check_field_offset(lv, s10007c9f8, ABISELECT(64,32), "S10007C9.s10007c9f8");
    check_field_offset(lv, s10007c9f9, ABISELECT(72,36), "S10007C9.s10007c9f9");
  }
}
static Arrange_To_Call_Me vS10007C9(Test_S10007C9, "S10007C9", ABISELECT(80,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C10  {
  void *s10007c10f0[6];
  int s10007c10f1;
  void *s10007c10f2[3];
  int s10007c10f3[2];
  void *s10007c10f4[3];
  int s10007c10f5[2];
};
//SIG(-1 S10007C10) C1{ Fp[6] Fi Fp[3] Fi[2] Fp[3] Fi[2]}



static void Test_S10007C10()
{
  {
    init_simple_test("S10007C10");
    S10007C10 lv;
    check2(sizeof(lv), ABISELECT(120,68), "sizeof(S10007C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C10)");
    check_field_offset(lv, s10007c10f0, 0, "S10007C10.s10007c10f0");
    check_field_offset(lv, s10007c10f1, ABISELECT(48,24), "S10007C10.s10007c10f1");
    check_field_offset(lv, s10007c10f2, ABISELECT(56,28), "S10007C10.s10007c10f2");
    check_field_offset(lv, s10007c10f3, ABISELECT(80,40), "S10007C10.s10007c10f3");
    check_field_offset(lv, s10007c10f4, ABISELECT(88,48), "S10007C10.s10007c10f4");
    check_field_offset(lv, s10007c10f5, ABISELECT(112,60), "S10007C10.s10007c10f5");
  }
}
static Arrange_To_Call_Me vS10007C10(Test_S10007C10, "S10007C10", ABISELECT(120,68));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C11  {
  int s10007c11f0[2];
  void *s10007c11f1;
  int s10007c11f2[2];
};
//SIG(-1 S10007C11) C1{ Fi[2] Fp Fi[2]}



static void Test_S10007C11()
{
  {
    init_simple_test("S10007C11");
    S10007C11 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S10007C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C11)");
    check_field_offset(lv, s10007c11f0, 0, "S10007C11.s10007c11f0");
    check_field_offset(lv, s10007c11f1, 8, "S10007C11.s10007c11f1");
    check_field_offset(lv, s10007c11f2, ABISELECT(16,12), "S10007C11.s10007c11f2");
  }
}
static Arrange_To_Call_Me vS10007C11(Test_S10007C11, "S10007C11", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C8  {
  ::S10007C9 s10007c8f0;
  ::S10007C10 s10007c8f1;
  ::S10007C11 s10007c8f2;
  int s10007c8f3[10];
};
//SIG(-1 S10007C8) C1{ FC2{ Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi[2]} FC3{ Fp[6] Fi Fp[3] Fi[2] Fp[3] Fi[2]} FC4{ Fi[2] Fp Fi[2]} Fi[10]}



static void Test_S10007C8()
{
  {
    init_simple_test("S10007C8");
    S10007C8 lv;
    check2(sizeof(lv), ABISELECT(264,172), "sizeof(S10007C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C8)");
    check_field_offset(lv, s10007c8f0, 0, "S10007C8.s10007c8f0");
    check_field_offset(lv, s10007c8f1, ABISELECT(80,44), "S10007C8.s10007c8f1");
    check_field_offset(lv, s10007c8f2, ABISELECT(200,112), "S10007C8.s10007c8f2");
    check_field_offset(lv, s10007c8f3, ABISELECT(224,132), "S10007C8.s10007c8f3");
  }
}
static Arrange_To_Call_Me vS10007C8(Test_S10007C8, "S10007C8", ABISELECT(264,172));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C4  {
  void *s10007c4f0[2];
  ::S10007C5 s10007c4f1[3];
  int s10007c4f2[3];
  void *s10007c4f3[6];
  int s10007c4f4[2];
  void *s10007c4f5;
  int s10007c4f6;
  ::S10007C7 s10007c4f7;
  void *s10007c4f8[4];
  int s10007c4f9[2];
  void *s10007c4f10[3];
  ::S10007C8 s10007c4f11;
};
//SIG(-1 S10007C4) C1{ Fp[2] FC2{ Fi[8] FC3{ Fi[4]}}[3] Fi[3] Fp[6] Fi[2] Fp Fi FC4{ Fi Fp[2] Fi[2]} Fp[4] Fi[2] Fp[3] FC5{ FC6{ Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi[2]} FC7{ Fp[6] Fi Fp[3] Fi[2] Fp[3] Fi[2]} FC8{ Fi[2] Fp Fi[2]} Fi[10]}}



static void Test_S10007C4()
{
  {
    init_simple_test("S10007C4");
    S10007C4 lv;
    check2(sizeof(lv), ABISELECT(608,432), "sizeof(S10007C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C4)");
    check_field_offset(lv, s10007c4f0, 0, "S10007C4.s10007c4f0");
    check_field_offset(lv, s10007c4f1, ABISELECT(16,8), "S10007C4.s10007c4f1");
    check_field_offset(lv, s10007c4f2, ABISELECT(160,152), "S10007C4.s10007c4f2");
    check_field_offset(lv, s10007c4f3, ABISELECT(176,164), "S10007C4.s10007c4f3");
    check_field_offset(lv, s10007c4f4, ABISELECT(224,188), "S10007C4.s10007c4f4");
    check_field_offset(lv, s10007c4f5, ABISELECT(232,196), "S10007C4.s10007c4f5");
    check_field_offset(lv, s10007c4f6, ABISELECT(240,200), "S10007C4.s10007c4f6");
    check_field_offset(lv, s10007c4f7, ABISELECT(248,204), "S10007C4.s10007c4f7");
    check_field_offset(lv, s10007c4f8, ABISELECT(280,224), "S10007C4.s10007c4f8");
    check_field_offset(lv, s10007c4f9, ABISELECT(312,240), "S10007C4.s10007c4f9");
    check_field_offset(lv, s10007c4f10, ABISELECT(320,248), "S10007C4.s10007c4f10");
    check_field_offset(lv, s10007c4f11, ABISELECT(344,260), "S10007C4.s10007c4f11");
  }
}
static Arrange_To_Call_Me vS10007C4(Test_S10007C4, "S10007C4", ABISELECT(608,432));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C12  {
  __tsi64 s10007c12f0[3];
  char s10007c12f1;
};
//SIG(-1 S10007C12) C1{ FL[3] Fc}



static void Test_S10007C12()
{
  {
    init_simple_test("S10007C12");
    S10007C12 lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S10007C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C12)");
    check_field_offset(lv, s10007c12f0, 0, "S10007C12.s10007c12f0");
    check_field_offset(lv, s10007c12f1, 24, "S10007C12.s10007c12f1");
  }
}
static Arrange_To_Call_Me vS10007C12(Test_S10007C12, "S10007C12", ABISELECT(32,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C2  {
  char s10007c2f0[3];
  ::S10007C3 s10007c2f1;
  ::S10007C4 s10007c2f2;
  ::S10007C8 s10007c2f3;
  ::S10007C12 s10007c2f4;
  ::S10007C6_nt s10007c2f5;
  int s10007c2f6;
  void *s10007c2f7;
  int s10007c2f8;
  virtual  ~S10007C2(); // _ZN8S10007C2D1Ev
  virtual void  v6(); // _ZN8S10007C22v6Ev
  virtual void  v7(); // _ZN8S10007C22v7Ev
  virtual void  v8(); // _ZN8S10007C22v8Ev
  virtual void  v9(); // _ZN8S10007C22v9Ev
  virtual void  v10(); // _ZN8S10007C23v10Ev
  virtual void  v11(); // _ZN8S10007C23v11Ev
  virtual void  v12(); // _ZN8S10007C23v12Ev
  S10007C2(); // tgen
};
//SIG(-1 S10007C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 Fc[3] FC2{ Fp Fi[10]} FC3{ Fp[2] FC4{ Fi[8] FC5{ Fi[4]}}[3] Fi[3] Fp[6] Fi[2] Fp Fi FC6{ Fi Fp[2] Fi[2]} Fp[4] Fi[2] Fp[3] FC7{ FC8{ Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi[2]} FC9{ Fp[6] Fi Fp[3] Fi[2] Fp[3] Fi[2]} FC10{ Fi[2] Fp Fi[2]} Fi[10]}} FC7 FC11{ FL[3] Fc} FC5 Fi Fp Fi}


 S10007C2 ::~S10007C2(){ note_dtor("S10007C2", this);}
void  S10007C2 ::v6(){vfunc_called(this, "_ZN8S10007C22v6Ev");}
void  S10007C2 ::v7(){vfunc_called(this, "_ZN8S10007C22v7Ev");}
void  S10007C2 ::v8(){vfunc_called(this, "_ZN8S10007C22v8Ev");}
void  S10007C2 ::v9(){vfunc_called(this, "_ZN8S10007C22v9Ev");}
void  S10007C2 ::v10(){vfunc_called(this, "_ZN8S10007C23v10Ev");}
void  S10007C2 ::v11(){vfunc_called(this, "_ZN8S10007C23v11Ev");}
void  S10007C2 ::v12(){vfunc_called(this, "_ZN8S10007C23v12Ev");}
S10007C2 ::S10007C2(){ note_ctor("S10007C2", this);} // tgen

static void Test_S10007C2()
{
  extern Class_Descriptor cd_S10007C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(127,179)];
    init_test(&cd_S10007C2, buf);
    S10007C2 *dp, &lv = *(dp=new (buf) S10007C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1008,712), "sizeof(S10007C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C2)");
    check_field_offset(lv, s10007c2f0, ABISELECT(8,4), "S10007C2.s10007c2f0");
    check_field_offset(lv, s10007c2f1, ABISELECT(16,8), "S10007C2.s10007c2f1");
    check_field_offset(lv, s10007c2f2, ABISELECT(64,52), "S10007C2.s10007c2f2");
    check_field_offset(lv, s10007c2f3, ABISELECT(672,484), "S10007C2.s10007c2f3");
    check_field_offset(lv, s10007c2f4, ABISELECT(936,656), "S10007C2.s10007c2f4");
    check_field_offset(lv, s10007c2f5, ABISELECT(968,684), "S10007C2.s10007c2f5");
    check_field_offset(lv, s10007c2f6, ABISELECT(984,700), "S10007C2.s10007c2f6");
    check_field_offset(lv, s10007c2f7, ABISELECT(992,704), "S10007C2.s10007c2f7");
    check_field_offset(lv, s10007c2f8, ABISELECT(1000,708), "S10007C2.s10007c2f8");
    test_class_info(&lv, &cd_S10007C2);
    dp->~S10007C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10007C2(Test_S10007C2, "S10007C2", ABISELECT(1008,712));

#else // __cplusplus

extern void _ZN8S10007C2C1Ev();
extern void _ZN8S10007C2D1Ev();
Name_Map name_map_S10007C2[] = {
  NSPAIR(_ZN8S10007C2C1Ev),
  NSPAIR(_ZN8S10007C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10007C2[];
extern void _ZN8S10007C2D1Ev();
extern void _ZN8S10007C2D0Ev();
extern void _ZN8S10007C22v6Ev();
extern void _ZN8S10007C22v7Ev();
extern void _ZN8S10007C22v8Ev();
extern void _ZN8S10007C22v9Ev();
extern void _ZN8S10007C23v10Ev();
extern void _ZN8S10007C23v11Ev();
extern void _ZN8S10007C23v12Ev();
static  VTBL_ENTRY vtc_S10007C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10007C2[0]),
  (VTBL_ENTRY)&_ZN8S10007C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10007C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10007C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10007C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10007C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10007C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10007C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10007C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10007C23v12Ev,
};
extern VTBL_ENTRY _ZTI8S10007C2[];
extern  VTBL_ENTRY _ZTV8S10007C2[];
Class_Descriptor cd_S10007C2 = {  "S10007C2", // class name
  0,0,//no base classes
  &(vtc_S10007C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1008,712), // object size
  NSPAIRA(_ZTI8S10007C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10007C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C15  {
  int s10007c15f0[15];
  void *s10007c15f1[2];
  char s10007c15f2[256];
  int s10007c15f3;
  void *s10007c15f4;
  ::S10007C6_nt s10007c15f5;
};
//SIG(-1 S10007C15) C1{ Fi[15] Fp[2] Fc[256] Fi Fp FC2{ Fi[4]}}



static void Test_S10007C15()
{
  {
    init_simple_test("S10007C15");
    S10007C15 lv;
    check2(sizeof(lv), ABISELECT(368,348), "sizeof(S10007C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C15)");
    check_field_offset(lv, s10007c15f0, 0, "S10007C15.s10007c15f0");
    check_field_offset(lv, s10007c15f1, ABISELECT(64,60), "S10007C15.s10007c15f1");
    check_field_offset(lv, s10007c15f2, ABISELECT(80,68), "S10007C15.s10007c15f2");
    check_field_offset(lv, s10007c15f3, ABISELECT(336,324), "S10007C15.s10007c15f3");
    check_field_offset(lv, s10007c15f4, ABISELECT(344,328), "S10007C15.s10007c15f4");
    check_field_offset(lv, s10007c15f5, ABISELECT(352,332), "S10007C15.s10007c15f5");
  }
}
static Arrange_To_Call_Me vS10007C15(Test_S10007C15, "S10007C15", ABISELECT(368,348));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C16  {
  void *s10007c16f0[9];
  void  mf10007c16(); // _ZN9S10007C1610mf10007c16Ev
};
//SIG(-1 S10007C16) C1{ m Fp[9]}


void  S10007C16 ::mf10007c16(){}

static void Test_S10007C16()
{
  {
    init_simple_test("S10007C16");
    S10007C16 lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S10007C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C16)");
    check_field_offset(lv, s10007c16f0, 0, "S10007C16.s10007c16f0");
  }
}
static Arrange_To_Call_Me vS10007C16(Test_S10007C16, "S10007C16", ABISELECT(72,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C14  {
  ::S10007C15 s10007c14f0;
  ::S10007C15 s10007c14f1;
  ::S10007C15 s10007c14f2;
  void *s10007c14f3[3];
  ::S10007C16 s10007c14f4;
  void  mf10007c14(); // _ZN9S10007C1410mf10007c14Ev
};
//SIG(-1 S10007C14) C1{ m FC2{ Fi[15] Fp[2] Fc[256] Fi Fp FC3{ Fi[4]}} FC2 FC2 Fp[3] FC4{ m Fp[9]}}


void  S10007C14 ::mf10007c14(){}

static void Test_S10007C14()
{
  {
    init_simple_test("S10007C14");
    S10007C14 lv;
    check2(sizeof(lv), ABISELECT(1200,1092), "sizeof(S10007C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C14)");
    check_field_offset(lv, s10007c14f0, 0, "S10007C14.s10007c14f0");
    check_field_offset(lv, s10007c14f1, ABISELECT(368,348), "S10007C14.s10007c14f1");
    check_field_offset(lv, s10007c14f2, ABISELECT(736,696), "S10007C14.s10007c14f2");
    check_field_offset(lv, s10007c14f3, ABISELECT(1104,1044), "S10007C14.s10007c14f3");
    check_field_offset(lv, s10007c14f4, ABISELECT(1128,1056), "S10007C14.s10007c14f4");
  }
}
static Arrange_To_Call_Me vS10007C14(Test_S10007C14, "S10007C14", ABISELECT(1200,1092));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C19  {
  ::S4228C13_nt s10007c19f0;
  ::S4228C13_nt s10007c19f1;
  ::S4228C13_nt s10007c19f2;
  ::S4228C13_nt s10007c19f3;
  void  mf10007c19(); // _ZN9S10007C1910mf10007c19Ev
};
//SIG(-1 S10007C19) C1{ m FC2{ m FL[2]} FC2 FC2 FC2}


void  S10007C19 ::mf10007c19(){}

static void Test_S10007C19()
{
  {
    init_simple_test("S10007C19");
    S10007C19 lv;
    check2(sizeof(lv), 64, "sizeof(S10007C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C19)");
    check_field_offset(lv, s10007c19f0, 0, "S10007C19.s10007c19f0");
    check_field_offset(lv, s10007c19f1, 16, "S10007C19.s10007c19f1");
    check_field_offset(lv, s10007c19f2, 32, "S10007C19.s10007c19f2");
    check_field_offset(lv, s10007c19f3, 48, "S10007C19.s10007c19f3");
  }
}
static Arrange_To_Call_Me vS10007C19(Test_S10007C19, "S10007C19", 64);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C18  {
  void *s10007c18f0;
  int s10007c18f1[2];
  char s10007c18f2;
  ::S10007C19 s10007c18f3;
  virtual  ~S10007C18(); // _ZN9S10007C18D1Ev
  virtual void  v13(); // _ZN9S10007C183v13Ev
  virtual void  v14(); // _ZN9S10007C183v14Ev
  S10007C18(); // tgen
};
//SIG(-1 S10007C18) C1{ vd v1 v2 Fp Fi[2] Fc FC2{ m FC3{ m FL[2]} FC3 FC3 FC3}}


 S10007C18 ::~S10007C18(){ note_dtor("S10007C18", this);}
void  S10007C18 ::v13(){vfunc_called(this, "_ZN9S10007C183v13Ev");}
void  S10007C18 ::v14(){vfunc_called(this, "_ZN9S10007C183v14Ev");}
S10007C18 ::S10007C18(){ note_ctor("S10007C18", this);} // tgen

static void Test_S10007C18()
{
  extern Class_Descriptor cd_S10007C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,22)];
    init_test(&cd_S10007C18, buf);
    S10007C18 *dp, &lv = *(dp=new (buf) S10007C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,84), "sizeof(S10007C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C18)");
    check_field_offset(lv, s10007c18f0, ABISELECT(8,4), "S10007C18.s10007c18f0");
    check_field_offset(lv, s10007c18f1, ABISELECT(16,8), "S10007C18.s10007c18f1");
    check_field_offset(lv, s10007c18f2, ABISELECT(24,16), "S10007C18.s10007c18f2");
    check_field_offset(lv, s10007c18f3, ABISELECT(32,20), "S10007C18.s10007c18f3");
    test_class_info(&lv, &cd_S10007C18);
    dp->~S10007C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10007C18(Test_S10007C18, "S10007C18", ABISELECT(96,84));

#else // __cplusplus

extern void _ZN9S10007C18C1Ev();
extern void _ZN9S10007C18D1Ev();
Name_Map name_map_S10007C18[] = {
  NSPAIR(_ZN9S10007C18C1Ev),
  NSPAIR(_ZN9S10007C18D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S10007C18[];
extern void _ZN9S10007C18D1Ev();
extern void _ZN9S10007C18D0Ev();
extern void _ZN9S10007C183v13Ev();
extern void _ZN9S10007C183v14Ev();
static  VTBL_ENTRY vtc_S10007C18[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S10007C18[0]),
  (VTBL_ENTRY)&_ZN9S10007C18D1Ev,
  (VTBL_ENTRY)&_ZN9S10007C18D0Ev,
  (VTBL_ENTRY)&_ZN9S10007C183v13Ev,
  (VTBL_ENTRY)&_ZN9S10007C183v14Ev,
};
extern VTBL_ENTRY _ZTI9S10007C18[];
extern  VTBL_ENTRY _ZTV9S10007C18[];
Class_Descriptor cd_S10007C18 = {  "S10007C18", // class name
  0,0,//no base classes
  &(vtc_S10007C18[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,84), // object size
  NSPAIRA(_ZTI9S10007C18),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S10007C18),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C17  {
  ::S10007C18 s10007c17f0;
  void *s10007c17f1[2];
  char s10007c17f2;
  void  mf10007c17(); // _ZN9S10007C1710mf10007c17Ev
};
//SIG(-1 S10007C17) C1{ m FC2{ vd v1 v2 Fp Fi[2] Fc FC3{ m FC4{ m FL[2]} FC4 FC4 FC4}} Fp[2] Fc}


void  S10007C17 ::mf10007c17(){}

static void Test_S10007C17()
{
  {
    init_simple_test("S10007C17");
    S10007C17 lv;
    check2(sizeof(lv), ABISELECT(120,96), "sizeof(S10007C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C17)");
    check_field_offset(lv, s10007c17f0, 0, "S10007C17.s10007c17f0");
    check_field_offset(lv, s10007c17f1, ABISELECT(96,84), "S10007C17.s10007c17f1");
    check_field_offset(lv, s10007c17f2, ABISELECT(112,92), "S10007C17.s10007c17f2");
  }
}
static Arrange_To_Call_Me vS10007C17(Test_S10007C17, "S10007C17", ABISELECT(120,96));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C24  {
  ::S4228C12_nt s10007c24f0[6];
  void  mf10007c24(); // _ZN9S10007C2410mf10007c24Ev
};
//SIG(-1 S10007C24) C1{ m FC2{ m FC3{ m FL[2]}}[6]}


void  S10007C24 ::mf10007c24(){}

static void Test_S10007C24()
{
  {
    init_simple_test("S10007C24");
    S10007C24 lv;
    check2(sizeof(lv), 96, "sizeof(S10007C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C24)");
    check_field_offset(lv, s10007c24f0, 0, "S10007C24.s10007c24f0");
  }
}
static Arrange_To_Call_Me vS10007C24(Test_S10007C24, "S10007C24", 96);

#else // __cplusplus

Class_Descriptor cd_S10007C24 = {  "S10007C24", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  96, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C23  : S10007C24 {
};
//SIG(-1 S10007C23) C1{ BC2{ m FC3{ m FC4{ m FL[2]}}[6]}}



static void Test_S10007C23()
{
  extern Class_Descriptor cd_S10007C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,25)];
    init_test(&cd_S10007C23, buf);
    S10007C23 &lv = *(new (buf) S10007C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), 96, "sizeof(S10007C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C23)");
    check_base_class_offset(lv, (S10007C24*), 0, "S10007C23");
    test_class_info(&lv, &cd_S10007C23);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10007C23(Test_S10007C23, "S10007C23", 96);

#else // __cplusplus

extern Class_Descriptor cd_S10007C24;
static Base_Class bases_S10007C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10007C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S10007C23 = {  "S10007C23", // class name
  bases_S10007C23, 1,
  0, // no vftv
  0, //no vtt
  96, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C22  : S10007C18 {
  ::S4228C13_nt s10007c22f0;
  ::S10007C19 s10007c22f1;
  ::S10007C19 s10007c22f2;
  ::S10007C19 s10007c22f3;
  ::S10007C23 s10007c22f4;
  ~S10007C22(); // tgen
  S10007C22(); // tgen
};
//SIG(-1 S10007C22) C1{ BC2{ vd v1 v2 Fp Fi[2] Fc FC3{ m FC4{ m FL[2]} FC4 FC4 FC4}} FC4 FC3 FC3 FC3 FC5{ BC6{ m FC7{ m FC4}[6]}}}


S10007C22 ::~S10007C22(){ note_dtor("S10007C22", this);} // tgen
S10007C22 ::S10007C22(){ note_ctor("S10007C22", this);} // tgen

static void Test_S10007C22()
{
  extern Class_Descriptor cd_S10007C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(51,98)];
    init_test(&cd_S10007C22, buf);
    S10007C22 *dp, &lv = *(dp=new (buf) S10007C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(400,388), "sizeof(S10007C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C22)");
    check_base_class_offset(lv, (S10007C18*), 0, "S10007C22");
    check_field_offset(lv, s10007c22f0, ABISELECT(96,84), "S10007C22.s10007c22f0");
    check_field_offset(lv, s10007c22f1, ABISELECT(112,100), "S10007C22.s10007c22f1");
    check_field_offset(lv, s10007c22f2, ABISELECT(176,164), "S10007C22.s10007c22f2");
    check_field_offset(lv, s10007c22f3, ABISELECT(240,228), "S10007C22.s10007c22f3");
    check_field_offset(lv, s10007c22f4, ABISELECT(304,292), "S10007C22.s10007c22f4");
    test_class_info(&lv, &cd_S10007C22);
    dp->~S10007C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10007C22(Test_S10007C22, "S10007C22", ABISELECT(400,388));

#else // __cplusplus

extern void _ZN9S10007C22C1Ev();
extern void _ZN9S10007C22D1Ev();
Name_Map name_map_S10007C22[] = {
  NSPAIR(_ZN9S10007C22C1Ev),
  NSPAIR(_ZN9S10007C22D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10007C18;
extern VTBL_ENTRY _ZTI9S10007C18[];
extern  VTBL_ENTRY _ZTV9S10007C18[];
static Base_Class bases_S10007C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10007C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S10007C22[];
extern void _ZN9S10007C22D1Ev();
extern void _ZN9S10007C22D0Ev();
extern void _ZN9S10007C183v13Ev();
extern void _ZN9S10007C183v14Ev();
static  VTBL_ENTRY vtc_S10007C22[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S10007C22[0]),
  (VTBL_ENTRY)&_ZN9S10007C22D1Ev,
  (VTBL_ENTRY)&_ZN9S10007C22D0Ev,
  (VTBL_ENTRY)&_ZN9S10007C183v13Ev,
  (VTBL_ENTRY)&_ZN9S10007C183v14Ev,
};
extern VTBL_ENTRY _ZTI9S10007C22[];
extern  VTBL_ENTRY _ZTV9S10007C22[];
Class_Descriptor cd_S10007C22 = {  "S10007C22", // class name
  bases_S10007C22, 1,
  &(vtc_S10007C22[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(400,388), // object size
  NSPAIRA(_ZTI9S10007C22),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S10007C22),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C26_nt  {
  __tsi64 s10007c26f0[2];
  void  mf10007c26(); // _ZN12S10007C26_nt10mf10007c26Ev
};
//SIG(-1 S10007C26_nt) C1{ m FL[2]}


void  S10007C26_nt ::mf10007c26(){}

//skip512 S10007C26_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C21  : S10007C22 {
  ::S10007C26_nt s10007c21f0;
  ::S10007C26_nt s10007c21f1;
  ~S10007C21(); // tgen
  S10007C21(); // tgen
};
//SIG(-1 S10007C21) C1{ BC2{ BC3{ vd v1 v2 Fp Fi[2] Fc FC4{ m FC5{ m FL[2]} FC5 FC5 FC5}} FC5 FC4 FC4 FC4 FC6{ BC7{ m FC8{ m FC5}[6]}}} FC9{ m FL[2]} FC9}


S10007C21 ::~S10007C21(){ note_dtor("S10007C21", this);} // tgen
S10007C21 ::S10007C21(){ note_ctor("S10007C21", this);} // tgen

static void Test_S10007C21()
{
  extern Class_Descriptor cd_S10007C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(55,106)];
    init_test(&cd_S10007C21, buf);
    S10007C21 *dp, &lv = *(dp=new (buf) S10007C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,420), "sizeof(S10007C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C21)");
    check_base_class_offset(lv, (S10007C18*)(S10007C22*), 0, "S10007C21");
    check_base_class_offset(lv, (S10007C22*), 0, "S10007C21");
    check_field_offset(lv, s10007c21f0, ABISELECT(400,388), "S10007C21.s10007c21f0");
    check_field_offset(lv, s10007c21f1, ABISELECT(416,404), "S10007C21.s10007c21f1");
    test_class_info(&lv, &cd_S10007C21);
    dp->~S10007C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10007C21(Test_S10007C21, "S10007C21", ABISELECT(432,420));

#else // __cplusplus

extern void _ZN9S10007C21C1Ev();
extern void _ZN9S10007C21D1Ev();
Name_Map name_map_S10007C21[] = {
  NSPAIR(_ZN9S10007C21C1Ev),
  NSPAIR(_ZN9S10007C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10007C18;
extern VTBL_ENTRY _ZTI9S10007C18[];
extern  VTBL_ENTRY _ZTV9S10007C18[];
extern Class_Descriptor cd_S10007C22;
extern VTBL_ENTRY _ZTI9S10007C22[];
extern  VTBL_ENTRY _ZTV9S10007C22[];
static Base_Class bases_S10007C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10007C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S10007C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S10007C21[];
extern void _ZN9S10007C21D1Ev();
extern void _ZN9S10007C21D0Ev();
extern void _ZN9S10007C183v13Ev();
extern void _ZN9S10007C183v14Ev();
static  VTBL_ENTRY vtc_S10007C21[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S10007C21[0]),
  (VTBL_ENTRY)&_ZN9S10007C21D1Ev,
  (VTBL_ENTRY)&_ZN9S10007C21D0Ev,
  (VTBL_ENTRY)&_ZN9S10007C183v13Ev,
  (VTBL_ENTRY)&_ZN9S10007C183v14Ev,
};
extern VTBL_ENTRY _ZTI9S10007C21[];
extern  VTBL_ENTRY _ZTV9S10007C21[];
Class_Descriptor cd_S10007C21 = {  "S10007C21", // class name
  bases_S10007C21, 2,
  &(vtc_S10007C21[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(432,420), // object size
  NSPAIRA(_ZTI9S10007C21),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S10007C21),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C27_nt  {
  ::S10007C26_nt s10007c27f0;
  void  mf10007c27(); // _ZN12S10007C27_nt10mf10007c27Ev
};
//SIG(-1 S10007C27_nt) C1{ m FC2{ m FL[2]}}


void  S10007C27_nt ::mf10007c27(){}

//skip512 S10007C27_nt

#else // __cplusplus

Class_Descriptor cd_S10007C27_nt = {  "S10007C27_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  16, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C28  {
  char s10007c28f0;
  int s10007c28f1;
  char s10007c28f2[2];
};
//SIG(-1 S10007C28) C1{ Fc Fi Fc[2]}



static void Test_S10007C28()
{
  {
    init_simple_test("S10007C28");
    S10007C28 lv;
    check2(sizeof(lv), 12, "sizeof(S10007C28)");
    check2(__alignof__(lv), 4, "__alignof__(S10007C28)");
    check_field_offset(lv, s10007c28f0, 0, "S10007C28.s10007c28f0");
    check_field_offset(lv, s10007c28f1, 4, "S10007C28.s10007c28f1");
    check_field_offset(lv, s10007c28f2, 8, "S10007C28.s10007c28f2");
  }
}
static Arrange_To_Call_Me vS10007C28(Test_S10007C28, "S10007C28", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C29_nt  {
  __tsi64 s10007c29f0[4];
};
//SIG(-1 S10007C29_nt) C1{ FL[4]}



//skip512 S10007C29_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C31_nt  {
  char s10007c31f0[20];
};
//SIG(-1 S10007C31_nt) C1{ Fc[20]}



//skip512 S10007C31_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C30_nt  {
  ::S10007C31_nt s10007c30f0;
  char s10007c30f1[16];
};
//SIG(-1 S10007C30_nt) C1{ FC2{ Fc[20]} Fc[16]}



//skip512 S10007C30_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C1  : S10007C2 {
  ::S10007C14 s10007c1f0;
  ::S10007C17 s10007c1f1;
  ::S10007C21 s10007c1f2;
  ::S10007C27_nt s10007c1f3;
  ::S10007C28 s10007c1f4;
  void *s10007c1f5[87];
  int s10007c1f6[40];
  ::S10007C29_nt s10007c1f7;
  int s10007c1f8[3];
  char s10007c1f9[2];
  void *s10007c1f10;
  char s10007c1f11;
  ::S10007C30_nt s10007c1f12;
  virtual void  v1(); // _ZN8S10007C12v1Ev
  virtual void  v2(); // _ZN8S10007C12v2Ev
  virtual void  v3(); // _ZN8S10007C12v3Ev
  virtual void  v4(); // _ZN8S10007C12v4Ev
  virtual void  v5(); // _ZN8S10007C12v5Ev
  ~S10007C1(); // tgen
  S10007C1(); // tgen
};
//SIG(1 S10007C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 Fc[3] FC3{ Fp Fi[10]} FC4{ Fp[2] FC5{ Fi[8] FC6{ Fi[4]}}[3] Fi[3] Fp[6] Fi[2] Fp Fi FC7{ Fi Fp[2] Fi[2]} Fp[4] Fi[2] Fp[3] FC8{ FC9{ Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi[2]} FC10{ Fp[6] Fi Fp[3] Fi[2] Fp[3] Fi[2]} FC11{ Fi[2] Fp Fi[2]} Fi[10]}} FC8 FC12{ FL[3] Fc} FC6 Fi Fp Fi} v1 v2 v3 v4 v5 FC13{ m FC14{ Fi[15] Fp[2] Fc[256] Fi Fp FC6} FC14 FC14 Fp[3] FC15{ m Fp[9]}} FC16{ m FC17{ vd v13 v14 Fp Fi[2] Fc FC18{ m FC19{ m FL[2]} FC19 FC19 FC19}} Fp[2] Fc} FC20{ BC21{ BC17 FC19 FC18 FC18 FC18 FC22{ BC23{ m FC24{ m FC19}[6]}}} FC25{ m FL[2]} FC25} FC26{ m FC25} FC27{ Fc Fi Fc[2]} Fp[87] Fi[40] FC28{ FL[4]} Fi[3] Fc[2] Fp Fc FC29{ FC30{ Fc[20]} Fc[16]}}


void  S10007C1 ::v1(){vfunc_called(this, "_ZN8S10007C12v1Ev");}
void  S10007C1 ::v2(){vfunc_called(this, "_ZN8S10007C12v2Ev");}
void  S10007C1 ::v3(){vfunc_called(this, "_ZN8S10007C12v3Ev");}
void  S10007C1 ::v4(){vfunc_called(this, "_ZN8S10007C12v4Ev");}
void  S10007C1 ::v5(){vfunc_called(this, "_ZN8S10007C12v5Ev");}
S10007C1 ::~S10007C1(){ note_dtor("S10007C1", this);} // tgen
S10007C1 ::S10007C1(){ note_ctor("S10007C1", this);} // tgen

static void Test_S10007C1()
{
  extern Class_Descriptor cd_S10007C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(469,738)];
    init_test(&cd_S10007C1, buf);
    S10007C1 *dp, &lv = *(dp=new (buf) S10007C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3744,2948), "sizeof(S10007C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C1)");
    check_base_class_offset(lv, (S10007C2*), 0, "S10007C1");
    check_field_offset(lv, s10007c1f0, ABISELECT(1008,712), "S10007C1.s10007c1f0");
    check_field_offset(lv, s10007c1f1, ABISELECT(2208,1804), "S10007C1.s10007c1f1");
    check_field_offset(lv, s10007c1f2, ABISELECT(2328,1900), "S10007C1.s10007c1f2");
    check_field_offset(lv, s10007c1f3, ABISELECT(2760,2320), "S10007C1.s10007c1f3");
    check_field_offset(lv, s10007c1f4, ABISELECT(2776,2336), "S10007C1.s10007c1f4");
    check_field_offset(lv, s10007c1f5, ABISELECT(2792,2348), "S10007C1.s10007c1f5");
    check_field_offset(lv, s10007c1f6, ABISELECT(3488,2696), "S10007C1.s10007c1f6");
    check_field_offset(lv, s10007c1f7, ABISELECT(3648,2856), "S10007C1.s10007c1f7");
    check_field_offset(lv, s10007c1f8, ABISELECT(3680,2888), "S10007C1.s10007c1f8");
    check_field_offset(lv, s10007c1f9, ABISELECT(3692,2900), "S10007C1.s10007c1f9");
    check_field_offset(lv, s10007c1f10, ABISELECT(3696,2904), "S10007C1.s10007c1f10");
    check_field_offset(lv, s10007c1f11, ABISELECT(3704,2908), "S10007C1.s10007c1f11");
    check_field_offset(lv, s10007c1f12, ABISELECT(3705,2909), "S10007C1.s10007c1f12");
    test_class_info(&lv, &cd_S10007C1);
    dp->~S10007C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10007C1(Test_S10007C1, "S10007C1", ABISELECT(3744,2948));

#else // __cplusplus

extern void _ZN8S10007C1C1Ev();
extern void _ZN8S10007C1D1Ev();
Name_Map name_map_S10007C1[] = {
  NSPAIR(_ZN8S10007C1C1Ev),
  NSPAIR(_ZN8S10007C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10007C2;
extern VTBL_ENTRY _ZTI8S10007C2[];
extern  VTBL_ENTRY _ZTV8S10007C2[];
static Base_Class bases_S10007C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10007C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10007C1[];
extern void _ZN8S10007C1D1Ev();
extern void _ZN8S10007C1D0Ev();
extern void _ZN8S10007C22v6Ev();
extern void _ZN8S10007C22v7Ev();
extern void _ZN8S10007C22v8Ev();
extern void _ZN8S10007C22v9Ev();
extern void _ZN8S10007C23v10Ev();
extern void _ZN8S10007C23v11Ev();
extern void _ZN8S10007C23v12Ev();
extern void _ZN8S10007C12v1Ev();
extern void _ZN8S10007C12v2Ev();
extern void _ZN8S10007C12v3Ev();
extern void _ZN8S10007C12v4Ev();
extern void _ZN8S10007C12v5Ev();
static  VTBL_ENTRY vtc_S10007C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10007C1[0]),
  (VTBL_ENTRY)&_ZN8S10007C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10007C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10007C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10007C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10007C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10007C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10007C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10007C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10007C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10007C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10007C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10007C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10007C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10007C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S10007C1[];
extern  VTBL_ENTRY _ZTV8S10007C1[];
Class_Descriptor cd_S10007C1 = {  "S10007C1", // class name
  bases_S10007C1, 1,
  &(vtc_S10007C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(3744,2948), // object size
  NSPAIRA(_ZTI8S10007C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10007C1),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10006C2  {
  char s10006c2f0[3];
  ::S10007C3 s10006c2f1;
  ::S10007C4 s10006c2f2;
  ::S10007C8 s10006c2f3;
  ::S10007C12 s10006c2f4;
  ::S10007C6_nt s10006c2f5;
  int s10006c2f6;
  void *s10006c2f7;
  int s10006c2f8;
  virtual  ~S10006C2(); // _ZN8S10006C2D1Ev
  virtual void  v6(); // _ZN8S10006C22v6Ev
  virtual void  v7(); // _ZN8S10006C22v7Ev
  virtual void  v8(); // _ZN8S10006C22v8Ev
  virtual void  v9(); // _ZN8S10006C22v9Ev
  virtual void  v10(); // _ZN8S10006C23v10Ev
  virtual void  v11(); // _ZN8S10006C23v11Ev
  virtual void  v12(); // _ZN8S10006C23v12Ev
  S10006C2(); // tgen
};
//SIG(-1 S10006C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 Fc[3] FC2{ Fp Fi[10]} FC3{ Fp[2] FC4{ Fi[8] FC5{ Fi[4]}}[3] Fi[3] Fp[6] Fi[2] Fp Fi FC6{ Fi Fp[2] Fi[2]} Fp[4] Fi[2] Fp[3] FC7{ FC8{ Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi[2]} FC9{ Fp[6] Fi Fp[3] Fi[2] Fp[3] Fi[2]} FC10{ Fi[2] Fp Fi[2]} Fi[10]}} FC7 FC11{ FL[3] Fc} FC5 Fi Fp Fi}


 S10006C2 ::~S10006C2(){ note_dtor("S10006C2", this);}
void  S10006C2 ::v6(){vfunc_called(this, "_ZN8S10006C22v6Ev");}
void  S10006C2 ::v7(){vfunc_called(this, "_ZN8S10006C22v7Ev");}
void  S10006C2 ::v8(){vfunc_called(this, "_ZN8S10006C22v8Ev");}
void  S10006C2 ::v9(){vfunc_called(this, "_ZN8S10006C22v9Ev");}
void  S10006C2 ::v10(){vfunc_called(this, "_ZN8S10006C23v10Ev");}
void  S10006C2 ::v11(){vfunc_called(this, "_ZN8S10006C23v11Ev");}
void  S10006C2 ::v12(){vfunc_called(this, "_ZN8S10006C23v12Ev");}
S10006C2 ::S10006C2(){ note_ctor("S10006C2", this);} // tgen

static void Test_S10006C2()
{
  extern Class_Descriptor cd_S10006C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(127,179)];
    init_test(&cd_S10006C2, buf);
    S10006C2 *dp, &lv = *(dp=new (buf) S10006C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1008,712), "sizeof(S10006C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10006C2)");
    check_field_offset(lv, s10006c2f0, ABISELECT(8,4), "S10006C2.s10006c2f0");
    check_field_offset(lv, s10006c2f1, ABISELECT(16,8), "S10006C2.s10006c2f1");
    check_field_offset(lv, s10006c2f2, ABISELECT(64,52), "S10006C2.s10006c2f2");
    check_field_offset(lv, s10006c2f3, ABISELECT(672,484), "S10006C2.s10006c2f3");
    check_field_offset(lv, s10006c2f4, ABISELECT(936,656), "S10006C2.s10006c2f4");
    check_field_offset(lv, s10006c2f5, ABISELECT(968,684), "S10006C2.s10006c2f5");
    check_field_offset(lv, s10006c2f6, ABISELECT(984,700), "S10006C2.s10006c2f6");
    check_field_offset(lv, s10006c2f7, ABISELECT(992,704), "S10006C2.s10006c2f7");
    check_field_offset(lv, s10006c2f8, ABISELECT(1000,708), "S10006C2.s10006c2f8");
    test_class_info(&lv, &cd_S10006C2);
    dp->~S10006C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10006C2(Test_S10006C2, "S10006C2", ABISELECT(1008,712));

#else // __cplusplus

extern void _ZN8S10006C2C1Ev();
extern void _ZN8S10006C2D1Ev();
Name_Map name_map_S10006C2[] = {
  NSPAIR(_ZN8S10006C2C1Ev),
  NSPAIR(_ZN8S10006C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10006C2[];
extern void _ZN8S10006C2D1Ev();
extern void _ZN8S10006C2D0Ev();
extern void _ZN8S10006C22v6Ev();
extern void _ZN8S10006C22v7Ev();
extern void _ZN8S10006C22v8Ev();
extern void _ZN8S10006C22v9Ev();
extern void _ZN8S10006C23v10Ev();
extern void _ZN8S10006C23v11Ev();
extern void _ZN8S10006C23v12Ev();
static  VTBL_ENTRY vtc_S10006C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10006C2[0]),
  (VTBL_ENTRY)&_ZN8S10006C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10006C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10006C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10006C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10006C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10006C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10006C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10006C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10006C23v12Ev,
};
extern VTBL_ENTRY _ZTI8S10006C2[];
extern  VTBL_ENTRY _ZTV8S10006C2[];
Class_Descriptor cd_S10006C2 = {  "S10006C2", // class name
  0,0,//no base classes
  &(vtc_S10006C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1008,712), // object size
  NSPAIRA(_ZTI8S10006C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10006C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10006C29_nt  {
  long s10006c29f0[4];
};
//SIG(-1 S10006C29_nt) C1{ Fl[4]}



//skip512 S10006C29_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10006C1  : S10006C2 {
  ::S10007C14 s10006c1f0;
  ::S10007C17 s10006c1f1;
  ::S10007C21 s10006c1f2;
  ::S10007C27_nt s10006c1f3;
  ::S10007C28 s10006c1f4;
  void *s10006c1f5[87];
  int s10006c1f6[40];
  ::S10006C29_nt s10006c1f7;
  int s10006c1f8[3];
  char s10006c1f9[2];
  void *s10006c1f10;
  char s10006c1f11;
  ::S10007C30_nt s10006c1f12;
  virtual void  v1(); // _ZN8S10006C12v1Ev
  virtual void  v2(); // _ZN8S10006C12v2Ev
  virtual void  v3(); // _ZN8S10006C12v3Ev
  virtual void  v4(); // _ZN8S10006C12v4Ev
  virtual void  v5(); // _ZN8S10006C12v5Ev
  ~S10006C1(); // tgen
  S10006C1(); // tgen
};
//SIG(1 S10006C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 Fc[3] FC3{ Fp Fi[10]} FC4{ Fp[2] FC5{ Fi[8] FC6{ Fi[4]}}[3] Fi[3] Fp[6] Fi[2] Fp Fi FC7{ Fi Fp[2] Fi[2]} Fp[4] Fi[2] Fp[3] FC8{ FC9{ Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi[2]} FC10{ Fp[6] Fi Fp[3] Fi[2] Fp[3] Fi[2]} FC11{ Fi[2] Fp Fi[2]} Fi[10]}} FC8 FC12{ FL[3] Fc} FC6 Fi Fp Fi} v1 v2 v3 v4 v5 FC13{ m FC14{ Fi[15] Fp[2] Fc[256] Fi Fp FC6} FC14 FC14 Fp[3] FC15{ m Fp[9]}} FC16{ m FC17{ vd v13 v14 Fp Fi[2] Fc FC18{ m FC19{ m FL[2]} FC19 FC19 FC19}} Fp[2] Fc} FC20{ BC21{ BC17 FC19 FC18 FC18 FC18 FC22{ BC23{ m FC24{ m FC19}[6]}}} FC25{ m FL[2]} FC25} FC26{ m FC25} FC27{ Fc Fi Fc[2]} Fp[87] Fi[40] FC28{ Fl[4]} Fi[3] Fc[2] Fp Fc FC29{ FC30{ Fc[20]} Fc[16]}}


void  S10006C1 ::v1(){vfunc_called(this, "_ZN8S10006C12v1Ev");}
void  S10006C1 ::v2(){vfunc_called(this, "_ZN8S10006C12v2Ev");}
void  S10006C1 ::v3(){vfunc_called(this, "_ZN8S10006C12v3Ev");}
void  S10006C1 ::v4(){vfunc_called(this, "_ZN8S10006C12v4Ev");}
void  S10006C1 ::v5(){vfunc_called(this, "_ZN8S10006C12v5Ev");}
S10006C1 ::~S10006C1(){ note_dtor("S10006C1", this);} // tgen
S10006C1 ::S10006C1(){ note_ctor("S10006C1", this);} // tgen

static void Test_S10006C1()
{
  extern Class_Descriptor cd_S10006C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(469,734)];
    init_test(&cd_S10006C1, buf);
    S10006C1 *dp, &lv = *(dp=new (buf) S10006C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3744,2932), "sizeof(S10006C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10006C1)");
    check_base_class_offset(lv, (S10006C2*), 0, "S10006C1");
    check_field_offset(lv, s10006c1f0, ABISELECT(1008,712), "S10006C1.s10006c1f0");
    check_field_offset(lv, s10006c1f1, ABISELECT(2208,1804), "S10006C1.s10006c1f1");
    check_field_offset(lv, s10006c1f2, ABISELECT(2328,1900), "S10006C1.s10006c1f2");
    check_field_offset(lv, s10006c1f3, ABISELECT(2760,2320), "S10006C1.s10006c1f3");
    check_field_offset(lv, s10006c1f4, ABISELECT(2776,2336), "S10006C1.s10006c1f4");
    check_field_offset(lv, s10006c1f5, ABISELECT(2792,2348), "S10006C1.s10006c1f5");
    check_field_offset(lv, s10006c1f6, ABISELECT(3488,2696), "S10006C1.s10006c1f6");
    check_field_offset(lv, s10006c1f7, ABISELECT(3648,2856), "S10006C1.s10006c1f7");
    check_field_offset(lv, s10006c1f8, ABISELECT(3680,2872), "S10006C1.s10006c1f8");
    check_field_offset(lv, s10006c1f9, ABISELECT(3692,2884), "S10006C1.s10006c1f9");
    check_field_offset(lv, s10006c1f10, ABISELECT(3696,2888), "S10006C1.s10006c1f10");
    check_field_offset(lv, s10006c1f11, ABISELECT(3704,2892), "S10006C1.s10006c1f11");
    check_field_offset(lv, s10006c1f12, ABISELECT(3705,2893), "S10006C1.s10006c1f12");
    test_class_info(&lv, &cd_S10006C1);
    dp->~S10006C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10006C1(Test_S10006C1, "S10006C1", ABISELECT(3744,2932));

#else // __cplusplus

extern void _ZN8S10006C1C1Ev();
extern void _ZN8S10006C1D1Ev();
Name_Map name_map_S10006C1[] = {
  NSPAIR(_ZN8S10006C1C1Ev),
  NSPAIR(_ZN8S10006C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10006C2;
extern VTBL_ENTRY _ZTI8S10006C2[];
extern  VTBL_ENTRY _ZTV8S10006C2[];
static Base_Class bases_S10006C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10006C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10006C1[];
extern void _ZN8S10006C1D1Ev();
extern void _ZN8S10006C1D0Ev();
extern void _ZN8S10006C22v6Ev();
extern void _ZN8S10006C22v7Ev();
extern void _ZN8S10006C22v8Ev();
extern void _ZN8S10006C22v9Ev();
extern void _ZN8S10006C23v10Ev();
extern void _ZN8S10006C23v11Ev();
extern void _ZN8S10006C23v12Ev();
extern void _ZN8S10006C12v1Ev();
extern void _ZN8S10006C12v2Ev();
extern void _ZN8S10006C12v3Ev();
extern void _ZN8S10006C12v4Ev();
extern void _ZN8S10006C12v5Ev();
static  VTBL_ENTRY vtc_S10006C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10006C1[0]),
  (VTBL_ENTRY)&_ZN8S10006C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10006C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10006C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10006C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10006C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10006C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10006C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10006C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10006C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10006C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10006C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10006C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10006C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10006C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S10006C1[];
extern  VTBL_ENTRY _ZTV8S10006C1[];
Class_Descriptor cd_S10006C1 = {  "S10006C1", // class name
  bases_S10006C1, 1,
  &(vtc_S10006C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(3744,2932), // object size
  NSPAIRA(_ZTI8S10006C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10006C1),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C2  {
  short s20292c2f0:6;
  long s20292c2f1;
  short s20292c2f2:4;
  __tsi64 s20292c2f3[6];
  long s20292c2f4[7];
  void *s20292c2f5;
  virtual void  v6(); // _ZN8S20292C22v6Ev
  ~S20292C2(); // tgen
  S20292C2(); // tgen
};
//SIG(-1 S20292C2) C1{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}


void  S20292C2 ::v6(){vfunc_called(this, "_ZN8S20292C22v6Ev");}
S20292C2 ::~S20292C2(){ note_dtor("S20292C2", this);} // tgen
S20292C2 ::S20292C2(){ note_ctor("S20292C2", this);} // tgen

static void Test_S20292C2()
{
  extern Class_Descriptor cd_S20292C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,25)];
    init_test(&cd_S20292C2, buf);
    S20292C2 *dp, &lv = *(dp=new (buf) S20292C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,96), "sizeof(S20292C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20292C2)");
    set_bf_and_test(lv, s20292c2f0, ABISELECT(8,4), 0, 6, 1, "S20292C2");
    set_bf_and_test(lv, s20292c2f0, ABISELECT(8,4), 0, 6, hide_sll(1LL<<5), "S20292C2");
    check_field_offset(lv, s20292c2f1, ABISELECT(16,8), "S20292C2.s20292c2f1");
    set_bf_and_test(lv, s20292c2f2, ABISELECT(24,12), 0, 4, 1, "S20292C2");
    set_bf_and_test(lv, s20292c2f2, ABISELECT(24,12), 0, 4, hide_sll(1LL<<3), "S20292C2");
    check_field_offset(lv, s20292c2f3, ABISELECT(32,16), "S20292C2.s20292c2f3");
    check_field_offset(lv, s20292c2f4, ABISELECT(80,64), "S20292C2.s20292c2f4");
    check_field_offset(lv, s20292c2f5, ABISELECT(136,92), "S20292C2.s20292c2f5");
    test_class_info(&lv, &cd_S20292C2);
    dp->~S20292C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C2(Test_S20292C2, "S20292C2", ABISELECT(144,96));

#else // __cplusplus

extern void _ZN8S20292C2C1Ev();
extern void _ZN8S20292C2D1Ev();
Name_Map name_map_S20292C2[] = {
  NSPAIR(_ZN8S20292C2C1Ev),
  NSPAIR(_ZN8S20292C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20292C2[];
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY vtc_S20292C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C2[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
Class_Descriptor cd_S20292C2 = {  "S20292C2", // class name
  0,0,//no base classes
  &(vtc_S20292C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,96), // object size
  NSPAIRA(_ZTI8S20292C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20292C2),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C3  : virtual S20292C2 {
  void *s20292c3f0;
  ::S20292C2 s20292c3f1;
  __tsi64 s20292c3f2:3;
  ~S20292C3(); // tgen
  S20292C3(); // tgen
};
//SIG(-1 S20292C3) C1{ VBC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC2 FL:3}


S20292C3 ::~S20292C3(){ note_dtor("S20292C3", this);} // tgen
S20292C3 ::S20292C3(){ note_ctor("S20292C3", this);} // tgen

static void Test_S20292C3()
{
  extern Class_Descriptor cd_S20292C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,52)];
    init_test(&cd_S20292C3, buf);
    S20292C3 *dp, &lv = *(dp=new (buf) S20292C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,204), "sizeof(S20292C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20292C3)");
    check_base_class_offset(lv, (S20292C2*), ABISELECT(168,108), "S20292C3");
    check_field_offset(lv, s20292c3f0, ABISELECT(8,4), "S20292C3.s20292c3f0");
    check_field_offset(lv, s20292c3f1, ABISELECT(16,8), "S20292C3.s20292c3f1");
    set_bf_and_test(lv, s20292c3f2, ABISELECT(160,104), 0, 3, 1, "S20292C3");
    set_bf_and_test(lv, s20292c3f2, ABISELECT(160,104), 0, 3, hide_sll(1LL<<2), "S20292C3");
    test_class_info(&lv, &cd_S20292C3);
    dp->~S20292C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C3(Test_S20292C3, "S20292C3", ABISELECT(312,204));

#else // __cplusplus

extern void _ZN8S20292C3C1Ev();
extern void _ZN8S20292C3D1Ev();
Name_Map name_map_S20292C3[] = {
  NSPAIR(_ZN8S20292C3C1Ev),
  NSPAIR(_ZN8S20292C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
static Base_Class bases_S20292C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C2,    ABISELECT(168,108), //bcp->offset
    3, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20292C3[];
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY vtc_S20292C3[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern VTBL_ENTRY _ZTV8S20292C3[];
static  VTT_ENTRY vtt_S20292C3[] = {
  {&(_ZTV8S20292C3[3]),  3,7},
  {&(_ZTV8S20292C3[6]),  6,7},
};
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
Class_Descriptor cd_S20292C3 = {  "S20292C3", // class name
  bases_S20292C3, 1,
  &(vtc_S20292C3[0]), // expected_vtbl_contents
  &(vtt_S20292C3[0]), // expected_vtt_contents
  ABISELECT(312,204), // object size
  NSPAIRA(_ZTI8S20292C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20292C3),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20292C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C7  {
  __tsi64 s20292c7f0;
  long double s20292c7f1;
  void *s20292c7f2;
  char s20292c7f3;
  ::S20292C2 s20292c7f4;
  void *s20292c7f5[2];
  long s20292c7f6[8];
  short s20292c7f7;
  void *s20292c7f8;
  __tsi64 s20292c7f9:64;
  virtual void  v7(); // _ZN8S20292C72v7Ev
  ~S20292C7(); // tgen
  S20292C7(); // tgen
};
//SIG(-1 S20292C7) C1{ v1 FL FD Fp Fc FC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64}


void  S20292C7 ::v7(){vfunc_called(this, "_ZN8S20292C72v7Ev");}
S20292C7 ::~S20292C7(){ note_dtor("S20292C7", this);} // tgen
S20292C7 ::S20292C7(){ note_ctor("S20292C7", this);} // tgen

static void Test_S20292C7()
{
  extern Class_Descriptor cd_S20292C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,47)];
    init_test(&cd_S20292C7, buf);
    S20292C7 *dp, &lv = *(dp=new (buf) S20292C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,184), "sizeof(S20292C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C7)");
    check_field_offset(lv, s20292c7f0, ABISELECT(8,4), "S20292C7.s20292c7f0");
    check_field_offset(lv, s20292c7f1, ABISELECT(16,12), "S20292C7.s20292c7f1");
    check_field_offset(lv, s20292c7f2, ABISELECT(32,24), "S20292C7.s20292c7f2");
    check_field_offset(lv, s20292c7f3, ABISELECT(40,28), "S20292C7.s20292c7f3");
    check_field_offset(lv, s20292c7f4, ABISELECT(48,32), "S20292C7.s20292c7f4");
    check_field_offset(lv, s20292c7f5, ABISELECT(192,128), "S20292C7.s20292c7f5");
    check_field_offset(lv, s20292c7f6, ABISELECT(208,136), "S20292C7.s20292c7f6");
    check_field_offset(lv, s20292c7f7, ABISELECT(272,168), "S20292C7.s20292c7f7");
    check_field_offset(lv, s20292c7f8, ABISELECT(280,172), "S20292C7.s20292c7f8");
    set_bf_and_test(lv, s20292c7f9, ABISELECT(288,176), 0, 64, 1, "S20292C7");
    set_bf_and_test(lv, s20292c7f9, ABISELECT(288,176), 0, 64, hide_sll(1LL<<63), "S20292C7");
    test_class_info(&lv, &cd_S20292C7);
    dp->~S20292C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C7(Test_S20292C7, "S20292C7", ABISELECT(304,184));

#else // __cplusplus

extern void _ZN8S20292C7C1Ev();
extern void _ZN8S20292C7D1Ev();
Name_Map name_map_S20292C7[] = {
  NSPAIR(_ZN8S20292C7C1Ev),
  NSPAIR(_ZN8S20292C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20292C7[];
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY vtc_S20292C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C7[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
Class_Descriptor cd_S20292C7 = {  "S20292C7", // class name
  0,0,//no base classes
  &(vtc_S20292C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,184), // object size
  NSPAIRA(_ZTI8S20292C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20292C7),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C8  {
  int s20292c8f0[2];
  long s20292c8f1[2];
  ::S20292C2 s20292c8f2[3];
  virtual void  v8(); // _ZN8S20292C82v8Ev
  virtual void  v9(); // _ZN8S20292C82v9Ev
  virtual void  v10(); // _ZN8S20292C83v10Ev
  ~S20292C8(); // tgen
  S20292C8(); // tgen
};
//SIG(-1 S20292C8) C1{ v1 v2 v3 Fi[2] Fl[2] FC2{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]}


void  S20292C8 ::v8(){vfunc_called(this, "_ZN8S20292C82v8Ev");}
void  S20292C8 ::v9(){vfunc_called(this, "_ZN8S20292C82v9Ev");}
void  S20292C8 ::v10(){vfunc_called(this, "_ZN8S20292C83v10Ev");}
S20292C8 ::~S20292C8(){ note_dtor("S20292C8", this);} // tgen
S20292C8 ::S20292C8(){ note_ctor("S20292C8", this);} // tgen

static void Test_S20292C8()
{
  extern Class_Descriptor cd_S20292C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,78)];
    init_test(&cd_S20292C8, buf);
    S20292C8 *dp, &lv = *(dp=new (buf) S20292C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S20292C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20292C8)");
    check_field_offset(lv, s20292c8f0, ABISELECT(8,4), "S20292C8.s20292c8f0");
    check_field_offset(lv, s20292c8f1, ABISELECT(16,12), "S20292C8.s20292c8f1");
    check_field_offset(lv, s20292c8f2, ABISELECT(32,20), "S20292C8.s20292c8f2");
    test_class_info(&lv, &cd_S20292C8);
    dp->~S20292C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C8(Test_S20292C8, "S20292C8", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN8S20292C8C1Ev();
extern void _ZN8S20292C8D1Ev();
Name_Map name_map_S20292C8[] = {
  NSPAIR(_ZN8S20292C8C1Ev),
  NSPAIR(_ZN8S20292C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20292C8[];
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY vtc_S20292C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C8[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
Class_Descriptor cd_S20292C8 = {  "S20292C8", // class name
  0,0,//no base classes
  &(vtc_S20292C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI8S20292C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20292C8),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C9  : S20292C2 , virtual S20292C8 , virtual S20292C3 , virtual S20292C7 {
  ::S20292C7 s20292c9f0;
  short s20292c9f1;
  int s20292c9f2[2];
  ~S20292C9(); // tgen
  S20292C9(); // tgen
};
//SIG(-1 S20292C9) C1{ BC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ v2 v3 v4 Fi[2] Fl[2] FC2[3]} VBC4{ VBC2 Fp FC2 FL:3} VBC5{ v5 FL FD Fp Fc FC2 Fp[2] Fl[8] Fs Fp FL:64} FC5 Fs Fi[2]}


S20292C9 ::~S20292C9(){ note_dtor("S20292C9", this);} // tgen
S20292C9 ::S20292C9(){ note_ctor("S20292C9", this);} // tgen

static void Test_S20292C9()
{
  extern Class_Descriptor cd_S20292C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,248)];
    init_test(&cd_S20292C9, buf);
    S20292C9 *dp, &lv = *(dp=new (buf) S20292C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,988), "sizeof(S20292C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C9)");
    /*is_ambiguous_... S20292C9::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*), 0, "S20292C9");
    check_base_class_offset(lv, (S20292C8*), ABISELECT(464,292), "S20292C9");
    check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(1096,708), "S20292C9");
    check_base_class_offset(lv, (S20292C3*), ABISELECT(928,600), "S20292C9");
    check_base_class_offset(lv, (S20292C7*), ABISELECT(1248,804), "S20292C9");
    check_field_offset(lv, s20292c9f0, ABISELECT(144,96), "S20292C9.s20292c9f0");
    check_field_offset(lv, s20292c9f1, ABISELECT(448,280), "S20292C9.s20292c9f1");
    check_field_offset(lv, s20292c9f2, ABISELECT(452,284), "S20292C9.s20292c9f2");
    test_class_info(&lv, &cd_S20292C9);
    dp->~S20292C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C9(Test_S20292C9, "S20292C9", ABISELECT(1552,988));

#else // __cplusplus

extern void _ZN8S20292C9C1Ev();
extern void _ZN8S20292C9D1Ev();
Name_Map name_map_S20292C9[] = {
  NSPAIR(_ZN8S20292C9C1Ev),
  NSPAIR(_ZN8S20292C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
static Base_Class bases_S20292C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20292C8,    ABISELECT(464,292), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20292C2,    ABISELECT(1096,708), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20292C3,    ABISELECT(928,600), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20292C7,    ABISELECT(1248,804), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20292C9[];
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY vtc_S20292C9[] = {
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(168,108),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  0,
  ABISELECT(-1096,-708),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern VTBL_ENTRY _ZTV8S20292C9[];
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C9[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__8S20292C9[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTT_ENTRY vtt_S20292C9[] = {
  {&(_ZTV8S20292C9[6]),  6,26},
  {&(_ZTV8S20292C9[12]),  12,26},
  {&(_ZTV8S20292C9[18]),  18,26},
  {&(_ZTV8S20292C9[21]),  21,26},
  {&(_ZTV8S20292C9[25]),  25,26},
  {&(_tg__ZTV8S20292C3__8S20292C9[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__8S20292C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
Class_Descriptor cd_S20292C9 = {  "S20292C9", // class name
  bases_S20292C9, 5,
  &(vtc_S20292C9[0]), // expected_vtbl_contents
  &(vtt_S20292C9[0]), // expected_vtt_contents
  ABISELECT(1552,988), // object size
  NSPAIRA(_ZTI8S20292C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20292C9),26, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20292C9),7, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C6  : S20292C7 , S20292C8 , S20292C2 {
  long s20292c6f0;
  __tsi64 s20292c6f1;
  void *s20292c6f2[8];
  ::S20292C9 s20292c6f3;
  void *s20292c6f4;
  int s20292c6f5;
  ::S20292C9 s20292c6f6;
  int s20292c6f7;
  virtual  ~S20292C6(); // _ZN8S20292C6D1Ev
  virtual void  v11(); // _ZN8S20292C63v11Ev
  S20292C6(); // tgen
};
//SIG(-1 S20292C6) C1{ BC2{ v2 FL FD Fp Fc FC3{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC4{ v3 v4 v5 Fi[2] Fl[2] FC3[3]} BC3 vd v1 Fl FL Fp[8] FC5{ BC3 VBC4 VBC6{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC5 Fi}


 S20292C6 ::~S20292C6(){ note_dtor("S20292C6", this);}
void  S20292C6 ::v11(){vfunc_called(this, "_ZN8S20292C63v11Ev");}
S20292C6 ::S20292C6(){ note_ctor("S20292C6", this);} // tgen

static void Test_S20292C6()
{
  extern Class_Descriptor cd_S20292C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(259,656)];
    init_test(&cd_S20292C6, buf);
    S20292C6 *dp, &lv = *(dp=new (buf) S20292C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4128,2620), "sizeof(S20292C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C6)");
    check_base_class_offset(lv, (S20292C7*), 0, "S20292C6");
    check_base_class_offset(lv, (S20292C8*), ABISELECT(296,184), "S20292C6");
    check_base_class_offset(lv, (S20292C2*), ABISELECT(760,492), "S20292C6");
    check_field_offset(lv, s20292c6f0, ABISELECT(904,588), "S20292C6.s20292c6f0");
    check_field_offset(lv, s20292c6f1, ABISELECT(912,592), "S20292C6.s20292c6f1");
    check_field_offset(lv, s20292c6f2, ABISELECT(920,600), "S20292C6.s20292c6f2");
    check_field_offset(lv, s20292c6f3, ABISELECT(992,632), "S20292C6.s20292c6f3");
    check_field_offset(lv, s20292c6f4, ABISELECT(2544,1620), "S20292C6.s20292c6f4");
    check_field_offset(lv, s20292c6f5, ABISELECT(2552,1624), "S20292C6.s20292c6f5");
    check_field_offset(lv, s20292c6f6, ABISELECT(2560,1628), "S20292C6.s20292c6f6");
    check_field_offset(lv, s20292c6f7, ABISELECT(4112,2616), "S20292C6.s20292c6f7");
    test_class_info(&lv, &cd_S20292C6);
    dp->~S20292C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C6(Test_S20292C6, "S20292C6", ABISELECT(4128,2620));

#else // __cplusplus

extern void _ZN8S20292C6C1Ev();
extern void _ZN8S20292C6D1Ev();
Name_Map name_map_S20292C6[] = {
  NSPAIR(_ZN8S20292C6C1Ev),
  NSPAIR(_ZN8S20292C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
static Base_Class bases_S20292C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20292C8,    ABISELECT(296,184), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20292C2,    ABISELECT(760,492), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20292C6[];
extern void _ZN8S20292C72v7Ev();
extern void _ZN8S20292C6D1Ev();
extern void _ZN8S20292C6D0Ev();
extern void _ZN8S20292C63v11Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY vtc_S20292C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C6[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&_ZN8S20292C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI8S20292C6[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI8S20292C6[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
Class_Descriptor cd_S20292C6 = {  "S20292C6", // class name
  bases_S20292C6, 3,
  &(vtc_S20292C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(4128,2620), // object size
  NSPAIRA(_ZTI8S20292C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20292C6),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C11  : S20292C7 {
  ::S20292C3 s20292c11f0;
  int s20292c11f1;
  void *s20292c11f2;
  int s20292c11f3;
  virtual  ~S20292C11(); // _ZN9S20292C11D1Ev
  virtual void  v13(); // _ZN9S20292C113v13Ev
  S20292C11(); // tgen
};
//SIG(-1 S20292C11) C1{ BC2{ v2 FL FD Fp Fc FC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v1 FC4{ VBC3 Fp FC3 FL:3} Fi Fp Fi}


 S20292C11 ::~S20292C11(){ note_dtor("S20292C11", this);}
void  S20292C11 ::v13(){vfunc_called(this, "_ZN9S20292C113v13Ev");}
S20292C11 ::S20292C11(){ note_ctor("S20292C11", this);} // tgen

static void Test_S20292C11()
{
  extern Class_Descriptor cd_S20292C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,101)];
    init_test(&cd_S20292C11, buf);
    S20292C11 *dp, &lv = *(dp=new (buf) S20292C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,400), "sizeof(S20292C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C11)");
    check_base_class_offset(lv, (S20292C7*), 0, "S20292C11");
    check_field_offset(lv, s20292c11f0, ABISELECT(296,184), "S20292C11.s20292c11f0");
    check_field_offset(lv, s20292c11f1, ABISELECT(608,388), "S20292C11.s20292c11f1");
    check_field_offset(lv, s20292c11f2, ABISELECT(616,392), "S20292C11.s20292c11f2");
    check_field_offset(lv, s20292c11f3, ABISELECT(624,396), "S20292C11.s20292c11f3");
    test_class_info(&lv, &cd_S20292C11);
    dp->~S20292C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C11(Test_S20292C11, "S20292C11", ABISELECT(640,400));

#else // __cplusplus

extern void _ZN9S20292C11C1Ev();
extern void _ZN9S20292C11D1Ev();
Name_Map name_map_S20292C11[] = {
  NSPAIR(_ZN9S20292C11C1Ev),
  NSPAIR(_ZN9S20292C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
static Base_Class bases_S20292C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20292C11[];
extern void _ZN8S20292C72v7Ev();
extern void _ZN9S20292C11D1Ev();
extern void _ZN9S20292C11D0Ev();
extern void _ZN9S20292C113v13Ev();
static  VTBL_ENTRY vtc_S20292C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C11[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&_ZN9S20292C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20292C113v13Ev,
};
extern VTBL_ENTRY _ZTI9S20292C11[];
extern  VTBL_ENTRY _ZTV9S20292C11[];
Class_Descriptor cd_S20292C11 = {  "S20292C11", // class name
  bases_S20292C11, 1,
  &(vtc_S20292C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,400), // object size
  NSPAIRA(_ZTI9S20292C11),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20292C11),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C10  : virtual S20292C7 , virtual S20292C6 , virtual S20292C2 , virtual S20292C3 {
  __tsi64 s20292c10f0:44;
  void *s20292c10f1;
  int s20292c10f2;
  ::S20292C9 s20292c10f3;
  long s20292c10f4[2];
  int s20292c10f5[3];
  ::S20292C6 s20292c10f6;
  char s20292c10f7:7;
  ::S20292C11 s20292c10f8;
  ~S20292C10(); // tgen
  S20292C10(); // tgen
};
//SIG(-1 S20292C10) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} VBC4{ BC2 BC5{ v2 v3 v4 Fi[2] Fl[2] FC3[3]} BC3 vd v6 Fl FL Fp[8] FC6{ BC3 VBC5 VBC7{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC6 Fi} VBC3 VBC7 FL:44 Fp Fi FC6 Fl[2] Fi[3] FC4 Fc:7 FC8{ BC2 vd v7 FC7 Fi Fp Fi}}


S20292C10 ::~S20292C10(){ note_dtor("S20292C10", this);} // tgen
S20292C10 ::S20292C10(){ note_ctor("S20292C10", this);} // tgen

static void Test_S20292C10()
{
  extern Class_Descriptor cd_S20292C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(697,1766)];
    init_test(&cd_S20292C10, buf);
    S20292C10 *dp, &lv = *(dp=new (buf) S20292C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11136,7060), "sizeof(S20292C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C10)");
    /*is_ambiguous_... S20292C10::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*), ABISELECT(6400,4052), "S20292C10");
    check_base_class_offset(lv, (S20292C7*)(S20292C6*), ABISELECT(6704,4236), "S20292C10");
    check_base_class_offset(lv, (S20292C8*)(S20292C6*), ABISELECT(7000,4420), "S20292C10");
    check_base_class_offset(lv, (S20292C2*)(S20292C6*), ABISELECT(7464,4728), "S20292C10");
    check_base_class_offset(lv, (S20292C6*), ABISELECT(6704,4236), "S20292C10");
    /*is_ambiguous_... S20292C10::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*), ABISELECT(10824,6856), "S20292C10");
    check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(10824,6856), "S20292C10");
    check_base_class_offset(lv, (S20292C3*), ABISELECT(10968,6952), "S20292C10");
    set_bf_and_test(lv, s20292c10f0, ABISELECT(8,4), 0, 44, 1, "S20292C10");
    set_bf_and_test(lv, s20292c10f0, ABISELECT(8,4), 0, 44, hide_sll(1LL<<43), "S20292C10");
    check_field_offset(lv, s20292c10f1, ABISELECT(16,12), "S20292C10.s20292c10f1");
    check_field_offset(lv, s20292c10f2, ABISELECT(24,16), "S20292C10.s20292c10f2");
    check_field_offset(lv, s20292c10f3, ABISELECT(32,20), "S20292C10.s20292c10f3");
    check_field_offset(lv, s20292c10f4, ABISELECT(1584,1008), "S20292C10.s20292c10f4");
    check_field_offset(lv, s20292c10f5, ABISELECT(1600,1016), "S20292C10.s20292c10f5");
    check_field_offset(lv, s20292c10f6, ABISELECT(1616,1028), "S20292C10.s20292c10f6");
    set_bf_and_test(lv, s20292c10f7, ABISELECT(5744,3648), 0, 7, 1, "S20292C10");
    set_bf_and_test(lv, s20292c10f7, ABISELECT(5744,3648), 0, 7, hide_sll(1LL<<6), "S20292C10");
    check_field_offset(lv, s20292c10f8, ABISELECT(5760,3652), "S20292C10.s20292c10f8");
    test_class_info(&lv, &cd_S20292C10);
    dp->~S20292C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C10(Test_S20292C10, "S20292C10", ABISELECT(11136,7060));

#else // __cplusplus

extern void _ZN9S20292C10C1Ev();
extern void _ZN9S20292C10D1Ev();
Name_Map name_map_S20292C10[] = {
  NSPAIR(_ZN9S20292C10C1Ev),
  NSPAIR(_ZN9S20292C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
static Base_Class bases_S20292C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C7,    ABISELECT(6400,4052), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20292C7,    ABISELECT(6704,4236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(7000,4420), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20292C2,    ABISELECT(7464,4728), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20292C6,    ABISELECT(6704,4236), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20292C2,    ABISELECT(10824,6856), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20292C3,    ABISELECT(10968,6952), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20292C10[];
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
extern void _ZN8S20292C72v7Ev();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZThn6704_N9S20292C10D1Ev,_ZThn4236_N9S20292C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void ABISELECT(_ZThn6704_N9S20292C10D0Ev,_ZThn4236_N9S20292C10D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY vtc_S20292C10[] = {
  ABISELECT(10968,6952),
  ABISELECT(10824,6856),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-144,-96),
  ABISELECT(-10968,-6952),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
extern VTBL_ENTRY _ZTV9S20292C10[];
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C10[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__9S20292C10[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTT_ENTRY vtt_S20292C10[] = {
  {&(_ZTV9S20292C10[6]),  6,40},
  {&(_ZTV9S20292C10[11]),  11,40},
  {&(_ZTV9S20292C10[21]),  21,40},
  {&(_ZTV9S20292C10[27]),  27,40},
  {&(_ZTV9S20292C10[32]),  32,40},
  {&(_ZTV9S20292C10[36]),  36,40},
  {&(_ZTV9S20292C10[40]),  40,40},
  {&(_tg__ZTV8S20292C3__9S20292C10[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__9S20292C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
static VTBL_ENTRY alt_thunk_names33[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S20292C10D0Ev,_ZThn4236_N9S20292C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S20292C10D1Ev,_ZThn4236_N9S20292C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20292C10 = {  "S20292C10", // class name
  bases_S20292C10, 7,
  &(vtc_S20292C10[0]), // expected_vtbl_contents
  &(vtt_S20292C10[0]), // expected_vtt_contents
  ABISELECT(11136,7060), // object size
  NSPAIRA(_ZTI9S20292C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20292C10),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20292C10),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names33,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C5  : virtual S20292C6 , virtual S20292C2 , virtual S20292C3 , S20292C9 , S20292C10 {
  ::S20292C6 s20292c5f0;
  __tsi64 s20292c5f1;
  char s20292c5f2:7;
  virtual void  v12(); // _ZN8S20292C53v12Ev
  ~S20292C5(); // tgen
  S20292C5(); // tgen
};
//SIG(-1 S20292C5) C1{ VBC2{ BC3{ v2 FL FD Fp Fc FC4{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC5{ v3 v4 v5 Fi[2] Fl[2] FC4[3]} BC4 vd v7 Fl FL Fp[8] FC6{ BC4 VBC5 VBC7{ VBC4 Fp FC4 FL:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC6 Fi} VBC4 VBC7 BC6 BC8{ VBC3 VBC2 VBC4 VBC7 FL:44 Fp Fi FC6 Fl[2] Fi[3] FC2 Fc:7 FC9{ BC3 vd v8 FC7 Fi Fp Fi}} v1 FC2 FL Fc:7}


void  S20292C5 ::v12(){vfunc_called(this, "_ZN8S20292C53v12Ev");}
S20292C5 ::~S20292C5(){ note_dtor("S20292C5", this);} // tgen
S20292C5 ::S20292C5(){ note_ctor("S20292C5", this);} // tgen

static void Test_S20292C5()
{
  extern Class_Descriptor cd_S20292C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1014,2574)];
    init_test(&cd_S20292C5, buf);
    S20292C5 *dp, &lv = *(dp=new (buf) S20292C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16208,10292), "sizeof(S20292C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C5)");
    check_base_class_offset(lv, (S20292C7*)(S20292C6*), ABISELECT(11008,6976), "S20292C5");
    check_base_class_offset(lv, (S20292C8*)(S20292C6*), ABISELECT(11304,7160), "S20292C5");
    check_base_class_offset(lv, (S20292C2*)(S20292C6*), ABISELECT(11768,7468), "S20292C5");
    check_base_class_offset(lv, (S20292C6*), ABISELECT(11008,6976), "S20292C5");
    check_base_class_offset(lv, (S20292C6*)(S20292C10*), ABISELECT(11008,6976), "S20292C5");
    /*is_ambiguous_... S20292C5::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*), ABISELECT(15128,9596), "S20292C5");
    check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(15128,9596), "S20292C5");
    /*is_ambiguous_... S20292C10::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C10*), ABISELECT(15128,9596), "S20292C5");
    check_base_class_offset(lv, (S20292C3*), ABISELECT(15272,9692), "S20292C5");
    check_base_class_offset(lv, (S20292C3*)(S20292C9*), ABISELECT(15272,9692), "S20292C5");
    check_base_class_offset(lv, (S20292C3*)(S20292C10*), ABISELECT(15272,9692), "S20292C5");
    /*is_ambiguous_... S20292C9::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*), 0, "S20292C5");
    check_base_class_offset(lv, (S20292C8*)(S20292C9*), ABISELECT(15440,9800), "S20292C5");
    check_base_class_offset(lv, (S20292C7*)(S20292C9*), ABISELECT(15904,10108), "S20292C5");
    /*is_ambiguous_... S20292C10::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C10*), ABISELECT(15904,10108), "S20292C5");
    check_base_class_offset(lv, (S20292C9*), 0, "S20292C5");
    check_base_class_offset(lv, (S20292C10*), ABISELECT(464,292), "S20292C5");
    check_field_offset(lv, s20292c5f0, ABISELECT(6864,4344), "S20292C5.s20292c5f0");
    check_field_offset(lv, s20292c5f1, ABISELECT(10992,6964), "S20292C5.s20292c5f1");
    set_bf_and_test(lv, s20292c5f2, ABISELECT(11000,6972), 0, 7, 1, "S20292C5");
    set_bf_and_test(lv, s20292c5f2, ABISELECT(11000,6972), 0, 7, hide_sll(1LL<<6), "S20292C5");
    test_class_info(&lv, &cd_S20292C5);
    dp->~S20292C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C5(Test_S20292C5, "S20292C5", ABISELECT(16208,10292));

#else // __cplusplus

extern void _ZN8S20292C5C1Ev();
extern void _ZN8S20292C5D1Ev();
Name_Map name_map_S20292C5[] = {
  NSPAIR(_ZN8S20292C5C1Ev),
  NSPAIR(_ZN8S20292C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C10;
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
static Base_Class bases_S20292C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C7,    ABISELECT(11008,6976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(11304,7160), //bcp->offset
    32, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20292C2,    ABISELECT(11768,7468), //bcp->offset
    37, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20292C6,    ABISELECT(11008,6976), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20292C2,    ABISELECT(15128,9596), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20292C3,    ABISELECT(15272,9692), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20292C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(15440,9800), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20292C7,    ABISELECT(15904,10108), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20292C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20292C10,    ABISELECT(464,292), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20292C5[];
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void _ZN8S20292C5D1Ev();
extern void _ZN8S20292C5D0Ev();
extern void ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev)();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY vtc_S20292C5[] = {
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D0Ev,
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern VTBL_ENTRY _ZTV8S20292C5[];
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C9__8S20292C5[] = {
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C9__8S20292C5[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C9__8S20292C5[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C9__8S20292C5[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C9__8S20292C5[] = {
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C10__8S20292C5[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C10__8S20292C5[] = {
  0,
  ABISELECT(-15440,-9816),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C10__8S20292C5[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__9S20292C10__8S20292C5[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C10__8S20292C5[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C10__8S20292C5[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C10__8S20292C5[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C5[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__8S20292C5[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTT_ENTRY vtt_S20292C5[] = {
  {&(_ZTV8S20292C5[7]),  7,59},
  {&(_tg__ZTV8S20292C9__8S20292C5[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C9__8S20292C5[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C9__8S20292C5[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C9__8S20292C5[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C9__8S20292C5[3]),  3,4},
  {&(_tg__ZTV9S20292C10__8S20292C5[6]),  6,8},
  {&(_tg__ZTV8S20292C7__9S20292C10__8S20292C5[3]),  3,4},
  {&(_tg__ZTV8S20292C6__9S20292C10__8S20292C5[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__9S20292C10__8S20292C5[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C10__8S20292C5[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C10__8S20292C5[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C10__8S20292C5[3]),  3,3},
  {&(_ZTV8S20292C5[28]),  28,59},
  {&(_ZTV8S20292C5[34]),  34,59},
  {&(_ZTV8S20292C5[39]),  39,59},
  {&(_ZTV8S20292C5[43]),  43,59},
  {&(_ZTV8S20292C5[47]),  47,59},
  {&(_ZTV8S20292C5[52]),  52,59},
  {&(_ZTV8S20292C5[58]),  58,59},
  {&(_ZTV8S20292C5[17]),  17,59},
  {&(_tg__ZTV8S20292C3__8S20292C5[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__8S20292C5[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20292C5[];
extern  VTBL_ENTRY _ZTV8S20292C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C5[];
static VTBL_ENTRY alt_thunk_names34[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20292C5 = {  "S20292C5", // class name
  bases_S20292C5, 11,
  &(vtc_S20292C5[0]), // expected_vtbl_contents
  &(vtt_S20292C5[0]), // expected_vtt_contents
  ABISELECT(16208,10292), // object size
  NSPAIRA(_ZTI8S20292C5),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20292C5),59, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20292C5),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names34,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C13  : virtual S20292C7 , S20292C8 , virtual S20292C5 {
  char s20292c13f0:8;
  int s20292c13f1;
  ~S20292C13(); // tgen
  S20292C13(); // tgen
};
//SIG(-1 S20292C13) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC4{ v2 v3 v4 Fi[2] Fl[2] FC3[3]} VBC5{ VBC6{ BC2 BC4 BC3 vd v6 Fl FL Fp[8] FC7{ BC3 VBC4 VBC8{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC7 Fi} VBC3 VBC8 BC7 BC9{ VBC2 VBC6 VBC3 VBC8 FL:44 Fp Fi FC7 Fl[2] Fi[3] FC6 Fc:7 FC10{ BC2 vd v8 FC8 Fi Fp Fi}} v7 FC6 FL Fc:7} Fc:8 Fi}


S20292C13 ::~S20292C13(){ note_dtor("S20292C13", this);} // tgen
S20292C13 ::S20292C13(){ note_ctor("S20292C13", this);} // tgen

static void Test_S20292C13()
{
  extern Class_Descriptor cd_S20292C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1044,2653)];
    init_test(&cd_S20292C13, buf);
    S20292C13 *dp, &lv = *(dp=new (buf) S20292C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16688,10608), "sizeof(S20292C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C13)");
    /*is_ambiguous_... S20292C13::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*), ABISELECT(480,316), "S20292C13");
    check_base_class_offset(lv, (S20292C7*)(S20292C9*)(S20292C5*), ABISELECT(480,316), "S20292C13");
    /*is_ambiguous_... S20292C10::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C10*)(S20292C5*), ABISELECT(480,316), "S20292C13");
    /*is_ambiguous_... S20292C13::S20292C8 */ AMB_check_base_class_offset(lv, (S20292C8*), 0, "S20292C13");
    check_base_class_offset(lv, (S20292C7*)(S20292C6*), ABISELECT(11792,7476), "S20292C13");
    check_base_class_offset(lv, (S20292C8*)(S20292C6*), ABISELECT(12088,7660), "S20292C13");
    check_base_class_offset(lv, (S20292C2*)(S20292C6*), ABISELECT(12552,7968), "S20292C13");
    check_base_class_offset(lv, (S20292C6*)(S20292C5*), ABISELECT(11792,7476), "S20292C13");
    check_base_class_offset(lv, (S20292C6*)(S20292C10*)(S20292C5*), ABISELECT(11792,7476), "S20292C13");
    /*is_ambiguous_... S20292C5::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C5*), ABISELECT(15912,10096), "S20292C13");
    check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(15912,10096), "S20292C13");
    /*is_ambiguous_... S20292C10::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C10*)(S20292C5*), ABISELECT(15912,10096), "S20292C13");
    check_base_class_offset(lv, (S20292C3*)(S20292C5*), ABISELECT(16056,10192), "S20292C13");
    check_base_class_offset(lv, (S20292C3*)(S20292C9*)(S20292C5*), ABISELECT(16056,10192), "S20292C13");
    check_base_class_offset(lv, (S20292C3*)(S20292C10*)(S20292C5*), ABISELECT(16056,10192), "S20292C13");
    /*is_ambiguous_... S20292C9::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*)(S20292C5*), ABISELECT(784,500), "S20292C13");
    check_base_class_offset(lv, (S20292C8*)(S20292C9*)(S20292C5*), ABISELECT(16224,10300), "S20292C13");
    check_base_class_offset(lv, (S20292C9*)(S20292C5*), ABISELECT(784,500), "S20292C13");
    check_base_class_offset(lv, (S20292C10*)(S20292C5*), ABISELECT(1248,792), "S20292C13");
    check_base_class_offset(lv, (S20292C5*), ABISELECT(784,500), "S20292C13");
    set_bf_and_test(lv, s20292c13f0, ABISELECT(464,308), 0, 8, 1, "S20292C13");
    set_bf_and_test(lv, s20292c13f0, ABISELECT(464,308), 0, 8, hide_sll(1LL<<7), "S20292C13");
    check_field_offset(lv, s20292c13f1, ABISELECT(468,312), "S20292C13.s20292c13f1");
    test_class_info(&lv, &cd_S20292C13);
    dp->~S20292C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C13(Test_S20292C13, "S20292C13", ABISELECT(16688,10608));

#else // __cplusplus

extern void _ZN9S20292C13C1Ev();
extern void _ZN9S20292C13D1Ev();
Name_Map name_map_S20292C13[] = {
  NSPAIR(_ZN9S20292C13C1Ev),
  NSPAIR(_ZN9S20292C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C10;
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
extern Class_Descriptor cd_S20292C5;
extern VTBL_ENTRY _ZTI8S20292C5[];
extern  VTBL_ENTRY _ZTV8S20292C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C5[];
static Base_Class bases_S20292C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C7,    ABISELECT(480,316), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20292C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20292C7,    ABISELECT(11792,7476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(12088,7660), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20292C2,    ABISELECT(12552,7968), //bcp->offset
    57, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20292C6,    ABISELECT(11792,7476), //bcp->offset
    39, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20292C2,    ABISELECT(15912,10096), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20292C3,    ABISELECT(16056,10192), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20292C2,    ABISELECT(784,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(16224,10300), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20292C9,    ABISELECT(784,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20292C10,    ABISELECT(1248,792), //bcp->offset
    31, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20292C5,    ABISELECT(784,500), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20292C13[];
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN9S20292C13D1Ev();
extern void _ZN9S20292C13D0Ev();
extern void _ZN8S20292C72v7Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZThn784_N9S20292C13D1Ev,_ZThn500_N9S20292C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev)();
extern void ABISELECT(_ZThn784_N9S20292C13D0Ev,_ZThn500_N9S20292C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev)();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev)();
extern void ABISELECT(_ZThn11792_N9S20292C13D1Ev,_ZThn7476_N9S20292C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev)();
extern void ABISELECT(_ZThn11792_N9S20292C13D0Ev,_ZThn7476_N9S20292C13D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY vtc_S20292C13[] = {
  ABISELECT(16224,10300),
  ABISELECT(16056,10192),
  ABISELECT(15912,10096),
  ABISELECT(11792,7476),
  ABISELECT(784,500),
  ABISELECT(480,316),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D0Ev,
  0,
  ABISELECT(-480,-316),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  ABISELECT(-784,-500),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-784,-500),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-1248,-792),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11792,-7476),
  0,
  ABISELECT(-11792,-7476),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  ABISELECT(-12088,-7660),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-12552,-7968),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  ABISELECT(-15912,-10096),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-144,-96),
  ABISELECT(-16056,-10192),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  0,
  0,
  0,
  ABISELECT(-16224,-10300),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern VTBL_ENTRY _ZTV9S20292C13[];
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void _ZN8S20292C5D1Ev();
extern void _ZN8S20292C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C13[] = {
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D0Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C98S20292C5__9S20292C13[] = {
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C98S20292C5__9S20292C13[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C98S20292C5__9S20292C13[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C98S20292C5__9S20292C13[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C98S20292C5__9S20292C13[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C13[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C108S20292C5__9S20292C13[] = {
  0,
  ABISELECT(768,476),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C108S20292C5__9S20292C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__9S20292C13[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__9S20292C13[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C108S20292C5__9S20292C13[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C108S20292C5__9S20292C13[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__8S20292C5__9S20292C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__8S20292C5__9S20292C13[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__8S20292C5__9S20292C13[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C5__9S20292C13[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C5__9S20292C13[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A1__8S20292C5__9S20292C13[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__A1__8S20292C5__9S20292C13[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C10__8S20292C5__9S20292C13[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C13[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__9S20292C13[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTT_ENTRY vtt_S20292C13[] = {
  {&(_ZTV9S20292C13[8]),  8,75},
  {&(_ZTV9S20292C13[16]),  16,75},
  {&(_ZTV9S20292C13[27]),  27,75},
  {&(_ZTV9S20292C13[48]),  48,75},
  {&(_ZTV9S20292C13[54]),  54,75},
  {&(_ZTV9S20292C13[59]),  59,75},
  {&(_ZTV9S20292C13[63]),  63,75},
  {&(_ZTV9S20292C13[67]),  67,75},
  {&(_ZTV9S20292C13[72]),  72,75},
  {&(_ZTV9S20292C13[37]),  37,75},
  {&(_tg__ZTV8S20292C5__9S20292C13[7]),  7,11},
  {&(_tg__ZTV8S20292C98S20292C5__9S20292C13[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C98S20292C5__9S20292C13[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C98S20292C5__9S20292C13[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C98S20292C5__9S20292C13[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C98S20292C5__9S20292C13[3]),  3,4},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C13[6]),  6,8},
  {&(_tg__ZTV8S20292C7__9S20292C108S20292C5__9S20292C13[3]),  3,4},
  {&(_tg__ZTV8S20292C6__9S20292C108S20292C5__9S20292C13[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__9S20292C13[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__9S20292C13[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C108S20292C5__9S20292C13[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C108S20292C5__9S20292C13[3]),  3,3},
  {&(_tg__ZTV8S20292C6__8S20292C5__9S20292C13[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__8S20292C5__9S20292C13[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__8S20292C5__9S20292C13[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C5__9S20292C13[3]),  3,4},
  {&(_tg__ZTV8S20292C3__8S20292C5__9S20292C13[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A1__8S20292C5__9S20292C13[5]),  5,8},
  {&(_tg__ZTV8S20292C7__A1__8S20292C5__9S20292C13[3]),  3,4},
  {&(_tg__ZTV9S20292C10__8S20292C5__9S20292C13[6]),  6,8},
  {&(_tg__ZTV8S20292C3__9S20292C13[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__9S20292C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20292C13[];
extern  VTBL_ENTRY _ZTV9S20292C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C13[];
static VTBL_ENTRY alt_thunk_names35[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N9S20292C13D0Ev,_ZThn7476_N9S20292C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N9S20292C13D1Ev,_ZThn7476_N9S20292C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S20292C13D0Ev,_ZThn500_N9S20292C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S20292C13D1Ev,_ZThn500_N9S20292C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20292C13 = {  "S20292C13", // class name
  bases_S20292C13, 13,
  &(vtc_S20292C13[0]), // expected_vtbl_contents
  &(vtt_S20292C13[0]), // expected_vtt_contents
  ABISELECT(16688,10608), // object size
  NSPAIRA(_ZTI9S20292C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20292C13),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20292C13),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names35,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C12  : S20292C2 , virtual S20292C7 , virtual S20292C13 , S20292C9 , S20292C11 {
  int s20292c12f0;
  ::S20292C9 s20292c12f1;
  int s20292c12f2;
  short s20292c12f3;
  __tsi64 s20292c12f4:8;
  int s20292c12f5;
  virtual  ~S20292C12(); // _ZN9S20292C12D2Ev
  virtual void  v14(); // _ZN9S20292C123v14Ev
  S20292C12(); // tgen
};
//SIG(-1 S20292C12) C1{ BC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ v3 FL FD Fp Fc FC2 Fp[2] Fl[8] Fs Fp FL:64} VBC4{ VBC3 BC5{ v4 v5 v6 Fi[2] Fl[2] FC2[3]} VBC6{ VBC7{ BC3 BC5 BC2 vd v7 Fl FL Fp[8] FC8{ BC2 VBC5 VBC9{ VBC2 Fp FC2 FL:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC8 Fi} VBC2 VBC9 BC8 BC10{ VBC3 VBC7 VBC2 VBC9 FL:44 Fp Fi FC8 Fl[2] Fi[3] FC7 Fc:7 FC11{ BC3 vd v9 FC9 Fi Fp Fi}} v8 FC7 FL Fc:7} Fc:8 Fi} BC8 BC11 vd v1 Fi FC8 Fi Fs FL:8 Fi}


 S20292C12 ::~S20292C12(){ note_dtor("S20292C12", this);}
void  S20292C12 ::v14(){vfunc_called(this, "_ZN9S20292C123v14Ev");}
S20292C12 ::S20292C12(){ note_ctor("S20292C12", this);} // tgen

static void Test_S20292C12()
{
  extern Class_Descriptor cd_S20292C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1219,3101)];
    init_test(&cd_S20292C12, buf);
    S20292C12 *dp, &lv = *(dp=new (buf) S20292C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(19488,12400), "sizeof(S20292C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C12)");
    /*is_ambiguous_... S20292C12::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*), 0, "S20292C12");
    /*is_ambiguous_... S20292C12::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*), ABISELECT(2816,1792), "S20292C12");
    /*is_ambiguous_... S20292C13::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C13*), ABISELECT(2816,1792), "S20292C12");
    check_base_class_offset(lv, (S20292C7*)(S20292C9*)(S20292C5*), ABISELECT(2816,1792), "S20292C12");
    /*is_ambiguous_... S20292C10::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C10*)(S20292C5*), ABISELECT(2816,1792), "S20292C12");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C9*), ABISELECT(2816,1792), "S20292C12");
    /*is_ambiguous_... S20292C13::S20292C8 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C13*), ABISELECT(3112,1976), "S20292C12");
    check_base_class_offset(lv, (S20292C7*)(S20292C6*), ABISELECT(14592,9268), "S20292C12");
    check_base_class_offset(lv, (S20292C8*)(S20292C6*), ABISELECT(14888,9452), "S20292C12");
    check_base_class_offset(lv, (S20292C2*)(S20292C6*), ABISELECT(15352,9760), "S20292C12");
    check_base_class_offset(lv, (S20292C6*)(S20292C5*), ABISELECT(14592,9268), "S20292C12");
    check_base_class_offset(lv, (S20292C6*)(S20292C10*)(S20292C5*), ABISELECT(14592,9268), "S20292C12");
    /*is_ambiguous_... S20292C5::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C5*), ABISELECT(18712,11888), "S20292C12");
    check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(18712,11888), "S20292C12");
    /*is_ambiguous_... S20292C10::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C10*)(S20292C5*), ABISELECT(18712,11888), "S20292C12");
    check_base_class_offset(lv, (S20292C3*)(S20292C5*), ABISELECT(18856,11984), "S20292C12");
    check_base_class_offset(lv, (S20292C3*)(S20292C9*)(S20292C5*), ABISELECT(18856,11984), "S20292C12");
    check_base_class_offset(lv, (S20292C3*)(S20292C10*)(S20292C5*), ABISELECT(18856,11984), "S20292C12");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C3*)(S20292C9*), ABISELECT(18856,11984), "S20292C12");
    /*is_ambiguous_... S20292C9::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*)(S20292C5*), ABISELECT(3584,2292), "S20292C12");
    check_base_class_offset(lv, (S20292C8*)(S20292C9*)(S20292C5*), ABISELECT(19024,12092), "S20292C12");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C9*), ABISELECT(19024,12092), "S20292C12");
    check_base_class_offset(lv, (S20292C9*)(S20292C5*), ABISELECT(3584,2292), "S20292C12");
    check_base_class_offset(lv, (S20292C10*)(S20292C5*), ABISELECT(4048,2584), "S20292C12");
    check_base_class_offset(lv, (S20292C5*)(S20292C13*), ABISELECT(3584,2292), "S20292C12");
    check_base_class_offset(lv, (S20292C13*), ABISELECT(3112,1976), "S20292C12");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*), ABISELECT(144,96), "S20292C12");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C9*), ABISELECT(144,96), "S20292C12");
    check_base_class_offset(lv, (S20292C7*)(S20292C11*), ABISELECT(608,388), "S20292C12");
    check_base_class_offset(lv, (S20292C11*), ABISELECT(608,388), "S20292C12");
    check_field_offset(lv, s20292c12f0, ABISELECT(1236,788), "S20292C12.s20292c12f0");
    check_field_offset(lv, s20292c12f1, ABISELECT(1248,792), "S20292C12.s20292c12f1");
    check_field_offset(lv, s20292c12f2, ABISELECT(2800,1780), "S20292C12.s20292c12f2");
    check_field_offset(lv, s20292c12f3, ABISELECT(2804,1784), "S20292C12.s20292c12f3");
    set_bf_and_test(lv, s20292c12f4, ABISELECT(2806,1786), 0, 8, 1, "S20292C12");
    set_bf_and_test(lv, s20292c12f4, ABISELECT(2806,1786), 0, 8, hide_sll(1LL<<7), "S20292C12");
    check_field_offset(lv, s20292c12f5, ABISELECT(2808,1788), "S20292C12.s20292c12f5");
    test_class_info(&lv, &cd_S20292C12);
    dp->~S20292C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C12(Test_S20292C12, "S20292C12", ABISELECT(19488,12400));

#else // __cplusplus

extern void _ZN9S20292C12C1Ev();
extern void _ZN9S20292C12D2Ev();
Name_Map name_map_S20292C12[] = {
  NSPAIR(_ZN9S20292C12C1Ev),
  NSPAIR(_ZN9S20292C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C10;
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
extern Class_Descriptor cd_S20292C5;
extern VTBL_ENTRY _ZTI8S20292C5[];
extern  VTBL_ENTRY _ZTV8S20292C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C5[];
extern Class_Descriptor cd_S20292C13;
extern VTBL_ENTRY _ZTI9S20292C13[];
extern  VTBL_ENTRY _ZTV9S20292C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C13[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C11;
extern VTBL_ENTRY _ZTI9S20292C11[];
extern  VTBL_ENTRY _ZTV9S20292C11[];
static Base_Class bases_S20292C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20292C7,    ABISELECT(2816,1792), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20292C8,    ABISELECT(3112,1976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20292C7,    ABISELECT(14592,9268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(14888,9452), //bcp->offset
    82, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20292C2,    ABISELECT(15352,9760), //bcp->offset
    87, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20292C6,    ABISELECT(14592,9268), //bcp->offset
    69, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20292C2,    ABISELECT(18712,11888), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20292C3,    ABISELECT(18856,11984), //bcp->offset
    94, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20292C2,    ABISELECT(3584,2292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(19024,12092), //bcp->offset
    97, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20292C9,    ABISELECT(3584,2292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20292C10,    ABISELECT(4048,2584), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20292C5,    ABISELECT(3584,2292), //bcp->offset
    47, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20292C13,    ABISELECT(3112,1976), //bcp->offset
    30, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20292C2,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20292C9,    ABISELECT(144,96), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20292C7,    ABISELECT(608,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20292C11,    ABISELECT(608,388), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20292C12[];
extern void _ZN8S20292C22v6Ev();
extern void _ZN9S20292C12D1Ev();
extern void _ZN9S20292C12D0Ev();
extern void _ZN9S20292C123v14Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZThn608_N9S20292C12D1Ev,_ZThn388_N9S20292C12D1Ev)();
extern void ABISELECT(_ZThn608_N9S20292C12D0Ev,_ZThn388_N9S20292C12D0Ev)();
extern void _ZN9S20292C113v13Ev();
extern void _ZN8S20292C72v7Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void ABISELECT(_ZTv0_n96_N9S20292C12D1Ev,_ZTv0_n48_N9S20292C12D1Ev)();
extern void ABISELECT(_ZThn3112_N9S20292C12D1Ev,_ZThn1976_N9S20292C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20292C12D0Ev,_ZTv0_n48_N9S20292C12D0Ev)();
extern void ABISELECT(_ZThn3112_N9S20292C12D0Ev,_ZThn1976_N9S20292C12D0Ev)() __attribute__((weak));
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20292C12D1Ev,_ZTv0_n40_N9S20292C12D1Ev)();
extern void ABISELECT(_ZThn3584_N9S20292C12D1Ev,_ZThn2292_N9S20292C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20292C12D0Ev,_ZTv0_n40_N9S20292C12D0Ev)();
extern void ABISELECT(_ZThn3584_N9S20292C12D0Ev,_ZThn2292_N9S20292C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S20292C12D1Ev,_ZTvn292_n40_N9S20292C12D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S20292C12D0Ev,_ZTvn292_n40_N9S20292C12D0Ev)();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C12D1Ev,_ZTv0_n16_N9S20292C12D1Ev)();
extern void ABISELECT(_ZThn14592_N9S20292C12D1Ev,_ZThn9268_N9S20292C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C12D0Ev,_ZTv0_n16_N9S20292C12D0Ev)();
extern void ABISELECT(_ZThn14592_N9S20292C12D0Ev,_ZThn9268_N9S20292C12D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY vtc_S20292C12[] = {
  ABISELECT(19024,12092),
  ABISELECT(18856,11984),
  ABISELECT(18712,11888),
  ABISELECT(14592,9268),
  ABISELECT(3584,2292),
  ABISELECT(3112,1976),
  ABISELECT(2816,1792),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN9S20292C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20292C123v14Ev,
  ABISELECT(2672,1696),
  ABISELECT(18568,11792),
  ABISELECT(18712,11888),
  ABISELECT(18880,11996),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S20292C12D1Ev,_ZThn388_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S20292C12D0Ev,_ZThn388_N9S20292C12D0Ev),
  (VTBL_ENTRY)&_ZN9S20292C113v13Ev,
  0,
  ABISELECT(-2816,-1792),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  ABISELECT(-3112,-1976),
  0,
  0,
  0,
  ABISELECT(15912,10116),
  ABISELECT(15744,10008),
  ABISELECT(15600,9912),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  ABISELECT(-3112,-1976),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20292C12D1Ev,_ZTv0_n48_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20292C12D0Ev,_ZTv0_n48_N9S20292C12D0Ev),
  ABISELECT(-3584,-2292),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-3584,-2292),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C12D1Ev,_ZTv0_n40_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C12D0Ev,_ZTv0_n40_N9S20292C12D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-4048,-2584),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C12D1Ev,_ZTvn292_n40_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C12D0Ev,_ZTvn292_n40_N9S20292C12D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-14592,-9268),
  0,
  ABISELECT(-14592,-9268),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C12D1Ev,_ZTv0_n16_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C12D0Ev,_ZTv0_n16_N9S20292C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  ABISELECT(-14888,-9452),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-15352,-9760),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  ABISELECT(-18712,-11888),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-144,-96),
  ABISELECT(-18856,-11984),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  0,
  0,
  0,
  ABISELECT(-19024,-12092),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern VTBL_ENTRY _ZTV9S20292C12[];
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C9__A1__9S20292C12[] = {
  ABISELECT(2672,1696),
  ABISELECT(18568,11792),
  ABISELECT(18712,11888),
  ABISELECT(18880,11996),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C9__A1__9S20292C12[] = {
  0,
  0,
  0,
  ABISELECT(-18880,-11996),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C9__A1__9S20292C12[] = {
  ABISELECT(-144,-96),
  ABISELECT(-18712,-11888),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C9__A1__9S20292C12[] = {
  0,
  ABISELECT(-18568,-11792),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C9__A1__9S20292C12[] = {
  0,
  ABISELECT(-2672,-1696),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN9S20292C13D1Ev();
extern void _ZN9S20292C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C13__9S20292C12[] = {
  ABISELECT(15912,10116),
  ABISELECT(15744,10008),
  ABISELECT(15600,9912),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C13__9S20292C12[] = {
  0,
  ABISELECT(296,184),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZThn472_N9S20292C13D1Ev,_ZThn316_N9S20292C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev)();
extern void ABISELECT(_ZThn472_N9S20292C13D0Ev,_ZThn316_N9S20292C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C13__9S20292C12[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev)();
extern void ABISELECT(_ZThn11480_N9S20292C13D1Ev,_ZThn7292_N9S20292C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev)();
extern void ABISELECT(_ZThn11480_N9S20292C13D0Ev,_ZThn7292_N9S20292C13D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C13__9S20292C12[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11480,-7292),
  0,
  ABISELECT(-11480,-7292),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__A1__9S20292C13__9S20292C12[] = {
  ABISELECT(-11776,-7476),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C13__9S20292C12[] = {
  ABISELECT(-12240,-7784),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C13__9S20292C12[] = {
  0,
  ABISELECT(-15600,-9912),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C13__9S20292C12[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15744,-10008),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A2__9S20292C13__9S20292C12[] = {
  0,
  0,
  0,
  ABISELECT(-15912,-10116),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C13__9S20292C12[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev),
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void _ZN8S20292C5D1Ev();
extern void _ZN8S20292C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C12[] = {
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D0Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C98S20292C5__9S20292C12[] = {
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C98S20292C5__9S20292C12[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C98S20292C5__9S20292C12[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C98S20292C5__9S20292C12[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C98S20292C5__9S20292C12[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C12[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C108S20292C5__9S20292C12[] = {
  0,
  ABISELECT(1232,792),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C108S20292C5__9S20292C12[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__9S20292C12[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__9S20292C12[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C108S20292C5__9S20292C12[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C108S20292C5__9S20292C12[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__8S20292C5__9S20292C12[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__8S20292C5__9S20292C12[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__8S20292C5__9S20292C12[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C5__9S20292C12[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C5__9S20292C12[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A1__8S20292C5__9S20292C12[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__A1__8S20292C5__9S20292C12[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C10__8S20292C5__9S20292C12[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C12[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__9S20292C12[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTT_ENTRY vtt_S20292C12[] = {
  {&(_ZTV9S20292C12[9]),  9,105},
  {&(_tg__ZTV8S20292C9__A1__9S20292C12[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C9__A1__9S20292C12[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C9__A1__9S20292C12[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C9__A1__9S20292C12[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C9__A1__9S20292C12[3]),  3,4},
  {&(_ZTV9S20292C12[29]),  29,105},
  {&(_ZTV9S20292C12[42]),  42,105},
  {&(_ZTV9S20292C12[57]),  57,105},
  {&(_ZTV9S20292C12[78]),  78,105},
  {&(_ZTV9S20292C12[84]),  84,105},
  {&(_ZTV9S20292C12[89]),  89,105},
  {&(_ZTV9S20292C12[93]),  93,105},
  {&(_ZTV9S20292C12[97]),  97,105},
  {&(_ZTV9S20292C12[102]),  102,105},
  {&(_ZTV9S20292C12[67]),  67,105},
  {&(_ZTV9S20292C12[19]),  19,105},
  {&(_tg__ZTV9S20292C13__9S20292C12[8]),  8,13},
  {&(_tg__ZTV8S20292C7__9S20292C13__9S20292C12[3]),  3,4},
  {&(_tg__ZTV8S20292C5__9S20292C13__9S20292C12[10]),  10,14},
  {&(_tg__ZTV8S20292C6__9S20292C13__9S20292C12[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__A1__9S20292C13__9S20292C12[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C13__9S20292C12[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C13__9S20292C12[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C13__9S20292C12[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A2__9S20292C13__9S20292C12[5]),  5,8},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C13__9S20292C12[6]),  6,8},
  {&(_tg__ZTV8S20292C5__9S20292C12[7]),  7,11},
  {&(_tg__ZTV8S20292C98S20292C5__9S20292C12[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C98S20292C5__9S20292C12[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C98S20292C5__9S20292C12[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C98S20292C5__9S20292C12[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C98S20292C5__9S20292C12[3]),  3,4},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C12[6]),  6,8},
  {&(_tg__ZTV8S20292C7__9S20292C108S20292C5__9S20292C12[3]),  3,4},
  {&(_tg__ZTV8S20292C6__9S20292C108S20292C5__9S20292C12[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__9S20292C12[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__9S20292C12[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C108S20292C5__9S20292C12[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C108S20292C5__9S20292C12[3]),  3,3},
  {&(_tg__ZTV8S20292C6__8S20292C5__9S20292C12[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__8S20292C5__9S20292C12[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__8S20292C5__9S20292C12[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C5__9S20292C12[3]),  3,4},
  {&(_tg__ZTV8S20292C3__8S20292C5__9S20292C12[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A1__8S20292C5__9S20292C12[5]),  5,8},
  {&(_tg__ZTV8S20292C7__A1__8S20292C5__9S20292C12[3]),  3,4},
  {&(_tg__ZTV9S20292C10__8S20292C5__9S20292C12[6]),  6,8},
  {&(_tg__ZTV8S20292C3__9S20292C12[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__9S20292C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20292C12[];
extern  VTBL_ENTRY _ZTV9S20292C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C12[];
static VTBL_ENTRY alt_thunk_names36[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S20292C13D0Ev,_ZThn7292_N9S20292C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S20292C13D1Ev,_ZThn7292_N9S20292C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S20292C13D0Ev,_ZThn316_N9S20292C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S20292C13D1Ev,_ZThn316_N9S20292C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C12D0Ev,_ZTv0_n16_N9S20292C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N9S20292C12D0Ev,_ZThn9268_N9S20292C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C12D1Ev,_ZTv0_n16_N9S20292C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N9S20292C12D1Ev,_ZThn9268_N9S20292C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C12D0Ev,_ZTv0_n40_N9S20292C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N9S20292C12D0Ev,_ZThn2292_N9S20292C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C12D1Ev,_ZTv0_n40_N9S20292C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N9S20292C12D1Ev,_ZThn2292_N9S20292C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20292C12D0Ev,_ZTv0_n48_N9S20292C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N9S20292C12D0Ev,_ZThn1976_N9S20292C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20292C12D1Ev,_ZTv0_n48_N9S20292C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N9S20292C12D1Ev,_ZThn1976_N9S20292C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20292C12 = {  "S20292C12", // class name
  bases_S20292C12, 19,
  &(vtc_S20292C12[0]), // expected_vtbl_contents
  &(vtt_S20292C12[0]), // expected_vtt_contents
  ABISELECT(19488,12400), // object size
  NSPAIRA(_ZTI9S20292C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20292C12),105, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20292C12),50, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names36,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C4  : virtual S20292C5 , virtual S20292C12 , S20292C3 , S20292C13 {
  char s20292c4f0;
  ::S19763C18_nt s20292c4f1;
  void *s20292c4f2;
  ~S20292C4(); // tgen
  S20292C4(); // tgen
};
//SIG(-1 S20292C4) C1{ VBC2{ VBC3{ BC4{ v1 FL FD Fp Fc FC5{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC6{ v2 v3 v4 Fi[2] Fl[2] FC5[3]} BC5 vd v6 Fl FL Fp[8] FC7{ BC5 VBC6 VBC8{ VBC5 Fp FC5 FL:3} VBC4 FC4 Fs Fi[2]} Fp Fi FC7 Fi} VBC5 VBC8 BC7 BC9{ VBC4 VBC3 VBC5 VBC8 FL:44 Fp Fi FC7 Fl[2] Fi[3] FC3 Fc:7 FC10{ BC4 vd v8 FC8 Fi Fp Fi}} v7 FC3 FL Fc:7} VBC11{ BC5 VBC4 VBC12{ VBC4 BC6 VBC2 Fc:8 Fi} BC7 BC10 vd v9 Fi FC7 Fi Fs FL:8 Fi} BC8 BC12 Fc FC13{} Fp}


S20292C4 ::~S20292C4(){ note_dtor("S20292C4", this);} // tgen
S20292C4 ::S20292C4(){ note_ctor("S20292C4", this);} // tgen

static void Test_S20292C4()
{
  extern Class_Descriptor cd_S20292C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1261,3209)];
    init_test(&cd_S20292C4, buf);
    S20292C4 *dp, &lv = *(dp=new (buf) S20292C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(20160,12832), "sizeof(S20292C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C4)");
    check_base_class_offset(lv, (S20292C7*)(S20292C6*), ABISELECT(11664,7408), "S20292C4");
    check_base_class_offset(lv, (S20292C8*)(S20292C6*), ABISELECT(11960,7592), "S20292C4");
    check_base_class_offset(lv, (S20292C2*)(S20292C6*), ABISELECT(12424,7900), "S20292C4");
    check_base_class_offset(lv, (S20292C6*)(S20292C5*), ABISELECT(11664,7408), "S20292C4");
    check_base_class_offset(lv, (S20292C6*)(S20292C10*)(S20292C5*), ABISELECT(11664,7408), "S20292C4");
    /*is_ambiguous_... S20292C5::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C5*), ABISELECT(15784,10028), "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C3 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(15784,10028), "S20292C4");
    /*is_ambiguous_... S20292C10::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C10*)(S20292C5*), ABISELECT(15784,10028), "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C3 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(15784,10028), "S20292C4");
    check_base_class_offset(lv, (S20292C3*)(S20292C5*), ABISELECT(15928,10124), "S20292C4");
    check_base_class_offset(lv, (S20292C3*)(S20292C9*)(S20292C5*), ABISELECT(15928,10124), "S20292C4");
    check_base_class_offset(lv, (S20292C3*)(S20292C10*)(S20292C5*), ABISELECT(15928,10124), "S20292C4");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C3*)(S20292C9*)(S20292C12*), ABISELECT(15928,10124), "S20292C4");
    /*is_ambiguous_... S20292C9::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*)(S20292C5*), ABISELECT(656,432), "S20292C4");
    check_base_class_offset(lv, (S20292C8*)(S20292C9*)(S20292C5*), ABISELECT(16096,10232), "S20292C4");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C9*)(S20292C12*), ABISELECT(16096,10232), "S20292C4");
    check_base_class_offset(lv, (S20292C7*)(S20292C9*)(S20292C5*), ABISELECT(16560,10540), "S20292C4");
    /*is_ambiguous_... S20292C10::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C10*)(S20292C5*), ABISELECT(16560,10540), "S20292C4");
    /*is_ambiguous_... S20292C12::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C12*), ABISELECT(16560,10540), "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C13*), ABISELECT(16560,10540), "S20292C4");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C9*)(S20292C12*), ABISELECT(16560,10540), "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C13*), ABISELECT(16560,10540), "S20292C4");
    check_base_class_offset(lv, (S20292C9*)(S20292C5*), ABISELECT(656,432), "S20292C4");
    check_base_class_offset(lv, (S20292C10*)(S20292C5*), ABISELECT(1120,724), "S20292C4");
    check_base_class_offset(lv, (S20292C5*), ABISELECT(656,432), "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C5*)(S20292C13*), ABISELECT(656,432), "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C5*)(S20292C13*), ABISELECT(656,432), "S20292C4");
    /*is_ambiguous_... S20292C12::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C12*), ABISELECT(16864,10724), "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C13*), ABISELECT(19680,12516), "S20292C4");
    check_base_class_offset(lv, (S20292C13*)(S20292C12*), ABISELECT(19680,12516), "S20292C4");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*)(S20292C12*), ABISELECT(17008,10820), "S20292C4");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C9*)(S20292C12*), ABISELECT(17008,10820), "S20292C4");
    check_base_class_offset(lv, (S20292C7*)(S20292C11*)(S20292C12*), ABISELECT(17472,11112), "S20292C4");
    check_base_class_offset(lv, (S20292C11*)(S20292C12*), ABISELECT(17472,11112), "S20292C4");
    check_base_class_offset(lv, (S20292C12*), ABISELECT(16864,10724), "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C3 */ AMB_check_base_class_offset(lv, (S20292C3*), 0, "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C13*), ABISELECT(168,108), "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C13*), ABISELECT(168,108), "S20292C4");
    check_field_offset(lv, s20292c4f0, ABISELECT(640,424), "S20292C4.s20292c4f0");
    check_field_offset(lv, s20292c4f1, ABISELECT(641,425), "S20292C4.s20292c4f1");
    check_field_offset(lv, s20292c4f2, ABISELECT(648,428), "S20292C4.s20292c4f2");
    test_class_info(&lv, &cd_S20292C4);
    dp->~S20292C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C4(Test_S20292C4, "S20292C4", ABISELECT(20160,12832));

#else // __cplusplus

extern void _ZN8S20292C4C1Ev();
extern void _ZN8S20292C4D1Ev();
Name_Map name_map_S20292C4[] = {
  NSPAIR(_ZN8S20292C4C1Ev),
  NSPAIR(_ZN8S20292C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C10;
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
extern Class_Descriptor cd_S20292C5;
extern VTBL_ENTRY _ZTI8S20292C5[];
extern  VTBL_ENTRY _ZTV8S20292C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C5[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C13;
extern VTBL_ENTRY _ZTI9S20292C13[];
extern  VTBL_ENTRY _ZTV9S20292C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C13[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C11;
extern VTBL_ENTRY _ZTI9S20292C11[];
extern  VTBL_ENTRY _ZTV9S20292C11[];
extern Class_Descriptor cd_S20292C12;
extern VTBL_ENTRY _ZTI9S20292C12[];
extern  VTBL_ENTRY _ZTV9S20292C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C12[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C13;
extern VTBL_ENTRY _ZTI9S20292C13[];
extern  VTBL_ENTRY _ZTV9S20292C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C13[];
static Base_Class bases_S20292C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C7,    ABISELECT(11664,7408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(11960,7592), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20292C2,    ABISELECT(12424,7900), //bcp->offset
    65, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20292C6,    ABISELECT(11664,7408), //bcp->offset
    47, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20292C2,    ABISELECT(15784,10028), //bcp->offset
    68, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20292C3,    ABISELECT(15928,10124), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20292C2,    ABISELECT(656,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(16096,10232), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20292C7,    ABISELECT(16560,10540), //bcp->offset
    83, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20292C9,    ABISELECT(656,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20292C10,    ABISELECT(1120,724), //bcp->offset
    39, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20292C5,    ABISELECT(656,432), //bcp->offset
    25, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20292C2,    ABISELECT(16864,10724), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(19680,12516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20292C13,    ABISELECT(19680,12516), //bcp->offset
    118, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20292C2,    ABISELECT(17008,10820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20292C9,    ABISELECT(17008,10820), //bcp->offset
    105, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20292C7,    ABISELECT(17472,11112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20292C11,    ABISELECT(17472,11112), //bcp->offset
    112, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20292C12,    ABISELECT(16864,10724), //bcp->offset
    87, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20292C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20292C8,    ABISELECT(168,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20292C13,    ABISELECT(168,108), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20292C4[];
extern void _ZN8S20292C4D1Ev();
extern void _ZN8S20292C4D0Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void ABISELECT(_ZThn168_N8S20292C4D1Ev,_ZThn108_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn168_N8S20292C4D0Ev,_ZThn108_N8S20292C4D0Ev)();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S20292C4D1Ev,_ZTv0_n40_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn656_N8S20292C4D1Ev,_ZThn432_N8S20292C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20292C4D0Ev,_ZTv0_n40_N8S20292C4D0Ev)();
extern void ABISELECT(_ZThn656_N8S20292C4D0Ev,_ZThn432_N8S20292C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S20292C4D1Ev,_ZTvn292_n40_N8S20292C4D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S20292C4D0Ev,_ZTvn292_n40_N8S20292C4D0Ev)();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C4D1Ev,_ZTv0_n16_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn11664_N8S20292C4D1Ev,_ZThn7408_N8S20292C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20292C4D0Ev,_ZTv0_n16_N8S20292C4D0Ev)();
extern void ABISELECT(_ZThn11664_N8S20292C4D0Ev,_ZThn7408_N8S20292C4D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C72v7Ev();
extern void _ZN8S20292C22v6Ev();
extern void ABISELECT(_ZTv0_n88_N8S20292C4D1Ev,_ZTv0_n44_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn16864_N8S20292C4D1Ev,_ZThn10724_N8S20292C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20292C4D0Ev,_ZTv0_n44_N8S20292C4D0Ev)();
extern void ABISELECT(_ZThn16864_N8S20292C4D0Ev,_ZThn10724_N8S20292C4D0Ev)() __attribute__((weak));
extern void _ZN9S20292C123v14Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTvn608_n88_N8S20292C4D1Ev,_ZTvn388_n44_N8S20292C4D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N8S20292C4D0Ev,_ZTvn388_n44_N8S20292C4D0Ev)();
extern void _ZN9S20292C113v13Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void ABISELECT(_ZTv0_n96_N8S20292C4D1Ev,_ZTv0_n48_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn19680_N8S20292C4D1Ev,_ZThn12516_N8S20292C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20292C4D0Ev,_ZTv0_n48_N8S20292C4D0Ev)();
extern void ABISELECT(_ZThn19680_N8S20292C4D0Ev,_ZThn12516_N8S20292C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20292C4[] = {
  ABISELECT(19680,12516),
  ABISELECT(16864,10724),
  ABISELECT(16560,10540),
  ABISELECT(16096,10232),
  ABISELECT(15928,10124),
  ABISELECT(11664,7408),
  ABISELECT(656,432),
  ABISELECT(15784,10028),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C4D0Ev,
  ABISELECT(15928,10124),
  ABISELECT(15760,10016),
  ABISELECT(15616,9920),
  ABISELECT(11496,7300),
  ABISELECT(488,324),
  ABISELECT(16392,10432),
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N8S20292C4D1Ev,_ZThn108_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N8S20292C4D0Ev,_ZThn108_N8S20292C4D0Ev),
  ABISELECT(-656,-432),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-656,-432),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20292C4D1Ev,_ZTv0_n40_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20292C4D0Ev,_ZTv0_n40_N8S20292C4D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(-1120,-724),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20292C4D1Ev,_ZTvn292_n40_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20292C4D0Ev,_ZTvn292_n40_N8S20292C4D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11664,-7408),
  0,
  ABISELECT(-11664,-7408),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C4D1Ev,_ZTv0_n16_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C4D0Ev,_ZTv0_n16_N8S20292C4D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  ABISELECT(-11960,-7592),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-12424,-7900),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  ABISELECT(-15784,-10028),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-144,-96),
  ABISELECT(-15928,-10124),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  0,
  0,
  0,
  ABISELECT(-16096,-10232),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  0,
  ABISELECT(-16560,-10540),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-16864,-10724),
  0,
  ABISELECT(-768,-492),
  ABISELECT(-936,-600),
  ABISELECT(-1080,-696),
  ABISELECT(-5200,-3316),
  ABISELECT(-16208,-10292),
  ABISELECT(2816,1792),
  ABISELECT(-304,-184),
  ABISELECT(-16864,-10724),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20292C4D1Ev,_ZTv0_n44_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20292C4D0Ev,_ZTv0_n44_N8S20292C4D0Ev),
  (VTBL_ENTRY)&_ZN9S20292C123v14Ev,
  ABISELECT(-448,-280),
  ABISELECT(-1224,-792),
  ABISELECT(-1080,-696),
  ABISELECT(-912,-588),
  ABISELECT(-17008,-10820),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-17472,-11112),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20292C4D1Ev,_ZTvn388_n44_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20292C4D0Ev,_ZTvn388_n44_N8S20292C4D0Ev),
  (VTBL_ENTRY)&_ZN9S20292C113v13Ev,
  ABISELECT(-19680,-12516),
  0,
  0,
  0,
  ABISELECT(-3584,-2284),
  ABISELECT(-3752,-2392),
  ABISELECT(-3896,-2488),
  ABISELECT(-8016,-5108),
  ABISELECT(-19024,-12084),
  ABISELECT(-3120,-1976),
  ABISELECT(-19680,-12516),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20292C4D1Ev,_ZTv0_n48_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20292C4D0Ev,_ZTv0_n48_N8S20292C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S20292C4[];
static  VTBL_ENTRY _tg__ZTV8S20292C3__A__8S20292C4[] = {
  ABISELECT(15784,10028),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__A__8S20292C4[] = {
  0,
  ABISELECT(-15784,-10028),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN9S20292C13D1Ev();
extern void _ZN9S20292C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C13__A__8S20292C4[] = {
  ABISELECT(15928,10124),
  ABISELECT(15760,10016),
  ABISELECT(15616,9920),
  ABISELECT(11496,7300),
  ABISELECT(488,324),
  ABISELECT(16392,10432),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C13__A__8S20292C4[] = {
  0,
  ABISELECT(-16392,-10432),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZThn488_N9S20292C13D1Ev,_ZThn324_N9S20292C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev)();
extern void ABISELECT(_ZThn488_N9S20292C13D0Ev,_ZThn324_N9S20292C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C13__A__8S20292C4[] = {
  ABISELECT(-488,-324),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-488,-324),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev)();
extern void ABISELECT(_ZThn11496_N9S20292C13D1Ev,_ZThn7300_N9S20292C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev)();
extern void ABISELECT(_ZThn11496_N9S20292C13D0Ev,_ZThn7300_N9S20292C13D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C13__A__8S20292C4[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11496,-7300),
  0,
  ABISELECT(-11496,-7300),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__A1__9S20292C13__A__8S20292C4[] = {
  ABISELECT(-11792,-7484),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C13__A__8S20292C4[] = {
  ABISELECT(-12256,-7792),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C13__A__8S20292C4[] = {
  0,
  ABISELECT(-15616,-9920),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C13__A__8S20292C4[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15760,-10016),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A2__9S20292C13__A__8S20292C4[] = {
  0,
  0,
  0,
  ABISELECT(-15928,-10124),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C13__A__8S20292C4[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(-952,-616),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev),
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void _ZN8S20292C5D1Ev();
extern void _ZN8S20292C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C5__8S20292C4[] = {
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D0Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C98S20292C5__8S20292C4[] = {
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C98S20292C5__8S20292C4[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C98S20292C5__8S20292C4[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C98S20292C5__8S20292C4[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C98S20292C5__8S20292C4[] = {
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__8S20292C4[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C108S20292C5__8S20292C4[] = {
  0,
  ABISELECT(-15440,-9816),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C108S20292C5__8S20292C4[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__8S20292C4[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__8S20292C4[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C108S20292C5__8S20292C4[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C108S20292C5__8S20292C4[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__8S20292C5__8S20292C4[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__8S20292C5__8S20292C4[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__8S20292C5__8S20292C4[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C5__8S20292C4[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C5__8S20292C4[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A1__8S20292C5__8S20292C4[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__A1__8S20292C5__8S20292C4[] = {
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C10__8S20292C5__8S20292C4[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C4[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__8S20292C4[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN9S20292C12D1Ev();
extern void _ZN9S20292C12D0Ev();
extern void _ZN9S20292C123v14Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C12__8S20292C4[] = {
  ABISELECT(-768,-492),
  ABISELECT(-936,-600),
  ABISELECT(-1080,-696),
  ABISELECT(-5200,-3316),
  ABISELECT(-16208,-10292),
  ABISELECT(2816,1792),
  ABISELECT(-304,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN9S20292C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20292C123v14Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C99S20292C12__A1__8S20292C4[] = {
  ABISELECT(-448,-280),
  ABISELECT(-1224,-792),
  ABISELECT(-1080,-696),
  ABISELECT(-912,-588),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C99S20292C12__A1__8S20292C4[] = {
  0,
  0,
  0,
  ABISELECT(912,588),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C99S20292C12__A1__8S20292C4[] = {
  ABISELECT(-144,-96),
  ABISELECT(1080,696),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C99S20292C12__A1__8S20292C4[] = {
  0,
  ABISELECT(1224,792),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C99S20292C12__A1__8S20292C4[] = {
  0,
  ABISELECT(448,280),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C12__8S20292C4[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void ABISELECT(_ZTv0_n96_N9S20292C12D1Ev,_ZTv0_n48_N9S20292C12D1Ev)();
extern void ABISELECT(_ZThn2816_N9S20292C12D1Ev,_ZThn1792_N9S20292C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20292C12D0Ev,_ZTv0_n48_N9S20292C12D0Ev)();
extern void ABISELECT(_ZThn2816_N9S20292C12D0Ev,_ZThn1792_N9S20292C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20292C13__9S20292C12__8S20292C4[] = {
  ABISELECT(-2816,-1792),
  0,
  0,
  0,
  ABISELECT(-3584,-2284),
  ABISELECT(-3752,-2392),
  ABISELECT(-3896,-2488),
  ABISELECT(-8016,-5108),
  ABISELECT(-19024,-12084),
  ABISELECT(-3120,-1976),
  ABISELECT(-2816,-1792),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20292C12D1Ev,_ZTv0_n48_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20292C12D0Ev,_ZTv0_n48_N9S20292C12D0Ev),
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20292C12D1Ev,_ZTv0_n40_N9S20292C12D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S20292C12D0Ev,_ZTv0_n40_N9S20292C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C12__8S20292C4[] = {
  ABISELECT(16208,10292),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(16208,10292),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C12D1Ev,_ZTv0_n40_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C12D0Ev,_ZTv0_n40_N9S20292C12D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C12D1Ev,_ZTv0_n16_N9S20292C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20292C12D0Ev,_ZTv0_n16_N9S20292C12D0Ev)();
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C12__8S20292C4[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(5200,3316),
  0,
  ABISELECT(5200,3316),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C12D1Ev,_ZTv0_n16_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C12D0Ev,_ZTv0_n16_N9S20292C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__A1__9S20292C12__8S20292C4[] = {
  ABISELECT(4904,3132),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__A1__9S20292C12__8S20292C4[] = {
  ABISELECT(4440,2824),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A2__9S20292C12__8S20292C4[] = {
  0,
  ABISELECT(1080,696),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C12__8S20292C4[] = {
  ABISELECT(-144,-96),
  ABISELECT(936,600),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A2__9S20292C12__8S20292C4[] = {
  0,
  0,
  0,
  ABISELECT(768,492),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S20292C12D1Ev,_ZTvn292_n40_N9S20292C12D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S20292C12D0Ev,_ZTvn292_n40_N9S20292C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C12__8S20292C4[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(15744,10000),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C12D1Ev,_ZTvn292_n40_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C12D0Ev,_ZTvn292_n40_N9S20292C12D0Ev),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C9__A1__9S20292C12__8S20292C4[] = {
  ABISELECT(-448,-280),
  ABISELECT(-1224,-792),
  ABISELECT(-1080,-696),
  ABISELECT(-912,-588),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN9S20292C13D1Ev();
extern void _ZN9S20292C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C13__8S20292C4[] = {
  ABISELECT(-3584,-2284),
  ABISELECT(-3752,-2392),
  ABISELECT(-3896,-2488),
  ABISELECT(-8016,-5108),
  ABISELECT(-19024,-12084),
  ABISELECT(-3120,-1976),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C13__8S20292C4[] = {
  0,
  ABISELECT(3120,1976),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C13__8S20292C4[] = {
  ABISELECT(19024,12084),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(19024,12084),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev)();
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C13__8S20292C4[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(8016,5108),
  0,
  ABISELECT(8016,5108),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__A1__9S20292C13__8S20292C4[] = {
  ABISELECT(7720,4924),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C13__8S20292C4[] = {
  ABISELECT(7256,4616),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C13__8S20292C4[] = {
  0,
  ABISELECT(3896,2488),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C13__8S20292C4[] = {
  ABISELECT(-144,-96),
  ABISELECT(3752,2392),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A2__9S20292C13__8S20292C4[] = {
  0,
  0,
  0,
  ABISELECT(3584,2284),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C13__8S20292C4[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(18560,11792),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev),
};
static  VTT_ENTRY vtt_S20292C4[] = {
  {&(_ZTV8S20292C4[10]),  10,135},
  {&(_tg__ZTV8S20292C3__A__8S20292C4[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__A__8S20292C4[3]),  3,4},
  {&(_tg__ZTV9S20292C13__A__8S20292C4[8]),  8,13},
  {&(_tg__ZTV8S20292C7__9S20292C13__A__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C5__9S20292C13__A__8S20292C4[10]),  10,14},
  {&(_tg__ZTV8S20292C6__9S20292C13__A__8S20292C4[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__A1__9S20292C13__A__8S20292C4[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C13__A__8S20292C4[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C13__A__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C13__A__8S20292C4[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A2__9S20292C13__A__8S20292C4[5]),  5,8},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C13__A__8S20292C4[6]),  6,8},
  {&(_ZTV8S20292C4[35]),  35,135},
  {&(_ZTV8S20292C4[56]),  56,135},
  {&(_ZTV8S20292C4[62]),  62,135},
  {&(_ZTV8S20292C4[67]),  67,135},
  {&(_ZTV8S20292C4[71]),  71,135},
  {&(_ZTV8S20292C4[75]),  75,135},
  {&(_ZTV8S20292C4[80]),  80,135},
  {&(_ZTV8S20292C4[86]),  86,135},
  {&(_ZTV8S20292C4[45]),  45,135},
  {&(_ZTV8S20292C4[101]),  101,135},
  {&(_ZTV8S20292C4[130]),  130,135},
  {&(_ZTV8S20292C4[111]),  111,135},
  {&(_ZTV8S20292C4[114]),  114,135},
  {&(_ZTV8S20292C4[20]),  20,135},
  {&(_tg__ZTV8S20292C5__8S20292C4[7]),  7,11},
  {&(_tg__ZTV8S20292C98S20292C5__8S20292C4[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C98S20292C5__8S20292C4[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C98S20292C5__8S20292C4[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C98S20292C5__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C98S20292C5__8S20292C4[3]),  3,4},
  {&(_tg__ZTV9S20292C108S20292C5__8S20292C4[6]),  6,8},
  {&(_tg__ZTV8S20292C7__9S20292C108S20292C5__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C6__9S20292C108S20292C5__8S20292C4[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__8S20292C4[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__8S20292C4[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C108S20292C5__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C108S20292C5__8S20292C4[3]),  3,3},
  {&(_tg__ZTV8S20292C6__8S20292C5__8S20292C4[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__8S20292C5__8S20292C4[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__8S20292C5__8S20292C4[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C5__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C3__8S20292C5__8S20292C4[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A1__8S20292C5__8S20292C4[5]),  5,8},
  {&(_tg__ZTV8S20292C7__A1__8S20292C5__8S20292C4[3]),  3,4},
  {&(_tg__ZTV9S20292C10__8S20292C5__8S20292C4[6]),  6,8},
  {&(_tg__ZTV8S20292C3__8S20292C4[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__8S20292C4[3]),  3,4},
  {&(_tg__ZTV9S20292C12__8S20292C4[9]),  9,13},
  {&(_tg__ZTV8S20292C99S20292C12__A1__8S20292C4[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C99S20292C12__A1__8S20292C4[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C99S20292C12__A1__8S20292C4[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C99S20292C12__A1__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C99S20292C12__A1__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C7__9S20292C12__8S20292C4[3]),  3,4},
  {&(_tg__ZTV9S20292C13__9S20292C12__8S20292C4[12]),  12,17},
  {&(_tg__ZTV8S20292C5__9S20292C12__8S20292C4[10]),  10,14},
  {&(_tg__ZTV8S20292C6__9S20292C12__8S20292C4[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__A1__9S20292C12__8S20292C4[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__A1__9S20292C12__8S20292C4[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A2__9S20292C12__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C12__8S20292C4[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A2__9S20292C12__8S20292C4[5]),  5,8},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C12__8S20292C4[6]),  6,8},
  {&(_tg__ZTV8S20292C9__A1__9S20292C12__8S20292C4[6]),  6,7},
  {&(_tg__ZTV9S20292C13__8S20292C4[8]),  8,13},
  {&(_tg__ZTV8S20292C7__9S20292C13__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C5__9S20292C13__8S20292C4[10]),  10,14},
  {&(_tg__ZTV8S20292C6__9S20292C13__8S20292C4[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__A1__9S20292C13__8S20292C4[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C13__8S20292C4[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C13__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C13__8S20292C4[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A2__9S20292C13__8S20292C4[5]),  5,8},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C13__8S20292C4[6]),  6,8},
};
extern VTBL_ENTRY _ZTI8S20292C4[];
extern  VTBL_ENTRY _ZTV8S20292C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C4[];
static VTBL_ENTRY alt_thunk_names37[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20292C12D0Ev,_ZTv0_n48_N9S20292C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N9S20292C12D0Ev,_ZThn1792_N9S20292C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20292C12D1Ev,_ZTv0_n48_N9S20292C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N9S20292C12D1Ev,_ZThn1792_N9S20292C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11496_N9S20292C13D0Ev,_ZThn7300_N9S20292C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11496_N9S20292C13D1Ev,_ZThn7300_N9S20292C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N9S20292C13D0Ev,_ZThn324_N9S20292C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N9S20292C13D1Ev,_ZThn324_N9S20292C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20292C4D0Ev,_ZTv0_n48_N8S20292C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19680_N8S20292C4D0Ev,_ZThn12516_N8S20292C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20292C4D1Ev,_ZTv0_n48_N8S20292C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19680_N8S20292C4D1Ev,_ZThn12516_N8S20292C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20292C4D0Ev,_ZTv0_n44_N8S20292C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16864_N8S20292C4D0Ev,_ZThn10724_N8S20292C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20292C4D1Ev,_ZTv0_n44_N8S20292C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16864_N8S20292C4D1Ev,_ZThn10724_N8S20292C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C4D0Ev,_ZTv0_n16_N8S20292C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11664_N8S20292C4D0Ev,_ZThn7408_N8S20292C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C4D1Ev,_ZTv0_n16_N8S20292C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11664_N8S20292C4D1Ev,_ZThn7408_N8S20292C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20292C4D0Ev,_ZTv0_n40_N8S20292C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S20292C4D0Ev,_ZThn432_N8S20292C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20292C4D1Ev,_ZTv0_n40_N8S20292C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S20292C4D1Ev,_ZThn432_N8S20292C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20292C4 = {  "S20292C4", // class name
  bases_S20292C4, 23,
  &(vtc_S20292C4[0]), // expected_vtbl_contents
  &(vtt_S20292C4[0]), // expected_vtt_contents
  ABISELECT(20160,12832), // object size
  NSPAIRA(_ZTI8S20292C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20292C4),135, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20292C4),77, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names37,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C15  : S20292C9 , S20292C10 {
  int s20292c15f0:13;
  long s20292c15f1;
  int s20292c15f2;
  void *s20292c15f3[2];
  __tsi64 s20292c15f4;
  ::S20292C8 s20292c15f5;
  virtual  ~S20292C15(); // _ZN9S20292C15D2Ev
  virtual void  v15(); // _ZN9S20292C153v15Ev
  virtual void  v16(); // _ZN9S20292C153v16Ev
  S20292C15(); // tgen
};
//SIG(-1 S20292C15) C1{ BC2{ BC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC4{ v4 v5 v6 Fi[2] Fl[2] FC3[3]} VBC5{ VBC3 Fp FC3 FL:3} VBC6{ v7 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} FC6 Fs Fi[2]} BC7{ VBC6 VBC8{ BC6 BC4 BC3 vd v8 Fl FL Fp[8] FC2 Fp Fi FC2 Fi} VBC3 VBC5 FL:44 Fp Fi FC2 Fl[2] Fi[3] FC8 Fc:7 FC9{ BC6 vd v9 FC5 Fi Fp Fi}} vd v1 v2 Fi:13 Fl Fi Fp[2] FL FC4}


 S20292C15 ::~S20292C15(){ note_dtor("S20292C15", this);}
void  S20292C15 ::v15(){vfunc_called(this, "_ZN9S20292C153v15Ev");}
void  S20292C15 ::v16(){vfunc_called(this, "_ZN9S20292C153v16Ev");}
S20292C15 ::S20292C15(){ note_ctor("S20292C15", this);} // tgen

static void Test_S20292C15()
{
  extern Class_Descriptor cd_S20292C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(788,2000)];
    init_test(&cd_S20292C15, buf);
    S20292C15 *dp, &lv = *(dp=new (buf) S20292C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(12592,7996), "sizeof(S20292C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C15)");
    /*is_ambiguous_... S20292C9::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*), 0, "S20292C15");
    check_base_class_offset(lv, (S20292C8*)(S20292C9*), ABISELECT(7376,4680), "S20292C15");
    check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(8008,5096), "S20292C15");
    /*is_ambiguous_... S20292C10::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C10*), ABISELECT(8008,5096), "S20292C15");
    check_base_class_offset(lv, (S20292C3*)(S20292C9*), ABISELECT(7840,4988), "S20292C15");
    check_base_class_offset(lv, (S20292C3*)(S20292C10*), ABISELECT(7840,4988), "S20292C15");
    check_base_class_offset(lv, (S20292C7*)(S20292C9*), ABISELECT(8160,5192), "S20292C15");
    /*is_ambiguous_... S20292C10::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C10*), ABISELECT(8160,5192), "S20292C15");
    check_base_class_offset(lv, (S20292C9*), 0, "S20292C15");
    check_base_class_offset(lv, (S20292C7*)(S20292C6*), ABISELECT(8464,5376), "S20292C15");
    check_base_class_offset(lv, (S20292C8*)(S20292C6*), ABISELECT(8760,5560), "S20292C15");
    check_base_class_offset(lv, (S20292C2*)(S20292C6*), ABISELECT(9224,5868), "S20292C15");
    check_base_class_offset(lv, (S20292C6*)(S20292C10*), ABISELECT(8464,5376), "S20292C15");
    check_base_class_offset(lv, (S20292C10*), ABISELECT(464,292), "S20292C15");
    set_bf_and_test(lv, s20292c15f0, ABISELECT(6864,4344), 0, 13, 1, "S20292C15");
    set_bf_and_test(lv, s20292c15f0, ABISELECT(6864,4344), 0, 13, hide_sll(1LL<<12), "S20292C15");
    check_field_offset(lv, s20292c15f1, ABISELECT(6872,4348), "S20292C15.s20292c15f1");
    check_field_offset(lv, s20292c15f2, ABISELECT(6880,4352), "S20292C15.s20292c15f2");
    check_field_offset(lv, s20292c15f3, ABISELECT(6888,4356), "S20292C15.s20292c15f3");
    check_field_offset(lv, s20292c15f4, ABISELECT(6904,4364), "S20292C15.s20292c15f4");
    check_field_offset(lv, s20292c15f5, ABISELECT(6912,4372), "S20292C15.s20292c15f5");
    test_class_info(&lv, &cd_S20292C15);
    dp->~S20292C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C15(Test_S20292C15, "S20292C15", ABISELECT(12592,7996));

#else // __cplusplus

extern void _ZN9S20292C15C1Ev();
extern void _ZN9S20292C15D2Ev();
Name_Map name_map_S20292C15[] = {
  NSPAIR(_ZN9S20292C15C1Ev),
  NSPAIR(_ZN9S20292C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C10;
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
static Base_Class bases_S20292C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(7376,4680), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20292C2,    ABISELECT(8008,5096), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20292C3,    ABISELECT(7840,4988), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20292C7,    ABISELECT(8160,5192), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20292C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20292C7,    ABISELECT(8464,5376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(8760,5560), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20292C2,    ABISELECT(9224,5868), //bcp->offset
    57, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20292C6,    ABISELECT(8464,5376), //bcp->offset
    39, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20292C10,    ABISELECT(464,292), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20292C15[];
extern void _ZN8S20292C22v6Ev();
extern void _ZN9S20292C15D1Ev();
extern void _ZN9S20292C15D0Ev();
extern void _ZN9S20292C153v15Ev();
extern void _ZN9S20292C153v16Ev();
extern void ABISELECT(_ZThn464_N9S20292C15D1Ev,_ZThn292_N9S20292C15D1Ev)();
extern void ABISELECT(_ZThn464_N9S20292C15D0Ev,_ZThn292_N9S20292C15D0Ev)();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C72v7Ev();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C15D1Ev,_ZTv0_n16_N9S20292C15D1Ev)();
extern void ABISELECT(_ZThn8464_N9S20292C15D1Ev,_ZThn5376_N9S20292C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C15D0Ev,_ZTv0_n16_N9S20292C15D0Ev)();
extern void ABISELECT(_ZThn8464_N9S20292C15D0Ev,_ZThn5376_N9S20292C15D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY vtc_S20292C15[] = {
  ABISELECT(8464,5376),
  ABISELECT(8160,5192),
  ABISELECT(8008,5096),
  ABISELECT(7840,4988),
  ABISELECT(7376,4680),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN9S20292C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20292C153v15Ev,
  (VTBL_ENTRY)&_ZN9S20292C153v16Ev,
  ABISELECT(7376,4696),
  ABISELECT(7544,4804),
  ABISELECT(8000,5084),
  ABISELECT(7696,4900),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S20292C15D1Ev,_ZThn292_N9S20292C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S20292C15D0Ev,_ZThn292_N9S20292C15D0Ev),
  0,
  0,
  0,
  ABISELECT(-7376,-4680),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(168,108),
  ABISELECT(-7840,-4988),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  0,
  ABISELECT(-8008,-5096),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  ABISELECT(-8160,-5192),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-8464,-5376),
  0,
  ABISELECT(-8464,-5376),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C15D1Ev,_ZTv0_n16_N9S20292C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C15D0Ev,_ZTv0_n16_N9S20292C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  ABISELECT(-8760,-5560),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-9224,-5868),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern VTBL_ENTRY _ZTV9S20292C15[];
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C9__9S20292C15[] = {
  ABISELECT(8160,5192),
  ABISELECT(8008,5096),
  ABISELECT(7840,4988),
  ABISELECT(7376,4680),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C9__9S20292C15[] = {
  0,
  0,
  0,
  ABISELECT(-7376,-4680),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C9__9S20292C15[] = {
  ABISELECT(168,108),
  ABISELECT(-7840,-4988),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C9__9S20292C15[] = {
  0,
  ABISELECT(-8008,-5096),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C9__9S20292C15[] = {
  0,
  ABISELECT(-8160,-5192),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C10__9S20292C15[] = {
  ABISELECT(7376,4696),
  ABISELECT(7544,4804),
  ABISELECT(8000,5084),
  ABISELECT(7696,4900),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C10__9S20292C15[] = {
  0,
  ABISELECT(-7696,-4900),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZThn8000_N9S20292C10D1Ev,_ZThn5084_N9S20292C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void ABISELECT(_ZThn8000_N9S20292C10D0Ev,_ZThn5084_N9S20292C10D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C10__9S20292C15[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-8000,-5084),
  0,
  ABISELECT(-8000,-5084),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__9S20292C10__9S20292C15[] = {
  ABISELECT(-8296,-5268),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C10__9S20292C15[] = {
  ABISELECT(-8760,-5576),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C10__9S20292C15[] = {
  0,
  ABISELECT(-7544,-4804),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C10__9S20292C15[] = {
  ABISELECT(168,108),
  ABISELECT(-7376,-4696),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C15[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__9S20292C15[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTT_ENTRY vtt_S20292C15[] = {
  {&(_ZTV9S20292C15[7]),  7,60},
  {&(_tg__ZTV8S20292C9__9S20292C15[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C9__9S20292C15[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C9__9S20292C15[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C9__9S20292C15[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C9__9S20292C15[3]),  3,4},
  {&(_tg__ZTV9S20292C10__9S20292C15[6]),  6,8},
  {&(_tg__ZTV8S20292C7__9S20292C10__9S20292C15[3]),  3,4},
  {&(_tg__ZTV8S20292C6__9S20292C10__9S20292C15[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__9S20292C10__9S20292C15[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C10__9S20292C15[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C10__9S20292C15[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C10__9S20292C15[3]),  3,3},
  {&(_ZTV9S20292C15[25]),  25,60},
  {&(_ZTV9S20292C15[31]),  31,60},
  {&(_ZTV9S20292C15[34]),  34,60},
  {&(_ZTV9S20292C15[38]),  38,60},
  {&(_ZTV9S20292C15[18]),  18,60},
  {&(_ZTV9S20292C15[48]),  48,60},
  {&(_ZTV9S20292C15[54]),  54,60},
  {&(_ZTV9S20292C15[59]),  59,60},
  {&(_tg__ZTV8S20292C3__9S20292C15[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__9S20292C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20292C15[];
extern  VTBL_ENTRY _ZTV9S20292C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C15[];
static VTBL_ENTRY alt_thunk_names38[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N9S20292C10D0Ev,_ZThn5084_N9S20292C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N9S20292C10D1Ev,_ZThn5084_N9S20292C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C15D0Ev,_ZTv0_n16_N9S20292C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N9S20292C15D0Ev,_ZThn5376_N9S20292C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C15D1Ev,_ZTv0_n16_N9S20292C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N9S20292C15D1Ev,_ZThn5376_N9S20292C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20292C15 = {  "S20292C15", // class name
  bases_S20292C15, 11,
  &(vtc_S20292C15[0]), // expected_vtbl_contents
  &(vtt_S20292C15[0]), // expected_vtt_contents
  ABISELECT(12592,7996), // object size
  NSPAIRA(_ZTI9S20292C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20292C15),60, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20292C15),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names38,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C16  : virtual S20292C2 , virtual S20292C9 , S20292C6 , S20292C5 {
  ::S20292C10 s20292c16f0;
  short s20292c16f1;
  __tsi64 s20292c16f2:8;
  virtual void  v17(); // _ZN9S20292C163v17Ev
  virtual void  v18(); // _ZN9S20292C163v18Ev
  ~S20292C16(); // tgen
  S20292C16(); // tgen
};
//SIG(-1 S20292C16) C1{ VBC2{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ BC2 VBC4{ v4 v5 v6 Fi[2] Fl[2] FC2[3]} VBC5{ VBC2 Fp FC2 FL:3} VBC6{ v7 FL FD Fp Fc FC2 Fp[2] Fl[8] Fs Fp FL:64} FC6 Fs Fi[2]} BC7{ BC6 BC4 BC2 vd v8 Fl FL Fp[8] FC3 Fp Fi FC3 Fi} BC8{ VBC7 VBC2 VBC5 BC3 BC9{ VBC6 VBC7 VBC2 VBC5 FL:44 Fp Fi FC3 Fl[2] Fi[3] FC7 Fc:7 FC10{ BC6 vd v10 FC5 Fi Fp Fi}} v9 FC7 FL Fc:7} v1 v2 FC9 Fs FL:8}


void  S20292C16 ::v17(){vfunc_called(this, "_ZN9S20292C163v17Ev");}
void  S20292C16 ::v18(){vfunc_called(this, "_ZN9S20292C163v18Ev");}
S20292C16 ::~S20292C16(){ note_dtor("S20292C16", this);} // tgen
S20292C16 ::S20292C16(){ note_ctor("S20292C16", this);} // tgen

static void Test_S20292C16()
{
  extern Class_Descriptor cd_S20292C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1999,5068)];
    init_test(&cd_S20292C16, buf);
    S20292C16 *dp, &lv = *(dp=new (buf) S20292C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(31968,20268), "sizeof(S20292C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C16)");
    /*is_ambiguous_... S20292C16::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*), ABISELECT(26280,16660), "S20292C16");
    check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(26280,16660), "S20292C16");
    /*is_ambiguous_... S20292C5::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C5*), ABISELECT(26280,16660), "S20292C16");
    /*is_ambiguous_... S20292C10::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C10*)(S20292C5*), ABISELECT(26280,16660), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*), ABISELECT(26432,16756), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C9*), ABISELECT(26896,17048), "S20292C16");
    check_base_class_offset(lv, (S20292C8*)(S20292C9*)(S20292C5*), ABISELECT(26896,17048), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C3*)(S20292C9*), ABISELECT(27360,17356), "S20292C16");
    check_base_class_offset(lv, (S20292C3*)(S20292C5*), ABISELECT(27360,17356), "S20292C16");
    check_base_class_offset(lv, (S20292C3*)(S20292C9*)(S20292C5*), ABISELECT(27360,17356), "S20292C16");
    check_base_class_offset(lv, (S20292C3*)(S20292C10*)(S20292C5*), ABISELECT(27360,17356), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C9*), ABISELECT(27536,17464), "S20292C16");
    check_base_class_offset(lv, (S20292C7*)(S20292C9*)(S20292C5*), ABISELECT(27536,17464), "S20292C16");
    /*is_ambiguous_... S20292C10::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C10*)(S20292C5*), ABISELECT(27536,17464), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C9*), ABISELECT(26432,16756), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C6*), 0, "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C6*), ABISELECT(296,184), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C6*), ABISELECT(760,492), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C6*), 0, "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C6*), ABISELECT(27840,17648), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C6*), ABISELECT(28136,17832), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C6*), ABISELECT(28600,18140), "S20292C16");
    check_base_class_offset(lv, (S20292C6*)(S20292C5*), ABISELECT(27840,17648), "S20292C16");
    check_base_class_offset(lv, (S20292C6*)(S20292C10*)(S20292C5*), ABISELECT(27840,17648), "S20292C16");
    /*is_ambiguous_... S20292C9::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*)(S20292C5*), ABISELECT(4128,2620), "S20292C16");
    check_base_class_offset(lv, (S20292C9*)(S20292C5*), ABISELECT(4128,2620), "S20292C16");
    check_base_class_offset(lv, (S20292C10*)(S20292C5*), ABISELECT(4592,2912), "S20292C16");
    check_base_class_offset(lv, (S20292C5*), ABISELECT(4128,2620), "S20292C16");
    check_field_offset(lv, s20292c16f0, ABISELECT(15136,9596), "S20292C16.s20292c16f0");
    check_field_offset(lv, s20292c16f1, ABISELECT(26272,16656), "S20292C16.s20292c16f1");
    set_bf_and_test(lv, s20292c16f2, ABISELECT(26274,16658), 0, 8, 1, "S20292C16");
    set_bf_and_test(lv, s20292c16f2, ABISELECT(26274,16658), 0, 8, hide_sll(1LL<<7), "S20292C16");
    test_class_info(&lv, &cd_S20292C16);
    dp->~S20292C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C16(Test_S20292C16, "S20292C16", ABISELECT(31968,20268));

#else // __cplusplus

extern void _ZN9S20292C16C1Ev();
extern void _ZN9S20292C16D1Ev();
Name_Map name_map_S20292C16[] = {
  NSPAIR(_ZN9S20292C16C1Ev),
  NSPAIR(_ZN9S20292C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C10;
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
extern Class_Descriptor cd_S20292C5;
extern VTBL_ENTRY _ZTI8S20292C5[];
extern  VTBL_ENTRY _ZTV8S20292C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C5[];
static Base_Class bases_S20292C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C2,    ABISELECT(26280,16660), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20292C2,    ABISELECT(26432,16756), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(26896,17048), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20292C3,    ABISELECT(27360,17356), //bcp->offset
    61, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20292C7,    ABISELECT(27536,17464), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20292C9,    ABISELECT(26432,16756), //bcp->offset
    45, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20292C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(296,184), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20292C2,    ABISELECT(760,492), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20292C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20292C7,    ABISELECT(27840,17648), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(28136,17832), //bcp->offset
    81, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20292C2,    ABISELECT(28600,18140), //bcp->offset
    86, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20292C6,    ABISELECT(27840,17648), //bcp->offset
    68, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20292C2,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20292C9,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20292C10,    ABISELECT(4592,2912), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20292C5,    ABISELECT(4128,2620), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20292C16[];
extern void _ZN8S20292C72v7Ev();
extern void _ZN9S20292C16D1Ev();
extern void _ZN9S20292C16D0Ev();
extern void _ZN8S20292C63v11Ev();
extern void _ZN9S20292C163v17Ev();
extern void _ZN9S20292C163v18Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZThn4128_N9S20292C16D1Ev,_ZThn2620_N9S20292C16D1Ev)();
extern void ABISELECT(_ZThn4128_N9S20292C16D0Ev,_ZThn2620_N9S20292C16D0Ev)();
extern void ABISELECT(_ZThn4592_N9S20292C16D1Ev,_ZThn2912_N9S20292C16D1Ev)();
extern void ABISELECT(_ZThn4592_N9S20292C16D0Ev,_ZThn2912_N9S20292C16D0Ev)();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C72v7Ev();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C16D1Ev,_ZTv0_n16_N9S20292C16D1Ev)();
extern void ABISELECT(_ZThn27840_N9S20292C16D1Ev,_ZThn17648_N9S20292C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C16D0Ev,_ZTv0_n16_N9S20292C16D0Ev)();
extern void ABISELECT(_ZThn27840_N9S20292C16D0Ev,_ZThn17648_N9S20292C16D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY vtc_S20292C16[] = {
  ABISELECT(27840,17648),
  ABISELECT(27536,17464),
  ABISELECT(27360,17356),
  ABISELECT(26896,17048),
  ABISELECT(26432,16756),
  ABISELECT(26280,16660),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&_ZN9S20292C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C16D0Ev,
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  (VTBL_ENTRY)&_ZN9S20292C163v17Ev,
  (VTBL_ENTRY)&_ZN9S20292C163v18Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S20292C16D1Ev,_ZThn2620_N9S20292C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S20292C16D0Ev,_ZThn2620_N9S20292C16D0Ev),
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S20292C16D1Ev,_ZThn2912_N9S20292C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S20292C16D0Ev,_ZThn2912_N9S20292C16D0Ev),
  0,
  ABISELECT(-26280,-16660),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-26432,-16756),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  0,
  0,
  ABISELECT(-26896,-17048),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-1080,-696),
  ABISELECT(-27360,-17356),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  0,
  ABISELECT(-27536,-17464),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-27840,-17648),
  0,
  ABISELECT(-27840,-17648),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C16D1Ev,_ZTv0_n16_N9S20292C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C16D0Ev,_ZTv0_n16_N9S20292C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  ABISELECT(-28136,-17832),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-28600,-18140),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern VTBL_ENTRY _ZTV9S20292C16[];
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void _ZN8S20292C5D1Ev();
extern void _ZN8S20292C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C16[] = {
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D0Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C98S20292C5__A1__9S20292C16[] = {
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C98S20292C5__A1__9S20292C16[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C98S20292C5__A1__9S20292C16[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C98S20292C5__A1__9S20292C16[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C98S20292C5__A1__9S20292C16[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C16[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C108S20292C5__9S20292C16[] = {
  0,
  ABISELECT(-22944,-14552),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZThn23248_N9S20292C10D1Ev,_ZThn14736_N9S20292C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void ABISELECT(_ZThn23248_N9S20292C10D0Ev,_ZThn14736_N9S20292C10D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C108S20292C5__9S20292C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23248,-14736),
  0,
  ABISELECT(-23248,-14736),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__9S20292C16[] = {
  ABISELECT(-23544,-14920),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__9S20292C16[] = {
  ABISELECT(-24008,-15228),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C108S20292C5__9S20292C16[] = {
  0,
  ABISELECT(-21688,-13748),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C108S20292C5__9S20292C16[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-22768,-14444),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn23712_N8S20292C5D1Ev,_ZThn15028_N8S20292C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev)();
extern void ABISELECT(_ZThn23712_N8S20292C5D0Ev,_ZThn15028_N8S20292C5D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__8S20292C5__9S20292C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23712,-15028),
  0,
  ABISELECT(-23712,-15028),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__8S20292C5__9S20292C16[] = {
  ABISELECT(-24008,-15212),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__8S20292C5__9S20292C16[] = {
  ABISELECT(-24472,-15520),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C5__9S20292C16[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C5__9S20292C16[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A1__8S20292C5__9S20292C16[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__A1__8S20292C5__9S20292C16[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C10__8S20292C5__9S20292C16[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C9__9S20292C16[] = {
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C9__9S20292C16[] = {
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C9__9S20292C16[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C9__9S20292C16[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C9__9S20292C16[] = {
  0,
  ABISELECT(-1104,-708),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C16[] = {
  ABISELECT(-1080,-696),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__9S20292C16[] = {
  0,
  ABISELECT(1080,696),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTT_ENTRY vtt_S20292C16[] = {
  {&(_ZTV9S20292C16[8]),  8,89},
  {&(_tg__ZTV8S20292C5__9S20292C16[7]),  7,11},
  {&(_tg__ZTV8S20292C98S20292C5__A1__9S20292C16[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C98S20292C5__A1__9S20292C16[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C98S20292C5__A1__9S20292C16[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C98S20292C5__A1__9S20292C16[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C98S20292C5__A1__9S20292C16[3]),  3,4},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C16[6]),  6,8},
  {&(_tg__ZTV8S20292C7__9S20292C108S20292C5__9S20292C16[3]),  3,4},
  {&(_tg__ZTV8S20292C6__9S20292C108S20292C5__9S20292C16[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__9S20292C16[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__9S20292C16[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C108S20292C5__9S20292C16[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C108S20292C5__9S20292C16[3]),  3,3},
  {&(_tg__ZTV8S20292C6__8S20292C5__9S20292C16[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__8S20292C5__9S20292C16[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__8S20292C5__9S20292C16[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C5__9S20292C16[3]),  3,4},
  {&(_tg__ZTV8S20292C3__8S20292C5__9S20292C16[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A1__8S20292C5__9S20292C16[5]),  5,8},
  {&(_tg__ZTV8S20292C7__A1__8S20292C5__9S20292C16[3]),  3,4},
  {&(_tg__ZTV9S20292C10__8S20292C5__9S20292C16[6]),  6,8},
  {&(_ZTV9S20292C16[44]),  44,89},
  {&(_ZTV9S20292C16[52]),  52,89},
  {&(_ZTV9S20292C16[58]),  58,89},
  {&(_ZTV9S20292C16[64]),  64,89},
  {&(_ZTV9S20292C16[67]),  67,89},
  {&(_ZTV9S20292C16[29]),  29,89},
  {&(_ZTV9S20292C16[77]),  77,89},
  {&(_ZTV9S20292C16[83]),  83,89},
  {&(_ZTV9S20292C16[88]),  88,89},
  {&(_ZTV9S20292C16[39]),  39,89},
  {&(_tg__ZTV8S20292C9__9S20292C16[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C9__9S20292C16[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C9__9S20292C16[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C9__9S20292C16[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C9__9S20292C16[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C16[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__9S20292C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20292C16[];
extern  VTBL_ENTRY _ZTV9S20292C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C16[];
static VTBL_ENTRY alt_thunk_names39[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N8S20292C5D0Ev,_ZThn15028_N8S20292C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N8S20292C5D1Ev,_ZThn15028_N8S20292C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S20292C10D0Ev,_ZThn14736_N9S20292C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S20292C10D1Ev,_ZThn14736_N9S20292C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C16D0Ev,_ZTv0_n16_N9S20292C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N9S20292C16D0Ev,_ZThn17648_N9S20292C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C16D1Ev,_ZTv0_n16_N9S20292C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N9S20292C16D1Ev,_ZThn17648_N9S20292C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20292C16 = {  "S20292C16", // class name
  bases_S20292C16, 18,
  &(vtc_S20292C16[0]), // expected_vtbl_contents
  &(vtt_S20292C16[0]), // expected_vtt_contents
  ABISELECT(31968,20268), // object size
  NSPAIRA(_ZTI9S20292C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20292C16),89, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20292C16),39, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names39,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C1  : virtual S20292C2 , virtual S20292C3 , virtual S20292C4 , S20292C15 , virtual S20292C16 {
  __tsi64 s20292c1f0[4];
  int s20292c1f1[2];
  ::S20292C13 s20292c1f2;
  int s20292c1f3;
  short s20292c1f4;
  int s20292c1f5[4];
  virtual  ~S20292C1(); // _ZN8S20292C1D2Ev
  virtual void  v1(); // _ZN8S20292C12v1Ev
  virtual void  v2(); // _ZN8S20292C12v2Ev
  virtual void  v3(); // _ZN8S20292C12v3Ev
  virtual void  v4(); // _ZN8S20292C12v4Ev
  virtual void  v5(); // _ZN8S20292C12v5Ev
  S20292C1(); // tgen
};
//SIG(1 S20292C1) C1{ VBC2{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ VBC2 Fp FC2 FL:3} VBC4{ VBC5{ VBC6{ BC7{ v7 FL FD Fp Fc FC2 Fp[2] Fl[8] Fs Fp FL:64} BC8{ v8 v9 v10 Fi[2] Fl[2] FC2[3]} BC2 vd v11 Fl FL Fp[8] FC9{ BC2 VBC8 VBC3 VBC7 FC7 Fs Fi[2]} Fp Fi FC9 Fi} VBC2 VBC3 BC9 BC10{ VBC7 VBC6 VBC2 VBC3 FL:44 Fp Fi FC9 Fl[2] Fi[3] FC6 Fc:7 FC11{ BC7 vd v13 FC3 Fi Fp Fi}} v12 FC6 FL Fc:7} VBC12{ BC2 VBC7 VBC13{ VBC7 BC8 VBC5 Fc:8 Fi} BC9 BC11 vd v14 Fi FC9 Fi Fs FL:8 Fi} BC3 BC13 Fc FC14{} Fp} BC15{ BC9 BC10 vd v15 v16 Fi:13 Fl Fi Fp[2] FL FC8} VBC16{ VBC2 VBC9 BC6 BC5 v17 v18 FC10 Fs FL:8} vd v1 v2 v3 v4 v5 FL[4] Fi[2] FC13 Fi Fs Fi[4]}


 S20292C1 ::~S20292C1(){ note_dtor("S20292C1", this);}
void  S20292C1 ::v1(){vfunc_called(this, "_ZN8S20292C12v1Ev");}
void  S20292C1 ::v2(){vfunc_called(this, "_ZN8S20292C12v2Ev");}
void  S20292C1 ::v3(){vfunc_called(this, "_ZN8S20292C12v3Ev");}
void  S20292C1 ::v4(){vfunc_called(this, "_ZN8S20292C12v4Ev");}
void  S20292C1 ::v5(){vfunc_called(this, "_ZN8S20292C12v5Ev");}
S20292C1 ::S20292C1(){ note_ctor("S20292C1", this);} // tgen

static void Test_S20292C1()
{
  extern Class_Descriptor cd_S20292C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4442,11285)];
    init_test(&cd_S20292C1, buf);
    S20292C1 *dp, &lv = *(dp=new (buf) S20292C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(71056,45136), "sizeof(S20292C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C1)");
    /*is_ambiguous_... S20292C1::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*), ABISELECT(24136,15352), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C3 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(24136,15352), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C5*), ABISELECT(24136,15352), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C10*)(S20292C5*), ABISELECT(24136,15352), "S20292C1");
    /*is_ambiguous_... S20292C4::S20292C3 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C3*)(S20292C4*), ABISELECT(24136,15352), "S20292C1");
    /*is_ambiguous_... S20292C10::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C10*)(S20292C15*), ABISELECT(24136,15352), "S20292C1");
    /*is_ambiguous_... S20292C16::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C16*), ABISELECT(24136,15352), "S20292C1");
    /*is_ambiguous_... S20292C5::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C5*)(S20292C16*), ABISELECT(24136,15352), "S20292C1");
    /*is_ambiguous_... S20292C10::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C10*)(S20292C5*)(S20292C16*), ABISELECT(24136,15352), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C3 */ AMB_check_base_class_offset(lv, (S20292C3*), ABISELECT(24280,15448), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C3*)(S20292C5*), ABISELECT(24280,15448), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C3*)(S20292C9*)(S20292C5*), ABISELECT(24280,15448), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C3*)(S20292C10*)(S20292C5*), ABISELECT(24280,15448), "S20292C1");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C3*)(S20292C9*)(S20292C12*), ABISELECT(24280,15448), "S20292C1");
    check_base_class_offset(lv, (S20292C3*)(S20292C9*)(S20292C15*), ABISELECT(24280,15448), "S20292C1");
    check_base_class_offset(lv, (S20292C3*)(S20292C10*)(S20292C15*), ABISELECT(24280,15448), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C3*)(S20292C9*), ABISELECT(24280,15448), "S20292C1");
    check_base_class_offset(lv, (S20292C3*)(S20292C5*)(S20292C16*), ABISELECT(24280,15448), "S20292C1");
    check_base_class_offset(lv, (S20292C3*)(S20292C9*)(S20292C5*)(S20292C16*), ABISELECT(24280,15448), "S20292C1");
    check_base_class_offset(lv, (S20292C3*)(S20292C10*)(S20292C5*)(S20292C16*), ABISELECT(24280,15448), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C6*), ABISELECT(36112,22964), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C6*), ABISELECT(36408,23148), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C6*), ABISELECT(36872,23456), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C6*)(S20292C5*), ABISELECT(36112,22964), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C6*)(S20292C10*)(S20292C5*), ABISELECT(36112,22964), "S20292C1");
    check_base_class_offset(lv, (S20292C6*)(S20292C10*)(S20292C15*), ABISELECT(36112,22964), "S20292C1");
    check_base_class_offset(lv, (S20292C6*)(S20292C5*)(S20292C16*), ABISELECT(36112,22964), "S20292C1");
    check_base_class_offset(lv, (S20292C6*)(S20292C10*)(S20292C5*)(S20292C16*), ABISELECT(36112,22964), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*)(S20292C5*), ABISELECT(25104,15988), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C9*)(S20292C5*), ABISELECT(40232,25584), "S20292C1");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C9*)(S20292C12*), ABISELECT(40232,25584), "S20292C1");
    check_base_class_offset(lv, (S20292C8*)(S20292C9*)(S20292C15*), ABISELECT(40232,25584), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C9*), ABISELECT(40232,25584), "S20292C1");
    check_base_class_offset(lv, (S20292C8*)(S20292C9*)(S20292C5*)(S20292C16*), ABISELECT(40232,25584), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C9*)(S20292C5*), ABISELECT(40704,25892), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C10*)(S20292C5*), ABISELECT(40704,25892), "S20292C1");
    /*is_ambiguous_... S20292C12::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C12*), ABISELECT(40704,25892), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C13*), ABISELECT(40704,25892), "S20292C1");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C9*)(S20292C12*), ABISELECT(40704,25892), "S20292C1");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C13*)(S20292C4*), ABISELECT(40704,25892), "S20292C1");
    check_base_class_offset(lv, (S20292C7*)(S20292C9*)(S20292C15*), ABISELECT(40704,25892), "S20292C1");
    /*is_ambiguous_... S20292C10::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C10*)(S20292C15*), ABISELECT(40704,25892), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C9*), ABISELECT(40704,25892), "S20292C1");
    check_base_class_offset(lv, (S20292C7*)(S20292C9*)(S20292C5*)(S20292C16*), ABISELECT(40704,25892), "S20292C1");
    /*is_ambiguous_... S20292C10::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C10*)(S20292C5*)(S20292C16*), ABISELECT(40704,25892), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C9*)(S20292C5*), ABISELECT(25104,15988), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C10*)(S20292C5*), ABISELECT(25568,16280), "S20292C1");
    check_base_class_offset(lv, (S20292C5*)(S20292C4*), ABISELECT(25104,15988), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C5*)(S20292C13*), ABISELECT(25104,15988), "S20292C1");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C5*)(S20292C13*)(S20292C4*), ABISELECT(25104,15988), "S20292C1");
    /*is_ambiguous_... S20292C12::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C12*), ABISELECT(41008,26076), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C13*), ABISELECT(43824,27868), "S20292C1");
    check_base_class_offset(lv, (S20292C13*)(S20292C12*), ABISELECT(43824,27868), "S20292C1");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*)(S20292C12*), ABISELECT(41152,26172), "S20292C1");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C9*)(S20292C12*), ABISELECT(41152,26172), "S20292C1");
    check_base_class_offset(lv, (S20292C7*)(S20292C11*)(S20292C12*), ABISELECT(41616,26464), "S20292C1");
    check_base_class_offset(lv, (S20292C11*)(S20292C12*), ABISELECT(41616,26464), "S20292C1");
    check_base_class_offset(lv, (S20292C12*)(S20292C4*), ABISELECT(41008,26076), "S20292C1");
    /*is_ambiguous_... S20292C4::S20292C3 */ AMB_check_base_class_offset(lv, (S20292C3*)(S20292C4*), ABISELECT(24448,15556), "S20292C1");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C13*)(S20292C4*), ABISELECT(24616,15664), "S20292C1");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C13*)(S20292C4*), ABISELECT(24616,15664), "S20292C1");
    check_base_class_offset(lv, (S20292C4*), ABISELECT(24448,15556), "S20292C1");
    /*is_ambiguous_... S20292C9::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*)(S20292C15*), 0, "S20292C1");
    check_base_class_offset(lv, (S20292C9*)(S20292C15*), 0, "S20292C1");
    check_base_class_offset(lv, (S20292C10*)(S20292C15*), ABISELECT(464,292), "S20292C1");
    check_base_class_offset(lv, (S20292C15*), 0, "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*), ABISELECT(70592,44844), "S20292C1");
    /*is_ambiguous_... S20292C16::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C9*)(S20292C16*), ABISELECT(70592,44844), "S20292C1");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C6*)(S20292C16*), ABISELECT(44304,28184), "S20292C1");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C6*)(S20292C16*), ABISELECT(44600,28368), "S20292C1");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C6*)(S20292C16*), ABISELECT(45064,28676), "S20292C1");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C6*)(S20292C16*), ABISELECT(44304,28184), "S20292C1");
    /*is_ambiguous_... S20292C9::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*)(S20292C5*)(S20292C16*), ABISELECT(48432,30804), "S20292C1");
    check_base_class_offset(lv, (S20292C9*)(S20292C5*)(S20292C16*), ABISELECT(48432,30804), "S20292C1");
    check_base_class_offset(lv, (S20292C10*)(S20292C5*)(S20292C16*), ABISELECT(48896,31096), "S20292C1");
    check_base_class_offset(lv, (S20292C5*)(S20292C16*), ABISELECT(48432,30804), "S20292C1");
    check_base_class_offset(lv, (S20292C16*), ABISELECT(44304,28184), "S20292C1");
    check_field_offset(lv, s20292c1f0, ABISELECT(7376,4680), "S20292C1.s20292c1f0");
    check_field_offset(lv, s20292c1f1, ABISELECT(7408,4712), "S20292C1.s20292c1f1");
    check_field_offset(lv, s20292c1f2, ABISELECT(7424,4720), "S20292C1.s20292c1f2");
    check_field_offset(lv, s20292c1f3, ABISELECT(24112,15328), "S20292C1.s20292c1f3");
    check_field_offset(lv, s20292c1f4, ABISELECT(24116,15332), "S20292C1.s20292c1f4");
    check_field_offset(lv, s20292c1f5, ABISELECT(24120,15336), "S20292C1.s20292c1f5");
    test_class_info(&lv, &cd_S20292C1);
    dp->~S20292C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C1(Test_S20292C1, "S20292C1", ABISELECT(71056,45136));

#else // __cplusplus

extern void _ZN8S20292C1C1Ev();
extern void _ZN8S20292C1D2Ev();
Name_Map name_map_S20292C1[] = {
  NSPAIR(_ZN8S20292C1C1Ev),
  NSPAIR(_ZN8S20292C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C10;
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
extern Class_Descriptor cd_S20292C5;
extern VTBL_ENTRY _ZTI8S20292C5[];
extern  VTBL_ENTRY _ZTV8S20292C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C5[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C13;
extern VTBL_ENTRY _ZTI9S20292C13[];
extern  VTBL_ENTRY _ZTV9S20292C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C13[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C11;
extern VTBL_ENTRY _ZTI9S20292C11[];
extern  VTBL_ENTRY _ZTV9S20292C11[];
extern Class_Descriptor cd_S20292C12;
extern VTBL_ENTRY _ZTI9S20292C12[];
extern  VTBL_ENTRY _ZTV9S20292C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C12[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C13;
extern VTBL_ENTRY _ZTI9S20292C13[];
extern  VTBL_ENTRY _ZTV9S20292C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C13[];
extern Class_Descriptor cd_S20292C4;
extern VTBL_ENTRY _ZTI8S20292C4[];
extern  VTBL_ENTRY _ZTV8S20292C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C4[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C10;
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
extern Class_Descriptor cd_S20292C15;
extern VTBL_ENTRY _ZTI9S20292C15[];
extern  VTBL_ENTRY _ZTV9S20292C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C15[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C10;
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
extern Class_Descriptor cd_S20292C5;
extern VTBL_ENTRY _ZTI8S20292C5[];
extern  VTBL_ENTRY _ZTV8S20292C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C5[];
extern Class_Descriptor cd_S20292C16;
extern VTBL_ENTRY _ZTI9S20292C16[];
extern  VTBL_ENTRY _ZTV9S20292C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C16[];
static Base_Class bases_S20292C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C2,    ABISELECT(24136,15352), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20292C3,    ABISELECT(24280,15448), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20292C7,    ABISELECT(36112,22964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(36408,23148), //bcp->offset
    102, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20292C2,    ABISELECT(36872,23456), //bcp->offset
    107, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20292C6,    ABISELECT(36112,22964), //bcp->offset
    89, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20292C2,    ABISELECT(25104,15988), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(40232,25584), //bcp->offset
    110, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20292C7,    ABISELECT(40704,25892), //bcp->offset
    118, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20292C9,    ABISELECT(25104,15988), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20292C10,    ABISELECT(25568,16280), //bcp->offset
    81, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20292C5,    ABISELECT(25104,15988), //bcp->offset
    67, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20292C2,    ABISELECT(41008,26076), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(43824,27868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20292C13,    ABISELECT(43824,27868), //bcp->offset
    153, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20292C2,    ABISELECT(41152,26172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20292C9,    ABISELECT(41152,26172), //bcp->offset
    140, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20292C7,    ABISELECT(41616,26464), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20292C11,    ABISELECT(41616,26464), //bcp->offset
    147, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20292C12,    ABISELECT(41008,26076), //bcp->offset
    122, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20292C3,    ABISELECT(24448,15556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(24616,15664), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20292C13,    ABISELECT(24616,15664), //bcp->offset
    54, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20292C4,    ABISELECT(24448,15556), //bcp->offset
    38, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20292C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20292C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20292C10,    ABISELECT(464,292), //bcp->offset
    23, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20292C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20292C2,    ABISELECT(70592,44844), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20292C9,    ABISELECT(70592,44844), //bcp->offset
    221, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    154, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S20292C7,    ABISELECT(44304,28184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(44600,28368), //bcp->offset
    194, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20292C2,    ABISELECT(45064,28676), //bcp->offset
    199, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20292C6,    ABISELECT(44304,28184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20292C2,    ABISELECT(48432,30804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20292C9,    ABISELECT(48432,30804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20292C10,    ABISELECT(48896,31096), //bcp->offset
    213, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20292C5,    ABISELECT(48432,30804), //bcp->offset
    202, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20292C16,    ABISELECT(44304,28184), //bcp->offset
    170, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20292C1[];
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C1D1Ev();
extern void _ZN8S20292C1D0Ev();
extern void _ZN9S20292C153v15Ev();
extern void _ZN9S20292C153v16Ev();
extern void _ZN8S20292C12v1Ev();
extern void _ZN8S20292C12v2Ev();
extern void _ZN8S20292C12v3Ev();
extern void _ZN8S20292C12v4Ev();
extern void _ZN8S20292C12v5Ev();
extern void ABISELECT(_ZThn464_N8S20292C1D1Ev,_ZThn292_N8S20292C1D1Ev)();
extern void ABISELECT(_ZThn464_N8S20292C1D0Ev,_ZThn292_N8S20292C1D0Ev)();
extern void _ZN8S20292C22v6Ev();
extern void ABISELECT(_ZTv0_n88_N8S20292C1D1Ev,_ZTv0_n44_N8S20292C1D1Ev)();
extern void ABISELECT(_ZThn24448_N8S20292C1D1Ev,_ZThn15556_N8S20292C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20292C1D0Ev,_ZTv0_n44_N8S20292C1D0Ev)();
extern void ABISELECT(_ZThn24448_N8S20292C1D0Ev,_ZThn15556_N8S20292C1D0Ev)() __attribute__((weak));
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void ABISELECT(_ZTvn168_n88_N8S20292C1D1Ev,_ZTvn108_n44_N8S20292C1D1Ev)();
extern void ABISELECT(_ZTvn168_n88_N8S20292C1D0Ev,_ZTvn108_n44_N8S20292C1D0Ev)();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S20292C1D1Ev,_ZTv0_n40_N8S20292C1D1Ev)();
extern void ABISELECT(_ZThn25104_N8S20292C1D1Ev,_ZThn15988_N8S20292C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20292C1D0Ev,_ZTv0_n40_N8S20292C1D0Ev)();
extern void ABISELECT(_ZThn25104_N8S20292C1D0Ev,_ZThn15988_N8S20292C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S20292C1D1Ev,_ZTvn292_n40_N8S20292C1D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S20292C1D0Ev,_ZTvn292_n40_N8S20292C1D0Ev)();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C1D1Ev,_ZTv0_n16_N8S20292C1D1Ev)();
extern void ABISELECT(_ZThn36112_N8S20292C1D1Ev,_ZThn22964_N8S20292C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20292C1D0Ev,_ZTv0_n16_N8S20292C1D0Ev)();
extern void ABISELECT(_ZThn36112_N8S20292C1D0Ev,_ZThn22964_N8S20292C1D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C72v7Ev();
extern void _ZN8S20292C22v6Ev();
extern void ABISELECT(_ZTv0_n88_N8S20292C1D1Ev,_ZTv0_n44_N8S20292C1D1Ev)();
extern void ABISELECT(_ZThn41008_N8S20292C1D1Ev,_ZThn26076_N8S20292C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20292C1D0Ev,_ZTv0_n44_N8S20292C1D0Ev)();
extern void ABISELECT(_ZThn41008_N8S20292C1D0Ev,_ZThn26076_N8S20292C1D0Ev)() __attribute__((weak));
extern void _ZN9S20292C123v14Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTvn608_n88_N8S20292C1D1Ev,_ZTvn388_n44_N8S20292C1D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N8S20292C1D0Ev,_ZTvn388_n44_N8S20292C1D0Ev)();
extern void _ZN9S20292C113v13Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void ABISELECT(_ZTv0_n96_N8S20292C1D1Ev,_ZTv0_n48_N8S20292C1D1Ev)();
extern void ABISELECT(_ZThn43824_N8S20292C1D1Ev,_ZThn27868_N8S20292C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20292C1D0Ev,_ZTv0_n48_N8S20292C1D0Ev)();
extern void ABISELECT(_ZThn43824_N8S20292C1D0Ev,_ZThn27868_N8S20292C1D0Ev)() __attribute__((weak));
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S20292C1D1Ev,_ZTv0_n40_N8S20292C1D1Ev)();
extern void ABISELECT(_ZThn44304_N8S20292C1D1Ev,_ZThn28184_N8S20292C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20292C1D0Ev,_ZTv0_n40_N8S20292C1D0Ev)();
extern void ABISELECT(_ZThn44304_N8S20292C1D0Ev,_ZThn28184_N8S20292C1D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
extern void _ZN9S20292C163v17Ev();
extern void _ZN9S20292C163v18Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTvn4128_n80_N8S20292C1D1Ev,_ZTvn2620_n40_N8S20292C1D1Ev)();
extern void ABISELECT(_ZTvn4128_n80_N8S20292C1D0Ev,_ZTvn2620_n40_N8S20292C1D0Ev)();
extern void ABISELECT(_ZTvn4592_n80_N8S20292C1D1Ev,_ZTvn2912_n40_N8S20292C1D1Ev)();
extern void ABISELECT(_ZTvn4592_n80_N8S20292C1D0Ev,_ZTvn2912_n40_N8S20292C1D0Ev)();
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY vtc_S20292C1[] = {
  ABISELECT(70592,44844),
  ABISELECT(44304,28184),
  ABISELECT(43824,27868),
  ABISELECT(41008,26076),
  ABISELECT(25104,15988),
  ABISELECT(24448,15556),
  ABISELECT(36112,22964),
  ABISELECT(40704,25892),
  ABISELECT(24136,15352),
  ABISELECT(24280,15448),
  ABISELECT(40232,25584),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C1D0Ev,
  (VTBL_ENTRY)&_ZN9S20292C153v15Ev,
  (VTBL_ENTRY)&_ZN9S20292C153v16Ev,
  (VTBL_ENTRY)&_ZN8S20292C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20292C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20292C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20292C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20292C12v5Ev,
  ABISELECT(23816,15156),
  ABISELECT(23672,15060),
  ABISELECT(35648,22672),
  ABISELECT(40240,25600),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C1D1Ev,_ZThn292_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C1D0Ev,_ZThn292_N8S20292C1D0Ev),
  0,
  ABISELECT(-24136,-15352),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-144,-96),
  ABISELECT(-24280,-15448),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  ABISELECT(168,108),
  ABISELECT(168,108),
  ABISELECT(168,108),
  ABISELECT(-24448,-15556),
  ABISELECT(19376,12312),
  ABISELECT(16560,10520),
  ABISELECT(16256,10336),
  ABISELECT(15784,10028),
  ABISELECT(-168,-108),
  ABISELECT(11664,7408),
  ABISELECT(656,432),
  ABISELECT(-312,-204),
  ABISELECT(-24448,-15556),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20292C1D1Ev,_ZTv0_n44_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20292C1D0Ev,_ZTv0_n44_N8S20292C1D0Ev),
  ABISELECT(15616,9920),
  ABISELECT(-336,-216),
  ABISELECT(-480,-312),
  ABISELECT(11496,7300),
  ABISELECT(488,324),
  ABISELECT(16088,10228),
  ABISELECT(-24616,-15664),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn168_n88_N8S20292C1D1Ev,_ZTvn108_n44_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn168_n88_N8S20292C1D0Ev,_ZTvn108_n44_N8S20292C1D0Ev),
  ABISELECT(-25104,-15988),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(15600,9904),
  ABISELECT(-968,-636),
  ABISELECT(-824,-540),
  ABISELECT(15128,9596),
  ABISELECT(-25104,-15988),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20292C1D1Ev,_ZTv0_n40_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20292C1D0Ev,_ZTv0_n40_N8S20292C1D0Ev),
  ABISELECT(-1288,-832),
  ABISELECT(-1432,-928),
  ABISELECT(10544,6684),
  ABISELECT(15136,9612),
  ABISELECT(-25568,-16280),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20292C1D1Ev,_ZTvn292_n40_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20292C1D0Ev,_ZTvn292_n40_N8S20292C1D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-36112,-22964),
  0,
  ABISELECT(-36112,-22964),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C1D1Ev,_ZTv0_n16_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C1D0Ev,_ZTv0_n16_N8S20292C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  ABISELECT(-36408,-23148),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-36872,-23456),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  0,
  0,
  ABISELECT(-40232,-25584),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  0,
  ABISELECT(-40704,-25892),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-41008,-26076),
  0,
  ABISELECT(-776,-492),
  ABISELECT(-16728,-10628),
  ABISELECT(-16872,-10724),
  ABISELECT(-4896,-3112),
  ABISELECT(-15904,-10088),
  ABISELECT(2816,1792),
  ABISELECT(-304,-184),
  ABISELECT(-41008,-26076),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20292C1D1Ev,_ZTv0_n44_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20292C1D0Ev,_ZTv0_n44_N8S20292C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20292C123v14Ev,
  ABISELECT(-448,-280),
  ABISELECT(-17016,-10820),
  ABISELECT(-16872,-10724),
  ABISELECT(-920,-588),
  ABISELECT(-41152,-26172),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-41616,-26464),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20292C1D1Ev,_ZTvn388_n44_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20292C1D0Ev,_ZTvn388_n44_N8S20292C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20292C113v13Ev,
  ABISELECT(-43824,-27868),
  0,
  0,
  0,
  ABISELECT(-3592,-2284),
  ABISELECT(-19544,-12420),
  ABISELECT(-19688,-12516),
  ABISELECT(-7712,-4904),
  ABISELECT(-18720,-11880),
  ABISELECT(-3120,-1976),
  ABISELECT(-43824,-27868),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20292C1D1Ev,_ZTv0_n48_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20292C1D0Ev,_ZTv0_n48_N8S20292C1D0Ev),
  ABISELECT(4128,2620),
  0,
  0,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-44304,-28184),
  0,
  ABISELECT(-8192,-5220),
  ABISELECT(-3600,-2292),
  ABISELECT(-20024,-12736),
  ABISELECT(-4072,-2600),
  ABISELECT(26288,16660),
  ABISELECT(-20168,-12832),
  ABISELECT(-44304,-28184),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20292C1D1Ev,_ZTv0_n40_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20292C1D0Ev,_ZTv0_n40_N8S20292C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  (VTBL_ENTRY)&_ZN9S20292C163v17Ev,
  (VTBL_ENTRY)&_ZN9S20292C163v18Ev,
  ABISELECT(-44600,-28368),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-45064,-28676),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-12320,-7840),
  ABISELECT(-7728,-4912),
  ABISELECT(-24296,-15452),
  ABISELECT(-24152,-15356),
  ABISELECT(-8200,-5220),
  ABISELECT(-48432,-30804),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S20292C1D1Ev,_ZTvn2620_n40_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S20292C1D0Ev,_ZTvn2620_n40_N8S20292C1D0Ev),
  ABISELECT(-24616,-15648),
  ABISELECT(-24760,-15744),
  ABISELECT(-12784,-8132),
  ABISELECT(-8192,-5204),
  ABISELECT(-48896,-31096),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S20292C1D1Ev,_ZTvn2912_n40_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S20292C1D0Ev,_ZTvn2912_n40_N8S20292C1D0Ev),
  0,
  ABISELECT(-29888,-18952),
  ABISELECT(-46456,-29492),
  ABISELECT(-46312,-29396),
  ABISELECT(-30360,-19260),
  ABISELECT(-70592,-44844),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern VTBL_ENTRY _ZTV8S20292C1[];
extern void _ZN8S20292C22v6Ev();
extern void _ZN9S20292C15D1Ev();
extern void _ZN9S20292C15D0Ev();
extern void _ZN9S20292C153v15Ev();
extern void _ZN9S20292C153v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C15__8S20292C1[] = {
  ABISELECT(36112,22964),
  ABISELECT(40704,25892),
  ABISELECT(24136,15352),
  ABISELECT(24280,15448),
  ABISELECT(40232,25584),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN9S20292C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20292C153v15Ev,
  (VTBL_ENTRY)&_ZN9S20292C153v16Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C99S20292C15__A2__8S20292C1[] = {
  ABISELECT(40704,25892),
  ABISELECT(24136,15352),
  ABISELECT(24280,15448),
  ABISELECT(40232,25584),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C99S20292C15__A2__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(-40232,-25584),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C99S20292C15__A2__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(-24280,-15448),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C99S20292C15__A2__8S20292C1[] = {
  0,
  ABISELECT(-24136,-15352),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C99S20292C15__A2__8S20292C1[] = {
  0,
  ABISELECT(-40704,-25892),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C109S20292C15__A1__8S20292C1[] = {
  ABISELECT(23816,15156),
  ABISELECT(23672,15060),
  ABISELECT(35648,22672),
  ABISELECT(40240,25600),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C109S20292C15__A1__8S20292C1[] = {
  0,
  ABISELECT(-40240,-25600),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZThn35648_N9S20292C10D1Ev,_ZThn22672_N9S20292C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void ABISELECT(_ZThn35648_N9S20292C10D0Ev,_ZThn22672_N9S20292C10D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C109S20292C15__A1__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-35648,-22672),
  0,
  ABISELECT(-35648,-22672),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__9S20292C109S20292C15__A1__8S20292C1[] = {
  ABISELECT(-35944,-22856),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C109S20292C15__A1__8S20292C1[] = {
  ABISELECT(-36408,-23164),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C109S20292C15__A1__8S20292C1[] = {
  0,
  ABISELECT(-23672,-15060),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C109S20292C15__A1__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(-23816,-15156),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__9S20292C15__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(-40232,-25584),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C15__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(-24280,-15448),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C15__8S20292C1[] = {
  0,
  ABISELECT(-24136,-15352),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C15__8S20292C1[] = {
  0,
  ABISELECT(-40704,-25892),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S20292C15D1Ev,_ZThn292_N9S20292C15D1Ev)();
extern void ABISELECT(_ZThn464_N9S20292C15D0Ev,_ZThn292_N9S20292C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C10__9S20292C15__8S20292C1[] = {
  ABISELECT(23816,15156),
  ABISELECT(23672,15060),
  ABISELECT(35648,22672),
  ABISELECT(40240,25600),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S20292C15D1Ev,_ZThn292_N9S20292C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S20292C15D0Ev,_ZThn292_N9S20292C15D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C15D1Ev,_ZTv0_n16_N9S20292C15D1Ev)();
extern void ABISELECT(_ZThn36112_N9S20292C15D1Ev,_ZThn22964_N9S20292C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C15D0Ev,_ZTv0_n16_N9S20292C15D0Ev)();
extern void ABISELECT(_ZThn36112_N9S20292C15D0Ev,_ZThn22964_N9S20292C15D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C15__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-36112,-22964),
  0,
  ABISELECT(-36112,-22964),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C15D1Ev,_ZTv0_n16_N9S20292C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C15D0Ev,_ZTv0_n16_N9S20292C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__A1__9S20292C15__8S20292C1[] = {
  ABISELECT(-36408,-23148),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__A2__9S20292C15__8S20292C1[] = {
  ABISELECT(-36872,-23456),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C1[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__8S20292C1[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C4D1Ev();
extern void _ZN8S20292C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C4__8S20292C1[] = {
  ABISELECT(19376,12312),
  ABISELECT(16560,10520),
  ABISELECT(16256,10336),
  ABISELECT(15784,10028),
  ABISELECT(-168,-108),
  ABISELECT(11664,7408),
  ABISELECT(656,432),
  ABISELECT(-312,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C38S20292C4__A1__8S20292C1[] = {
  ABISELECT(-312,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C38S20292C4__A1__8S20292C1[] = {
  0,
  ABISELECT(312,204),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN9S20292C13D1Ev();
extern void _ZN9S20292C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C138S20292C4__A1__8S20292C1[] = {
  ABISELECT(15616,9920),
  ABISELECT(-336,-216),
  ABISELECT(-480,-312),
  ABISELECT(11496,7300),
  ABISELECT(488,324),
  ABISELECT(16088,10228),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C138S20292C4__A1__8S20292C1[] = {
  0,
  ABISELECT(-16088,-10228),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZThn488_N9S20292C13D1Ev,_ZThn324_N9S20292C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev)();
extern void ABISELECT(_ZThn488_N9S20292C13D0Ev,_ZThn324_N9S20292C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C138S20292C4__A1__8S20292C1[] = {
  ABISELECT(-488,-324),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(15600,9904),
  ABISELECT(-968,-636),
  ABISELECT(-824,-540),
  ABISELECT(15128,9596),
  ABISELECT(-488,-324),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev)();
extern void ABISELECT(_ZThn11496_N9S20292C13D1Ev,_ZThn7300_N9S20292C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev)();
extern void ABISELECT(_ZThn11496_N9S20292C13D0Ev,_ZThn7300_N9S20292C13D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C138S20292C4__A1__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11496,-7300),
  0,
  ABISELECT(-11496,-7300),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__A1__9S20292C138S20292C4__A1__8S20292C1[] = {
  ABISELECT(-11792,-7484),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C138S20292C4__A1__8S20292C1[] = {
  ABISELECT(-12256,-7792),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C138S20292C4__A1__8S20292C1[] = {
  0,
  ABISELECT(480,312),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C138S20292C4__A1__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(336,216),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A2__9S20292C138S20292C4__A1__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(-15616,-9920),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C138S20292C4__A1__8S20292C1[] = {
  ABISELECT(-1288,-832),
  ABISELECT(-1432,-928),
  ABISELECT(10544,6684),
  ABISELECT(15136,9612),
  ABISELECT(-952,-616),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev),
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S20292C4D1Ev,_ZTv0_n40_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn656_N8S20292C4D1Ev,_ZThn432_N8S20292C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20292C4D0Ev,_ZTv0_n40_N8S20292C4D0Ev)();
extern void ABISELECT(_ZThn656_N8S20292C4D0Ev,_ZThn432_N8S20292C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20292C5__8S20292C4__8S20292C1[] = {
  ABISELECT(-656,-432),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(15600,9904),
  ABISELECT(-968,-636),
  ABISELECT(-824,-540),
  ABISELECT(15128,9596),
  ABISELECT(-656,-432),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20292C4D1Ev,_ZTv0_n40_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20292C4D0Ev,_ZTv0_n40_N8S20292C4D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C4D1Ev,_ZTv0_n16_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn11664_N8S20292C4D1Ev,_ZThn7408_N8S20292C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20292C4D0Ev,_ZTv0_n16_N8S20292C4D0Ev)();
extern void ABISELECT(_ZThn11664_N8S20292C4D0Ev,_ZThn7408_N8S20292C4D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__8S20292C4__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11664,-7408),
  0,
  ABISELECT(-11664,-7408),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C4D1Ev,_ZTv0_n16_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C4D0Ev,_ZTv0_n16_N8S20292C4D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__8S20292C4__8S20292C1[] = {
  ABISELECT(-11960,-7592),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__8S20292C4__8S20292C1[] = {
  ABISELECT(-12424,-7900),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C4__8S20292C1[] = {
  0,
  ABISELECT(312,204),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C4__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(168,108),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A1__8S20292C4__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(-15784,-10028),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__A1__8S20292C4__8S20292C1[] = {
  0,
  ABISELECT(-16256,-10336),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S20292C4D1Ev,_ZTvn292_n40_N8S20292C4D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S20292C4D0Ev,_ZTvn292_n40_N8S20292C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__8S20292C4__8S20292C1[] = {
  ABISELECT(-1288,-832),
  ABISELECT(-1432,-928),
  ABISELECT(10544,6684),
  ABISELECT(15136,9612),
  ABISELECT(-1120,-724),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20292C4D1Ev,_ZTvn292_n40_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20292C4D0Ev,_ZTvn292_n40_N8S20292C4D0Ev),
};
extern void _ZN8S20292C22v6Ev();
extern void ABISELECT(_ZTv0_n88_N8S20292C4D1Ev,_ZTv0_n44_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn16560_N8S20292C4D1Ev,_ZThn10520_N8S20292C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20292C4D0Ev,_ZTv0_n44_N8S20292C4D0Ev)();
extern void ABISELECT(_ZThn16560_N8S20292C4D0Ev,_ZThn10520_N8S20292C4D0Ev)() __attribute__((weak));
extern void _ZN9S20292C123v14Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C12__8S20292C4__8S20292C1[] = {
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-16560,-10520),
  0,
  ABISELECT(-776,-492),
  ABISELECT(-16728,-10628),
  ABISELECT(-16872,-10724),
  ABISELECT(-4896,-3112),
  ABISELECT(-15904,-10088),
  ABISELECT(2816,1792),
  ABISELECT(-304,-184),
  ABISELECT(-16560,-10520),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20292C4D1Ev,_ZTv0_n44_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20292C4D0Ev,_ZTv0_n44_N8S20292C4D0Ev),
  (VTBL_ENTRY)&_ZN9S20292C123v14Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void ABISELECT(_ZTv0_n96_N8S20292C4D1Ev,_ZTv0_n48_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn19376_N8S20292C4D1Ev,_ZThn12312_N8S20292C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20292C4D0Ev,_ZTv0_n48_N8S20292C4D0Ev)();
extern void ABISELECT(_ZThn19376_N8S20292C4D0Ev,_ZThn12312_N8S20292C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20292C13__8S20292C4__8S20292C1[] = {
  ABISELECT(-19376,-12312),
  0,
  0,
  0,
  ABISELECT(-3592,-2284),
  ABISELECT(-19544,-12420),
  ABISELECT(-19688,-12516),
  ABISELECT(-7712,-4904),
  ABISELECT(-18720,-11880),
  ABISELECT(-3120,-1976),
  ABISELECT(-19376,-12312),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20292C4D1Ev,_ZTv0_n48_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20292C4D0Ev,_ZTv0_n48_N8S20292C4D0Ev),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C99S20292C12__A1__8S20292C4__8S20292C1[] = {
  ABISELECT(-448,-280),
  ABISELECT(-17016,-10820),
  ABISELECT(-16872,-10724),
  ABISELECT(-920,-588),
  ABISELECT(-16704,-10616),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTvn608_n88_N8S20292C4D1Ev,_ZTvn388_n44_N8S20292C4D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N8S20292C4D0Ev,_ZTvn388_n44_N8S20292C4D0Ev)();
extern void _ZN9S20292C113v13Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C119S20292C12__8S20292C4__8S20292C1[] = {
  ABISELECT(-17168,-10908),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20292C4D1Ev,_ZTvn388_n44_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20292C4D0Ev,_ZTvn388_n44_N8S20292C4D0Ev),
  (VTBL_ENTRY)&_ZN9S20292C113v13Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void ABISELECT(_ZThn168_N8S20292C4D1Ev,_ZThn108_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn168_N8S20292C4D0Ev,_ZThn108_N8S20292C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C13__A__8S20292C4__8S20292C1[] = {
  ABISELECT(15616,9920),
  ABISELECT(-336,-216),
  ABISELECT(-480,-312),
  ABISELECT(11496,7300),
  ABISELECT(488,324),
  ABISELECT(16088,10228),
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N8S20292C4D1Ev,_ZThn108_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N8S20292C4D0Ev,_ZThn108_N8S20292C4D0Ev),
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void _ZN8S20292C5D1Ev();
extern void _ZN8S20292C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C5__8S20292C1[] = {
  ABISELECT(11008,6976),
  ABISELECT(15600,9904),
  ABISELECT(-968,-636),
  ABISELECT(-824,-540),
  ABISELECT(15128,9596),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D0Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C98S20292C5__8S20292C1[] = {
  ABISELECT(15600,9904),
  ABISELECT(-968,-636),
  ABISELECT(-824,-540),
  ABISELECT(15128,9596),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C98S20292C5__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C98S20292C5__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(824,540),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C98S20292C5__8S20292C1[] = {
  0,
  ABISELECT(968,636),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C98S20292C5__8S20292C1[] = {
  0,
  ABISELECT(-15600,-9904),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__8S20292C1[] = {
  ABISELECT(-1288,-832),
  ABISELECT(-1432,-928),
  ABISELECT(10544,6684),
  ABISELECT(15136,9612),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C108S20292C5__8S20292C1[] = {
  0,
  ABISELECT(-15136,-9612),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C108S20292C5__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__8S20292C1[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__8S20292C1[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C108S20292C5__8S20292C1[] = {
  0,
  ABISELECT(1432,928),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C108S20292C5__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(1288,832),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__8S20292C5__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__8S20292C5__8S20292C1[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__8S20292C5__8S20292C1[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C5__8S20292C1[] = {
  0,
  ABISELECT(968,636),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C5__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(824,540),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A1__8S20292C5__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__A1__8S20292C5__8S20292C1[] = {
  0,
  ABISELECT(-15600,-9904),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C10__8S20292C5__8S20292C1[] = {
  ABISELECT(-1288,-832),
  ABISELECT(-1432,-928),
  ABISELECT(10544,6684),
  ABISELECT(15136,9612),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev),
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN9S20292C12D1Ev();
extern void _ZN9S20292C12D0Ev();
extern void _ZN9S20292C123v14Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C12__8S20292C1[] = {
  ABISELECT(-776,-492),
  ABISELECT(-16728,-10628),
  ABISELECT(-16872,-10724),
  ABISELECT(-4896,-3112),
  ABISELECT(-15904,-10088),
  ABISELECT(2816,1792),
  ABISELECT(-304,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN9S20292C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20292C123v14Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C99S20292C12__A1__8S20292C1[] = {
  ABISELECT(-448,-280),
  ABISELECT(-17016,-10820),
  ABISELECT(-16872,-10724),
  ABISELECT(-920,-588),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C99S20292C12__A1__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(920,588),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C99S20292C12__A1__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(16872,10724),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C99S20292C12__A1__8S20292C1[] = {
  0,
  ABISELECT(17016,10820),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C99S20292C12__A1__8S20292C1[] = {
  0,
  ABISELECT(448,280),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C12__8S20292C1[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void ABISELECT(_ZTv0_n96_N9S20292C12D1Ev,_ZTv0_n48_N9S20292C12D1Ev)();
extern void ABISELECT(_ZThn2816_N9S20292C12D1Ev,_ZThn1792_N9S20292C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20292C12D0Ev,_ZTv0_n48_N9S20292C12D0Ev)();
extern void ABISELECT(_ZThn2816_N9S20292C12D0Ev,_ZThn1792_N9S20292C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20292C13__9S20292C12__8S20292C1[] = {
  ABISELECT(-2816,-1792),
  0,
  0,
  0,
  ABISELECT(-3592,-2284),
  ABISELECT(-19544,-12420),
  ABISELECT(-19688,-12516),
  ABISELECT(-7712,-4904),
  ABISELECT(-18720,-11880),
  ABISELECT(-3120,-1976),
  ABISELECT(-2816,-1792),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20292C12D1Ev,_ZTv0_n48_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20292C12D0Ev,_ZTv0_n48_N9S20292C12D0Ev),
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20292C12D1Ev,_ZTv0_n40_N9S20292C12D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S20292C12D0Ev,_ZTv0_n40_N9S20292C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C12__8S20292C1[] = {
  ABISELECT(15904,10088),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(15600,9904),
  ABISELECT(-968,-636),
  ABISELECT(-824,-540),
  ABISELECT(15128,9596),
  ABISELECT(15904,10088),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C12D1Ev,_ZTv0_n40_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C12D0Ev,_ZTv0_n40_N9S20292C12D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C12D1Ev,_ZTv0_n16_N9S20292C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20292C12D0Ev,_ZTv0_n16_N9S20292C12D0Ev)();
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C12__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4896,3112),
  0,
  ABISELECT(4896,3112),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C12D1Ev,_ZTv0_n16_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C12D0Ev,_ZTv0_n16_N9S20292C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__A1__9S20292C12__8S20292C1[] = {
  ABISELECT(4600,2928),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__A1__9S20292C12__8S20292C1[] = {
  ABISELECT(4136,2620),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A2__9S20292C12__8S20292C1[] = {
  0,
  ABISELECT(16872,10724),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C12__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(16728,10628),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A2__9S20292C12__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(776,492),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S20292C12D1Ev,_ZTvn292_n40_N9S20292C12D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S20292C12D0Ev,_ZTvn292_n40_N9S20292C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C12__8S20292C1[] = {
  ABISELECT(-1288,-832),
  ABISELECT(-1432,-928),
  ABISELECT(10544,6684),
  ABISELECT(15136,9612),
  ABISELECT(15440,9796),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C12D1Ev,_ZTvn292_n40_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C12D0Ev,_ZTvn292_n40_N9S20292C12D0Ev),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C9__A1__9S20292C12__8S20292C1[] = {
  ABISELECT(-448,-280),
  ABISELECT(-17016,-10820),
  ABISELECT(-16872,-10724),
  ABISELECT(-920,-588),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN9S20292C13D1Ev();
extern void _ZN9S20292C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C13__8S20292C1[] = {
  ABISELECT(-3592,-2284),
  ABISELECT(-19544,-12420),
  ABISELECT(-19688,-12516),
  ABISELECT(-7712,-4904),
  ABISELECT(-18720,-11880),
  ABISELECT(-3120,-1976),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C13__8S20292C1[] = {
  0,
  ABISELECT(3120,1976),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C13__8S20292C1[] = {
  ABISELECT(18720,11880),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(15600,9904),
  ABISELECT(-968,-636),
  ABISELECT(-824,-540),
  ABISELECT(15128,9596),
  ABISELECT(18720,11880),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev)();
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C13__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(7712,4904),
  0,
  ABISELECT(7712,4904),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__A1__9S20292C13__8S20292C1[] = {
  ABISELECT(7416,4720),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C13__8S20292C1[] = {
  ABISELECT(6952,4412),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C13__8S20292C1[] = {
  0,
  ABISELECT(19688,12516),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C13__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(19544,12420),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A2__9S20292C13__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(3592,2284),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C13__8S20292C1[] = {
  ABISELECT(-1288,-832),
  ABISELECT(-1432,-928),
  ABISELECT(10544,6684),
  ABISELECT(15136,9612),
  ABISELECT(18256,11588),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void _ZN9S20292C16D1Ev();
extern void _ZN9S20292C16D0Ev();
extern void _ZN8S20292C63v11Ev();
extern void _ZN9S20292C163v17Ev();
extern void _ZN9S20292C163v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C16__8S20292C1[] = {
  ABISELECT(-8192,-5220),
  ABISELECT(-3600,-2292),
  ABISELECT(-20024,-12736),
  ABISELECT(-4072,-2600),
  ABISELECT(26288,16660),
  ABISELECT(-20168,-12832),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&_ZN9S20292C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C16D0Ev,
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  (VTBL_ENTRY)&_ZN9S20292C163v17Ev,
  (VTBL_ENTRY)&_ZN9S20292C163v18Ev,
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void _ZN8S20292C5D1Ev();
extern void _ZN8S20292C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C59S20292C16__A1__8S20292C1[] = {
  ABISELECT(-12320,-7840),
  ABISELECT(-7728,-4912),
  ABISELECT(-24296,-15452),
  ABISELECT(-24152,-15356),
  ABISELECT(-8200,-5220),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D0Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C98S20292C59S20292C16__A4__8S20292C1[] = {
  ABISELECT(-7728,-4912),
  ABISELECT(-24296,-15452),
  ABISELECT(-24152,-15356),
  ABISELECT(-8200,-5220),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C98S20292C59S20292C16__A4__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(8200,5220),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C98S20292C59S20292C16__A4__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(24152,15356),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C98S20292C59S20292C16__A4__8S20292C1[] = {
  0,
  ABISELECT(24296,15452),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C98S20292C59S20292C16__A4__8S20292C1[] = {
  0,
  ABISELECT(7728,4912),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C59S20292C16__A2__8S20292C1[] = {
  ABISELECT(-24616,-15648),
  ABISELECT(-24760,-15744),
  ABISELECT(-12784,-8132),
  ABISELECT(-8192,-5204),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C108S20292C59S20292C16__A2__8S20292C1[] = {
  0,
  ABISELECT(8192,5204),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C108S20292C59S20292C16__A2__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(12784,8132),
  0,
  ABISELECT(12784,8132),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__9S20292C108S20292C59S20292C16__A2__8S20292C1[] = {
  ABISELECT(12488,7948),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C108S20292C59S20292C16__A2__8S20292C1[] = {
  ABISELECT(12024,7640),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C108S20292C59S20292C16__A2__8S20292C1[] = {
  0,
  ABISELECT(24760,15744),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C108S20292C59S20292C16__A2__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(24616,15648),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev)();
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__8S20292C59S20292C16__A1__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(12320,7840),
  0,
  ABISELECT(12320,7840),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__8S20292C59S20292C16__A1__8S20292C1[] = {
  ABISELECT(12024,7656),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__8S20292C59S20292C16__A1__8S20292C1[] = {
  ABISELECT(11560,7348),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C59S20292C16__A1__8S20292C1[] = {
  0,
  ABISELECT(24296,15452),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C59S20292C16__A1__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(24152,15356),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A1__8S20292C59S20292C16__A1__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(8200,5220),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__A1__8S20292C59S20292C16__A1__8S20292C1[] = {
  0,
  ABISELECT(7728,4912),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C10__8S20292C59S20292C16__A1__8S20292C1[] = {
  ABISELECT(-24616,-15648),
  ABISELECT(-24760,-15744),
  ABISELECT(-12784,-8132),
  ABISELECT(-8192,-5204),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__9S20292C16__8S20292C1[] = {
  0,
  ABISELECT(20168,12832),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C9__9S20292C16__8S20292C1[] = {
  0,
  ABISELECT(-29888,-18952),
  ABISELECT(-46456,-29492),
  ABISELECT(-46312,-29396),
  ABISELECT(-30360,-19260),
  ABISELECT(-26288,-16660),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__9S20292C16__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(4072,2600),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C16__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(20024,12736),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C16__8S20292C1[] = {
  0,
  ABISELECT(3600,2292),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZThn4128_N9S20292C16D1Ev,_ZThn2620_N9S20292C16D1Ev)();
extern void ABISELECT(_ZThn4128_N9S20292C16D0Ev,_ZThn2620_N9S20292C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C16__8S20292C1[] = {
  ABISELECT(-12320,-7840),
  ABISELECT(-7728,-4912),
  ABISELECT(-24296,-15452),
  ABISELECT(-24152,-15356),
  ABISELECT(-8200,-5220),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S20292C16D1Ev,_ZThn2620_N9S20292C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S20292C16D0Ev,_ZThn2620_N9S20292C16D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C16D1Ev,_ZTv0_n16_N9S20292C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20292C16D0Ev,_ZTv0_n16_N9S20292C16D0Ev)();
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__A1__9S20292C16__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(8192,5220),
  0,
  ABISELECT(8192,5220),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C16D1Ev,_ZTv0_n16_N9S20292C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C16D0Ev,_ZTv0_n16_N9S20292C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__A2__9S20292C16__8S20292C1[] = {
  ABISELECT(7896,5036),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__A3__9S20292C16__8S20292C1[] = {
  ABISELECT(7432,4728),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void ABISELECT(_ZThn4592_N9S20292C16D1Ev,_ZThn2912_N9S20292C16D1Ev)();
extern void ABISELECT(_ZThn4592_N9S20292C16D0Ev,_ZThn2912_N9S20292C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C16__8S20292C1[] = {
  ABISELECT(-24616,-15648),
  ABISELECT(-24760,-15744),
  ABISELECT(-12784,-8132),
  ABISELECT(-8192,-5204),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S20292C16D1Ev,_ZThn2912_N9S20292C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S20292C16D0Ev,_ZThn2912_N9S20292C16D0Ev),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C9__A3__8S20292C1[] = {
  ABISELECT(-29888,-18952),
  ABISELECT(-46456,-29492),
  ABISELECT(-46312,-29396),
  ABISELECT(-30360,-19260),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C9__A3__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(30360,19260),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C9__A3__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(46312,29396),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C9__A3__8S20292C1[] = {
  0,
  ABISELECT(46456,29492),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C9__A3__8S20292C1[] = {
  0,
  ABISELECT(29888,18952),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
static  VTT_ENTRY vtt_S20292C1[] = {
  {&(_ZTV8S20292C1[13]),  13,229},
  {&(_tg__ZTV9S20292C15__8S20292C1[7]),  7,12},
  {&(_tg__ZTV8S20292C99S20292C15__A2__8S20292C1[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C99S20292C15__A2__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C99S20292C15__A2__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C99S20292C15__A2__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C99S20292C15__A2__8S20292C1[3]),  3,4},
  {&(_tg__ZTV9S20292C109S20292C15__A1__8S20292C1[6]),  6,8},
  {&(_tg__ZTV8S20292C7__9S20292C109S20292C15__A1__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C6__9S20292C109S20292C15__A1__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__9S20292C109S20292C15__A1__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C109S20292C15__A1__8S20292C1[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C109S20292C15__A1__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C109S20292C15__A1__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C8__9S20292C15__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C3__9S20292C15__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C15__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C7__9S20292C15__8S20292C1[3]),  3,4},
  {&(_tg__ZTV9S20292C10__9S20292C15__8S20292C1[6]),  6,8},
  {&(_tg__ZTV8S20292C6__9S20292C15__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__A1__9S20292C15__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__A2__9S20292C15__8S20292C1[2]),  2,3},
  {&(_ZTV8S20292C1[34]),  34,229},
  {&(_ZTV8S20292C1[38]),  38,229},
  {&(_ZTV8S20292C1[52]),  52,229},
  {&(_ZTV8S20292C1[77]),  77,229},
  {&(_ZTV8S20292C1[98]),  98,229},
  {&(_ZTV8S20292C1[104]),  104,229},
  {&(_ZTV8S20292C1[109]),  109,229},
  {&(_ZTV8S20292C1[115]),  115,229},
  {&(_ZTV8S20292C1[121]),  121,229},
  {&(_ZTV8S20292C1[87]),  87,229},
  {&(_ZTV8S20292C1[136]),  136,229},
  {&(_ZTV8S20292C1[165]),  165,229},
  {&(_ZTV8S20292C1[146]),  146,229},
  {&(_ZTV8S20292C1[149]),  149,229},
  {&(_ZTV8S20292C1[62]),  62,229},
  {&(_ZTV8S20292C1[29]),  29,229},
  {&(_ZTV8S20292C1[188]),  188,229},
  {&(_ZTV8S20292C1[228]),  228,229},
  {&(_ZTV8S20292C1[196]),  196,229},
  {&(_ZTV8S20292C1[201]),  201,229},
  {&(_ZTV8S20292C1[209]),  209,229},
  {&(_ZTV8S20292C1[219]),  219,229},
  {&(_tg__ZTV8S20292C3__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C4__8S20292C1[10]),  10,12},
  {&(_tg__ZTV8S20292C38S20292C4__A1__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C38S20292C4__A1__8S20292C1[3]),  3,4},
  {&(_tg__ZTV9S20292C138S20292C4__A1__8S20292C1[8]),  8,13},
  {&(_tg__ZTV8S20292C7__9S20292C138S20292C4__A1__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C5__9S20292C138S20292C4__A1__8S20292C1[10]),  10,14},
  {&(_tg__ZTV8S20292C6__9S20292C138S20292C4__A1__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__A1__9S20292C138S20292C4__A1__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C138S20292C4__A1__8S20292C1[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C138S20292C4__A1__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C138S20292C4__A1__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A2__9S20292C138S20292C4__A1__8S20292C1[5]),  5,8},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C138S20292C4__A1__8S20292C1[6]),  6,8},
  {&(_tg__ZTV8S20292C5__8S20292C4__8S20292C1[10]),  10,14},
  {&(_tg__ZTV8S20292C6__8S20292C4__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__8S20292C4__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__8S20292C4__8S20292C1[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C4__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C3__8S20292C4__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A1__8S20292C4__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C7__A1__8S20292C4__8S20292C1[3]),  3,4},
  {&(_tg__ZTV9S20292C108S20292C5__8S20292C4__8S20292C1[6]),  6,8},
  {&(_tg__ZTV9S20292C12__8S20292C4__8S20292C1[14]),  14,18},
  {&(_tg__ZTV9S20292C13__8S20292C4__8S20292C1[12]),  12,17},
  {&(_tg__ZTV8S20292C99S20292C12__A1__8S20292C4__8S20292C1[6]),  6,7},
  {&(_tg__ZTV9S20292C119S20292C12__8S20292C4__8S20292C1[2]),  2,6},
  {&(_tg__ZTV9S20292C13__A__8S20292C4__8S20292C1[8]),  8,13},
  {&(_tg__ZTV8S20292C5__8S20292C1[7]),  7,11},
  {&(_tg__ZTV8S20292C98S20292C5__8S20292C1[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C98S20292C5__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C98S20292C5__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C98S20292C5__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C98S20292C5__8S20292C1[3]),  3,4},
  {&(_tg__ZTV9S20292C108S20292C5__8S20292C1[6]),  6,8},
  {&(_tg__ZTV8S20292C7__9S20292C108S20292C5__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C6__9S20292C108S20292C5__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__8S20292C1[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C108S20292C5__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C108S20292C5__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C6__8S20292C5__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__8S20292C5__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__8S20292C5__8S20292C1[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C5__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C3__8S20292C5__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A1__8S20292C5__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C7__A1__8S20292C5__8S20292C1[3]),  3,4},
  {&(_tg__ZTV9S20292C10__8S20292C5__8S20292C1[6]),  6,8},
  {&(_tg__ZTV9S20292C12__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C99S20292C12__A1__8S20292C1[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C99S20292C12__A1__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C99S20292C12__A1__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C99S20292C12__A1__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C99S20292C12__A1__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C7__9S20292C12__8S20292C1[3]),  3,4},
  {&(_tg__ZTV9S20292C13__9S20292C12__8S20292C1[12]),  12,17},
  {&(_tg__ZTV8S20292C5__9S20292C12__8S20292C1[10]),  10,14},
  {&(_tg__ZTV8S20292C6__9S20292C12__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__A1__9S20292C12__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__A1__9S20292C12__8S20292C1[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A2__9S20292C12__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C12__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A2__9S20292C12__8S20292C1[5]),  5,8},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C12__8S20292C1[6]),  6,8},
  {&(_tg__ZTV8S20292C9__A1__9S20292C12__8S20292C1[6]),  6,7},
  {&(_tg__ZTV9S20292C13__8S20292C1[8]),  8,13},
  {&(_tg__ZTV8S20292C7__9S20292C13__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C5__9S20292C13__8S20292C1[10]),  10,14},
  {&(_tg__ZTV8S20292C6__9S20292C13__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__A1__9S20292C13__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C13__8S20292C1[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C13__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C13__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A2__9S20292C13__8S20292C1[5]),  5,8},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C13__8S20292C1[6]),  6,8},
  {&(_tg__ZTV9S20292C16__8S20292C1[8]),  8,14},
  {&(_tg__ZTV8S20292C59S20292C16__A1__8S20292C1[7]),  7,11},
  {&(_tg__ZTV8S20292C98S20292C59S20292C16__A4__8S20292C1[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C98S20292C59S20292C16__A4__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C98S20292C59S20292C16__A4__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C98S20292C59S20292C16__A4__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C98S20292C59S20292C16__A4__8S20292C1[3]),  3,4},
  {&(_tg__ZTV9S20292C108S20292C59S20292C16__A2__8S20292C1[6]),  6,8},
  {&(_tg__ZTV8S20292C7__9S20292C108S20292C59S20292C16__A2__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C6__9S20292C108S20292C59S20292C16__A2__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__9S20292C108S20292C59S20292C16__A2__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C108S20292C59S20292C16__A2__8S20292C1[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C108S20292C59S20292C16__A2__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C108S20292C59S20292C16__A2__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C6__8S20292C59S20292C16__A1__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__8S20292C59S20292C16__A1__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__8S20292C59S20292C16__A1__8S20292C1[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C59S20292C16__A1__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C3__8S20292C59S20292C16__A1__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A1__8S20292C59S20292C16__A1__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C7__A1__8S20292C59S20292C16__A1__8S20292C1[3]),  3,4},
  {&(_tg__ZTV9S20292C10__8S20292C59S20292C16__A1__8S20292C1[6]),  6,8},
  {&(_tg__ZTV8S20292C2__9S20292C16__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C9__9S20292C16__8S20292C1[7]),  7,8},
  {&(_tg__ZTV8S20292C8__9S20292C16__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C3__9S20292C16__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C7__9S20292C16__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C5__9S20292C16__8S20292C1[7]),  7,11},
  {&(_tg__ZTV8S20292C6__A1__9S20292C16__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__A2__9S20292C16__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__A3__9S20292C16__8S20292C1[2]),  2,3},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C16__8S20292C1[6]),  6,8},
  {&(_tg__ZTV8S20292C9__A3__8S20292C1[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C9__A3__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C9__A3__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C9__A3__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C9__A3__8S20292C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20292C1[];
extern  VTBL_ENTRY _ZTV8S20292C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C1[];
static VTBL_ENTRY alt_thunk_names40[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20292C12D0Ev,_ZTv0_n48_N9S20292C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N9S20292C12D0Ev,_ZThn1792_N9S20292C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20292C12D1Ev,_ZTv0_n48_N9S20292C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N9S20292C12D1Ev,_ZThn1792_N9S20292C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20292C4D0Ev,_ZTv0_n48_N8S20292C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19376_N8S20292C4D0Ev,_ZThn12312_N8S20292C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20292C4D1Ev,_ZTv0_n48_N8S20292C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19376_N8S20292C4D1Ev,_ZThn12312_N8S20292C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20292C4D0Ev,_ZTv0_n44_N8S20292C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16560_N8S20292C4D0Ev,_ZThn10520_N8S20292C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20292C4D1Ev,_ZTv0_n44_N8S20292C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16560_N8S20292C4D1Ev,_ZThn10520_N8S20292C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C4D0Ev,_ZTv0_n16_N8S20292C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11664_N8S20292C4D0Ev,_ZThn7408_N8S20292C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C4D1Ev,_ZTv0_n16_N8S20292C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11664_N8S20292C4D1Ev,_ZThn7408_N8S20292C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20292C4D0Ev,_ZTv0_n40_N8S20292C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S20292C4D0Ev,_ZThn432_N8S20292C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20292C4D1Ev,_ZTv0_n40_N8S20292C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S20292C4D1Ev,_ZThn432_N8S20292C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11496_N9S20292C13D0Ev,_ZThn7300_N9S20292C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11496_N9S20292C13D1Ev,_ZThn7300_N9S20292C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N9S20292C13D0Ev,_ZThn324_N9S20292C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N9S20292C13D1Ev,_ZThn324_N9S20292C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C15D0Ev,_ZTv0_n16_N9S20292C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36112_N9S20292C15D0Ev,_ZThn22964_N9S20292C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C15D1Ev,_ZTv0_n16_N9S20292C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36112_N9S20292C15D1Ev,_ZThn22964_N9S20292C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35648_N9S20292C10D0Ev,_ZThn22672_N9S20292C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35648_N9S20292C10D1Ev,_ZThn22672_N9S20292C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20292C1D0Ev,_ZTv0_n48_N8S20292C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43824_N8S20292C1D0Ev,_ZThn27868_N8S20292C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20292C1D1Ev,_ZTv0_n48_N8S20292C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43824_N8S20292C1D1Ev,_ZThn27868_N8S20292C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C1D0Ev,_ZTv0_n16_N8S20292C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36112_N8S20292C1D0Ev,_ZThn22964_N8S20292C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C1D1Ev,_ZTv0_n16_N8S20292C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36112_N8S20292C1D1Ev,_ZThn22964_N8S20292C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20292C1D0Ev,_ZTv0_n40_N8S20292C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn44304_N8S20292C1D0Ev,_ZThn28184_N8S20292C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25104_N8S20292C1D0Ev,_ZThn15988_N8S20292C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20292C1D1Ev,_ZTv0_n40_N8S20292C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn44304_N8S20292C1D1Ev,_ZThn28184_N8S20292C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25104_N8S20292C1D1Ev,_ZThn15988_N8S20292C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20292C1D0Ev,_ZTv0_n44_N8S20292C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn41008_N8S20292C1D0Ev,_ZThn26076_N8S20292C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24448_N8S20292C1D0Ev,_ZThn15556_N8S20292C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20292C1D1Ev,_ZTv0_n44_N8S20292C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn41008_N8S20292C1D1Ev,_ZThn26076_N8S20292C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24448_N8S20292C1D1Ev,_ZThn15556_N8S20292C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20292C1 = {  "S20292C1", // class name
  bases_S20292C1, 39,
  &(vtc_S20292C1[0]), // expected_vtbl_contents
  &(vtt_S20292C1[0]), // expected_vtt_contents
  ABISELECT(71056,45136), // object size
  NSPAIRA(_ZTI8S20292C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20292C1),229, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20292C1),158, //virtual table table var
  39, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names40,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3463C5  {
  void *s3463c5f0[3];
  int s3463c5f1[2];
  __tsi64 s3463c5f2;
  virtual void  v1(); // _ZN7S3463C52v1Ev
  ~S3463C5(); // tgen
  S3463C5(); // tgen
};
//SIG(-1 S3463C5) C1{ v1 Fp[3] Fi[2] FL}


void  S3463C5 ::v1(){vfunc_called(this, "_ZN7S3463C52v1Ev");}
S3463C5 ::~S3463C5(){ note_dtor("S3463C5", this);} // tgen
S3463C5 ::S3463C5(){ note_ctor("S3463C5", this);} // tgen

static void Test_S3463C5()
{
  extern Class_Descriptor cd_S3463C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S3463C5, buf);
    S3463C5 *dp, &lv = *(dp=new (buf) S3463C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S3463C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3463C5)");
    check_field_offset(lv, s3463c5f0, ABISELECT(8,4), "S3463C5.s3463c5f0");
    check_field_offset(lv, s3463c5f1, ABISELECT(32,16), "S3463C5.s3463c5f1");
    check_field_offset(lv, s3463c5f2, ABISELECT(40,24), "S3463C5.s3463c5f2");
    test_class_info(&lv, &cd_S3463C5);
    dp->~S3463C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C5(Test_S3463C5, "S3463C5", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S3463C5C1Ev();
extern void _ZN7S3463C5D1Ev();
Name_Map name_map_S3463C5[] = {
  NSPAIR(_ZN7S3463C5C1Ev),
  NSPAIR(_ZN7S3463C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3463C5[];
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY vtc_S3463C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C5[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
Class_Descriptor cd_S3463C5 = {  "S3463C5", // class name
  0,0,//no base classes
  &(vtc_S3463C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S3463C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3463C5),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3463C4  : S3463C5 {
  char s3463c4f0[10];
  long s3463c4f1[6];
  ::S3463C5 s3463c4f2;
  void *s3463c4f3;
  ::S19763C18_nt s3463c4f4;
  int s3463c4f5[4];
  ::S19942C8 s3463c4f6;
  int s3463c4f7;
  void *s3463c4f8;
  __tsi64 s3463c4f9;
  int s3463c4f10:19;
  virtual void  v2(); // _ZN7S3463C42v2Ev
  virtual void  v3(); // _ZN7S3463C42v3Ev
  ~S3463C4(); // tgen
  S3463C4(); // tgen
};
//SIG(-1 S3463C4) C1{ BC2{ v3 Fp[3] Fi[2] FL} v1 v2 Fc[10] Fl[6] FC2 Fp FC3{} Fi[4] FU4{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19}


void  S3463C4 ::v2(){vfunc_called(this, "_ZN7S3463C42v2Ev");}
void  S3463C4 ::v3(){vfunc_called(this, "_ZN7S3463C42v3Ev");}
S3463C4 ::~S3463C4(){ note_dtor("S3463C4", this);} // tgen
S3463C4 ::S3463C4(){ note_ctor("S3463C4", this);} // tgen

static void Test_S3463C4()
{
  extern Class_Descriptor cd_S3463C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,40)];
    init_test(&cd_S3463C4, buf);
    S3463C4 *dp, &lv = *(dp=new (buf) S3463C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,156), "sizeof(S3463C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3463C4)");
    check_base_class_offset(lv, (S3463C5*), 0, "S3463C4");
    check_field_offset(lv, s3463c4f0, ABISELECT(48,32), "S3463C4.s3463c4f0");
    check_field_offset(lv, s3463c4f1, ABISELECT(64,44), "S3463C4.s3463c4f1");
    check_field_offset(lv, s3463c4f2, ABISELECT(112,68), "S3463C4.s3463c4f2");
    check_field_offset(lv, s3463c4f3, ABISELECT(160,100), "S3463C4.s3463c4f3");
    check_field_offset(lv, s3463c4f4, ABISELECT(168,104), "S3463C4.s3463c4f4");
    check_field_offset(lv, s3463c4f5, ABISELECT(172,108), "S3463C4.s3463c4f5");
    check_field_offset(lv, s3463c4f6, ABISELECT(192,124), "S3463C4.s3463c4f6");
    check_field_offset(lv, s3463c4f7, ABISELECT(208,136), "S3463C4.s3463c4f7");
    check_field_offset(lv, s3463c4f8, ABISELECT(216,140), "S3463C4.s3463c4f8");
    check_field_offset(lv, s3463c4f9, ABISELECT(224,144), "S3463C4.s3463c4f9");
    set_bf_and_test(lv, s3463c4f10, ABISELECT(232,152), 0, 19, 1, "S3463C4");
    set_bf_and_test(lv, s3463c4f10, ABISELECT(232,152), 0, 19, hide_sll(1LL<<18), "S3463C4");
    test_class_info(&lv, &cd_S3463C4);
    dp->~S3463C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C4(Test_S3463C4, "S3463C4", ABISELECT(240,156));

#else // __cplusplus

extern void _ZN7S3463C4C1Ev();
extern void _ZN7S3463C4D1Ev();
Name_Map name_map_S3463C4[] = {
  NSPAIR(_ZN7S3463C4C1Ev),
  NSPAIR(_ZN7S3463C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
static Base_Class bases_S3463C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3463C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3463C4[];
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY vtc_S3463C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C4[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
Class_Descriptor cd_S3463C4 = {  "S3463C4", // class name
  bases_S3463C4, 1,
  &(vtc_S3463C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,156), // object size
  NSPAIRA(_ZTI7S3463C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3463C4),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3463C8  : S3463C5 {
  int s3463c8f0[10];
  short s3463c8f1:11;
  ::S3463C5 s3463c8f2;
  ~S3463C8(); // tgen
  S3463C8(); // tgen
};
//SIG(-1 S3463C8) C1{ BC2{ v1 Fp[3] Fi[2] FL} Fi[10] Fs:11 FC2}


S3463C8 ::~S3463C8(){ note_dtor("S3463C8", this);} // tgen
S3463C8 ::S3463C8(){ note_ctor("S3463C8", this);} // tgen

static void Test_S3463C8()
{
  extern Class_Descriptor cd_S3463C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,28)];
    init_test(&cd_S3463C8, buf);
    S3463C8 *dp, &lv = *(dp=new (buf) S3463C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,108), "sizeof(S3463C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3463C8)");
    check_base_class_offset(lv, (S3463C5*), 0, "S3463C8");
    check_field_offset(lv, s3463c8f0, ABISELECT(48,32), "S3463C8.s3463c8f0");
    set_bf_and_test(lv, s3463c8f1, ABISELECT(88,72), 0, 11, 1, "S3463C8");
    set_bf_and_test(lv, s3463c8f1, ABISELECT(88,72), 0, 11, hide_sll(1LL<<10), "S3463C8");
    check_field_offset(lv, s3463c8f2, ABISELECT(96,76), "S3463C8.s3463c8f2");
    test_class_info(&lv, &cd_S3463C8);
    dp->~S3463C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C8(Test_S3463C8, "S3463C8", ABISELECT(144,108));

#else // __cplusplus

extern void _ZN7S3463C8C1Ev();
extern void _ZN7S3463C8D1Ev();
Name_Map name_map_S3463C8[] = {
  NSPAIR(_ZN7S3463C8C1Ev),
  NSPAIR(_ZN7S3463C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
static Base_Class bases_S3463C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3463C5,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3463C8[];
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY vtc_S3463C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C8[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern VTBL_ENTRY _ZTI7S3463C8[];
extern  VTBL_ENTRY _ZTV7S3463C8[];
Class_Descriptor cd_S3463C8 = {  "S3463C8", // class name
  bases_S3463C8, 1,
  &(vtc_S3463C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,108), // object size
  NSPAIRA(_ZTI7S3463C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3463C8),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3463C9  {
  void *s3463c9f0;
  short s3463c9f1;
  ::S19763C18_nt s3463c9f2;
  void *s3463c9f3;
  __tsi64 s3463c9f4;
  int s3463c9f5;
  ::S19942C11 s3463c9f6;
  int s3463c9f7;
  int s3463c9f8:12;
  int s3463c9f9;
  int s3463c9f10:8;
  virtual void  v4(); // _ZN7S3463C92v4Ev
  ~S3463C9(); // tgen
  S3463C9(); // tgen
};
//SIG(-1 S3463C9) C1{ v1 Fp Fs FC2{} Fp FL Fi FU3{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8}


void  S3463C9 ::v4(){vfunc_called(this, "_ZN7S3463C92v4Ev");}
S3463C9 ::~S3463C9(){ note_dtor("S3463C9", this);} // tgen
S3463C9 ::S3463C9(){ note_ctor("S3463C9", this);} // tgen

static void Test_S3463C9()
{
  extern Class_Descriptor cd_S3463C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,42)];
    init_test(&cd_S3463C9, buf);
    S3463C9 *dp, &lv = *(dp=new (buf) S3463C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,164), "sizeof(S3463C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3463C9)");
    check_field_offset(lv, s3463c9f0, ABISELECT(8,4), "S3463C9.s3463c9f0");
    check_field_offset(lv, s3463c9f1, ABISELECT(16,8), "S3463C9.s3463c9f1");
    check_field_offset(lv, s3463c9f2, ABISELECT(18,10), "S3463C9.s3463c9f2");
    check_field_offset(lv, s3463c9f3, ABISELECT(24,12), "S3463C9.s3463c9f3");
    check_field_offset(lv, s3463c9f4, ABISELECT(32,16), "S3463C9.s3463c9f4");
    check_field_offset(lv, s3463c9f5, ABISELECT(40,24), "S3463C9.s3463c9f5");
    check_field_offset(lv, s3463c9f6, ABISELECT(48,28), "S3463C9.s3463c9f6");
    check_field_offset(lv, s3463c9f7, ABISELECT(208,148), "S3463C9.s3463c9f7");
    set_bf_and_test(lv, s3463c9f8, ABISELECT(212,152), 0, 12, 1, "S3463C9");
    set_bf_and_test(lv, s3463c9f8, ABISELECT(212,152), 0, 12, hide_sll(1LL<<11), "S3463C9");
    check_field_offset(lv, s3463c9f9, ABISELECT(216,156), "S3463C9.s3463c9f9");
    set_bf_and_test(lv, s3463c9f10, ABISELECT(220,160), 0, 8, 1, "S3463C9");
    set_bf_and_test(lv, s3463c9f10, ABISELECT(220,160), 0, 8, hide_sll(1LL<<7), "S3463C9");
    test_class_info(&lv, &cd_S3463C9);
    dp->~S3463C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C9(Test_S3463C9, "S3463C9", ABISELECT(224,164));

#else // __cplusplus

extern void _ZN7S3463C9C1Ev();
extern void _ZN7S3463C9D1Ev();
Name_Map name_map_S3463C9[] = {
  NSPAIR(_ZN7S3463C9C1Ev),
  NSPAIR(_ZN7S3463C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3463C9[];
extern void _ZN7S3463C92v4Ev();
static  VTBL_ENTRY vtc_S3463C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C9[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
};
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
Class_Descriptor cd_S3463C9 = {  "S3463C9", // class name
  0,0,//no base classes
  &(vtc_S3463C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,164), // object size
  NSPAIRA(_ZTI7S3463C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3463C9),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3463C3  : virtual S3463C4 , virtual S3463C5 , virtual S3463C8 , S3463C9 {
  long double s3463c3f0;
  int s3463c3f1;
  long double s3463c3f2[3];
  long double s3463c3f3;
  int s3463c3f4;
  __tsi64 s3463c3f5[9];
  int s3463c3f6;
  int s3463c3f7;
  int s3463c3f8;
  int s3463c3f9;
  virtual void  v5(); // _ZN7S3463C32v5Ev
  ~S3463C3(); // tgen
  S3463C3(); // tgen
};
//SIG(-1 S3463C3) C1{ VBC2{ BC3{ v2 Fp[3] Fi[2] FL} v3 v4 Fc[10] Fl[6] FC3 Fp FC4{} Fi[4] FU5{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC3 VBC6{ BC3 Fi[10] Fs:11 FC3} BC7{ v5 Fp Fs FC4 Fp FL Fi FU8{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v1 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi}


void  S3463C3 ::v5(){vfunc_called(this, "_ZN7S3463C32v5Ev");}
S3463C3 ::~S3463C3(){ note_dtor("S3463C3", this);} // tgen
S3463C3 ::S3463C3(){ note_ctor("S3463C3", this);} // tgen

static void Test_S3463C3()
{
  extern Class_Descriptor cd_S3463C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,155)];
    init_test(&cd_S3463C3, buf);
    S3463C3 *dp, &lv = *(dp=new (buf) S3463C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,616), "sizeof(S3463C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3463C3)");
    check_base_class_offset(lv, (S3463C5*)(S3463C4*), ABISELECT(416,320), "S3463C3");
    check_base_class_offset(lv, (S3463C4*), ABISELECT(416,320), "S3463C3");
    /*is_ambiguous_... S3463C3::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*), ABISELECT(656,476), "S3463C3");
    check_base_class_offset(lv, (S3463C5*)(S3463C8*), ABISELECT(704,508), "S3463C3");
    check_base_class_offset(lv, (S3463C8*), ABISELECT(704,508), "S3463C3");
    check_base_class_offset(lv, (S3463C9*), 0, "S3463C3");
    check_field_offset(lv, s3463c3f0, ABISELECT(224,164), "S3463C3.s3463c3f0");
    check_field_offset(lv, s3463c3f1, ABISELECT(240,176), "S3463C3.s3463c3f1");
    check_field_offset(lv, s3463c3f2, ABISELECT(256,180), "S3463C3.s3463c3f2");
    check_field_offset(lv, s3463c3f3, ABISELECT(304,216), "S3463C3.s3463c3f3");
    check_field_offset(lv, s3463c3f4, ABISELECT(320,228), "S3463C3.s3463c3f4");
    check_field_offset(lv, s3463c3f5, ABISELECT(328,232), "S3463C3.s3463c3f5");
    check_field_offset(lv, s3463c3f6, ABISELECT(400,304), "S3463C3.s3463c3f6");
    check_field_offset(lv, s3463c3f7, ABISELECT(404,308), "S3463C3.s3463c3f7");
    check_field_offset(lv, s3463c3f8, ABISELECT(408,312), "S3463C3.s3463c3f8");
    check_field_offset(lv, s3463c3f9, ABISELECT(412,316), "S3463C3.s3463c3f9");
    test_class_info(&lv, &cd_S3463C3);
    dp->~S3463C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C3(Test_S3463C3, "S3463C3", ABISELECT(848,616));

#else // __cplusplus

extern void _ZN7S3463C3C1Ev();
extern void _ZN7S3463C3D1Ev();
Name_Map name_map_S3463C3[] = {
  NSPAIR(_ZN7S3463C3C1Ev),
  NSPAIR(_ZN7S3463C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C8;
extern VTBL_ENTRY _ZTI7S3463C8[];
extern  VTBL_ENTRY _ZTV7S3463C8[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
static Base_Class bases_S3463C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3463C5,    ABISELECT(416,320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3463C4,    ABISELECT(416,320), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C5,    ABISELECT(656,476), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C5,    ABISELECT(704,508), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3463C8,    ABISELECT(704,508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3463C3[];
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY vtc_S3463C3[] = {
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  0,
  ABISELECT(-704,-508),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern VTBL_ENTRY _ZTV7S3463C3[];
static  VTT_ENTRY vtt_S3463C3[] = {
  {&(_ZTV7S3463C3[5]),  5,23},
  {&(_ZTV7S3463C3[12]),  12,23},
  {&(_ZTV7S3463C3[18]),  18,23},
  {&(_ZTV7S3463C3[22]),  22,23},
};
extern VTBL_ENTRY _ZTI7S3463C3[];
extern  VTBL_ENTRY _ZTV7S3463C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C3[];
Class_Descriptor cd_S3463C3 = {  "S3463C3", // class name
  bases_S3463C3, 6,
  &(vtc_S3463C3[0]), // expected_vtbl_contents
  &(vtt_S3463C3[0]), // expected_vtt_contents
  ABISELECT(848,616), // object size
  NSPAIRA(_ZTI7S3463C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S3463C3),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3463C3),4, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3463C12  : S3463C5 , virtual S3463C8 , virtual S3463C3 , virtual S3463C9 , S3463C4 {
  __tsi64 s3463c12f0[3];
  ::S19942C12_nt s3463c12f1;
  void *s3463c12f2;
  short s3463c12f3;
  char s3463c12f4;
  int s3463c12f5;
  int s3463c12f6;
  virtual  ~S3463C12(); // _ZN8S3463C12D2Ev
  S3463C12(); // tgen
};
//SIG(-1 S3463C12) C1{ BC2{ v1 Fp[3] Fi[2] FL} VBC3{ BC2 Fi[10] Fs:11 FC2} VBC4{ VBC5{ BC2 v2 v3 Fc[10] Fl[6] FC2 Fp FC6{} Fi[4] FU7{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC2 VBC3 BC8{ v4 Fp Fs FC6 Fp FL Fi FU9{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v5 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC8 BC5 vd FL[3] FC10{ m Fc[2]} Fp Fs Fc Fi Fi}


 S3463C12 ::~S3463C12(){ note_dtor("S3463C12", this);}
S3463C12 ::S3463C12(){ note_ctor("S3463C12", this);} // tgen

static void Test_S3463C12()
{
  extern Class_Descriptor cd_S3463C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(90,254)];
    init_test(&cd_S3463C12, buf);
    S3463C12 *dp, &lv = *(dp=new (buf) S3463C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1424,1012), "sizeof(S3463C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3463C12)");
    /*is_ambiguous_... S3463C12::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*), 0, "S3463C12");
    check_base_class_offset(lv, (S3463C5*)(S3463C8*), ABISELECT(344,232), "S3463C12");
    check_base_class_offset(lv, (S3463C8*), ABISELECT(344,232), "S3463C12");
    check_base_class_offset(lv, (S3463C8*)(S3463C3*), ABISELECT(344,232), "S3463C12");
    /*is_ambiguous_... S3463C12::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C4*), ABISELECT(912,660), "S3463C12");
    check_base_class_offset(lv, (S3463C4*)(S3463C3*), ABISELECT(912,660), "S3463C12");
    /*is_ambiguous_... S3463C3::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C3*), ABISELECT(1152,816), "S3463C12");
    check_base_class_offset(lv, (S3463C9*)(S3463C3*), ABISELECT(496,340), "S3463C12");
    check_base_class_offset(lv, (S3463C3*), ABISELECT(496,340), "S3463C12");
    /*is_ambiguous_... S3463C12::S3463C9 */ AMB_check_base_class_offset(lv, (S3463C9*), ABISELECT(1200,848), "S3463C12");
    /*is_ambiguous_... S3463C12::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C4*), ABISELECT(48,32), "S3463C12");
    /*is_ambiguous_... S3463C12::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C4*), ABISELECT(48,32), "S3463C12");
    check_field_offset(lv, s3463c12f0, ABISELECT(288,188), "S3463C12.s3463c12f0");
    check_field_offset(lv, s3463c12f1, ABISELECT(312,212), "S3463C12.s3463c12f1");
    check_field_offset(lv, s3463c12f2, ABISELECT(320,216), "S3463C12.s3463c12f2");
    check_field_offset(lv, s3463c12f3, ABISELECT(328,220), "S3463C12.s3463c12f3");
    check_field_offset(lv, s3463c12f4, ABISELECT(330,222), "S3463C12.s3463c12f4");
    check_field_offset(lv, s3463c12f5, ABISELECT(332,224), "S3463C12.s3463c12f5");
    check_field_offset(lv, s3463c12f6, ABISELECT(336,228), "S3463C12.s3463c12f6");
    test_class_info(&lv, &cd_S3463C12);
    dp->~S3463C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C12(Test_S3463C12, "S3463C12", ABISELECT(1424,1012));

#else // __cplusplus

extern void _ZN8S3463C12C1Ev();
extern void _ZN8S3463C12D2Ev();
Name_Map name_map_S3463C12[] = {
  NSPAIR(_ZN8S3463C12C1Ev),
  NSPAIR(_ZN8S3463C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C8;
extern VTBL_ENTRY _ZTI7S3463C8[];
extern  VTBL_ENTRY _ZTV7S3463C8[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C3;
extern VTBL_ENTRY _ZTI7S3463C3[];
extern  VTBL_ENTRY _ZTV7S3463C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C3[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
static Base_Class bases_S3463C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3463C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3463C5,    ABISELECT(344,232), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3463C8,    ABISELECT(344,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C5,    ABISELECT(912,660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3463C4,    ABISELECT(912,660), //bcp->offset
    28, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3463C5,    ABISELECT(1152,816), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3463C9,    ABISELECT(496,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3463C3,    ABISELECT(496,340), //bcp->offset
    19, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C9,    ABISELECT(1200,848), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C5,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3463C4,    ABISELECT(48,32), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3463C12[];
extern void _ZN7S3463C52v1Ev();
extern void _ZN8S3463C12D1Ev();
extern void _ZN8S3463C12D0Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C92v4Ev();
static  VTBL_ENTRY vtc_S3463C12[] = {
  ABISELECT(1200,848),
  ABISELECT(1152,816),
  ABISELECT(912,660),
  ABISELECT(496,340),
  ABISELECT(344,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN8S3463C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3463C12D0Ev,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  0,
  ABISELECT(-344,-232),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  0,
  0,
  ABISELECT(-152,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-496,-340),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-912,-660),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  0,
  ABISELECT(-1152,-816),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  0,
  ABISELECT(-1200,-848),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
};
extern VTBL_ENTRY _ZTV8S3463C12[];
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C3__8S3463C12[] = {
  ABISELECT(-152,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__7S3463C3__8S3463C12[] = {
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A1__7S3463C3__8S3463C12[] = {
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__7S3463C3__8S3463C12[] = {
  0,
  ABISELECT(152,108),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
static  VTT_ENTRY vtt_S3463C12[] = {
  {&(_ZTV8S3463C12[7]),  7,44},
  {&(_ZTV8S3463C12[18]),  18,44},
  {&(_ZTV8S3463C12[26]),  26,44},
  {&(_ZTV8S3463C12[33]),  33,44},
  {&(_ZTV8S3463C12[39]),  39,44},
  {&(_ZTV8S3463C12[43]),  43,44},
  {&(_tg__ZTV7S3463C3__8S3463C12[5]),  5,7},
  {&(_tg__ZTV7S3463C4__7S3463C3__8S3463C12[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A1__7S3463C3__8S3463C12[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A2__7S3463C3__8S3463C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3463C12[];
extern  VTBL_ENTRY _ZTV8S3463C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3463C12[];
Class_Descriptor cd_S3463C12 = {  "S3463C12", // class name
  bases_S3463C12, 11,
  &(vtc_S3463C12[0]), // expected_vtbl_contents
  &(vtt_S3463C12[0]), // expected_vtt_contents
  ABISELECT(1424,1012), // object size
  NSPAIRA(_ZTI8S3463C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S3463C12),44, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3463C12),10, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3463C2  : S3463C3 , virtual S19942C12_nt {
  ::S3463C12 s3463c2f0;
  void *s3463c2f1;
  virtual  ~S3463C2(); // _ZN7S3463C2D2Ev
  virtual void  v6(); // _ZN7S3463C22v6Ev
  virtual void  v7(); // _ZN7S3463C22v7Ev
  virtual void  v8(); // _ZN7S3463C22v8Ev
  S3463C2(); // tgen
};
//SIG(-1 S3463C2) C1{ BC2{ VBC3{ BC4{ v4 Fp[3] Fi[2] FL} v5 v6 Fc[10] Fl[6] FC4 Fp FC5{} Fi[4] FU6{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC4 VBC7{ BC4 Fi[10] Fs:11 FC4} BC8{ v7 Fp Fs FC5 Fp FL Fi FU9{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v8 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC10{ m Fc[2]} vd v1 v2 v3 FC11{ BC4 VBC7 VBC2 VBC8 BC3 vd FL[3] FC10 Fp Fs Fc Fi Fi} Fp}


 S3463C2 ::~S3463C2(){ note_dtor("S3463C2", this);}
void  S3463C2 ::v6(){vfunc_called(this, "_ZN7S3463C22v6Ev");}
void  S3463C2 ::v7(){vfunc_called(this, "_ZN7S3463C22v7Ev");}
void  S3463C2 ::v8(){vfunc_called(this, "_ZN7S3463C22v8Ev");}
S3463C2 ::S3463C2(){ note_ctor("S3463C2", this);} // tgen

static void Test_S3463C2()
{
  extern Class_Descriptor cd_S3463C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(145,410)];
    init_test(&cd_S3463C2, buf);
    S3463C2 *dp, &lv = *(dp=new (buf) S3463C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2304,1636), "sizeof(S3463C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3463C2)");
    check_base_class_offset(lv, (S3463C5*)(S3463C4*), ABISELECT(1856,1336), "S3463C2");
    check_base_class_offset(lv, (S3463C4*)(S3463C3*), ABISELECT(1856,1336), "S3463C2");
    /*is_ambiguous_... S3463C3::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C3*), ABISELECT(2096,1492), "S3463C2");
    check_base_class_offset(lv, (S3463C5*)(S3463C8*), ABISELECT(2144,1524), "S3463C2");
    check_base_class_offset(lv, (S3463C8*)(S3463C3*), ABISELECT(2144,1524), "S3463C2");
    check_base_class_offset(lv, (S3463C9*)(S3463C3*), 0, "S3463C2");
    check_base_class_offset(lv, (S3463C3*), 0, "S3463C2");
    check_base_class_offset(lv, (S19942C12_nt*), ABISELECT(2288,1632), "S3463C2");
    check_field_offset(lv, s3463c2f0, ABISELECT(416,320), "S3463C2.s3463c2f0");
    check_field_offset(lv, s3463c2f1, ABISELECT(1840,1332), "S3463C2.s3463c2f1");
    test_class_info(&lv, &cd_S3463C2);
    dp->~S3463C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C2(Test_S3463C2, "S3463C2", ABISELECT(2304,1636));

#else // __cplusplus

extern void _ZN7S3463C2C1Ev();
extern void _ZN7S3463C2D2Ev();
Name_Map name_map_S3463C2[] = {
  NSPAIR(_ZN7S3463C2C1Ev),
  NSPAIR(_ZN7S3463C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C8;
extern VTBL_ENTRY _ZTI7S3463C8[];
extern  VTBL_ENTRY _ZTV7S3463C8[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C3;
extern VTBL_ENTRY _ZTI7S3463C3[];
extern  VTBL_ENTRY _ZTV7S3463C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C3[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
static Base_Class bases_S3463C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3463C5,    ABISELECT(1856,1336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3463C4,    ABISELECT(1856,1336), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3463C5,    ABISELECT(2096,1492), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3463C5,    ABISELECT(2144,1524), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3463C8,    ABISELECT(2144,1524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3463C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3463C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C12_nt,    ABISELECT(2288,1632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3463C2[];
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN7S3463C2D1Ev();
extern void _ZN7S3463C2D0Ev();
extern void _ZN7S3463C22v6Ev();
extern void _ZN7S3463C22v7Ev();
extern void _ZN7S3463C22v8Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY vtc_S3463C2[] = {
  ABISELECT(2288,1632),
  ABISELECT(2144,1524),
  ABISELECT(2096,1492),
  ABISELECT(1856,1336),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C2[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3463C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3463C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3463C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3463C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3463C22v8Ev,
  0,
  0,
  0,
  ABISELECT(-1856,-1336),
  (VTBL_ENTRY)&(_ZTI7S3463C2[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  0,
  ABISELECT(-2096,-1492),
  (VTBL_ENTRY)&(_ZTI7S3463C2[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  0,
  ABISELECT(-2144,-1524),
  (VTBL_ENTRY)&(_ZTI7S3463C2[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern VTBL_ENTRY _ZTV7S3463C2[];
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C3__7S3463C2[] = {
  ABISELECT(2144,1524),
  ABISELECT(2096,1492),
  ABISELECT(1856,1336),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__7S3463C3__7S3463C2[] = {
  0,
  0,
  0,
  ABISELECT(-1856,-1336),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A1__7S3463C3__7S3463C2[] = {
  0,
  ABISELECT(-2096,-1492),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__7S3463C3__7S3463C2[] = {
  0,
  ABISELECT(-2144,-1524),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
static  VTT_ENTRY vtt_S3463C2[] = {
  {&(_ZTV7S3463C2[6]),  6,29},
  {&(_tg__ZTV7S3463C3__7S3463C2[5]),  5,7},
  {&(_tg__ZTV7S3463C4__7S3463C3__7S3463C2[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A1__7S3463C3__7S3463C2[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A2__7S3463C3__7S3463C2[3]),  3,4},
  {&(_ZTV7S3463C2[18]),  18,29},
  {&(_ZTV7S3463C2[24]),  24,29},
  {&(_ZTV7S3463C2[28]),  28,29},
};
extern VTBL_ENTRY _ZTI7S3463C2[];
extern  VTBL_ENTRY _ZTV7S3463C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C2[];
Class_Descriptor cd_S3463C2 = {  "S3463C2", // class name
  bases_S3463C2, 8,
  &(vtc_S3463C2[0]), // expected_vtbl_contents
  &(vtt_S3463C2[0]), // expected_vtt_contents
  ABISELECT(2304,1636), // object size
  NSPAIRA(_ZTI7S3463C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3463C2),29, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3463C2),8, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3463C14  : virtual S3463C5 , S3463C3 , virtual S19942C12_nt , S3463C9 {
  int s3463c14f0;
  long double s3463c14f1;
  ::S19942C12_nt s3463c14f2;
  void *s3463c14f3;
  short s3463c14f4;
  int s3463c14f5;
  int s3463c14f6;
  int s3463c14f7;
  virtual void  v9(); // _ZN8S3463C142v9Ev
  ~S3463C14(); // tgen
  S3463C14(); // tgen
};
//SIG(-1 S3463C14) C1{ VBC2{ v2 Fp[3] Fi[2] FL} BC3{ VBC4{ BC2 v3 v4 Fc[10] Fl[6] FC2 Fp FC5{} Fi[4] FU6{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC2 VBC7{ BC2 Fi[10] Fs:11 FC2} BC8{ v5 Fp Fs FC5 Fp FL Fi FU9{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v6 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC10{ m Fc[2]} BC8 v1 Fi FD FC10 Fp Fs Fi Fi Fi}


void  S3463C14 ::v9(){vfunc_called(this, "_ZN8S3463C142v9Ev");}
S3463C14 ::~S3463C14(){ note_dtor("S3463C14", this);} // tgen
S3463C14 ::S3463C14(){ note_ctor("S3463C14", this);} // tgen

static void Test_S3463C14()
{
  extern Class_Descriptor cd_S3463C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(73,207)];
    init_test(&cd_S3463C14, buf);
    S3463C14 *dp, &lv = *(dp=new (buf) S3463C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1152,824), "sizeof(S3463C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3463C14)");
    /*is_ambiguous_... S3463C14::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*), ABISELECT(704,524), "S3463C14");
    /*is_ambiguous_... S3463C3::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C3*), ABISELECT(704,524), "S3463C14");
    check_base_class_offset(lv, (S3463C5*)(S3463C4*), ABISELECT(752,556), "S3463C14");
    check_base_class_offset(lv, (S3463C4*)(S3463C3*), ABISELECT(752,556), "S3463C14");
    check_base_class_offset(lv, (S3463C5*)(S3463C8*), ABISELECT(992,712), "S3463C14");
    check_base_class_offset(lv, (S3463C8*)(S3463C3*), ABISELECT(992,712), "S3463C14");
    check_base_class_offset(lv, (S3463C9*)(S3463C3*), 0, "S3463C14");
    check_base_class_offset(lv, (S3463C3*), 0, "S3463C14");
    check_base_class_offset(lv, (S19942C12_nt*), ABISELECT(1136,820), "S3463C14");
    /*is_ambiguous_... S3463C14::S3463C9 */ AMB_check_base_class_offset(lv, (S3463C9*), ABISELECT(416,320), "S3463C14");
    check_field_offset(lv, s3463c14f0, ABISELECT(640,484), "S3463C14.s3463c14f0");
    check_field_offset(lv, s3463c14f1, ABISELECT(656,488), "S3463C14.s3463c14f1");
    check_field_offset(lv, s3463c14f2, ABISELECT(672,500), "S3463C14.s3463c14f2");
    check_field_offset(lv, s3463c14f3, ABISELECT(680,504), "S3463C14.s3463c14f3");
    check_field_offset(lv, s3463c14f4, ABISELECT(688,508), "S3463C14.s3463c14f4");
    check_field_offset(lv, s3463c14f5, ABISELECT(692,512), "S3463C14.s3463c14f5");
    check_field_offset(lv, s3463c14f6, ABISELECT(696,516), "S3463C14.s3463c14f6");
    check_field_offset(lv, s3463c14f7, ABISELECT(700,520), "S3463C14.s3463c14f7");
    test_class_info(&lv, &cd_S3463C14);
    dp->~S3463C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C14(Test_S3463C14, "S3463C14", ABISELECT(1152,824));

#else // __cplusplus

extern void _ZN8S3463C14C1Ev();
extern void _ZN8S3463C14D1Ev();
Name_Map name_map_S3463C14[] = {
  NSPAIR(_ZN8S3463C14C1Ev),
  NSPAIR(_ZN8S3463C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C8;
extern VTBL_ENTRY _ZTI7S3463C8[];
extern  VTBL_ENTRY _ZTV7S3463C8[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C3;
extern VTBL_ENTRY _ZTI7S3463C3[];
extern  VTBL_ENTRY _ZTV7S3463C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C3[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
static Base_Class bases_S3463C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3463C5,    ABISELECT(704,524), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C5,    ABISELECT(752,556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3463C4,    ABISELECT(752,556), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3463C5,    ABISELECT(992,712), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3463C8,    ABISELECT(992,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3463C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3463C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C12_nt,    ABISELECT(1136,820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C9,    ABISELECT(416,320), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3463C14[];
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN8S3463C142v9Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY vtc_S3463C14[] = {
  ABISELECT(1136,820),
  ABISELECT(992,712),
  ABISELECT(704,524),
  ABISELECT(752,556),
  0,
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  (VTBL_ENTRY)&_ZN8S3463C142v9Ev,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  0,
  ABISELECT(-704,-524),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  0,
  0,
  0,
  ABISELECT(-752,-556),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  0,
  ABISELECT(-992,-712),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S3463C14[];
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C3__8S3463C14[] = {
  ABISELECT(992,712),
  ABISELECT(704,524),
  ABISELECT(752,556),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__7S3463C3__8S3463C14[] = {
  0,
  0,
  0,
  ABISELECT(-752,-556),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A1__7S3463C3__8S3463C14[] = {
  0,
  ABISELECT(-704,-524),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__7S3463C3__8S3463C14[] = {
  0,
  ABISELECT(-992,-712),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
static  VTT_ENTRY vtt_S3463C14[] = {
  {&(_ZTV8S3463C14[6]),  6,28},
  {&(_tg__ZTV7S3463C3__8S3463C14[5]),  5,7},
  {&(_tg__ZTV7S3463C4__7S3463C3__8S3463C14[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A1__7S3463C3__8S3463C14[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A2__7S3463C3__8S3463C14[3]),  3,4},
  {&(_ZTV8S3463C14[15]),  15,28},
  {&(_ZTV8S3463C14[21]),  21,28},
  {&(_ZTV8S3463C14[27]),  27,28},
};
extern VTBL_ENTRY _ZTI8S3463C14[];
extern  VTBL_ENTRY _ZTV8S3463C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3463C14[];
Class_Descriptor cd_S3463C14 = {  "S3463C14", // class name
  bases_S3463C14, 9,
  &(vtc_S3463C14[0]), // expected_vtbl_contents
  &(vtt_S3463C14[0]), // expected_vtt_contents
  ABISELECT(1152,824), // object size
  NSPAIRA(_ZTI8S3463C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S3463C14),28, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3463C14),8, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3463C13  : S3463C4 , virtual S3463C9 , virtual S3463C3 , S3463C12 , S3463C14 {
  void *s3463c13f0;
  int s3463c13f1;
  ::S3463C12 s3463c13f2;
  char s3463c13f3;
  int s3463c13f4;
  ::S19763C18_nt s3463c13f5;
  int s3463c13f6;
  int s3463c13f7;
  ::S3463C4 s3463c13f8;
  ::S19942C11 s3463c13f9;
  virtual void  v10(); // _ZN8S3463C133v10Ev
  ~S3463C13(); // tgen
  S3463C13(); // tgen
};
//SIG(-1 S3463C13) C1{ BC2{ BC3{ v2 Fp[3] Fi[2] FL} v3 v4 Fc[10] Fl[6] FC3 Fp FC4{} Fi[4] FU5{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC6{ v5 Fp Fs FC4 Fp FL Fi FU7{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} VBC8{ VBC2 VBC3 VBC9{ BC3 Fi[10] Fs:11 FC3} BC6 v6 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} BC10{ BC3 VBC9 VBC8 VBC6 BC2 vd FL[3] FC11{ m Fc[2]} Fp Fs Fc Fi Fi} BC12{ VBC3 BC8 VBC11 BC6 v7 Fi FD FC11 Fp Fs Fi Fi Fi} v1 Fp Fi FC10 Fc Fi FC4 Fi Fi FC2 FU7}


void  S3463C13 ::v10(){vfunc_called(this, "_ZN8S3463C133v10Ev");}
S3463C13 ::~S3463C13(){ note_dtor("S3463C13", this);} // tgen
S3463C13 ::S3463C13(){ note_ctor("S3463C13", this);} // tgen

static void Test_S3463C13()
{
  extern Class_Descriptor cd_S3463C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(267,754)];
    init_test(&cd_S3463C13, buf);
    S3463C13 *dp, &lv = *(dp=new (buf) S3463C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4256,3012), "sizeof(S3463C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3463C13)");
    /*is_ambiguous_... S3463C13::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C4*), 0, "S3463C13");
    /*is_ambiguous_... S3463C13::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C4*), 0, "S3463C13");
    /*is_ambiguous_... S3463C13::S3463C9 */ AMB_check_base_class_offset(lv, (S3463C9*), ABISELECT(3168,2228), "S3463C13");
    /*is_ambiguous_... S3463C12::S3463C9 */ AMB_check_base_class_offset(lv, (S3463C9*)(S3463C12*), ABISELECT(3168,2228), "S3463C13");
    /*is_ambiguous_... S3463C13::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C4*), ABISELECT(3808,2712), "S3463C13");
    /*is_ambiguous_... S3463C13::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C4*)(S3463C3*), ABISELECT(3808,2712), "S3463C13");
    check_base_class_offset(lv, (S3463C4*)(S3463C3*)(S3463C14*), ABISELECT(3808,2712), "S3463C13");
    /*is_ambiguous_... S3463C13::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C3*), ABISELECT(4048,2868), "S3463C13");
    /*is_ambiguous_... S3463C14::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C14*), ABISELECT(4048,2868), "S3463C13");
    /*is_ambiguous_... S3463C3::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C3*)(S3463C14*), ABISELECT(4048,2868), "S3463C13");
    check_base_class_offset(lv, (S3463C5*)(S3463C8*), ABISELECT(4096,2900), "S3463C13");
    /*is_ambiguous_... S3463C13::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C8*)(S3463C3*), ABISELECT(4096,2900), "S3463C13");
    check_base_class_offset(lv, (S3463C8*)(S3463C12*), ABISELECT(4096,2900), "S3463C13");
    check_base_class_offset(lv, (S3463C8*)(S3463C3*)(S3463C14*), ABISELECT(4096,2900), "S3463C13");
    /*is_ambiguous_... S3463C13::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C9*)(S3463C3*), ABISELECT(3392,2392), "S3463C13");
    /*is_ambiguous_... S3463C13::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C3*), ABISELECT(3392,2392), "S3463C13");
    check_base_class_offset(lv, (S3463C3*)(S3463C12*), ABISELECT(3392,2392), "S3463C13");
    /*is_ambiguous_... S3463C12::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C12*), ABISELECT(240,156), "S3463C13");
    /*is_ambiguous_... S3463C12::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C4*)(S3463C12*), ABISELECT(288,188), "S3463C13");
    /*is_ambiguous_... S3463C12::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C4*)(S3463C12*), ABISELECT(288,188), "S3463C13");
    check_base_class_offset(lv, (S3463C12*), ABISELECT(240,156), "S3463C13");
    check_base_class_offset(lv, (S3463C9*)(S3463C3*)(S3463C14*), ABISELECT(592,388), "S3463C13");
    check_base_class_offset(lv, (S3463C3*)(S3463C14*), ABISELECT(592,388), "S3463C13");
    check_base_class_offset(lv, (S19942C12_nt*)(S3463C14*), ABISELECT(4240,3008), "S3463C13");
    /*is_ambiguous_... S3463C14::S3463C9 */ AMB_check_base_class_offset(lv, (S3463C9*)(S3463C14*), ABISELECT(1008,708), "S3463C13");
    check_base_class_offset(lv, (S3463C14*), ABISELECT(592,388), "S3463C13");
    check_field_offset(lv, s3463c13f0, ABISELECT(1296,912), "S3463C13.s3463c13f0");
    check_field_offset(lv, s3463c13f1, ABISELECT(1304,916), "S3463C13.s3463c13f1");
    check_field_offset(lv, s3463c13f2, ABISELECT(1312,920), "S3463C13.s3463c13f2");
    check_field_offset(lv, s3463c13f3, ABISELECT(2736,1932), "S3463C13.s3463c13f3");
    check_field_offset(lv, s3463c13f4, ABISELECT(2740,1936), "S3463C13.s3463c13f4");
    check_field_offset(lv, s3463c13f5, ABISELECT(2744,1940), "S3463C13.s3463c13f5");
    check_field_offset(lv, s3463c13f6, ABISELECT(2748,1944), "S3463C13.s3463c13f6");
    check_field_offset(lv, s3463c13f7, ABISELECT(2752,1948), "S3463C13.s3463c13f7");
    check_field_offset(lv, s3463c13f8, ABISELECT(2768,1952), "S3463C13.s3463c13f8");
    check_field_offset(lv, s3463c13f9, ABISELECT(3008,2108), "S3463C13.s3463c13f9");
    test_class_info(&lv, &cd_S3463C13);
    dp->~S3463C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C13(Test_S3463C13, "S3463C13", ABISELECT(4256,3012));

#else // __cplusplus

extern void _ZN8S3463C13C1Ev();
extern void _ZN8S3463C13D1Ev();
Name_Map name_map_S3463C13[] = {
  NSPAIR(_ZN8S3463C13C1Ev),
  NSPAIR(_ZN8S3463C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C8;
extern VTBL_ENTRY _ZTI7S3463C8[];
extern  VTBL_ENTRY _ZTV7S3463C8[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C3;
extern VTBL_ENTRY _ZTI7S3463C3[];
extern  VTBL_ENTRY _ZTV7S3463C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C3[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C12;
extern VTBL_ENTRY _ZTI8S3463C12[];
extern  VTBL_ENTRY _ZTV8S3463C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3463C12[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C3;
extern VTBL_ENTRY _ZTI7S3463C3[];
extern  VTBL_ENTRY _ZTV7S3463C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C3[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C14;
extern VTBL_ENTRY _ZTI8S3463C14[];
extern  VTBL_ENTRY _ZTV8S3463C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3463C14[];
static Base_Class bases_S3463C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3463C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3463C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3463C9,    ABISELECT(3168,2228), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C5,    ABISELECT(3808,2712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3463C4,    ABISELECT(3808,2712), //bcp->offset
    54, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3463C5,    ABISELECT(4048,2868), //bcp->offset
    62, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3463C5,    ABISELECT(4096,2900), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3463C8,    ABISELECT(4096,2900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3463C9,    ABISELECT(3392,2392), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3463C3,    ABISELECT(3392,2392), //bcp->offset
    45, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C5,    ABISELECT(240,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3463C5,    ABISELECT(288,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3463C4,    ABISELECT(288,188), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3463C12,    ABISELECT(240,156), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3463C9,    ABISELECT(592,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3463C3,    ABISELECT(592,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19942C12_nt,    ABISELECT(4240,3008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S3463C9,    ABISELECT(1008,708), //bcp->offset
    38, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3463C14,    ABISELECT(592,388), //bcp->offset
    29, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3463C13[];
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN8S3463C133v10Ev();
extern void _ZN8S3463C13D1Ev();
extern void _ZN8S3463C13D0Ev();
extern void _ZN7S3463C52v1Ev();
extern void ABISELECT(_ZThn240_N8S3463C13D1Ev,_ZThn156_N8S3463C13D1Ev)();
extern void ABISELECT(_ZThn240_N8S3463C13D0Ev,_ZThn156_N8S3463C13D0Ev)();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN8S3463C142v9Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY vtc_S3463C13[] = {
  ABISELECT(4240,3008),
  ABISELECT(4096,2900),
  ABISELECT(4048,2868),
  ABISELECT(3808,2712),
  ABISELECT(3392,2392),
  ABISELECT(3168,2228),
  0,
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  (VTBL_ENTRY)&_ZN8S3463C133v10Ev,
  (VTBL_ENTRY)&_ZN8S3463C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3463C13D0Ev,
  ABISELECT(2928,2072),
  ABISELECT(3808,2712),
  ABISELECT(3568,2556),
  ABISELECT(3152,2236),
  ABISELECT(3856,2744),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N8S3463C13D1Ev,_ZThn156_N8S3463C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N8S3463C13D0Ev,_ZThn156_N8S3463C13D0Ev),
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  ABISELECT(3648,2620),
  ABISELECT(3504,2512),
  ABISELECT(3456,2480),
  ABISELECT(3216,2324),
  ABISELECT(-592,-388),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  (VTBL_ENTRY)&_ZN8S3463C142v9Ev,
  ABISELECT(-1008,-708),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  0,
  ABISELECT(-3168,-2228),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  0,
  0,
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-3392,-2392),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-3808,-2712),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  0,
  ABISELECT(-4048,-2868),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  0,
  ABISELECT(-4096,-2900),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S3463C13[];
extern void _ZN7S3463C52v1Ev();
extern void _ZN8S3463C12D1Ev();
extern void _ZN8S3463C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3463C12__8S3463C13[] = {
  ABISELECT(2928,2072),
  ABISELECT(3808,2712),
  ABISELECT(3568,2556),
  ABISELECT(3152,2236),
  ABISELECT(3856,2744),
  0,
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN8S3463C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3463C12D0Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A1__8S3463C12__8S3463C13[] = {
  0,
  ABISELECT(-3856,-2744),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C3__8S3463C12__8S3463C13[] = {
  0,
  0,
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-3152,-2236),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__8S3463C12__8S3463C13[] = {
  0,
  0,
  0,
  ABISELECT(-3568,-2556),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A3__8S3463C12__8S3463C13[] = {
  0,
  ABISELECT(-3808,-2712),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C92v4Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C9__A1__8S3463C12__8S3463C13[] = {
  0,
  ABISELECT(-2928,-2072),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN8S3463C142v9Ev();
static  VTBL_ENTRY _tg__ZTV8S3463C14__8S3463C13[] = {
  ABISELECT(3648,2620),
  ABISELECT(3504,2512),
  ABISELECT(3456,2480),
  ABISELECT(3216,2324),
  0,
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  (VTBL_ENTRY)&_ZN8S3463C142v9Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C38S3463C14__A1__8S3463C13[] = {
  ABISELECT(3504,2512),
  ABISELECT(3456,2480),
  ABISELECT(3216,2324),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__7S3463C38S3463C14__A1__8S3463C13[] = {
  0,
  0,
  0,
  ABISELECT(-3216,-2324),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A1__7S3463C38S3463C14__A1__8S3463C13[] = {
  0,
  ABISELECT(-3456,-2480),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__7S3463C38S3463C14__A1__8S3463C13[] = {
  0,
  ABISELECT(-3504,-2512),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__8S3463C14__8S3463C13[] = {
  0,
  ABISELECT(-3456,-2480),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__8S3463C14__8S3463C13[] = {
  0,
  0,
  0,
  ABISELECT(-3216,-2324),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__8S3463C14__8S3463C13[] = {
  0,
  ABISELECT(-3504,-2512),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C3__8S3463C13[] = {
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__7S3463C3__8S3463C13[] = {
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A1__7S3463C3__8S3463C13[] = {
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__7S3463C3__8S3463C13[] = {
  0,
  ABISELECT(-704,-508),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
static  VTT_ENTRY vtt_S3463C13[] = {
  {&(_ZTV8S3463C13[8]),  8,70},
  {&(_tg__ZTV8S3463C12__8S3463C13[7]),  7,10},
  {&(_tg__ZTV7S3463C57S3463C8__A1__8S3463C12__8S3463C13[3]),  3,4},
  {&(_tg__ZTV7S3463C3__8S3463C12__8S3463C13[7]),  7,9},
  {&(_tg__ZTV7S3463C4__8S3463C12__8S3463C13[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A3__8S3463C12__8S3463C13[3]),  3,4},
  {&(_tg__ZTV7S3463C9__A1__8S3463C12__8S3463C13[3]),  3,4},
  {&(_tg__ZTV8S3463C14__8S3463C13[6]),  6,9},
  {&(_tg__ZTV7S3463C38S3463C14__A1__8S3463C13[5]),  5,7},
  {&(_tg__ZTV7S3463C4__7S3463C38S3463C14__A1__8S3463C13[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A1__7S3463C38S3463C14__A1__8S3463C13[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A2__7S3463C38S3463C14__A1__8S3463C13[3]),  3,4},
  {&(_tg__ZTV7S3463C5__8S3463C14__8S3463C13[3]),  3,4},
  {&(_tg__ZTV7S3463C4__8S3463C14__8S3463C13[5]),  5,8},
  {&(_tg__ZTV7S3463C57S3463C8__A2__8S3463C14__8S3463C13[3]),  3,4},
  {&(_ZTV8S3463C13[44]),  44,70},
  {&(_ZTV8S3463C13[52]),  52,70},
  {&(_ZTV8S3463C13[59]),  59,70},
  {&(_ZTV8S3463C13[65]),  65,70},
  {&(_ZTV8S3463C13[69]),  69,70},
  {&(_ZTV8S3463C13[21]),  21,70},
  {&(_ZTV8S3463C13[35]),  35,70},
  {&(_tg__ZTV7S3463C3__8S3463C13[5]),  5,7},
  {&(_tg__ZTV7S3463C4__7S3463C3__8S3463C13[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A1__7S3463C3__8S3463C13[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A2__7S3463C3__8S3463C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3463C13[];
extern  VTBL_ENTRY _ZTV8S3463C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3463C13[];
Class_Descriptor cd_S3463C13 = {  "S3463C13", // class name
  bases_S3463C13, 19,
  &(vtc_S3463C13[0]), // expected_vtbl_contents
  &(vtt_S3463C13[0]), // expected_vtt_contents
  ABISELECT(4256,3012), // object size
  NSPAIRA(_ZTI8S3463C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S3463C13),70, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3463C13),26, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3463C15  {
  int s3463c15f0;
  int s3463c15f1;
  ::S3463C2 s3463c15f2[9];
  int s3463c15f3;
  long s3463c15f4;
  int s3463c15f5;
  int s3463c15f6;
  ::S3463C5 s3463c15f7;
  int s3463c15f8;
  int s3463c15f9;
  int s3463c15f10;
  long double s3463c15f11;
  int s3463c15f12;
  virtual void  v11(); // _ZN8S3463C153v11Ev
  virtual void  v12(); // _ZN8S3463C153v12Ev
  ~S3463C15(); // tgen
  S3463C15(); // tgen
};
//SIG(-1 S3463C15) C1{ v1 v2 Fi[2] FC2{ BC3{ VBC4{ BC5{ v6 Fp[3] Fi[2] FL} v7 v8 Fc[10] Fl[6] FC5 Fp FC6{} Fi[4] FU7{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC5 VBC8{ BC5 Fi[10] Fs:11 FC5} BC9{ v9 Fp Fs FC6 Fp FL Fi FU10{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v10 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC11{ m Fc[2]} vd v3 v4 v5 FC12{ BC5 VBC8 VBC3 VBC9 BC4 vd FL[3] FC11 Fp Fs Fc Fi Fi} Fp}[9] Fi Fl Fi Fi FC5 Fi Fi Fi FD Fi}


void  S3463C15 ::v11(){vfunc_called(this, "_ZN8S3463C153v11Ev");}
void  S3463C15 ::v12(){vfunc_called(this, "_ZN8S3463C153v12Ev");}
S3463C15 ::~S3463C15(){ note_dtor("S3463C15", this);} // tgen
S3463C15 ::S3463C15(){ note_ctor("S3463C15", this);} // tgen

static void Test_S3463C15()
{
  extern Class_Descriptor cd_S3463C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1306,3704)];
    init_test(&cd_S3463C15, buf);
    S3463C15 *dp, &lv = *(dp=new (buf) S3463C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(20880,14812), "sizeof(S3463C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3463C15)");
    check_field_offset(lv, s3463c15f0, ABISELECT(8,4), "S3463C15.s3463c15f0");
    check_field_offset(lv, s3463c15f1, ABISELECT(12,8), "S3463C15.s3463c15f1");
    check_field_offset(lv, s3463c15f2, ABISELECT(16,12), "S3463C15.s3463c15f2");
    check_field_offset(lv, s3463c15f3, ABISELECT(20752,14736), "S3463C15.s3463c15f3");
    check_field_offset(lv, s3463c15f4, ABISELECT(20760,14740), "S3463C15.s3463c15f4");
    check_field_offset(lv, s3463c15f5, ABISELECT(20768,14744), "S3463C15.s3463c15f5");
    check_field_offset(lv, s3463c15f6, ABISELECT(20772,14748), "S3463C15.s3463c15f6");
    check_field_offset(lv, s3463c15f7, ABISELECT(20776,14752), "S3463C15.s3463c15f7");
    check_field_offset(lv, s3463c15f8, ABISELECT(20824,14784), "S3463C15.s3463c15f8");
    check_field_offset(lv, s3463c15f9, ABISELECT(20828,14788), "S3463C15.s3463c15f9");
    check_field_offset(lv, s3463c15f10, ABISELECT(20832,14792), "S3463C15.s3463c15f10");
    check_field_offset(lv, s3463c15f11, ABISELECT(20848,14796), "S3463C15.s3463c15f11");
    check_field_offset(lv, s3463c15f12, ABISELECT(20864,14808), "S3463C15.s3463c15f12");
    test_class_info(&lv, &cd_S3463C15);
    dp->~S3463C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C15(Test_S3463C15, "S3463C15", ABISELECT(20880,14812));

#else // __cplusplus

extern void _ZN8S3463C15C1Ev();
extern void _ZN8S3463C15D1Ev();
Name_Map name_map_S3463C15[] = {
  NSPAIR(_ZN8S3463C15C1Ev),
  NSPAIR(_ZN8S3463C15D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S3463C15[];
extern void _ZN8S3463C153v11Ev();
extern void _ZN8S3463C153v12Ev();
static  VTBL_ENTRY vtc_S3463C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3463C15[0]),
  (VTBL_ENTRY)&_ZN8S3463C153v11Ev,
  (VTBL_ENTRY)&_ZN8S3463C153v12Ev,
};
extern VTBL_ENTRY _ZTI8S3463C15[];
extern  VTBL_ENTRY _ZTV8S3463C15[];
Class_Descriptor cd_S3463C15 = {  "S3463C15", // class name
  0,0,//no base classes
  &(vtc_S3463C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(20880,14812), // object size
  NSPAIRA(_ZTI8S3463C15),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S3463C15),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3463C1  : S3463C2 , virtual S3463C13 , S3463C15 {
  int s3463c1f0;
  long double s3463c1f1;
  ~S3463C1(); // tgen
  S3463C1(); // tgen
};
//SIG(1 S3463C1) C1{ BC2{ BC3{ VBC4{ BC5{ v1 Fp[3] Fi[2] FL} v2 v3 Fc[10] Fl[6] FC5 Fp FC6{} Fi[4] FU7{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC5 VBC8{ BC5 Fi[10] Fs:11 FC5} BC9{ v4 Fp Fs FC6 Fp FL Fi FU10{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v5 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC11{ m Fc[2]} vd v6 v7 v8 FC12{ BC5 VBC8 VBC3 VBC9 BC4 vd FL[3] FC11 Fp Fs Fc Fi Fi} Fp} VBC13{ BC4 VBC9 VBC3 BC12 BC14{ VBC5 BC3 VBC11 BC9 v9 Fi FD FC11 Fp Fs Fi Fi Fi} v10 Fp Fi FC12 Fc Fi FC6 Fi Fi FC4 FU10} BC15{ v11 v12 Fi Fi FC2[9] Fi Fl Fi Fi FC5 Fi Fi Fi FD Fi} Fi FD}


S3463C1 ::~S3463C1(){ note_dtor("S3463C1", this);} // tgen
S3463C1 ::S3463C1(){ note_ctor("S3463C1", this);} // tgen

static void Test_S3463C1()
{
  extern Class_Descriptor cd_S3463C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1689,4795)];
    init_test(&cd_S3463C1, buf);
    S3463C1 *dp, &lv = *(dp=new (buf) S3463C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(27008,19176), "sizeof(S3463C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3463C1)");
    /*is_ambiguous_... S3463C1::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C4*), ABISELECT(22752,16164), "S3463C1");
    check_base_class_offset(lv, (S3463C4*)(S3463C3*)(S3463C2*), ABISELECT(22752,16164), "S3463C1");
    /*is_ambiguous_... S3463C1::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C4*)(S3463C3*), ABISELECT(22752,16164), "S3463C1");
    check_base_class_offset(lv, (S3463C4*)(S3463C3*)(S3463C14*)(S3463C13*), ABISELECT(22752,16164), "S3463C1");
    /*is_ambiguous_... S3463C3::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C3*)(S3463C2*), ABISELECT(22992,16320), "S3463C1");
    /*is_ambiguous_... S3463C1::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C3*), ABISELECT(22992,16320), "S3463C1");
    /*is_ambiguous_... S3463C14::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C14*)(S3463C13*), ABISELECT(22992,16320), "S3463C1");
    /*is_ambiguous_... S3463C3::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C3*)(S3463C14*)(S3463C13*), ABISELECT(22992,16320), "S3463C1");
    check_base_class_offset(lv, (S3463C5*)(S3463C8*), ABISELECT(23040,16352), "S3463C1");
    check_base_class_offset(lv, (S3463C8*)(S3463C3*)(S3463C2*), ABISELECT(23040,16352), "S3463C1");
    /*is_ambiguous_... S3463C1::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C8*)(S3463C3*), ABISELECT(23040,16352), "S3463C1");
    check_base_class_offset(lv, (S3463C8*)(S3463C12*)(S3463C13*), ABISELECT(23040,16352), "S3463C1");
    check_base_class_offset(lv, (S3463C8*)(S3463C3*)(S3463C14*)(S3463C13*), ABISELECT(23040,16352), "S3463C1");
    check_base_class_offset(lv, (S3463C9*)(S3463C3*)(S3463C2*), 0, "S3463C1");
    check_base_class_offset(lv, (S3463C3*)(S3463C2*), 0, "S3463C1");
    check_base_class_offset(lv, (S19942C12_nt*)(S3463C2*), ABISELECT(23184,16460), "S3463C1");
    check_base_class_offset(lv, (S19942C12_nt*)(S3463C14*)(S3463C13*), ABISELECT(23184,16460), "S3463C1");
    check_base_class_offset(lv, (S3463C2*), 0, "S3463C1");
    /*is_ambiguous_... S3463C13::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C4*)(S3463C13*), ABISELECT(23200,16464), "S3463C1");
    /*is_ambiguous_... S3463C13::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C4*)(S3463C13*), ABISELECT(23200,16464), "S3463C1");
    /*is_ambiguous_... S3463C13::S3463C9 */ AMB_check_base_class_offset(lv, (S3463C9*)(S3463C13*), ABISELECT(26368,18692), "S3463C1");
    /*is_ambiguous_... S3463C12::S3463C9 */ AMB_check_base_class_offset(lv, (S3463C9*)(S3463C12*)(S3463C13*), ABISELECT(26368,18692), "S3463C1");
    /*is_ambiguous_... S3463C1::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C9*)(S3463C3*), ABISELECT(26592,18856), "S3463C1");
    /*is_ambiguous_... S3463C13::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C3*)(S3463C13*), ABISELECT(26592,18856), "S3463C1");
    check_base_class_offset(lv, (S3463C3*)(S3463C12*)(S3463C13*), ABISELECT(26592,18856), "S3463C1");
    /*is_ambiguous_... S3463C12::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C12*)(S3463C13*), ABISELECT(23440,16620), "S3463C1");
    /*is_ambiguous_... S3463C12::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C4*)(S3463C12*)(S3463C13*), ABISELECT(23488,16652), "S3463C1");
    /*is_ambiguous_... S3463C12::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C4*)(S3463C12*)(S3463C13*), ABISELECT(23488,16652), "S3463C1");
    check_base_class_offset(lv, (S3463C12*)(S3463C13*), ABISELECT(23440,16620), "S3463C1");
    check_base_class_offset(lv, (S3463C9*)(S3463C3*)(S3463C14*)(S3463C13*), ABISELECT(23792,16852), "S3463C1");
    check_base_class_offset(lv, (S3463C3*)(S3463C14*)(S3463C13*), ABISELECT(23792,16852), "S3463C1");
    /*is_ambiguous_... S3463C14::S3463C9 */ AMB_check_base_class_offset(lv, (S3463C9*)(S3463C14*)(S3463C13*), ABISELECT(24208,17172), "S3463C1");
    check_base_class_offset(lv, (S3463C14*)(S3463C13*), ABISELECT(23792,16852), "S3463C1");
    check_base_class_offset(lv, (S3463C13*), ABISELECT(23200,16464), "S3463C1");
    check_base_class_offset(lv, (S3463C15*), ABISELECT(1856,1336), "S3463C1");
    check_field_offset(lv, s3463c1f0, ABISELECT(22724,16148), "S3463C1.s3463c1f0");
    check_field_offset(lv, s3463c1f1, ABISELECT(22736,16152), "S3463C1.s3463c1f1");
    test_class_info(&lv, &cd_S3463C1);
    dp->~S3463C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C1(Test_S3463C1, "S3463C1", ABISELECT(27008,19176));

#else // __cplusplus

extern void _ZN7S3463C1C1Ev();
extern void _ZN7S3463C1D1Ev();
Name_Map name_map_S3463C1[] = {
  NSPAIR(_ZN7S3463C1C1Ev),
  NSPAIR(_ZN7S3463C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C8;
extern VTBL_ENTRY _ZTI7S3463C8[];
extern  VTBL_ENTRY _ZTV7S3463C8[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C3;
extern VTBL_ENTRY _ZTI7S3463C3[];
extern  VTBL_ENTRY _ZTV7S3463C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C3[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S3463C2;
extern VTBL_ENTRY _ZTI7S3463C2[];
extern  VTBL_ENTRY _ZTV7S3463C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C2[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C3;
extern VTBL_ENTRY _ZTI7S3463C3[];
extern  VTBL_ENTRY _ZTV7S3463C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C3[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C12;
extern VTBL_ENTRY _ZTI8S3463C12[];
extern  VTBL_ENTRY _ZTV8S3463C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3463C12[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C3;
extern VTBL_ENTRY _ZTI7S3463C3[];
extern  VTBL_ENTRY _ZTV7S3463C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C3[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C14;
extern VTBL_ENTRY _ZTI8S3463C14[];
extern  VTBL_ENTRY _ZTV8S3463C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3463C14[];
extern Class_Descriptor cd_S3463C13;
extern VTBL_ENTRY _ZTI8S3463C13[];
extern  VTBL_ENTRY _ZTV8S3463C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3463C13[];
extern Class_Descriptor cd_S3463C15;
extern VTBL_ENTRY _ZTI8S3463C15[];
extern  VTBL_ENTRY _ZTV8S3463C15[];
static Base_Class bases_S3463C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3463C5,    ABISELECT(22752,16164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3463C4,    ABISELECT(22752,16164), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3463C5,    ABISELECT(22992,16320), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3463C5,    ABISELECT(23040,16352), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3463C8,    ABISELECT(23040,16352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3463C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3463C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19942C12_nt,    ABISELECT(23184,16460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3463C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3463C5,    ABISELECT(23200,16464), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3463C4,    ABISELECT(23200,16464), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3463C9,    ABISELECT(26368,18692), //bcp->offset
    85, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3463C9,    ABISELECT(26592,18856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3463C3,    ABISELECT(26592,18856), //bcp->offset
    89, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3463C5,    ABISELECT(23440,16620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3463C5,    ABISELECT(23488,16652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3463C4,    ABISELECT(23488,16652), //bcp->offset
    68, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3463C12,    ABISELECT(23440,16620), //bcp->offset
    58, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3463C9,    ABISELECT(23792,16852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3463C3,    ABISELECT(23792,16852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3463C9,    ABISELECT(24208,17172), //bcp->offset
    82, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3463C14,    ABISELECT(23792,16852), //bcp->offset
    73, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3463C13,    ABISELECT(23200,16464), //bcp->offset
    36, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C15,    ABISELECT(1856,1336), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3463C1[];
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN7S3463C1D1Ev();
extern void _ZN7S3463C1D0Ev();
extern void _ZN7S3463C22v6Ev();
extern void _ZN7S3463C22v7Ev();
extern void _ZN7S3463C22v8Ev();
extern void _ZN8S3463C153v11Ev();
extern void _ZN8S3463C153v12Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN8S3463C133v10Ev();
extern void ABISELECT(_ZTv0_n104_N7S3463C1D1Ev,_ZTv0_n52_N7S3463C1D1Ev)();
extern void ABISELECT(_ZThn23200_N7S3463C1D1Ev,_ZThn16464_N7S3463C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N7S3463C1D0Ev,_ZTv0_n52_N7S3463C1D0Ev)();
extern void ABISELECT(_ZThn23200_N7S3463C1D0Ev,_ZThn16464_N7S3463C1D0Ev)() __attribute__((weak));
extern void _ZN7S3463C52v1Ev();
extern void ABISELECT(_ZTvn240_n104_N7S3463C1D1Ev,_ZTvn156_n52_N7S3463C1D1Ev)();
extern void ABISELECT(_ZTvn240_n104_N7S3463C1D0Ev,_ZTvn156_n52_N7S3463C1D0Ev)();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN8S3463C142v9Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY vtc_S3463C1[] = {
  ABISELECT(26592,18856),
  ABISELECT(26368,18692),
  ABISELECT(23200,16464),
  ABISELECT(23184,16460),
  ABISELECT(23040,16352),
  ABISELECT(22992,16320),
  ABISELECT(22752,16164),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3463C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3463C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3463C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3463C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3463C22v8Ev,
  ABISELECT(-1856,-1336),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN8S3463C153v11Ev,
  (VTBL_ENTRY)&_ZN8S3463C153v12Ev,
  0,
  0,
  0,
  ABISELECT(-22752,-16164),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  0,
  ABISELECT(-22992,-16320),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  0,
  ABISELECT(-23040,-16352),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  ABISELECT(592,388),
  ABISELECT(592,388),
  ABISELECT(592,388),
  ABISELECT(-23200,-16464),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-160,-112),
  ABISELECT(-208,-144),
  ABISELECT(-448,-300),
  ABISELECT(3392,2392),
  ABISELECT(3168,2228),
  ABISELECT(-23200,-16464),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  (VTBL_ENTRY)&_ZN8S3463C133v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N7S3463C1D1Ev,_ZTv0_n52_N7S3463C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N7S3463C1D0Ev,_ZTv0_n52_N7S3463C1D0Ev),
  ABISELECT(2928,2072),
  ABISELECT(-448,-300),
  ABISELECT(-688,-456),
  ABISELECT(3152,2236),
  ABISELECT(-400,-268),
  ABISELECT(-23440,-16620),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n104_N7S3463C1D1Ev,_ZTvn156_n52_N7S3463C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n104_N7S3463C1D0Ev,_ZTvn156_n52_N7S3463C1D0Ev),
  ABISELECT(-23488,-16652),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  ABISELECT(-608,-392),
  ABISELECT(-752,-500),
  ABISELECT(-800,-532),
  ABISELECT(-1040,-688),
  ABISELECT(-23792,-16852),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  (VTBL_ENTRY)&_ZN8S3463C142v9Ev,
  ABISELECT(-24208,-17172),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  0,
  ABISELECT(-26368,-18692),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  0,
  0,
  ABISELECT(-3552,-2504),
  ABISELECT(-3600,-2536),
  ABISELECT(-3840,-2692),
  ABISELECT(-26592,-18856),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern VTBL_ENTRY _ZTV7S3463C1[];
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN7S3463C2D1Ev();
extern void _ZN7S3463C2D0Ev();
extern void _ZN7S3463C22v6Ev();
extern void _ZN7S3463C22v7Ev();
extern void _ZN7S3463C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C2__7S3463C1[] = {
  ABISELECT(23184,16460),
  ABISELECT(23040,16352),
  ABISELECT(22992,16320),
  ABISELECT(22752,16164),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C2[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3463C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3463C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3463C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3463C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3463C22v8Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C37S3463C2__7S3463C1[] = {
  ABISELECT(23040,16352),
  ABISELECT(22992,16320),
  ABISELECT(22752,16164),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__7S3463C37S3463C2__7S3463C1[] = {
  0,
  0,
  0,
  ABISELECT(-22752,-16164),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A1__7S3463C37S3463C2__7S3463C1[] = {
  0,
  ABISELECT(-22992,-16320),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__7S3463C37S3463C2__7S3463C1[] = {
  0,
  ABISELECT(-23040,-16352),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__7S3463C2__7S3463C1[] = {
  0,
  0,
  0,
  ABISELECT(-22752,-16164),
  (VTBL_ENTRY)&(_ZTI7S3463C2[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A1__7S3463C2__7S3463C1[] = {
  0,
  ABISELECT(-22992,-16320),
  (VTBL_ENTRY)&(_ZTI7S3463C2[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__7S3463C2__7S3463C1[] = {
  0,
  ABISELECT(-23040,-16352),
  (VTBL_ENTRY)&(_ZTI7S3463C2[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN8S3463C133v10Ev();
extern void _ZN8S3463C13D1Ev();
extern void _ZN8S3463C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3463C13__7S3463C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(-160,-112),
  ABISELECT(-208,-144),
  ABISELECT(-448,-300),
  ABISELECT(3392,2392),
  ABISELECT(3168,2228),
  0,
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  (VTBL_ENTRY)&_ZN8S3463C133v10Ev,
  (VTBL_ENTRY)&_ZN8S3463C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3463C13D0Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN8S3463C12D1Ev();
extern void _ZN8S3463C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3463C128S3463C13__7S3463C1[] = {
  ABISELECT(2928,2072),
  ABISELECT(-448,-300),
  ABISELECT(-688,-456),
  ABISELECT(3152,2236),
  ABISELECT(-400,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN8S3463C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3463C12D0Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A1__8S3463C128S3463C13__7S3463C1[] = {
  0,
  ABISELECT(400,268),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C3__8S3463C128S3463C13__7S3463C1[] = {
  0,
  0,
  ABISELECT(-3552,-2504),
  ABISELECT(-3600,-2536),
  ABISELECT(-3840,-2692),
  ABISELECT(-3152,-2236),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__8S3463C128S3463C13__7S3463C1[] = {
  0,
  0,
  0,
  ABISELECT(688,456),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A3__8S3463C128S3463C13__7S3463C1[] = {
  0,
  ABISELECT(448,300),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C92v4Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C9__A1__8S3463C128S3463C13__7S3463C1[] = {
  0,
  ABISELECT(-2928,-2072),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN8S3463C142v9Ev();
static  VTBL_ENTRY _tg__ZTV8S3463C148S3463C13__7S3463C1[] = {
  ABISELECT(-608,-392),
  ABISELECT(-752,-500),
  ABISELECT(-800,-532),
  ABISELECT(-1040,-688),
  0,
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  (VTBL_ENTRY)&_ZN8S3463C142v9Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C38S3463C148S3463C13__A2__7S3463C1[] = {
  ABISELECT(-752,-500),
  ABISELECT(-800,-532),
  ABISELECT(-1040,-688),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__7S3463C38S3463C148S3463C13__A2__7S3463C1[] = {
  0,
  0,
  0,
  ABISELECT(1040,688),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A1__7S3463C38S3463C148S3463C13__A2__7S3463C1[] = {
  0,
  ABISELECT(800,532),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__7S3463C38S3463C148S3463C13__A2__7S3463C1[] = {
  0,
  ABISELECT(752,500),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__8S3463C148S3463C13__7S3463C1[] = {
  0,
  ABISELECT(800,532),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__8S3463C148S3463C13__7S3463C1[] = {
  0,
  0,
  0,
  ABISELECT(1040,688),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__8S3463C148S3463C13__7S3463C1[] = {
  0,
  ABISELECT(752,500),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C92v4Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C9__8S3463C13__7S3463C1[] = {
  0,
  ABISELECT(-3168,-2228),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C3__8S3463C13__7S3463C1[] = {
  0,
  0,
  ABISELECT(-3552,-2504),
  ABISELECT(-3600,-2536),
  ABISELECT(-3840,-2692),
  ABISELECT(-3392,-2392),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__A1__8S3463C13__7S3463C1[] = {
  0,
  0,
  0,
  ABISELECT(448,300),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A2__8S3463C13__7S3463C1[] = {
  0,
  ABISELECT(208,144),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A3__8S3463C13__7S3463C1[] = {
  0,
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void ABISELECT(_ZThn240_N8S3463C13D1Ev,_ZThn156_N8S3463C13D1Ev)();
extern void ABISELECT(_ZThn240_N8S3463C13D0Ev,_ZThn156_N8S3463C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3463C12__8S3463C13__7S3463C1[] = {
  ABISELECT(2928,2072),
  ABISELECT(-448,-300),
  ABISELECT(-688,-456),
  ABISELECT(3152,2236),
  ABISELECT(-400,-268),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N8S3463C13D1Ev,_ZThn156_N8S3463C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N8S3463C13D0Ev,_ZThn156_N8S3463C13D0Ev),
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN8S3463C142v9Ev();
static  VTBL_ENTRY _tg__ZTV8S3463C14__8S3463C13__7S3463C1[] = {
  ABISELECT(-608,-392),
  ABISELECT(-752,-500),
  ABISELECT(-800,-532),
  ABISELECT(-1040,-688),
  ABISELECT(-592,-388),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  (VTBL_ENTRY)&_ZN8S3463C142v9Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C3__A1__7S3463C1[] = {
  ABISELECT(-3552,-2504),
  ABISELECT(-3600,-2536),
  ABISELECT(-3840,-2692),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__7S3463C3__A1__7S3463C1[] = {
  0,
  0,
  0,
  ABISELECT(3840,2692),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A1__7S3463C3__A1__7S3463C1[] = {
  0,
  ABISELECT(3600,2536),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__7S3463C3__A1__7S3463C1[] = {
  0,
  ABISELECT(3552,2504),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
static  VTT_ENTRY vtt_S3463C1[] = {
  {&(_ZTV7S3463C1[9]),  9,98},
  {&(_tg__ZTV7S3463C2__7S3463C1[6]),  6,13},
  {&(_tg__ZTV7S3463C37S3463C2__7S3463C1[5]),  5,7},
  {&(_tg__ZTV7S3463C4__7S3463C37S3463C2__7S3463C1[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A1__7S3463C37S3463C2__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A2__7S3463C37S3463C2__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C4__7S3463C2__7S3463C1[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A1__7S3463C2__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A2__7S3463C2__7S3463C1[3]),  3,4},
  {&(_ZTV7S3463C1[25]),  25,98},
  {&(_ZTV7S3463C1[31]),  31,98},
  {&(_ZTV7S3463C1[35]),  35,98},
  {&(_ZTV7S3463C1[52]),  52,98},
  {&(_ZTV7S3463C1[88]),  88,98},
  {&(_ZTV7S3463C1[96]),  96,98},
  {&(_ZTV7S3463C1[65]),  65,98},
  {&(_ZTV7S3463C1[70]),  70,98},
  {&(_ZTV7S3463C1[79]),  79,98},
  {&(_ZTV7S3463C1[84]),  84,98},
  {&(_tg__ZTV8S3463C13__7S3463C1[8]),  8,14},
  {&(_tg__ZTV8S3463C128S3463C13__7S3463C1[7]),  7,10},
  {&(_tg__ZTV7S3463C57S3463C8__A1__8S3463C128S3463C13__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C3__8S3463C128S3463C13__7S3463C1[7]),  7,9},
  {&(_tg__ZTV7S3463C4__8S3463C128S3463C13__7S3463C1[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A3__8S3463C128S3463C13__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C9__A1__8S3463C128S3463C13__7S3463C1[3]),  3,4},
  {&(_tg__ZTV8S3463C148S3463C13__7S3463C1[6]),  6,9},
  {&(_tg__ZTV7S3463C38S3463C148S3463C13__A2__7S3463C1[5]),  5,7},
  {&(_tg__ZTV7S3463C4__7S3463C38S3463C148S3463C13__A2__7S3463C1[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A1__7S3463C38S3463C148S3463C13__A2__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A2__7S3463C38S3463C148S3463C13__A2__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C5__8S3463C148S3463C13__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C4__8S3463C148S3463C13__7S3463C1[5]),  5,8},
  {&(_tg__ZTV7S3463C57S3463C8__A2__8S3463C148S3463C13__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C9__8S3463C13__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C3__8S3463C13__7S3463C1[7]),  7,9},
  {&(_tg__ZTV7S3463C4__A1__8S3463C13__7S3463C1[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A2__8S3463C13__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A3__8S3463C13__7S3463C1[3]),  3,4},
  {&(_tg__ZTV8S3463C12__8S3463C13__7S3463C1[7]),  7,10},
  {&(_tg__ZTV8S3463C14__8S3463C13__7S3463C1[6]),  6,9},
  {&(_tg__ZTV7S3463C3__A1__7S3463C1[5]),  5,7},
  {&(_tg__ZTV7S3463C4__7S3463C3__A1__7S3463C1[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A1__7S3463C3__A1__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A2__7S3463C3__A1__7S3463C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S3463C1[];
extern  VTBL_ENTRY _ZTV7S3463C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C1[];
static VTBL_ENTRY alt_thunk_names41[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N7S3463C1D0Ev,_ZTv0_n52_N7S3463C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23200_N7S3463C1D0Ev,_ZThn16464_N7S3463C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N7S3463C1D1Ev,_ZTv0_n52_N7S3463C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23200_N7S3463C1D1Ev,_ZThn16464_N7S3463C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3463C1 = {  "S3463C1", // class name
  bases_S3463C1, 24,
  &(vtc_S3463C1[0]), // expected_vtbl_contents
  &(vtt_S3463C1[0]), // expected_vtt_contents
  ABISELECT(27008,19176), // object size
  NSPAIRA(_ZTI7S3463C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3463C1),98, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3463C1),45, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names41,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C3_nt  {
  char s6451c3f0;
  virtual void  v23(); // _ZN10S6451C3_nt3v23Ev
  virtual void  v24(); // _ZN10S6451C3_nt3v24Ev
  ~S6451C3_nt(); // tgen
  S6451C3_nt(); // tgen
};
//SIG(-1 S6451C3_nt) C1{ v1 v2 Fc}


void  S6451C3_nt ::v23(){vfunc_called(this, "_ZN10S6451C3_nt3v23Ev");}
void  S6451C3_nt ::v24(){vfunc_called(this, "_ZN10S6451C3_nt3v24Ev");}
S6451C3_nt ::~S6451C3_nt(){ note_dtor("S6451C3_nt", this);} // tgen
S6451C3_nt ::S6451C3_nt(){ note_ctor("S6451C3_nt", this);} // tgen

//skip512 S6451C3_nt

#else // __cplusplus

extern void _ZN10S6451C3_ntC1Ev();
extern void _ZN10S6451C3_ntD1Ev();
Name_Map name_map_S6451C3_nt[] = {
  NSPAIR(_ZN10S6451C3_ntC1Ev),
  NSPAIR(_ZN10S6451C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY vtc_S6451C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
VTBL_ENTRY *P__ZTI10S6451C3_nt = _ZTI10S6451C3_nt; 
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
Class_Descriptor cd_S6451C3_nt = {  "S6451C3_nt", // class name
  0,0,//no base classes
  &(vtc_S6451C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S6451C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6451C3_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C2_nt  {
  long s6451c2f0;
  ::S6451C3_nt s6451c2f1;
  long s6451c2f2[9];
  long double s6451c2f3;
  virtual void  v11(); // _ZN10S6451C2_nt3v11Ev
  virtual void  v12(); // _ZN10S6451C2_nt3v12Ev
  virtual void  v13(); // _ZN10S6451C2_nt3v13Ev
  virtual void  v14(); // _ZN10S6451C2_nt3v14Ev
  ~S6451C2_nt(); // tgen
  S6451C2_nt(); // tgen
};
//SIG(-1 S6451C2_nt) C1{ v1 v2 v3 v4 Fl FC2{ v5 v6 Fc} Fl[9] FD}


void  S6451C2_nt ::v11(){vfunc_called(this, "_ZN10S6451C2_nt3v11Ev");}
void  S6451C2_nt ::v12(){vfunc_called(this, "_ZN10S6451C2_nt3v12Ev");}
void  S6451C2_nt ::v13(){vfunc_called(this, "_ZN10S6451C2_nt3v13Ev");}
void  S6451C2_nt ::v14(){vfunc_called(this, "_ZN10S6451C2_nt3v14Ev");}
S6451C2_nt ::~S6451C2_nt(){ note_dtor("S6451C2_nt", this);} // tgen
S6451C2_nt ::S6451C2_nt(){ note_ctor("S6451C2_nt", this);} // tgen

//skip512 S6451C2_nt

#else // __cplusplus

extern void _ZN10S6451C2_ntC1Ev();
extern void _ZN10S6451C2_ntD1Ev();
Name_Map name_map_S6451C2_nt[] = {
  NSPAIR(_ZN10S6451C2_ntC1Ev),
  NSPAIR(_ZN10S6451C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY vtc_S6451C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
VTBL_ENTRY *P__ZTI10S6451C2_nt = _ZTI10S6451C2_nt; 
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
Class_Descriptor cd_S6451C2_nt = {  "S6451C2_nt", // class name
  0,0,//no base classes
  &(vtc_S6451C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI10S6451C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6451C2_nt),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C4_nt  {
  void *s6451c4f0;
  long s6451c4f1;
  virtual void  v15(); // _ZN10S6451C4_nt3v15Ev
  virtual void  v16(); // _ZN10S6451C4_nt3v16Ev
  virtual void  v17(); // _ZN10S6451C4_nt3v17Ev
  virtual void  v18(); // _ZN10S6451C4_nt3v18Ev
  ~S6451C4_nt(); // tgen
  S6451C4_nt(); // tgen
};
//SIG(-1 S6451C4_nt) C1{ v1 v2 v3 v4 Fp Fl}


void  S6451C4_nt ::v15(){vfunc_called(this, "_ZN10S6451C4_nt3v15Ev");}
void  S6451C4_nt ::v16(){vfunc_called(this, "_ZN10S6451C4_nt3v16Ev");}
void  S6451C4_nt ::v17(){vfunc_called(this, "_ZN10S6451C4_nt3v17Ev");}
void  S6451C4_nt ::v18(){vfunc_called(this, "_ZN10S6451C4_nt3v18Ev");}
S6451C4_nt ::~S6451C4_nt(){ note_dtor("S6451C4_nt", this);} // tgen
S6451C4_nt ::S6451C4_nt(){ note_ctor("S6451C4_nt", this);} // tgen

//skip512 S6451C4_nt

#else // __cplusplus

extern void _ZN10S6451C4_ntC1Ev();
extern void _ZN10S6451C4_ntD1Ev();
Name_Map name_map_S6451C4_nt[] = {
  NSPAIR(_ZN10S6451C4_ntC1Ev),
  NSPAIR(_ZN10S6451C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY vtc_S6451C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
VTBL_ENTRY *P__ZTI10S6451C4_nt = _ZTI10S6451C4_nt; 
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
Class_Descriptor cd_S6451C4_nt = {  "S6451C4_nt", // class name
  0,0,//no base classes
  &(vtc_S6451C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI10S6451C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6451C4_nt),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C8_nt  {
  virtual void  v19(); // _ZN10S6451C8_nt3v19Ev
  virtual void  v20(); // _ZN10S6451C8_nt3v20Ev
  virtual void  v21(); // _ZN10S6451C8_nt3v21Ev
  virtual void  v22(); // _ZN10S6451C8_nt3v22Ev
  ~S6451C8_nt(); // tgen
  S6451C8_nt(); // tgen
};
//SIG(-1 S6451C8_nt) C1{ v1 v2 v3 v4}


void  S6451C8_nt ::v19(){vfunc_called(this, "_ZN10S6451C8_nt3v19Ev");}
void  S6451C8_nt ::v20(){vfunc_called(this, "_ZN10S6451C8_nt3v20Ev");}
void  S6451C8_nt ::v21(){vfunc_called(this, "_ZN10S6451C8_nt3v21Ev");}
void  S6451C8_nt ::v22(){vfunc_called(this, "_ZN10S6451C8_nt3v22Ev");}
S6451C8_nt ::~S6451C8_nt(){ note_dtor("S6451C8_nt", this);} // tgen
S6451C8_nt ::S6451C8_nt(){ note_ctor("S6451C8_nt", this);} // tgen

//skip512 S6451C8_nt

#else // __cplusplus

extern void _ZN10S6451C8_ntC1Ev();
extern void _ZN10S6451C8_ntD1Ev();
Name_Map name_map_S6451C8_nt[] = {
  NSPAIR(_ZN10S6451C8_ntC1Ev),
  NSPAIR(_ZN10S6451C8_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY vtc_S6451C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
VTBL_ENTRY *P__ZTI10S6451C8_nt = _ZTI10S6451C8_nt; 
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
Class_Descriptor cd_S6451C8_nt = {  "S6451C8_nt", // class name
  0,0,//no base classes
  &(vtc_S6451C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S6451C8_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6451C8_nt),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C10_nt  : S6451C4_nt {
  ::S6451C3_nt s6451c10f0;
  long s6451c10f1;
  long double s6451c10f2[9];
  virtual void  v25(); // _ZN11S6451C10_nt3v25Ev
  virtual void  v26(); // _ZN11S6451C10_nt3v26Ev
  virtual void  v27(); // _ZN11S6451C10_nt3v27Ev
  virtual void  v28(); // _ZN11S6451C10_nt3v28Ev
  virtual void  v29(); // _ZN11S6451C10_nt3v29Ev
  ~S6451C10_nt(); // tgen
  S6451C10_nt(); // tgen
};
//SIG(-1 S6451C10_nt) C1{ BC2{ v6 v7 v8 v9 Fp Fl} v1 v2 v3 v4 v5 FC3{ v10 v11 Fc} Fl FD[9]}


void  S6451C10_nt ::v25(){vfunc_called(this, "_ZN11S6451C10_nt3v25Ev");}
void  S6451C10_nt ::v26(){vfunc_called(this, "_ZN11S6451C10_nt3v26Ev");}
void  S6451C10_nt ::v27(){vfunc_called(this, "_ZN11S6451C10_nt3v27Ev");}
void  S6451C10_nt ::v28(){vfunc_called(this, "_ZN11S6451C10_nt3v28Ev");}
void  S6451C10_nt ::v29(){vfunc_called(this, "_ZN11S6451C10_nt3v29Ev");}
S6451C10_nt ::~S6451C10_nt(){ note_dtor("S6451C10_nt", this);} // tgen
S6451C10_nt ::S6451C10_nt(){ note_ctor("S6451C10_nt", this);} // tgen

//skip512 S6451C10_nt

#else // __cplusplus

extern void _ZN11S6451C10_ntC1Ev();
extern void _ZN11S6451C10_ntD1Ev();
Name_Map name_map_S6451C10_nt[] = {
  NSPAIR(_ZN11S6451C10_ntC1Ev),
  NSPAIR(_ZN11S6451C10_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
static Base_Class bases_S6451C10_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY vtc_S6451C10_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C10_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
VTBL_ENTRY *P__ZTI11S6451C10_nt = _ZTI11S6451C10_nt; 
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
Class_Descriptor cd_S6451C10_nt = {  "S6451C10_nt", // class name
  bases_S6451C10_nt, 1,
  &(vtc_S6451C10_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI11S6451C10_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV11S6451C10_nt),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C9_nt  : S6451C3_nt , virtual S6451C8_nt , virtual S6451C2_nt , virtual S6451C4_nt , virtual S6451C10_nt {
  long s6451c9f0;
  virtual void  v30(); // _ZN10S6451C9_nt3v30Ev
  virtual void  v31(); // _ZN10S6451C9_nt3v31Ev
  virtual void  v32(); // _ZN10S6451C9_nt3v32Ev
  ~S6451C9_nt(); // tgen
  S6451C9_nt(); // tgen
};
//SIG(-1 S6451C9_nt) C1{ BC2{ v4 v5 Fc} VBC3{ v6 v7 v8 v9} VBC4{ v10 v11 v12 v13 Fl FC2 Fl[9] FD} VBC5{ v14 v15 v16 v17 Fp Fl} VBC6{ BC5 v18 v19 v20 v21 v22 FC2 Fl FD[9]} v1 v2 v3 Fl}


void  S6451C9_nt ::v30(){vfunc_called(this, "_ZN10S6451C9_nt3v30Ev");}
void  S6451C9_nt ::v31(){vfunc_called(this, "_ZN10S6451C9_nt3v31Ev");}
void  S6451C9_nt ::v32(){vfunc_called(this, "_ZN10S6451C9_nt3v32Ev");}
S6451C9_nt ::~S6451C9_nt(){ note_dtor("S6451C9_nt", this);} // tgen
S6451C9_nt ::S6451C9_nt(){ note_ctor("S6451C9_nt", this);} // tgen

//skip512 S6451C9_nt

#else // __cplusplus

extern void _ZN10S6451C9_ntC1Ev();
extern void _ZN10S6451C9_ntD1Ev();
Name_Map name_map_S6451C9_nt[] = {
  NSPAIR(_ZN10S6451C9_ntC1Ev),
  NSPAIR(_ZN10S6451C9_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
static Base_Class bases_S6451C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C8_nt,    ABISELECT(24,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C2_nt,    ABISELECT(32,16), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C4_nt,    ABISELECT(160,80), //bcp->offset
    31, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C4_nt,    ABISELECT(192,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(192,92), //bcp->offset
    41, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY vtc_S6451C9_nt[] = {
  ABISELECT(192,92),
  ABISELECT(160,80),
  ABISELECT(32,16),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-92),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern VTBL_ENTRY _ZTV10S6451C9_nt[];
static  VTT_ENTRY vtt_S6451C9_nt[] = {
  {&(_ZTV10S6451C9_nt[6]),  6,61},
  {&(_ZTV10S6451C9_nt[17]),  17,61},
  {&(_ZTV10S6451C9_nt[27]),  27,61},
  {&(_ZTV10S6451C9_nt[37]),  37,61},
  {&(_ZTV10S6451C9_nt[52]),  52,61},
};
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
VTBL_ENTRY *P__ZTI10S6451C9_nt = _ZTI10S6451C9_nt; 
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
Class_Descriptor cd_S6451C9_nt = {  "S6451C9_nt", // class name
  bases_S6451C9_nt, 6,
  &(vtc_S6451C9_nt[0]), // expected_vtbl_contents
  &(vtt_S6451C9_nt[0]), // expected_vtt_contents
  ABISELECT(384,224), // object size
  NSPAIRA(_ZTI10S6451C9_nt),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV10S6451C9_nt),61, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S6451C9_nt),5, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C7_nt  : virtual S6451C8_nt , S6451C4_nt , S6451C9_nt {
  short s6451c7f0:16;
  void *s6451c7f1;
  virtual  ~S6451C7_nt(); // _ZN10S6451C7_ntD2Ev
  virtual void  v33(); // _ZN10S6451C7_nt3v33Ev
  virtual void  v34(); // _ZN10S6451C7_nt3v34Ev
  virtual void  v35(); // _ZN10S6451C7_nt3v35Ev
  virtual void  v36(); // _ZN10S6451C7_nt3v36Ev
  virtual void  v37(); // _ZN10S6451C7_nt3v37Ev
  virtual void  v38(); // _ZN10S6451C7_nt3v38Ev
  S6451C7_nt(); // tgen
};
//SIG(-1 S6451C7_nt) C1{ VBC2{ v7 v8 v9 v10} BC3{ v11 v12 v13 v14 Fp Fl} BC4{ BC5{ v15 v16 Fc} VBC2 VBC6{ v17 v18 v19 v20 Fl FC5 Fl[9] FD} VBC3 VBC7{ BC3 v21 v22 v23 v24 v25 FC5 Fl FD[9]} v26 v27 v28 Fl} vd v1 v2 v3 v4 v5 v6 Fs:16 Fp}


 S6451C7_nt ::~S6451C7_nt(){ note_dtor("S6451C7_nt", this);}
void  S6451C7_nt ::v33(){vfunc_called(this, "_ZN10S6451C7_nt3v33Ev");}
void  S6451C7_nt ::v34(){vfunc_called(this, "_ZN10S6451C7_nt3v34Ev");}
void  S6451C7_nt ::v35(){vfunc_called(this, "_ZN10S6451C7_nt3v35Ev");}
void  S6451C7_nt ::v36(){vfunc_called(this, "_ZN10S6451C7_nt3v36Ev");}
void  S6451C7_nt ::v37(){vfunc_called(this, "_ZN10S6451C7_nt3v37Ev");}
void  S6451C7_nt ::v38(){vfunc_called(this, "_ZN10S6451C7_nt3v38Ev");}
S6451C7_nt ::S6451C7_nt(){ note_ctor("S6451C7_nt", this);} // tgen

//skip512 S6451C7_nt

#else // __cplusplus

extern void _ZN10S6451C7_ntC1Ev();
extern void _ZN10S6451C7_ntD2Ev();
Name_Map name_map_S6451C7_nt[] = {
  NSPAIR(_ZN10S6451C7_ntC1Ev),
  NSPAIR(_ZN10S6451C7_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
static Base_Class bases_S6451C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C8_nt,    ABISELECT(64,32), //bcp->offset
    29, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C3_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(80,36), //bcp->offset
    39, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(208,100), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(240,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(240,112), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C9_nt,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY vtc_S6451C7_nt[] = {
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-112),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern VTBL_ENTRY _ZTV10S6451C7_nt[];
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt__10S6451C7_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt__10S6451C7_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt__10S6451C7_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-184,-88),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt__10S6451C7_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
static  VTT_ENTRY vtt_S6451C7_nt[] = {
  {&(_ZTV10S6451C7_nt[6]),  6,79},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt__10S6451C7_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt__10S6451C7_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt__10S6451C7_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt__10S6451C7_nt[11]),  11,20},
  {&(_ZTV10S6451C7_nt[35]),  35,79},
  {&(_ZTV10S6451C7_nt[24]),  24,79},
  {&(_ZTV10S6451C7_nt[45]),  45,79},
  {&(_ZTV10S6451C7_nt[55]),  55,79},
  {&(_ZTV10S6451C7_nt[70]),  70,79},
};
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
VTBL_ENTRY *P__ZTI10S6451C7_nt = _ZTI10S6451C7_nt; 
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
Class_Descriptor cd_S6451C7_nt = {  "S6451C7_nt", // class name
  bases_S6451C7_nt, 8,
  &(vtc_S6451C7_nt[0]), // expected_vtbl_contents
  &(vtt_S6451C7_nt[0]), // expected_vtt_contents
  ABISELECT(432,244), // object size
  NSPAIRA(_ZTI10S6451C7_nt),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV10S6451C7_nt),79, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S6451C7_nt),11, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C11_nt  : virtual S6451C10_nt , virtual S6451C4_nt , virtual S6451C3_nt {
  void *s6451c11f0[10];
  __tsi64 s6451c11f1:19;
  virtual  ~S6451C11_nt(); // _ZN11S6451C11_ntD2Ev
  virtual void  v39(); // _ZN11S6451C11_nt3v39Ev
  S6451C11_nt(); // tgen
};
//SIG(-1 S6451C11_nt) C1{ VBC2{ BC3{ v2 v3 v4 v5 Fp Fl} v6 v7 v8 v9 v10 FC4{ v11 v12 Fc} Fl FD[9]} VBC3 VBC4 vd v1 Fp[10] FL:19}


 S6451C11_nt ::~S6451C11_nt(){ note_dtor("S6451C11_nt", this);}
void  S6451C11_nt ::v39(){vfunc_called(this, "_ZN11S6451C11_nt3v39Ev");}
S6451C11_nt ::S6451C11_nt(){ note_ctor("S6451C11_nt", this);} // tgen

//skip512 S6451C11_nt

#else // __cplusplus

extern void _ZN11S6451C11_ntC1Ev();
extern void _ZN11S6451C11_ntD2Ev();
Name_Map name_map_S6451C11_nt[] = {
  NSPAIR(_ZN11S6451C11_ntC1Ev),
  NSPAIR(_ZN11S6451C11_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
static Base_Class bases_S6451C11_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C4_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(96,48), //bcp->offset
    8, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C4_nt,    ABISELECT(288,180), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C3_nt,    ABISELECT(312,192), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY vtc_S6451C11_nt[] = {
  ABISELECT(312,192),
  ABISELECT(288,180),
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  ABISELECT(-312,-192),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern VTBL_ENTRY _ZTV11S6451C11_nt[];
static  VTT_ENTRY vtt_S6451C11_nt[] = {
  {&(_ZTV11S6451C11_nt[5]),  5,44},
  {&(_ZTV11S6451C11_nt[19]),  19,44},
  {&(_ZTV11S6451C11_nt[34]),  34,44},
  {&(_ZTV11S6451C11_nt[42]),  42,44},
};
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
VTBL_ENTRY *P__ZTI11S6451C11_nt = _ZTI11S6451C11_nt; 
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
Class_Descriptor cd_S6451C11_nt = {  "S6451C11_nt", // class name
  bases_S6451C11_nt, 4,
  &(vtc_S6451C11_nt[0]), // expected_vtbl_contents
  &(vtt_S6451C11_nt[0]), // expected_vtt_contents
  ABISELECT(336,200), // object size
  NSPAIRA(_ZTI11S6451C11_nt),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV11S6451C11_nt),44, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S6451C11_nt),4, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C6_nt  : virtual S6451C7_nt , S6451C11_nt {
  __tsi64 s6451c6f0;
  virtual void  v40(); // _ZN10S6451C6_nt3v40Ev
  ~S6451C6_nt(); // tgen
  S6451C6_nt(); // tgen
};
//SIG(-1 S6451C6_nt) C1{ VBC2{ VBC3{ v2 v3 v4 v5} BC4{ v6 v7 v8 v9 Fp Fl} BC5{ BC6{ v10 v11 Fc} VBC3 VBC7{ v12 v13 v14 v15 Fl FC6 Fl[9] FD} VBC4 VBC8{ BC4 v16 v17 v18 v19 v20 FC6 Fl FD[9]} v21 v22 v23 Fl} vd v24 v25 v26 v27 v28 v29 Fs:16 Fp} BC9{ VBC8 VBC4 VBC6 vd v30 Fp[10] FL:19} v1 FL}


void  S6451C6_nt ::v40(){vfunc_called(this, "_ZN10S6451C6_nt3v40Ev");}
S6451C6_nt ::~S6451C6_nt(){ note_dtor("S6451C6_nt", this);} // tgen
S6451C6_nt ::S6451C6_nt(){ note_ctor("S6451C6_nt", this);} // tgen

//skip512 S6451C6_nt

#else // __cplusplus

extern void _ZN10S6451C6_ntC1Ev();
extern void _ZN10S6451C6_ntD1Ev();
Name_Map name_map_S6451C6_nt[] = {
  NSPAIR(_ZN10S6451C6_ntC1Ev),
  NSPAIR(_ZN10S6451C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
extern Class_Descriptor cd_S6451C7_nt;
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C11_nt;
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
static Base_Class bases_S6451C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C8_nt,    ABISELECT(168,88), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(176,92), //bcp->offset
    67, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(304,156), //bcp->offset
    77, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(336,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(336,168), //bcp->offset
    87, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C9_nt,    ABISELECT(128,68), //bcp->offset
    46, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6451C7_nt,    ABISELECT(104,56), //bcp->offset
    12, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C3_nt,    ABISELECT(528,300), //bcp->offset
    107, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6451C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S6451C6_nt[];
extern void _ZN10S6451C6_ntD1Ev();
extern void _ZN10S6451C6_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
extern void _ZN10S6451C6_nt3v40Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N10S6451C6_ntD1Ev,_ZTv0_n44_N10S6451C6_ntD1Ev)();
extern void ABISELECT(_ZThn104_N10S6451C6_ntD1Ev,_ZThn56_N10S6451C6_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N10S6451C6_ntD0Ev,_ZTv0_n44_N10S6451C6_ntD0Ev)();
extern void ABISELECT(_ZThn104_N10S6451C6_ntD0Ev,_ZThn56_N10S6451C6_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY vtc_S6451C6_nt[] = {
  ABISELECT(176,92),
  ABISELECT(168,88),
  ABISELECT(104,56),
  ABISELECT(528,300),
  ABISELECT(304,156),
  ABISELECT(336,168),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S6451C6_nt3v40Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-56),
  0,
  0,
  0,
  0,
  ABISELECT(232,112),
  ABISELECT(200,100),
  ABISELECT(72,36),
  ABISELECT(64,32),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N10S6451C6_ntD1Ev,_ZTv0_n44_N10S6451C6_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N10S6451C6_ntD0Ev,_ZTv0_n44_N10S6451C6_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(208,100),
  ABISELECT(176,88),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-156),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-168),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  0,
  0,
  ABISELECT(-528,-300),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern VTBL_ENTRY _ZTV10S6451C6_nt[];
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__10S6451C6_nt[] = {
  ABISELECT(528,300),
  ABISELECT(304,156),
  ABISELECT(336,168),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C11_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-168),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-304,-156),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C11_nt__10S6451C6_nt[] = {
  0,
  0,
  ABISELECT(-528,-300),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__10S6451C6_nt[] = {
  ABISELECT(232,112),
  ABISELECT(200,100),
  ABISELECT(72,36),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__10S6451C6_nt[] = {
  ABISELECT(208,100),
  ABISELECT(176,88),
  ABISELECT(48,24),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C7_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt__10S6451C6_nt[] = {
  ABISELECT(208,100),
  ABISELECT(176,88),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C7_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-200,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C7_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-112),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
static  VTT_ENTRY vtt_S6451C6_nt[] = {
  {&(_ZTV10S6451C6_nt[8]),  8,113},
  {&(_tg__ZTV11S6451C11_nt__10S6451C6_nt[5]),  5,8},
  {&(_tg__ZTV11S6451C10_nt__11S6451C11_nt__10S6451C6_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__10S6451C6_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C11_nt__10S6451C6_nt[4]),  4,6},
  {&(_ZTV10S6451C6_nt[34]),  34,113},
  {&(_ZTV10S6451C6_nt[63]),  63,113},
  {&(_ZTV10S6451C6_nt[52]),  52,113},
  {&(_ZTV10S6451C6_nt[73]),  73,113},
  {&(_ZTV10S6451C6_nt[83]),  83,113},
  {&(_ZTV10S6451C6_nt[98]),  98,113},
  {&(_ZTV10S6451C6_nt[111]),  111,113},
  {&(_tg__ZTV10S6451C7_nt__10S6451C6_nt[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__10S6451C6_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__10S6451C6_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__10S6451C6_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__10S6451C6_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__10S6451C6_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__10S6451C7_nt__10S6451C6_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt__10S6451C6_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C7_nt__10S6451C6_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__10S6451C6_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C7_nt__10S6451C6_nt[11]),  11,20},
};
extern VTBL_ENTRY _ZTI10S6451C6_nt[];
VTBL_ENTRY *P__ZTI10S6451C6_nt = _ZTI10S6451C6_nt; 
extern  VTBL_ENTRY _ZTV10S6451C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C6_nt[];
static VTBL_ENTRY alt_thunk_names42[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N10S6451C6_ntD0Ev,_ZTv0_n44_N10S6451C6_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N10S6451C6_ntD0Ev,_ZThn56_N10S6451C6_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N10S6451C6_ntD1Ev,_ZTv0_n44_N10S6451C6_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N10S6451C6_ntD1Ev,_ZThn56_N10S6451C6_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6451C6_nt = {  "S6451C6_nt", // class name
  bases_S6451C6_nt, 11,
  &(vtc_S6451C6_nt[0]), // expected_vtbl_contents
  &(vtt_S6451C6_nt[0]), // expected_vtt_contents
  ABISELECT(544,308), // object size
  NSPAIRA(_ZTI10S6451C6_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV10S6451C6_nt),113, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S6451C6_nt),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names42,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C14_nt  : S6451C8_nt , virtual S6451C3_nt {
  virtual void  v41(); // _ZN11S6451C14_nt3v41Ev
  virtual void  v42(); // _ZN11S6451C14_nt3v42Ev
  virtual void  v43(); // _ZN11S6451C14_nt3v43Ev
  ~S6451C14_nt(); // tgen
  S6451C14_nt(); // tgen
};
//SIG(-1 S6451C14_nt) C1{ BC2{ v4 v5 v6 v7} VBC3{ v8 v9 Fc} v1 v2 v3}


void  S6451C14_nt ::v41(){vfunc_called(this, "_ZN11S6451C14_nt3v41Ev");}
void  S6451C14_nt ::v42(){vfunc_called(this, "_ZN11S6451C14_nt3v42Ev");}
void  S6451C14_nt ::v43(){vfunc_called(this, "_ZN11S6451C14_nt3v43Ev");}
S6451C14_nt ::~S6451C14_nt(){ note_dtor("S6451C14_nt", this);} // tgen
S6451C14_nt ::S6451C14_nt(){ note_ctor("S6451C14_nt", this);} // tgen

//skip512 S6451C14_nt

#else // __cplusplus

extern void _ZN11S6451C14_ntC1Ev();
extern void _ZN11S6451C14_ntD1Ev();
Name_Map name_map_S6451C14_nt[] = {
  NSPAIR(_ZN11S6451C14_ntC1Ev),
  NSPAIR(_ZN11S6451C14_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
static Base_Class bases_S6451C14_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C3_nt,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S6451C14_nt[];
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY vtc_S6451C14_nt[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern VTBL_ENTRY _ZTV11S6451C14_nt[];
static  VTT_ENTRY vtt_S6451C14_nt[] = {
  {&(_ZTV11S6451C14_nt[3]),  3,16},
  {&(_ZTV11S6451C14_nt[14]),  14,16},
};
extern VTBL_ENTRY _ZTI11S6451C14_nt[];
VTBL_ENTRY *P__ZTI11S6451C14_nt = _ZTI11S6451C14_nt; 
extern  VTBL_ENTRY _ZTV11S6451C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C14_nt[];
Class_Descriptor cd_S6451C14_nt = {  "S6451C14_nt", // class name
  bases_S6451C14_nt, 2,
  &(vtc_S6451C14_nt[0]), // expected_vtbl_contents
  &(vtt_S6451C14_nt[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI11S6451C14_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV11S6451C14_nt),16, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S6451C14_nt),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C13_nt  : S6451C14_nt , S6451C10_nt , S6451C2_nt , virtual S6451C7_nt {
  virtual void  v44(); // _ZN11S6451C13_nt3v44Ev
  virtual void  v45(); // _ZN11S6451C13_nt3v45Ev
  virtual void  v46(); // _ZN11S6451C13_nt3v46Ev
  virtual void  v47(); // _ZN11S6451C13_nt3v47Ev
  virtual void  v48(); // _ZN11S6451C13_nt3v48Ev
  virtual void  v49(); // _ZN11S6451C13_nt3v49Ev
  virtual void  v50(); // _ZN11S6451C13_nt3v50Ev
  ~S6451C13_nt(); // tgen
  S6451C13_nt(); // tgen
};
//SIG(-1 S6451C13_nt) C1{ BC2{ BC3{ v8 v9 v10 v11} VBC4{ v12 v13 Fc} v14 v15 v16} BC5{ BC6{ v17 v18 v19 v20 Fp Fl} v21 v22 v23 v24 v25 FC4 Fl FD[9]} BC7{ v26 v27 v28 v29 Fl FC4 Fl[9] FD} VBC8{ VBC3 BC6 BC9{ BC4 VBC3 VBC7 VBC6 VBC5 v30 v31 v32 Fl} vd v33 v34 v35 v36 v37 v38 Fs:16 Fp} v1 v2 v3 v4 v5 v6 v7}


void  S6451C13_nt ::v44(){vfunc_called(this, "_ZN11S6451C13_nt3v44Ev");}
void  S6451C13_nt ::v45(){vfunc_called(this, "_ZN11S6451C13_nt3v45Ev");}
void  S6451C13_nt ::v46(){vfunc_called(this, "_ZN11S6451C13_nt3v46Ev");}
void  S6451C13_nt ::v47(){vfunc_called(this, "_ZN11S6451C13_nt3v47Ev");}
void  S6451C13_nt ::v48(){vfunc_called(this, "_ZN11S6451C13_nt3v48Ev");}
void  S6451C13_nt ::v49(){vfunc_called(this, "_ZN11S6451C13_nt3v49Ev");}
void  S6451C13_nt ::v50(){vfunc_called(this, "_ZN11S6451C13_nt3v50Ev");}
S6451C13_nt ::~S6451C13_nt(){ note_dtor("S6451C13_nt", this);} // tgen
S6451C13_nt ::S6451C13_nt(){ note_ctor("S6451C13_nt", this);} // tgen

//skip512 S6451C13_nt

#else // __cplusplus

extern void _ZN11S6451C13_ntC1Ev();
extern void _ZN11S6451C13_ntD1Ev();
Name_Map name_map_S6451C13_nt[] = {
  NSPAIR(_ZN11S6451C13_ntC1Ev),
  NSPAIR(_ZN11S6451C13_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C14_nt;
extern VTBL_ENTRY _ZTI11S6451C14_nt[];
extern  VTBL_ENTRY _ZTV11S6451C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C14_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
extern Class_Descriptor cd_S6451C7_nt;
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
static Base_Class bases_S6451C13_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(336,200), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6451C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C4_nt,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(16,4), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C2_nt,    ABISELECT(208,136), //bcp->offset
    35, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C8_nt,    ABISELECT(416,240), //bcp->offset
    92, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(352,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(376,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(432,244), //bcp->offset
    102, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(560,308), //bcp->offset
    112, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(592,320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(592,320), //bcp->offset
    122, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6451C9_nt,    ABISELECT(376,220), //bcp->offset
    81, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6451C7_nt,    ABISELECT(352,208), //bcp->offset
    47, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S6451C13_nt[];
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void _ZN11S6451C13_ntD1Ev();
extern void _ZN11S6451C13_ntD0Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev)();
extern void ABISELECT(_ZThn352_N11S6451C13_ntD1Ev,_ZThn208_N11S6451C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev)();
extern void ABISELECT(_ZThn352_N11S6451C13_ntD0Ev,_ZThn208_N11S6451C13_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY vtc_S6451C13_nt[] = {
  ABISELECT(592,320),
  ABISELECT(560,308),
  ABISELECT(432,244),
  ABISELECT(416,240),
  ABISELECT(352,208),
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD0Ev,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-208),
  0,
  0,
  0,
  0,
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(-352,-208),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-432,-244),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-560,-308),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-592,-320),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern VTBL_ENTRY _ZTV11S6451C13_nt[];
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C14_nt__11S6451C13_nt[] = {
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C14_nt__11S6451C13_nt[] = {
  0,
  0,
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C13_nt[] = {
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__11S6451C13_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__11S6451C13_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__11S6451C13_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-184,-88),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__11S6451C13_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C7_nt__11S6451C13_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt__11S6451C13_nt[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C7_nt__11S6451C13_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__11S6451C13_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-208,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C7_nt__11S6451C13_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-112),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
static  VTT_ENTRY vtt_S6451C13_nt[] = {
  {&(_ZTV11S6451C13_nt[8]),  8,142},
  {&(_tg__ZTV11S6451C14_nt__11S6451C13_nt[3]),  3,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C14_nt__11S6451C13_nt[4]),  4,6},
  {&(_ZTV11S6451C13_nt[45]),  45,142},
  {&(_ZTV11S6451C13_nt[69]),  69,142},
  {&(_ZTV11S6451C13_nt[98]),  98,142},
  {&(_ZTV11S6451C13_nt[87]),  87,142},
  {&(_ZTV11S6451C13_nt[108]),  108,142},
  {&(_ZTV11S6451C13_nt[118]),  118,142},
  {&(_ZTV11S6451C13_nt[133]),  133,142},
  {&(_tg__ZTV10S6451C7_nt__11S6451C13_nt[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__11S6451C13_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__11S6451C13_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__11S6451C13_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__11S6451C13_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__10S6451C7_nt__11S6451C13_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt__11S6451C13_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C7_nt__11S6451C13_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__11S6451C13_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C7_nt__11S6451C13_nt[11]),  11,20},
};
extern VTBL_ENTRY _ZTI11S6451C13_nt[];
VTBL_ENTRY *P__ZTI11S6451C13_nt = _ZTI11S6451C13_nt; 
extern  VTBL_ENTRY _ZTV11S6451C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C13_nt[];
static VTBL_ENTRY alt_thunk_names43[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N11S6451C13_ntD0Ev,_ZThn208_N11S6451C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N11S6451C13_ntD1Ev,_ZThn208_N11S6451C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6451C13_nt = {  "S6451C13_nt", // class name
  bases_S6451C13_nt, 15,
  &(vtc_S6451C13_nt[0]), // expected_vtbl_contents
  &(vtt_S6451C13_nt[0]), // expected_vtt_contents
  ABISELECT(784,452), // object size
  NSPAIRA(_ZTI11S6451C13_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV11S6451C13_nt),142, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S6451C13_nt),21, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names43,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C12_nt  : S6451C10_nt , virtual S6451C13_nt , S6451C3_nt , virtual S6451C11_nt {
  ::S19763C18_nt s6451c12f0;
  char s6451c12f1:6;
  virtual void  v51(); // _ZN11S6451C12_nt3v51Ev
  ~S6451C12_nt(); // tgen
  S6451C12_nt(); // tgen
};
//SIG(-1 S6451C12_nt) C1{ BC2{ BC3{ v2 v3 v4 v5 Fp Fl} v6 v7 v8 v9 v10 FC4{ v15 v16 Fc} Fl FD[9]} VBC5{ BC6{ BC7{ v11 v12 v13 v14} VBC4 v17 v18 v19} BC2 BC8{ v20 v21 v22 v23 Fl FC4 Fl[9] FD} VBC9{ VBC7 BC3 BC10{ BC4 VBC7 VBC8 VBC3 VBC2 v24 v25 v26 Fl} vd v27 v28 v29 v30 v31 v32 Fs:16 Fp} v33 v34 v35 v36 v37 v38 v39} BC4 VBC11{ VBC2 VBC3 VBC4 vd v40 Fp[10] FL:19} v1 FC12{} Fc:6}


void  S6451C12_nt ::v51(){vfunc_called(this, "_ZN11S6451C12_nt3v51Ev");}
S6451C12_nt ::~S6451C12_nt(){ note_dtor("S6451C12_nt", this);} // tgen
S6451C12_nt ::S6451C12_nt(){ note_ctor("S6451C12_nt", this);} // tgen

//skip512 S6451C12_nt

#else // __cplusplus

extern void _ZN11S6451C12_ntC1Ev();
extern void _ZN11S6451C12_ntD1Ev();
Name_Map name_map_S6451C12_nt[] = {
  NSPAIR(_ZN11S6451C12_ntC1Ev),
  NSPAIR(_ZN11S6451C12_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C14_nt;
extern VTBL_ENTRY _ZTI11S6451C14_nt[];
extern  VTBL_ENTRY _ZTV11S6451C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C14_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
extern Class_Descriptor cd_S6451C7_nt;
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
extern Class_Descriptor cd_S6451C13_nt;
extern VTBL_ENTRY _ZTI11S6451C13_nt[];
extern  VTBL_ENTRY _ZTV11S6451C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C13_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C11_nt;
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
static Base_Class bases_S6451C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C8_nt,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(544,340), //bcp->offset
    95, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S6451C14_nt,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    ABISELECT(224,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(224,144), //bcp->offset
    78, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(416,276), //bcp->offset
    89, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6451C8_nt,    ABISELECT(624,380), //bcp->offset
    146, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(560,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(584,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(640,384), //bcp->offset
    156, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(768,448), //bcp->offset
    166, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(800,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(800,460), //bcp->offset
    176, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S6451C9_nt,    ABISELECT(584,360), //bcp->offset
    135, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6451C7_nt,    ABISELECT(560,348), //bcp->offset
    101, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S6451C13_nt,    ABISELECT(208,140), //bcp->offset
    26, //bcp->virtual_function_table_offset
    36, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C3_nt,    ABISELECT(192,132), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C11_nt,    ABISELECT(992,592), //bcp->offset
    196, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S6451C12_nt[];
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN11S6451C12_nt3v51Ev();
extern void _ZN11S6451C12_ntD1Ev();
extern void _ZN11S6451C12_ntD0Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn208_N11S6451C12_ntD1Ev,_ZThn140_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn208_N11S6451C12_ntD0Ev,_ZThn140_N11S6451C12_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn560_N11S6451C12_ntD1Ev,_ZThn348_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn560_N11S6451C12_ntD0Ev,_ZThn348_N11S6451C12_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn992_N11S6451C12_ntD1Ev,_ZThn592_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn992_N11S6451C12_ntD0Ev,_ZThn592_N11S6451C12_ntD0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY vtc_S6451C12_nt[] = {
  ABISELECT(992,592),
  ABISELECT(800,460),
  ABISELECT(768,448),
  ABISELECT(640,384),
  ABISELECT(624,380),
  ABISELECT(560,348),
  ABISELECT(544,340),
  ABISELECT(208,140),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_nt3v51Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_ntD0Ev,
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(-208,-140),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(592,320),
  ABISELECT(560,308),
  ABISELECT(432,244),
  ABISELECT(416,240),
  ABISELECT(352,208),
  ABISELECT(336,200),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  ABISELECT(-416,-276),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  ABISELECT(-544,-340),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-560,-348),
  0,
  0,
  0,
  0,
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(-560,-348),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-584,-360),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-624,-380),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-640,-384),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-768,-448),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-800,-460),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  0,
  ABISELECT(-992,-592),
  ABISELECT(-448,-252),
  ABISELECT(-224,-144),
  ABISELECT(-192,-132),
  ABISELECT(-992,-592),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern VTBL_ENTRY _ZTV11S6451C12_nt[];
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void _ZN11S6451C13_ntD1Ev();
extern void _ZN11S6451C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__11S6451C12_nt[] = {
  ABISELECT(592,320),
  ABISELECT(560,308),
  ABISELECT(432,244),
  ABISELECT(416,240),
  ABISELECT(352,208),
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD0Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C14_nt11S6451C13_nt__11S6451C12_nt[] = {
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__11S6451C12_nt[] = {
  0,
  0,
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C13_nt__11S6451C12_nt[] = {
  0,
  0,
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev)();
extern void ABISELECT(_ZThn352_N11S6451C13_ntD1Ev,_ZThn208_N11S6451C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev)();
extern void ABISELECT(_ZThn352_N11S6451C13_ntD0Ev,_ZThn208_N11S6451C13_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C13_nt__11S6451C12_nt[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-208),
  0,
  0,
  0,
  0,
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(-352,-208),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__11S6451C12_nt[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-432,-244),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-560,-308),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-592,-320),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C12_nt[] = {
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C12_nt[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-184,-88),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C7_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt__11S6451C12_nt[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C7_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-208,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C7_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-112),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__11S6451C12_nt[] = {
  ABISELECT(-448,-252),
  ABISELECT(-224,-144),
  ABISELECT(-192,-132),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C11_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(192,132),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(224,144),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C11_nt__11S6451C12_nt[] = {
  0,
  0,
  ABISELECT(448,252),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
static  VTT_ENTRY vtt_S6451C12_nt[] = {
  {&(_ZTV11S6451C12_nt[10]),  10,206},
  {&(_ZTV11S6451C12_nt[62]),  62,206},
  {&(_ZTV11S6451C12_nt[99]),  99,206},
  {&(_ZTV11S6451C12_nt[80]),  80,206},
  {&(_ZTV11S6451C12_nt[91]),  91,206},
  {&(_ZTV11S6451C12_nt[123]),  123,206},
  {&(_ZTV11S6451C12_nt[152]),  152,206},
  {&(_ZTV11S6451C12_nt[141]),  141,206},
  {&(_ZTV11S6451C12_nt[162]),  162,206},
  {&(_ZTV11S6451C12_nt[172]),  172,206},
  {&(_ZTV11S6451C12_nt[187]),  187,206},
  {&(_ZTV11S6451C12_nt[203]),  203,206},
  {&(_tg__ZTV11S6451C13_nt__11S6451C12_nt[8]),  8,24},
  {&(_tg__ZTV11S6451C14_nt11S6451C13_nt__11S6451C12_nt[3]),  3,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__11S6451C12_nt[4]),  4,6},
  {&(_tg__ZTV10S6451C3_nt__11S6451C13_nt__11S6451C12_nt[4]),  4,6},
  {&(_tg__ZTV10S6451C7_nt__11S6451C13_nt__11S6451C12_nt[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__11S6451C12_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__11S6451C12_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C7_nt__11S6451C12_nt[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C12_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__11S6451C12_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__10S6451C7_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt__11S6451C12_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C7_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C7_nt__11S6451C12_nt[11]),  11,20},
  {&(_tg__ZTV11S6451C11_nt__11S6451C12_nt[5]),  5,8},
  {&(_tg__ZTV11S6451C10_nt__11S6451C11_nt__11S6451C12_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C11_nt__11S6451C12_nt[4]),  4,6},
};
extern VTBL_ENTRY _ZTI11S6451C12_nt[];
VTBL_ENTRY *P__ZTI11S6451C12_nt = _ZTI11S6451C12_nt; 
extern  VTBL_ENTRY _ZTV11S6451C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C12_nt[];
static VTBL_ENTRY alt_thunk_names44[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N11S6451C13_ntD0Ev,_ZThn208_N11S6451C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N11S6451C13_ntD1Ev,_ZThn208_N11S6451C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn992_N11S6451C12_ntD0Ev,_ZThn592_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn992_N11S6451C12_ntD1Ev,_ZThn592_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N11S6451C12_ntD0Ev,_ZThn348_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N11S6451C12_ntD1Ev,_ZThn348_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N11S6451C12_ntD0Ev,_ZThn140_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N11S6451C12_ntD1Ev,_ZThn140_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6451C12_nt = {  "S6451C12_nt", // class name
  bases_S6451C12_nt, 20,
  &(vtc_S6451C12_nt[0]), // expected_vtbl_contents
  &(vtt_S6451C12_nt[0]), // expected_vtt_contents
  ABISELECT(1088,640), // object size
  NSPAIRA(_ZTI11S6451C12_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV11S6451C12_nt),206, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S6451C12_nt),37, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names44,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C5  : virtual S6451C6_nt , virtual S6451C12_nt , S6451C8_nt {
  virtual  ~S6451C5(); // _ZN7S6451C5D2Ev
  virtual void  v52(); // _ZN7S6451C53v52Ev
  S6451C5(); // tgen
};
//SIG(-1 S6451C5) C1{ VBC2{ VBC3{ VBC4{ v2 v3 v4 v5} BC5{ v6 v7 v8 v9 Fp Fl} BC6{ BC7{ v10 v11 Fc} VBC4 VBC8{ v12 v13 v14 v15 Fl FC7 Fl[9] FD} VBC5 VBC9{ BC5 v16 v17 v18 v19 v20 FC7 Fl FD[9]} v21 v22 v23 Fl} vd v24 v25 v26 v27 v28 v29 Fs:16 Fp} BC10{ VBC9 VBC5 VBC7 vd v30 Fp[10] FL:19} v31 FL} VBC11{ BC9 VBC12{ BC13{ BC4 VBC7 v32 v33 v34} BC9 BC8 VBC3 v35 v36 v37 v38 v39 v40 v41} BC7 VBC10 v42 FC14{} Fc:6} BC4 vd v1}


 S6451C5 ::~S6451C5(){ note_dtor("S6451C5", this);}
void  S6451C5 ::v52(){vfunc_called(this, "_ZN7S6451C53v52Ev");}
S6451C5 ::S6451C5(){ note_ctor("S6451C5", this);} // tgen

static void Test_S6451C5()
{
  extern Class_Descriptor cd_S6451C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(76,176)];
    init_test(&cd_S6451C5, buf);
    S6451C5 *dp, &lv = *(dp=new (buf) S6451C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1200,700), "sizeof(S6451C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6451C5)");
    check_base_class_offset(lv, (S6451C8_nt*)(S6451C7_nt*), ABISELECT(176,92), "S6451C5");
    check_base_class_offset(lv, (S6451C8_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(176,92), "S6451C5");
    /*is_ambiguous_... S6451C7_nt::S6451C4_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C7_nt*), ABISELECT(112,60), "S6451C5");
    check_base_class_offset(lv, (S6451C3_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(136,72), "S6451C5");
    check_base_class_offset(lv, (S6451C2_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(192,96), "S6451C5");
    /*is_ambiguous_... S6451C9_nt::S6451C4_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(320,160), "S6451C5");
    /*is_ambiguous_... S6451C11_nt::S6451C4_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C11_nt*)(S6451C6_nt*), ABISELECT(320,160), "S6451C5");
    /*is_ambiguous_... S6451C5::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C11_nt*), ABISELECT(320,160), "S6451C5");
    /*is_ambiguous_... S6451C5::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C10_nt*), ABISELECT(352,172), "S6451C5");
    check_base_class_offset(lv, (S6451C10_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(352,172), "S6451C5");
    check_base_class_offset(lv, (S6451C10_nt*)(S6451C11_nt*)(S6451C6_nt*), ABISELECT(352,172), "S6451C5");
    /*is_ambiguous_... S6451C5::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C11_nt*), ABISELECT(352,172), "S6451C5");
    check_base_class_offset(lv, (S6451C9_nt*)(S6451C7_nt*), ABISELECT(136,72), "S6451C5");
    check_base_class_offset(lv, (S6451C7_nt*)(S6451C6_nt*), ABISELECT(112,60), "S6451C5");
    check_base_class_offset(lv, (S6451C7_nt*)(S6451C13_nt*), ABISELECT(112,60), "S6451C5");
    check_base_class_offset(lv, (S6451C3_nt*)(S6451C11_nt*)(S6451C6_nt*), ABISELECT(544,304), "S6451C5");
    check_base_class_offset(lv, (S6451C3_nt*)(S6451C14_nt*)(S6451C13_nt*), ABISELECT(544,304), "S6451C5");
    /*is_ambiguous_... S6451C5::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C3_nt*)(S6451C11_nt*), ABISELECT(544,304), "S6451C5");
    check_base_class_offset(lv, (S6451C11_nt*)(S6451C6_nt*), ABISELECT(8,4), "S6451C5");
    check_base_class_offset(lv, (S6451C6_nt*), ABISELECT(8,4), "S6451C5");
    /*is_ambiguous_... S6451C12_nt::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C10_nt*)(S6451C12_nt*), ABISELECT(560,312), "S6451C5");
    /*is_ambiguous_... S6451C12_nt::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C12_nt*), ABISELECT(560,312), "S6451C5");
    check_base_class_offset(lv, (S6451C8_nt*)(S6451C14_nt*)(S6451C13_nt*), ABISELECT(768,452), "S6451C5");
    check_base_class_offset(lv, (S6451C14_nt*)(S6451C13_nt*), ABISELECT(768,452), "S6451C5");
    /*is_ambiguous_... S6451C13_nt::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C10_nt*)(S6451C13_nt*), ABISELECT(784,456), "S6451C5");
    /*is_ambiguous_... S6451C13_nt::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C13_nt*), ABISELECT(784,456), "S6451C5");
    /*is_ambiguous_... S6451C13_nt::S6451C2_nt */ AMB_check_base_class_offset(lv, (S6451C2_nt*)(S6451C13_nt*), ABISELECT(976,588), "S6451C5");
    check_base_class_offset(lv, (S6451C13_nt*)(S6451C12_nt*), ABISELECT(768,452), "S6451C5");
    /*is_ambiguous_... S6451C12_nt::S6451C3_nt */ AMB_check_base_class_offset(lv, (S6451C3_nt*)(S6451C12_nt*), ABISELECT(752,444), "S6451C5");
    check_base_class_offset(lv, (S6451C11_nt*)(S6451C12_nt*), ABISELECT(1104,652), "S6451C5");
    check_base_class_offset(lv, (S6451C12_nt*), ABISELECT(560,312), "S6451C5");
    /*is_ambiguous_... S6451C5::S6451C8_nt */ AMB_check_base_class_offset(lv, (S6451C8_nt*), 0, "S6451C5");
    test_class_info(&lv, &cd_S6451C5);
    dp->~S6451C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6451C5(Test_S6451C5, "S6451C5", ABISELECT(1200,700));

#else // __cplusplus

extern void _ZN7S6451C5C1Ev();
extern void _ZN7S6451C5D2Ev();
Name_Map name_map_S6451C5[] = {
  NSPAIR(_ZN7S6451C5C1Ev),
  NSPAIR(_ZN7S6451C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
extern Class_Descriptor cd_S6451C7_nt;
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C11_nt;
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
extern Class_Descriptor cd_S6451C6_nt;
extern VTBL_ENTRY _ZTI10S6451C6_nt[];
extern  VTBL_ENTRY _ZTV10S6451C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C6_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C14_nt;
extern VTBL_ENTRY _ZTI11S6451C14_nt[];
extern  VTBL_ENTRY _ZTV11S6451C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C14_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C13_nt;
extern VTBL_ENTRY _ZTI11S6451C13_nt[];
extern  VTBL_ENTRY _ZTV11S6451C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C13_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C11_nt;
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
extern Class_Descriptor cd_S6451C12_nt;
extern VTBL_ENTRY _ZTI11S6451C12_nt[];
extern  VTBL_ENTRY _ZTV11S6451C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C12_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
static Base_Class bases_S6451C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C8_nt,    ABISELECT(176,92), //bcp->offset
    79, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(192,96), //bcp->offset
    89, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(320,160), //bcp->offset
    99, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(352,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(352,172), //bcp->offset
    109, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C9_nt,    ABISELECT(136,72), //bcp->offset
    68, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6451C7_nt,    ABISELECT(112,60), //bcp->offset
    34, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6451C3_nt,    ABISELECT(544,304), //bcp->offset
    129, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6451C11_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6451C6_nt,    ABISELECT(8,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C4_nt,    ABISELECT(560,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(560,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6451C8_nt,    ABISELECT(768,452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S6451C14_nt,    ABISELECT(768,452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    ABISELECT(784,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(784,456), //bcp->offset
    226, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(976,588), //bcp->offset
    237, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6451C13_nt,    ABISELECT(768,452), //bcp->offset
    174, //bcp->virtual_function_table_offset
    36, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S6451C3_nt,    ABISELECT(752,444), //bcp->offset
    170, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6451C11_nt,    ABISELECT(1104,652), //bcp->offset
    243, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S6451C12_nt,    ABISELECT(560,312), //bcp->offset
    135, //bcp->virtual_function_table_offset
    23, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6451C5[];
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN7S6451C5D1Ev();
extern void _ZN7S6451C5D0Ev();
extern void _ZN7S6451C53v52Ev();
extern void ABISELECT(_ZTv0_n72_N7S6451C5D1Ev,_ZTv0_n36_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn8_N7S6451C5D1Ev,_ZThn4_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6451C5D0Ev,_ZTv0_n36_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn8_N7S6451C5D0Ev,_ZThn4_N7S6451C5D0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
extern void _ZN10S6451C6_nt3v40Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N7S6451C5D1Ev,_ZTv0_n44_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S6451C5D1Ev,_ZThn60_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6451C5D0Ev,_ZTv0_n44_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S6451C5D0Ev,_ZThn60_N7S6451C5D0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN11S6451C12_nt3v51Ev();
extern void ABISELECT(_ZTv0_n168_N7S6451C5D1Ev,_ZTv0_n84_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn560_N7S6451C5D1Ev,_ZThn312_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N7S6451C5D0Ev,_ZTv0_n84_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn560_N7S6451C5D0Ev,_ZThn312_N7S6451C5D0Ev)() __attribute__((weak));
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZTv0_n184_N7S6451C5D1Ev,_ZTv0_n92_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn768_N7S6451C5D1Ev,_ZThn452_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N7S6451C5D0Ev,_ZTv0_n92_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn768_N7S6451C5D0Ev,_ZThn452_N7S6451C5D0Ev)() __attribute__((weak));
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void ABISELECT(_ZTv0_n48_N7S6451C5D1Ev,_ZTv0_n24_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn1104_N7S6451C5D1Ev,_ZThn652_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6451C5D0Ev,_ZTv0_n24_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn1104_N7S6451C5D0Ev,_ZThn652_N7S6451C5D0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY vtc_S6451C5[] = {
  ABISELECT(1104,652),
  ABISELECT(768,452),
  ABISELECT(560,312),
  ABISELECT(544,304),
  ABISELECT(352,172),
  ABISELECT(320,160),
  ABISELECT(192,96),
  ABISELECT(176,92),
  ABISELECT(112,60),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN7S6451C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6451C5D0Ev,
  (VTBL_ENTRY)&_ZN7S6451C53v52Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(184,92),
  ABISELECT(168,88),
  ABISELECT(104,56),
  ABISELECT(536,300),
  ABISELECT(312,156),
  ABISELECT(344,168),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6451C5D1Ev,_ZTv0_n36_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6451C5D0Ev,_ZTv0_n36_N7S6451C5D0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S6451C6_nt3v40Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  0,
  0,
  0,
  0,
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6451C5D1Ev,_ZTv0_n44_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6451C5D0Ev,_ZTv0_n44_N7S6451C5D0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-320,-160),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-172),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  0,
  0,
  ABISELECT(-544,-304),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  ABISELECT(192,132),
  ABISELECT(192,132),
  ABISELECT(-560,-312),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(544,340),
  ABISELECT(-208,-140),
  ABISELECT(-240,-152),
  ABISELECT(-368,-216),
  ABISELECT(-384,-220),
  ABISELECT(-448,-252),
  ABISELECT(-16,-8),
  ABISELECT(208,140),
  ABISELECT(-560,-312),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_nt3v51Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N7S6451C5D1Ev,_ZTv0_n84_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N7S6451C5D0Ev,_ZTv0_n84_N7S6451C5D0Ev),
  ABISELECT(-752,-444),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(-768,-452),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-280),
  ABISELECT(-448,-292),
  ABISELECT(-576,-356),
  ABISELECT(-592,-360),
  ABISELECT(-656,-392),
  ABISELECT(-224,-148),
  ABISELECT(-768,-452),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N7S6451C5D1Ev,_ZTv0_n92_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N7S6451C5D0Ev,_ZTv0_n92_N7S6451C5D0Ev),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  ABISELECT(-976,-588),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  ABISELECT(-1104,-652),
  ABISELECT(-560,-348),
  ABISELECT(-784,-492),
  ABISELECT(-752,-480),
  ABISELECT(-1104,-652),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6451C5D1Ev,_ZTv0_n24_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6451C5D0Ev,_ZTv0_n24_N7S6451C5D0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern VTBL_ENTRY _ZTV7S6451C5[];
extern void _ZN10S6451C6_ntD1Ev();
extern void _ZN10S6451C6_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
extern void _ZN10S6451C6_nt3v40Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C6_nt__7S6451C5[] = {
  ABISELECT(184,92),
  ABISELECT(168,88),
  ABISELECT(104,56),
  ABISELECT(536,300),
  ABISELECT(312,156),
  ABISELECT(344,168),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S6451C6_nt3v40Ev,
};
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt10S6451C6_nt__7S6451C5[] = {
  ABISELECT(536,300),
  ABISELECT(312,156),
  ABISELECT(344,168),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C11_nt10S6451C6_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-344,-168),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__11S6451C11_nt10S6451C6_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-312,-156),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C11_nt10S6451C6_nt__7S6451C5[] = {
  0,
  0,
  ABISELECT(-536,-300),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N10S6451C6_ntD1Ev,_ZTv0_n44_N10S6451C6_ntD1Ev)();
extern void ABISELECT(_ZThn104_N10S6451C6_ntD1Ev,_ZThn56_N10S6451C6_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N10S6451C6_ntD0Ev,_ZTv0_n44_N10S6451C6_ntD0Ev)();
extern void ABISELECT(_ZThn104_N10S6451C6_ntD0Ev,_ZThn56_N10S6451C6_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__10S6451C6_nt__7S6451C5[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-56),
  0,
  0,
  0,
  0,
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N10S6451C6_ntD1Ev,_ZTv0_n44_N10S6451C6_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N10S6451C6_ntD0Ev,_ZTv0_n44_N10S6451C6_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C6_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__10S6451C6_nt__7S6451C5[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C6_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C6_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-312,-156),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C6_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-344,-168),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__A1__10S6451C6_nt__7S6451C5[] = {
  0,
  0,
  ABISELECT(-536,-300),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__7S6451C5[] = {
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__7S6451C5[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-184,-88),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C7_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt__7S6451C5[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C7_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-208,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C7_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-112),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN11S6451C12_nt3v51Ev();
extern void _ZN11S6451C12_ntD1Ev();
extern void _ZN11S6451C12_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C12_nt__7S6451C5[] = {
  ABISELECT(544,340),
  ABISELECT(-208,-140),
  ABISELECT(-240,-152),
  ABISELECT(-368,-216),
  ABISELECT(-384,-220),
  ABISELECT(-448,-252),
  ABISELECT(-16,-8),
  ABISELECT(208,140),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_nt3v51Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_ntD0Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn208_N11S6451C12_ntD1Ev,_ZThn140_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn208_N11S6451C12_ntD0Ev,_ZThn140_N11S6451C12_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__11S6451C12_nt__7S6451C5[] = {
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(-208,-140),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-280),
  ABISELECT(-448,-292),
  ABISELECT(-576,-356),
  ABISELECT(-592,-360),
  ABISELECT(-656,-392),
  ABISELECT(-224,-148),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev),
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C12_nt__7S6451C5[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt11S6451C13_nt__A1__11S6451C12_nt__7S6451C5[] = {
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt11S6451C13_nt__11S6451C12_nt__7S6451C5[] = {
  ABISELECT(-416,-276),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C12_nt__7S6451C5[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(448,252),
  0,
  0,
  0,
  0,
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(448,252),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__A1__11S6451C12_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(384,220),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C12_nt__7S6451C5[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(424,240),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C12_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(368,216),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A3__11S6451C12_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(240,152),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__A2__11S6451C12_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(208,140),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn544_N11S6451C12_ntD1Ev,_ZThn340_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn544_N11S6451C12_ntD0Ev,_ZThn340_N11S6451C12_ntD0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__11S6451C12_nt__7S6451C5[] = {
  0,
  ABISELECT(-544,-340),
  ABISELECT(-560,-348),
  ABISELECT(-784,-492),
  ABISELECT(-752,-480),
  ABISELECT(-544,-340),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void _ZN11S6451C13_ntD1Ev();
extern void _ZN11S6451C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__7S6451C5[] = {
  ABISELECT(-416,-280),
  ABISELECT(-448,-292),
  ABISELECT(-576,-356),
  ABISELECT(-592,-360),
  ABISELECT(-656,-392),
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD0Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C14_nt11S6451C13_nt__7S6451C5[] = {
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__7S6451C5[] = {
  0,
  0,
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C13_nt__7S6451C5[] = {
  0,
  0,
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev)();
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C13_nt__7S6451C5[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(656,392),
  0,
  0,
  0,
  0,
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(656,392),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(592,360),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__7S6451C5[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(632,380),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(576,356),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(448,292),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(416,280),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__A1__7S6451C5[] = {
  ABISELECT(-560,-348),
  ABISELECT(-784,-492),
  ABISELECT(-752,-480),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C11_nt__A1__7S6451C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(752,480),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__A1__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(784,492),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C11_nt__A1__7S6451C5[] = {
  0,
  0,
  ABISELECT(560,348),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
static  VTT_ENTRY vtt_S6451C5[] = {
  {&(_ZTV7S6451C5[12]),  12,253},
  {&(_ZTV7S6451C5[30]),  30,253},
  {&(_ZTV7S6451C5[56]),  56,253},
  {&(_ZTV7S6451C5[85]),  85,253},
  {&(_ZTV7S6451C5[74]),  74,253},
  {&(_ZTV7S6451C5[95]),  95,253},
  {&(_ZTV7S6451C5[105]),  105,253},
  {&(_ZTV7S6451C5[120]),  120,253},
  {&(_ZTV7S6451C5[133]),  133,253},
  {&(_ZTV7S6451C5[158]),  158,253},
  {&(_ZTV7S6451C5[210]),  210,253},
  {&(_ZTV7S6451C5[228]),  228,253},
  {&(_ZTV7S6451C5[239]),  239,253},
  {&(_ZTV7S6451C5[172]),  172,253},
  {&(_ZTV7S6451C5[250]),  250,253},
  {&(_tg__ZTV10S6451C6_nt__7S6451C5[8]),  8,12},
  {&(_tg__ZTV11S6451C11_nt10S6451C6_nt__7S6451C5[5]),  5,8},
  {&(_tg__ZTV11S6451C10_nt__11S6451C11_nt10S6451C6_nt__7S6451C5[11]),  11,20},
  {&(_tg__ZTV10S6451C4_nt__A1__11S6451C11_nt10S6451C6_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C11_nt10S6451C6_nt__7S6451C5[4]),  4,6},
  {&(_tg__ZTV10S6451C7_nt__10S6451C6_nt__7S6451C5[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__10S6451C6_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__10S6451C6_nt__7S6451C5[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C6_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C6_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C6_nt__7S6451C5[11]),  11,20},
  {&(_tg__ZTV10S6451C3_nt__A1__10S6451C6_nt__7S6451C5[4]),  4,6},
  {&(_tg__ZTV10S6451C7_nt__7S6451C5[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__7S6451C5[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__7S6451C5[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__10S6451C7_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt__7S6451C5[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C7_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C7_nt__7S6451C5[11]),  11,20},
  {&(_tg__ZTV11S6451C12_nt__7S6451C5[10]),  10,22},
  {&(_tg__ZTV11S6451C13_nt__11S6451C12_nt__7S6451C5[36]),  36,52},
  {&(_tg__ZTV10S6451C3_nt__11S6451C12_nt__7S6451C5[4]),  4,6},
  {&(_tg__ZTV11S6451C10_nt11S6451C13_nt__A1__11S6451C12_nt__7S6451C5[2]),  2,11},
  {&(_tg__ZTV10S6451C2_nt11S6451C13_nt__11S6451C12_nt__7S6451C5[2]),  2,6},
  {&(_tg__ZTV10S6451C7_nt__11S6451C12_nt__7S6451C5[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__A1__11S6451C12_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C12_nt__7S6451C5[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C12_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A3__11S6451C12_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__A2__11S6451C12_nt__7S6451C5[11]),  11,20},
  {&(_tg__ZTV11S6451C11_nt__11S6451C12_nt__7S6451C5[7]),  7,10},
  {&(_tg__ZTV11S6451C13_nt__7S6451C5[8]),  8,24},
  {&(_tg__ZTV11S6451C14_nt11S6451C13_nt__7S6451C5[3]),  3,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__7S6451C5[4]),  4,6},
  {&(_tg__ZTV10S6451C3_nt__11S6451C13_nt__7S6451C5[4]),  4,6},
  {&(_tg__ZTV10S6451C7_nt__11S6451C13_nt__7S6451C5[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__7S6451C5[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__7S6451C5[11]),  11,20},
  {&(_tg__ZTV11S6451C11_nt__A1__7S6451C5[5]),  5,8},
  {&(_tg__ZTV11S6451C10_nt__11S6451C11_nt__A1__7S6451C5[11]),  11,20},
  {&(_tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__A1__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C11_nt__A1__7S6451C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S6451C5[];
extern  VTBL_ENTRY _ZTV7S6451C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6451C5[];
static VTBL_ENTRY alt_thunk_names45[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N11S6451C12_ntD0Ev,_ZThn340_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N11S6451C12_ntD1Ev,_ZThn340_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N11S6451C12_ntD0Ev,_ZThn140_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N11S6451C12_ntD1Ev,_ZThn140_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N10S6451C6_ntD0Ev,_ZTv0_n44_N10S6451C6_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N10S6451C6_ntD0Ev,_ZThn56_N10S6451C6_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N10S6451C6_ntD1Ev,_ZTv0_n44_N10S6451C6_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N10S6451C6_ntD1Ev,_ZThn56_N10S6451C6_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6451C5D0Ev,_ZTv0_n24_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N7S6451C5D0Ev,_ZThn652_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6451C5D1Ev,_ZTv0_n24_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N7S6451C5D1Ev,_ZThn652_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N7S6451C5D0Ev,_ZTv0_n92_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N7S6451C5D0Ev,_ZThn452_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N7S6451C5D1Ev,_ZTv0_n92_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N7S6451C5D1Ev,_ZThn452_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N7S6451C5D0Ev,_ZTv0_n84_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S6451C5D0Ev,_ZThn312_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N7S6451C5D1Ev,_ZTv0_n84_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S6451C5D1Ev,_ZThn312_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6451C5D0Ev,_ZTv0_n44_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6451C5D0Ev,_ZThn60_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6451C5D1Ev,_ZTv0_n44_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6451C5D1Ev,_ZThn60_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6451C5D0Ev,_ZTv0_n36_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S6451C5D0Ev,_ZThn4_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6451C5D1Ev,_ZTv0_n36_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S6451C5D1Ev,_ZThn4_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6451C5 = {  "S6451C5", // class name
  bases_S6451C5, 24,
  &(vtc_S6451C5[0]), // expected_vtbl_contents
  &(vtt_S6451C5[0]), // expected_vtt_contents
  ABISELECT(1200,700), // object size
  NSPAIRA(_ZTI7S6451C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6451C5),253, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6451C5),64, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names45,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C17_nt  : virtual S6451C8_nt , S6451C2_nt , virtual S6451C4_nt , S6451C7_nt , S6451C10_nt {
  virtual void  v53(); // _ZN11S6451C17_nt3v53Ev
  virtual void  v54(); // _ZN11S6451C17_nt3v54Ev
  ~S6451C17_nt(); // tgen
  S6451C17_nt(); // tgen
};
//SIG(-1 S6451C17_nt) C1{ VBC2{ v3 v4 v5 v6} BC3{ v7 v8 v9 v10 Fl FC4{ v15 v16 Fc} Fl[9] FD} VBC5{ v11 v12 v13 v14 Fp Fl} BC6{ VBC2 BC5 BC7{ BC4 VBC2 VBC3 VBC5 VBC8{ BC5 v17 v18 v19 v20 v21 FC4 Fl FD[9]} v22 v23 v24 Fl} vd v25 v26 v27 v28 v29 v30 Fs:16 Fp} BC8 v1 v2}


void  S6451C17_nt ::v53(){vfunc_called(this, "_ZN11S6451C17_nt3v53Ev");}
void  S6451C17_nt ::v54(){vfunc_called(this, "_ZN11S6451C17_nt3v54Ev");}
S6451C17_nt ::~S6451C17_nt(){ note_dtor("S6451C17_nt", this);} // tgen
S6451C17_nt ::S6451C17_nt(){ note_ctor("S6451C17_nt", this);} // tgen

//skip512 S6451C17_nt

#else // __cplusplus

extern void _ZN11S6451C17_ntC1Ev();
extern void _ZN11S6451C17_ntD1Ev();
Name_Map name_map_S6451C17_nt[] = {
  NSPAIR(_ZN11S6451C17_ntC1Ev),
  NSPAIR(_ZN11S6451C17_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
extern Class_Descriptor cd_S6451C7_nt;
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
static Base_Class bases_S6451C17_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C8_nt,    ABISELECT(384,228), //bcp->offset
    54, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C4_nt,    ABISELECT(392,232), //bcp->offset
    64, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C4_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(416,244), //bcp->offset
    74, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(544,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(544,308), //bcp->offset
    84, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6451C9_nt,    ABISELECT(152,76), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6451C7_nt,    ABISELECT(128,64), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C4_nt,    ABISELECT(192,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(192,96), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S6451C17_nt[];
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN11S6451C17_nt3v53Ev();
extern void _ZN11S6451C17_nt3v54Ev();
extern void _ZN11S6451C17_ntD1Ev();
extern void _ZN11S6451C17_ntD0Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZThn128_N11S6451C17_ntD1Ev,_ZThn64_N11S6451C17_ntD1Ev)();
extern void ABISELECT(_ZThn128_N11S6451C17_ntD0Ev,_ZThn64_N11S6451C17_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY vtc_S6451C17_nt[] = {
  ABISELECT(544,308),
  ABISELECT(416,244),
  ABISELECT(392,232),
  ABISELECT(384,228),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v53Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v54Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_ntD0Ev,
  ABISELECT(416,244),
  ABISELECT(264,168),
  ABISELECT(288,180),
  ABISELECT(256,164),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C17_ntD1Ev,_ZThn64_N11S6451C17_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C17_ntD0Ev,_ZThn64_N11S6451C17_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(392,232),
  ABISELECT(240,156),
  ABISELECT(264,168),
  ABISELECT(232,152),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-228),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-392,-232),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-244),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-544,-308),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern VTBL_ENTRY _ZTV11S6451C17_nt[];
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C17_nt[] = {
  ABISELECT(416,244),
  ABISELECT(264,168),
  ABISELECT(288,180),
  ABISELECT(256,164),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C17_nt[] = {
  ABISELECT(392,232),
  ABISELECT(240,156),
  ABISELECT(264,168),
  ABISELECT(232,152),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__11S6451C17_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-232,-152),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__11S6451C17_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-264,-168),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__11S6451C17_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__11S6451C17_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-392,-232),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C7_nt__11S6451C17_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-256,-164),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt__11S6451C17_nt[] = {
  ABISELECT(392,232),
  ABISELECT(240,156),
  ABISELECT(264,168),
  ABISELECT(232,152),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C7_nt__11S6451C17_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__11S6451C17_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-264,-168),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C7_nt__11S6451C17_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-244),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
static  VTT_ENTRY vtt_S6451C17_nt[] = {
  {&(_ZTV11S6451C17_nt[6]),  6,104},
  {&(_tg__ZTV10S6451C7_nt__11S6451C17_nt[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C17_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__11S6451C17_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__11S6451C17_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__11S6451C17_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__11S6451C17_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__10S6451C7_nt__11S6451C17_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt__11S6451C17_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C7_nt__11S6451C17_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__11S6451C17_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C7_nt__11S6451C17_nt[11]),  11,20},
  {&(_ZTV11S6451C17_nt[60]),  60,104},
  {&(_ZTV11S6451C17_nt[70]),  70,104},
  {&(_ZTV11S6451C17_nt[20]),  20,104},
  {&(_ZTV11S6451C17_nt[38]),  38,104},
  {&(_ZTV11S6451C17_nt[80]),  80,104},
  {&(_ZTV11S6451C17_nt[95]),  95,104},
};
extern VTBL_ENTRY _ZTI11S6451C17_nt[];
VTBL_ENTRY *P__ZTI11S6451C17_nt = _ZTI11S6451C17_nt; 
extern  VTBL_ENTRY _ZTV11S6451C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C17_nt[];
Class_Descriptor cd_S6451C17_nt = {  "S6451C17_nt", // class name
  bases_S6451C17_nt, 12,
  &(vtc_S6451C17_nt[0]), // expected_vtbl_contents
  &(vtt_S6451C17_nt[0]), // expected_vtt_contents
  ABISELECT(736,440), // object size
  NSPAIRA(_ZTI11S6451C17_nt),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV11S6451C17_nt),104, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S6451C17_nt),18, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C16_nt  : virtual S6451C4_nt , S6451C17_nt , virtual S6451C12_nt , S6451C2_nt , S6451C11_nt {
  ::S6451C7_nt s6451c16f0;
  virtual  ~S6451C16_nt(); // _ZN11S6451C16_ntD2Ev
  virtual void  v55(); // _ZN11S6451C16_nt3v55Ev
  virtual void  v56(); // _ZN11S6451C16_nt3v56Ev
  virtual void  v57(); // _ZN11S6451C16_nt3v57Ev
  virtual void  v58(); // _ZN11S6451C16_nt3v58Ev
  S6451C16_nt(); // tgen
};
//SIG(-1 S6451C16_nt) C1{ VBC2{ v5 v6 v7 v8 Fp Fl} BC3{ VBC4{ v9 v10 v11 v12} BC5{ v13 v14 v15 v16 Fl FC6{ v17 v18 Fc} Fl[9] FD} VBC2 BC7{ VBC4 BC2 BC8{ BC6 VBC4 VBC5 VBC2 VBC9{ BC2 v19 v20 v21 v22 v23 FC6 Fl FD[9]} v24 v25 v26 Fl} vd v27 v28 v29 v30 v31 v32 Fs:16 Fp} BC9 v33 v34} VBC10{ BC9 VBC11{ BC12{ BC4 VBC6 v35 v36 v37} BC9 BC5 VBC7 v38 v39 v40 v41 v42 v43 v44} BC6 VBC13{ VBC9 VBC2 VBC6 vd v45 Fp[10] FL:19} v46 FC14{} Fc:6} BC5 BC13 vd v1 v2 v3 v4 FC7}


 S6451C16_nt ::~S6451C16_nt(){ note_dtor("S6451C16_nt", this);}
void  S6451C16_nt ::v55(){vfunc_called(this, "_ZN11S6451C16_nt3v55Ev");}
void  S6451C16_nt ::v56(){vfunc_called(this, "_ZN11S6451C16_nt3v56Ev");}
void  S6451C16_nt ::v57(){vfunc_called(this, "_ZN11S6451C16_nt3v57Ev");}
void  S6451C16_nt ::v58(){vfunc_called(this, "_ZN11S6451C16_nt3v58Ev");}
S6451C16_nt ::S6451C16_nt(){ note_ctor("S6451C16_nt", this);} // tgen

//skip512 S6451C16_nt

#else // __cplusplus

extern void _ZN11S6451C16_ntC1Ev();
extern void _ZN11S6451C16_ntD2Ev();
Name_Map name_map_S6451C16_nt[] = {
  NSPAIR(_ZN11S6451C16_ntC1Ev),
  NSPAIR(_ZN11S6451C16_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
extern Class_Descriptor cd_S6451C7_nt;
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C17_nt;
extern VTBL_ENTRY _ZTI11S6451C17_nt[];
extern  VTBL_ENTRY _ZTV11S6451C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C17_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C14_nt;
extern VTBL_ENTRY _ZTI11S6451C14_nt[];
extern  VTBL_ENTRY _ZTV11S6451C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C14_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
extern Class_Descriptor cd_S6451C7_nt;
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
extern Class_Descriptor cd_S6451C13_nt;
extern VTBL_ENTRY _ZTI11S6451C13_nt[];
extern  VTBL_ENTRY _ZTV11S6451C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C13_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C11_nt;
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
extern Class_Descriptor cd_S6451C12_nt;
extern VTBL_ENTRY _ZTI11S6451C12_nt[];
extern  VTBL_ENTRY _ZTV11S6451C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C12_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C11_nt;
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
static Base_Class bases_S6451C16_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C4_nt,    ABISELECT(1040,584), //bcp->offset
    77, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C8_nt,    ABISELECT(1064,596), //bcp->offset
    87, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6451C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(1072,600), //bcp->offset
    97, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(1200,664), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(1200,664), //bcp->offset
    107, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6451C9_nt,    ABISELECT(152,76), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6451C7_nt,    ABISELECT(128,64), //bcp->offset
    23, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    ABISELECT(192,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(192,96), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6451C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C4_nt,    ABISELECT(1392,796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(1392,796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S6451C8_nt,    ABISELECT(1600,936), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(1936,1136), //bcp->offset
    235, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S6451C14_nt,    ABISELECT(1600,936), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    ABISELECT(1616,940), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(1616,940), //bcp->offset
    218, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(1808,1072), //bcp->offset
    229, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    ABISELECT(1952,1144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(1976,1156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S6451C9_nt,    ABISELECT(1976,1156), //bcp->offset
    275, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6451C7_nt,    ABISELECT(1952,1144), //bcp->offset
    241, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S6451C13_nt,    ABISELECT(1600,936), //bcp->offset
    166, //bcp->virtual_function_table_offset
    36, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S6451C3_nt,    ABISELECT(1584,928), //bcp->offset
    162, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S6451C11_nt,    ABISELECT(2016,1176), //bcp->offset
    286, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S6451C12_nt,    ABISELECT(1392,796), //bcp->offset
    127, //bcp->virtual_function_table_offset
    23, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C2_nt,    ABISELECT(384,228), //bcp->offset
    63, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C11_nt,    ABISELECT(512,292), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S6451C16_nt[];
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN11S6451C17_nt3v53Ev();
extern void _ZN11S6451C17_nt3v54Ev();
extern void _ZN11S6451C16_ntD1Ev();
extern void _ZN11S6451C16_ntD0Ev();
extern void _ZN11S6451C16_nt3v55Ev();
extern void _ZN11S6451C16_nt3v56Ev();
extern void _ZN11S6451C16_nt3v57Ev();
extern void _ZN11S6451C16_nt3v58Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZThn128_N11S6451C16_ntD1Ev,_ZThn64_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZThn128_N11S6451C16_ntD0Ev,_ZThn64_N11S6451C16_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void ABISELECT(_ZThn512_N11S6451C16_ntD1Ev,_ZThn292_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZThn512_N11S6451C16_ntD0Ev,_ZThn292_N11S6451C16_ntD0Ev)();
extern void _ZN11S6451C11_nt3v39Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN11S6451C12_nt3v51Ev();
extern void ABISELECT(_ZTv0_n168_N11S6451C16_ntD1Ev,_ZTv0_n84_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZThn1392_N11S6451C16_ntD1Ev,_ZThn796_N11S6451C16_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N11S6451C16_ntD0Ev,_ZTv0_n84_N11S6451C16_ntD0Ev)();
extern void ABISELECT(_ZThn1392_N11S6451C16_ntD0Ev,_ZThn796_N11S6451C16_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZTv0_n184_N11S6451C16_ntD1Ev,_ZTv0_n92_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZThn1600_N11S6451C16_ntD1Ev,_ZThn936_N11S6451C16_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N11S6451C16_ntD0Ev,_ZTv0_n92_N11S6451C16_ntD0Ev)();
extern void ABISELECT(_ZThn1600_N11S6451C16_ntD0Ev,_ZThn936_N11S6451C16_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C16_ntD1Ev,_ZTv0_n44_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZThn1952_N11S6451C16_ntD1Ev,_ZThn1144_N11S6451C16_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N11S6451C16_ntD0Ev,_ZTv0_n44_N11S6451C16_ntD0Ev)();
extern void ABISELECT(_ZThn1952_N11S6451C16_ntD0Ev,_ZThn1144_N11S6451C16_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void ABISELECT(_ZTv0_n48_N11S6451C16_ntD1Ev,_ZTv0_n24_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZThn2016_N11S6451C16_ntD1Ev,_ZThn1176_N11S6451C16_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N11S6451C16_ntD0Ev,_ZTv0_n24_N11S6451C16_ntD0Ev)();
extern void ABISELECT(_ZThn2016_N11S6451C16_ntD0Ev,_ZThn1176_N11S6451C16_ntD0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY vtc_S6451C16_nt[] = {
  ABISELECT(2016,1176),
  ABISELECT(1952,1144),
  ABISELECT(1936,1136),
  ABISELECT(1600,936),
  ABISELECT(1392,796),
  ABISELECT(1200,664),
  ABISELECT(1072,600),
  ABISELECT(1040,584),
  ABISELECT(1064,596),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v53Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v54Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v55Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v56Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v57Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v58Ev,
  ABISELECT(1072,600),
  ABISELECT(912,520),
  ABISELECT(944,536),
  ABISELECT(936,532),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C16_ntD1Ev,_ZThn64_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C16_ntD0Ev,_ZThn64_N11S6451C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(1048,588),
  ABISELECT(888,508),
  ABISELECT(920,524),
  ABISELECT(912,520),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  ABISELECT(-384,-228),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  ABISELECT(1424,844),
  ABISELECT(528,292),
  ABISELECT(688,372),
  ABISELECT(-512,-292),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn512_N11S6451C16_ntD1Ev,_ZThn292_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn512_N11S6451C16_ntD0Ev,_ZThn292_N11S6451C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-1040,-584),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-1064,-596),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-1072,-600),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1200,-664),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  ABISELECT(192,132),
  ABISELECT(192,132),
  ABISELECT(-1392,-796),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(624,380),
  ABISELECT(-192,-132),
  ABISELECT(-352,-212),
  ABISELECT(-320,-196),
  ABISELECT(-328,-200),
  ABISELECT(560,348),
  ABISELECT(544,340),
  ABISELECT(208,140),
  ABISELECT(-1392,-796),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_nt3v51Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N11S6451C16_ntD1Ev,_ZTv0_n84_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N11S6451C16_ntD0Ev,_ZTv0_n84_N11S6451C16_ntD0Ev),
  ABISELECT(-1584,-928),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(-1600,-936),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-272),
  ABISELECT(-560,-352),
  ABISELECT(-528,-336),
  ABISELECT(-536,-340),
  ABISELECT(352,208),
  ABISELECT(336,200),
  ABISELECT(-1600,-936),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C16_ntD1Ev,_ZTv0_n92_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C16_ntD0Ev,_ZTv0_n92_N11S6451C16_ntD0Ev),
  ABISELECT(-1616,-940),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  ABISELECT(-1808,-1072),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  ABISELECT(-1936,-1136),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1952,-1144),
  0,
  0,
  0,
  0,
  ABISELECT(-752,-480),
  ABISELECT(-912,-560),
  ABISELECT(-880,-544),
  ABISELECT(-888,-548),
  ABISELECT(-1952,-1144),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C16_ntD1Ev,_ZTv0_n44_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C16_ntD0Ev,_ZTv0_n44_N11S6451C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(-776,-492),
  ABISELECT(-936,-572),
  ABISELECT(-904,-556),
  ABISELECT(-912,-560),
  ABISELECT(-1976,-1156),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  0,
  ABISELECT(-2016,-1176),
  ABISELECT(-80,-40),
  ABISELECT(-976,-592),
  ABISELECT(-816,-512),
  ABISELECT(-2016,-1176),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C16_ntD1Ev,_ZTv0_n24_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C16_ntD0Ev,_ZTv0_n24_N11S6451C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern VTBL_ENTRY _ZTV11S6451C16_nt[];
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN11S6451C17_nt3v53Ev();
extern void _ZN11S6451C17_nt3v54Ev();
extern void _ZN11S6451C17_ntD1Ev();
extern void _ZN11S6451C17_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C17_nt__11S6451C16_nt[] = {
  ABISELECT(1200,664),
  ABISELECT(1072,600),
  ABISELECT(1040,584),
  ABISELECT(1064,596),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v53Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v54Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_ntD0Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  ABISELECT(1072,600),
  ABISELECT(912,520),
  ABISELECT(944,536),
  ABISELECT(936,532),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  ABISELECT(1048,588),
  ABISELECT(888,508),
  ABISELECT(920,524),
  ABISELECT(912,520),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-912,-520),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-920,-524),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-888,-508),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1048,-588),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-936,-532),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  ABISELECT(1048,588),
  ABISELECT(888,508),
  ABISELECT(920,524),
  ABISELECT(912,520),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-944,-536),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-912,-520),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1072,-600),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1064,-596),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1040,-584),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZThn128_N11S6451C17_ntD1Ev,_ZThn64_N11S6451C17_ntD1Ev)();
extern void ABISELECT(_ZThn128_N11S6451C17_ntD0Ev,_ZThn64_N11S6451C17_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C17_nt__11S6451C16_nt[] = {
  ABISELECT(1072,600),
  ABISELECT(912,520),
  ABISELECT(944,536),
  ABISELECT(936,532),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C17_ntD1Ev,_ZThn64_N11S6451C17_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C17_ntD0Ev,_ZThn64_N11S6451C17_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C17_nt__11S6451C16_nt[] = {
  ABISELECT(1048,588),
  ABISELECT(888,508),
  ABISELECT(920,524),
  ABISELECT(912,520),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1072,-600),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1200,-664),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__A__11S6451C16_nt[] = {
  ABISELECT(1424,844),
  ABISELECT(528,292),
  ABISELECT(688,372),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C11_nt__A__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-688,-372),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__A__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-528,-292),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C11_nt__A__11S6451C16_nt[] = {
  0,
  0,
  ABISELECT(-1424,-844),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN11S6451C12_nt3v51Ev();
extern void _ZN11S6451C12_ntD1Ev();
extern void _ZN11S6451C12_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C12_nt__11S6451C16_nt[] = {
  ABISELECT(624,380),
  ABISELECT(-192,-132),
  ABISELECT(-352,-212),
  ABISELECT(-320,-196),
  ABISELECT(-328,-200),
  ABISELECT(560,348),
  ABISELECT(544,340),
  ABISELECT(208,140),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_nt3v51Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_ntD0Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn208_N11S6451C12_ntD1Ev,_ZThn140_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn208_N11S6451C12_ntD0Ev,_ZThn140_N11S6451C12_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__11S6451C12_nt__11S6451C16_nt[] = {
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(-208,-140),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-272),
  ABISELECT(-560,-352),
  ABISELECT(-528,-336),
  ABISELECT(-536,-340),
  ABISELECT(352,208),
  ABISELECT(336,200),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev),
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C12_nt__11S6451C16_nt[] = {
  0,
  0,
  ABISELECT(-544,-340),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt11S6451C13_nt__A1__11S6451C12_nt__11S6451C16_nt[] = {
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt11S6451C13_nt__11S6451C12_nt__11S6451C16_nt[] = {
  ABISELECT(-416,-276),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn560_N11S6451C12_ntD1Ev,_ZThn348_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn560_N11S6451C12_ntD0Ev,_ZThn348_N11S6451C12_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C12_nt__11S6451C16_nt[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-560,-348),
  0,
  0,
  0,
  0,
  ABISELECT(-752,-480),
  ABISELECT(-912,-560),
  ABISELECT(-880,-544),
  ABISELECT(-888,-548),
  ABISELECT(-560,-348),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__A1__11S6451C12_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(328,200),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C12_nt__11S6451C16_nt[] = {
  ABISELECT(-776,-492),
  ABISELECT(-936,-572),
  ABISELECT(-904,-556),
  ABISELECT(-912,-560),
  ABISELECT(-584,-360),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C12_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(320,196),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A3__11S6451C12_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(352,212),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__A2__11S6451C12_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(192,132),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn624_N11S6451C12_ntD1Ev,_ZThn380_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn624_N11S6451C12_ntD0Ev,_ZThn380_N11S6451C12_ntD0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__11S6451C12_nt__11S6451C16_nt[] = {
  0,
  ABISELECT(-624,-380),
  ABISELECT(-80,-40),
  ABISELECT(-976,-592),
  ABISELECT(-816,-512),
  ABISELECT(-624,-380),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void _ZN11S6451C13_ntD1Ev();
extern void _ZN11S6451C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__11S6451C16_nt[] = {
  ABISELECT(-400,-272),
  ABISELECT(-560,-352),
  ABISELECT(-528,-336),
  ABISELECT(-536,-340),
  ABISELECT(352,208),
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD0Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C14_nt11S6451C13_nt__11S6451C16_nt[] = {
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__11S6451C16_nt[] = {
  0,
  0,
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C13_nt__11S6451C16_nt[] = {
  0,
  0,
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev)();
extern void ABISELECT(_ZThn352_N11S6451C13_ntD1Ev,_ZThn208_N11S6451C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev)();
extern void ABISELECT(_ZThn352_N11S6451C13_ntD0Ev,_ZThn208_N11S6451C13_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C13_nt__11S6451C16_nt[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-208),
  0,
  0,
  0,
  0,
  ABISELECT(-752,-480),
  ABISELECT(-912,-560),
  ABISELECT(-880,-544),
  ABISELECT(-888,-548),
  ABISELECT(-352,-208),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(536,340),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__11S6451C16_nt[] = {
  ABISELECT(-776,-492),
  ABISELECT(-936,-572),
  ABISELECT(-904,-556),
  ABISELECT(-912,-560),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(528,336),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(560,352),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(400,272),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__A1__11S6451C16_nt[] = {
  ABISELECT(-752,-480),
  ABISELECT(-912,-560),
  ABISELECT(-880,-544),
  ABISELECT(-888,-548),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[] = {
  ABISELECT(-776,-492),
  ABISELECT(-936,-572),
  ABISELECT(-904,-556),
  ABISELECT(-912,-560),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(912,560),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(904,556),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(936,572),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(776,492),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C7_nt__A1__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(888,548),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt__A1__11S6451C16_nt[] = {
  ABISELECT(-776,-492),
  ABISELECT(-936,-572),
  ABISELECT(-904,-556),
  ABISELECT(-912,-560),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C7_nt__A1__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(880,544),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__A1__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(912,560),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C7_nt__A1__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(752,480),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__11S6451C16_nt[] = {
  ABISELECT(-80,-40),
  ABISELECT(-976,-592),
  ABISELECT(-816,-512),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C11_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(816,512),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(976,592),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C11_nt__11S6451C16_nt[] = {
  0,
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
static  VTT_ENTRY vtt_S6451C16_nt[] = {
  {&(_ZTV11S6451C16_nt[11]),  11,296},
  {&(_tg__ZTV11S6451C17_nt__11S6451C16_nt[6]),  6,14},
  {&(_tg__ZTV10S6451C7_nt11S6451C17_nt__11S6451C16_nt[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__11S6451C17_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__11S6451C17_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C7_nt__11S6451C17_nt__11S6451C16_nt[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C17_nt__11S6451C16_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C17_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__11S6451C17_nt__11S6451C16_nt[11]),  11,20},
  {&(_tg__ZTV11S6451C11_nt__A__11S6451C16_nt[5]),  5,8},
  {&(_tg__ZTV11S6451C10_nt__11S6451C11_nt__A__11S6451C16_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__A__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C11_nt__A__11S6451C16_nt[4]),  4,6},
  {&(_ZTV11S6451C16_nt[83]),  83,296},
  {&(_ZTV11S6451C16_nt[93]),  93,296},
  {&(_ZTV11S6451C16_nt[29]),  29,296},
  {&(_ZTV11S6451C16_nt[47]),  47,296},
  {&(_ZTV11S6451C16_nt[103]),  103,296},
  {&(_ZTV11S6451C16_nt[118]),  118,296},
  {&(_ZTV11S6451C16_nt[150]),  150,296},
  {&(_ZTV11S6451C16_nt[202]),  202,296},
  {&(_ZTV11S6451C16_nt[239]),  239,296},
  {&(_ZTV11S6451C16_nt[220]),  220,296},
  {&(_ZTV11S6451C16_nt[231]),  231,296},
  {&(_ZTV11S6451C16_nt[263]),  263,296},
  {&(_ZTV11S6451C16_nt[281]),  281,296},
  {&(_ZTV11S6451C16_nt[164]),  164,296},
  {&(_ZTV11S6451C16_nt[293]),  293,296},
  {&(_ZTV11S6451C16_nt[74]),  74,296},
  {&(_tg__ZTV11S6451C12_nt__11S6451C16_nt[10]),  10,22},
  {&(_tg__ZTV11S6451C13_nt__11S6451C12_nt__11S6451C16_nt[36]),  36,52},
  {&(_tg__ZTV10S6451C3_nt__11S6451C12_nt__11S6451C16_nt[4]),  4,6},
  {&(_tg__ZTV11S6451C10_nt11S6451C13_nt__A1__11S6451C12_nt__11S6451C16_nt[2]),  2,11},
  {&(_tg__ZTV10S6451C2_nt11S6451C13_nt__11S6451C12_nt__11S6451C16_nt[2]),  2,6},
  {&(_tg__ZTV10S6451C7_nt__11S6451C12_nt__11S6451C16_nt[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__A1__11S6451C12_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C12_nt__11S6451C16_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C12_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A3__11S6451C12_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__A2__11S6451C12_nt__11S6451C16_nt[11]),  11,20},
  {&(_tg__ZTV11S6451C11_nt__11S6451C12_nt__11S6451C16_nt[7]),  7,10},
  {&(_tg__ZTV11S6451C13_nt__11S6451C16_nt[8]),  8,24},
  {&(_tg__ZTV11S6451C14_nt11S6451C13_nt__11S6451C16_nt[3]),  3,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__11S6451C16_nt[4]),  4,6},
  {&(_tg__ZTV10S6451C3_nt__11S6451C13_nt__11S6451C16_nt[4]),  4,6},
  {&(_tg__ZTV10S6451C7_nt__11S6451C13_nt__11S6451C16_nt[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__11S6451C16_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__11S6451C16_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C7_nt__A1__11S6451C16_nt[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__10S6451C7_nt__A1__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt__A1__11S6451C16_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C7_nt__A1__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__A1__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C7_nt__A1__11S6451C16_nt[11]),  11,20},
  {&(_tg__ZTV11S6451C11_nt__11S6451C16_nt[5]),  5,8},
  {&(_tg__ZTV11S6451C10_nt__11S6451C11_nt__11S6451C16_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C11_nt__11S6451C16_nt[4]),  4,6},
};
extern VTBL_ENTRY _ZTI11S6451C16_nt[];
VTBL_ENTRY *P__ZTI11S6451C16_nt = _ZTI11S6451C16_nt; 
extern  VTBL_ENTRY _ZTV11S6451C16_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C16_nt[];
static VTBL_ENTRY alt_thunk_names46[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N11S6451C13_ntD0Ev,_ZThn208_N11S6451C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N11S6451C13_ntD1Ev,_ZThn208_N11S6451C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N11S6451C12_ntD0Ev,_ZThn380_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N11S6451C12_ntD1Ev,_ZThn380_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N11S6451C12_ntD0Ev,_ZThn348_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N11S6451C12_ntD1Ev,_ZThn348_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N11S6451C12_ntD0Ev,_ZThn140_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N11S6451C12_ntD1Ev,_ZThn140_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C16_ntD0Ev,_ZTv0_n24_N11S6451C16_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N11S6451C16_ntD0Ev,_ZThn1176_N11S6451C16_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C16_ntD1Ev,_ZTv0_n24_N11S6451C16_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N11S6451C16_ntD1Ev,_ZThn1176_N11S6451C16_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C16_ntD0Ev,_ZTv0_n44_N11S6451C16_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N11S6451C16_ntD0Ev,_ZThn1144_N11S6451C16_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C16_ntD1Ev,_ZTv0_n44_N11S6451C16_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N11S6451C16_ntD1Ev,_ZThn1144_N11S6451C16_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C16_ntD0Ev,_ZTv0_n92_N11S6451C16_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1600_N11S6451C16_ntD0Ev,_ZThn936_N11S6451C16_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C16_ntD1Ev,_ZTv0_n92_N11S6451C16_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1600_N11S6451C16_ntD1Ev,_ZThn936_N11S6451C16_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N11S6451C16_ntD0Ev,_ZTv0_n84_N11S6451C16_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N11S6451C16_ntD0Ev,_ZThn796_N11S6451C16_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N11S6451C16_ntD1Ev,_ZTv0_n84_N11S6451C16_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N11S6451C16_ntD1Ev,_ZThn796_N11S6451C16_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6451C16_nt = {  "S6451C16_nt", // class name
  bases_S6451C16_nt, 31,
  &(vtc_S6451C16_nt[0]), // expected_vtbl_contents
  &(vtt_S6451C16_nt[0]), // expected_vtt_contents
  ABISELECT(2112,1224), // object size
  NSPAIRA(_ZTI11S6451C16_nt),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV11S6451C16_nt),296, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S6451C16_nt),76, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names46,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C1  : S6451C2_nt , virtual S6451C4_nt , S6451C5 , virtual S6451C16_nt , S6451C13_nt {
  int s6451c1f0;
  short s6451c1f1;
  int s6451c1f2[2];
  virtual  ~S6451C1(); // _ZN7S6451C1D2Ev
  virtual void  v1(); // _ZN7S6451C12v1Ev
  virtual void  v2(); // _ZN7S6451C12v2Ev
  virtual void  v3(); // _ZN7S6451C12v3Ev
  virtual void  v4(); // _ZN7S6451C12v4Ev
  virtual void  v5(); // _ZN7S6451C12v5Ev
  virtual void  v6(); // _ZN7S6451C12v6Ev
  virtual void  v7(); // _ZN7S6451C12v7Ev
  virtual void  v8(); // _ZN7S6451C12v8Ev
  virtual void  v9(); // _ZN7S6451C12v9Ev
  virtual void  v10(); // _ZN7S6451C13v10Ev
  S6451C1(); // tgen
};
//SIG(1 S6451C1) C1{ BC2{ v11 v12 v13 v14 Fl FC3{ v23 v24 Fc} Fl[9] FD} VBC4{ v15 v16 v17 v18 Fp Fl} BC5{ VBC6{ VBC7{ VBC8{ v19 v20 v21 v22} BC4 BC9{ BC3 VBC8 VBC2 VBC4 VBC10{ BC4 v25 v26 v27 v28 v29 FC3 Fl FD[9]} v30 v31 v32 Fl} vd v33 v34 v35 v36 v37 v38 Fs:16 Fp} BC11{ VBC10 VBC4 VBC3 vd v39 Fp[10] FL:19} v40 FL} VBC12{ BC10 VBC13{ BC14{ BC8 VBC3 v41 v42 v43} BC10 BC2 VBC7 v44 v45 v46 v47 v48 v49 v50} BC3 VBC11 v51 FC15{} Fc:6} BC8 vd v52} VBC16{ VBC4 BC17{ VBC8 BC2 VBC4 BC7 BC10 v53 v54} VBC12 BC2 BC11 vd v55 v56 v57 v58 FC7} BC13 vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fi Fs Fi[2]}


 S6451C1 ::~S6451C1(){ note_dtor("S6451C1", this);}
void  S6451C1 ::v1(){vfunc_called(this, "_ZN7S6451C12v1Ev");}
void  S6451C1 ::v2(){vfunc_called(this, "_ZN7S6451C12v2Ev");}
void  S6451C1 ::v3(){vfunc_called(this, "_ZN7S6451C12v3Ev");}
void  S6451C1 ::v4(){vfunc_called(this, "_ZN7S6451C12v4Ev");}
void  S6451C1 ::v5(){vfunc_called(this, "_ZN7S6451C12v5Ev");}
void  S6451C1 ::v6(){vfunc_called(this, "_ZN7S6451C12v6Ev");}
void  S6451C1 ::v7(){vfunc_called(this, "_ZN7S6451C12v7Ev");}
void  S6451C1 ::v8(){vfunc_called(this, "_ZN7S6451C12v8Ev");}
void  S6451C1 ::v9(){vfunc_called(this, "_ZN7S6451C12v9Ev");}
void  S6451C1 ::v10(){vfunc_called(this, "_ZN7S6451C13v10Ev");}
S6451C1 ::S6451C1(){ note_ctor("S6451C1", this);} // tgen

static void Test_S6451C1()
{
  extern Class_Descriptor cd_S6451C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(171,392)];
    init_test(&cd_S6451C1, buf);
    S6451C1 *dp, &lv = *(dp=new (buf) S6451C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2720,1564), "sizeof(S6451C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6451C1)");
    /*is_ambiguous_... S6451C1::S6451C2_nt */ AMB_check_base_class_offset(lv, (S6451C2_nt*), 0, "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C4_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*), ABISELECT(496,284), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C7_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(496,284), "S6451C1");
    /*is_ambiguous_... S6451C11_nt::S6451C4_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C11_nt*)(S6451C6_nt*), ABISELECT(496,284), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C11_nt*), ABISELECT(496,284), "S6451C1");
    /*is_ambiguous_... S6451C16_nt::S6451C4_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C16_nt*), ABISELECT(496,284), "S6451C1");
    /*is_ambiguous_... S6451C17_nt::S6451C4_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(496,284), "S6451C1");
    /*is_ambiguous_... S6451C9_nt::S6451C4_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C9_nt*)(S6451C7_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(496,284), "S6451C1");
    /*is_ambiguous_... S6451C16_nt::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C11_nt*)(S6451C16_nt*), ABISELECT(496,284), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C7_nt */ AMB_check_base_class_offset(lv, (S6451C8_nt*)(S6451C7_nt*), ABISELECT(688,384), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C7_nt */ AMB_check_base_class_offset(lv, (S6451C8_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(688,384), "S6451C1");
    check_base_class_offset(lv, (S6451C8_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(688,384), "S6451C1");
    check_base_class_offset(lv, (S6451C8_nt*)(S6451C7_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(688,384), "S6451C1");
    check_base_class_offset(lv, (S6451C8_nt*)(S6451C9_nt*)(S6451C7_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(688,384), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C7_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C7_nt*), ABISELECT(624,352), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C7_nt */ AMB_check_base_class_offset(lv, (S6451C3_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(648,364), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C7_nt */ AMB_check_base_class_offset(lv, (S6451C2_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(704,388), "S6451C1");
    check_base_class_offset(lv, (S6451C2_nt*)(S6451C9_nt*)(S6451C7_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(704,388), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C10_nt*), ABISELECT(832,452), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C7_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(832,452), "S6451C1");
    check_base_class_offset(lv, (S6451C10_nt*)(S6451C11_nt*)(S6451C6_nt*), ABISELECT(832,452), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C11_nt*), ABISELECT(832,452), "S6451C1");
    check_base_class_offset(lv, (S6451C10_nt*)(S6451C9_nt*)(S6451C7_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(832,452), "S6451C1");
    /*is_ambiguous_... S6451C16_nt::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C11_nt*)(S6451C16_nt*), ABISELECT(832,452), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C7_nt */ AMB_check_base_class_offset(lv, (S6451C9_nt*)(S6451C7_nt*), ABISELECT(648,364), "S6451C1");
    check_base_class_offset(lv, (S6451C7_nt*)(S6451C6_nt*), ABISELECT(624,352), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C7_nt*)(S6451C13_nt*), ABISELECT(624,352), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C7_nt*)(S6451C13_nt*), ABISELECT(624,352), "S6451C1");
    check_base_class_offset(lv, (S6451C3_nt*)(S6451C11_nt*)(S6451C6_nt*), ABISELECT(1024,584), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C3_nt*)(S6451C14_nt*)(S6451C13_nt*), ABISELECT(1024,584), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C3_nt*)(S6451C11_nt*), ABISELECT(1024,584), "S6451C1");
    /*is_ambiguous_... S6451C16_nt::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C3_nt*)(S6451C11_nt*)(S6451C16_nt*), ABISELECT(1024,584), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C3_nt*)(S6451C14_nt*)(S6451C13_nt*), ABISELECT(1024,584), "S6451C1");
    check_base_class_offset(lv, (S6451C11_nt*)(S6451C6_nt*), ABISELECT(520,296), "S6451C1");
    check_base_class_offset(lv, (S6451C6_nt*)(S6451C5*), ABISELECT(520,296), "S6451C1");
    /*is_ambiguous_... S6451C12_nt::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C10_nt*)(S6451C12_nt*), ABISELECT(1040,592), "S6451C1");
    /*is_ambiguous_... S6451C12_nt::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C12_nt*), ABISELECT(1040,592), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C8_nt*)(S6451C14_nt*)(S6451C13_nt*), ABISELECT(1248,732), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C14_nt*)(S6451C13_nt*), ABISELECT(1248,732), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C10_nt*)(S6451C13_nt*), ABISELECT(1264,736), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C13_nt*), ABISELECT(1264,736), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C2_nt*)(S6451C13_nt*), ABISELECT(1456,868), "S6451C1");
    check_base_class_offset(lv, (S6451C13_nt*)(S6451C12_nt*), ABISELECT(1248,732), "S6451C1");
    /*is_ambiguous_... S6451C12_nt::S6451C3_nt */ AMB_check_base_class_offset(lv, (S6451C3_nt*)(S6451C12_nt*), ABISELECT(1232,724), "S6451C1");
    check_base_class_offset(lv, (S6451C11_nt*)(S6451C12_nt*), ABISELECT(1584,932), "S6451C1");
    check_base_class_offset(lv, (S6451C12_nt*)(S6451C5*), ABISELECT(1040,592), "S6451C1");
    check_base_class_offset(lv, (S6451C12_nt*)(S6451C16_nt*), ABISELECT(1040,592), "S6451C1");
    /*is_ambiguous_... S6451C5::S6451C8_nt */ AMB_check_base_class_offset(lv, (S6451C8_nt*)(S6451C5*), ABISELECT(128,64), "S6451C1");
    check_base_class_offset(lv, (S6451C5*), ABISELECT(128,64), "S6451C1");
    /*is_ambiguous_... S6451C17_nt::S6451C2_nt */ AMB_check_base_class_offset(lv, (S6451C2_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(1680,980), "S6451C1");
    /*is_ambiguous_... S6451C7_nt::S6451C4_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C7_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(1808,1044), "S6451C1");
    check_base_class_offset(lv, (S6451C3_nt*)(S6451C9_nt*)(S6451C7_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(1832,1056), "S6451C1");
    check_base_class_offset(lv, (S6451C9_nt*)(S6451C7_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(1832,1056), "S6451C1");
    check_base_class_offset(lv, (S6451C7_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(1808,1044), "S6451C1");
    /*is_ambiguous_... S6451C17_nt::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C10_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(1872,1076), "S6451C1");
    /*is_ambiguous_... S6451C17_nt::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(1872,1076), "S6451C1");
    check_base_class_offset(lv, (S6451C17_nt*)(S6451C16_nt*), ABISELECT(1680,980), "S6451C1");
    /*is_ambiguous_... S6451C16_nt::S6451C2_nt */ AMB_check_base_class_offset(lv, (S6451C2_nt*)(S6451C16_nt*), ABISELECT(2064,1208), "S6451C1");
    /*is_ambiguous_... S6451C16_nt::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C11_nt*)(S6451C16_nt*), ABISELECT(2192,1272), "S6451C1");
    check_base_class_offset(lv, (S6451C16_nt*), ABISELECT(1680,980), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C8_nt*)(S6451C14_nt*)(S6451C13_nt*), ABISELECT(144,68), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C14_nt*)(S6451C13_nt*), ABISELECT(144,68), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C10_nt*)(S6451C13_nt*), ABISELECT(160,72), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C13_nt*), ABISELECT(160,72), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C2_nt*)(S6451C13_nt*), ABISELECT(352,204), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C13_nt*), ABISELECT(144,68), "S6451C1");
    check_field_offset(lv, s6451c1f0, ABISELECT(480,268), "S6451C1.s6451c1f0");
    check_field_offset(lv, s6451c1f1, ABISELECT(484,272), "S6451C1.s6451c1f1");
    check_field_offset(lv, s6451c1f2, ABISELECT(488,276), "S6451C1.s6451c1f2");
    test_class_info(&lv, &cd_S6451C1);
    dp->~S6451C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6451C1(Test_S6451C1, "S6451C1", ABISELECT(2720,1564));

#else // __cplusplus

extern void _ZN7S6451C1C1Ev();
extern void _ZN7S6451C1D2Ev();
Name_Map name_map_S6451C1[] = {
  NSPAIR(_ZN7S6451C1C1Ev),
  NSPAIR(_ZN7S6451C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
extern Class_Descriptor cd_S6451C7_nt;
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C11_nt;
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
extern Class_Descriptor cd_S6451C6_nt;
extern VTBL_ENTRY _ZTI10S6451C6_nt[];
extern  VTBL_ENTRY _ZTV10S6451C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C6_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C14_nt;
extern VTBL_ENTRY _ZTI11S6451C14_nt[];
extern  VTBL_ENTRY _ZTV11S6451C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C14_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C13_nt;
extern VTBL_ENTRY _ZTI11S6451C13_nt[];
extern  VTBL_ENTRY _ZTV11S6451C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C13_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C11_nt;
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
extern Class_Descriptor cd_S6451C12_nt;
extern VTBL_ENTRY _ZTI11S6451C12_nt[];
extern  VTBL_ENTRY _ZTV11S6451C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C12_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C5;
extern VTBL_ENTRY _ZTI7S6451C5[];
extern  VTBL_ENTRY _ZTV7S6451C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6451C5[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
extern Class_Descriptor cd_S6451C7_nt;
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C17_nt;
extern VTBL_ENTRY _ZTI11S6451C17_nt[];
extern  VTBL_ENTRY _ZTV11S6451C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C17_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C11_nt;
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
extern Class_Descriptor cd_S6451C16_nt;
extern VTBL_ENTRY _ZTI11S6451C16_nt[];
extern  VTBL_ENTRY _ZTV11S6451C16_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C16_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C14_nt;
extern VTBL_ENTRY _ZTI11S6451C14_nt[];
extern  VTBL_ENTRY _ZTV11S6451C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C14_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C13_nt;
extern VTBL_ENTRY _ZTI11S6451C13_nt[];
extern  VTBL_ENTRY _ZTV11S6451C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C13_nt[];
static Base_Class bases_S6451C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C4_nt,    ABISELECT(496,284), //bcp->offset
    89, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C8_nt,    ABISELECT(688,384), //bcp->offset
    159, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(624,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(648,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(704,388), //bcp->offset
    169, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(832,452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(832,452), //bcp->offset
    179, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6451C9_nt,    ABISELECT(648,364), //bcp->offset
    148, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6451C7_nt,    ABISELECT(624,352), //bcp->offset
    114, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S6451C3_nt,    ABISELECT(1024,584), //bcp->offset
    199, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6451C11_nt,    ABISELECT(520,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6451C6_nt,    ABISELECT(520,296), //bcp->offset
    99, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(1040,592), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(1040,592), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S6451C8_nt,    ABISELECT(1248,732), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6451C14_nt,    ABISELECT(1248,732), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    ABISELECT(1264,736), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(1264,736), //bcp->offset
    296, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(1456,868), //bcp->offset
    307, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6451C13_nt,    ABISELECT(1248,732), //bcp->offset
    244, //bcp->virtual_function_table_offset
    36, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S6451C3_nt,    ABISELECT(1232,724), //bcp->offset
    240, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S6451C11_nt,    ABISELECT(1584,932), //bcp->offset
    313, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S6451C12_nt,    ABISELECT(1040,592), //bcp->offset
    205, //bcp->virtual_function_table_offset
    23, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S6451C8_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6451C5,    ABISELECT(128,64), //bcp->offset
    29, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C2_nt,    ABISELECT(1680,980), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    ABISELECT(1808,1044), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(1832,1056), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S6451C9_nt,    ABISELECT(1832,1056), //bcp->offset
    396, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S6451C7_nt,    ABISELECT(1808,1044), //bcp->offset
    378, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    ABISELECT(1872,1076), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(1872,1076), //bcp->offset
    407, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S6451C17_nt,    ABISELECT(1680,980), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(2064,1208), //bcp->offset
    418, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S6451C11_nt,    ABISELECT(2192,1272), //bcp->offset
    424, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S6451C16_nt,    ABISELECT(1680,980), //bcp->offset
    323, //bcp->virtual_function_table_offset
    43, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C8_nt,    ABISELECT(144,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S6451C14_nt,    ABISELECT(144,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    ABISELECT(160,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(160,72), //bcp->offset
    72, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(352,204), //bcp->offset
    83, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S6451C13_nt,    ABISELECT(144,68), //bcp->offset
    48, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6451C1[];
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN7S6451C1D1Ev();
extern void _ZN7S6451C1D0Ev();
extern void _ZN7S6451C12v1Ev();
extern void _ZN7S6451C12v2Ev();
extern void _ZN7S6451C12v3Ev();
extern void _ZN7S6451C12v4Ev();
extern void _ZN7S6451C12v5Ev();
extern void _ZN7S6451C12v6Ev();
extern void _ZN7S6451C12v7Ev();
extern void _ZN7S6451C12v8Ev();
extern void _ZN7S6451C12v9Ev();
extern void _ZN7S6451C13v10Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void ABISELECT(_ZThn128_N7S6451C1D1Ev,_ZThn64_N7S6451C1D1Ev)();
extern void ABISELECT(_ZThn128_N7S6451C1D0Ev,_ZThn64_N7S6451C1D0Ev)();
extern void _ZN7S6451C53v52Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZThn144_N7S6451C1D1Ev,_ZThn68_N7S6451C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S6451C1D0Ev,_ZThn68_N7S6451C1D0Ev)();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n72_N7S6451C1D1Ev,_ZTv0_n36_N7S6451C1D1Ev)();
extern void ABISELECT(_ZThn520_N7S6451C1D1Ev,_ZThn296_N7S6451C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6451C1D0Ev,_ZTv0_n36_N7S6451C1D0Ev)();
extern void ABISELECT(_ZThn520_N7S6451C1D0Ev,_ZThn296_N7S6451C1D0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
extern void _ZN10S6451C6_nt3v40Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N7S6451C1D1Ev,_ZTv0_n44_N7S6451C1D1Ev)();
extern void ABISELECT(_ZThn624_N7S6451C1D1Ev,_ZThn352_N7S6451C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6451C1D0Ev,_ZTv0_n44_N7S6451C1D0Ev)();
extern void ABISELECT(_ZThn624_N7S6451C1D0Ev,_ZThn352_N7S6451C1D0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN11S6451C12_nt3v51Ev();
extern void ABISELECT(_ZTv0_n168_N7S6451C1D1Ev,_ZTv0_n84_N7S6451C1D1Ev)();
extern void ABISELECT(_ZThn1040_N7S6451C1D1Ev,_ZThn592_N7S6451C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N7S6451C1D0Ev,_ZTv0_n84_N7S6451C1D0Ev)();
extern void ABISELECT(_ZThn1040_N7S6451C1D0Ev,_ZThn592_N7S6451C1D0Ev)() __attribute__((weak));
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZTv0_n184_N7S6451C1D1Ev,_ZTv0_n92_N7S6451C1D1Ev)();
extern void ABISELECT(_ZThn1248_N7S6451C1D1Ev,_ZThn732_N7S6451C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N7S6451C1D0Ev,_ZTv0_n92_N7S6451C1D0Ev)();
extern void ABISELECT(_ZThn1248_N7S6451C1D0Ev,_ZThn732_N7S6451C1D0Ev)() __attribute__((weak));
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void ABISELECT(_ZTv0_n48_N7S6451C1D1Ev,_ZTv0_n24_N7S6451C1D1Ev)();
extern void ABISELECT(_ZThn1584_N7S6451C1D1Ev,_ZThn932_N7S6451C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6451C1D0Ev,_ZTv0_n24_N7S6451C1D0Ev)();
extern void ABISELECT(_ZThn1584_N7S6451C1D0Ev,_ZThn932_N7S6451C1D0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN11S6451C17_nt3v53Ev();
extern void _ZN11S6451C17_nt3v54Ev();
extern void ABISELECT(_ZTv0_n144_N7S6451C1D1Ev,_ZTv0_n72_N7S6451C1D1Ev)();
extern void ABISELECT(_ZThn1680_N7S6451C1D1Ev,_ZThn980_N7S6451C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S6451C1D0Ev,_ZTv0_n72_N7S6451C1D0Ev)();
extern void ABISELECT(_ZThn1680_N7S6451C1D0Ev,_ZThn980_N7S6451C1D0Ev)() __attribute__((weak));
extern void _ZN11S6451C16_nt3v55Ev();
extern void _ZN11S6451C16_nt3v56Ev();
extern void _ZN11S6451C16_nt3v57Ev();
extern void _ZN11S6451C16_nt3v58Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTvn128_n144_N7S6451C1D1Ev,_ZTvn64_n72_N7S6451C1D1Ev)();
extern void ABISELECT(_ZTvn128_n144_N7S6451C1D0Ev,_ZTvn64_n72_N7S6451C1D0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void ABISELECT(_ZTvn512_n144_N7S6451C1D1Ev,_ZTvn292_n72_N7S6451C1D1Ev)();
extern void ABISELECT(_ZTvn512_n144_N7S6451C1D0Ev,_ZTvn292_n72_N7S6451C1D0Ev)();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY vtc_S6451C1[] = {
  ABISELECT(1680,980),
  ABISELECT(1584,932),
  ABISELECT(1248,732),
  ABISELECT(1040,592),
  ABISELECT(1024,584),
  ABISELECT(832,452),
  ABISELECT(704,388),
  ABISELECT(688,384),
  ABISELECT(624,352),
  ABISELECT(520,296),
  ABISELECT(496,284),
  0,
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN7S6451C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6451C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6451C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6451C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6451C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6451C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6451C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6451C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6451C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6451C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6451C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6451C13v10Ev,
  ABISELECT(1456,868),
  ABISELECT(1120,668),
  ABISELECT(912,528),
  ABISELECT(896,520),
  ABISELECT(704,388),
  ABISELECT(368,220),
  ABISELECT(576,324),
  ABISELECT(560,320),
  ABISELECT(496,288),
  ABISELECT(392,232),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N7S6451C1D1Ev,_ZThn64_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N7S6451C1D0Ev,_ZThn64_N7S6451C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6451C53v52Ev,
  ABISELECT(688,384),
  ABISELECT(352,216),
  ABISELECT(560,320),
  ABISELECT(544,316),
  ABISELECT(480,284),
  ABISELECT(880,516),
  ABISELECT(-144,-68),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N7S6451C1D1Ev,_ZThn68_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N7S6451C1D0Ev,_ZThn68_N7S6451C1D0Ev),
  ABISELECT(-160,-72),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-496,-284),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  ABISELECT(-520,-296),
  ABISELECT(184,92),
  ABISELECT(168,88),
  ABISELECT(104,56),
  ABISELECT(504,288),
  ABISELECT(-24,-12),
  ABISELECT(312,156),
  ABISELECT(-520,-296),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6451C1D1Ev,_ZTv0_n36_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6451C1D0Ev,_ZTv0_n36_N7S6451C1D0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S6451C6_nt3v40Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-624,-352),
  0,
  0,
  0,
  0,
  ABISELECT(208,100),
  ABISELECT(-128,-68),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(-624,-352),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6451C1D1Ev,_ZTv0_n44_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6451C1D0Ev,_ZTv0_n44_N7S6451C1D0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(184,88),
  ABISELECT(-152,-80),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-648,-364),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-688,-384),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-388),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-832,-452),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  0,
  0,
  ABISELECT(-1024,-584),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  ABISELECT(192,132),
  ABISELECT(192,132),
  ABISELECT(-1040,-592),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(544,340),
  ABISELECT(-208,-140),
  ABISELECT(-544,-308),
  ABISELECT(-336,-204),
  ABISELECT(-352,-208),
  ABISELECT(-416,-240),
  ABISELECT(-16,-8),
  ABISELECT(208,140),
  ABISELECT(-1040,-592),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_nt3v51Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N7S6451C1D1Ev,_ZTv0_n84_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N7S6451C1D0Ev,_ZTv0_n84_N7S6451C1D0Ev),
  ABISELECT(-1232,-724),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(-1248,-732),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-280),
  ABISELECT(-752,-448),
  ABISELECT(-544,-344),
  ABISELECT(-560,-348),
  ABISELECT(-624,-380),
  ABISELECT(-224,-148),
  ABISELECT(-1248,-732),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N7S6451C1D1Ev,_ZTv0_n92_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N7S6451C1D0Ev,_ZTv0_n92_N7S6451C1D0Ev),
  ABISELECT(-1264,-736),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  ABISELECT(-1456,-868),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  ABISELECT(-1584,-932),
  ABISELECT(-560,-348),
  ABISELECT(-1088,-648),
  ABISELECT(-752,-480),
  ABISELECT(-1584,-932),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6451C1D1Ev,_ZTv0_n24_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6451C1D0Ev,_ZTv0_n24_N7S6451C1D0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
  ABISELECT(512,292),
  0,
  0,
  0,
  0,
  ABISELECT(192,96),
  ABISELECT(192,96),
  ABISELECT(192,96),
  ABISELECT(192,96),
  ABISELECT(192,96),
  ABISELECT(152,76),
  ABISELECT(152,76),
  ABISELECT(152,76),
  ABISELECT(152,76),
  ABISELECT(152,76),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(-1680,-980),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-48),
  ABISELECT(-1056,-628),
  ABISELECT(-656,-396),
  ABISELECT(-432,-248),
  ABISELECT(-640,-388),
  ABISELECT(-848,-528),
  ABISELECT(-976,-592),
  ABISELECT(-1184,-696),
  ABISELECT(-992,-596),
  ABISELECT(-1680,-980),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v53Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v54Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S6451C1D1Ev,_ZTv0_n72_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S6451C1D0Ev,_ZTv0_n72_N7S6451C1D0Ev),
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v55Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v56Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v57Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v58Ev,
  ABISELECT(-976,-592),
  ABISELECT(-1312,-760),
  ABISELECT(-1104,-656),
  ABISELECT(-1120,-660),
  ABISELECT(-1808,-1044),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn128_n144_N7S6451C1D1Ev,_ZTvn64_n72_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn128_n144_N7S6451C1D0Ev,_ZTvn64_n72_N7S6451C1D0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(-1000,-604),
  ABISELECT(-1336,-772),
  ABISELECT(-1128,-668),
  ABISELECT(-1144,-672),
  ABISELECT(-1832,-1056),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  ABISELECT(-1872,-1076),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  ABISELECT(-2064,-1208),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  ABISELECT(-1168,-688),
  ABISELECT(-1696,-988),
  ABISELECT(-1360,-820),
  ABISELECT(-2192,-1272),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn512_n144_N7S6451C1D1Ev,_ZTvn292_n72_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn512_n144_N7S6451C1D0Ev,_ZTvn292_n72_N7S6451C1D0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern VTBL_ENTRY _ZTV7S6451C1[];
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN7S6451C5D1Ev();
extern void _ZN7S6451C5D0Ev();
extern void _ZN7S6451C53v52Ev();
static  VTBL_ENTRY _tg__ZTV7S6451C5__7S6451C1[] = {
  ABISELECT(1456,868),
  ABISELECT(1120,668),
  ABISELECT(912,528),
  ABISELECT(896,520),
  ABISELECT(704,388),
  ABISELECT(368,220),
  ABISELECT(576,324),
  ABISELECT(560,320),
  ABISELECT(496,288),
  ABISELECT(392,232),
  0,
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN7S6451C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6451C5D0Ev,
  (VTBL_ENTRY)&_ZN7S6451C53v52Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S6451C5D1Ev,_ZTv0_n36_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn392_N7S6451C5D1Ev,_ZThn232_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6451C5D0Ev,_ZTv0_n36_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn392_N7S6451C5D0Ev,_ZThn232_N7S6451C5D0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
extern void _ZN10S6451C6_nt3v40Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C6_nt__7S6451C5__7S6451C1[] = {
  0,
  0,
  ABISELECT(-392,-232),
  ABISELECT(184,92),
  ABISELECT(168,88),
  ABISELECT(104,56),
  ABISELECT(504,288),
  ABISELECT(-24,-12),
  ABISELECT(312,156),
  ABISELECT(-392,-232),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6451C5D1Ev,_ZTv0_n36_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6451C5D0Ev,_ZTv0_n36_N7S6451C5D0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S6451C6_nt3v40Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N7S6451C5D1Ev,_ZTv0_n44_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn496_N7S6451C5D1Ev,_ZThn288_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6451C5D0Ev,_ZTv0_n44_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn496_N7S6451C5D0Ev,_ZThn288_N7S6451C5D0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__7S6451C5__7S6451C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-496,-288),
  0,
  0,
  0,
  0,
  ABISELECT(208,100),
  ABISELECT(-128,-68),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(-496,-288),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6451C5D1Ev,_ZTv0_n44_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6451C5D0Ev,_ZTv0_n44_N7S6451C5D0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__7S6451C5__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-560,-320),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__7S6451C5__7S6451C1[] = {
  ABISELECT(184,88),
  ABISELECT(-152,-80),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-520,-300),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__7S6451C5__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__7S6451C5__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__7S6451C5__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-388),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__A1__7S6451C5__7S6451C1[] = {
  0,
  0,
  ABISELECT(-896,-520),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN11S6451C12_nt3v51Ev();
extern void ABISELECT(_ZTv0_n168_N7S6451C5D1Ev,_ZTv0_n84_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn912_N7S6451C5D1Ev,_ZThn528_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N7S6451C5D0Ev,_ZTv0_n84_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn912_N7S6451C5D0Ev,_ZThn528_N7S6451C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S6451C12_nt__7S6451C5__7S6451C1[] = {
  ABISELECT(192,132),
  ABISELECT(192,132),
  ABISELECT(-912,-528),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(544,340),
  ABISELECT(-208,-140),
  ABISELECT(-544,-308),
  ABISELECT(-336,-204),
  ABISELECT(-352,-208),
  ABISELECT(-416,-240),
  ABISELECT(-16,-8),
  ABISELECT(208,140),
  ABISELECT(-912,-528),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_nt3v51Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N7S6451C5D1Ev,_ZTv0_n84_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N7S6451C5D0Ev,_ZTv0_n84_N7S6451C5D0Ev),
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZTv0_n184_N7S6451C5D1Ev,_ZTv0_n92_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn1120_N7S6451C5D1Ev,_ZThn668_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N7S6451C5D0Ev,_ZTv0_n92_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn1120_N7S6451C5D0Ev,_ZThn668_N7S6451C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__7S6451C5__7S6451C1[] = {
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(-1120,-668),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-280),
  ABISELECT(-752,-448),
  ABISELECT(-544,-344),
  ABISELECT(-560,-348),
  ABISELECT(-624,-380),
  ABISELECT(-224,-148),
  ABISELECT(-1120,-668),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N7S6451C5D1Ev,_ZTv0_n92_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N7S6451C5D0Ev,_ZTv0_n92_N7S6451C5D0Ev),
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt11S6451C13_nt__A2__7S6451C5__7S6451C1[] = {
  ABISELECT(-1136,-672),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt11S6451C13_nt__A1__7S6451C5__7S6451C1[] = {
  ABISELECT(-1328,-804),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt11S6451C12_nt__A2__7S6451C5__7S6451C1[] = {
  ABISELECT(-1104,-660),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S6451C5D1Ev,_ZTv0_n24_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn1456_N7S6451C5D1Ev,_ZThn868_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6451C5D0Ev,_ZTv0_n24_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn1456_N7S6451C5D0Ev,_ZThn868_N7S6451C5D0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__A1__7S6451C5__7S6451C1[] = {
  0,
  ABISELECT(-1456,-868),
  ABISELECT(-560,-348),
  ABISELECT(-1088,-648),
  ABISELECT(-752,-480),
  ABISELECT(-1456,-868),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6451C5D1Ev,_ZTv0_n24_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6451C5D0Ev,_ZTv0_n24_N7S6451C5D0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void _ZN11S6451C13_ntD1Ev();
extern void _ZN11S6451C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__A__7S6451C1[] = {
  ABISELECT(688,384),
  ABISELECT(352,216),
  ABISELECT(560,320),
  ABISELECT(544,316),
  ABISELECT(480,284),
  ABISELECT(880,516),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD0Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C14_nt11S6451C13_nt__A1__7S6451C1[] = {
  ABISELECT(880,516),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__A1__7S6451C1[] = {
  0,
  0,
  ABISELECT(-880,-516),
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C13_nt__A__7S6451C1[] = {
  0,
  0,
  ABISELECT(-880,-516),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev)();
extern void ABISELECT(_ZThn480_N11S6451C13_ntD1Ev,_ZThn284_N11S6451C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev)();
extern void ABISELECT(_ZThn480_N11S6451C13_ntD0Ev,_ZThn284_N11S6451C13_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C13_nt__A__7S6451C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-480,-284),
  0,
  0,
  0,
  0,
  ABISELECT(208,100),
  ABISELECT(-128,-68),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(-480,-284),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__A__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-544,-316),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__A__7S6451C1[] = {
  ABISELECT(184,88),
  ABISELECT(-152,-80),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-504,-296),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__A__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-560,-320),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__A__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-352,-216),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__A__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-688,-384),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C6_ntD1Ev();
extern void _ZN10S6451C6_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
extern void _ZN10S6451C6_nt3v40Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C6_nt__7S6451C1[] = {
  ABISELECT(184,92),
  ABISELECT(168,88),
  ABISELECT(104,56),
  ABISELECT(504,288),
  ABISELECT(-24,-12),
  ABISELECT(312,156),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S6451C6_nt3v40Ev,
};
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt10S6451C6_nt__7S6451C1[] = {
  ABISELECT(504,288),
  ABISELECT(-24,-12),
  ABISELECT(312,156),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C11_nt10S6451C6_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-156),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__11S6451C11_nt10S6451C6_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C11_nt10S6451C6_nt__7S6451C1[] = {
  0,
  0,
  ABISELECT(-504,-288),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N10S6451C6_ntD1Ev,_ZTv0_n44_N10S6451C6_ntD1Ev)();
extern void ABISELECT(_ZThn104_N10S6451C6_ntD1Ev,_ZThn56_N10S6451C6_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N10S6451C6_ntD0Ev,_ZTv0_n44_N10S6451C6_ntD0Ev)();
extern void ABISELECT(_ZThn104_N10S6451C6_ntD0Ev,_ZThn56_N10S6451C6_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__10S6451C6_nt__7S6451C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-56),
  0,
  0,
  0,
  0,
  ABISELECT(208,100),
  ABISELECT(-128,-68),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N10S6451C6_ntD1Ev,_ZTv0_n44_N10S6451C6_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N10S6451C6_ntD0Ev,_ZTv0_n44_N10S6451C6_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C6_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__10S6451C6_nt__7S6451C1[] = {
  ABISELECT(184,88),
  ABISELECT(-152,-80),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C6_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C6_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C6_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-156),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__A1__10S6451C6_nt__7S6451C1[] = {
  0,
  0,
  ABISELECT(-504,-288),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__7S6451C1[] = {
  ABISELECT(208,100),
  ABISELECT(-128,-68),
  ABISELECT(80,36),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__7S6451C1[] = {
  ABISELECT(184,88),
  ABISELECT(-152,-80),
  ABISELECT(56,24),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(152,80),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-88),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C7_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt__7S6451C1[] = {
  ABISELECT(184,88),
  ABISELECT(-152,-80),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C7_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C7_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN11S6451C12_nt3v51Ev();
extern void _ZN11S6451C12_ntD1Ev();
extern void _ZN11S6451C12_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C12_nt__7S6451C1[] = {
  ABISELECT(544,340),
  ABISELECT(-208,-140),
  ABISELECT(-544,-308),
  ABISELECT(-336,-204),
  ABISELECT(-352,-208),
  ABISELECT(-416,-240),
  ABISELECT(-16,-8),
  ABISELECT(208,140),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_nt3v51Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_ntD0Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn208_N11S6451C12_ntD1Ev,_ZThn140_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn208_N11S6451C12_ntD0Ev,_ZThn140_N11S6451C12_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__11S6451C12_nt__7S6451C1[] = {
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(-208,-140),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-280),
  ABISELECT(-752,-448),
  ABISELECT(-544,-344),
  ABISELECT(-560,-348),
  ABISELECT(-624,-380),
  ABISELECT(-224,-148),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev),
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C12_nt__7S6451C1[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt11S6451C13_nt__A1__11S6451C12_nt__7S6451C1[] = {
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt11S6451C13_nt__11S6451C12_nt__7S6451C1[] = {
  ABISELECT(-416,-276),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C12_nt__7S6451C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(416,240),
  0,
  0,
  0,
  0,
  ABISELECT(208,100),
  ABISELECT(-128,-68),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(416,240),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__A1__11S6451C12_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(352,208),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C12_nt__7S6451C1[] = {
  ABISELECT(184,88),
  ABISELECT(-152,-80),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(392,228),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C12_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(336,204),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A3__11S6451C12_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(544,308),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__A2__11S6451C12_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(208,140),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn544_N11S6451C12_ntD1Ev,_ZThn340_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn544_N11S6451C12_ntD0Ev,_ZThn340_N11S6451C12_ntD0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__11S6451C12_nt__7S6451C1[] = {
  0,
  ABISELECT(-544,-340),
  ABISELECT(-560,-348),
  ABISELECT(-1088,-648),
  ABISELECT(-752,-480),
  ABISELECT(-544,-340),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void _ZN11S6451C13_ntD1Ev();
extern void _ZN11S6451C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__7S6451C1[] = {
  ABISELECT(-416,-280),
  ABISELECT(-752,-448),
  ABISELECT(-544,-344),
  ABISELECT(-560,-348),
  ABISELECT(-624,-380),
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD0Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C14_nt11S6451C13_nt__7S6451C1[] = {
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__7S6451C1[] = {
  0,
  0,
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C13_nt__7S6451C1[] = {
  0,
  0,
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev)();
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C13_nt__7S6451C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(624,380),
  0,
  0,
  0,
  0,
  ABISELECT(208,100),
  ABISELECT(-128,-68),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(624,380),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(560,348),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__7S6451C1[] = {
  ABISELECT(184,88),
  ABISELECT(-152,-80),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(600,368),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(544,344),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(752,448),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(416,280),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__A1__7S6451C1[] = {
  ABISELECT(-560,-348),
  ABISELECT(-1088,-648),
  ABISELECT(-752,-480),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C11_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(752,480),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1088,648),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C11_nt__A1__7S6451C1[] = {
  0,
  0,
  ABISELECT(560,348),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN11S6451C17_nt3v53Ev();
extern void _ZN11S6451C17_nt3v54Ev();
extern void _ZN11S6451C16_ntD1Ev();
extern void _ZN11S6451C16_ntD0Ev();
extern void _ZN11S6451C16_nt3v55Ev();
extern void _ZN11S6451C16_nt3v56Ev();
extern void _ZN11S6451C16_nt3v57Ev();
extern void _ZN11S6451C16_nt3v58Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C16_nt__7S6451C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-1056,-628),
  ABISELECT(-656,-396),
  ABISELECT(-432,-248),
  ABISELECT(-640,-388),
  ABISELECT(-848,-528),
  ABISELECT(-976,-592),
  ABISELECT(-1184,-696),
  ABISELECT(-992,-596),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v53Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v54Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v55Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v56Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v57Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v58Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN11S6451C17_nt3v53Ev();
extern void _ZN11S6451C17_nt3v54Ev();
extern void _ZN11S6451C17_ntD1Ev();
extern void _ZN11S6451C17_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C17_nt11S6451C16_nt__7S6451C1[] = {
  ABISELECT(-848,-528),
  ABISELECT(-976,-592),
  ABISELECT(-1184,-696),
  ABISELECT(-992,-596),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v53Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v54Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_ntD0Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  ABISELECT(-976,-592),
  ABISELECT(-1312,-760),
  ABISELECT(-1104,-656),
  ABISELECT(-1120,-660),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  ABISELECT(-1000,-604),
  ABISELECT(-1336,-772),
  ABISELECT(-1128,-668),
  ABISELECT(-1144,-672),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1144,672),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1128,668),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1336,772),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(1000,604),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1120,660),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  ABISELECT(-1000,-604),
  ABISELECT(-1336,-772),
  ABISELECT(-1128,-668),
  ABISELECT(-1144,-672),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1104,656),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1312,760),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(976,592),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(992,596),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1184,696),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZThn128_N11S6451C17_ntD1Ev,_ZThn64_N11S6451C17_ntD1Ev)();
extern void ABISELECT(_ZThn128_N11S6451C17_ntD0Ev,_ZThn64_N11S6451C17_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[] = {
  ABISELECT(-976,-592),
  ABISELECT(-1312,-760),
  ABISELECT(-1104,-656),
  ABISELECT(-1120,-660),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C17_ntD1Ev,_ZThn64_N11S6451C17_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C17_ntD0Ev,_ZThn64_N11S6451C17_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[] = {
  ABISELECT(-1000,-604),
  ABISELECT(-1336,-772),
  ABISELECT(-1128,-668),
  ABISELECT(-1144,-672),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C17_nt11S6451C16_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(976,592),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(848,528),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt11S6451C16_nt__A2__7S6451C1[] = {
  ABISELECT(-1168,-688),
  ABISELECT(-1696,-988),
  ABISELECT(-1360,-820),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C11_nt11S6451C16_nt__A2__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(1360,820),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__11S6451C11_nt11S6451C16_nt__A2__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1696,988),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C11_nt11S6451C16_nt__A2__7S6451C1[] = {
  0,
  0,
  ABISELECT(1168,688),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__11S6451C16_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1184,696),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__11S6451C16_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(992,596),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZThn128_N11S6451C16_ntD1Ev,_ZThn64_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZThn128_N11S6451C16_ntD0Ev,_ZThn64_N11S6451C16_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt11S6451C17_nt__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(-976,-592),
  ABISELECT(-1312,-760),
  ABISELECT(-1104,-656),
  ABISELECT(-1120,-660),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C16_ntD1Ev,_ZThn64_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C16_ntD0Ev,_ZThn64_N11S6451C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(-1000,-604),
  ABISELECT(-1336,-772),
  ABISELECT(-1128,-668),
  ABISELECT(-1144,-672),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C16_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(976,592),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C16_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(848,528),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN11S6451C12_nt3v51Ev();
extern void ABISELECT(_ZTv0_n168_N11S6451C16_ntD1Ev,_ZTv0_n84_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZTv0_n168_N11S6451C16_ntD0Ev,_ZTv0_n84_N11S6451C16_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV11S6451C12_nt__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(192,132),
  ABISELECT(192,132),
  ABISELECT(640,388),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(544,340),
  ABISELECT(-208,-140),
  ABISELECT(-544,-308),
  ABISELECT(-336,-204),
  ABISELECT(-352,-208),
  ABISELECT(-416,-240),
  ABISELECT(-16,-8),
  ABISELECT(208,140),
  ABISELECT(640,388),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_nt3v51Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N11S6451C16_ntD1Ev,_ZTv0_n84_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N11S6451C16_ntD0Ev,_ZTv0_n84_N11S6451C16_ntD0Ev),
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZTv0_n184_N11S6451C16_ntD1Ev,_ZTv0_n92_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZTv0_n184_N11S6451C16_ntD0Ev,_ZTv0_n92_N11S6451C16_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(432,248),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-280),
  ABISELECT(-752,-448),
  ABISELECT(-544,-344),
  ABISELECT(-560,-348),
  ABISELECT(-624,-380),
  ABISELECT(-224,-148),
  ABISELECT(432,248),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C16_ntD1Ev,_ZTv0_n92_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C16_ntD0Ev,_ZTv0_n92_N11S6451C16_ntD0Ev),
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__A1__11S6451C16_nt__7S6451C1[] = {
  0,
  0,
  ABISELECT(656,396),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt11S6451C13_nt__A3__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(416,244),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt11S6451C13_nt__A2__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(224,112),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C16_ntD1Ev,_ZTv0_n44_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZTv0_n88_N11S6451C16_ntD0Ev,_ZTv0_n44_N11S6451C16_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__A1__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(1056,628),
  0,
  0,
  0,
  0,
  ABISELECT(208,100),
  ABISELECT(-128,-68),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(1056,628),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C16_ntD1Ev,_ZTv0_n44_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C16_ntD0Ev,_ZTv0_n44_N11S6451C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(184,88),
  ABISELECT(-152,-80),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(1032,616),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt11S6451C12_nt__A3__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(448,256),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void ABISELECT(_ZTv0_n48_N11S6451C16_ntD1Ev,_ZTv0_n24_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZTv0_n48_N11S6451C16_ntD0Ev,_ZTv0_n24_N11S6451C16_ntD0Ev)();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__11S6451C16_nt__7S6451C1[] = {
  0,
  ABISELECT(96,48),
  ABISELECT(-560,-348),
  ABISELECT(-1088,-648),
  ABISELECT(-752,-480),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C16_ntD1Ev,_ZTv0_n24_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C16_ntD0Ev,_ZTv0_n24_N11S6451C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void ABISELECT(_ZThn512_N11S6451C16_ntD1Ev,_ZThn292_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZThn512_N11S6451C16_ntD0Ev,_ZThn292_N11S6451C16_ntD0Ev)();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__A__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(-1168,-688),
  ABISELECT(-1696,-988),
  ABISELECT(-1360,-820),
  ABISELECT(-512,-292),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn512_N11S6451C16_ntD1Ev,_ZThn292_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn512_N11S6451C16_ntD0Ev,_ZThn292_N11S6451C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
static  VTT_ENTRY vtt_S6451C1[] = {
  {&(_ZTV7S6451C1[13]),  13,432},
  {&(_tg__ZTV7S6451C5__7S6451C1[12]),  12,19},
  {&(_tg__ZTV10S6451C6_nt__7S6451C5__7S6451C1[11]),  11,15},
  {&(_tg__ZTV10S6451C7_nt__7S6451C5__7S6451C1[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__7S6451C5__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__7S6451C5__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__7S6451C5__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__7S6451C5__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__7S6451C5__7S6451C1[11]),  11,20},
  {&(_tg__ZTV10S6451C3_nt__A1__7S6451C5__7S6451C1[4]),  4,6},
  {&(_tg__ZTV11S6451C12_nt__7S6451C5__7S6451C1[23]),  23,35},
  {&(_tg__ZTV11S6451C13_nt__7S6451C5__7S6451C1[36]),  36,52},
  {&(_tg__ZTV11S6451C10_nt11S6451C13_nt__A2__7S6451C5__7S6451C1[2]),  2,11},
  {&(_tg__ZTV10S6451C2_nt11S6451C13_nt__A1__7S6451C5__7S6451C1[2]),  2,6},
  {&(_tg__ZTV10S6451C3_nt11S6451C12_nt__A2__7S6451C5__7S6451C1[2]),  2,4},
  {&(_tg__ZTV11S6451C11_nt__A1__7S6451C5__7S6451C1[7]),  7,10},
  {&(_tg__ZTV11S6451C13_nt__A__7S6451C1[8]),  8,24},
  {&(_tg__ZTV11S6451C14_nt11S6451C13_nt__A1__7S6451C1[3]),  3,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__A1__7S6451C1[4]),  4,6},
  {&(_tg__ZTV10S6451C3_nt__11S6451C13_nt__A__7S6451C1[4]),  4,6},
  {&(_tg__ZTV10S6451C7_nt__11S6451C13_nt__A__7S6451C1[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__A__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__A__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__A__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__A__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__A__7S6451C1[11]),  11,20},
  {&(_ZTV7S6451C1[95]),  95,432},
  {&(_ZTV7S6451C1[41]),  41,432},
  {&(_ZTV7S6451C1[110]),  110,432},
  {&(_ZTV7S6451C1[136]),  136,432},
  {&(_ZTV7S6451C1[165]),  165,432},
  {&(_ZTV7S6451C1[154]),  154,432},
  {&(_ZTV7S6451C1[175]),  175,432},
  {&(_ZTV7S6451C1[190]),  190,432},
  {&(_ZTV7S6451C1[203]),  203,432},
  {&(_ZTV7S6451C1[228]),  228,432},
  {&(_ZTV7S6451C1[280]),  280,432},
  {&(_ZTV7S6451C1[298]),  298,432},
  {&(_ZTV7S6451C1[309]),  309,432},
  {&(_ZTV7S6451C1[242]),  242,432},
  {&(_ZTV7S6451C1[320]),  320,432},
  {&(_ZTV7S6451C1[366]),  366,432},
  {&(_ZTV7S6451C1[384]),  384,432},
  {&(_ZTV7S6451C1[402]),  402,432},
  {&(_ZTV7S6451C1[409]),  409,432},
  {&(_ZTV7S6451C1[420]),  420,432},
  {&(_ZTV7S6451C1[429]),  429,432},
  {&(_ZTV7S6451C1[56]),  56,432},
  {&(_tg__ZTV10S6451C6_nt__7S6451C1[8]),  8,12},
  {&(_tg__ZTV11S6451C11_nt10S6451C6_nt__7S6451C1[5]),  5,8},
  {&(_tg__ZTV11S6451C10_nt__11S6451C11_nt10S6451C6_nt__7S6451C1[11]),  11,20},
  {&(_tg__ZTV10S6451C4_nt__A1__11S6451C11_nt10S6451C6_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C11_nt10S6451C6_nt__7S6451C1[4]),  4,6},
  {&(_tg__ZTV10S6451C7_nt__10S6451C6_nt__7S6451C1[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__10S6451C6_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__10S6451C6_nt__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C6_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C6_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C6_nt__7S6451C1[11]),  11,20},
  {&(_tg__ZTV10S6451C3_nt__A1__10S6451C6_nt__7S6451C1[4]),  4,6},
  {&(_tg__ZTV10S6451C7_nt__7S6451C1[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__7S6451C1[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__10S6451C7_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C7_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C7_nt__7S6451C1[11]),  11,20},
  {&(_tg__ZTV11S6451C12_nt__7S6451C1[10]),  10,22},
  {&(_tg__ZTV11S6451C13_nt__11S6451C12_nt__7S6451C1[36]),  36,52},
  {&(_tg__ZTV10S6451C3_nt__11S6451C12_nt__7S6451C1[4]),  4,6},
  {&(_tg__ZTV11S6451C10_nt11S6451C13_nt__A1__11S6451C12_nt__7S6451C1[2]),  2,11},
  {&(_tg__ZTV10S6451C2_nt11S6451C13_nt__11S6451C12_nt__7S6451C1[2]),  2,6},
  {&(_tg__ZTV10S6451C7_nt__11S6451C12_nt__7S6451C1[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__A1__11S6451C12_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C12_nt__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C12_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A3__11S6451C12_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__A2__11S6451C12_nt__7S6451C1[11]),  11,20},
  {&(_tg__ZTV11S6451C11_nt__11S6451C12_nt__7S6451C1[7]),  7,10},
  {&(_tg__ZTV11S6451C13_nt__7S6451C1[8]),  8,24},
  {&(_tg__ZTV11S6451C14_nt11S6451C13_nt__7S6451C1[3]),  3,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__7S6451C1[4]),  4,6},
  {&(_tg__ZTV10S6451C3_nt__11S6451C13_nt__7S6451C1[4]),  4,6},
  {&(_tg__ZTV10S6451C7_nt__11S6451C13_nt__7S6451C1[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__7S6451C1[11]),  11,20},
  {&(_tg__ZTV11S6451C11_nt__A1__7S6451C1[5]),  5,8},
  {&(_tg__ZTV11S6451C10_nt__11S6451C11_nt__A1__7S6451C1[11]),  11,20},
  {&(_tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__A1__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C11_nt__A1__7S6451C1[4]),  4,6},
  {&(_tg__ZTV11S6451C16_nt__7S6451C1[11]),  11,23},
  {&(_tg__ZTV11S6451C17_nt11S6451C16_nt__7S6451C1[6]),  6,14},
  {&(_tg__ZTV10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C7_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C17_nt11S6451C16_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[11]),  11,20},
  {&(_tg__ZTV11S6451C11_nt11S6451C16_nt__A2__7S6451C1[5]),  5,8},
  {&(_tg__ZTV11S6451C10_nt__11S6451C11_nt11S6451C16_nt__A2__7S6451C1[11]),  11,20},
  {&(_tg__ZTV10S6451C4_nt__A1__11S6451C11_nt11S6451C16_nt__A2__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C11_nt11S6451C16_nt__A2__7S6451C1[4]),  4,6},
  {&(_tg__ZTV10S6451C4_nt__11S6451C16_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C8_nt__11S6451C16_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C7_nt11S6451C17_nt__11S6451C16_nt__7S6451C1[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C16_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__11S6451C16_nt__7S6451C1[11]),  11,20},
  {&(_tg__ZTV11S6451C12_nt__11S6451C16_nt__7S6451C1[23]),  23,35},
  {&(_tg__ZTV11S6451C13_nt__11S6451C16_nt__7S6451C1[36]),  36,52},
  {&(_tg__ZTV10S6451C3_nt__A1__11S6451C16_nt__7S6451C1[4]),  4,6},
  {&(_tg__ZTV11S6451C10_nt11S6451C13_nt__A3__11S6451C16_nt__7S6451C1[2]),  2,11},
  {&(_tg__ZTV10S6451C2_nt11S6451C13_nt__A2__11S6451C16_nt__7S6451C1[2]),  2,6},
  {&(_tg__ZTV10S6451C7_nt__A1__11S6451C16_nt__7S6451C1[22]),  22,34},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C3_nt11S6451C12_nt__A3__11S6451C16_nt__7S6451C1[2]),  2,4},
  {&(_tg__ZTV11S6451C11_nt__11S6451C16_nt__7S6451C1[7]),  7,10},
  {&(_tg__ZTV11S6451C11_nt__A__11S6451C16_nt__7S6451C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S6451C1[];
extern  VTBL_ENTRY _ZTV7S6451C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6451C1[];
static VTBL_ENTRY alt_thunk_names47[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N11S6451C12_ntD0Ev,_ZThn340_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N11S6451C12_ntD1Ev,_ZThn340_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N11S6451C12_ntD0Ev,_ZThn140_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N11S6451C12_ntD1Ev,_ZThn140_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N10S6451C6_ntD0Ev,_ZTv0_n44_N10S6451C6_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N10S6451C6_ntD0Ev,_ZThn56_N10S6451C6_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N10S6451C6_ntD1Ev,_ZTv0_n44_N10S6451C6_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N10S6451C6_ntD1Ev,_ZThn56_N10S6451C6_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N11S6451C13_ntD0Ev,_ZThn284_N11S6451C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N11S6451C13_ntD1Ev,_ZThn284_N11S6451C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6451C5D0Ev,_ZTv0_n24_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1456_N7S6451C5D0Ev,_ZThn868_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6451C5D1Ev,_ZTv0_n24_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1456_N7S6451C5D1Ev,_ZThn868_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N7S6451C5D0Ev,_ZTv0_n92_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1120_N7S6451C5D0Ev,_ZThn668_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N7S6451C5D1Ev,_ZTv0_n92_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1120_N7S6451C5D1Ev,_ZThn668_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N7S6451C5D0Ev,_ZTv0_n84_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N7S6451C5D0Ev,_ZThn528_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N7S6451C5D1Ev,_ZTv0_n84_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N7S6451C5D1Ev,_ZThn528_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6451C5D0Ev,_ZTv0_n44_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S6451C5D0Ev,_ZThn288_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6451C5D1Ev,_ZTv0_n44_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S6451C5D1Ev,_ZThn288_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6451C5D0Ev,_ZTv0_n36_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N7S6451C5D0Ev,_ZThn232_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6451C5D1Ev,_ZTv0_n36_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N7S6451C5D1Ev,_ZThn232_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S6451C1D0Ev,_ZTv0_n72_N7S6451C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1680_N7S6451C1D0Ev,_ZThn980_N7S6451C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S6451C1D1Ev,_ZTv0_n72_N7S6451C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1680_N7S6451C1D1Ev,_ZThn980_N7S6451C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6451C1D0Ev,_ZTv0_n24_N7S6451C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N7S6451C1D0Ev,_ZThn932_N7S6451C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6451C1D1Ev,_ZTv0_n24_N7S6451C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N7S6451C1D1Ev,_ZThn932_N7S6451C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N7S6451C1D0Ev,_ZTv0_n92_N7S6451C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1248_N7S6451C1D0Ev,_ZThn732_N7S6451C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N7S6451C1D1Ev,_ZTv0_n92_N7S6451C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1248_N7S6451C1D1Ev,_ZThn732_N7S6451C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N7S6451C1D0Ev,_ZTv0_n84_N7S6451C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N7S6451C1D0Ev,_ZThn592_N7S6451C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N7S6451C1D1Ev,_ZTv0_n84_N7S6451C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N7S6451C1D1Ev,_ZThn592_N7S6451C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6451C1D0Ev,_ZTv0_n44_N7S6451C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N7S6451C1D0Ev,_ZThn352_N7S6451C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6451C1D1Ev,_ZTv0_n44_N7S6451C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N7S6451C1D1Ev,_ZThn352_N7S6451C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6451C1D0Ev,_ZTv0_n36_N7S6451C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N7S6451C1D0Ev,_ZThn296_N7S6451C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6451C1D1Ev,_ZTv0_n36_N7S6451C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N7S6451C1D1Ev,_ZThn296_N7S6451C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6451C1 = {  "S6451C1", // class name
  bases_S6451C1, 43,
  &(vtc_S6451C1[0]), // expected_vtbl_contents
  &(vtt_S6451C1[0]), // expected_vtt_contents
  ABISELECT(2720,1564), // object size
  NSPAIRA(_ZTI7S6451C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6451C1),432, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6451C1),136, //virtual table table var
  43, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names47,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19656C2_nt  {
  char s19656c2f0;
  void  mf19656c2(); // _ZN11S19656C2_nt9mf19656c2Ev
};
//SIG(-1 S19656C2_nt) C1{ m Fc}


void  S19656C2_nt ::mf19656c2(){}

//skip512 S19656C2_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S19656C2_nt[];
VTBL_ENTRY *P__ZTI11S19656C2_nt = _ZTI11S19656C2_nt; 
Class_Descriptor cd_S19656C2_nt = {  "S19656C2_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI11S19656C2_nt),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19656C4_nt  {
  __tsi64 s19656c4f0;
  void *s19656c4f1;
  char s19656c4f2:6;
  long double s19656c4f3;
  char s19656c4f4[7];
  __tsi64 s19656c4f5;
  char s19656c4f6[9];
  long double s19656c4f7[8];
  void *s19656c4f8;
  short s19656c4f9;
  void *s19656c4f10[7];
  int s19656c4f11;
  void *s19656c4f12;
  virtual void  v4(); // _ZN11S19656C4_nt2v4Ev
  virtual void  v5(); // _ZN11S19656C4_nt2v5Ev
  ~S19656C4_nt(); // tgen
  S19656C4_nt(); // tgen
};
//SIG(-1 S19656C4_nt) C1{ v1 v2 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp}


void  S19656C4_nt ::v4(){vfunc_called(this, "_ZN11S19656C4_nt2v4Ev");}
void  S19656C4_nt ::v5(){vfunc_called(this, "_ZN11S19656C4_nt2v5Ev");}
S19656C4_nt ::~S19656C4_nt(){ note_dtor("S19656C4_nt", this);} // tgen
S19656C4_nt ::S19656C4_nt(){ note_ctor("S19656C4_nt", this);} // tgen

//skip512 S19656C4_nt

#else // __cplusplus

extern void _ZN11S19656C4_ntC1Ev();
extern void _ZN11S19656C4_ntD1Ev();
Name_Map name_map_S19656C4_nt[] = {
  NSPAIR(_ZN11S19656C4_ntC1Ev),
  NSPAIR(_ZN11S19656C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
static  VTBL_ENTRY vtc_S19656C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19656C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
VTBL_ENTRY *P__ZTI11S19656C4_nt = _ZTI11S19656C4_nt; 
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
Class_Descriptor cd_S19656C4_nt = {  "S19656C4_nt", // class name
  0,0,//no base classes
  &(vtc_S19656C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,200), // object size
  NSPAIRA(_ZTI11S19656C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19656C4_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S19656C5_nt  {
  __tsi64 s19656c5f0;
  long double s19656c5f1[10];
  long double s19656c5f2;
  short  :0;
  void  mf19656c5(); // _ZN11S19656C5_nt9mf19656c5Ev
};
//SIG(1 S19656C5_nt) U1{ m FL FD[10] FD Fs:0}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19656C6_nt  {
  char s19656c6f0;
  __tsi64 s19656c6f1[10];
  long double s19656c6f2;
  ::S19656C4_nt s19656c6f3;
  void *s19656c6f4;
  short s19656c6f5;
  void *s19656c6f6;
  int s19656c6f7;
  virtual void  v7(); // _ZN11S19656C6_nt2v7Ev
  virtual void  v8(); // _ZN11S19656C6_nt2v8Ev
  ~S19656C6_nt(); // tgen
  S19656C6_nt(); // tgen
};
//SIG(-1 S19656C6_nt) C1{ v1 v2 Fc FL[10] FD FC2{ v3 v4 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp} Fp Fs Fp Fi}


void  S19656C6_nt ::v7(){vfunc_called(this, "_ZN11S19656C6_nt2v7Ev");}
void  S19656C6_nt ::v8(){vfunc_called(this, "_ZN11S19656C6_nt2v8Ev");}
S19656C6_nt ::~S19656C6_nt(){ note_dtor("S19656C6_nt", this);} // tgen
S19656C6_nt ::S19656C6_nt(){ note_ctor("S19656C6_nt", this);} // tgen

//skip512 S19656C6_nt

#else // __cplusplus

extern void _ZN11S19656C6_ntC1Ev();
extern void _ZN11S19656C6_ntD1Ev();
Name_Map name_map_S19656C6_nt[] = {
  NSPAIR(_ZN11S19656C6_ntC1Ev),
  NSPAIR(_ZN11S19656C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY vtc_S19656C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19656C6_nt[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
VTBL_ENTRY *P__ZTI11S19656C6_nt = _ZTI11S19656C6_nt; 
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
Class_Descriptor cd_S19656C6_nt = {  "S19656C6_nt", // class name
  0,0,//no base classes
  &(vtc_S19656C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(448,316), // object size
  NSPAIRA(_ZTI11S19656C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19656C6_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19656C3_nt  {
  int s19656c3f0;
  ::S19656C4_nt s19656c3f1;
  int s19656c3f2[2];
  ::S19656C5_nt s19656c3f3;
  long double s19656c3f4;
  int s19656c3f5;
  int s19656c3f6;
  ::S19656C6_nt s19656c3f7;
  __tsi64 s19656c3f8;
  int s19656c3f9;
  ::S19656C6_nt s19656c3f10;
  virtual  ~S19656C3_nt(); // _ZN11S19656C3_ntD1Ev
  virtual void  v2(); // _ZN11S19656C3_nt2v2Ev
  virtual void  v3(); // _ZN11S19656C3_nt2v3Ev
  S19656C3_nt(); // tgen
};
//SIG(-1 S19656C3_nt) C1{ vd v1 v2 Fi FC2{ v3 v4 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp} Fi[2] FU3{ m FL FD[10] FD Fs:0} FD Fi Fi FC4{ v5 v6 Fc FL[10] FD FC2 Fp Fs Fp Fi} FL Fi FC4}


 S19656C3_nt ::~S19656C3_nt(){ note_dtor("S19656C3_nt", this);}
void  S19656C3_nt ::v2(){vfunc_called(this, "_ZN11S19656C3_nt2v2Ev");}
void  S19656C3_nt ::v3(){vfunc_called(this, "_ZN11S19656C3_nt2v3Ev");}
S19656C3_nt ::S19656C3_nt(){ note_ctor("S19656C3_nt", this);} // tgen

//skip512 S19656C3_nt

#else // __cplusplus

extern void _ZN11S19656C3_ntC1Ev();
extern void _ZN11S19656C3_ntD1Ev();
Name_Map name_map_S19656C3_nt[] = {
  NSPAIR(_ZN11S19656C3_ntC1Ev),
  NSPAIR(_ZN11S19656C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19656C3_nt[];
extern void _ZN11S19656C3_ntD1Ev();
extern void _ZN11S19656C3_ntD0Ev();
extern void _ZN11S19656C3_nt2v2Ev();
extern void _ZN11S19656C3_nt2v3Ev();
static  VTBL_ENTRY vtc_S19656C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19656C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S19656C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19656C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v3Ev,
};
extern VTBL_ENTRY _ZTI11S19656C3_nt[];
VTBL_ENTRY *P__ZTI11S19656C3_nt = _ZTI11S19656C3_nt; 
extern  VTBL_ENTRY _ZTV11S19656C3_nt[];
Class_Descriptor cd_S19656C3_nt = {  "S19656C3_nt", // class name
  0,0,//no base classes
  &(vtc_S19656C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1440,1000), // object size
  NSPAIRA(_ZTI11S19656C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19656C3_nt),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19656C11_nt  {
  void *s19656c11f0;
  __tsi64 s19656c11f1;
  void *s19656c11f2[7];
  void  mf19656c11(); // _ZN12S19656C11_nt10mf19656c11Ev
  virtual  ~S19656C11_nt(); // _ZN12S19656C11_ntD1Ev
  S19656C11_nt(); // tgen
};
//SIG(-1 S19656C11_nt) C1{ vd m Fp FL Fp[7]}


void  S19656C11_nt ::mf19656c11(){}
 S19656C11_nt ::~S19656C11_nt(){ note_dtor("S19656C11_nt", this);}
S19656C11_nt ::S19656C11_nt(){ note_ctor("S19656C11_nt", this);} // tgen

//skip512 S19656C11_nt

#else // __cplusplus

extern void _ZN12S19656C11_ntC1Ev();
extern void _ZN12S19656C11_ntD1Ev();
Name_Map name_map_S19656C11_nt[] = {
  NSPAIR(_ZN12S19656C11_ntC1Ev),
  NSPAIR(_ZN12S19656C11_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern void _ZN12S19656C11_ntD1Ev();
extern void _ZN12S19656C11_ntD0Ev();
static  VTBL_ENTRY vtc_S19656C11_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S19656C11_nt[0]),
  (VTBL_ENTRY)&_ZN12S19656C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19656C11_ntD0Ev,
};
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
VTBL_ENTRY *P__ZTI12S19656C11_nt = _ZTI12S19656C11_nt; 
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
Class_Descriptor cd_S19656C11_nt = {  "S19656C11_nt", // class name
  0,0,//no base classes
  &(vtc_S19656C11_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI12S19656C11_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV12S19656C11_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19656C10_nt  {
  ::S19656C4_nt s19656c10f0[8];
  ::S19656C4_nt s19656c10f1[2];
  void *s19656c10f2;
  int s19656c10f3;
  ::S19656C11_nt s19656c10f4;
  ::S19656C4_nt s19656c10f5[5];
  void *s19656c10f6[5];
  ::S19656C4_nt s19656c10f7[5];
  virtual void  v6(); // _ZN12S19656C10_nt2v6Ev
  ~S19656C10_nt(); // tgen
  S19656C10_nt(); // tgen
};
//SIG(-1 S19656C10_nt) C1{ v1 FC2{ v2 v3 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp}[8] FC2[2] Fp Fi FC3{ vd m Fp FL Fp[7]} FC2[5] Fp[5] FC2[5]}


void  S19656C10_nt ::v6(){vfunc_called(this, "_ZN12S19656C10_nt2v6Ev");}
S19656C10_nt ::~S19656C10_nt(){ note_dtor("S19656C10_nt", this);} // tgen
S19656C10_nt ::S19656C10_nt(){ note_ctor("S19656C10_nt", this);} // tgen

//skip512 S19656C10_nt

#else // __cplusplus

extern void _ZN12S19656C10_ntC1Ev();
extern void _ZN12S19656C10_ntD1Ev();
Name_Map name_map_S19656C10_nt[] = {
  NSPAIR(_ZN12S19656C10_ntC1Ev),
  NSPAIR(_ZN12S19656C10_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY vtc_S19656C10_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S19656C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
VTBL_ENTRY *P__ZTI12S19656C10_nt = _ZTI12S19656C10_nt; 
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
Class_Descriptor cd_S19656C10_nt = {  "S19656C10_nt", // class name
  0,0,//no base classes
  &(vtc_S19656C10_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(6240,4076), // object size
  NSPAIRA(_ZTI12S19656C10_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV12S19656C10_nt),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19656C9  : S19656C4_nt , virtual S19656C10_nt , S19656C11_nt , virtual S19656C6_nt {
  int s19656c9f0:2;
  long double s19656c9f1[7];
  void *s19656c9f2;
  ::S19656C10_nt s19656c9f3;
  void *s19656c9f4;
  int s19656c9f5;
  void *s19656c9f6;
  void *s19656c9f7;
  ::S19656C11_nt s19656c9f8;
  ::S19656C4_nt s19656c9f9;
  long double s19656c9f10[8];
  virtual void  v9(); // _ZN8S19656C92v9Ev
  ~S19656C9(); // tgen
  S19656C9(); // tgen
};
//SIG(-1 S19656C9) C1{ BC2{ v2 v3 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp} VBC3{ v4 FC2[8] FC2[2] Fp Fi FC4{ vd m Fp FL Fp[7]} FC2[5] Fp[5] FC2[5]} BC4 VBC5{ v5 v6 Fc FL[10] FD FC2 Fp Fs Fp Fi} v1 Fi:2 FD[7] Fp FC3 Fp Fi Fp[2] FC4 FC2 FD[8]}


void  S19656C9 ::v9(){vfunc_called(this, "_ZN8S19656C92v9Ev");}
S19656C9 ::~S19656C9(){ note_dtor("S19656C9", this);} // tgen
S19656C9 ::S19656C9(){ note_ctor("S19656C9", this);} // tgen

static void Test_S19656C9()
{
  extern Class_Descriptor cd_S19656C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(875,2291)];
    init_test(&cd_S19656C9, buf);
    S19656C9 *dp, &lv = *(dp=new (buf) S19656C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(13984,9160), "sizeof(S19656C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19656C9)");
    check_base_class_offset(lv, (S19656C4_nt*), 0, "S19656C9");
    check_base_class_offset(lv, (S19656C10_nt*), ABISELECT(7296,4768), "S19656C9");
    check_base_class_offset(lv, (S19656C11_nt*), ABISELECT(296,200), "S19656C9");
    check_base_class_offset(lv, (S19656C6_nt*), ABISELECT(13536,8844), "S19656C9");
    set_bf_and_test(lv, s19656c9f0, ABISELECT(376,244), 0, 2, 1, "S19656C9");
    set_bf_and_test(lv, s19656c9f0, ABISELECT(376,244), 0, 2, hide_sll(1LL<<1), "S19656C9");
    check_field_offset(lv, s19656c9f1, ABISELECT(384,248), "S19656C9.s19656c9f1");
    check_field_offset(lv, s19656c9f2, ABISELECT(496,332), "S19656C9.s19656c9f2");
    check_field_offset(lv, s19656c9f3, ABISELECT(512,336), "S19656C9.s19656c9f3");
    check_field_offset(lv, s19656c9f4, ABISELECT(6752,4412), "S19656C9.s19656c9f4");
    check_field_offset(lv, s19656c9f5, ABISELECT(6760,4416), "S19656C9.s19656c9f5");
    check_field_offset(lv, s19656c9f6, ABISELECT(6768,4420), "S19656C9.s19656c9f6");
    check_field_offset(lv, s19656c9f7, ABISELECT(6776,4424), "S19656C9.s19656c9f7");
    check_field_offset(lv, s19656c9f8, ABISELECT(6784,4428), "S19656C9.s19656c9f8");
    check_field_offset(lv, s19656c9f9, ABISELECT(6864,4472), "S19656C9.s19656c9f9");
    check_field_offset(lv, s19656c9f10, ABISELECT(7168,4672), "S19656C9.s19656c9f10");
    test_class_info(&lv, &cd_S19656C9);
    dp->~S19656C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19656C9(Test_S19656C9, "S19656C9", ABISELECT(13984,9160));

#else // __cplusplus

extern void _ZN8S19656C9C1Ev();
extern void _ZN8S19656C9D1Ev();
Name_Map name_map_S19656C9[] = {
  NSPAIR(_ZN8S19656C9C1Ev),
  NSPAIR(_ZN8S19656C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
static Base_Class bases_S19656C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19656C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19656C10_nt,    ABISELECT(7296,4768), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19656C11_nt,    ABISELECT(296,200), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19656C6_nt,    ABISELECT(13536,8844), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19656C9[];
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C9D1Ev();
extern void _ZN8S19656C9D0Ev();
extern void ABISELECT(_ZThn296_N8S19656C9D1Ev,_ZThn200_N8S19656C9D1Ev)();
extern void ABISELECT(_ZThn296_N8S19656C9D0Ev,_ZThn200_N8S19656C9D0Ev)();
extern void _ZN12S19656C10_nt2v6Ev();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY vtc_S19656C9[] = {
  ABISELECT(13536,8844),
  ABISELECT(7296,4768),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D0Ev,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19656C9D1Ev,_ZThn200_N8S19656C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19656C9D0Ev,_ZThn200_N8S19656C9D0Ev),
  0,
  ABISELECT(-7296,-4768),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-13536,-8844),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern VTBL_ENTRY _ZTV8S19656C9[];
static  VTT_ENTRY vtt_S19656C9[] = {
  {&(_ZTV8S19656C9[4]),  4,23},
  {&(_ZTV8S19656C9[16]),  16,23},
  {&(_ZTV8S19656C9[21]),  21,23},
};
extern VTBL_ENTRY _ZTI8S19656C9[];
extern  VTBL_ENTRY _ZTV8S19656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C9[];
Class_Descriptor cd_S19656C9 = {  "S19656C9", // class name
  bases_S19656C9, 4,
  &(vtc_S19656C9[0]), // expected_vtbl_contents
  &(vtt_S19656C9[0]), // expected_vtt_contents
  ABISELECT(13984,9160), // object size
  NSPAIRA(_ZTI8S19656C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19656C9),23, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19656C9),3, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19656C8  : S19656C9 , S19656C6_nt , S19656C11_nt , S19656C10_nt , virtual S19656C4_nt {
  ::S19656C11_nt s19656c8f0;
  int s19656c8f1;
  void *s19656c8f2;
  void *s19656c8f3;
  __tsi64 s19656c8f4;
  __tsi64 s19656c8f5;
  int s19656c8f6;
  int s19656c8f7;
  void *s19656c8f8;
  int s19656c8f9;
  ::S19656C6_nt s19656c8f10;
  int s19656c8f11;
  virtual  ~S19656C8(); // _ZN8S19656C8D2Ev
  virtual void  v10(); // _ZN8S19656C83v10Ev
  virtual void  v11(); // _ZN8S19656C83v11Ev
  S19656C8(); // tgen
};
//SIG(-1 S19656C8) C1{ BC2{ BC3{ v3 v4 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp} VBC4{ v5 FC3[8] FC3[2] Fp Fi FC5{ vd m Fp FL Fp[7]} FC3[5] Fp[5] FC3[5]} BC5 VBC6{ v6 v7 Fc FL[10] FD FC3 Fp Fs Fp Fi} v8 Fi:2 FD[7] Fp FC4 Fp Fi Fp[2] FC5 FC3 FD[8]} BC6 BC5 BC4 VBC3 vd v1 v2 FC5 Fi Fp[2] FL[2] Fi[2] Fp Fi FC6 Fi}


 S19656C8 ::~S19656C8(){ note_dtor("S19656C8", this);}
void  S19656C8 ::v10(){vfunc_called(this, "_ZN8S19656C83v10Ev");}
void  S19656C8 ::v11(){vfunc_called(this, "_ZN8S19656C83v11Ev");}
S19656C8 ::S19656C8(){ note_ctor("S19656C8", this);} // tgen

static void Test_S19656C8()
{
  extern Class_Descriptor cd_S19656C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1355,3552)];
    init_test(&cd_S19656C8, buf);
    S19656C8 *dp, &lv = *(dp=new (buf) S19656C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(21664,14204), "sizeof(S19656C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19656C8)");
    check_base_class_offset(lv, (S19656C4_nt*)(S19656C9*), 0, "S19656C8");
    check_base_class_offset(lv, (S19656C10_nt*)(S19656C9*), ABISELECT(14672,9612), "S19656C8");
    check_base_class_offset(lv, (S19656C11_nt*)(S19656C9*), ABISELECT(296,200), "S19656C8");
    check_base_class_offset(lv, (S19656C6_nt*)(S19656C9*), ABISELECT(20912,13688), "S19656C8");
    check_base_class_offset(lv, (S19656C9*), 0, "S19656C8");
    /*is_ambiguous_... S19656C8::S19656C6_nt */ AMB_check_base_class_offset(lv, (S19656C6_nt*), ABISELECT(7296,4768), "S19656C8");
    /*is_ambiguous_... S19656C8::S19656C11_nt */ AMB_check_base_class_offset(lv, (S19656C11_nt*), ABISELECT(7744,5084), "S19656C8");
    /*is_ambiguous_... S19656C8::S19656C10_nt */ AMB_check_base_class_offset(lv, (S19656C10_nt*), ABISELECT(7824,5128), "S19656C8");
    /*is_ambiguous_... S19656C8::S19656C4_nt */ AMB_check_base_class_offset(lv, (S19656C4_nt*), ABISELECT(21360,14004), "S19656C8");
    check_field_offset(lv, s19656c8f0, ABISELECT(14064,9204), "S19656C8.s19656c8f0");
    check_field_offset(lv, s19656c8f1, ABISELECT(14144,9248), "S19656C8.s19656c8f1");
    check_field_offset(lv, s19656c8f2, ABISELECT(14152,9252), "S19656C8.s19656c8f2");
    check_field_offset(lv, s19656c8f3, ABISELECT(14160,9256), "S19656C8.s19656c8f3");
    check_field_offset(lv, s19656c8f4, ABISELECT(14168,9260), "S19656C8.s19656c8f4");
    check_field_offset(lv, s19656c8f5, ABISELECT(14176,9268), "S19656C8.s19656c8f5");
    check_field_offset(lv, s19656c8f6, ABISELECT(14184,9276), "S19656C8.s19656c8f6");
    check_field_offset(lv, s19656c8f7, ABISELECT(14188,9280), "S19656C8.s19656c8f7");
    check_field_offset(lv, s19656c8f8, ABISELECT(14192,9284), "S19656C8.s19656c8f8");
    check_field_offset(lv, s19656c8f9, ABISELECT(14200,9288), "S19656C8.s19656c8f9");
    check_field_offset(lv, s19656c8f10, ABISELECT(14208,9292), "S19656C8.s19656c8f10");
    check_field_offset(lv, s19656c8f11, ABISELECT(14656,9608), "S19656C8.s19656c8f11");
    test_class_info(&lv, &cd_S19656C8);
    dp->~S19656C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19656C8(Test_S19656C8, "S19656C8", ABISELECT(21664,14204));

#else // __cplusplus

extern void _ZN8S19656C8C1Ev();
extern void _ZN8S19656C8D2Ev();
Name_Map name_map_S19656C8[] = {
  NSPAIR(_ZN8S19656C8C1Ev),
  NSPAIR(_ZN8S19656C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
extern Class_Descriptor cd_S19656C9;
extern VTBL_ENTRY _ZTI8S19656C9[];
extern  VTBL_ENTRY _ZTV8S19656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C9[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
static Base_Class bases_S19656C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19656C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19656C10_nt,    ABISELECT(14672,9612), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19656C11_nt,    ABISELECT(296,200), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19656C6_nt,    ABISELECT(20912,13688), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19656C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19656C6_nt,    ABISELECT(7296,4768), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19656C11_nt,    ABISELECT(7744,5084), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19656C10_nt,    ABISELECT(7824,5128), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19656C4_nt,    ABISELECT(21360,14004), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19656C8[];
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C8D1Ev();
extern void _ZN8S19656C8D0Ev();
extern void _ZN8S19656C83v10Ev();
extern void _ZN8S19656C83v11Ev();
extern void ABISELECT(_ZThn296_N8S19656C8D1Ev,_ZThn200_N8S19656C8D1Ev)();
extern void ABISELECT(_ZThn296_N8S19656C8D0Ev,_ZThn200_N8S19656C8D0Ev)();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
extern void ABISELECT(_ZThn7744_N8S19656C8D1Ev,_ZThn5084_N8S19656C8D1Ev)();
extern void ABISELECT(_ZThn7744_N8S19656C8D0Ev,_ZThn5084_N8S19656C8D0Ev)();
extern void _ZN12S19656C10_nt2v6Ev();
extern void _ZN12S19656C10_nt2v6Ev();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
static  VTBL_ENTRY vtc_S19656C8[] = {
  ABISELECT(21360,14004),
  ABISELECT(20912,13688),
  ABISELECT(14672,9612),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v11Ev,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19656C8D1Ev,_ZThn200_N8S19656C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19656C8D0Ev,_ZThn200_N8S19656C8D0Ev),
  ABISELECT(-7296,-4768),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
  ABISELECT(-7744,-5084),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn7744_N8S19656C8D1Ev,_ZThn5084_N8S19656C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn7744_N8S19656C8D0Ev,_ZThn5084_N8S19656C8D0Ev),
  ABISELECT(-7824,-5128),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  0,
  ABISELECT(-14672,-9612),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-20912,-13688),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
  0,
  0,
  ABISELECT(-21360,-14004),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
};
extern VTBL_ENTRY _ZTV8S19656C8[];
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C9D1Ev();
extern void _ZN8S19656C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C9__8S19656C8[] = {
  ABISELECT(20912,13688),
  ABISELECT(14672,9612),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C9__8S19656C8[] = {
  0,
  ABISELECT(-14672,-9612),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C9__8S19656C8[] = {
  0,
  0,
  ABISELECT(-20912,-13688),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
static  VTT_ENTRY vtt_S19656C8[] = {
  {&(_ZTV8S19656C8[5]),  5,43},
  {&(_tg__ZTV8S19656C9__8S19656C8[4]),  4,9},
  {&(_tg__ZTV12S19656C10_nt__8S19656C9__8S19656C8[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C9__8S19656C8[4]),  4,6},
  {&(_ZTV8S19656C8[30]),  30,43},
  {&(_ZTV8S19656C8[35]),  35,43},
  {&(_ZTV8S19656C8[41]),  41,43},
};
extern VTBL_ENTRY _ZTI8S19656C8[];
extern  VTBL_ENTRY _ZTV8S19656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C8[];
Class_Descriptor cd_S19656C8 = {  "S19656C8", // class name
  bases_S19656C8, 9,
  &(vtc_S19656C8[0]), // expected_vtbl_contents
  &(vtt_S19656C8[0]), // expected_vtt_contents
  ABISELECT(21664,14204), // object size
  NSPAIRA(_ZTI8S19656C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19656C8),43, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19656C8),7, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19656C13  : virtual S19656C10_nt , virtual S19656C6_nt , virtual S19656C9 , S19656C11_nt {
  void *s19656c13f0;
  ::S19656C11_nt s19656c13f1;
  ::S19656C4_nt s19656c13f2;
  short s19656c13f3;
  ~S19656C13(); // tgen
  S19656C13(); // tgen
};
//SIG(-1 S19656C13) C1{ VBC2{ v1 FC3{ v4 v5 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp}[8] FC3[2] Fp Fi FC4{ vd m Fp FL Fp[7]} FC3[5] Fp[5] FC3[5]} VBC5{ v2 v3 Fc FL[10] FD FC3 Fp Fs Fp Fi} VBC6{ BC3 VBC2 BC4 VBC5 v6 Fi:2 FD[7] Fp FC2 Fp Fi Fp[2] FC4 FC3 FD[8]} BC4 Fp FC4 FC3 Fs}


S19656C13 ::~S19656C13(){ note_dtor("S19656C13", this);} // tgen
S19656C13 ::S19656C13(){ note_ctor("S19656C13", this);} // tgen

static void Test_S19656C13()
{
  extern Class_Descriptor cd_S19656C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(906,2365)];
    init_test(&cd_S19656C13, buf);
    S19656C13 *dp, &lv = *(dp=new (buf) S19656C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(14480,9456), "sizeof(S19656C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19656C13)");
    check_base_class_offset(lv, (S19656C10_nt*), ABISELECT(496,296), "S19656C13");
    check_base_class_offset(lv, (S19656C10_nt*)(S19656C9*), ABISELECT(496,296), "S19656C13");
    check_base_class_offset(lv, (S19656C6_nt*), ABISELECT(6736,4372), "S19656C13");
    check_base_class_offset(lv, (S19656C6_nt*)(S19656C9*), ABISELECT(6736,4372), "S19656C13");
    check_base_class_offset(lv, (S19656C4_nt*)(S19656C9*), ABISELECT(7184,4688), "S19656C13");
    check_base_class_offset(lv, (S19656C11_nt*)(S19656C9*), ABISELECT(7480,4888), "S19656C13");
    check_base_class_offset(lv, (S19656C9*), ABISELECT(7184,4688), "S19656C13");
    /*is_ambiguous_... S19656C13::S19656C11_nt */ AMB_check_base_class_offset(lv, (S19656C11_nt*), 0, "S19656C13");
    check_field_offset(lv, s19656c13f0, ABISELECT(80,44), "S19656C13.s19656c13f0");
    check_field_offset(lv, s19656c13f1, ABISELECT(88,48), "S19656C13.s19656c13f1");
    check_field_offset(lv, s19656c13f2, ABISELECT(176,92), "S19656C13.s19656c13f2");
    check_field_offset(lv, s19656c13f3, ABISELECT(480,292), "S19656C13.s19656c13f3");
    test_class_info(&lv, &cd_S19656C13);
    dp->~S19656C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19656C13(Test_S19656C13, "S19656C13", ABISELECT(14480,9456));

#else // __cplusplus

extern void _ZN9S19656C13C1Ev();
extern void _ZN9S19656C13D1Ev();
Name_Map name_map_S19656C13[] = {
  NSPAIR(_ZN9S19656C13C1Ev),
  NSPAIR(_ZN9S19656C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C9;
extern VTBL_ENTRY _ZTI8S19656C9[];
extern  VTBL_ENTRY _ZTV8S19656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C9[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
static Base_Class bases_S19656C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19656C10_nt,    ABISELECT(496,296), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19656C6_nt,    ABISELECT(6736,4372), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19656C4_nt,    ABISELECT(7184,4688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19656C11_nt,    ABISELECT(7480,4888), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19656C9,    ABISELECT(7184,4688), //bcp->offset
    17, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19656C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19656C13[];
extern void _ZN9S19656C13D1Ev();
extern void _ZN9S19656C13D0Ev();
extern void _ZN12S19656C10_nt2v6Ev();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev)();
extern void ABISELECT(_ZThn7184_N9S19656C13D1Ev,_ZThn4688_N9S19656C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev)();
extern void ABISELECT(_ZThn7184_N9S19656C13D0Ev,_ZThn4688_N9S19656C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn296_n64_N9S19656C13D1Ev,_ZTvn200_n32_N9S19656C13D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19656C13D0Ev,_ZTvn200_n32_N9S19656C13D0Ev)();
static  VTBL_ENTRY vtc_S19656C13[] = {
  ABISELECT(7184,4688),
  ABISELECT(6736,4372),
  ABISELECT(496,296),
  0,
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN9S19656C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19656C13D0Ev,
  0,
  ABISELECT(-496,-296),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-6736,-4372),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
  ABISELECT(-7184,-4688),
  0,
  0,
  0,
  ABISELECT(-448,-316),
  ABISELECT(-6688,-4392),
  ABISELECT(-7184,-4688),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev),
  ABISELECT(-7480,-4888),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C13D1Ev,_ZTvn200_n32_N9S19656C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C13D0Ev,_ZTvn200_n32_N9S19656C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19656C13[];
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C9D1Ev();
extern void _ZN8S19656C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C9__9S19656C13[] = {
  ABISELECT(-448,-316),
  ABISELECT(-6688,-4392),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C9__9S19656C13[] = {
  0,
  ABISELECT(6688,4392),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C9__9S19656C13[] = {
  0,
  0,
  ABISELECT(448,316),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
static  VTT_ENTRY vtt_S19656C13[] = {
  {&(_ZTV9S19656C13[5]),  5,34},
  {&(_ZTV9S19656C13[10]),  10,34},
  {&(_ZTV9S19656C13[15]),  15,34},
  {&(_ZTV9S19656C13[25]),  25,34},
  {&(_ZTV9S19656C13[32]),  32,34},
  {&(_tg__ZTV8S19656C9__9S19656C13[4]),  4,9},
  {&(_tg__ZTV12S19656C10_nt__8S19656C9__9S19656C13[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C9__9S19656C13[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19656C13[];
extern  VTBL_ENTRY _ZTV9S19656C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19656C13[];
static VTBL_ENTRY alt_thunk_names48[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7184_N9S19656C13D0Ev,_ZThn4688_N9S19656C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7184_N9S19656C13D1Ev,_ZThn4688_N9S19656C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19656C13 = {  "S19656C13", // class name
  bases_S19656C13, 6,
  &(vtc_S19656C13[0]), // expected_vtbl_contents
  &(vtt_S19656C13[0]), // expected_vtt_contents
  ABISELECT(14480,9456), // object size
  NSPAIRA(_ZTI9S19656C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19656C13),34, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19656C13),8, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names48,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19656C12  : S19656C13 , S19656C4_nt , S19656C3_nt {
  ::S19656C8 s19656c12f0;
  ~S19656C12(); // tgen
  S19656C12(); // tgen
};
//SIG(-1 S19656C12) C1{ BC2{ VBC3{ v1 FC4{ v4 v5 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp}[8] FC4[2] Fp Fi FC5{ vd m Fp FL Fp[7]} FC4[5] Fp[5] FC4[5]} VBC6{ v2 v3 Fc FL[10] FD FC4 Fp Fs Fp Fi} VBC7{ BC4 VBC3 BC5 VBC6 v6 Fi:2 FD[7] Fp FC3 Fp Fi Fp[2] FC5 FC4 FD[8]} BC5 Fp FC5 FC4 Fs} BC4 BC8{ vd v7 v8 Fi FC4 Fi[2] FU9{ m FL FD[10] FD Fs:0} FD Fi Fi FC6 FL Fi FC6} FC10{ BC7 BC6 BC5 BC3 VBC4 vd v9 v10 FC5 Fi Fp Fp FL FL Fi Fi Fp Fi FC6 Fi}}


S19656C12 ::~S19656C12(){ note_dtor("S19656C12", this);} // tgen
S19656C12 ::S19656C12(){ note_ctor("S19656C12", this);} // tgen

static void Test_S19656C12()
{
  extern Class_Descriptor cd_S19656C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2369,6216)];
    init_test(&cd_S19656C12, buf);
    S19656C12 *dp, &lv = *(dp=new (buf) S19656C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(37888,24860), "sizeof(S19656C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19656C12)");
    check_base_class_offset(lv, (S19656C10_nt*)(S19656C13*), ABISELECT(23904,15700), "S19656C12");
    check_base_class_offset(lv, (S19656C10_nt*)(S19656C9*), ABISELECT(23904,15700), "S19656C12");
    check_base_class_offset(lv, (S19656C6_nt*)(S19656C13*), ABISELECT(30144,19776), "S19656C12");
    check_base_class_offset(lv, (S19656C6_nt*)(S19656C9*), ABISELECT(30144,19776), "S19656C12");
    check_base_class_offset(lv, (S19656C4_nt*)(S19656C9*), ABISELECT(30592,20092), "S19656C12");
    check_base_class_offset(lv, (S19656C11_nt*)(S19656C9*), ABISELECT(30888,20292), "S19656C12");
    check_base_class_offset(lv, (S19656C9*)(S19656C13*), ABISELECT(30592,20092), "S19656C12");
    /*is_ambiguous_... S19656C13::S19656C11_nt */ AMB_check_base_class_offset(lv, (S19656C11_nt*)(S19656C13*), 0, "S19656C12");
    check_base_class_offset(lv, (S19656C13*), 0, "S19656C12");
    /*is_ambiguous_... S19656C12::S19656C4_nt */ AMB_check_base_class_offset(lv, (S19656C4_nt*), ABISELECT(496,296), "S19656C12");
    check_base_class_offset(lv, (S19656C3_nt*), ABISELECT(800,496), "S19656C12");
    check_field_offset(lv, s19656c12f0, ABISELECT(2240,1496), "S19656C12.s19656c12f0");
    test_class_info(&lv, &cd_S19656C12);
    dp->~S19656C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19656C12(Test_S19656C12, "S19656C12", ABISELECT(37888,24860));

#else // __cplusplus

extern void _ZN9S19656C12C1Ev();
extern void _ZN9S19656C12D1Ev();
Name_Map name_map_S19656C12[] = {
  NSPAIR(_ZN9S19656C12C1Ev),
  NSPAIR(_ZN9S19656C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C9;
extern VTBL_ENTRY _ZTI8S19656C9[];
extern  VTBL_ENTRY _ZTV8S19656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C9[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C13;
extern VTBL_ENTRY _ZTI9S19656C13[];
extern  VTBL_ENTRY _ZTV9S19656C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19656C13[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C3_nt;
extern VTBL_ENTRY _ZTI11S19656C3_nt[];
extern  VTBL_ENTRY _ZTV11S19656C3_nt[];
static Base_Class bases_S19656C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19656C10_nt,    ABISELECT(23904,15700), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19656C6_nt,    ABISELECT(30144,19776), //bcp->offset
    21, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19656C4_nt,    ABISELECT(30592,20092), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19656C11_nt,    ABISELECT(30888,20292), //bcp->offset
    40, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19656C9,    ABISELECT(30592,20092), //bcp->offset
    27, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19656C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19656C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19656C4_nt,    ABISELECT(496,296), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19656C3_nt,    ABISELECT(800,496), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19656C12[];
extern void _ZN9S19656C12D1Ev();
extern void _ZN9S19656C12D0Ev();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void ABISELECT(_ZThn800_N9S19656C12D1Ev,_ZThn496_N9S19656C12D1Ev)();
extern void ABISELECT(_ZThn800_N9S19656C12D0Ev,_ZThn496_N9S19656C12D0Ev)();
extern void _ZN11S19656C3_nt2v2Ev();
extern void _ZN11S19656C3_nt2v3Ev();
extern void _ZN12S19656C10_nt2v6Ev();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19656C12D1Ev,_ZTv0_n32_N9S19656C12D1Ev)();
extern void ABISELECT(_ZThn30592_N9S19656C12D1Ev,_ZThn20092_N9S19656C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19656C12D0Ev,_ZTv0_n32_N9S19656C12D0Ev)();
extern void ABISELECT(_ZThn30592_N9S19656C12D0Ev,_ZThn20092_N9S19656C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn296_n64_N9S19656C12D1Ev,_ZTvn200_n32_N9S19656C12D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19656C12D0Ev,_ZTvn200_n32_N9S19656C12D0Ev)();
static  VTBL_ENTRY vtc_S19656C12[] = {
  ABISELECT(30592,20092),
  ABISELECT(30144,19776),
  ABISELECT(23904,15700),
  0,
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN9S19656C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19656C12D0Ev,
  ABISELECT(-496,-296),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  ABISELECT(-800,-496),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn800_N9S19656C12D1Ev,_ZThn496_N9S19656C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn800_N9S19656C12D0Ev,_ZThn496_N9S19656C12D0Ev),
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v3Ev,
  0,
  ABISELECT(-23904,-15700),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-30144,-19776),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
  ABISELECT(-30592,-20092),
  0,
  0,
  0,
  ABISELECT(-448,-316),
  ABISELECT(-6688,-4392),
  ABISELECT(-30592,-20092),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C12D1Ev,_ZTv0_n32_N9S19656C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C12D0Ev,_ZTv0_n32_N9S19656C12D0Ev),
  ABISELECT(-30888,-20292),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C12D1Ev,_ZTvn200_n32_N9S19656C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C12D0Ev,_ZTvn200_n32_N9S19656C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19656C12[];
extern void _ZN9S19656C13D1Ev();
extern void _ZN9S19656C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19656C13__9S19656C12[] = {
  ABISELECT(30592,20092),
  ABISELECT(30144,19776),
  ABISELECT(23904,15700),
  0,
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN9S19656C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19656C13D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__9S19656C13__9S19656C12[] = {
  0,
  ABISELECT(-23904,-15700),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__9S19656C13__9S19656C12[] = {
  0,
  0,
  ABISELECT(-30144,-19776),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev)();
extern void ABISELECT(_ZThn30592_N9S19656C13D1Ev,_ZThn20092_N9S19656C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev)();
extern void ABISELECT(_ZThn30592_N9S19656C13D0Ev,_ZThn20092_N9S19656C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19656C9__9S19656C13__9S19656C12[] = {
  ABISELECT(-30592,-20092),
  0,
  0,
  0,
  ABISELECT(-448,-316),
  ABISELECT(-6688,-4392),
  ABISELECT(-30592,-20092),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev),
};
extern void ABISELECT(_ZTvn296_n64_N9S19656C13D1Ev,_ZTvn200_n32_N9S19656C13D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19656C13D0Ev,_ZTvn200_n32_N9S19656C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19656C11_nt8S19656C9__9S19656C13__9S19656C12[] = {
  ABISELECT(-30888,-20292),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C13D1Ev,_ZTvn200_n32_N9S19656C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C13D0Ev,_ZTvn200_n32_N9S19656C13D0Ev),
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C9D1Ev();
extern void _ZN8S19656C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C9__9S19656C12[] = {
  ABISELECT(-448,-316),
  ABISELECT(-6688,-4392),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C9__9S19656C12[] = {
  0,
  ABISELECT(6688,4392),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C9__9S19656C12[] = {
  0,
  0,
  ABISELECT(448,316),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
static  VTT_ENTRY vtt_S19656C12[] = {
  {&(_ZTV9S19656C12[5]),  5,44},
  {&(_tg__ZTV9S19656C13__9S19656C12[5]),  5,7},
  {&(_tg__ZTV12S19656C10_nt__9S19656C13__9S19656C12[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__9S19656C13__9S19656C12[4]),  4,6},
  {&(_tg__ZTV8S19656C9__9S19656C13__9S19656C12[8]),  8,13},
  {&(_tg__ZTV12S19656C11_nt8S19656C9__9S19656C13__9S19656C12[2]),  2,4},
  {&(_ZTV9S19656C12[20]),  20,44},
  {&(_ZTV9S19656C12[25]),  25,44},
  {&(_ZTV9S19656C12[35]),  35,44},
  {&(_ZTV9S19656C12[42]),  42,44},
  {&(_tg__ZTV8S19656C9__9S19656C12[4]),  4,9},
  {&(_tg__ZTV12S19656C10_nt__8S19656C9__9S19656C12[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C9__9S19656C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19656C12[];
extern  VTBL_ENTRY _ZTV9S19656C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19656C12[];
static VTBL_ENTRY alt_thunk_names49[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30592_N9S19656C13D0Ev,_ZThn20092_N9S19656C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30592_N9S19656C13D1Ev,_ZThn20092_N9S19656C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C12D0Ev,_ZTv0_n32_N9S19656C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30592_N9S19656C12D0Ev,_ZThn20092_N9S19656C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C12D1Ev,_ZTv0_n32_N9S19656C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30592_N9S19656C12D1Ev,_ZThn20092_N9S19656C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19656C12 = {  "S19656C12", // class name
  bases_S19656C12, 9,
  &(vtc_S19656C12[0]), // expected_vtbl_contents
  &(vtt_S19656C12[0]), // expected_vtt_contents
  ABISELECT(37888,24860), // object size
  NSPAIRA(_ZTI9S19656C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19656C12),44, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19656C12),13, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names49,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19656C7  : virtual S19656C3_nt , S19656C8 , S19656C12 {
  void *s19656c7f0;
  ::S19656C8 s19656c7f1;
  void *s19656c7f2[7];
  virtual  ~S19656C7(); // _ZN8S19656C7D2Ev
  S19656C7(); // tgen
};
//SIG(-1 S19656C7) C1{ VBC2{ vd v1 v2 Fi FC3{ v3 v4 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp} Fi[2] FU4{ m FL FD[10] FD Fs:0} FD Fi Fi FC5{ v6 v7 Fc FL[10] FD FC3 Fp Fs Fp Fi} FL Fi FC5} BC6{ BC7{ BC3 VBC8{ v5 FC3[8] FC3[2] Fp Fi FC9{ vd m Fp FL Fp[7]} FC3[5] Fp[5] FC3[5]} BC9 VBC5 v8 Fi:2 FD[7] Fp FC8 Fp Fi Fp Fp FC9 FC3 FD[8]} BC5 BC9 BC8 VBC3 vd v9 v10 FC9 Fi Fp Fp FL FL Fi Fi Fp Fi FC5 Fi} BC10{ BC11{ VBC8 VBC5 VBC7 BC9 Fp FC9 FC3 Fs} BC3 BC2 FC6} vd Fp FC6 Fp[7]}


 S19656C7 ::~S19656C7(){ note_dtor("S19656C7", this);}
S19656C7 ::S19656C7(){ note_ctor("S19656C7", this);} // tgen

static void Test_S19656C7()
{
  extern Class_Descriptor cd_S19656C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4754,12478)];
    init_test(&cd_S19656C7, buf);
    S19656C7 *dp, &lv = *(dp=new (buf) S19656C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(76048,49908), "sizeof(S19656C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19656C7)");
    /*is_ambiguous_... S19656C7::S19656C3_nt */ AMB_check_base_class_offset(lv, (S19656C3_nt*), ABISELECT(60320,39548), "S19656C7");
    check_base_class_offset(lv, (S19656C4_nt*)(S19656C9*)(S19656C8*), 0, "S19656C7");
    check_base_class_offset(lv, (S19656C10_nt*)(S19656C9*)(S19656C8*), ABISELECT(61760,40548), "S19656C7");
    check_base_class_offset(lv, (S19656C10_nt*)(S19656C13*)(S19656C12*), ABISELECT(61760,40548), "S19656C7");
    /*is_ambiguous_... S19656C7::S19656C9 */ AMB_check_base_class_offset(lv, (S19656C10_nt*)(S19656C9*), ABISELECT(61760,40548), "S19656C7");
    check_base_class_offset(lv, (S19656C11_nt*)(S19656C9*)(S19656C8*), ABISELECT(296,200), "S19656C7");
    check_base_class_offset(lv, (S19656C6_nt*)(S19656C9*)(S19656C8*), ABISELECT(68000,44624), "S19656C7");
    check_base_class_offset(lv, (S19656C6_nt*)(S19656C13*)(S19656C12*), ABISELECT(68000,44624), "S19656C7");
    /*is_ambiguous_... S19656C7::S19656C9 */ AMB_check_base_class_offset(lv, (S19656C6_nt*)(S19656C9*), ABISELECT(68000,44624), "S19656C7");
    check_base_class_offset(lv, (S19656C9*)(S19656C8*), 0, "S19656C7");
    /*is_ambiguous_... S19656C8::S19656C6_nt */ AMB_check_base_class_offset(lv, (S19656C6_nt*)(S19656C8*), ABISELECT(7296,4768), "S19656C7");
    /*is_ambiguous_... S19656C8::S19656C11_nt */ AMB_check_base_class_offset(lv, (S19656C11_nt*)(S19656C8*), ABISELECT(7744,5084), "S19656C7");
    /*is_ambiguous_... S19656C8::S19656C10_nt */ AMB_check_base_class_offset(lv, (S19656C10_nt*)(S19656C8*), ABISELECT(7824,5128), "S19656C7");
    /*is_ambiguous_... S19656C8::S19656C4_nt */ AMB_check_base_class_offset(lv, (S19656C4_nt*)(S19656C8*), ABISELECT(68448,44940), "S19656C7");
    check_base_class_offset(lv, (S19656C8*), 0, "S19656C7");
    /*is_ambiguous_... S19656C7::S19656C9 */ AMB_check_base_class_offset(lv, (S19656C4_nt*)(S19656C9*), ABISELECT(68752,45140), "S19656C7");
    /*is_ambiguous_... S19656C7::S19656C9 */ AMB_check_base_class_offset(lv, (S19656C11_nt*)(S19656C9*), ABISELECT(69048,45340), "S19656C7");
    check_base_class_offset(lv, (S19656C9*)(S19656C13*)(S19656C12*), ABISELECT(68752,45140), "S19656C7");
    /*is_ambiguous_... S19656C13::S19656C11_nt */ AMB_check_base_class_offset(lv, (S19656C11_nt*)(S19656C13*)(S19656C12*), ABISELECT(14672,9612), "S19656C7");
    check_base_class_offset(lv, (S19656C13*)(S19656C12*), ABISELECT(14672,9612), "S19656C7");
    /*is_ambiguous_... S19656C12::S19656C4_nt */ AMB_check_base_class_offset(lv, (S19656C4_nt*)(S19656C12*), ABISELECT(15168,9908), "S19656C7");
    check_base_class_offset(lv, (S19656C3_nt*)(S19656C12*), ABISELECT(15472,10108), "S19656C7");
    check_base_class_offset(lv, (S19656C12*), ABISELECT(14672,9612), "S19656C7");
    check_field_offset(lv, s19656c7f0, ABISELECT(38576,25312), "S19656C7.s19656c7f0");
    check_field_offset(lv, s19656c7f1, ABISELECT(38592,25316), "S19656C7.s19656c7f1");
    check_field_offset(lv, s19656c7f2, ABISELECT(60256,39520), "S19656C7.s19656c7f2");
    test_class_info(&lv, &cd_S19656C7);
    dp->~S19656C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19656C7(Test_S19656C7, "S19656C7", ABISELECT(76048,49908));

#else // __cplusplus

extern void _ZN8S19656C7C1Ev();
extern void _ZN8S19656C7D2Ev();
Name_Map name_map_S19656C7[] = {
  NSPAIR(_ZN8S19656C7C1Ev),
  NSPAIR(_ZN8S19656C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19656C3_nt;
extern VTBL_ENTRY _ZTI11S19656C3_nt[];
extern  VTBL_ENTRY _ZTV11S19656C3_nt[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
extern Class_Descriptor cd_S19656C9;
extern VTBL_ENTRY _ZTI8S19656C9[];
extern  VTBL_ENTRY _ZTV8S19656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C9[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C8;
extern VTBL_ENTRY _ZTI8S19656C8[];
extern  VTBL_ENTRY _ZTV8S19656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C8[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C9;
extern VTBL_ENTRY _ZTI8S19656C9[];
extern  VTBL_ENTRY _ZTV8S19656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C9[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C13;
extern VTBL_ENTRY _ZTI9S19656C13[];
extern  VTBL_ENTRY _ZTV9S19656C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19656C13[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C3_nt;
extern VTBL_ENTRY _ZTI11S19656C3_nt[];
extern  VTBL_ENTRY _ZTV11S19656C3_nt[];
extern Class_Descriptor cd_S19656C12;
extern VTBL_ENTRY _ZTI9S19656C12[];
extern  VTBL_ENTRY _ZTV9S19656C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19656C12[];
static Base_Class bases_S19656C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19656C3_nt,    ABISELECT(60320,39548), //bcp->offset
    46, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19656C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19656C10_nt,    ABISELECT(61760,40548), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19656C11_nt,    ABISELECT(296,200), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19656C6_nt,    ABISELECT(68000,44624), //bcp->offset
    59, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19656C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19656C6_nt,    ABISELECT(7296,4768), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19656C11_nt,    ABISELECT(7744,5084), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19656C10_nt,    ABISELECT(7824,5128), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19656C4_nt,    ABISELECT(68448,44940), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19656C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19656C4_nt,    ABISELECT(68752,45140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19656C11_nt,    ABISELECT(69048,45340), //bcp->offset
    84, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19656C9,    ABISELECT(68752,45140), //bcp->offset
    71, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19656C11_nt,    ABISELECT(14672,9612), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19656C13,    ABISELECT(14672,9612), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19656C4_nt,    ABISELECT(15168,9908), //bcp->offset
    36, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19656C3_nt,    ABISELECT(15472,10108), //bcp->offset
    40, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19656C12,    ABISELECT(14672,9612), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19656C7[];
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C7D1Ev();
extern void _ZN8S19656C7D0Ev();
extern void _ZN8S19656C83v10Ev();
extern void _ZN8S19656C83v11Ev();
extern void ABISELECT(_ZThn296_N8S19656C7D1Ev,_ZThn200_N8S19656C7D1Ev)();
extern void ABISELECT(_ZThn296_N8S19656C7D0Ev,_ZThn200_N8S19656C7D0Ev)();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
extern void ABISELECT(_ZThn7744_N8S19656C7D1Ev,_ZThn5084_N8S19656C7D1Ev)();
extern void ABISELECT(_ZThn7744_N8S19656C7D0Ev,_ZThn5084_N8S19656C7D0Ev)();
extern void _ZN12S19656C10_nt2v6Ev();
extern void ABISELECT(_ZThn14672_N8S19656C7D1Ev,_ZThn9612_N8S19656C7D1Ev)();
extern void ABISELECT(_ZThn14672_N8S19656C7D0Ev,_ZThn9612_N8S19656C7D0Ev)();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void ABISELECT(_ZThn15472_N8S19656C7D1Ev,_ZThn10108_N8S19656C7D1Ev)();
extern void ABISELECT(_ZThn15472_N8S19656C7D0Ev,_ZThn10108_N8S19656C7D0Ev)();
extern void _ZN11S19656C3_nt2v2Ev();
extern void _ZN11S19656C3_nt2v3Ev();
extern void ABISELECT(_ZTv0_n24_N8S19656C7D1Ev,_ZTv0_n12_N8S19656C7D1Ev)();
extern void ABISELECT(_ZThn60320_N8S19656C7D1Ev,_ZThn39548_N8S19656C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19656C7D0Ev,_ZTv0_n12_N8S19656C7D0Ev)();
extern void ABISELECT(_ZThn60320_N8S19656C7D0Ev,_ZThn39548_N8S19656C7D0Ev)() __attribute__((weak));
extern void _ZN11S19656C3_nt2v2Ev();
extern void _ZN11S19656C3_nt2v3Ev();
extern void _ZN12S19656C10_nt2v6Ev();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N8S19656C7D1Ev,_ZTv0_n32_N8S19656C7D1Ev)();
extern void ABISELECT(_ZThn68752_N8S19656C7D1Ev,_ZThn45140_N8S19656C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19656C7D0Ev,_ZTv0_n32_N8S19656C7D0Ev)();
extern void ABISELECT(_ZThn68752_N8S19656C7D0Ev,_ZThn45140_N8S19656C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn296_n64_N8S19656C7D1Ev,_ZTvn200_n32_N8S19656C7D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N8S19656C7D0Ev,_ZTvn200_n32_N8S19656C7D0Ev)();
static  VTBL_ENTRY vtc_S19656C7[] = {
  ABISELECT(68752,45140),
  ABISELECT(60320,39548),
  ABISELECT(68448,44940),
  ABISELECT(68000,44624),
  ABISELECT(61760,40548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v11Ev,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19656C7D1Ev,_ZThn200_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19656C7D0Ev,_ZThn200_N8S19656C7D0Ev),
  ABISELECT(-7296,-4768),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
  ABISELECT(-7744,-5084),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn7744_N8S19656C7D1Ev,_ZThn5084_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn7744_N8S19656C7D0Ev,_ZThn5084_N8S19656C7D0Ev),
  ABISELECT(-7824,-5128),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  ABISELECT(54080,35528),
  ABISELECT(53328,35012),
  ABISELECT(47088,30936),
  ABISELECT(-14672,-9612),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn14672_N8S19656C7D1Ev,_ZThn9612_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn14672_N8S19656C7D0Ev,_ZThn9612_N8S19656C7D0Ev),
  ABISELECT(-15168,-9908),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  ABISELECT(-15472,-10108),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn15472_N8S19656C7D1Ev,_ZThn10108_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn15472_N8S19656C7D0Ev,_ZThn10108_N8S19656C7D0Ev),
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v3Ev,
  0,
  0,
  ABISELECT(-60320,-39548),
  ABISELECT(-60320,-39548),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19656C7D1Ev,_ZTv0_n12_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19656C7D0Ev,_ZTv0_n12_N8S19656C7D0Ev),
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v3Ev,
  0,
  ABISELECT(-61760,-40548),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-68000,-44624),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
  0,
  0,
  ABISELECT(-68448,-44940),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  ABISELECT(-68752,-45140),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-68752,-45140),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19656C7D1Ev,_ZTv0_n32_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19656C7D0Ev,_ZTv0_n32_N8S19656C7D0Ev),
  ABISELECT(-69048,-45340),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N8S19656C7D1Ev,_ZTvn200_n32_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N8S19656C7D0Ev,_ZTvn200_n32_N8S19656C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19656C7[];
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C8D1Ev();
extern void _ZN8S19656C8D0Ev();
extern void _ZN8S19656C83v10Ev();
extern void _ZN8S19656C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C8__8S19656C7[] = {
  ABISELECT(68448,44940),
  ABISELECT(68000,44624),
  ABISELECT(61760,40548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v11Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C9D1Ev();
extern void _ZN8S19656C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C98S19656C8__8S19656C7[] = {
  ABISELECT(68000,44624),
  ABISELECT(61760,40548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C98S19656C8__8S19656C7[] = {
  0,
  ABISELECT(-61760,-40548),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C98S19656C8__8S19656C7[] = {
  0,
  0,
  ABISELECT(-68000,-44624),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C8__8S19656C7[] = {
  0,
  ABISELECT(-61760,-40548),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C8__8S19656C7[] = {
  0,
  0,
  ABISELECT(-68000,-44624),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C4_nt__A1__8S19656C8__8S19656C7[] = {
  0,
  0,
  ABISELECT(-68448,-44940),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
};
extern void _ZN9S19656C12D1Ev();
extern void _ZN9S19656C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19656C12__8S19656C7[] = {
  ABISELECT(54080,35528),
  ABISELECT(53328,35012),
  ABISELECT(47088,30936),
  0,
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN9S19656C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19656C12D0Ev,
};
extern void _ZN9S19656C13D1Ev();
extern void _ZN9S19656C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19656C139S19656C12__8S19656C7[] = {
  ABISELECT(54080,35528),
  ABISELECT(53328,35012),
  ABISELECT(47088,30936),
  0,
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN9S19656C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19656C13D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__9S19656C139S19656C12__8S19656C7[] = {
  0,
  ABISELECT(-47088,-30936),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__9S19656C139S19656C12__8S19656C7[] = {
  0,
  0,
  ABISELECT(-53328,-35012),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev)();
extern void ABISELECT(_ZThn54080_N9S19656C13D1Ev,_ZThn35528_N9S19656C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev)();
extern void ABISELECT(_ZThn54080_N9S19656C13D0Ev,_ZThn35528_N9S19656C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19656C9__9S19656C139S19656C12__8S19656C7[] = {
  ABISELECT(-54080,-35528),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-54080,-35528),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev),
};
extern void ABISELECT(_ZTvn296_n64_N9S19656C13D1Ev,_ZTvn200_n32_N9S19656C13D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19656C13D0Ev,_ZTvn200_n32_N9S19656C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19656C11_nt8S19656C9__9S19656C139S19656C12__8S19656C7[] = {
  ABISELECT(-54376,-35728),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C13D1Ev,_ZTvn200_n32_N9S19656C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C13D0Ev,_ZTvn200_n32_N9S19656C13D0Ev),
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__9S19656C12__8S19656C7[] = {
  0,
  ABISELECT(-47088,-30936),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__9S19656C12__8S19656C7[] = {
  0,
  0,
  ABISELECT(-53328,-35012),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19656C12D1Ev,_ZTv0_n32_N9S19656C12D1Ev)();
extern void ABISELECT(_ZThn54080_N9S19656C12D1Ev,_ZThn35528_N9S19656C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19656C12D0Ev,_ZTv0_n32_N9S19656C12D0Ev)();
extern void ABISELECT(_ZThn54080_N9S19656C12D0Ev,_ZThn35528_N9S19656C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19656C9__9S19656C12__8S19656C7[] = {
  ABISELECT(-54080,-35528),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-54080,-35528),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C12D1Ev,_ZTv0_n32_N9S19656C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C12D0Ev,_ZTv0_n32_N9S19656C12D0Ev),
};
extern void ABISELECT(_ZTvn296_n64_N9S19656C12D1Ev,_ZTvn200_n32_N9S19656C12D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19656C12D0Ev,_ZTvn200_n32_N9S19656C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19656C11_nt8S19656C9__9S19656C12__8S19656C7[] = {
  ABISELECT(-54376,-35728),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C12D1Ev,_ZTvn200_n32_N9S19656C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C12D0Ev,_ZTvn200_n32_N9S19656C12D0Ev),
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C9D1Ev();
extern void _ZN8S19656C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C9__A1__8S19656C7[] = {
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C9__A1__8S19656C7[] = {
  0,
  ABISELECT(6992,4592),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C9__A1__8S19656C7[] = {
  0,
  0,
  ABISELECT(752,516),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
static  VTT_ENTRY vtt_S19656C7[] = {
  {&(_ZTV8S19656C7[7]),  7,88},
  {&(_tg__ZTV8S19656C8__8S19656C7[5]),  5,12},
  {&(_tg__ZTV8S19656C98S19656C8__8S19656C7[4]),  4,9},
  {&(_tg__ZTV12S19656C10_nt__8S19656C98S19656C8__8S19656C7[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C98S19656C8__8S19656C7[4]),  4,6},
  {&(_tg__ZTV12S19656C10_nt__8S19656C8__8S19656C7[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C8__8S19656C7[4]),  4,6},
  {&(_tg__ZTV11S19656C4_nt__A1__8S19656C8__8S19656C7[4]),  4,6},
  {&(_tg__ZTV9S19656C12__8S19656C7[5]),  5,7},
  {&(_tg__ZTV9S19656C139S19656C12__8S19656C7[5]),  5,7},
  {&(_tg__ZTV12S19656C10_nt__9S19656C139S19656C12__8S19656C7[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__9S19656C139S19656C12__8S19656C7[4]),  4,6},
  {&(_tg__ZTV8S19656C9__9S19656C139S19656C12__8S19656C7[8]),  8,13},
  {&(_tg__ZTV12S19656C11_nt8S19656C9__9S19656C139S19656C12__8S19656C7[2]),  2,4},
  {&(_tg__ZTV12S19656C10_nt__9S19656C12__8S19656C7[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__9S19656C12__8S19656C7[4]),  4,6},
  {&(_tg__ZTV8S19656C9__9S19656C12__8S19656C7[8]),  8,13},
  {&(_tg__ZTV12S19656C11_nt8S19656C9__9S19656C12__8S19656C7[2]),  2,4},
  {&(_ZTV8S19656C7[51]),  51,88},
  {&(_ZTV8S19656C7[58]),  58,88},
  {&(_ZTV8S19656C7[63]),  63,88},
  {&(_ZTV8S19656C7[69]),  69,88},
  {&(_ZTV8S19656C7[34]),  34,88},
  {&(_ZTV8S19656C7[79]),  79,88},
  {&(_ZTV8S19656C7[86]),  86,88},
  {&(_tg__ZTV8S19656C9__A1__8S19656C7[4]),  4,9},
  {&(_tg__ZTV12S19656C10_nt__8S19656C9__A1__8S19656C7[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C9__A1__8S19656C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19656C7[];
extern  VTBL_ENTRY _ZTV8S19656C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C7[];
static VTBL_ENTRY alt_thunk_names50[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C12D0Ev,_ZTv0_n32_N9S19656C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54080_N9S19656C12D0Ev,_ZThn35528_N9S19656C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C12D1Ev,_ZTv0_n32_N9S19656C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54080_N9S19656C12D1Ev,_ZThn35528_N9S19656C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54080_N9S19656C13D0Ev,_ZThn35528_N9S19656C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54080_N9S19656C13D1Ev,_ZThn35528_N9S19656C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19656C7D0Ev,_ZTv0_n32_N8S19656C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn68752_N8S19656C7D0Ev,_ZThn45140_N8S19656C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19656C7D1Ev,_ZTv0_n32_N8S19656C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn68752_N8S19656C7D1Ev,_ZThn45140_N8S19656C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19656C7D0Ev,_ZTv0_n12_N8S19656C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60320_N8S19656C7D0Ev,_ZThn39548_N8S19656C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19656C7D1Ev,_ZTv0_n12_N8S19656C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60320_N8S19656C7D1Ev,_ZThn39548_N8S19656C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19656C7 = {  "S19656C7", // class name
  bases_S19656C7, 19,
  &(vtc_S19656C7[0]), // expected_vtbl_contents
  &(vtt_S19656C7[0]), // expected_vtt_contents
  ABISELECT(76048,49908), // object size
  NSPAIRA(_ZTI8S19656C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19656C7),88, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19656C7),28, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names50,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19656C1  : virtual S19656C2_nt , virtual S19656C3_nt , S19656C7 , S19656C8 {
  short s19656c1f0:5;
  void *s19656c1f1;
  long s19656c1f2;
  long s19656c1f3;
  char s19656c1f4[2];
  int s19656c1f5;
  ::S19656C2_nt s19656c1f6[10];
  int s19656c1f7;
  int s19656c1f8:5;
  virtual  ~S19656C1(); // _ZN8S19656C1D2Ev
  virtual void  v1(); // _ZN8S19656C12v1Ev
  S19656C1(); // tgen
};
//SIG(1 S19656C1) C1{ VBC2{ m Fc} VBC3{ vd v2 v3 Fi FC4{ v4 v5 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp} Fi[2] FU5{ m FL FD[10] FD Fs:0} FD Fi Fi FC6{ v7 v8 Fc FL[10] FD FC4 Fp Fs Fp Fi} FL Fi FC6} BC7{ VBC3 BC8{ BC9{ BC4 VBC10{ v6 FC4[8] FC4[2] Fp Fi FC11{ vd m Fp FL Fp[7]} FC4[5] Fp[5] FC4[5]} BC11 VBC6 v9 Fi:2 FD[7] Fp FC10 Fp Fi Fp Fp FC11 FC4 FD[8]} BC6 BC11 BC10 VBC4 vd v10 v11 FC11 Fi Fp Fp FL FL Fi Fi Fp Fi FC6 Fi} BC12{ BC13{ VBC10 VBC6 VBC9 BC11 Fp FC11 FC4 Fs} BC4 BC3 FC8} vd Fp FC8 Fp[7]} BC8 vd v1 Fs:5 Fp Fl Fl Fc[2] Fi FC2[10] Fi Fi:5}


 S19656C1 ::~S19656C1(){ note_dtor("S19656C1", this);}
void  S19656C1 ::v1(){vfunc_called(this, "_ZN8S19656C12v1Ev");}
S19656C1 ::S19656C1(){ note_ctor("S19656C1", this);} // tgen

static void Test_S19656C1()
{
  extern Class_Descriptor cd_S19656C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5674,14892)];
    init_test(&cd_S19656C1, buf);
    S19656C1 *dp, &lv = *(dp=new (buf) S19656C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(90768,59564), "sizeof(S19656C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19656C1)");
    check_base_class_offset(lv, (S19656C2_nt*), ABISELECT(75033,49201), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C3_nt */ AMB_check_base_class_offset(lv, (S19656C3_nt*), ABISELECT(75040,49204), "S19656C1");
    /*is_ambiguous_... S19656C7::S19656C3_nt */ AMB_check_base_class_offset(lv, (S19656C3_nt*)(S19656C7*), ABISELECT(75040,49204), "S19656C1");
    check_base_class_offset(lv, (S19656C4_nt*)(S19656C9*)(S19656C8*)(S19656C7*), 0, "S19656C1");
    check_base_class_offset(lv, (S19656C10_nt*)(S19656C9*)(S19656C8*)(S19656C7*), ABISELECT(76480,50204), "S19656C1");
    check_base_class_offset(lv, (S19656C10_nt*)(S19656C13*)(S19656C12*)(S19656C7*), ABISELECT(76480,50204), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C9 */ AMB_check_base_class_offset(lv, (S19656C10_nt*)(S19656C9*), ABISELECT(76480,50204), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C10_nt*)(S19656C9*)(S19656C8*), ABISELECT(76480,50204), "S19656C1");
    check_base_class_offset(lv, (S19656C11_nt*)(S19656C9*)(S19656C8*)(S19656C7*), ABISELECT(296,200), "S19656C1");
    check_base_class_offset(lv, (S19656C6_nt*)(S19656C9*)(S19656C8*)(S19656C7*), ABISELECT(82720,54280), "S19656C1");
    check_base_class_offset(lv, (S19656C6_nt*)(S19656C13*)(S19656C12*)(S19656C7*), ABISELECT(82720,54280), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C9 */ AMB_check_base_class_offset(lv, (S19656C6_nt*)(S19656C9*), ABISELECT(82720,54280), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C6_nt*)(S19656C9*)(S19656C8*), ABISELECT(82720,54280), "S19656C1");
    check_base_class_offset(lv, (S19656C9*)(S19656C8*)(S19656C7*), 0, "S19656C1");
    /*is_ambiguous_... S19656C8::S19656C6_nt */ AMB_check_base_class_offset(lv, (S19656C6_nt*)(S19656C8*)(S19656C7*), ABISELECT(7296,4768), "S19656C1");
    /*is_ambiguous_... S19656C8::S19656C11_nt */ AMB_check_base_class_offset(lv, (S19656C11_nt*)(S19656C8*)(S19656C7*), ABISELECT(7744,5084), "S19656C1");
    /*is_ambiguous_... S19656C8::S19656C10_nt */ AMB_check_base_class_offset(lv, (S19656C10_nt*)(S19656C8*)(S19656C7*), ABISELECT(7824,5128), "S19656C1");
    /*is_ambiguous_... S19656C8::S19656C4_nt */ AMB_check_base_class_offset(lv, (S19656C4_nt*)(S19656C8*)(S19656C7*), ABISELECT(83168,54596), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C4_nt*)(S19656C8*), ABISELECT(83168,54596), "S19656C1");
    check_base_class_offset(lv, (S19656C8*)(S19656C7*), 0, "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C9 */ AMB_check_base_class_offset(lv, (S19656C4_nt*)(S19656C9*), ABISELECT(83472,54796), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C9 */ AMB_check_base_class_offset(lv, (S19656C11_nt*)(S19656C9*), ABISELECT(83768,54996), "S19656C1");
    check_base_class_offset(lv, (S19656C9*)(S19656C13*)(S19656C12*)(S19656C7*), ABISELECT(83472,54796), "S19656C1");
    /*is_ambiguous_... S19656C13::S19656C11_nt */ AMB_check_base_class_offset(lv, (S19656C11_nt*)(S19656C13*)(S19656C12*)(S19656C7*), ABISELECT(14672,9612), "S19656C1");
    check_base_class_offset(lv, (S19656C13*)(S19656C12*)(S19656C7*), ABISELECT(14672,9612), "S19656C1");
    /*is_ambiguous_... S19656C12::S19656C4_nt */ AMB_check_base_class_offset(lv, (S19656C4_nt*)(S19656C12*)(S19656C7*), ABISELECT(15168,9908), "S19656C1");
    check_base_class_offset(lv, (S19656C3_nt*)(S19656C12*)(S19656C7*), ABISELECT(15472,10108), "S19656C1");
    check_base_class_offset(lv, (S19656C12*)(S19656C7*), ABISELECT(14672,9612), "S19656C1");
    check_base_class_offset(lv, (S19656C7*), 0, "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C4_nt*)(S19656C9*)(S19656C8*), ABISELECT(60320,39548), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C11_nt*)(S19656C9*)(S19656C8*), ABISELECT(60616,39748), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C9*)(S19656C8*), ABISELECT(60320,39548), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C6_nt*)(S19656C8*), ABISELECT(67616,44316), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C11_nt*)(S19656C8*), ABISELECT(68064,44632), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C10_nt*)(S19656C8*), ABISELECT(68144,44676), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C8*), ABISELECT(60320,39548), "S19656C1");
    set_bf_and_test(lv, s19656c1f0, ABISELECT(74980,49160), 0, 5, 1, "S19656C1");
    set_bf_and_test(lv, s19656c1f0, ABISELECT(74980,49160), 0, 5, hide_sll(1LL<<4), "S19656C1");
    check_field_offset(lv, s19656c1f1, ABISELECT(74984,49164), "S19656C1.s19656c1f1");
    check_field_offset(lv, s19656c1f2, ABISELECT(74992,49168), "S19656C1.s19656c1f2");
    check_field_offset(lv, s19656c1f3, ABISELECT(75000,49172), "S19656C1.s19656c1f3");
    check_field_offset(lv, s19656c1f4, ABISELECT(75008,49176), "S19656C1.s19656c1f4");
    check_field_offset(lv, s19656c1f5, ABISELECT(75012,49180), "S19656C1.s19656c1f5");
    check_field_offset(lv, s19656c1f6, ABISELECT(75016,49184), "S19656C1.s19656c1f6");
    check_field_offset(lv, s19656c1f7, ABISELECT(75028,49196), "S19656C1.s19656c1f7");
    set_bf_and_test(lv, s19656c1f8, ABISELECT(75032,49200), 0, 5, 1, "S19656C1");
    set_bf_and_test(lv, s19656c1f8, ABISELECT(75032,49200), 0, 5, hide_sll(1LL<<4), "S19656C1");
    test_class_info(&lv, &cd_S19656C1);
    dp->~S19656C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19656C1(Test_S19656C1, "S19656C1", ABISELECT(90768,59564));

#else // __cplusplus

extern void _ZN8S19656C1C1Ev();
extern void _ZN8S19656C1D2Ev();
Name_Map name_map_S19656C1[] = {
  NSPAIR(_ZN8S19656C1C1Ev),
  NSPAIR(_ZN8S19656C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19656C2_nt;
extern VTBL_ENTRY _ZTI11S19656C2_nt[];
extern Class_Descriptor cd_S19656C3_nt;
extern VTBL_ENTRY _ZTI11S19656C3_nt[];
extern  VTBL_ENTRY _ZTV11S19656C3_nt[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
extern Class_Descriptor cd_S19656C9;
extern VTBL_ENTRY _ZTI8S19656C9[];
extern  VTBL_ENTRY _ZTV8S19656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C9[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C8;
extern VTBL_ENTRY _ZTI8S19656C8[];
extern  VTBL_ENTRY _ZTV8S19656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C8[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C9;
extern VTBL_ENTRY _ZTI8S19656C9[];
extern  VTBL_ENTRY _ZTV8S19656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C9[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C13;
extern VTBL_ENTRY _ZTI9S19656C13[];
extern  VTBL_ENTRY _ZTV9S19656C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19656C13[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C3_nt;
extern VTBL_ENTRY _ZTI11S19656C3_nt[];
extern  VTBL_ENTRY _ZTV11S19656C3_nt[];
extern Class_Descriptor cd_S19656C12;
extern VTBL_ENTRY _ZTI9S19656C12[];
extern  VTBL_ENTRY _ZTV9S19656C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19656C12[];
extern Class_Descriptor cd_S19656C7;
extern VTBL_ENTRY _ZTI8S19656C7[];
extern  VTBL_ENTRY _ZTV8S19656C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C7[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C9;
extern VTBL_ENTRY _ZTI8S19656C9[];
extern  VTBL_ENTRY _ZTV8S19656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C9[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C8;
extern VTBL_ENTRY _ZTI8S19656C8[];
extern  VTBL_ENTRY _ZTV8S19656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C8[];
static Base_Class bases_S19656C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19656C2_nt,    ABISELECT(75033,49201), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19656C3_nt,    ABISELECT(75040,49204), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19656C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19656C10_nt,    ABISELECT(76480,50204), //bcp->offset
    84, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19656C11_nt,    ABISELECT(296,200), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19656C6_nt,    ABISELECT(82720,54280), //bcp->offset
    88, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19656C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19656C6_nt,    ABISELECT(7296,4768), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19656C11_nt,    ABISELECT(7744,5084), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19656C10_nt,    ABISELECT(7824,5128), //bcp->offset
    28, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19656C4_nt,    ABISELECT(83168,54596), //bcp->offset
    94, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19656C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19656C4_nt,    ABISELECT(83472,54796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19656C11_nt,    ABISELECT(83768,54996), //bcp->offset
    113, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19656C9,    ABISELECT(83472,54796), //bcp->offset
    100, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19656C11_nt,    ABISELECT(14672,9612), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19656C13,    ABISELECT(14672,9612), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19656C4_nt,    ABISELECT(15168,9908), //bcp->offset
    38, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19656C3_nt,    ABISELECT(15472,10108), //bcp->offset
    42, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19656C12,    ABISELECT(14672,9612), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19656C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19656C4_nt,    ABISELECT(60320,39548), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19656C11_nt,    ABISELECT(60616,39748), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19656C9,    ABISELECT(60320,39548), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19656C6_nt,    ABISELECT(67616,44316), //bcp->offset
    64, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19656C11_nt,    ABISELECT(68064,44632), //bcp->offset
    68, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19656C10_nt,    ABISELECT(68144,44676), //bcp->offset
    72, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19656C8,    ABISELECT(60320,39548), //bcp->offset
    48, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19656C1[];
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C1D1Ev();
extern void _ZN8S19656C1D0Ev();
extern void _ZN8S19656C83v10Ev();
extern void _ZN8S19656C83v11Ev();
extern void _ZN8S19656C12v1Ev();
extern void ABISELECT(_ZThn296_N8S19656C1D1Ev,_ZThn200_N8S19656C1D1Ev)();
extern void ABISELECT(_ZThn296_N8S19656C1D0Ev,_ZThn200_N8S19656C1D0Ev)();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
extern void ABISELECT(_ZThn7744_N8S19656C1D1Ev,_ZThn5084_N8S19656C1D1Ev)();
extern void ABISELECT(_ZThn7744_N8S19656C1D0Ev,_ZThn5084_N8S19656C1D0Ev)();
extern void _ZN12S19656C10_nt2v6Ev();
extern void ABISELECT(_ZThn14672_N8S19656C1D1Ev,_ZThn9612_N8S19656C1D1Ev)();
extern void ABISELECT(_ZThn14672_N8S19656C1D0Ev,_ZThn9612_N8S19656C1D0Ev)();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void ABISELECT(_ZThn15472_N8S19656C1D1Ev,_ZThn10108_N8S19656C1D1Ev)();
extern void ABISELECT(_ZThn15472_N8S19656C1D0Ev,_ZThn10108_N8S19656C1D0Ev)();
extern void _ZN11S19656C3_nt2v2Ev();
extern void _ZN11S19656C3_nt2v3Ev();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZThn60320_N8S19656C1D1Ev,_ZThn39548_N8S19656C1D1Ev)();
extern void ABISELECT(_ZThn60320_N8S19656C1D0Ev,_ZThn39548_N8S19656C1D0Ev)();
extern void _ZN8S19656C83v10Ev();
extern void _ZN8S19656C83v11Ev();
extern void ABISELECT(_ZThn60616_N8S19656C1D1Ev,_ZThn39748_N8S19656C1D1Ev)();
extern void ABISELECT(_ZThn60616_N8S19656C1D0Ev,_ZThn39748_N8S19656C1D0Ev)();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
extern void ABISELECT(_ZThn68064_N8S19656C1D1Ev,_ZThn44632_N8S19656C1D1Ev)();
extern void ABISELECT(_ZThn68064_N8S19656C1D0Ev,_ZThn44632_N8S19656C1D0Ev)();
extern void _ZN12S19656C10_nt2v6Ev();
extern void ABISELECT(_ZTv0_n24_N8S19656C1D1Ev,_ZTv0_n12_N8S19656C1D1Ev)();
extern void ABISELECT(_ZThn75040_N8S19656C1D1Ev,_ZThn49204_N8S19656C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19656C1D0Ev,_ZTv0_n12_N8S19656C1D0Ev)();
extern void ABISELECT(_ZThn75040_N8S19656C1D0Ev,_ZThn49204_N8S19656C1D0Ev)() __attribute__((weak));
extern void _ZN11S19656C3_nt2v2Ev();
extern void _ZN11S19656C3_nt2v3Ev();
extern void _ZN12S19656C10_nt2v6Ev();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N8S19656C1D1Ev,_ZTv0_n32_N8S19656C1D1Ev)();
extern void ABISELECT(_ZThn83472_N8S19656C1D1Ev,_ZThn54796_N8S19656C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19656C1D0Ev,_ZTv0_n32_N8S19656C1D0Ev)();
extern void ABISELECT(_ZThn83472_N8S19656C1D0Ev,_ZThn54796_N8S19656C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn296_n64_N8S19656C1D1Ev,_ZTvn200_n32_N8S19656C1D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N8S19656C1D0Ev,_ZTvn200_n32_N8S19656C1D0Ev)();
static  VTBL_ENTRY vtc_S19656C1[] = {
  ABISELECT(75033,49201),
  ABISELECT(83472,54796),
  ABISELECT(75040,49204),
  ABISELECT(83168,54596),
  ABISELECT(82720,54280),
  ABISELECT(76480,50204),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v11Ev,
  (VTBL_ENTRY)&_ZN8S19656C12v1Ev,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19656C1D1Ev,_ZThn200_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19656C1D0Ev,_ZThn200_N8S19656C1D0Ev),
  ABISELECT(-7296,-4768),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
  ABISELECT(-7744,-5084),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn7744_N8S19656C1D1Ev,_ZThn5084_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn7744_N8S19656C1D0Ev,_ZThn5084_N8S19656C1D0Ev),
  ABISELECT(-7824,-5128),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  ABISELECT(68800,45184),
  ABISELECT(68048,44668),
  ABISELECT(61808,40592),
  ABISELECT(-14672,-9612),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn14672_N8S19656C1D1Ev,_ZThn9612_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn14672_N8S19656C1D0Ev,_ZThn9612_N8S19656C1D0Ev),
  ABISELECT(-15168,-9908),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  ABISELECT(-15472,-10108),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn15472_N8S19656C1D1Ev,_ZThn10108_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn15472_N8S19656C1D0Ev,_ZThn10108_N8S19656C1D0Ev),
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v3Ev,
  ABISELECT(22848,15048),
  ABISELECT(22400,14732),
  ABISELECT(16160,10656),
  ABISELECT(-60320,-39548),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn60320_N8S19656C1D1Ev,_ZThn39548_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn60320_N8S19656C1D0Ev,_ZThn39548_N8S19656C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19656C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v11Ev,
  ABISELECT(-60616,-39748),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn60616_N8S19656C1D1Ev,_ZThn39748_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn60616_N8S19656C1D0Ev,_ZThn39748_N8S19656C1D0Ev),
  ABISELECT(-67616,-44316),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
  ABISELECT(-68064,-44632),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn68064_N8S19656C1D1Ev,_ZThn44632_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn68064_N8S19656C1D0Ev,_ZThn44632_N8S19656C1D0Ev),
  ABISELECT(-68144,-44676),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-75040,-49204),
  ABISELECT(-75040,-49204),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19656C1D1Ev,_ZTv0_n12_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19656C1D0Ev,_ZTv0_n12_N8S19656C1D0Ev),
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v3Ev,
  0,
  ABISELECT(-76480,-50204),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-82720,-54280),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
  0,
  0,
  ABISELECT(-83168,-54596),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  ABISELECT(-83472,-54796),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-83472,-54796),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19656C1D1Ev,_ZTv0_n32_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19656C1D0Ev,_ZTv0_n32_N8S19656C1D0Ev),
  ABISELECT(-83768,-54996),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N8S19656C1D1Ev,_ZTvn200_n32_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N8S19656C1D0Ev,_ZTvn200_n32_N8S19656C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19656C1[];
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C7D1Ev();
extern void _ZN8S19656C7D0Ev();
extern void _ZN8S19656C83v10Ev();
extern void _ZN8S19656C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C7__8S19656C1[] = {
  ABISELECT(83472,54796),
  ABISELECT(75040,49204),
  ABISELECT(83168,54596),
  ABISELECT(82720,54280),
  ABISELECT(76480,50204),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v11Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C8D1Ev();
extern void _ZN8S19656C8D0Ev();
extern void _ZN8S19656C83v10Ev();
extern void _ZN8S19656C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C88S19656C7__8S19656C1[] = {
  ABISELECT(83168,54596),
  ABISELECT(82720,54280),
  ABISELECT(76480,50204),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v11Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C9D1Ev();
extern void _ZN8S19656C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C98S19656C88S19656C7__8S19656C1[] = {
  ABISELECT(82720,54280),
  ABISELECT(76480,50204),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C98S19656C88S19656C7__8S19656C1[] = {
  0,
  ABISELECT(-76480,-50204),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C98S19656C88S19656C7__8S19656C1[] = {
  0,
  0,
  ABISELECT(-82720,-54280),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C88S19656C7__8S19656C1[] = {
  0,
  ABISELECT(-76480,-50204),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C88S19656C7__8S19656C1[] = {
  0,
  0,
  ABISELECT(-82720,-54280),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C4_nt__A1__8S19656C88S19656C7__8S19656C1[] = {
  0,
  0,
  ABISELECT(-83168,-54596),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
};
extern void _ZN9S19656C12D1Ev();
extern void _ZN9S19656C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19656C128S19656C7__8S19656C1[] = {
  ABISELECT(68800,45184),
  ABISELECT(68048,44668),
  ABISELECT(61808,40592),
  0,
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN9S19656C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19656C12D0Ev,
};
extern void _ZN9S19656C13D1Ev();
extern void _ZN9S19656C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19656C139S19656C128S19656C7__8S19656C1[] = {
  ABISELECT(68800,45184),
  ABISELECT(68048,44668),
  ABISELECT(61808,40592),
  0,
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN9S19656C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19656C13D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__9S19656C139S19656C128S19656C7__8S19656C1[] = {
  0,
  ABISELECT(-61808,-40592),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__9S19656C139S19656C128S19656C7__8S19656C1[] = {
  0,
  0,
  ABISELECT(-68048,-44668),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev)();
extern void ABISELECT(_ZThn68800_N9S19656C13D1Ev,_ZThn45184_N9S19656C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev)();
extern void ABISELECT(_ZThn68800_N9S19656C13D0Ev,_ZThn45184_N9S19656C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19656C9__9S19656C139S19656C128S19656C7__8S19656C1[] = {
  ABISELECT(-68800,-45184),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-68800,-45184),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev),
};
extern void ABISELECT(_ZTvn296_n64_N9S19656C13D1Ev,_ZTvn200_n32_N9S19656C13D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19656C13D0Ev,_ZTvn200_n32_N9S19656C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19656C11_nt8S19656C9__9S19656C139S19656C128S19656C7__8S19656C1[] = {
  ABISELECT(-69096,-45384),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C13D1Ev,_ZTvn200_n32_N9S19656C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C13D0Ev,_ZTvn200_n32_N9S19656C13D0Ev),
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__9S19656C128S19656C7__8S19656C1[] = {
  0,
  ABISELECT(-61808,-40592),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__9S19656C128S19656C7__8S19656C1[] = {
  0,
  0,
  ABISELECT(-68048,-44668),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19656C12D1Ev,_ZTv0_n32_N9S19656C12D1Ev)();
extern void ABISELECT(_ZThn68800_N9S19656C12D1Ev,_ZThn45184_N9S19656C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19656C12D0Ev,_ZTv0_n32_N9S19656C12D0Ev)();
extern void ABISELECT(_ZThn68800_N9S19656C12D0Ev,_ZThn45184_N9S19656C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19656C9__9S19656C128S19656C7__8S19656C1[] = {
  ABISELECT(-68800,-45184),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-68800,-45184),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C12D1Ev,_ZTv0_n32_N9S19656C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C12D0Ev,_ZTv0_n32_N9S19656C12D0Ev),
};
extern void ABISELECT(_ZTvn296_n64_N9S19656C12D1Ev,_ZTvn200_n32_N9S19656C12D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19656C12D0Ev,_ZTvn200_n32_N9S19656C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19656C11_nt8S19656C9__9S19656C128S19656C7__8S19656C1[] = {
  ABISELECT(-69096,-45384),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C12D1Ev,_ZTvn200_n32_N9S19656C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C12D0Ev,_ZTvn200_n32_N9S19656C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19656C7D1Ev,_ZTv0_n12_N8S19656C7D1Ev)();
extern void ABISELECT(_ZThn75040_N8S19656C7D1Ev,_ZThn49204_N8S19656C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19656C7D0Ev,_ZTv0_n12_N8S19656C7D0Ev)();
extern void ABISELECT(_ZThn75040_N8S19656C7D0Ev,_ZThn49204_N8S19656C7D0Ev)() __attribute__((weak));
extern void _ZN11S19656C3_nt2v2Ev();
extern void _ZN11S19656C3_nt2v3Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C3_nt__8S19656C7__8S19656C1[] = {
  0,
  0,
  ABISELECT(-75040,-49204),
  ABISELECT(-75040,-49204),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19656C7D1Ev,_ZTv0_n12_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19656C7D0Ev,_ZTv0_n12_N8S19656C7D0Ev),
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v3Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C7__8S19656C1[] = {
  0,
  ABISELECT(-76480,-50204),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C7__8S19656C1[] = {
  0,
  0,
  ABISELECT(-82720,-54280),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C4_nt__A1__8S19656C7__8S19656C1[] = {
  0,
  0,
  ABISELECT(-83168,-54596),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
};
extern void ABISELECT(_ZThn14672_N8S19656C7D1Ev,_ZThn9612_N8S19656C7D1Ev)();
extern void ABISELECT(_ZThn14672_N8S19656C7D0Ev,_ZThn9612_N8S19656C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19656C12__8S19656C7__8S19656C1[] = {
  ABISELECT(68800,45184),
  ABISELECT(68048,44668),
  ABISELECT(61808,40592),
  ABISELECT(-14672,-9612),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn14672_N8S19656C7D1Ev,_ZThn9612_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn14672_N8S19656C7D0Ev,_ZThn9612_N8S19656C7D0Ev),
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N8S19656C7D1Ev,_ZTv0_n32_N8S19656C7D1Ev)();
extern void ABISELECT(_ZThn83472_N8S19656C7D1Ev,_ZThn54796_N8S19656C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19656C7D0Ev,_ZTv0_n32_N8S19656C7D0Ev)();
extern void ABISELECT(_ZThn83472_N8S19656C7D0Ev,_ZThn54796_N8S19656C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19656C9__A1__8S19656C7__8S19656C1[] = {
  ABISELECT(-83472,-54796),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-83472,-54796),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19656C7D1Ev,_ZTv0_n32_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19656C7D0Ev,_ZTv0_n32_N8S19656C7D0Ev),
};
extern void ABISELECT(_ZTvn296_n64_N8S19656C7D1Ev,_ZTvn200_n32_N8S19656C7D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N8S19656C7D0Ev,_ZTvn200_n32_N8S19656C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19656C11_nt8S19656C9__A2__8S19656C7__8S19656C1[] = {
  ABISELECT(-83768,-54996),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N8S19656C7D1Ev,_ZTvn200_n32_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N8S19656C7D0Ev,_ZTvn200_n32_N8S19656C7D0Ev),
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C8D1Ev();
extern void _ZN8S19656C8D0Ev();
extern void _ZN8S19656C83v10Ev();
extern void _ZN8S19656C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C8__A1__8S19656C1[] = {
  ABISELECT(22848,15048),
  ABISELECT(22400,14732),
  ABISELECT(16160,10656),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v11Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C9D1Ev();
extern void _ZN8S19656C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C98S19656C8__A2__8S19656C1[] = {
  ABISELECT(22400,14732),
  ABISELECT(16160,10656),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C98S19656C8__A2__8S19656C1[] = {
  0,
  ABISELECT(-16160,-10656),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C98S19656C8__A2__8S19656C1[] = {
  0,
  0,
  ABISELECT(-22400,-14732),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C8__A1__8S19656C1[] = {
  0,
  ABISELECT(-16160,-10656),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C8__A1__8S19656C1[] = {
  0,
  0,
  ABISELECT(-22400,-14732),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C4_nt__A1__8S19656C8__A1__8S19656C1[] = {
  0,
  0,
  ABISELECT(-22848,-15048),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C9D1Ev();
extern void _ZN8S19656C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C9__A1__8S19656C1[] = {
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C9__A1__8S19656C1[] = {
  0,
  ABISELECT(6992,4592),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C9__A1__8S19656C1[] = {
  0,
  0,
  ABISELECT(752,516),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
static  VTT_ENTRY vtt_S19656C1[] = {
  {&(_ZTV8S19656C1[8]),  8,117},
  {&(_tg__ZTV8S19656C7__8S19656C1[7]),  7,14},
  {&(_tg__ZTV8S19656C88S19656C7__8S19656C1[5]),  5,12},
  {&(_tg__ZTV8S19656C98S19656C88S19656C7__8S19656C1[4]),  4,9},
  {&(_tg__ZTV12S19656C10_nt__8S19656C98S19656C88S19656C7__8S19656C1[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C98S19656C88S19656C7__8S19656C1[4]),  4,6},
  {&(_tg__ZTV12S19656C10_nt__8S19656C88S19656C7__8S19656C1[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C88S19656C7__8S19656C1[4]),  4,6},
  {&(_tg__ZTV11S19656C4_nt__A1__8S19656C88S19656C7__8S19656C1[4]),  4,6},
  {&(_tg__ZTV9S19656C128S19656C7__8S19656C1[5]),  5,7},
  {&(_tg__ZTV9S19656C139S19656C128S19656C7__8S19656C1[5]),  5,7},
  {&(_tg__ZTV12S19656C10_nt__9S19656C139S19656C128S19656C7__8S19656C1[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__9S19656C139S19656C128S19656C7__8S19656C1[4]),  4,6},
  {&(_tg__ZTV8S19656C9__9S19656C139S19656C128S19656C7__8S19656C1[8]),  8,13},
  {&(_tg__ZTV12S19656C11_nt8S19656C9__9S19656C139S19656C128S19656C7__8S19656C1[2]),  2,4},
  {&(_tg__ZTV12S19656C10_nt__9S19656C128S19656C7__8S19656C1[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__9S19656C128S19656C7__8S19656C1[4]),  4,6},
  {&(_tg__ZTV8S19656C9__9S19656C128S19656C7__8S19656C1[8]),  8,13},
  {&(_tg__ZTV12S19656C11_nt8S19656C9__9S19656C128S19656C7__8S19656C1[2]),  2,4},
  {&(_tg__ZTV11S19656C3_nt__8S19656C7__8S19656C1[5]),  5,9},
  {&(_tg__ZTV12S19656C10_nt__8S19656C7__8S19656C1[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C7__8S19656C1[4]),  4,6},
  {&(_tg__ZTV11S19656C4_nt__A1__8S19656C7__8S19656C1[4]),  4,6},
  {&(_tg__ZTV9S19656C12__8S19656C7__8S19656C1[5]),  5,7},
  {&(_tg__ZTV8S19656C9__A1__8S19656C7__8S19656C1[8]),  8,13},
  {&(_tg__ZTV12S19656C11_nt8S19656C9__A2__8S19656C7__8S19656C1[2]),  2,4},
  {&(_tg__ZTV8S19656C8__A1__8S19656C1[5]),  5,12},
  {&(_tg__ZTV8S19656C98S19656C8__A2__8S19656C1[4]),  4,9},
  {&(_tg__ZTV12S19656C10_nt__8S19656C98S19656C8__A2__8S19656C1[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C98S19656C8__A2__8S19656C1[4]),  4,6},
  {&(_tg__ZTV12S19656C10_nt__8S19656C8__A1__8S19656C1[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C8__A1__8S19656C1[4]),  4,6},
  {&(_tg__ZTV11S19656C4_nt__A1__8S19656C8__A1__8S19656C1[4]),  4,6},
  {&(_ZTV8S19656C1[80]),  80,117},
  {&(_ZTV8S19656C1[87]),  87,117},
  {&(_ZTV8S19656C1[92]),  92,117},
  {&(_ZTV8S19656C1[98]),  98,117},
  {&(_ZTV8S19656C1[36]),  36,117},
  {&(_ZTV8S19656C1[108]),  108,117},
  {&(_ZTV8S19656C1[115]),  115,117},
  {&(_ZTV8S19656C1[53]),  53,117},
  {&(_tg__ZTV8S19656C9__A1__8S19656C1[4]),  4,9},
  {&(_tg__ZTV12S19656C10_nt__8S19656C9__A1__8S19656C1[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C9__A1__8S19656C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19656C1[];
extern  VTBL_ENTRY _ZTV8S19656C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C1[];
static VTBL_ENTRY alt_thunk_names51[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19656C7D0Ev,_ZTv0_n32_N8S19656C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83472_N8S19656C7D0Ev,_ZThn54796_N8S19656C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19656C7D1Ev,_ZTv0_n32_N8S19656C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83472_N8S19656C7D1Ev,_ZThn54796_N8S19656C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19656C7D0Ev,_ZTv0_n12_N8S19656C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75040_N8S19656C7D0Ev,_ZThn49204_N8S19656C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19656C7D1Ev,_ZTv0_n12_N8S19656C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75040_N8S19656C7D1Ev,_ZThn49204_N8S19656C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C12D0Ev,_ZTv0_n32_N9S19656C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn68800_N9S19656C12D0Ev,_ZThn45184_N9S19656C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C12D1Ev,_ZTv0_n32_N9S19656C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn68800_N9S19656C12D1Ev,_ZThn45184_N9S19656C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn68800_N9S19656C13D0Ev,_ZThn45184_N9S19656C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn68800_N9S19656C13D1Ev,_ZThn45184_N9S19656C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19656C1D0Ev,_ZTv0_n32_N8S19656C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83472_N8S19656C1D0Ev,_ZThn54796_N8S19656C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19656C1D1Ev,_ZTv0_n32_N8S19656C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83472_N8S19656C1D1Ev,_ZThn54796_N8S19656C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19656C1D0Ev,_ZTv0_n12_N8S19656C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75040_N8S19656C1D0Ev,_ZThn49204_N8S19656C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19656C1D1Ev,_ZTv0_n12_N8S19656C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75040_N8S19656C1D1Ev,_ZThn49204_N8S19656C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19656C1 = {  "S19656C1", // class name
  bases_S19656C1, 28,
  &(vtc_S19656C1[0]), // expected_vtbl_contents
  &(vtt_S19656C1[0]), // expected_vtt_contents
  ABISELECT(90768,59564), // object size
  NSPAIRA(_ZTI8S19656C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19656C1),117, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19656C1),44, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names51,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1532C4  {
  int s1532c4f0;
  __tsi64 s1532c4f1;
  void *s1532c4f2[4];
  int s1532c4f3[2];
  void *s1532c4f4;
  ::S3423C4_nt s1532c4f5;
  void *s1532c4f6[2];
  virtual  ~S1532C4(); // _ZN7S1532C4D1Ev
  virtual void  v6(); // _ZN7S1532C42v6Ev
  virtual void  v7(); // _ZN7S1532C42v7Ev
  virtual void  v8(); // _ZN7S1532C42v8Ev
  virtual void  v9(); // _ZN7S1532C42v9Ev
  virtual void  v10(); // _ZN7S1532C43v10Ev
  virtual void  v11(); // _ZN7S1532C43v11Ev
  virtual void  v12(); // _ZN7S1532C43v12Ev
  virtual void  v13(); // _ZN7S1532C43v13Ev
  virtual void  v14(); // _ZN7S1532C43v14Ev
  virtual void  v15(); // _ZN7S1532C43v15Ev
  virtual void  v16(); // _ZN7S1532C43v16Ev
  virtual void  v17(); // _ZN7S1532C43v17Ev
  virtual void  v18(); // _ZN7S1532C43v18Ev
  virtual void  v19(); // _ZN7S1532C43v19Ev
  virtual void  v20(); // _ZN7S1532C43v20Ev
  virtual void  v21(); // _ZN7S1532C43v21Ev
  virtual void  v22(); // _ZN7S1532C43v22Ev
  virtual void  v23(); // _ZN7S1532C43v23Ev
  virtual void  v24(); // _ZN7S1532C43v24Ev
  virtual void  v25(); // _ZN7S1532C43v25Ev
  virtual void  v26(); // _ZN7S1532C43v26Ev
  virtual void  v27(); // _ZN7S1532C43v27Ev
  virtual void  v28(); // _ZN7S1532C43v28Ev
  virtual void  v29(); // _ZN7S1532C43v29Ev
  virtual void  v30(); // _ZN7S1532C43v30Ev
  virtual void  v31(); // _ZN7S1532C43v31Ev
  virtual void  v32(); // _ZN7S1532C43v32Ev
  virtual void  v33(); // _ZN7S1532C43v33Ev
  virtual void  v34(); // _ZN7S1532C43v34Ev
  virtual void  v35(); // _ZN7S1532C43v35Ev
  virtual void  v36(); // _ZN7S1532C43v36Ev
  virtual void  v37(); // _ZN7S1532C43v37Ev
  virtual void  v38(); // _ZN7S1532C43v38Ev
  virtual void  v39(); // _ZN7S1532C43v39Ev
  virtual void  v40(); // _ZN7S1532C43v40Ev
  virtual void  v41(); // _ZN7S1532C43v41Ev
  virtual void  v42(); // _ZN7S1532C43v42Ev
  virtual void  v43(); // _ZN7S1532C43v43Ev
  virtual void  v44(); // _ZN7S1532C43v44Ev
  virtual void  v45(); // _ZN7S1532C43v45Ev
  virtual void  v46(); // _ZN7S1532C43v46Ev
  virtual void  v47(); // _ZN7S1532C43v47Ev
  virtual void  v48(); // _ZN7S1532C43v48Ev
  virtual void  v49(); // _ZN7S1532C43v49Ev
  virtual void  v50(); // _ZN7S1532C43v50Ev
  virtual void  v51(); // _ZN7S1532C43v51Ev
  virtual void  v52(); // _ZN7S1532C43v52Ev
  virtual void  v53(); // _ZN7S1532C43v53Ev
  virtual void  v54(); // _ZN7S1532C43v54Ev
  virtual void  v55(); // _ZN7S1532C43v55Ev
  virtual void  v56(); // _ZN7S1532C43v56Ev
  virtual void  v57(); // _ZN7S1532C43v57Ev
  virtual void  v58(); // _ZN7S1532C43v58Ev
  virtual void  v59(); // _ZN7S1532C43v59Ev
  virtual void  v60(); // _ZN7S1532C43v60Ev
  virtual void  v61(); // _ZN7S1532C43v61Ev
  virtual void  v62(); // _ZN7S1532C43v62Ev
  virtual void  v63(); // _ZN7S1532C43v63Ev
  virtual void  v64(); // _ZN7S1532C43v64Ev
  virtual void  v65(); // _ZN7S1532C43v65Ev
  virtual void  v66(); // _ZN7S1532C43v66Ev
  virtual void  v67(); // _ZN7S1532C43v67Ev
  virtual void  v68(); // _ZN7S1532C43v68Ev
  virtual void  v69(); // _ZN7S1532C43v69Ev
  S1532C4(); // tgen
};
//SIG(-1 S1532C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S1532C4 ::~S1532C4(){ note_dtor("S1532C4", this);}
void  S1532C4 ::v6(){vfunc_called(this, "_ZN7S1532C42v6Ev");}
void  S1532C4 ::v7(){vfunc_called(this, "_ZN7S1532C42v7Ev");}
void  S1532C4 ::v8(){vfunc_called(this, "_ZN7S1532C42v8Ev");}
void  S1532C4 ::v9(){vfunc_called(this, "_ZN7S1532C42v9Ev");}
void  S1532C4 ::v10(){vfunc_called(this, "_ZN7S1532C43v10Ev");}
void  S1532C4 ::v11(){vfunc_called(this, "_ZN7S1532C43v11Ev");}
void  S1532C4 ::v12(){vfunc_called(this, "_ZN7S1532C43v12Ev");}
void  S1532C4 ::v13(){vfunc_called(this, "_ZN7S1532C43v13Ev");}
void  S1532C4 ::v14(){vfunc_called(this, "_ZN7S1532C43v14Ev");}
void  S1532C4 ::v15(){vfunc_called(this, "_ZN7S1532C43v15Ev");}
void  S1532C4 ::v16(){vfunc_called(this, "_ZN7S1532C43v16Ev");}
void  S1532C4 ::v17(){vfunc_called(this, "_ZN7S1532C43v17Ev");}
void  S1532C4 ::v18(){vfunc_called(this, "_ZN7S1532C43v18Ev");}
void  S1532C4 ::v19(){vfunc_called(this, "_ZN7S1532C43v19Ev");}
void  S1532C4 ::v20(){vfunc_called(this, "_ZN7S1532C43v20Ev");}
void  S1532C4 ::v21(){vfunc_called(this, "_ZN7S1532C43v21Ev");}
void  S1532C4 ::v22(){vfunc_called(this, "_ZN7S1532C43v22Ev");}
void  S1532C4 ::v23(){vfunc_called(this, "_ZN7S1532C43v23Ev");}
void  S1532C4 ::v24(){vfunc_called(this, "_ZN7S1532C43v24Ev");}
void  S1532C4 ::v25(){vfunc_called(this, "_ZN7S1532C43v25Ev");}
void  S1532C4 ::v26(){vfunc_called(this, "_ZN7S1532C43v26Ev");}
void  S1532C4 ::v27(){vfunc_called(this, "_ZN7S1532C43v27Ev");}
void  S1532C4 ::v28(){vfunc_called(this, "_ZN7S1532C43v28Ev");}
void  S1532C4 ::v29(){vfunc_called(this, "_ZN7S1532C43v29Ev");}
void  S1532C4 ::v30(){vfunc_called(this, "_ZN7S1532C43v30Ev");}
void  S1532C4 ::v31(){vfunc_called(this, "_ZN7S1532C43v31Ev");}
void  S1532C4 ::v32(){vfunc_called(this, "_ZN7S1532C43v32Ev");}
void  S1532C4 ::v33(){vfunc_called(this, "_ZN7S1532C43v33Ev");}
void  S1532C4 ::v34(){vfunc_called(this, "_ZN7S1532C43v34Ev");}
void  S1532C4 ::v35(){vfunc_called(this, "_ZN7S1532C43v35Ev");}
void  S1532C4 ::v36(){vfunc_called(this, "_ZN7S1532C43v36Ev");}
void  S1532C4 ::v37(){vfunc_called(this, "_ZN7S1532C43v37Ev");}
void  S1532C4 ::v38(){vfunc_called(this, "_ZN7S1532C43v38Ev");}
void  S1532C4 ::v39(){vfunc_called(this, "_ZN7S1532C43v39Ev");}
void  S1532C4 ::v40(){vfunc_called(this, "_ZN7S1532C43v40Ev");}
void  S1532C4 ::v41(){vfunc_called(this, "_ZN7S1532C43v41Ev");}
void  S1532C4 ::v42(){vfunc_called(this, "_ZN7S1532C43v42Ev");}
void  S1532C4 ::v43(){vfunc_called(this, "_ZN7S1532C43v43Ev");}
void  S1532C4 ::v44(){vfunc_called(this, "_ZN7S1532C43v44Ev");}
void  S1532C4 ::v45(){vfunc_called(this, "_ZN7S1532C43v45Ev");}
void  S1532C4 ::v46(){vfunc_called(this, "_ZN7S1532C43v46Ev");}
void  S1532C4 ::v47(){vfunc_called(this, "_ZN7S1532C43v47Ev");}
void  S1532C4 ::v48(){vfunc_called(this, "_ZN7S1532C43v48Ev");}
void  S1532C4 ::v49(){vfunc_called(this, "_ZN7S1532C43v49Ev");}
void  S1532C4 ::v50(){vfunc_called(this, "_ZN7S1532C43v50Ev");}
void  S1532C4 ::v51(){vfunc_called(this, "_ZN7S1532C43v51Ev");}
void  S1532C4 ::v52(){vfunc_called(this, "_ZN7S1532C43v52Ev");}
void  S1532C4 ::v53(){vfunc_called(this, "_ZN7S1532C43v53Ev");}
void  S1532C4 ::v54(){vfunc_called(this, "_ZN7S1532C43v54Ev");}
void  S1532C4 ::v55(){vfunc_called(this, "_ZN7S1532C43v55Ev");}
void  S1532C4 ::v56(){vfunc_called(this, "_ZN7S1532C43v56Ev");}
void  S1532C4 ::v57(){vfunc_called(this, "_ZN7S1532C43v57Ev");}
void  S1532C4 ::v58(){vfunc_called(this, "_ZN7S1532C43v58Ev");}
void  S1532C4 ::v59(){vfunc_called(this, "_ZN7S1532C43v59Ev");}
void  S1532C4 ::v60(){vfunc_called(this, "_ZN7S1532C43v60Ev");}
void  S1532C4 ::v61(){vfunc_called(this, "_ZN7S1532C43v61Ev");}
void  S1532C4 ::v62(){vfunc_called(this, "_ZN7S1532C43v62Ev");}
void  S1532C4 ::v63(){vfunc_called(this, "_ZN7S1532C43v63Ev");}
void  S1532C4 ::v64(){vfunc_called(this, "_ZN7S1532C43v64Ev");}
void  S1532C4 ::v65(){vfunc_called(this, "_ZN7S1532C43v65Ev");}
void  S1532C4 ::v66(){vfunc_called(this, "_ZN7S1532C43v66Ev");}
void  S1532C4 ::v67(){vfunc_called(this, "_ZN7S1532C43v67Ev");}
void  S1532C4 ::v68(){vfunc_called(this, "_ZN7S1532C43v68Ev");}
void  S1532C4 ::v69(){vfunc_called(this, "_ZN7S1532C43v69Ev");}
S1532C4 ::S1532C4(){ note_ctor("S1532C4", this);} // tgen

static void Test_S1532C4()
{
  extern Class_Descriptor cd_S1532C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1532C4, buf);
    S1532C4 *dp, &lv = *(dp=new (buf) S1532C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1532C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1532C4)");
    check_field_offset(lv, s1532c4f0, ABISELECT(8,4), "S1532C4.s1532c4f0");
    check_field_offset(lv, s1532c4f1, ABISELECT(16,8), "S1532C4.s1532c4f1");
    check_field_offset(lv, s1532c4f2, ABISELECT(24,16), "S1532C4.s1532c4f2");
    check_field_offset(lv, s1532c4f3, ABISELECT(56,32), "S1532C4.s1532c4f3");
    check_field_offset(lv, s1532c4f4, ABISELECT(64,40), "S1532C4.s1532c4f4");
    check_field_offset(lv, s1532c4f5, ABISELECT(72,44), "S1532C4.s1532c4f5");
    check_field_offset(lv, s1532c4f6, ABISELECT(80,52), "S1532C4.s1532c4f6");
    test_class_info(&lv, &cd_S1532C4);
    dp->~S1532C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1532C4(Test_S1532C4, "S1532C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1532C4C1Ev();
extern void _ZN7S1532C4D1Ev();
Name_Map name_map_S1532C4[] = {
  NSPAIR(_ZN7S1532C4C1Ev),
  NSPAIR(_ZN7S1532C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1532C4[];
extern void _ZN7S1532C4D1Ev();
extern void _ZN7S1532C4D0Ev();
extern void _ZN7S1532C42v6Ev();
extern void _ZN7S1532C42v7Ev();
extern void _ZN7S1532C42v8Ev();
extern void _ZN7S1532C42v9Ev();
extern void _ZN7S1532C43v10Ev();
extern void _ZN7S1532C43v11Ev();
extern void _ZN7S1532C43v12Ev();
extern void _ZN7S1532C43v13Ev();
extern void _ZN7S1532C43v14Ev();
extern void _ZN7S1532C43v15Ev();
extern void _ZN7S1532C43v16Ev();
extern void _ZN7S1532C43v17Ev();
extern void _ZN7S1532C43v18Ev();
extern void _ZN7S1532C43v19Ev();
extern void _ZN7S1532C43v20Ev();
extern void _ZN7S1532C43v21Ev();
extern void _ZN7S1532C43v22Ev();
extern void _ZN7S1532C43v23Ev();
extern void _ZN7S1532C43v24Ev();
extern void _ZN7S1532C43v25Ev();
extern void _ZN7S1532C43v26Ev();
extern void _ZN7S1532C43v27Ev();
extern void _ZN7S1532C43v28Ev();
extern void _ZN7S1532C43v29Ev();
extern void _ZN7S1532C43v30Ev();
extern void _ZN7S1532C43v31Ev();
extern void _ZN7S1532C43v32Ev();
extern void _ZN7S1532C43v33Ev();
extern void _ZN7S1532C43v34Ev();
extern void _ZN7S1532C43v35Ev();
extern void _ZN7S1532C43v36Ev();
extern void _ZN7S1532C43v37Ev();
extern void _ZN7S1532C43v38Ev();
extern void _ZN7S1532C43v39Ev();
extern void _ZN7S1532C43v40Ev();
extern void _ZN7S1532C43v41Ev();
extern void _ZN7S1532C43v42Ev();
extern void _ZN7S1532C43v43Ev();
extern void _ZN7S1532C43v44Ev();
extern void _ZN7S1532C43v45Ev();
extern void _ZN7S1532C43v46Ev();
extern void _ZN7S1532C43v47Ev();
extern void _ZN7S1532C43v48Ev();
extern void _ZN7S1532C43v49Ev();
extern void _ZN7S1532C43v50Ev();
extern void _ZN7S1532C43v51Ev();
extern void _ZN7S1532C43v52Ev();
extern void _ZN7S1532C43v53Ev();
extern void _ZN7S1532C43v54Ev();
extern void _ZN7S1532C43v55Ev();
extern void _ZN7S1532C43v56Ev();
extern void _ZN7S1532C43v57Ev();
extern void _ZN7S1532C43v58Ev();
extern void _ZN7S1532C43v59Ev();
extern void _ZN7S1532C43v60Ev();
extern void _ZN7S1532C43v61Ev();
extern void _ZN7S1532C43v62Ev();
extern void _ZN7S1532C43v63Ev();
extern void _ZN7S1532C43v64Ev();
extern void _ZN7S1532C43v65Ev();
extern void _ZN7S1532C43v66Ev();
extern void _ZN7S1532C43v67Ev();
extern void _ZN7S1532C43v68Ev();
extern void _ZN7S1532C43v69Ev();
static  VTBL_ENTRY vtc_S1532C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1532C4[0]),
  (VTBL_ENTRY)&_ZN7S1532C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1532C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v69Ev,
};
extern VTBL_ENTRY _ZTI7S1532C4[];
extern  VTBL_ENTRY _ZTV7S1532C4[];
Class_Descriptor cd_S1532C4 = {  "S1532C4", // class name
  0,0,//no base classes
  &(vtc_S1532C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1532C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1532C4),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1532C3_nt  : S1532C4 {
  virtual  ~S1532C3_nt(); // _ZN10S1532C3_ntD1Ev
  virtual void  v70(); // _ZN10S1532C3_nt3v70Ev
  virtual void  v71(); // _ZN10S1532C3_nt3v71Ev
  S1532C3_nt(); // tgen
};
//SIG(-1 S1532C3_nt) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2}


 S1532C3_nt ::~S1532C3_nt(){ note_dtor("S1532C3_nt", this);}
void  S1532C3_nt ::v70(){vfunc_called(this, "_ZN10S1532C3_nt3v70Ev");}
void  S1532C3_nt ::v71(){vfunc_called(this, "_ZN10S1532C3_nt3v71Ev");}
S1532C3_nt ::S1532C3_nt(){ note_ctor("S1532C3_nt", this);} // tgen

//skip512 S1532C3_nt

#else // __cplusplus

extern void _ZN10S1532C3_ntC1Ev();
extern void _ZN10S1532C3_ntD1Ev();
Name_Map name_map_S1532C3_nt[] = {
  NSPAIR(_ZN10S1532C3_ntC1Ev),
  NSPAIR(_ZN10S1532C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1532C4;
extern VTBL_ENTRY _ZTI7S1532C4[];
extern  VTBL_ENTRY _ZTV7S1532C4[];
static Base_Class bases_S1532C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1532C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1532C3_nt[];
extern void _ZN10S1532C3_ntD1Ev();
extern void _ZN10S1532C3_ntD0Ev();
extern void _ZN7S1532C42v6Ev();
extern void _ZN7S1532C42v7Ev();
extern void _ZN7S1532C42v8Ev();
extern void _ZN7S1532C42v9Ev();
extern void _ZN7S1532C43v10Ev();
extern void _ZN7S1532C43v11Ev();
extern void _ZN7S1532C43v12Ev();
extern void _ZN7S1532C43v13Ev();
extern void _ZN7S1532C43v14Ev();
extern void _ZN7S1532C43v15Ev();
extern void _ZN7S1532C43v16Ev();
extern void _ZN7S1532C43v17Ev();
extern void _ZN7S1532C43v18Ev();
extern void _ZN7S1532C43v19Ev();
extern void _ZN7S1532C43v20Ev();
extern void _ZN7S1532C43v21Ev();
extern void _ZN7S1532C43v22Ev();
extern void _ZN7S1532C43v23Ev();
extern void _ZN7S1532C43v24Ev();
extern void _ZN7S1532C43v25Ev();
extern void _ZN7S1532C43v26Ev();
extern void _ZN7S1532C43v27Ev();
extern void _ZN7S1532C43v28Ev();
extern void _ZN7S1532C43v29Ev();
extern void _ZN7S1532C43v30Ev();
extern void _ZN7S1532C43v31Ev();
extern void _ZN7S1532C43v32Ev();
extern void _ZN7S1532C43v33Ev();
extern void _ZN7S1532C43v34Ev();
extern void _ZN7S1532C43v35Ev();
extern void _ZN7S1532C43v36Ev();
extern void _ZN7S1532C43v37Ev();
extern void _ZN7S1532C43v38Ev();
extern void _ZN7S1532C43v39Ev();
extern void _ZN7S1532C43v40Ev();
extern void _ZN7S1532C43v41Ev();
extern void _ZN7S1532C43v42Ev();
extern void _ZN7S1532C43v43Ev();
extern void _ZN7S1532C43v44Ev();
extern void _ZN7S1532C43v45Ev();
extern void _ZN7S1532C43v46Ev();
extern void _ZN7S1532C43v47Ev();
extern void _ZN7S1532C43v48Ev();
extern void _ZN7S1532C43v49Ev();
extern void _ZN7S1532C43v50Ev();
extern void _ZN7S1532C43v51Ev();
extern void _ZN7S1532C43v52Ev();
extern void _ZN7S1532C43v53Ev();
extern void _ZN7S1532C43v54Ev();
extern void _ZN7S1532C43v55Ev();
extern void _ZN7S1532C43v56Ev();
extern void _ZN7S1532C43v57Ev();
extern void _ZN7S1532C43v58Ev();
extern void _ZN7S1532C43v59Ev();
extern void _ZN7S1532C43v60Ev();
extern void _ZN7S1532C43v61Ev();
extern void _ZN7S1532C43v62Ev();
extern void _ZN7S1532C43v63Ev();
extern void _ZN7S1532C43v64Ev();
extern void _ZN7S1532C43v65Ev();
extern void _ZN7S1532C43v66Ev();
extern void _ZN7S1532C43v67Ev();
extern void _ZN7S1532C43v68Ev();
extern void _ZN7S1532C43v69Ev();
extern void _ZN10S1532C3_nt3v70Ev();
extern void _ZN10S1532C3_nt3v71Ev();
static  VTBL_ENTRY vtc_S1532C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1532C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S1532C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1532C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v69Ev,
  (VTBL_ENTRY)&_ZN10S1532C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S1532C3_nt3v71Ev,
};
extern VTBL_ENTRY _ZTI10S1532C3_nt[];
VTBL_ENTRY *P__ZTI10S1532C3_nt = _ZTI10S1532C3_nt; 
extern  VTBL_ENTRY _ZTV10S1532C3_nt[];
Class_Descriptor cd_S1532C3_nt = {  "S1532C3_nt", // class name
  bases_S1532C3_nt, 1,
  &(vtc_S1532C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI10S1532C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1532C3_nt),70, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1532C10_nt  {
  int s1532c10f0[4];
  void  mf1532c10(); // _ZN11S1532C10_nt9mf1532c10Ev
};
//SIG(-1 S1532C10_nt) C1{ m Fi[4]}


void  S1532C10_nt ::mf1532c10(){}

//skip512 S1532C10_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1532C2  : S1532C3_nt {
  ::S205C8_nt s1532c2f0;
  ::S1532C10_nt s1532c2f1;
  int s1532c2f2[2];
  unsigned int s1532c2f3:1;
  unsigned int s1532c2f4:1;
  virtual  ~S1532C2(); // _ZN7S1532C2D1Ev
  virtual void  v72(); // _ZN7S1532C23v72Ev
  virtual void  v73(); // _ZN7S1532C23v73Ev
  virtual void  v74(); // _ZN7S1532C23v74Ev
  virtual void  v75(); // _ZN7S1532C23v75Ev
  virtual void  v76(); // _ZN7S1532C23v76Ev
  virtual void  v77(); // _ZN7S1532C23v77Ev
  virtual void  v78(); // _ZN7S1532C23v78Ev
  virtual void  v79(); // _ZN7S1532C23v79Ev
  virtual void  v80(); // _ZN7S1532C23v80Ev
  S1532C2(); // tgen
};
//SIG(-1 S1532C2) C1{ BC2{ BC3{ vd v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v74 v75} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} FC9{ m Fi[4]} Fi[2] Fi:1 Fi:1}


 S1532C2 ::~S1532C2(){ note_dtor("S1532C2", this);}
void  S1532C2 ::v72(){vfunc_called(this, "_ZN7S1532C23v72Ev");}
void  S1532C2 ::v73(){vfunc_called(this, "_ZN7S1532C23v73Ev");}
void  S1532C2 ::v74(){vfunc_called(this, "_ZN7S1532C23v74Ev");}
void  S1532C2 ::v75(){vfunc_called(this, "_ZN7S1532C23v75Ev");}
void  S1532C2 ::v76(){vfunc_called(this, "_ZN7S1532C23v76Ev");}
void  S1532C2 ::v77(){vfunc_called(this, "_ZN7S1532C23v77Ev");}
void  S1532C2 ::v78(){vfunc_called(this, "_ZN7S1532C23v78Ev");}
void  S1532C2 ::v79(){vfunc_called(this, "_ZN7S1532C23v79Ev");}
void  S1532C2 ::v80(){vfunc_called(this, "_ZN7S1532C23v80Ev");}
S1532C2 ::S1532C2(){ note_ctor("S1532C2", this);} // tgen

static void Test_S1532C2()
{
  extern Class_Descriptor cd_S1532C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,26)];
    init_test(&cd_S1532C2, buf);
    S1532C2 *dp, &lv = *(dp=new (buf) S1532C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S1532C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1532C2)");
    check_base_class_offset(lv, (S1532C4*)(S1532C3_nt*), 0, "S1532C2");
    check_base_class_offset(lv, (S1532C3_nt*), 0, "S1532C2");
    check_field_offset(lv, s1532c2f0, ABISELECT(96,60), "S1532C2.s1532c2f0");
    check_field_offset(lv, s1532c2f1, ABISELECT(112,72), "S1532C2.s1532c2f1");
    check_field_offset(lv, s1532c2f2, ABISELECT(128,88), "S1532C2.s1532c2f2");
    set_bf_and_test(lv, s1532c2f3, ABISELECT(136,96), 0, 1, 1, "S1532C2");
    set_bf_and_test(lv, s1532c2f4, ABISELECT(136,96), 1, 1, 1, "S1532C2");
    test_class_info(&lv, &cd_S1532C2);
    dp->~S1532C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1532C2(Test_S1532C2, "S1532C2", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN7S1532C2C1Ev();
extern void _ZN7S1532C2D1Ev();
Name_Map name_map_S1532C2[] = {
  NSPAIR(_ZN7S1532C2C1Ev),
  NSPAIR(_ZN7S1532C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1532C4;
extern VTBL_ENTRY _ZTI7S1532C4[];
extern  VTBL_ENTRY _ZTV7S1532C4[];
extern Class_Descriptor cd_S1532C3_nt;
extern VTBL_ENTRY _ZTI10S1532C3_nt[];
extern  VTBL_ENTRY _ZTV10S1532C3_nt[];
static Base_Class bases_S1532C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1532C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1532C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1532C2[];
extern void _ZN7S1532C2D1Ev();
extern void _ZN7S1532C2D0Ev();
extern void _ZN7S1532C42v6Ev();
extern void _ZN7S1532C42v7Ev();
extern void _ZN7S1532C42v8Ev();
extern void _ZN7S1532C42v9Ev();
extern void _ZN7S1532C43v10Ev();
extern void _ZN7S1532C43v11Ev();
extern void _ZN7S1532C43v12Ev();
extern void _ZN7S1532C43v13Ev();
extern void _ZN7S1532C43v14Ev();
extern void _ZN7S1532C43v15Ev();
extern void _ZN7S1532C43v16Ev();
extern void _ZN7S1532C43v17Ev();
extern void _ZN7S1532C43v18Ev();
extern void _ZN7S1532C43v19Ev();
extern void _ZN7S1532C43v20Ev();
extern void _ZN7S1532C43v21Ev();
extern void _ZN7S1532C43v22Ev();
extern void _ZN7S1532C43v23Ev();
extern void _ZN7S1532C43v24Ev();
extern void _ZN7S1532C43v25Ev();
extern void _ZN7S1532C43v26Ev();
extern void _ZN7S1532C43v27Ev();
extern void _ZN7S1532C43v28Ev();
extern void _ZN7S1532C43v29Ev();
extern void _ZN7S1532C43v30Ev();
extern void _ZN7S1532C43v31Ev();
extern void _ZN7S1532C43v32Ev();
extern void _ZN7S1532C43v33Ev();
extern void _ZN7S1532C43v34Ev();
extern void _ZN7S1532C43v35Ev();
extern void _ZN7S1532C43v36Ev();
extern void _ZN7S1532C43v37Ev();
extern void _ZN7S1532C43v38Ev();
extern void _ZN7S1532C43v39Ev();
extern void _ZN7S1532C43v40Ev();
extern void _ZN7S1532C43v41Ev();
extern void _ZN7S1532C43v42Ev();
extern void _ZN7S1532C43v43Ev();
extern void _ZN7S1532C43v44Ev();
extern void _ZN7S1532C43v45Ev();
extern void _ZN7S1532C43v46Ev();
extern void _ZN7S1532C43v47Ev();
extern void _ZN7S1532C43v48Ev();
extern void _ZN7S1532C43v49Ev();
extern void _ZN7S1532C43v50Ev();
extern void _ZN7S1532C43v51Ev();
extern void _ZN7S1532C43v52Ev();
extern void _ZN7S1532C43v53Ev();
extern void _ZN7S1532C43v54Ev();
extern void _ZN7S1532C43v55Ev();
extern void _ZN7S1532C43v56Ev();
extern void _ZN7S1532C43v57Ev();
extern void _ZN7S1532C43v58Ev();
extern void _ZN7S1532C43v59Ev();
extern void _ZN7S1532C43v60Ev();
extern void _ZN7S1532C43v61Ev();
extern void _ZN7S1532C43v62Ev();
extern void _ZN7S1532C43v63Ev();
extern void _ZN7S1532C43v64Ev();
extern void _ZN7S1532C43v65Ev();
extern void _ZN7S1532C43v66Ev();
extern void _ZN7S1532C43v67Ev();
extern void _ZN7S1532C43v68Ev();
extern void _ZN7S1532C43v69Ev();
extern void _ZN10S1532C3_nt3v70Ev();
extern void _ZN10S1532C3_nt3v71Ev();
extern void _ZN7S1532C23v72Ev();
extern void _ZN7S1532C23v73Ev();
extern void _ZN7S1532C23v74Ev();
extern void _ZN7S1532C23v75Ev();
extern void _ZN7S1532C23v76Ev();
extern void _ZN7S1532C23v77Ev();
extern void _ZN7S1532C23v78Ev();
extern void _ZN7S1532C23v79Ev();
extern void _ZN7S1532C23v80Ev();
static  VTBL_ENTRY vtc_S1532C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1532C2[0]),
  (VTBL_ENTRY)&_ZN7S1532C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1532C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v69Ev,
  (VTBL_ENTRY)&_ZN10S1532C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S1532C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v72Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v73Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v74Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v75Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v76Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v79Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v80Ev,
};
extern VTBL_ENTRY _ZTI7S1532C2[];
extern  VTBL_ENTRY _ZTV7S1532C2[];
Class_Descriptor cd_S1532C2 = {  "S1532C2", // class name
  bases_S1532C2, 2,
  &(vtc_S1532C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI7S1532C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1532C2),79, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1532C11_nt  {
  unsigned int s1532c11f0:1;
  unsigned int s1532c11f1:1;
  unsigned int s1532c11f2:1;
  unsigned int s1532c11f3:1;
  unsigned int s1532c11f4:1;
  void  mf1532c11(); // _ZN11S1532C11_nt9mf1532c11Ev
};
//SIG(-1 S1532C11_nt) C1{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi:1}


void  S1532C11_nt ::mf1532c11(){}

//skip512 S1532C11_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1532C12_nt  {
  int s1532c12f0;
  char s1532c12f1;
  void  mf1532c12(); // _ZN11S1532C12_nt9mf1532c12Ev
};
//SIG(-1 S1532C12_nt) C1{ m Fi Fc}


void  S1532C12_nt ::mf1532c12(){}

//skip512 S1532C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1532C13_nt  {
  int s1532c13f0[2];
  void  mf1532c13(); // _ZN11S1532C13_nt9mf1532c13Ev
};
//SIG(-1 S1532C13_nt) C1{ m Fi[2]}


void  S1532C13_nt ::mf1532c13(){}

//skip512 S1532C13_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1532C1  : S1532C2 {
  void *s1532c1f0;
  ::S1532C11_nt s1532c1f1;
  char s1532c1f2[4];
  ::S1532C12_nt s1532c1f3;
  ::S1532C13_nt s1532c1f4;
  ::S1532C13_nt s1532c1f5;
  virtual  ~S1532C1(); // _ZN7S1532C1D1Ev
  virtual void  v1(); // _ZN7S1532C12v1Ev
  virtual void  v2(); // _ZN7S1532C12v2Ev
  virtual void  v3(); // _ZN7S1532C12v3Ev
  virtual void  v4(); // _ZN7S1532C12v4Ev
  virtual void  v5(); // _ZN7S1532C12v5Ev
  S1532C1(); // tgen
};
//SIG(1 S1532C1) C1{ BC2{ BC3{ BC4{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v70 v71} vd v72 v73 v74 v75 v76 v77 v78 v79 v80 FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} FC10{ m Fi[4]} Fi[2] Fi:1 Fi:1} vd v1 v2 v3 v4 v5 Fp FC11{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi:1} Fc[4] FC12{ m Fi Fc} FC13{ m Fi[2]} FC13}


 S1532C1 ::~S1532C1(){ note_dtor("S1532C1", this);}
void  S1532C1 ::v1(){vfunc_called(this, "_ZN7S1532C12v1Ev");}
void  S1532C1 ::v2(){vfunc_called(this, "_ZN7S1532C12v2Ev");}
void  S1532C1 ::v3(){vfunc_called(this, "_ZN7S1532C12v3Ev");}
void  S1532C1 ::v4(){vfunc_called(this, "_ZN7S1532C12v4Ev");}
void  S1532C1 ::v5(){vfunc_called(this, "_ZN7S1532C12v5Ev");}
S1532C1 ::S1532C1(){ note_ctor("S1532C1", this);} // tgen

static void Test_S1532C1()
{
  extern Class_Descriptor cd_S1532C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,35)];
    init_test(&cd_S1532C1, buf);
    S1532C1 *dp, &lv = *(dp=new (buf) S1532C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,136), "sizeof(S1532C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1532C1)");
    check_base_class_offset(lv, (S1532C4*)(S1532C3_nt*)(S1532C2*), 0, "S1532C1");
    check_base_class_offset(lv, (S1532C3_nt*)(S1532C2*), 0, "S1532C1");
    check_base_class_offset(lv, (S1532C2*), 0, "S1532C1");
    check_field_offset(lv, s1532c1f0, ABISELECT(144,100), "S1532C1.s1532c1f0");
    check_field_offset(lv, s1532c1f1, ABISELECT(152,104), "S1532C1.s1532c1f1");
    check_field_offset(lv, s1532c1f2, ABISELECT(156,108), "S1532C1.s1532c1f2");
    check_field_offset(lv, s1532c1f3, ABISELECT(160,112), "S1532C1.s1532c1f3");
    check_field_offset(lv, s1532c1f4, ABISELECT(168,120), "S1532C1.s1532c1f4");
    check_field_offset(lv, s1532c1f5, ABISELECT(176,128), "S1532C1.s1532c1f5");
    test_class_info(&lv, &cd_S1532C1);
    dp->~S1532C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1532C1(Test_S1532C1, "S1532C1", ABISELECT(184,136));

#else // __cplusplus

extern void _ZN7S1532C1C1Ev();
extern void _ZN7S1532C1D1Ev();
Name_Map name_map_S1532C1[] = {
  NSPAIR(_ZN7S1532C1C1Ev),
  NSPAIR(_ZN7S1532C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1532C4;
extern VTBL_ENTRY _ZTI7S1532C4[];
extern  VTBL_ENTRY _ZTV7S1532C4[];
extern Class_Descriptor cd_S1532C3_nt;
extern VTBL_ENTRY _ZTI10S1532C3_nt[];
extern  VTBL_ENTRY _ZTV10S1532C3_nt[];
extern Class_Descriptor cd_S1532C2;
extern VTBL_ENTRY _ZTI7S1532C2[];
extern  VTBL_ENTRY _ZTV7S1532C2[];
static Base_Class bases_S1532C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1532C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1532C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1532C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1532C1[];
extern void _ZN7S1532C1D1Ev();
extern void _ZN7S1532C1D0Ev();
extern void _ZN7S1532C42v6Ev();
extern void _ZN7S1532C42v7Ev();
extern void _ZN7S1532C42v8Ev();
extern void _ZN7S1532C42v9Ev();
extern void _ZN7S1532C43v10Ev();
extern void _ZN7S1532C43v11Ev();
extern void _ZN7S1532C43v12Ev();
extern void _ZN7S1532C43v13Ev();
extern void _ZN7S1532C43v14Ev();
extern void _ZN7S1532C43v15Ev();
extern void _ZN7S1532C43v16Ev();
extern void _ZN7S1532C43v17Ev();
extern void _ZN7S1532C43v18Ev();
extern void _ZN7S1532C43v19Ev();
extern void _ZN7S1532C43v20Ev();
extern void _ZN7S1532C43v21Ev();
extern void _ZN7S1532C43v22Ev();
extern void _ZN7S1532C43v23Ev();
extern void _ZN7S1532C43v24Ev();
extern void _ZN7S1532C43v25Ev();
extern void _ZN7S1532C43v26Ev();
extern void _ZN7S1532C43v27Ev();
extern void _ZN7S1532C43v28Ev();
extern void _ZN7S1532C43v29Ev();
extern void _ZN7S1532C43v30Ev();
extern void _ZN7S1532C43v31Ev();
extern void _ZN7S1532C43v32Ev();
extern void _ZN7S1532C43v33Ev();
extern void _ZN7S1532C43v34Ev();
extern void _ZN7S1532C43v35Ev();
extern void _ZN7S1532C43v36Ev();
extern void _ZN7S1532C43v37Ev();
extern void _ZN7S1532C43v38Ev();
extern void _ZN7S1532C43v39Ev();
extern void _ZN7S1532C43v40Ev();
extern void _ZN7S1532C43v41Ev();
extern void _ZN7S1532C43v42Ev();
extern void _ZN7S1532C43v43Ev();
extern void _ZN7S1532C43v44Ev();
extern void _ZN7S1532C43v45Ev();
extern void _ZN7S1532C43v46Ev();
extern void _ZN7S1532C43v47Ev();
extern void _ZN7S1532C43v48Ev();
extern void _ZN7S1532C43v49Ev();
extern void _ZN7S1532C43v50Ev();
extern void _ZN7S1532C43v51Ev();
extern void _ZN7S1532C43v52Ev();
extern void _ZN7S1532C43v53Ev();
extern void _ZN7S1532C43v54Ev();
extern void _ZN7S1532C43v55Ev();
extern void _ZN7S1532C43v56Ev();
extern void _ZN7S1532C43v57Ev();
extern void _ZN7S1532C43v58Ev();
extern void _ZN7S1532C43v59Ev();
extern void _ZN7S1532C43v60Ev();
extern void _ZN7S1532C43v61Ev();
extern void _ZN7S1532C43v62Ev();
extern void _ZN7S1532C43v63Ev();
extern void _ZN7S1532C43v64Ev();
extern void _ZN7S1532C43v65Ev();
extern void _ZN7S1532C43v66Ev();
extern void _ZN7S1532C43v67Ev();
extern void _ZN7S1532C43v68Ev();
extern void _ZN7S1532C43v69Ev();
extern void _ZN10S1532C3_nt3v70Ev();
extern void _ZN10S1532C3_nt3v71Ev();
extern void _ZN7S1532C23v72Ev();
extern void _ZN7S1532C23v73Ev();
extern void _ZN7S1532C23v74Ev();
extern void _ZN7S1532C23v75Ev();
extern void _ZN7S1532C23v76Ev();
extern void _ZN7S1532C23v77Ev();
extern void _ZN7S1532C23v78Ev();
extern void _ZN7S1532C23v79Ev();
extern void _ZN7S1532C23v80Ev();
extern void _ZN7S1532C12v1Ev();
extern void _ZN7S1532C12v2Ev();
extern void _ZN7S1532C12v3Ev();
extern void _ZN7S1532C12v4Ev();
extern void _ZN7S1532C12v5Ev();
static  VTBL_ENTRY vtc_S1532C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1532C1[0]),
  (VTBL_ENTRY)&_ZN7S1532C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1532C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v69Ev,
  (VTBL_ENTRY)&_ZN10S1532C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S1532C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v72Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v73Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v74Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v75Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v76Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v79Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v80Ev,
  (VTBL_ENTRY)&_ZN7S1532C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1532C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1532C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1532C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1532C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S1532C1[];
extern  VTBL_ENTRY _ZTV7S1532C1[];
Class_Descriptor cd_S1532C1 = {  "S1532C1", // class name
  bases_S1532C1, 3,
  &(vtc_S1532C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,136), // object size
  NSPAIRA(_ZTI7S1532C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1532C1),84, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1305C4  {
  int s1305c4f0;
  __tsi64 s1305c4f1;
  void *s1305c4f2[4];
  int s1305c4f3[2];
  void *s1305c4f4;
  ::S3423C4_nt s1305c4f5;
  void *s1305c4f6[2];
  virtual  ~S1305C4(); // _ZN7S1305C4D1Ev
  virtual void  v11(); // _ZN7S1305C43v11Ev
  virtual void  v12(); // _ZN7S1305C43v12Ev
  virtual void  v13(); // _ZN7S1305C43v13Ev
  virtual void  v14(); // _ZN7S1305C43v14Ev
  virtual void  v15(); // _ZN7S1305C43v15Ev
  virtual void  v16(); // _ZN7S1305C43v16Ev
  virtual void  v17(); // _ZN7S1305C43v17Ev
  virtual void  v18(); // _ZN7S1305C43v18Ev
  virtual void  v19(); // _ZN7S1305C43v19Ev
  virtual void  v20(); // _ZN7S1305C43v20Ev
  virtual void  v21(); // _ZN7S1305C43v21Ev
  virtual void  v22(); // _ZN7S1305C43v22Ev
  virtual void  v23(); // _ZN7S1305C43v23Ev
  virtual void  v24(); // _ZN7S1305C43v24Ev
  virtual void  v25(); // _ZN7S1305C43v25Ev
  virtual void  v26(); // _ZN7S1305C43v26Ev
  virtual void  v27(); // _ZN7S1305C43v27Ev
  virtual void  v28(); // _ZN7S1305C43v28Ev
  virtual void  v29(); // _ZN7S1305C43v29Ev
  virtual void  v30(); // _ZN7S1305C43v30Ev
  virtual void  v31(); // _ZN7S1305C43v31Ev
  virtual void  v32(); // _ZN7S1305C43v32Ev
  virtual void  v33(); // _ZN7S1305C43v33Ev
  virtual void  v34(); // _ZN7S1305C43v34Ev
  virtual void  v35(); // _ZN7S1305C43v35Ev
  virtual void  v36(); // _ZN7S1305C43v36Ev
  virtual void  v37(); // _ZN7S1305C43v37Ev
  virtual void  v38(); // _ZN7S1305C43v38Ev
  virtual void  v39(); // _ZN7S1305C43v39Ev
  virtual void  v40(); // _ZN7S1305C43v40Ev
  virtual void  v41(); // _ZN7S1305C43v41Ev
  virtual void  v42(); // _ZN7S1305C43v42Ev
  virtual void  v43(); // _ZN7S1305C43v43Ev
  virtual void  v44(); // _ZN7S1305C43v44Ev
  virtual void  v45(); // _ZN7S1305C43v45Ev
  virtual void  v46(); // _ZN7S1305C43v46Ev
  virtual void  v47(); // _ZN7S1305C43v47Ev
  virtual void  v48(); // _ZN7S1305C43v48Ev
  virtual void  v49(); // _ZN7S1305C43v49Ev
  virtual void  v50(); // _ZN7S1305C43v50Ev
  virtual void  v51(); // _ZN7S1305C43v51Ev
  virtual void  v52(); // _ZN7S1305C43v52Ev
  virtual void  v53(); // _ZN7S1305C43v53Ev
  virtual void  v54(); // _ZN7S1305C43v54Ev
  virtual void  v55(); // _ZN7S1305C43v55Ev
  virtual void  v56(); // _ZN7S1305C43v56Ev
  virtual void  v57(); // _ZN7S1305C43v57Ev
  virtual void  v58(); // _ZN7S1305C43v58Ev
  virtual void  v59(); // _ZN7S1305C43v59Ev
  virtual void  v60(); // _ZN7S1305C43v60Ev
  virtual void  v61(); // _ZN7S1305C43v61Ev
  virtual void  v62(); // _ZN7S1305C43v62Ev
  virtual void  v63(); // _ZN7S1305C43v63Ev
  virtual void  v64(); // _ZN7S1305C43v64Ev
  virtual void  v65(); // _ZN7S1305C43v65Ev
  virtual void  v66(); // _ZN7S1305C43v66Ev
  virtual void  v67(); // _ZN7S1305C43v67Ev
  virtual void  v68(); // _ZN7S1305C43v68Ev
  virtual void  v69(); // _ZN7S1305C43v69Ev
  virtual void  v70(); // _ZN7S1305C43v70Ev
  virtual void  v71(); // _ZN7S1305C43v71Ev
  virtual void  v72(); // _ZN7S1305C43v72Ev
  virtual void  v73(); // _ZN7S1305C43v73Ev
  virtual void  v74(); // _ZN7S1305C43v74Ev
  S1305C4(); // tgen
};
//SIG(-1 S1305C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S1305C4 ::~S1305C4(){ note_dtor("S1305C4", this);}
void  S1305C4 ::v11(){vfunc_called(this, "_ZN7S1305C43v11Ev");}
void  S1305C4 ::v12(){vfunc_called(this, "_ZN7S1305C43v12Ev");}
void  S1305C4 ::v13(){vfunc_called(this, "_ZN7S1305C43v13Ev");}
void  S1305C4 ::v14(){vfunc_called(this, "_ZN7S1305C43v14Ev");}
void  S1305C4 ::v15(){vfunc_called(this, "_ZN7S1305C43v15Ev");}
void  S1305C4 ::v16(){vfunc_called(this, "_ZN7S1305C43v16Ev");}
void  S1305C4 ::v17(){vfunc_called(this, "_ZN7S1305C43v17Ev");}
void  S1305C4 ::v18(){vfunc_called(this, "_ZN7S1305C43v18Ev");}
void  S1305C4 ::v19(){vfunc_called(this, "_ZN7S1305C43v19Ev");}
void  S1305C4 ::v20(){vfunc_called(this, "_ZN7S1305C43v20Ev");}
void  S1305C4 ::v21(){vfunc_called(this, "_ZN7S1305C43v21Ev");}
void  S1305C4 ::v22(){vfunc_called(this, "_ZN7S1305C43v22Ev");}
void  S1305C4 ::v23(){vfunc_called(this, "_ZN7S1305C43v23Ev");}
void  S1305C4 ::v24(){vfunc_called(this, "_ZN7S1305C43v24Ev");}
void  S1305C4 ::v25(){vfunc_called(this, "_ZN7S1305C43v25Ev");}
void  S1305C4 ::v26(){vfunc_called(this, "_ZN7S1305C43v26Ev");}
void  S1305C4 ::v27(){vfunc_called(this, "_ZN7S1305C43v27Ev");}
void  S1305C4 ::v28(){vfunc_called(this, "_ZN7S1305C43v28Ev");}
void  S1305C4 ::v29(){vfunc_called(this, "_ZN7S1305C43v29Ev");}
void  S1305C4 ::v30(){vfunc_called(this, "_ZN7S1305C43v30Ev");}
void  S1305C4 ::v31(){vfunc_called(this, "_ZN7S1305C43v31Ev");}
void  S1305C4 ::v32(){vfunc_called(this, "_ZN7S1305C43v32Ev");}
void  S1305C4 ::v33(){vfunc_called(this, "_ZN7S1305C43v33Ev");}
void  S1305C4 ::v34(){vfunc_called(this, "_ZN7S1305C43v34Ev");}
void  S1305C4 ::v35(){vfunc_called(this, "_ZN7S1305C43v35Ev");}
void  S1305C4 ::v36(){vfunc_called(this, "_ZN7S1305C43v36Ev");}
void  S1305C4 ::v37(){vfunc_called(this, "_ZN7S1305C43v37Ev");}
void  S1305C4 ::v38(){vfunc_called(this, "_ZN7S1305C43v38Ev");}
void  S1305C4 ::v39(){vfunc_called(this, "_ZN7S1305C43v39Ev");}
void  S1305C4 ::v40(){vfunc_called(this, "_ZN7S1305C43v40Ev");}
void  S1305C4 ::v41(){vfunc_called(this, "_ZN7S1305C43v41Ev");}
void  S1305C4 ::v42(){vfunc_called(this, "_ZN7S1305C43v42Ev");}
void  S1305C4 ::v43(){vfunc_called(this, "_ZN7S1305C43v43Ev");}
void  S1305C4 ::v44(){vfunc_called(this, "_ZN7S1305C43v44Ev");}
void  S1305C4 ::v45(){vfunc_called(this, "_ZN7S1305C43v45Ev");}
void  S1305C4 ::v46(){vfunc_called(this, "_ZN7S1305C43v46Ev");}
void  S1305C4 ::v47(){vfunc_called(this, "_ZN7S1305C43v47Ev");}
void  S1305C4 ::v48(){vfunc_called(this, "_ZN7S1305C43v48Ev");}
void  S1305C4 ::v49(){vfunc_called(this, "_ZN7S1305C43v49Ev");}
void  S1305C4 ::v50(){vfunc_called(this, "_ZN7S1305C43v50Ev");}
void  S1305C4 ::v51(){vfunc_called(this, "_ZN7S1305C43v51Ev");}
void  S1305C4 ::v52(){vfunc_called(this, "_ZN7S1305C43v52Ev");}
void  S1305C4 ::v53(){vfunc_called(this, "_ZN7S1305C43v53Ev");}
void  S1305C4 ::v54(){vfunc_called(this, "_ZN7S1305C43v54Ev");}
void  S1305C4 ::v55(){vfunc_called(this, "_ZN7S1305C43v55Ev");}
void  S1305C4 ::v56(){vfunc_called(this, "_ZN7S1305C43v56Ev");}
void  S1305C4 ::v57(){vfunc_called(this, "_ZN7S1305C43v57Ev");}
void  S1305C4 ::v58(){vfunc_called(this, "_ZN7S1305C43v58Ev");}
void  S1305C4 ::v59(){vfunc_called(this, "_ZN7S1305C43v59Ev");}
void  S1305C4 ::v60(){vfunc_called(this, "_ZN7S1305C43v60Ev");}
void  S1305C4 ::v61(){vfunc_called(this, "_ZN7S1305C43v61Ev");}
void  S1305C4 ::v62(){vfunc_called(this, "_ZN7S1305C43v62Ev");}
void  S1305C4 ::v63(){vfunc_called(this, "_ZN7S1305C43v63Ev");}
void  S1305C4 ::v64(){vfunc_called(this, "_ZN7S1305C43v64Ev");}
void  S1305C4 ::v65(){vfunc_called(this, "_ZN7S1305C43v65Ev");}
void  S1305C4 ::v66(){vfunc_called(this, "_ZN7S1305C43v66Ev");}
void  S1305C4 ::v67(){vfunc_called(this, "_ZN7S1305C43v67Ev");}
void  S1305C4 ::v68(){vfunc_called(this, "_ZN7S1305C43v68Ev");}
void  S1305C4 ::v69(){vfunc_called(this, "_ZN7S1305C43v69Ev");}
void  S1305C4 ::v70(){vfunc_called(this, "_ZN7S1305C43v70Ev");}
void  S1305C4 ::v71(){vfunc_called(this, "_ZN7S1305C43v71Ev");}
void  S1305C4 ::v72(){vfunc_called(this, "_ZN7S1305C43v72Ev");}
void  S1305C4 ::v73(){vfunc_called(this, "_ZN7S1305C43v73Ev");}
void  S1305C4 ::v74(){vfunc_called(this, "_ZN7S1305C43v74Ev");}
S1305C4 ::S1305C4(){ note_ctor("S1305C4", this);} // tgen

static void Test_S1305C4()
{
  extern Class_Descriptor cd_S1305C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1305C4, buf);
    S1305C4 *dp, &lv = *(dp=new (buf) S1305C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1305C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1305C4)");
    check_field_offset(lv, s1305c4f0, ABISELECT(8,4), "S1305C4.s1305c4f0");
    check_field_offset(lv, s1305c4f1, ABISELECT(16,8), "S1305C4.s1305c4f1");
    check_field_offset(lv, s1305c4f2, ABISELECT(24,16), "S1305C4.s1305c4f2");
    check_field_offset(lv, s1305c4f3, ABISELECT(56,32), "S1305C4.s1305c4f3");
    check_field_offset(lv, s1305c4f4, ABISELECT(64,40), "S1305C4.s1305c4f4");
    check_field_offset(lv, s1305c4f5, ABISELECT(72,44), "S1305C4.s1305c4f5");
    check_field_offset(lv, s1305c4f6, ABISELECT(80,52), "S1305C4.s1305c4f6");
    test_class_info(&lv, &cd_S1305C4);
    dp->~S1305C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1305C4(Test_S1305C4, "S1305C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1305C4C1Ev();
extern void _ZN7S1305C4D1Ev();
Name_Map name_map_S1305C4[] = {
  NSPAIR(_ZN7S1305C4C1Ev),
  NSPAIR(_ZN7S1305C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1305C4[];
extern void _ZN7S1305C4D1Ev();
extern void _ZN7S1305C4D0Ev();
extern void _ZN7S1305C43v11Ev();
extern void _ZN7S1305C43v12Ev();
extern void _ZN7S1305C43v13Ev();
extern void _ZN7S1305C43v14Ev();
extern void _ZN7S1305C43v15Ev();
extern void _ZN7S1305C43v16Ev();
extern void _ZN7S1305C43v17Ev();
extern void _ZN7S1305C43v18Ev();
extern void _ZN7S1305C43v19Ev();
extern void _ZN7S1305C43v20Ev();
extern void _ZN7S1305C43v21Ev();
extern void _ZN7S1305C43v22Ev();
extern void _ZN7S1305C43v23Ev();
extern void _ZN7S1305C43v24Ev();
extern void _ZN7S1305C43v25Ev();
extern void _ZN7S1305C43v26Ev();
extern void _ZN7S1305C43v27Ev();
extern void _ZN7S1305C43v28Ev();
extern void _ZN7S1305C43v29Ev();
extern void _ZN7S1305C43v30Ev();
extern void _ZN7S1305C43v31Ev();
extern void _ZN7S1305C43v32Ev();
extern void _ZN7S1305C43v33Ev();
extern void _ZN7S1305C43v34Ev();
extern void _ZN7S1305C43v35Ev();
extern void _ZN7S1305C43v36Ev();
extern void _ZN7S1305C43v37Ev();
extern void _ZN7S1305C43v38Ev();
extern void _ZN7S1305C43v39Ev();
extern void _ZN7S1305C43v40Ev();
extern void _ZN7S1305C43v41Ev();
extern void _ZN7S1305C43v42Ev();
extern void _ZN7S1305C43v43Ev();
extern void _ZN7S1305C43v44Ev();
extern void _ZN7S1305C43v45Ev();
extern void _ZN7S1305C43v46Ev();
extern void _ZN7S1305C43v47Ev();
extern void _ZN7S1305C43v48Ev();
extern void _ZN7S1305C43v49Ev();
extern void _ZN7S1305C43v50Ev();
extern void _ZN7S1305C43v51Ev();
extern void _ZN7S1305C43v52Ev();
extern void _ZN7S1305C43v53Ev();
extern void _ZN7S1305C43v54Ev();
extern void _ZN7S1305C43v55Ev();
extern void _ZN7S1305C43v56Ev();
extern void _ZN7S1305C43v57Ev();
extern void _ZN7S1305C43v58Ev();
extern void _ZN7S1305C43v59Ev();
extern void _ZN7S1305C43v60Ev();
extern void _ZN7S1305C43v61Ev();
extern void _ZN7S1305C43v62Ev();
extern void _ZN7S1305C43v63Ev();
extern void _ZN7S1305C43v64Ev();
extern void _ZN7S1305C43v65Ev();
extern void _ZN7S1305C43v66Ev();
extern void _ZN7S1305C43v67Ev();
extern void _ZN7S1305C43v68Ev();
extern void _ZN7S1305C43v69Ev();
extern void _ZN7S1305C43v70Ev();
extern void _ZN7S1305C43v71Ev();
extern void _ZN7S1305C43v72Ev();
extern void _ZN7S1305C43v73Ev();
extern void _ZN7S1305C43v74Ev();
static  VTBL_ENTRY vtc_S1305C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1305C4[0]),
  (VTBL_ENTRY)&_ZN7S1305C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1305C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v74Ev,
};
extern VTBL_ENTRY _ZTI7S1305C4[];
extern  VTBL_ENTRY _ZTV7S1305C4[];
Class_Descriptor cd_S1305C4 = {  "S1305C4", // class name
  0,0,//no base classes
  &(vtc_S1305C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1305C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1305C4),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1305C3  : S1305C4 {
  virtual  ~S1305C3(); // _ZN7S1305C3D1Ev
  virtual void  v75(); // _ZN7S1305C33v75Ev
  virtual void  v76(); // _ZN7S1305C33v76Ev
  S1305C3(); // tgen
};
//SIG(-1 S1305C3) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2}


 S1305C3 ::~S1305C3(){ note_dtor("S1305C3", this);}
void  S1305C3 ::v75(){vfunc_called(this, "_ZN7S1305C33v75Ev");}
void  S1305C3 ::v76(){vfunc_called(this, "_ZN7S1305C33v76Ev");}
S1305C3 ::S1305C3(){ note_ctor("S1305C3", this);} // tgen

static void Test_S1305C3()
{
  extern Class_Descriptor cd_S1305C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1305C3, buf);
    S1305C3 *dp, &lv = *(dp=new (buf) S1305C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1305C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1305C3)");
    check_base_class_offset(lv, (S1305C4*), 0, "S1305C3");
    test_class_info(&lv, &cd_S1305C3);
    dp->~S1305C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1305C3(Test_S1305C3, "S1305C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1305C3C1Ev();
extern void _ZN7S1305C3D1Ev();
Name_Map name_map_S1305C3[] = {
  NSPAIR(_ZN7S1305C3C1Ev),
  NSPAIR(_ZN7S1305C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1305C4;
extern VTBL_ENTRY _ZTI7S1305C4[];
extern  VTBL_ENTRY _ZTV7S1305C4[];
static Base_Class bases_S1305C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1305C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1305C3[];
extern void _ZN7S1305C3D1Ev();
extern void _ZN7S1305C3D0Ev();
extern void _ZN7S1305C43v11Ev();
extern void _ZN7S1305C43v12Ev();
extern void _ZN7S1305C43v13Ev();
extern void _ZN7S1305C43v14Ev();
extern void _ZN7S1305C43v15Ev();
extern void _ZN7S1305C43v16Ev();
extern void _ZN7S1305C43v17Ev();
extern void _ZN7S1305C43v18Ev();
extern void _ZN7S1305C43v19Ev();
extern void _ZN7S1305C43v20Ev();
extern void _ZN7S1305C43v21Ev();
extern void _ZN7S1305C43v22Ev();
extern void _ZN7S1305C43v23Ev();
extern void _ZN7S1305C43v24Ev();
extern void _ZN7S1305C43v25Ev();
extern void _ZN7S1305C43v26Ev();
extern void _ZN7S1305C43v27Ev();
extern void _ZN7S1305C43v28Ev();
extern void _ZN7S1305C43v29Ev();
extern void _ZN7S1305C43v30Ev();
extern void _ZN7S1305C43v31Ev();
extern void _ZN7S1305C43v32Ev();
extern void _ZN7S1305C43v33Ev();
extern void _ZN7S1305C43v34Ev();
extern void _ZN7S1305C43v35Ev();
extern void _ZN7S1305C43v36Ev();
extern void _ZN7S1305C43v37Ev();
extern void _ZN7S1305C43v38Ev();
extern void _ZN7S1305C43v39Ev();
extern void _ZN7S1305C43v40Ev();
extern void _ZN7S1305C43v41Ev();
extern void _ZN7S1305C43v42Ev();
extern void _ZN7S1305C43v43Ev();
extern void _ZN7S1305C43v44Ev();
extern void _ZN7S1305C43v45Ev();
extern void _ZN7S1305C43v46Ev();
extern void _ZN7S1305C43v47Ev();
extern void _ZN7S1305C43v48Ev();
extern void _ZN7S1305C43v49Ev();
extern void _ZN7S1305C43v50Ev();
extern void _ZN7S1305C43v51Ev();
extern void _ZN7S1305C43v52Ev();
extern void _ZN7S1305C43v53Ev();
extern void _ZN7S1305C43v54Ev();
extern void _ZN7S1305C43v55Ev();
extern void _ZN7S1305C43v56Ev();
extern void _ZN7S1305C43v57Ev();
extern void _ZN7S1305C43v58Ev();
extern void _ZN7S1305C43v59Ev();
extern void _ZN7S1305C43v60Ev();
extern void _ZN7S1305C43v61Ev();
extern void _ZN7S1305C43v62Ev();
extern void _ZN7S1305C43v63Ev();
extern void _ZN7S1305C43v64Ev();
extern void _ZN7S1305C43v65Ev();
extern void _ZN7S1305C43v66Ev();
extern void _ZN7S1305C43v67Ev();
extern void _ZN7S1305C43v68Ev();
extern void _ZN7S1305C43v69Ev();
extern void _ZN7S1305C43v70Ev();
extern void _ZN7S1305C43v71Ev();
extern void _ZN7S1305C43v72Ev();
extern void _ZN7S1305C43v73Ev();
extern void _ZN7S1305C43v74Ev();
extern void _ZN7S1305C33v75Ev();
extern void _ZN7S1305C33v76Ev();
static  VTBL_ENTRY vtc_S1305C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1305C3[0]),
  (VTBL_ENTRY)&_ZN7S1305C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1305C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v74Ev,
  (VTBL_ENTRY)&_ZN7S1305C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1305C33v76Ev,
};
extern VTBL_ENTRY _ZTI7S1305C3[];
extern  VTBL_ENTRY _ZTV7S1305C3[];
Class_Descriptor cd_S1305C3 = {  "S1305C3", // class name
  bases_S1305C3, 1,
  &(vtc_S1305C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1305C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1305C3),70, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1305C2  : S1305C3 {
  ::S205C8_nt s1305c2f0;
  ::S1532C10_nt s1305c2f1;
  int s1305c2f2[2];
  unsigned int s1305c2f3:1;
  unsigned int s1305c2f4:1;
  virtual  ~S1305C2(); // _ZN7S1305C2D1Ev
  virtual void  v77(); // _ZN7S1305C23v77Ev
  virtual void  v78(); // _ZN7S1305C23v78Ev
  virtual void  v79(); // _ZN7S1305C23v79Ev
  virtual void  v80(); // _ZN7S1305C23v80Ev
  virtual void  v81(); // _ZN7S1305C23v81Ev
  virtual void  v82(); // _ZN7S1305C23v82Ev
  virtual void  v83(); // _ZN7S1305C23v83Ev
  virtual void  v84(); // _ZN7S1305C23v84Ev
  virtual void  v85(); // _ZN7S1305C23v85Ev
  S1305C2(); // tgen
};
//SIG(-1 S1305C2) C1{ BC2{ BC3{ vd v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v74 v75} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} FC9{ m Fi[4]} Fi[2] Fi:1 Fi:1}


 S1305C2 ::~S1305C2(){ note_dtor("S1305C2", this);}
void  S1305C2 ::v77(){vfunc_called(this, "_ZN7S1305C23v77Ev");}
void  S1305C2 ::v78(){vfunc_called(this, "_ZN7S1305C23v78Ev");}
void  S1305C2 ::v79(){vfunc_called(this, "_ZN7S1305C23v79Ev");}
void  S1305C2 ::v80(){vfunc_called(this, "_ZN7S1305C23v80Ev");}
void  S1305C2 ::v81(){vfunc_called(this, "_ZN7S1305C23v81Ev");}
void  S1305C2 ::v82(){vfunc_called(this, "_ZN7S1305C23v82Ev");}
void  S1305C2 ::v83(){vfunc_called(this, "_ZN7S1305C23v83Ev");}
void  S1305C2 ::v84(){vfunc_called(this, "_ZN7S1305C23v84Ev");}
void  S1305C2 ::v85(){vfunc_called(this, "_ZN7S1305C23v85Ev");}
S1305C2 ::S1305C2(){ note_ctor("S1305C2", this);} // tgen

static void Test_S1305C2()
{
  extern Class_Descriptor cd_S1305C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,26)];
    init_test(&cd_S1305C2, buf);
    S1305C2 *dp, &lv = *(dp=new (buf) S1305C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S1305C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1305C2)");
    check_base_class_offset(lv, (S1305C4*)(S1305C3*), 0, "S1305C2");
    check_base_class_offset(lv, (S1305C3*), 0, "S1305C2");
    check_field_offset(lv, s1305c2f0, ABISELECT(96,60), "S1305C2.s1305c2f0");
    check_field_offset(lv, s1305c2f1, ABISELECT(112,72), "S1305C2.s1305c2f1");
    check_field_offset(lv, s1305c2f2, ABISELECT(128,88), "S1305C2.s1305c2f2");
    set_bf_and_test(lv, s1305c2f3, ABISELECT(136,96), 0, 1, 1, "S1305C2");
    set_bf_and_test(lv, s1305c2f4, ABISELECT(136,96), 1, 1, 1, "S1305C2");
    test_class_info(&lv, &cd_S1305C2);
    dp->~S1305C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1305C2(Test_S1305C2, "S1305C2", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN7S1305C2C1Ev();
extern void _ZN7S1305C2D1Ev();
Name_Map name_map_S1305C2[] = {
  NSPAIR(_ZN7S1305C2C1Ev),
  NSPAIR(_ZN7S1305C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1305C4;
extern VTBL_ENTRY _ZTI7S1305C4[];
extern  VTBL_ENTRY _ZTV7S1305C4[];
extern Class_Descriptor cd_S1305C3;
extern VTBL_ENTRY _ZTI7S1305C3[];
extern  VTBL_ENTRY _ZTV7S1305C3[];
static Base_Class bases_S1305C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1305C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1305C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1305C2[];
extern void _ZN7S1305C2D1Ev();
extern void _ZN7S1305C2D0Ev();
extern void _ZN7S1305C43v11Ev();
extern void _ZN7S1305C43v12Ev();
extern void _ZN7S1305C43v13Ev();
extern void _ZN7S1305C43v14Ev();
extern void _ZN7S1305C43v15Ev();
extern void _ZN7S1305C43v16Ev();
extern void _ZN7S1305C43v17Ev();
extern void _ZN7S1305C43v18Ev();
extern void _ZN7S1305C43v19Ev();
extern void _ZN7S1305C43v20Ev();
extern void _ZN7S1305C43v21Ev();
extern void _ZN7S1305C43v22Ev();
extern void _ZN7S1305C43v23Ev();
extern void _ZN7S1305C43v24Ev();
extern void _ZN7S1305C43v25Ev();
extern void _ZN7S1305C43v26Ev();
extern void _ZN7S1305C43v27Ev();
extern void _ZN7S1305C43v28Ev();
extern void _ZN7S1305C43v29Ev();
extern void _ZN7S1305C43v30Ev();
extern void _ZN7S1305C43v31Ev();
extern void _ZN7S1305C43v32Ev();
extern void _ZN7S1305C43v33Ev();
extern void _ZN7S1305C43v34Ev();
extern void _ZN7S1305C43v35Ev();
extern void _ZN7S1305C43v36Ev();
extern void _ZN7S1305C43v37Ev();
extern void _ZN7S1305C43v38Ev();
extern void _ZN7S1305C43v39Ev();
extern void _ZN7S1305C43v40Ev();
extern void _ZN7S1305C43v41Ev();
extern void _ZN7S1305C43v42Ev();
extern void _ZN7S1305C43v43Ev();
extern void _ZN7S1305C43v44Ev();
extern void _ZN7S1305C43v45Ev();
extern void _ZN7S1305C43v46Ev();
extern void _ZN7S1305C43v47Ev();
extern void _ZN7S1305C43v48Ev();
extern void _ZN7S1305C43v49Ev();
extern void _ZN7S1305C43v50Ev();
extern void _ZN7S1305C43v51Ev();
extern void _ZN7S1305C43v52Ev();
extern void _ZN7S1305C43v53Ev();
extern void _ZN7S1305C43v54Ev();
extern void _ZN7S1305C43v55Ev();
extern void _ZN7S1305C43v56Ev();
extern void _ZN7S1305C43v57Ev();
extern void _ZN7S1305C43v58Ev();
extern void _ZN7S1305C43v59Ev();
extern void _ZN7S1305C43v60Ev();
extern void _ZN7S1305C43v61Ev();
extern void _ZN7S1305C43v62Ev();
extern void _ZN7S1305C43v63Ev();
extern void _ZN7S1305C43v64Ev();
extern void _ZN7S1305C43v65Ev();
extern void _ZN7S1305C43v66Ev();
extern void _ZN7S1305C43v67Ev();
extern void _ZN7S1305C43v68Ev();
extern void _ZN7S1305C43v69Ev();
extern void _ZN7S1305C43v70Ev();
extern void _ZN7S1305C43v71Ev();
extern void _ZN7S1305C43v72Ev();
extern void _ZN7S1305C43v73Ev();
extern void _ZN7S1305C43v74Ev();
extern void _ZN7S1305C33v75Ev();
extern void _ZN7S1305C33v76Ev();
extern void _ZN7S1305C23v77Ev();
extern void _ZN7S1305C23v78Ev();
extern void _ZN7S1305C23v79Ev();
extern void _ZN7S1305C23v80Ev();
extern void _ZN7S1305C23v81Ev();
extern void _ZN7S1305C23v82Ev();
extern void _ZN7S1305C23v83Ev();
extern void _ZN7S1305C23v84Ev();
extern void _ZN7S1305C23v85Ev();
static  VTBL_ENTRY vtc_S1305C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1305C2[0]),
  (VTBL_ENTRY)&_ZN7S1305C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1305C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v74Ev,
  (VTBL_ENTRY)&_ZN7S1305C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1305C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v79Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v80Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v81Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v82Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v83Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v84Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v85Ev,
};
extern VTBL_ENTRY _ZTI7S1305C2[];
extern  VTBL_ENTRY _ZTV7S1305C2[];
Class_Descriptor cd_S1305C2 = {  "S1305C2", // class name
  bases_S1305C2, 2,
  &(vtc_S1305C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI7S1305C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1305C2),79, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1305C13_nt  {
  int s1305c13f0[4];
  void  mf1305c13(); // _ZN11S1305C13_nt9mf1305c13Ev
};
//SIG(-1 S1305C13_nt) C1{ m Fi[4]}


void  S1305C13_nt ::mf1305c13(){}

//skip512 S1305C13_nt

#else // __cplusplus

Class_Descriptor cd_S1305C13_nt = {  "S1305C13_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  16, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1305C12_nt  : S1305C13_nt {
};
//SIG(-1 S1305C12_nt) C1{ BC2{ m Fi[4]}}



//skip512 S1305C12_nt

#else // __cplusplus

extern Class_Descriptor cd_S1305C13_nt;
static Base_Class bases_S1305C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1305C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1305C11  {
  void *s1305c11f0;
  ::S1305C12_nt s1305c11f1;
  void *s1305c11f2[3];
  void  mf1305c11(); // _ZN8S1305C119mf1305c11Ev
};
//SIG(-1 S1305C11) C1{ m Fp FC2{ BC3{ m Fi[4]}} Fp[3]}


void  S1305C11 ::mf1305c11(){}

static void Test_S1305C11()
{
  {
    init_simple_test("S1305C11");
    S1305C11 lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S1305C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1305C11)");
    check_field_offset(lv, s1305c11f0, 0, "S1305C11.s1305c11f0");
    check_field_offset(lv, s1305c11f1, ABISELECT(8,4), "S1305C11.s1305c11f1");
    check_field_offset(lv, s1305c11f2, ABISELECT(24,20), "S1305C11.s1305c11f2");
  }
}
static Arrange_To_Call_Me vS1305C11(Test_S1305C11, "S1305C11", ABISELECT(48,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1305C1  : S1305C2 {
  ::S1305C11 s1305c1f0;
  ::S1305C11 s1305c1f1;
  virtual  ~S1305C1(); // _ZN7S1305C1D1Ev
  virtual void  v1(); // _ZN7S1305C12v1Ev
  virtual void  v2(); // _ZN7S1305C12v2Ev
  virtual void  v3(); // _ZN7S1305C12v3Ev
  virtual void  v4(); // _ZN7S1305C12v4Ev
  virtual void  v5(); // _ZN7S1305C12v5Ev
  virtual void  v6(); // _ZN7S1305C12v6Ev
  virtual void  v7(); // _ZN7S1305C12v7Ev
  virtual void  v8(); // _ZN7S1305C12v8Ev
  virtual void  v9(); // _ZN7S1305C12v9Ev
  virtual void  v10(); // _ZN7S1305C13v10Ev
  S1305C1(); // tgen
};
//SIG(1 S1305C1) C1{ BC2{ BC3{ BC4{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v75 v76} vd v77 v78 v79 v80 v81 v82 v83 v84 v85 FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} FC10{ m Fi[4]} Fi[2] Fi:1 Fi:1} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 FC11{ m Fp FC12{ BC13{ m Fi[4]}} Fp[3]} FC11}


 S1305C1 ::~S1305C1(){ note_dtor("S1305C1", this);}
void  S1305C1 ::v1(){vfunc_called(this, "_ZN7S1305C12v1Ev");}
void  S1305C1 ::v2(){vfunc_called(this, "_ZN7S1305C12v2Ev");}
void  S1305C1 ::v3(){vfunc_called(this, "_ZN7S1305C12v3Ev");}
void  S1305C1 ::v4(){vfunc_called(this, "_ZN7S1305C12v4Ev");}
void  S1305C1 ::v5(){vfunc_called(this, "_ZN7S1305C12v5Ev");}
void  S1305C1 ::v6(){vfunc_called(this, "_ZN7S1305C12v6Ev");}
void  S1305C1 ::v7(){vfunc_called(this, "_ZN7S1305C12v7Ev");}
void  S1305C1 ::v8(){vfunc_called(this, "_ZN7S1305C12v8Ev");}
void  S1305C1 ::v9(){vfunc_called(this, "_ZN7S1305C12v9Ev");}
void  S1305C1 ::v10(){vfunc_called(this, "_ZN7S1305C13v10Ev");}
S1305C1 ::S1305C1(){ note_ctor("S1305C1", this);} // tgen

static void Test_S1305C1()
{
  extern Class_Descriptor cd_S1305C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,42)];
    init_test(&cd_S1305C1, buf);
    S1305C1 *dp, &lv = *(dp=new (buf) S1305C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,164), "sizeof(S1305C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1305C1)");
    check_base_class_offset(lv, (S1305C4*)(S1305C3*)(S1305C2*), 0, "S1305C1");
    check_base_class_offset(lv, (S1305C3*)(S1305C2*), 0, "S1305C1");
    check_base_class_offset(lv, (S1305C2*), 0, "S1305C1");
    check_field_offset(lv, s1305c1f0, ABISELECT(144,100), "S1305C1.s1305c1f0");
    check_field_offset(lv, s1305c1f1, ABISELECT(192,132), "S1305C1.s1305c1f1");
    test_class_info(&lv, &cd_S1305C1);
    dp->~S1305C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1305C1(Test_S1305C1, "S1305C1", ABISELECT(240,164));

#else // __cplusplus

extern void _ZN7S1305C1C1Ev();
extern void _ZN7S1305C1D1Ev();
Name_Map name_map_S1305C1[] = {
  NSPAIR(_ZN7S1305C1C1Ev),
  NSPAIR(_ZN7S1305C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1305C4;
extern VTBL_ENTRY _ZTI7S1305C4[];
extern  VTBL_ENTRY _ZTV7S1305C4[];
extern Class_Descriptor cd_S1305C3;
extern VTBL_ENTRY _ZTI7S1305C3[];
extern  VTBL_ENTRY _ZTV7S1305C3[];
extern Class_Descriptor cd_S1305C2;
extern VTBL_ENTRY _ZTI7S1305C2[];
extern  VTBL_ENTRY _ZTV7S1305C2[];
static Base_Class bases_S1305C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1305C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1305C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1305C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1305C1[];
extern void _ZN7S1305C1D1Ev();
extern void _ZN7S1305C1D0Ev();
extern void _ZN7S1305C43v11Ev();
extern void _ZN7S1305C43v12Ev();
extern void _ZN7S1305C43v13Ev();
extern void _ZN7S1305C43v14Ev();
extern void _ZN7S1305C43v15Ev();
extern void _ZN7S1305C43v16Ev();
extern void _ZN7S1305C43v17Ev();
extern void _ZN7S1305C43v18Ev();
extern void _ZN7S1305C43v19Ev();
extern void _ZN7S1305C43v20Ev();
extern void _ZN7S1305C43v21Ev();
extern void _ZN7S1305C43v22Ev();
extern void _ZN7S1305C43v23Ev();
extern void _ZN7S1305C43v24Ev();
extern void _ZN7S1305C43v25Ev();
extern void _ZN7S1305C43v26Ev();
extern void _ZN7S1305C43v27Ev();
extern void _ZN7S1305C43v28Ev();
extern void _ZN7S1305C43v29Ev();
extern void _ZN7S1305C43v30Ev();
extern void _ZN7S1305C43v31Ev();
extern void _ZN7S1305C43v32Ev();
extern void _ZN7S1305C43v33Ev();
extern void _ZN7S1305C43v34Ev();
extern void _ZN7S1305C43v35Ev();
extern void _ZN7S1305C43v36Ev();
extern void _ZN7S1305C43v37Ev();
extern void _ZN7S1305C43v38Ev();
extern void _ZN7S1305C43v39Ev();
extern void _ZN7S1305C43v40Ev();
extern void _ZN7S1305C43v41Ev();
extern void _ZN7S1305C43v42Ev();
extern void _ZN7S1305C43v43Ev();
extern void _ZN7S1305C43v44Ev();
extern void _ZN7S1305C43v45Ev();
extern void _ZN7S1305C43v46Ev();
extern void _ZN7S1305C43v47Ev();
extern void _ZN7S1305C43v48Ev();
extern void _ZN7S1305C43v49Ev();
extern void _ZN7S1305C43v50Ev();
extern void _ZN7S1305C43v51Ev();
extern void _ZN7S1305C43v52Ev();
extern void _ZN7S1305C43v53Ev();
extern void _ZN7S1305C43v54Ev();
extern void _ZN7S1305C43v55Ev();
extern void _ZN7S1305C43v56Ev();
extern void _ZN7S1305C43v57Ev();
extern void _ZN7S1305C43v58Ev();
extern void _ZN7S1305C43v59Ev();
extern void _ZN7S1305C43v60Ev();
extern void _ZN7S1305C43v61Ev();
extern void _ZN7S1305C43v62Ev();
extern void _ZN7S1305C43v63Ev();
extern void _ZN7S1305C43v64Ev();
extern void _ZN7S1305C43v65Ev();
extern void _ZN7S1305C43v66Ev();
extern void _ZN7S1305C43v67Ev();
extern void _ZN7S1305C43v68Ev();
extern void _ZN7S1305C43v69Ev();
extern void _ZN7S1305C43v70Ev();
extern void _ZN7S1305C43v71Ev();
extern void _ZN7S1305C43v72Ev();
extern void _ZN7S1305C43v73Ev();
extern void _ZN7S1305C43v74Ev();
extern void _ZN7S1305C33v75Ev();
extern void _ZN7S1305C33v76Ev();
extern void _ZN7S1305C23v77Ev();
extern void _ZN7S1305C23v78Ev();
extern void _ZN7S1305C23v79Ev();
extern void _ZN7S1305C23v80Ev();
extern void _ZN7S1305C23v81Ev();
extern void _ZN7S1305C23v82Ev();
extern void _ZN7S1305C23v83Ev();
extern void _ZN7S1305C23v84Ev();
extern void _ZN7S1305C23v85Ev();
extern void _ZN7S1305C12v1Ev();
extern void _ZN7S1305C12v2Ev();
extern void _ZN7S1305C12v3Ev();
extern void _ZN7S1305C12v4Ev();
extern void _ZN7S1305C12v5Ev();
extern void _ZN7S1305C12v6Ev();
extern void _ZN7S1305C12v7Ev();
extern void _ZN7S1305C12v8Ev();
extern void _ZN7S1305C12v9Ev();
extern void _ZN7S1305C13v10Ev();
static  VTBL_ENTRY vtc_S1305C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1305C1[0]),
  (VTBL_ENTRY)&_ZN7S1305C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1305C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v74Ev,
  (VTBL_ENTRY)&_ZN7S1305C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1305C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v79Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v80Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v81Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v82Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v83Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v84Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v85Ev,
  (VTBL_ENTRY)&_ZN7S1305C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1305C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1305C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1305C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1305C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1305C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1305C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1305C12v8Ev,
  (VTBL_ENTRY)&_ZN7S1305C12v9Ev,
  (VTBL_ENTRY)&_ZN7S1305C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S1305C1[];
extern  VTBL_ENTRY _ZTV7S1305C1[];
Class_Descriptor cd_S1305C1 = {  "S1305C1", // class name
  bases_S1305C1, 3,
  &(vtc_S1305C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,164), // object size
  NSPAIRA(_ZTI7S1305C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1305C1),89, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1439C4  {
  int s1439c4f0;
  __tsi64 s1439c4f1;
  void *s1439c4f2[4];
  int s1439c4f3[2];
  void *s1439c4f4;
  ::S3423C4_nt s1439c4f5;
  void *s1439c4f6[2];
  virtual  ~S1439C4(); // _ZN7S1439C4D1Ev
  virtual void  v4(); // _ZN7S1439C42v4Ev
  virtual void  v5(); // _ZN7S1439C42v5Ev
  virtual void  v6(); // _ZN7S1439C42v6Ev
  virtual void  v7(); // _ZN7S1439C42v7Ev
  virtual void  v8(); // _ZN7S1439C42v8Ev
  virtual void  v9(); // _ZN7S1439C42v9Ev
  virtual void  v10(); // _ZN7S1439C43v10Ev
  virtual void  v11(); // _ZN7S1439C43v11Ev
  virtual void  v12(); // _ZN7S1439C43v12Ev
  virtual void  v13(); // _ZN7S1439C43v13Ev
  virtual void  v14(); // _ZN7S1439C43v14Ev
  virtual void  v15(); // _ZN7S1439C43v15Ev
  virtual void  v16(); // _ZN7S1439C43v16Ev
  virtual void  v17(); // _ZN7S1439C43v17Ev
  virtual void  v18(); // _ZN7S1439C43v18Ev
  virtual void  v19(); // _ZN7S1439C43v19Ev
  virtual void  v20(); // _ZN7S1439C43v20Ev
  virtual void  v21(); // _ZN7S1439C43v21Ev
  virtual void  v22(); // _ZN7S1439C43v22Ev
  virtual void  v23(); // _ZN7S1439C43v23Ev
  virtual void  v24(); // _ZN7S1439C43v24Ev
  virtual void  v25(); // _ZN7S1439C43v25Ev
  virtual void  v26(); // _ZN7S1439C43v26Ev
  virtual void  v27(); // _ZN7S1439C43v27Ev
  virtual void  v28(); // _ZN7S1439C43v28Ev
  virtual void  v29(); // _ZN7S1439C43v29Ev
  virtual void  v30(); // _ZN7S1439C43v30Ev
  virtual void  v31(); // _ZN7S1439C43v31Ev
  virtual void  v32(); // _ZN7S1439C43v32Ev
  virtual void  v33(); // _ZN7S1439C43v33Ev
  virtual void  v34(); // _ZN7S1439C43v34Ev
  virtual void  v35(); // _ZN7S1439C43v35Ev
  virtual void  v36(); // _ZN7S1439C43v36Ev
  virtual void  v37(); // _ZN7S1439C43v37Ev
  virtual void  v38(); // _ZN7S1439C43v38Ev
  virtual void  v39(); // _ZN7S1439C43v39Ev
  virtual void  v40(); // _ZN7S1439C43v40Ev
  virtual void  v41(); // _ZN7S1439C43v41Ev
  virtual void  v42(); // _ZN7S1439C43v42Ev
  virtual void  v43(); // _ZN7S1439C43v43Ev
  virtual void  v44(); // _ZN7S1439C43v44Ev
  virtual void  v45(); // _ZN7S1439C43v45Ev
  virtual void  v46(); // _ZN7S1439C43v46Ev
  virtual void  v47(); // _ZN7S1439C43v47Ev
  virtual void  v48(); // _ZN7S1439C43v48Ev
  virtual void  v49(); // _ZN7S1439C43v49Ev
  virtual void  v50(); // _ZN7S1439C43v50Ev
  virtual void  v51(); // _ZN7S1439C43v51Ev
  virtual void  v52(); // _ZN7S1439C43v52Ev
  virtual void  v53(); // _ZN7S1439C43v53Ev
  virtual void  v54(); // _ZN7S1439C43v54Ev
  virtual void  v55(); // _ZN7S1439C43v55Ev
  virtual void  v56(); // _ZN7S1439C43v56Ev
  virtual void  v57(); // _ZN7S1439C43v57Ev
  virtual void  v58(); // _ZN7S1439C43v58Ev
  virtual void  v59(); // _ZN7S1439C43v59Ev
  virtual void  v60(); // _ZN7S1439C43v60Ev
  virtual void  v61(); // _ZN7S1439C43v61Ev
  virtual void  v62(); // _ZN7S1439C43v62Ev
  virtual void  v63(); // _ZN7S1439C43v63Ev
  virtual void  v64(); // _ZN7S1439C43v64Ev
  virtual void  v65(); // _ZN7S1439C43v65Ev
  virtual void  v66(); // _ZN7S1439C43v66Ev
  virtual void  v67(); // _ZN7S1439C43v67Ev
  S1439C4(); // tgen
};
//SIG(-1 S1439C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S1439C4 ::~S1439C4(){ note_dtor("S1439C4", this);}
void  S1439C4 ::v4(){vfunc_called(this, "_ZN7S1439C42v4Ev");}
void  S1439C4 ::v5(){vfunc_called(this, "_ZN7S1439C42v5Ev");}
void  S1439C4 ::v6(){vfunc_called(this, "_ZN7S1439C42v6Ev");}
void  S1439C4 ::v7(){vfunc_called(this, "_ZN7S1439C42v7Ev");}
void  S1439C4 ::v8(){vfunc_called(this, "_ZN7S1439C42v8Ev");}
void  S1439C4 ::v9(){vfunc_called(this, "_ZN7S1439C42v9Ev");}
void  S1439C4 ::v10(){vfunc_called(this, "_ZN7S1439C43v10Ev");}
void  S1439C4 ::v11(){vfunc_called(this, "_ZN7S1439C43v11Ev");}
void  S1439C4 ::v12(){vfunc_called(this, "_ZN7S1439C43v12Ev");}
void  S1439C4 ::v13(){vfunc_called(this, "_ZN7S1439C43v13Ev");}
void  S1439C4 ::v14(){vfunc_called(this, "_ZN7S1439C43v14Ev");}
void  S1439C4 ::v15(){vfunc_called(this, "_ZN7S1439C43v15Ev");}
void  S1439C4 ::v16(){vfunc_called(this, "_ZN7S1439C43v16Ev");}
void  S1439C4 ::v17(){vfunc_called(this, "_ZN7S1439C43v17Ev");}
void  S1439C4 ::v18(){vfunc_called(this, "_ZN7S1439C43v18Ev");}
void  S1439C4 ::v19(){vfunc_called(this, "_ZN7S1439C43v19Ev");}
void  S1439C4 ::v20(){vfunc_called(this, "_ZN7S1439C43v20Ev");}
void  S1439C4 ::v21(){vfunc_called(this, "_ZN7S1439C43v21Ev");}
void  S1439C4 ::v22(){vfunc_called(this, "_ZN7S1439C43v22Ev");}
void  S1439C4 ::v23(){vfunc_called(this, "_ZN7S1439C43v23Ev");}
void  S1439C4 ::v24(){vfunc_called(this, "_ZN7S1439C43v24Ev");}
void  S1439C4 ::v25(){vfunc_called(this, "_ZN7S1439C43v25Ev");}
void  S1439C4 ::v26(){vfunc_called(this, "_ZN7S1439C43v26Ev");}
void  S1439C4 ::v27(){vfunc_called(this, "_ZN7S1439C43v27Ev");}
void  S1439C4 ::v28(){vfunc_called(this, "_ZN7S1439C43v28Ev");}
void  S1439C4 ::v29(){vfunc_called(this, "_ZN7S1439C43v29Ev");}
void  S1439C4 ::v30(){vfunc_called(this, "_ZN7S1439C43v30Ev");}
void  S1439C4 ::v31(){vfunc_called(this, "_ZN7S1439C43v31Ev");}
void  S1439C4 ::v32(){vfunc_called(this, "_ZN7S1439C43v32Ev");}
void  S1439C4 ::v33(){vfunc_called(this, "_ZN7S1439C43v33Ev");}
void  S1439C4 ::v34(){vfunc_called(this, "_ZN7S1439C43v34Ev");}
void  S1439C4 ::v35(){vfunc_called(this, "_ZN7S1439C43v35Ev");}
void  S1439C4 ::v36(){vfunc_called(this, "_ZN7S1439C43v36Ev");}
void  S1439C4 ::v37(){vfunc_called(this, "_ZN7S1439C43v37Ev");}
void  S1439C4 ::v38(){vfunc_called(this, "_ZN7S1439C43v38Ev");}
void  S1439C4 ::v39(){vfunc_called(this, "_ZN7S1439C43v39Ev");}
void  S1439C4 ::v40(){vfunc_called(this, "_ZN7S1439C43v40Ev");}
void  S1439C4 ::v41(){vfunc_called(this, "_ZN7S1439C43v41Ev");}
void  S1439C4 ::v42(){vfunc_called(this, "_ZN7S1439C43v42Ev");}
void  S1439C4 ::v43(){vfunc_called(this, "_ZN7S1439C43v43Ev");}
void  S1439C4 ::v44(){vfunc_called(this, "_ZN7S1439C43v44Ev");}
void  S1439C4 ::v45(){vfunc_called(this, "_ZN7S1439C43v45Ev");}
void  S1439C4 ::v46(){vfunc_called(this, "_ZN7S1439C43v46Ev");}
void  S1439C4 ::v47(){vfunc_called(this, "_ZN7S1439C43v47Ev");}
void  S1439C4 ::v48(){vfunc_called(this, "_ZN7S1439C43v48Ev");}
void  S1439C4 ::v49(){vfunc_called(this, "_ZN7S1439C43v49Ev");}
void  S1439C4 ::v50(){vfunc_called(this, "_ZN7S1439C43v50Ev");}
void  S1439C4 ::v51(){vfunc_called(this, "_ZN7S1439C43v51Ev");}
void  S1439C4 ::v52(){vfunc_called(this, "_ZN7S1439C43v52Ev");}
void  S1439C4 ::v53(){vfunc_called(this, "_ZN7S1439C43v53Ev");}
void  S1439C4 ::v54(){vfunc_called(this, "_ZN7S1439C43v54Ev");}
void  S1439C4 ::v55(){vfunc_called(this, "_ZN7S1439C43v55Ev");}
void  S1439C4 ::v56(){vfunc_called(this, "_ZN7S1439C43v56Ev");}
void  S1439C4 ::v57(){vfunc_called(this, "_ZN7S1439C43v57Ev");}
void  S1439C4 ::v58(){vfunc_called(this, "_ZN7S1439C43v58Ev");}
void  S1439C4 ::v59(){vfunc_called(this, "_ZN7S1439C43v59Ev");}
void  S1439C4 ::v60(){vfunc_called(this, "_ZN7S1439C43v60Ev");}
void  S1439C4 ::v61(){vfunc_called(this, "_ZN7S1439C43v61Ev");}
void  S1439C4 ::v62(){vfunc_called(this, "_ZN7S1439C43v62Ev");}
void  S1439C4 ::v63(){vfunc_called(this, "_ZN7S1439C43v63Ev");}
void  S1439C4 ::v64(){vfunc_called(this, "_ZN7S1439C43v64Ev");}
void  S1439C4 ::v65(){vfunc_called(this, "_ZN7S1439C43v65Ev");}
void  S1439C4 ::v66(){vfunc_called(this, "_ZN7S1439C43v66Ev");}
void  S1439C4 ::v67(){vfunc_called(this, "_ZN7S1439C43v67Ev");}
S1439C4 ::S1439C4(){ note_ctor("S1439C4", this);} // tgen

static void Test_S1439C4()
{
  extern Class_Descriptor cd_S1439C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1439C4, buf);
    S1439C4 *dp, &lv = *(dp=new (buf) S1439C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1439C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1439C4)");
    check_field_offset(lv, s1439c4f0, ABISELECT(8,4), "S1439C4.s1439c4f0");
    check_field_offset(lv, s1439c4f1, ABISELECT(16,8), "S1439C4.s1439c4f1");
    check_field_offset(lv, s1439c4f2, ABISELECT(24,16), "S1439C4.s1439c4f2");
    check_field_offset(lv, s1439c4f3, ABISELECT(56,32), "S1439C4.s1439c4f3");
    check_field_offset(lv, s1439c4f4, ABISELECT(64,40), "S1439C4.s1439c4f4");
    check_field_offset(lv, s1439c4f5, ABISELECT(72,44), "S1439C4.s1439c4f5");
    check_field_offset(lv, s1439c4f6, ABISELECT(80,52), "S1439C4.s1439c4f6");
    test_class_info(&lv, &cd_S1439C4);
    dp->~S1439C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1439C4(Test_S1439C4, "S1439C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1439C4C1Ev();
extern void _ZN7S1439C4D1Ev();
Name_Map name_map_S1439C4[] = {
  NSPAIR(_ZN7S1439C4C1Ev),
  NSPAIR(_ZN7S1439C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1439C4[];
extern void _ZN7S1439C4D1Ev();
extern void _ZN7S1439C4D0Ev();
extern void _ZN7S1439C42v4Ev();
extern void _ZN7S1439C42v5Ev();
extern void _ZN7S1439C42v6Ev();
extern void _ZN7S1439C42v7Ev();
extern void _ZN7S1439C42v8Ev();
extern void _ZN7S1439C42v9Ev();
extern void _ZN7S1439C43v10Ev();
extern void _ZN7S1439C43v11Ev();
extern void _ZN7S1439C43v12Ev();
extern void _ZN7S1439C43v13Ev();
extern void _ZN7S1439C43v14Ev();
extern void _ZN7S1439C43v15Ev();
extern void _ZN7S1439C43v16Ev();
extern void _ZN7S1439C43v17Ev();
extern void _ZN7S1439C43v18Ev();
extern void _ZN7S1439C43v19Ev();
extern void _ZN7S1439C43v20Ev();
extern void _ZN7S1439C43v21Ev();
extern void _ZN7S1439C43v22Ev();
extern void _ZN7S1439C43v23Ev();
extern void _ZN7S1439C43v24Ev();
extern void _ZN7S1439C43v25Ev();
extern void _ZN7S1439C43v26Ev();
extern void _ZN7S1439C43v27Ev();
extern void _ZN7S1439C43v28Ev();
extern void _ZN7S1439C43v29Ev();
extern void _ZN7S1439C43v30Ev();
extern void _ZN7S1439C43v31Ev();
extern void _ZN7S1439C43v32Ev();
extern void _ZN7S1439C43v33Ev();
extern void _ZN7S1439C43v34Ev();
extern void _ZN7S1439C43v35Ev();
extern void _ZN7S1439C43v36Ev();
extern void _ZN7S1439C43v37Ev();
extern void _ZN7S1439C43v38Ev();
extern void _ZN7S1439C43v39Ev();
extern void _ZN7S1439C43v40Ev();
extern void _ZN7S1439C43v41Ev();
extern void _ZN7S1439C43v42Ev();
extern void _ZN7S1439C43v43Ev();
extern void _ZN7S1439C43v44Ev();
extern void _ZN7S1439C43v45Ev();
extern void _ZN7S1439C43v46Ev();
extern void _ZN7S1439C43v47Ev();
extern void _ZN7S1439C43v48Ev();
extern void _ZN7S1439C43v49Ev();
extern void _ZN7S1439C43v50Ev();
extern void _ZN7S1439C43v51Ev();
extern void _ZN7S1439C43v52Ev();
extern void _ZN7S1439C43v53Ev();
extern void _ZN7S1439C43v54Ev();
extern void _ZN7S1439C43v55Ev();
extern void _ZN7S1439C43v56Ev();
extern void _ZN7S1439C43v57Ev();
extern void _ZN7S1439C43v58Ev();
extern void _ZN7S1439C43v59Ev();
extern void _ZN7S1439C43v60Ev();
extern void _ZN7S1439C43v61Ev();
extern void _ZN7S1439C43v62Ev();
extern void _ZN7S1439C43v63Ev();
extern void _ZN7S1439C43v64Ev();
extern void _ZN7S1439C43v65Ev();
extern void _ZN7S1439C43v66Ev();
extern void _ZN7S1439C43v67Ev();
static  VTBL_ENTRY vtc_S1439C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1439C4[0]),
  (VTBL_ENTRY)&_ZN7S1439C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1439C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v67Ev,
};
extern VTBL_ENTRY _ZTI7S1439C4[];
extern  VTBL_ENTRY _ZTV7S1439C4[];
Class_Descriptor cd_S1439C4 = {  "S1439C4", // class name
  0,0,//no base classes
  &(vtc_S1439C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1439C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1439C4),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1439C3  : S1439C4 {
  virtual  ~S1439C3(); // _ZN7S1439C3D1Ev
  virtual void  v68(); // _ZN7S1439C33v68Ev
  virtual void  v69(); // _ZN7S1439C33v69Ev
  S1439C3(); // tgen
};
//SIG(-1 S1439C3) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2}


 S1439C3 ::~S1439C3(){ note_dtor("S1439C3", this);}
void  S1439C3 ::v68(){vfunc_called(this, "_ZN7S1439C33v68Ev");}
void  S1439C3 ::v69(){vfunc_called(this, "_ZN7S1439C33v69Ev");}
S1439C3 ::S1439C3(){ note_ctor("S1439C3", this);} // tgen

static void Test_S1439C3()
{
  extern Class_Descriptor cd_S1439C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1439C3, buf);
    S1439C3 *dp, &lv = *(dp=new (buf) S1439C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1439C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1439C3)");
    check_base_class_offset(lv, (S1439C4*), 0, "S1439C3");
    test_class_info(&lv, &cd_S1439C3);
    dp->~S1439C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1439C3(Test_S1439C3, "S1439C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1439C3C1Ev();
extern void _ZN7S1439C3D1Ev();
Name_Map name_map_S1439C3[] = {
  NSPAIR(_ZN7S1439C3C1Ev),
  NSPAIR(_ZN7S1439C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1439C4;
extern VTBL_ENTRY _ZTI7S1439C4[];
extern  VTBL_ENTRY _ZTV7S1439C4[];
static Base_Class bases_S1439C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1439C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1439C3[];
extern void _ZN7S1439C3D1Ev();
extern void _ZN7S1439C3D0Ev();
extern void _ZN7S1439C42v4Ev();
extern void _ZN7S1439C42v5Ev();
extern void _ZN7S1439C42v6Ev();
extern void _ZN7S1439C42v7Ev();
extern void _ZN7S1439C42v8Ev();
extern void _ZN7S1439C42v9Ev();
extern void _ZN7S1439C43v10Ev();
extern void _ZN7S1439C43v11Ev();
extern void _ZN7S1439C43v12Ev();
extern void _ZN7S1439C43v13Ev();
extern void _ZN7S1439C43v14Ev();
extern void _ZN7S1439C43v15Ev();
extern void _ZN7S1439C43v16Ev();
extern void _ZN7S1439C43v17Ev();
extern void _ZN7S1439C43v18Ev();
extern void _ZN7S1439C43v19Ev();
extern void _ZN7S1439C43v20Ev();
extern void _ZN7S1439C43v21Ev();
extern void _ZN7S1439C43v22Ev();
extern void _ZN7S1439C43v23Ev();
extern void _ZN7S1439C43v24Ev();
extern void _ZN7S1439C43v25Ev();
extern void _ZN7S1439C43v26Ev();
extern void _ZN7S1439C43v27Ev();
extern void _ZN7S1439C43v28Ev();
extern void _ZN7S1439C43v29Ev();
extern void _ZN7S1439C43v30Ev();
extern void _ZN7S1439C43v31Ev();
extern void _ZN7S1439C43v32Ev();
extern void _ZN7S1439C43v33Ev();
extern void _ZN7S1439C43v34Ev();
extern void _ZN7S1439C43v35Ev();
extern void _ZN7S1439C43v36Ev();
extern void _ZN7S1439C43v37Ev();
extern void _ZN7S1439C43v38Ev();
extern void _ZN7S1439C43v39Ev();
extern void _ZN7S1439C43v40Ev();
extern void _ZN7S1439C43v41Ev();
extern void _ZN7S1439C43v42Ev();
extern void _ZN7S1439C43v43Ev();
extern void _ZN7S1439C43v44Ev();
extern void _ZN7S1439C43v45Ev();
extern void _ZN7S1439C43v46Ev();
extern void _ZN7S1439C43v47Ev();
extern void _ZN7S1439C43v48Ev();
extern void _ZN7S1439C43v49Ev();
extern void _ZN7S1439C43v50Ev();
extern void _ZN7S1439C43v51Ev();
extern void _ZN7S1439C43v52Ev();
extern void _ZN7S1439C43v53Ev();
extern void _ZN7S1439C43v54Ev();
extern void _ZN7S1439C43v55Ev();
extern void _ZN7S1439C43v56Ev();
extern void _ZN7S1439C43v57Ev();
extern void _ZN7S1439C43v58Ev();
extern void _ZN7S1439C43v59Ev();
extern void _ZN7S1439C43v60Ev();
extern void _ZN7S1439C43v61Ev();
extern void _ZN7S1439C43v62Ev();
extern void _ZN7S1439C43v63Ev();
extern void _ZN7S1439C43v64Ev();
extern void _ZN7S1439C43v65Ev();
extern void _ZN7S1439C43v66Ev();
extern void _ZN7S1439C43v67Ev();
extern void _ZN7S1439C33v68Ev();
extern void _ZN7S1439C33v69Ev();
static  VTBL_ENTRY vtc_S1439C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1439C3[0]),
  (VTBL_ENTRY)&_ZN7S1439C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1439C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1439C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1439C33v69Ev,
};
extern VTBL_ENTRY _ZTI7S1439C3[];
extern  VTBL_ENTRY _ZTV7S1439C3[];
Class_Descriptor cd_S1439C3 = {  "S1439C3", // class name
  bases_S1439C3, 1,
  &(vtc_S1439C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1439C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1439C3),70, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1439C2  : S1439C3 {
  ::S205C8_nt s1439c2f0;
  ::S1532C10_nt s1439c2f1;
  int s1439c2f2[2];
  unsigned int s1439c2f3:1;
  unsigned int s1439c2f4:1;
  virtual  ~S1439C2(); // _ZN7S1439C2D1Ev
  virtual void  v70(); // _ZN7S1439C23v70Ev
  virtual void  v71(); // _ZN7S1439C23v71Ev
  virtual void  v72(); // _ZN7S1439C23v72Ev
  virtual void  v73(); // _ZN7S1439C23v73Ev
  virtual void  v74(); // _ZN7S1439C23v74Ev
  virtual void  v75(); // _ZN7S1439C23v75Ev
  virtual void  v76(); // _ZN7S1439C23v76Ev
  virtual void  v77(); // _ZN7S1439C23v77Ev
  virtual void  v78(); // _ZN7S1439C23v78Ev
  S1439C2(); // tgen
};
//SIG(-1 S1439C2) C1{ BC2{ BC3{ vd v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v74 v75} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} FC9{ m Fi[4]} Fi[2] Fi:1 Fi:1}


 S1439C2 ::~S1439C2(){ note_dtor("S1439C2", this);}
void  S1439C2 ::v70(){vfunc_called(this, "_ZN7S1439C23v70Ev");}
void  S1439C2 ::v71(){vfunc_called(this, "_ZN7S1439C23v71Ev");}
void  S1439C2 ::v72(){vfunc_called(this, "_ZN7S1439C23v72Ev");}
void  S1439C2 ::v73(){vfunc_called(this, "_ZN7S1439C23v73Ev");}
void  S1439C2 ::v74(){vfunc_called(this, "_ZN7S1439C23v74Ev");}
void  S1439C2 ::v75(){vfunc_called(this, "_ZN7S1439C23v75Ev");}
void  S1439C2 ::v76(){vfunc_called(this, "_ZN7S1439C23v76Ev");}
void  S1439C2 ::v77(){vfunc_called(this, "_ZN7S1439C23v77Ev");}
void  S1439C2 ::v78(){vfunc_called(this, "_ZN7S1439C23v78Ev");}
S1439C2 ::S1439C2(){ note_ctor("S1439C2", this);} // tgen

static void Test_S1439C2()
{
  extern Class_Descriptor cd_S1439C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,26)];
    init_test(&cd_S1439C2, buf);
    S1439C2 *dp, &lv = *(dp=new (buf) S1439C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S1439C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1439C2)");
    check_base_class_offset(lv, (S1439C4*)(S1439C3*), 0, "S1439C2");
    check_base_class_offset(lv, (S1439C3*), 0, "S1439C2");
    check_field_offset(lv, s1439c2f0, ABISELECT(96,60), "S1439C2.s1439c2f0");
    check_field_offset(lv, s1439c2f1, ABISELECT(112,72), "S1439C2.s1439c2f1");
    check_field_offset(lv, s1439c2f2, ABISELECT(128,88), "S1439C2.s1439c2f2");
    set_bf_and_test(lv, s1439c2f3, ABISELECT(136,96), 0, 1, 1, "S1439C2");
    set_bf_and_test(lv, s1439c2f4, ABISELECT(136,96), 1, 1, 1, "S1439C2");
    test_class_info(&lv, &cd_S1439C2);
    dp->~S1439C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1439C2(Test_S1439C2, "S1439C2", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN7S1439C2C1Ev();
extern void _ZN7S1439C2D1Ev();
Name_Map name_map_S1439C2[] = {
  NSPAIR(_ZN7S1439C2C1Ev),
  NSPAIR(_ZN7S1439C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1439C4;
extern VTBL_ENTRY _ZTI7S1439C4[];
extern  VTBL_ENTRY _ZTV7S1439C4[];
extern Class_Descriptor cd_S1439C3;
extern VTBL_ENTRY _ZTI7S1439C3[];
extern  VTBL_ENTRY _ZTV7S1439C3[];
static Base_Class bases_S1439C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1439C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1439C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1439C2[];
extern void _ZN7S1439C2D1Ev();
extern void _ZN7S1439C2D0Ev();
extern void _ZN7S1439C42v4Ev();
extern void _ZN7S1439C42v5Ev();
extern void _ZN7S1439C42v6Ev();
extern void _ZN7S1439C42v7Ev();
extern void _ZN7S1439C42v8Ev();
extern void _ZN7S1439C42v9Ev();
extern void _ZN7S1439C43v10Ev();
extern void _ZN7S1439C43v11Ev();
extern void _ZN7S1439C43v12Ev();
extern void _ZN7S1439C43v13Ev();
extern void _ZN7S1439C43v14Ev();
extern void _ZN7S1439C43v15Ev();
extern void _ZN7S1439C43v16Ev();
extern void _ZN7S1439C43v17Ev();
extern void _ZN7S1439C43v18Ev();
extern void _ZN7S1439C43v19Ev();
extern void _ZN7S1439C43v20Ev();
extern void _ZN7S1439C43v21Ev();
extern void _ZN7S1439C43v22Ev();
extern void _ZN7S1439C43v23Ev();
extern void _ZN7S1439C43v24Ev();
extern void _ZN7S1439C43v25Ev();
extern void _ZN7S1439C43v26Ev();
extern void _ZN7S1439C43v27Ev();
extern void _ZN7S1439C43v28Ev();
extern void _ZN7S1439C43v29Ev();
extern void _ZN7S1439C43v30Ev();
extern void _ZN7S1439C43v31Ev();
extern void _ZN7S1439C43v32Ev();
extern void _ZN7S1439C43v33Ev();
extern void _ZN7S1439C43v34Ev();
extern void _ZN7S1439C43v35Ev();
extern void _ZN7S1439C43v36Ev();
extern void _ZN7S1439C43v37Ev();
extern void _ZN7S1439C43v38Ev();
extern void _ZN7S1439C43v39Ev();
extern void _ZN7S1439C43v40Ev();
extern void _ZN7S1439C43v41Ev();
extern void _ZN7S1439C43v42Ev();
extern void _ZN7S1439C43v43Ev();
extern void _ZN7S1439C43v44Ev();
extern void _ZN7S1439C43v45Ev();
extern void _ZN7S1439C43v46Ev();
extern void _ZN7S1439C43v47Ev();
extern void _ZN7S1439C43v48Ev();
extern void _ZN7S1439C43v49Ev();
extern void _ZN7S1439C43v50Ev();
extern void _ZN7S1439C43v51Ev();
extern void _ZN7S1439C43v52Ev();
extern void _ZN7S1439C43v53Ev();
extern void _ZN7S1439C43v54Ev();
extern void _ZN7S1439C43v55Ev();
extern void _ZN7S1439C43v56Ev();
extern void _ZN7S1439C43v57Ev();
extern void _ZN7S1439C43v58Ev();
extern void _ZN7S1439C43v59Ev();
extern void _ZN7S1439C43v60Ev();
extern void _ZN7S1439C43v61Ev();
extern void _ZN7S1439C43v62Ev();
extern void _ZN7S1439C43v63Ev();
extern void _ZN7S1439C43v64Ev();
extern void _ZN7S1439C43v65Ev();
extern void _ZN7S1439C43v66Ev();
extern void _ZN7S1439C43v67Ev();
extern void _ZN7S1439C33v68Ev();
extern void _ZN7S1439C33v69Ev();
extern void _ZN7S1439C23v70Ev();
extern void _ZN7S1439C23v71Ev();
extern void _ZN7S1439C23v72Ev();
extern void _ZN7S1439C23v73Ev();
extern void _ZN7S1439C23v74Ev();
extern void _ZN7S1439C23v75Ev();
extern void _ZN7S1439C23v76Ev();
extern void _ZN7S1439C23v77Ev();
extern void _ZN7S1439C23v78Ev();
static  VTBL_ENTRY vtc_S1439C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1439C2[0]),
  (VTBL_ENTRY)&_ZN7S1439C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1439C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1439C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1439C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v70Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v71Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v72Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v73Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v74Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v75Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v76Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v78Ev,
};
extern VTBL_ENTRY _ZTI7S1439C2[];
extern  VTBL_ENTRY _ZTV7S1439C2[];
Class_Descriptor cd_S1439C2 = {  "S1439C2", // class name
  bases_S1439C2, 2,
  &(vtc_S1439C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI7S1439C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1439C2),79, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1439C14_nt  {
  int s1439c14f0[2];
  char s1439c14f1[2];
  void  mf1439c14(); // _ZN11S1439C14_nt9mf1439c14Ev
};
//SIG(-1 S1439C14_nt) C1{ m Fi[2] Fc[2]}


void  S1439C14_nt ::mf1439c14(){}

//skip512 S1439C14_nt

#else // __cplusplus

Class_Descriptor cd_S1439C14_nt = {  "S1439C14_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  12, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1439C13_nt  : S1439C14_nt {
};
//SIG(-1 S1439C13_nt) C1{ BC2{ m Fi[2] Fc[2]}}



//skip512 S1439C13_nt

#else // __cplusplus

extern Class_Descriptor cd_S1439C14_nt;
static Base_Class bases_S1439C13_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1439C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1439C12_nt  {
  ::S1439C13_nt s1439c12f0;
  char s1439c12f1[2];
  void  mf1439c12(); // _ZN11S1439C12_nt9mf1439c12Ev
};
//SIG(1 S1439C12_nt) C1{ m FC2{ BC3{ m Fi[2] Fc[2]}} Fc[2]}


void  S1439C12_nt ::mf1439c12(){}

//skip512 S1439C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1439C1  : S1439C2 {
  void *s1439c1f0;
  ::S1305C13_nt s1439c1f1;
  ::S1439C12_nt s1439c1f2[2];
  virtual  ~S1439C1(); // _ZN7S1439C1D1Ev
  virtual void  v1(); // _ZN7S1439C12v1Ev
  virtual void  v2(); // _ZN7S1439C12v2Ev
  virtual void  v3(); // _ZN7S1439C12v3Ev
  S1439C1(); // tgen
};
//SIG(1 S1439C1) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v68 v69} vd v70 v71 v72 v73 v74 v75 v76 v77 v78 FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} FC10{ m Fi[4]} Fi[2] Fi:1 Fi:1} vd v1 v2 v3 Fp FC11{ m Fi[4]} FC12{ m FC13{ BC14{ m Fi[2] Fc[2]}} Fc[2]}[2]}


 S1439C1 ::~S1439C1(){ note_dtor("S1439C1", this);}
void  S1439C1 ::v1(){vfunc_called(this, "_ZN7S1439C12v1Ev");}
void  S1439C1 ::v2(){vfunc_called(this, "_ZN7S1439C12v2Ev");}
void  S1439C1 ::v3(){vfunc_called(this, "_ZN7S1439C12v3Ev");}
S1439C1 ::S1439C1(){ note_ctor("S1439C1", this);} // tgen

static void Test_S1439C1()
{
  extern Class_Descriptor cd_S1439C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,39)];
    init_test(&cd_S1439C1, buf);
    S1439C1 *dp, &lv = *(dp=new (buf) S1439C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,152), "sizeof(S1439C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1439C1)");
    check_base_class_offset(lv, (S1439C4*)(S1439C3*)(S1439C2*), 0, "S1439C1");
    check_base_class_offset(lv, (S1439C3*)(S1439C2*), 0, "S1439C1");
    check_base_class_offset(lv, (S1439C2*), 0, "S1439C1");
    check_field_offset(lv, s1439c1f0, ABISELECT(144,100), "S1439C1.s1439c1f0");
    check_field_offset(lv, s1439c1f1, ABISELECT(152,104), "S1439C1.s1439c1f1");
    check_field_offset(lv, s1439c1f2, ABISELECT(168,120), "S1439C1.s1439c1f2");
    test_class_info(&lv, &cd_S1439C1);
    dp->~S1439C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1439C1(Test_S1439C1, "S1439C1", ABISELECT(200,152));

#else // __cplusplus

extern void _ZN7S1439C1C1Ev();
extern void _ZN7S1439C1D1Ev();
Name_Map name_map_S1439C1[] = {
  NSPAIR(_ZN7S1439C1C1Ev),
  NSPAIR(_ZN7S1439C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1439C4;
extern VTBL_ENTRY _ZTI7S1439C4[];
extern  VTBL_ENTRY _ZTV7S1439C4[];
extern Class_Descriptor cd_S1439C3;
extern VTBL_ENTRY _ZTI7S1439C3[];
extern  VTBL_ENTRY _ZTV7S1439C3[];
extern Class_Descriptor cd_S1439C2;
extern VTBL_ENTRY _ZTI7S1439C2[];
extern  VTBL_ENTRY _ZTV7S1439C2[];
static Base_Class bases_S1439C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1439C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1439C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1439C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1439C1[];
extern void _ZN7S1439C1D1Ev();
extern void _ZN7S1439C1D0Ev();
extern void _ZN7S1439C42v4Ev();
extern void _ZN7S1439C42v5Ev();
extern void _ZN7S1439C42v6Ev();
extern void _ZN7S1439C42v7Ev();
extern void _ZN7S1439C42v8Ev();
extern void _ZN7S1439C42v9Ev();
extern void _ZN7S1439C43v10Ev();
extern void _ZN7S1439C43v11Ev();
extern void _ZN7S1439C43v12Ev();
extern void _ZN7S1439C43v13Ev();
extern void _ZN7S1439C43v14Ev();
extern void _ZN7S1439C43v15Ev();
extern void _ZN7S1439C43v16Ev();
extern void _ZN7S1439C43v17Ev();
extern void _ZN7S1439C43v18Ev();
extern void _ZN7S1439C43v19Ev();
extern void _ZN7S1439C43v20Ev();
extern void _ZN7S1439C43v21Ev();
extern void _ZN7S1439C43v22Ev();
extern void _ZN7S1439C43v23Ev();
extern void _ZN7S1439C43v24Ev();
extern void _ZN7S1439C43v25Ev();
extern void _ZN7S1439C43v26Ev();
extern void _ZN7S1439C43v27Ev();
extern void _ZN7S1439C43v28Ev();
extern void _ZN7S1439C43v29Ev();
extern void _ZN7S1439C43v30Ev();
extern void _ZN7S1439C43v31Ev();
extern void _ZN7S1439C43v32Ev();
extern void _ZN7S1439C43v33Ev();
extern void _ZN7S1439C43v34Ev();
extern void _ZN7S1439C43v35Ev();
extern void _ZN7S1439C43v36Ev();
extern void _ZN7S1439C43v37Ev();
extern void _ZN7S1439C43v38Ev();
extern void _ZN7S1439C43v39Ev();
extern void _ZN7S1439C43v40Ev();
extern void _ZN7S1439C43v41Ev();
extern void _ZN7S1439C43v42Ev();
extern void _ZN7S1439C43v43Ev();
extern void _ZN7S1439C43v44Ev();
extern void _ZN7S1439C43v45Ev();
extern void _ZN7S1439C43v46Ev();
extern void _ZN7S1439C43v47Ev();
extern void _ZN7S1439C43v48Ev();
extern void _ZN7S1439C43v49Ev();
extern void _ZN7S1439C43v50Ev();
extern void _ZN7S1439C43v51Ev();
extern void _ZN7S1439C43v52Ev();
extern void _ZN7S1439C43v53Ev();
extern void _ZN7S1439C43v54Ev();
extern void _ZN7S1439C43v55Ev();
extern void _ZN7S1439C43v56Ev();
extern void _ZN7S1439C43v57Ev();
extern void _ZN7S1439C43v58Ev();
extern void _ZN7S1439C43v59Ev();
extern void _ZN7S1439C43v60Ev();
extern void _ZN7S1439C43v61Ev();
extern void _ZN7S1439C43v62Ev();
extern void _ZN7S1439C43v63Ev();
extern void _ZN7S1439C43v64Ev();
extern void _ZN7S1439C43v65Ev();
extern void _ZN7S1439C43v66Ev();
extern void _ZN7S1439C43v67Ev();
extern void _ZN7S1439C33v68Ev();
extern void _ZN7S1439C33v69Ev();
extern void _ZN7S1439C23v70Ev();
extern void _ZN7S1439C23v71Ev();
extern void _ZN7S1439C23v72Ev();
extern void _ZN7S1439C23v73Ev();
extern void _ZN7S1439C23v74Ev();
extern void _ZN7S1439C23v75Ev();
extern void _ZN7S1439C23v76Ev();
extern void _ZN7S1439C23v77Ev();
extern void _ZN7S1439C23v78Ev();
extern void _ZN7S1439C12v1Ev();
extern void _ZN7S1439C12v2Ev();
extern void _ZN7S1439C12v3Ev();
static  VTBL_ENTRY vtc_S1439C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1439C1[0]),
  (VTBL_ENTRY)&_ZN7S1439C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1439C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1439C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1439C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v70Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v71Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v72Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v73Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v74Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v75Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v76Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1439C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1439C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1439C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1439C1[];
extern  VTBL_ENTRY _ZTV7S1439C1[];
Class_Descriptor cd_S1439C1 = {  "S1439C1", // class name
  bases_S1439C1, 3,
  &(vtc_S1439C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,152), // object size
  NSPAIRA(_ZTI7S1439C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1439C1),82, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19245C4  {
  short s19245c4f0:6;
  long s19245c4f1;
  short s19245c4f2:4;
  __tsi64 s19245c4f3[6];
  long s19245c4f4[7];
  void *s19245c4f5;
  virtual void  v6(); // _ZN8S19245C42v6Ev
  ~S19245C4(); // tgen
  S19245C4(); // tgen
};
//SIG(-1 S19245C4) C1{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}


void  S19245C4 ::v6(){vfunc_called(this, "_ZN8S19245C42v6Ev");}
S19245C4 ::~S19245C4(){ note_dtor("S19245C4", this);} // tgen
S19245C4 ::S19245C4(){ note_ctor("S19245C4", this);} // tgen

static void Test_S19245C4()
{
  extern Class_Descriptor cd_S19245C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,25)];
    init_test(&cd_S19245C4, buf);
    S19245C4 *dp, &lv = *(dp=new (buf) S19245C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,96), "sizeof(S19245C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19245C4)");
    set_bf_and_test(lv, s19245c4f0, ABISELECT(8,4), 0, 6, 1, "S19245C4");
    set_bf_and_test(lv, s19245c4f0, ABISELECT(8,4), 0, 6, hide_sll(1LL<<5), "S19245C4");
    check_field_offset(lv, s19245c4f1, ABISELECT(16,8), "S19245C4.s19245c4f1");
    set_bf_and_test(lv, s19245c4f2, ABISELECT(24,12), 0, 4, 1, "S19245C4");
    set_bf_and_test(lv, s19245c4f2, ABISELECT(24,12), 0, 4, hide_sll(1LL<<3), "S19245C4");
    check_field_offset(lv, s19245c4f3, ABISELECT(32,16), "S19245C4.s19245c4f3");
    check_field_offset(lv, s19245c4f4, ABISELECT(80,64), "S19245C4.s19245c4f4");
    check_field_offset(lv, s19245c4f5, ABISELECT(136,92), "S19245C4.s19245c4f5");
    test_class_info(&lv, &cd_S19245C4);
    dp->~S19245C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C4(Test_S19245C4, "S19245C4", ABISELECT(144,96));

#else // __cplusplus

extern void _ZN8S19245C4C1Ev();
extern void _ZN8S19245C4D1Ev();
Name_Map name_map_S19245C4[] = {
  NSPAIR(_ZN8S19245C4C1Ev),
  NSPAIR(_ZN8S19245C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19245C4[];
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY vtc_S19245C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C4[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
Class_Descriptor cd_S19245C4 = {  "S19245C4", // class name
  0,0,//no base classes
  &(vtc_S19245C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,96), // object size
  NSPAIRA(_ZTI8S19245C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19245C4),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19245C3  {
  __tsi64 s19245c3f0;
  long double s19245c3f1;
  void *s19245c3f2;
  char s19245c3f3;
  ::S19245C4 s19245c3f4;
  void *s19245c3f5[2];
  long s19245c3f6[8];
  short s19245c3f7;
  void *s19245c3f8;
  __tsi64 s19245c3f9:64;
  virtual void  v1(); // _ZN8S19245C32v1Ev
  ~S19245C3(); // tgen
  S19245C3(); // tgen
};
//SIG(-1 S19245C3) C1{ v1 FL FD Fp Fc FC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64}


void  S19245C3 ::v1(){vfunc_called(this, "_ZN8S19245C32v1Ev");}
S19245C3 ::~S19245C3(){ note_dtor("S19245C3", this);} // tgen
S19245C3 ::S19245C3(){ note_ctor("S19245C3", this);} // tgen

static void Test_S19245C3()
{
  extern Class_Descriptor cd_S19245C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,47)];
    init_test(&cd_S19245C3, buf);
    S19245C3 *dp, &lv = *(dp=new (buf) S19245C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,184), "sizeof(S19245C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C3)");
    check_field_offset(lv, s19245c3f0, ABISELECT(8,4), "S19245C3.s19245c3f0");
    check_field_offset(lv, s19245c3f1, ABISELECT(16,12), "S19245C3.s19245c3f1");
    check_field_offset(lv, s19245c3f2, ABISELECT(32,24), "S19245C3.s19245c3f2");
    check_field_offset(lv, s19245c3f3, ABISELECT(40,28), "S19245C3.s19245c3f3");
    check_field_offset(lv, s19245c3f4, ABISELECT(48,32), "S19245C3.s19245c3f4");
    check_field_offset(lv, s19245c3f5, ABISELECT(192,128), "S19245C3.s19245c3f5");
    check_field_offset(lv, s19245c3f6, ABISELECT(208,136), "S19245C3.s19245c3f6");
    check_field_offset(lv, s19245c3f7, ABISELECT(272,168), "S19245C3.s19245c3f7");
    check_field_offset(lv, s19245c3f8, ABISELECT(280,172), "S19245C3.s19245c3f8");
    set_bf_and_test(lv, s19245c3f9, ABISELECT(288,176), 0, 64, 1, "S19245C3");
    set_bf_and_test(lv, s19245c3f9, ABISELECT(288,176), 0, 64, hide_sll(1LL<<63), "S19245C3");
    test_class_info(&lv, &cd_S19245C3);
    dp->~S19245C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C3(Test_S19245C3, "S19245C3", ABISELECT(304,184));

#else // __cplusplus

extern void _ZN8S19245C3C1Ev();
extern void _ZN8S19245C3D1Ev();
Name_Map name_map_S19245C3[] = {
  NSPAIR(_ZN8S19245C3C1Ev),
  NSPAIR(_ZN8S19245C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19245C3[];
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY vtc_S19245C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C3[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
Class_Descriptor cd_S19245C3 = {  "S19245C3", // class name
  0,0,//no base classes
  &(vtc_S19245C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,184), // object size
  NSPAIRA(_ZTI8S19245C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19245C3),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19245C5  : virtual S19245C4 {
  void *s19245c5f0;
  ::S19245C4 s19245c5f1;
  __tsi64 s19245c5f2:3;
  ~S19245C5(); // tgen
  S19245C5(); // tgen
};
//SIG(-1 S19245C5) C1{ VBC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC2 FL:3}


S19245C5 ::~S19245C5(){ note_dtor("S19245C5", this);} // tgen
S19245C5 ::S19245C5(){ note_ctor("S19245C5", this);} // tgen

static void Test_S19245C5()
{
  extern Class_Descriptor cd_S19245C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,52)];
    init_test(&cd_S19245C5, buf);
    S19245C5 *dp, &lv = *(dp=new (buf) S19245C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,204), "sizeof(S19245C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19245C5)");
    check_base_class_offset(lv, (S19245C4*), ABISELECT(168,108), "S19245C5");
    check_field_offset(lv, s19245c5f0, ABISELECT(8,4), "S19245C5.s19245c5f0");
    check_field_offset(lv, s19245c5f1, ABISELECT(16,8), "S19245C5.s19245c5f1");
    set_bf_and_test(lv, s19245c5f2, ABISELECT(160,104), 0, 3, 1, "S19245C5");
    set_bf_and_test(lv, s19245c5f2, ABISELECT(160,104), 0, 3, hide_sll(1LL<<2), "S19245C5");
    test_class_info(&lv, &cd_S19245C5);
    dp->~S19245C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C5(Test_S19245C5, "S19245C5", ABISELECT(312,204));

#else // __cplusplus

extern void _ZN8S19245C5C1Ev();
extern void _ZN8S19245C5D1Ev();
Name_Map name_map_S19245C5[] = {
  NSPAIR(_ZN8S19245C5C1Ev),
  NSPAIR(_ZN8S19245C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
static Base_Class bases_S19245C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C4,    ABISELECT(168,108), //bcp->offset
    3, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19245C5[];
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY vtc_S19245C5[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern VTBL_ENTRY _ZTV8S19245C5[];
static  VTT_ENTRY vtt_S19245C5[] = {
  {&(_ZTV8S19245C5[3]),  3,7},
  {&(_ZTV8S19245C5[6]),  6,7},
};
extern VTBL_ENTRY _ZTI8S19245C5[];
extern  VTBL_ENTRY _ZTV8S19245C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C5[];
Class_Descriptor cd_S19245C5 = {  "S19245C5", // class name
  bases_S19245C5, 1,
  &(vtc_S19245C5[0]), // expected_vtbl_contents
  &(vtt_S19245C5[0]), // expected_vtt_contents
  ABISELECT(312,204), // object size
  NSPAIRA(_ZTI8S19245C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19245C5),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19245C5),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19245C2  : S19245C3 {
  ::S19245C5 s19245c2f0;
  int s19245c2f1;
  void *s19245c2f2;
  int s19245c2f3;
  virtual  ~S19245C2(); // _ZN8S19245C2D1Ev
  virtual void  v2(); // _ZN8S19245C22v2Ev
  S19245C2(); // tgen
};
//SIG(-1 S19245C2) C1{ BC2{ v2 FL FD Fp Fc FC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v1 FC4{ VBC3 Fp FC3 FL:3} Fi Fp Fi}


 S19245C2 ::~S19245C2(){ note_dtor("S19245C2", this);}
void  S19245C2 ::v2(){vfunc_called(this, "_ZN8S19245C22v2Ev");}
S19245C2 ::S19245C2(){ note_ctor("S19245C2", this);} // tgen

static void Test_S19245C2()
{
  extern Class_Descriptor cd_S19245C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,101)];
    init_test(&cd_S19245C2, buf);
    S19245C2 *dp, &lv = *(dp=new (buf) S19245C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,400), "sizeof(S19245C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C2)");
    check_base_class_offset(lv, (S19245C3*), 0, "S19245C2");
    check_field_offset(lv, s19245c2f0, ABISELECT(296,184), "S19245C2.s19245c2f0");
    check_field_offset(lv, s19245c2f1, ABISELECT(608,388), "S19245C2.s19245c2f1");
    check_field_offset(lv, s19245c2f2, ABISELECT(616,392), "S19245C2.s19245c2f2");
    check_field_offset(lv, s19245c2f3, ABISELECT(624,396), "S19245C2.s19245c2f3");
    test_class_info(&lv, &cd_S19245C2);
    dp->~S19245C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C2(Test_S19245C2, "S19245C2", ABISELECT(640,400));

#else // __cplusplus

extern void _ZN8S19245C2C1Ev();
extern void _ZN8S19245C2D1Ev();
Name_Map name_map_S19245C2[] = {
  NSPAIR(_ZN8S19245C2C1Ev),
  NSPAIR(_ZN8S19245C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
static Base_Class bases_S19245C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19245C2[];
extern void _ZN8S19245C32v1Ev();
extern void _ZN8S19245C2D1Ev();
extern void _ZN8S19245C2D0Ev();
extern void _ZN8S19245C22v2Ev();
static  VTBL_ENTRY vtc_S19245C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C2[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19245C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19245C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19245C22v2Ev,
};
extern VTBL_ENTRY _ZTI8S19245C2[];
extern  VTBL_ENTRY _ZTV8S19245C2[];
Class_Descriptor cd_S19245C2 = {  "S19245C2", // class name
  bases_S19245C2, 1,
  &(vtc_S19245C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,400), // object size
  NSPAIRA(_ZTI8S19245C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19245C2),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19245C7  {
  int s19245c7f0[2];
  long s19245c7f1[2];
  ::S19245C4 s19245c7f2[3];
  virtual void  v3(); // _ZN8S19245C72v3Ev
  virtual void  v4(); // _ZN8S19245C72v4Ev
  virtual void  v5(); // _ZN8S19245C72v5Ev
  ~S19245C7(); // tgen
  S19245C7(); // tgen
};
//SIG(-1 S19245C7) C1{ v1 v2 v3 Fi[2] Fl[2] FC2{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]}


void  S19245C7 ::v3(){vfunc_called(this, "_ZN8S19245C72v3Ev");}
void  S19245C7 ::v4(){vfunc_called(this, "_ZN8S19245C72v4Ev");}
void  S19245C7 ::v5(){vfunc_called(this, "_ZN8S19245C72v5Ev");}
S19245C7 ::~S19245C7(){ note_dtor("S19245C7", this);} // tgen
S19245C7 ::S19245C7(){ note_ctor("S19245C7", this);} // tgen

static void Test_S19245C7()
{
  extern Class_Descriptor cd_S19245C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,78)];
    init_test(&cd_S19245C7, buf);
    S19245C7 *dp, &lv = *(dp=new (buf) S19245C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S19245C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19245C7)");
    check_field_offset(lv, s19245c7f0, ABISELECT(8,4), "S19245C7.s19245c7f0");
    check_field_offset(lv, s19245c7f1, ABISELECT(16,12), "S19245C7.s19245c7f1");
    check_field_offset(lv, s19245c7f2, ABISELECT(32,20), "S19245C7.s19245c7f2");
    test_class_info(&lv, &cd_S19245C7);
    dp->~S19245C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C7(Test_S19245C7, "S19245C7", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN8S19245C7C1Ev();
extern void _ZN8S19245C7D1Ev();
Name_Map name_map_S19245C7[] = {
  NSPAIR(_ZN8S19245C7C1Ev),
  NSPAIR(_ZN8S19245C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19245C7[];
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY vtc_S19245C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C7[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
Class_Descriptor cd_S19245C7 = {  "S19245C7", // class name
  0,0,//no base classes
  &(vtc_S19245C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI8S19245C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19245C7),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19245C10  : S19245C4 , virtual S19245C7 , virtual S19245C5 , virtual S19245C3 {
  ::S19245C3 s19245c10f0;
  short s19245c10f1;
  int s19245c10f2[2];
  ~S19245C10(); // tgen
  S19245C10(); // tgen
};
//SIG(-1 S19245C10) C1{ BC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ v2 v3 v4 Fi[2] Fl[2] FC2[3]} VBC4{ VBC2 Fp FC2 FL:3} VBC5{ v5 FL FD Fp Fc FC2 Fp[2] Fl[8] Fs Fp FL:64} FC5 Fs Fi[2]}


S19245C10 ::~S19245C10(){ note_dtor("S19245C10", this);} // tgen
S19245C10 ::S19245C10(){ note_ctor("S19245C10", this);} // tgen

static void Test_S19245C10()
{
  extern Class_Descriptor cd_S19245C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,248)];
    init_test(&cd_S19245C10, buf);
    S19245C10 *dp, &lv = *(dp=new (buf) S19245C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,988), "sizeof(S19245C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C10)");
    /*is_ambiguous_... S19245C10::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*), 0, "S19245C10");
    check_base_class_offset(lv, (S19245C7*), ABISELECT(464,292), "S19245C10");
    check_base_class_offset(lv, (S19245C4*)(S19245C5*), ABISELECT(1096,708), "S19245C10");
    check_base_class_offset(lv, (S19245C5*), ABISELECT(928,600), "S19245C10");
    check_base_class_offset(lv, (S19245C3*), ABISELECT(1248,804), "S19245C10");
    check_field_offset(lv, s19245c10f0, ABISELECT(144,96), "S19245C10.s19245c10f0");
    check_field_offset(lv, s19245c10f1, ABISELECT(448,280), "S19245C10.s19245c10f1");
    check_field_offset(lv, s19245c10f2, ABISELECT(452,284), "S19245C10.s19245c10f2");
    test_class_info(&lv, &cd_S19245C10);
    dp->~S19245C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C10(Test_S19245C10, "S19245C10", ABISELECT(1552,988));

#else // __cplusplus

extern void _ZN9S19245C10C1Ev();
extern void _ZN9S19245C10D1Ev();
Name_Map name_map_S19245C10[] = {
  NSPAIR(_ZN9S19245C10C1Ev),
  NSPAIR(_ZN9S19245C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C5;
extern VTBL_ENTRY _ZTI8S19245C5[];
extern  VTBL_ENTRY _ZTV8S19245C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C5[];
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
static Base_Class bases_S19245C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19245C7,    ABISELECT(464,292), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19245C4,    ABISELECT(1096,708), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19245C5,    ABISELECT(928,600), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19245C3,    ABISELECT(1248,804), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19245C10[];
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY vtc_S19245C10[] = {
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  ABISELECT(168,108),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  0,
  ABISELECT(-1096,-708),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  0,
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern VTBL_ENTRY _ZTV9S19245C10[];
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C10[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__8S19245C5__9S19245C10[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTT_ENTRY vtt_S19245C10[] = {
  {&(_ZTV9S19245C10[6]),  6,26},
  {&(_ZTV9S19245C10[12]),  12,26},
  {&(_ZTV9S19245C10[18]),  18,26},
  {&(_ZTV9S19245C10[21]),  21,26},
  {&(_ZTV9S19245C10[25]),  25,26},
  {&(_tg__ZTV8S19245C5__9S19245C10[3]),  3,3},
  {&(_tg__ZTV8S19245C4__8S19245C5__9S19245C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19245C10[];
extern  VTBL_ENTRY _ZTV9S19245C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C10[];
Class_Descriptor cd_S19245C10 = {  "S19245C10", // class name
  bases_S19245C10, 5,
  &(vtc_S19245C10[0]), // expected_vtbl_contents
  &(vtt_S19245C10[0]), // expected_vtt_contents
  ABISELECT(1552,988), // object size
  NSPAIRA(_ZTI9S19245C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19245C10),26, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19245C10),7, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19245C9  : S19245C3 , S19245C7 , S19245C4 {
  long s19245c9f0;
  __tsi64 s19245c9f1;
  void *s19245c9f2[8];
  ::S19245C10 s19245c9f3;
  void *s19245c9f4;
  int s19245c9f5;
  ::S19245C10 s19245c9f6;
  int s19245c9f7;
  virtual  ~S19245C9(); // _ZN8S19245C9D1Ev
  virtual void  v7(); // _ZN8S19245C92v7Ev
  S19245C9(); // tgen
};
//SIG(-1 S19245C9) C1{ BC2{ v2 FL FD Fp Fc FC3{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC4{ v3 v4 v5 Fi[2] Fl[2] FC3[3]} BC3 vd v1 Fl FL Fp[8] FC5{ BC3 VBC4 VBC6{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC5 Fi}


 S19245C9 ::~S19245C9(){ note_dtor("S19245C9", this);}
void  S19245C9 ::v7(){vfunc_called(this, "_ZN8S19245C92v7Ev");}
S19245C9 ::S19245C9(){ note_ctor("S19245C9", this);} // tgen

static void Test_S19245C9()
{
  extern Class_Descriptor cd_S19245C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(259,656)];
    init_test(&cd_S19245C9, buf);
    S19245C9 *dp, &lv = *(dp=new (buf) S19245C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4128,2620), "sizeof(S19245C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C9)");
    check_base_class_offset(lv, (S19245C3*), 0, "S19245C9");
    check_base_class_offset(lv, (S19245C7*), ABISELECT(296,184), "S19245C9");
    check_base_class_offset(lv, (S19245C4*), ABISELECT(760,492), "S19245C9");
    check_field_offset(lv, s19245c9f0, ABISELECT(904,588), "S19245C9.s19245c9f0");
    check_field_offset(lv, s19245c9f1, ABISELECT(912,592), "S19245C9.s19245c9f1");
    check_field_offset(lv, s19245c9f2, ABISELECT(920,600), "S19245C9.s19245c9f2");
    check_field_offset(lv, s19245c9f3, ABISELECT(992,632), "S19245C9.s19245c9f3");
    check_field_offset(lv, s19245c9f4, ABISELECT(2544,1620), "S19245C9.s19245c9f4");
    check_field_offset(lv, s19245c9f5, ABISELECT(2552,1624), "S19245C9.s19245c9f5");
    check_field_offset(lv, s19245c9f6, ABISELECT(2560,1628), "S19245C9.s19245c9f6");
    check_field_offset(lv, s19245c9f7, ABISELECT(4112,2616), "S19245C9.s19245c9f7");
    test_class_info(&lv, &cd_S19245C9);
    dp->~S19245C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C9(Test_S19245C9, "S19245C9", ABISELECT(4128,2620));

#else // __cplusplus

extern void _ZN8S19245C9C1Ev();
extern void _ZN8S19245C9D1Ev();
Name_Map name_map_S19245C9[] = {
  NSPAIR(_ZN8S19245C9C1Ev),
  NSPAIR(_ZN8S19245C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
static Base_Class bases_S19245C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19245C7,    ABISELECT(296,184), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19245C4,    ABISELECT(760,492), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19245C9[];
extern void _ZN8S19245C32v1Ev();
extern void _ZN8S19245C9D1Ev();
extern void _ZN8S19245C9D0Ev();
extern void _ZN8S19245C92v7Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY vtc_S19245C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C9[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19245C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19245C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI8S19245C9[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI8S19245C9[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern VTBL_ENTRY _ZTI8S19245C9[];
extern  VTBL_ENTRY _ZTV8S19245C9[];
Class_Descriptor cd_S19245C9 = {  "S19245C9", // class name
  bases_S19245C9, 3,
  &(vtc_S19245C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(4128,2620), // object size
  NSPAIRA(_ZTI8S19245C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19245C9),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19245C11  : virtual S19245C3 , virtual S19245C9 , virtual S19245C4 , virtual S19245C5 {
  __tsi64 s19245c11f0:44;
  void *s19245c11f1;
  int s19245c11f2;
  ::S19245C10 s19245c11f3;
  long s19245c11f4[2];
  int s19245c11f5[3];
  ::S19245C9 s19245c11f6;
  char s19245c11f7:7;
  ::S19245C2 s19245c11f8;
  ~S19245C11(); // tgen
  S19245C11(); // tgen
};
//SIG(-1 S19245C11) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} VBC4{ BC2 BC5{ v2 v3 v4 Fi[2] Fl[2] FC3[3]} BC3 vd v6 Fl FL Fp[8] FC6{ BC3 VBC5 VBC7{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC6 Fi} VBC3 VBC7 FL:44 Fp Fi FC6 Fl[2] Fi[3] FC4 Fc:7 FC8{ BC2 vd v7 FC7 Fi Fp Fi}}


S19245C11 ::~S19245C11(){ note_dtor("S19245C11", this);} // tgen
S19245C11 ::S19245C11(){ note_ctor("S19245C11", this);} // tgen

static void Test_S19245C11()
{
  extern Class_Descriptor cd_S19245C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(697,1766)];
    init_test(&cd_S19245C11, buf);
    S19245C11 *dp, &lv = *(dp=new (buf) S19245C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11136,7060), "sizeof(S19245C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C11)");
    /*is_ambiguous_... S19245C11::S19245C3 */ AMB_check_base_class_offset(lv, (S19245C3*), ABISELECT(6400,4052), "S19245C11");
    check_base_class_offset(lv, (S19245C3*)(S19245C9*), ABISELECT(6704,4236), "S19245C11");
    check_base_class_offset(lv, (S19245C7*)(S19245C9*), ABISELECT(7000,4420), "S19245C11");
    check_base_class_offset(lv, (S19245C4*)(S19245C9*), ABISELECT(7464,4728), "S19245C11");
    check_base_class_offset(lv, (S19245C9*), ABISELECT(6704,4236), "S19245C11");
    /*is_ambiguous_... S19245C11::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*), ABISELECT(10824,6856), "S19245C11");
    check_base_class_offset(lv, (S19245C4*)(S19245C5*), ABISELECT(10824,6856), "S19245C11");
    check_base_class_offset(lv, (S19245C5*), ABISELECT(10968,6952), "S19245C11");
    set_bf_and_test(lv, s19245c11f0, ABISELECT(8,4), 0, 44, 1, "S19245C11");
    set_bf_and_test(lv, s19245c11f0, ABISELECT(8,4), 0, 44, hide_sll(1LL<<43), "S19245C11");
    check_field_offset(lv, s19245c11f1, ABISELECT(16,12), "S19245C11.s19245c11f1");
    check_field_offset(lv, s19245c11f2, ABISELECT(24,16), "S19245C11.s19245c11f2");
    check_field_offset(lv, s19245c11f3, ABISELECT(32,20), "S19245C11.s19245c11f3");
    check_field_offset(lv, s19245c11f4, ABISELECT(1584,1008), "S19245C11.s19245c11f4");
    check_field_offset(lv, s19245c11f5, ABISELECT(1600,1016), "S19245C11.s19245c11f5");
    check_field_offset(lv, s19245c11f6, ABISELECT(1616,1028), "S19245C11.s19245c11f6");
    set_bf_and_test(lv, s19245c11f7, ABISELECT(5744,3648), 0, 7, 1, "S19245C11");
    set_bf_and_test(lv, s19245c11f7, ABISELECT(5744,3648), 0, 7, hide_sll(1LL<<6), "S19245C11");
    check_field_offset(lv, s19245c11f8, ABISELECT(5760,3652), "S19245C11.s19245c11f8");
    test_class_info(&lv, &cd_S19245C11);
    dp->~S19245C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C11(Test_S19245C11, "S19245C11", ABISELECT(11136,7060));

#else // __cplusplus

extern void _ZN9S19245C11C1Ev();
extern void _ZN9S19245C11D1Ev();
Name_Map name_map_S19245C11[] = {
  NSPAIR(_ZN9S19245C11C1Ev),
  NSPAIR(_ZN9S19245C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C9;
extern VTBL_ENTRY _ZTI8S19245C9[];
extern  VTBL_ENTRY _ZTV8S19245C9[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C5;
extern VTBL_ENTRY _ZTI8S19245C5[];
extern  VTBL_ENTRY _ZTV8S19245C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C5[];
static Base_Class bases_S19245C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C3,    ABISELECT(6400,4052), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19245C3,    ABISELECT(6704,4236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19245C7,    ABISELECT(7000,4420), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19245C4,    ABISELECT(7464,4728), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19245C9,    ABISELECT(6704,4236), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19245C4,    ABISELECT(10824,6856), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19245C5,    ABISELECT(10968,6952), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19245C11[];
extern void _ZN9S19245C11D1Ev();
extern void _ZN9S19245C11D0Ev();
extern void _ZN8S19245C32v1Ev();
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev)();
extern void ABISELECT(_ZThn6704_N9S19245C11D1Ev,_ZThn4236_N9S19245C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev)();
extern void ABISELECT(_ZThn6704_N9S19245C11D0Ev,_ZThn4236_N9S19245C11D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY vtc_S19245C11[] = {
  ABISELECT(10968,6952),
  ABISELECT(10824,6856),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN9S19245C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19245C11D0Ev,
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  0,
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  ABISELECT(-144,-96),
  ABISELECT(-10968,-6952),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
};
extern VTBL_ENTRY _ZTV9S19245C11[];
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C11[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__8S19245C5__9S19245C11[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTT_ENTRY vtt_S19245C11[] = {
  {&(_ZTV9S19245C11[6]),  6,40},
  {&(_ZTV9S19245C11[11]),  11,40},
  {&(_ZTV9S19245C11[21]),  21,40},
  {&(_ZTV9S19245C11[27]),  27,40},
  {&(_ZTV9S19245C11[32]),  32,40},
  {&(_ZTV9S19245C11[36]),  36,40},
  {&(_ZTV9S19245C11[40]),  40,40},
  {&(_tg__ZTV8S19245C5__9S19245C11[3]),  3,3},
  {&(_tg__ZTV8S19245C4__8S19245C5__9S19245C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19245C11[];
extern  VTBL_ENTRY _ZTV9S19245C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C11[];
static VTBL_ENTRY alt_thunk_names52[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19245C11D0Ev,_ZThn4236_N9S19245C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19245C11D1Ev,_ZThn4236_N9S19245C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19245C11 = {  "S19245C11", // class name
  bases_S19245C11, 7,
  &(vtc_S19245C11[0]), // expected_vtbl_contents
  &(vtt_S19245C11[0]), // expected_vtt_contents
  ABISELECT(11136,7060), // object size
  NSPAIRA(_ZTI9S19245C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19245C11),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19245C11),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names52,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19245C8  : virtual S19245C9 , virtual S19245C4 , virtual S19245C5 , S19245C10 , S19245C11 {
  ::S19245C9 s19245c8f0;
  __tsi64 s19245c8f1;
  char s19245c8f2:7;
  virtual void  v8(); // _ZN8S19245C82v8Ev
  ~S19245C8(); // tgen
  S19245C8(); // tgen
};
//SIG(-1 S19245C8) C1{ VBC2{ BC3{ v2 FL FD Fp Fc FC4{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC5{ v3 v4 v5 Fi[2] Fl[2] FC4[3]} BC4 vd v7 Fl FL Fp[8] FC6{ BC4 VBC5 VBC7{ VBC4 Fp FC4 FL:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC6 Fi} VBC4 VBC7 BC6 BC8{ VBC3 VBC2 VBC4 VBC7 FL:44 Fp Fi FC6 Fl[2] Fi[3] FC2 Fc:7 FC9{ BC3 vd v8 FC7 Fi Fp Fi}} v1 FC2 FL Fc:7}


void  S19245C8 ::v8(){vfunc_called(this, "_ZN8S19245C82v8Ev");}
S19245C8 ::~S19245C8(){ note_dtor("S19245C8", this);} // tgen
S19245C8 ::S19245C8(){ note_ctor("S19245C8", this);} // tgen

static void Test_S19245C8()
{
  extern Class_Descriptor cd_S19245C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1014,2574)];
    init_test(&cd_S19245C8, buf);
    S19245C8 *dp, &lv = *(dp=new (buf) S19245C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16208,10292), "sizeof(S19245C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C8)");
    check_base_class_offset(lv, (S19245C3*)(S19245C9*), ABISELECT(11008,6976), "S19245C8");
    check_base_class_offset(lv, (S19245C7*)(S19245C9*), ABISELECT(11304,7160), "S19245C8");
    check_base_class_offset(lv, (S19245C4*)(S19245C9*), ABISELECT(11768,7468), "S19245C8");
    check_base_class_offset(lv, (S19245C9*), ABISELECT(11008,6976), "S19245C8");
    check_base_class_offset(lv, (S19245C9*)(S19245C11*), ABISELECT(11008,6976), "S19245C8");
    /*is_ambiguous_... S19245C8::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*), ABISELECT(15128,9596), "S19245C8");
    check_base_class_offset(lv, (S19245C4*)(S19245C5*), ABISELECT(15128,9596), "S19245C8");
    /*is_ambiguous_... S19245C11::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C11*), ABISELECT(15128,9596), "S19245C8");
    check_base_class_offset(lv, (S19245C5*), ABISELECT(15272,9692), "S19245C8");
    check_base_class_offset(lv, (S19245C5*)(S19245C10*), ABISELECT(15272,9692), "S19245C8");
    check_base_class_offset(lv, (S19245C5*)(S19245C11*), ABISELECT(15272,9692), "S19245C8");
    /*is_ambiguous_... S19245C10::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C10*), 0, "S19245C8");
    check_base_class_offset(lv, (S19245C7*)(S19245C10*), ABISELECT(15440,9800), "S19245C8");
    check_base_class_offset(lv, (S19245C3*)(S19245C10*), ABISELECT(15904,10108), "S19245C8");
    /*is_ambiguous_... S19245C11::S19245C3 */ AMB_check_base_class_offset(lv, (S19245C3*)(S19245C11*), ABISELECT(15904,10108), "S19245C8");
    check_base_class_offset(lv, (S19245C10*), 0, "S19245C8");
    check_base_class_offset(lv, (S19245C11*), ABISELECT(464,292), "S19245C8");
    check_field_offset(lv, s19245c8f0, ABISELECT(6864,4344), "S19245C8.s19245c8f0");
    check_field_offset(lv, s19245c8f1, ABISELECT(10992,6964), "S19245C8.s19245c8f1");
    set_bf_and_test(lv, s19245c8f2, ABISELECT(11000,6972), 0, 7, 1, "S19245C8");
    set_bf_and_test(lv, s19245c8f2, ABISELECT(11000,6972), 0, 7, hide_sll(1LL<<6), "S19245C8");
    test_class_info(&lv, &cd_S19245C8);
    dp->~S19245C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C8(Test_S19245C8, "S19245C8", ABISELECT(16208,10292));

#else // __cplusplus

extern void _ZN8S19245C8C1Ev();
extern void _ZN8S19245C8D1Ev();
Name_Map name_map_S19245C8[] = {
  NSPAIR(_ZN8S19245C8C1Ev),
  NSPAIR(_ZN8S19245C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C9;
extern VTBL_ENTRY _ZTI8S19245C9[];
extern  VTBL_ENTRY _ZTV8S19245C9[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C5;
extern VTBL_ENTRY _ZTI8S19245C5[];
extern  VTBL_ENTRY _ZTV8S19245C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C5[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C10;
extern VTBL_ENTRY _ZTI9S19245C10[];
extern  VTBL_ENTRY _ZTV9S19245C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C10[];
extern Class_Descriptor cd_S19245C11;
extern VTBL_ENTRY _ZTI9S19245C11[];
extern  VTBL_ENTRY _ZTV9S19245C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C11[];
static Base_Class bases_S19245C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C3,    ABISELECT(11008,6976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19245C7,    ABISELECT(11304,7160), //bcp->offset
    32, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19245C4,    ABISELECT(11768,7468), //bcp->offset
    37, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19245C9,    ABISELECT(11008,6976), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19245C4,    ABISELECT(15128,9596), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19245C5,    ABISELECT(15272,9692), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19245C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19245C7,    ABISELECT(15440,9800), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19245C3,    ABISELECT(15904,10108), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19245C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19245C11,    ABISELECT(464,292), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19245C8[];
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C82v8Ev();
extern void _ZN8S19245C8D1Ev();
extern void _ZN8S19245C8D0Ev();
extern void ABISELECT(_ZThn464_N8S19245C8D1Ev,_ZThn292_N8S19245C8D1Ev)();
extern void ABISELECT(_ZThn464_N8S19245C8D0Ev,_ZThn292_N8S19245C8D0Ev)();
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19245C8D1Ev,_ZTv0_n16_N8S19245C8D1Ev)();
extern void ABISELECT(_ZThn11008_N8S19245C8D1Ev,_ZThn6976_N8S19245C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19245C8D0Ev,_ZTv0_n16_N8S19245C8D0Ev)();
extern void ABISELECT(_ZThn11008_N8S19245C8D0Ev,_ZThn6976_N8S19245C8D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY vtc_S19245C8[] = {
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19245C82v8Ev,
  (VTBL_ENTRY)&_ZN8S19245C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19245C8D0Ev,
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S19245C8D1Ev,_ZThn292_N8S19245C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S19245C8D0Ev,_ZThn292_N8S19245C8D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C8D1Ev,_ZTv0_n16_N8S19245C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C8D0Ev,_ZTv0_n16_N8S19245C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern VTBL_ENTRY _ZTV8S19245C8[];
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19245C10__8S19245C8[] = {
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C7__9S19245C10__8S19245C8[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C10__8S19245C8[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__9S19245C10__8S19245C8[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__9S19245C10__8S19245C8[] = {
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN9S19245C11D1Ev();
extern void _ZN9S19245C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19245C11__8S19245C8[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN9S19245C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19245C11D0Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__9S19245C11__8S19245C8[] = {
  0,
  ABISELECT(-15440,-9816),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19245C11D1Ev,_ZThn6684_N9S19245C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19245C11D0Ev,_ZThn6684_N9S19245C11D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C9__9S19245C11__8S19245C8[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C78S19245C9__9S19245C11__8S19245C8[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C48S19245C9__9S19245C11__8S19245C8[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__9S19245C11__8S19245C8[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C11__8S19245C8[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__8S19245C8[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__8S19245C5__8S19245C8[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTT_ENTRY vtt_S19245C8[] = {
  {&(_ZTV8S19245C8[7]),  7,59},
  {&(_tg__ZTV9S19245C10__8S19245C8[6]),  6,7},
  {&(_tg__ZTV8S19245C7__9S19245C10__8S19245C8[5]),  5,8},
  {&(_tg__ZTV8S19245C5__9S19245C10__8S19245C8[3]),  3,3},
  {&(_tg__ZTV8S19245C4__A1__9S19245C10__8S19245C8[3]),  3,4},
  {&(_tg__ZTV8S19245C3__9S19245C10__8S19245C8[3]),  3,4},
  {&(_tg__ZTV9S19245C11__8S19245C8[6]),  6,8},
  {&(_tg__ZTV8S19245C3__9S19245C11__8S19245C8[3]),  3,4},
  {&(_tg__ZTV8S19245C9__9S19245C11__8S19245C8[9]),  9,13},
  {&(_tg__ZTV8S19245C78S19245C9__9S19245C11__8S19245C8[2]),  2,5},
  {&(_tg__ZTV8S19245C48S19245C9__9S19245C11__8S19245C8[2]),  2,3},
  {&(_tg__ZTV8S19245C4__A1__9S19245C11__8S19245C8[3]),  3,4},
  {&(_tg__ZTV8S19245C5__9S19245C11__8S19245C8[3]),  3,3},
  {&(_ZTV8S19245C8[28]),  28,59},
  {&(_ZTV8S19245C8[34]),  34,59},
  {&(_ZTV8S19245C8[39]),  39,59},
  {&(_ZTV8S19245C8[43]),  43,59},
  {&(_ZTV8S19245C8[47]),  47,59},
  {&(_ZTV8S19245C8[52]),  52,59},
  {&(_ZTV8S19245C8[58]),  58,59},
  {&(_ZTV8S19245C8[17]),  17,59},
  {&(_tg__ZTV8S19245C5__8S19245C8[3]),  3,3},
  {&(_tg__ZTV8S19245C4__8S19245C5__8S19245C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19245C8[];
extern  VTBL_ENTRY _ZTV8S19245C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C8[];
static VTBL_ENTRY alt_thunk_names53[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19245C11D0Ev,_ZThn6684_N9S19245C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19245C11D1Ev,_ZThn6684_N9S19245C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C8D0Ev,_ZTv0_n16_N8S19245C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S19245C8D0Ev,_ZThn6976_N8S19245C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C8D1Ev,_ZTv0_n16_N8S19245C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S19245C8D1Ev,_ZThn6976_N8S19245C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19245C8 = {  "S19245C8", // class name
  bases_S19245C8, 11,
  &(vtc_S19245C8[0]), // expected_vtbl_contents
  &(vtt_S19245C8[0]), // expected_vtt_contents
  ABISELECT(16208,10292), // object size
  NSPAIRA(_ZTI8S19245C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19245C8),59, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19245C8),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names53,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19245C6  : virtual S19245C3 , S19245C7 , virtual S19245C8 {
  char s19245c6f0:8;
  int s19245c6f1;
  ~S19245C6(); // tgen
  S19245C6(); // tgen
};
//SIG(-1 S19245C6) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC4{ v2 v3 v4 Fi[2] Fl[2] FC3[3]} VBC5{ VBC6{ BC2 BC4 BC3 vd v6 Fl FL Fp[8] FC7{ BC3 VBC4 VBC8{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC7 Fi} VBC3 VBC8 BC7 BC9{ VBC2 VBC6 VBC3 VBC8 FL:44 Fp Fi FC7 Fl[2] Fi[3] FC6 Fc:7 FC10{ BC2 vd v8 FC8 Fi Fp Fi}} v7 FC6 FL Fc:7} Fc:8 Fi}


S19245C6 ::~S19245C6(){ note_dtor("S19245C6", this);} // tgen
S19245C6 ::S19245C6(){ note_ctor("S19245C6", this);} // tgen

static void Test_S19245C6()
{
  extern Class_Descriptor cd_S19245C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1044,2653)];
    init_test(&cd_S19245C6, buf);
    S19245C6 *dp, &lv = *(dp=new (buf) S19245C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16688,10608), "sizeof(S19245C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C6)");
    /*is_ambiguous_... S19245C6::S19245C3 */ AMB_check_base_class_offset(lv, (S19245C3*), ABISELECT(480,316), "S19245C6");
    check_base_class_offset(lv, (S19245C3*)(S19245C10*)(S19245C8*), ABISELECT(480,316), "S19245C6");
    /*is_ambiguous_... S19245C11::S19245C3 */ AMB_check_base_class_offset(lv, (S19245C3*)(S19245C11*)(S19245C8*), ABISELECT(480,316), "S19245C6");
    /*is_ambiguous_... S19245C6::S19245C7 */ AMB_check_base_class_offset(lv, (S19245C7*), 0, "S19245C6");
    check_base_class_offset(lv, (S19245C3*)(S19245C9*), ABISELECT(11792,7476), "S19245C6");
    check_base_class_offset(lv, (S19245C7*)(S19245C9*), ABISELECT(12088,7660), "S19245C6");
    check_base_class_offset(lv, (S19245C4*)(S19245C9*), ABISELECT(12552,7968), "S19245C6");
    check_base_class_offset(lv, (S19245C9*)(S19245C8*), ABISELECT(11792,7476), "S19245C6");
    check_base_class_offset(lv, (S19245C9*)(S19245C11*)(S19245C8*), ABISELECT(11792,7476), "S19245C6");
    /*is_ambiguous_... S19245C8::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C8*), ABISELECT(15912,10096), "S19245C6");
    check_base_class_offset(lv, (S19245C4*)(S19245C5*), ABISELECT(15912,10096), "S19245C6");
    /*is_ambiguous_... S19245C11::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C11*)(S19245C8*), ABISELECT(15912,10096), "S19245C6");
    check_base_class_offset(lv, (S19245C5*)(S19245C8*), ABISELECT(16056,10192), "S19245C6");
    check_base_class_offset(lv, (S19245C5*)(S19245C10*)(S19245C8*), ABISELECT(16056,10192), "S19245C6");
    check_base_class_offset(lv, (S19245C5*)(S19245C11*)(S19245C8*), ABISELECT(16056,10192), "S19245C6");
    /*is_ambiguous_... S19245C10::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C10*)(S19245C8*), ABISELECT(784,500), "S19245C6");
    check_base_class_offset(lv, (S19245C7*)(S19245C10*)(S19245C8*), ABISELECT(16224,10300), "S19245C6");
    check_base_class_offset(lv, (S19245C10*)(S19245C8*), ABISELECT(784,500), "S19245C6");
    check_base_class_offset(lv, (S19245C11*)(S19245C8*), ABISELECT(1248,792), "S19245C6");
    check_base_class_offset(lv, (S19245C8*), ABISELECT(784,500), "S19245C6");
    set_bf_and_test(lv, s19245c6f0, ABISELECT(464,308), 0, 8, 1, "S19245C6");
    set_bf_and_test(lv, s19245c6f0, ABISELECT(464,308), 0, 8, hide_sll(1LL<<7), "S19245C6");
    check_field_offset(lv, s19245c6f1, ABISELECT(468,312), "S19245C6.s19245c6f1");
    test_class_info(&lv, &cd_S19245C6);
    dp->~S19245C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C6(Test_S19245C6, "S19245C6", ABISELECT(16688,10608));

#else // __cplusplus

extern void _ZN8S19245C6C1Ev();
extern void _ZN8S19245C6D1Ev();
Name_Map name_map_S19245C6[] = {
  NSPAIR(_ZN8S19245C6C1Ev),
  NSPAIR(_ZN8S19245C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C9;
extern VTBL_ENTRY _ZTI8S19245C9[];
extern  VTBL_ENTRY _ZTV8S19245C9[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C5;
extern VTBL_ENTRY _ZTI8S19245C5[];
extern  VTBL_ENTRY _ZTV8S19245C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C5[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C10;
extern VTBL_ENTRY _ZTI9S19245C10[];
extern  VTBL_ENTRY _ZTV9S19245C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C10[];
extern Class_Descriptor cd_S19245C11;
extern VTBL_ENTRY _ZTI9S19245C11[];
extern  VTBL_ENTRY _ZTV9S19245C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C11[];
extern Class_Descriptor cd_S19245C8;
extern VTBL_ENTRY _ZTI8S19245C8[];
extern  VTBL_ENTRY _ZTV8S19245C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C8[];
static Base_Class bases_S19245C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C3,    ABISELECT(480,316), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19245C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19245C3,    ABISELECT(11792,7476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19245C7,    ABISELECT(12088,7660), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19245C4,    ABISELECT(12552,7968), //bcp->offset
    57, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19245C9,    ABISELECT(11792,7476), //bcp->offset
    39, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19245C4,    ABISELECT(15912,10096), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19245C5,    ABISELECT(16056,10192), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19245C4,    ABISELECT(784,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19245C7,    ABISELECT(16224,10300), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19245C10,    ABISELECT(784,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19245C11,    ABISELECT(1248,792), //bcp->offset
    31, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19245C8,    ABISELECT(784,500), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19245C6[];
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C6D1Ev();
extern void _ZN8S19245C6D0Ev();
extern void _ZN8S19245C32v1Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C82v8Ev();
extern void ABISELECT(_ZTv0_n80_N8S19245C6D1Ev,_ZTv0_n40_N8S19245C6D1Ev)();
extern void ABISELECT(_ZThn784_N8S19245C6D1Ev,_ZThn500_N8S19245C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19245C6D0Ev,_ZTv0_n40_N8S19245C6D0Ev)();
extern void ABISELECT(_ZThn784_N8S19245C6D0Ev,_ZThn500_N8S19245C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S19245C6D1Ev,_ZTvn292_n40_N8S19245C6D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S19245C6D0Ev,_ZTvn292_n40_N8S19245C6D0Ev)();
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19245C6D1Ev,_ZTv0_n16_N8S19245C6D1Ev)();
extern void ABISELECT(_ZThn11792_N8S19245C6D1Ev,_ZThn7476_N8S19245C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19245C6D0Ev,_ZTv0_n16_N8S19245C6D0Ev)();
extern void ABISELECT(_ZThn11792_N8S19245C6D0Ev,_ZThn7476_N8S19245C6D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY vtc_S19245C6[] = {
  ABISELECT(16224,10300),
  ABISELECT(16056,10192),
  ABISELECT(15912,10096),
  ABISELECT(11792,7476),
  ABISELECT(784,500),
  ABISELECT(480,316),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19245C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19245C6D0Ev,
  0,
  ABISELECT(-480,-316),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  ABISELECT(-784,-500),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-784,-500),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19245C82v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19245C6D1Ev,_ZTv0_n40_N8S19245C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19245C6D0Ev,_ZTv0_n40_N8S19245C6D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-1248,-792),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19245C6D1Ev,_ZTvn292_n40_N8S19245C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19245C6D0Ev,_ZTvn292_n40_N8S19245C6D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11792,-7476),
  0,
  ABISELECT(-11792,-7476),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C6D1Ev,_ZTv0_n16_N8S19245C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C6D0Ev,_ZTv0_n16_N8S19245C6D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
  ABISELECT(-12088,-7660),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  ABISELECT(-12552,-7968),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  0,
  ABISELECT(-15912,-10096),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  ABISELECT(-144,-96),
  ABISELECT(-16056,-10192),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  0,
  0,
  0,
  ABISELECT(-16224,-10300),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern VTBL_ENTRY _ZTV8S19245C6[];
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C82v8Ev();
extern void _ZN8S19245C8D1Ev();
extern void _ZN8S19245C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C8__8S19245C6[] = {
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19245C82v8Ev,
  (VTBL_ENTRY)&_ZN8S19245C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19245C8D0Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19245C108S19245C8__8S19245C6[] = {
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C7__9S19245C108S19245C8__8S19245C6[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C108S19245C8__8S19245C6[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__9S19245C108S19245C8__8S19245C6[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__9S19245C108S19245C8__8S19245C6[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN9S19245C11D1Ev();
extern void _ZN9S19245C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19245C118S19245C8__8S19245C6[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN9S19245C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19245C11D0Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__9S19245C118S19245C8__8S19245C6[] = {
  0,
  ABISELECT(768,476),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19245C11D1Ev,_ZThn6684_N9S19245C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19245C11D0Ev,_ZThn6684_N9S19245C11D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C9__9S19245C118S19245C8__8S19245C6[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C78S19245C9__9S19245C118S19245C8__8S19245C6[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C48S19245C9__9S19245C118S19245C8__8S19245C6[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__9S19245C118S19245C8__8S19245C6[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C118S19245C8__8S19245C6[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19245C8D1Ev,_ZTv0_n16_N8S19245C8D1Ev)();
extern void ABISELECT(_ZThn11008_N8S19245C8D1Ev,_ZThn6976_N8S19245C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19245C8D0Ev,_ZTv0_n16_N8S19245C8D0Ev)();
extern void ABISELECT(_ZThn11008_N8S19245C8D0Ev,_ZThn6976_N8S19245C8D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C9__8S19245C8__8S19245C6[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C8D1Ev,_ZTv0_n16_N8S19245C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C8D0Ev,_ZTv0_n16_N8S19245C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C78S19245C9__8S19245C8__8S19245C6[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C48S19245C9__8S19245C8__8S19245C6[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__8S19245C8__8S19245C6[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__8S19245C8__8S19245C6[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C7__A1__8S19245C8__8S19245C6[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__A1__8S19245C8__8S19245C6[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void ABISELECT(_ZThn464_N8S19245C8D1Ev,_ZThn292_N8S19245C8D1Ev)();
extern void ABISELECT(_ZThn464_N8S19245C8D0Ev,_ZThn292_N8S19245C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19245C11__8S19245C8__8S19245C6[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S19245C8D1Ev,_ZThn292_N8S19245C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S19245C8D0Ev,_ZThn292_N8S19245C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__8S19245C6[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__8S19245C5__8S19245C6[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTT_ENTRY vtt_S19245C6[] = {
  {&(_ZTV8S19245C6[8]),  8,75},
  {&(_ZTV8S19245C6[16]),  16,75},
  {&(_ZTV8S19245C6[27]),  27,75},
  {&(_ZTV8S19245C6[48]),  48,75},
  {&(_ZTV8S19245C6[54]),  54,75},
  {&(_ZTV8S19245C6[59]),  59,75},
  {&(_ZTV8S19245C6[63]),  63,75},
  {&(_ZTV8S19245C6[67]),  67,75},
  {&(_ZTV8S19245C6[72]),  72,75},
  {&(_ZTV8S19245C6[37]),  37,75},
  {&(_tg__ZTV8S19245C8__8S19245C6[7]),  7,11},
  {&(_tg__ZTV9S19245C108S19245C8__8S19245C6[6]),  6,7},
  {&(_tg__ZTV8S19245C7__9S19245C108S19245C8__8S19245C6[5]),  5,8},
  {&(_tg__ZTV8S19245C5__9S19245C108S19245C8__8S19245C6[3]),  3,3},
  {&(_tg__ZTV8S19245C4__A1__9S19245C108S19245C8__8S19245C6[3]),  3,4},
  {&(_tg__ZTV8S19245C3__9S19245C108S19245C8__8S19245C6[3]),  3,4},
  {&(_tg__ZTV9S19245C118S19245C8__8S19245C6[6]),  6,8},
  {&(_tg__ZTV8S19245C3__9S19245C118S19245C8__8S19245C6[3]),  3,4},
  {&(_tg__ZTV8S19245C9__9S19245C118S19245C8__8S19245C6[9]),  9,13},
  {&(_tg__ZTV8S19245C78S19245C9__9S19245C118S19245C8__8S19245C6[2]),  2,5},
  {&(_tg__ZTV8S19245C48S19245C9__9S19245C118S19245C8__8S19245C6[2]),  2,3},
  {&(_tg__ZTV8S19245C4__A1__9S19245C118S19245C8__8S19245C6[3]),  3,4},
  {&(_tg__ZTV8S19245C5__9S19245C118S19245C8__8S19245C6[3]),  3,3},
  {&(_tg__ZTV8S19245C9__8S19245C8__8S19245C6[9]),  9,13},
  {&(_tg__ZTV8S19245C78S19245C9__8S19245C8__8S19245C6[2]),  2,5},
  {&(_tg__ZTV8S19245C48S19245C9__8S19245C8__8S19245C6[2]),  2,3},
  {&(_tg__ZTV8S19245C4__A1__8S19245C8__8S19245C6[3]),  3,4},
  {&(_tg__ZTV8S19245C5__8S19245C8__8S19245C6[3]),  3,3},
  {&(_tg__ZTV8S19245C7__A1__8S19245C8__8S19245C6[5]),  5,8},
  {&(_tg__ZTV8S19245C3__A1__8S19245C8__8S19245C6[3]),  3,4},
  {&(_tg__ZTV9S19245C11__8S19245C8__8S19245C6[6]),  6,8},
  {&(_tg__ZTV8S19245C5__8S19245C6[3]),  3,3},
  {&(_tg__ZTV8S19245C4__8S19245C5__8S19245C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19245C6[];
extern  VTBL_ENTRY _ZTV8S19245C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C6[];
static VTBL_ENTRY alt_thunk_names54[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C8D0Ev,_ZTv0_n16_N8S19245C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S19245C8D0Ev,_ZThn6976_N8S19245C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C8D1Ev,_ZTv0_n16_N8S19245C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S19245C8D1Ev,_ZThn6976_N8S19245C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19245C11D0Ev,_ZThn6684_N9S19245C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19245C11D1Ev,_ZThn6684_N9S19245C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C6D0Ev,_ZTv0_n16_N8S19245C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N8S19245C6D0Ev,_ZThn7476_N8S19245C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C6D1Ev,_ZTv0_n16_N8S19245C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N8S19245C6D1Ev,_ZThn7476_N8S19245C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19245C6D0Ev,_ZTv0_n40_N8S19245C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19245C6D0Ev,_ZThn500_N8S19245C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19245C6D1Ev,_ZTv0_n40_N8S19245C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19245C6D1Ev,_ZThn500_N8S19245C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19245C6 = {  "S19245C6", // class name
  bases_S19245C6, 13,
  &(vtc_S19245C6[0]), // expected_vtbl_contents
  &(vtt_S19245C6[0]), // expected_vtt_contents
  ABISELECT(16688,10608), // object size
  NSPAIRA(_ZTI8S19245C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19245C6),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19245C6),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names54,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19245C12  : virtual S19245C5 {
  ::S19245C11 s19245c12f0;
  __tsi64 s19245c12f1:6;
  int s19245c12f2;
  long s19245c12f3;
  ~S19245C12(); // tgen
  S19245C12(); // tgen
};
//SIG(-1 S19245C12) C1{ VBC2{ VBC3{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC3 FL:3} FC4{ VBC5{ v2 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} VBC6{ BC5 BC7{ v3 v4 v5 Fi[2] Fl[2] FC3[3]} BC3 vd v6 Fl FL Fp[8] FC8{ BC3 VBC7 VBC2 VBC5 FC5 Fs Fi[2]} Fp Fi FC8 Fi} VBC3 VBC2 FL:44 Fp Fi FC8 Fl[2] Fi[3] FC6 Fc:7 FC9{ BC5 vd v7 FC2 Fi Fp Fi}} FL:6 Fi Fl}


S19245C12 ::~S19245C12(){ note_dtor("S19245C12", this);} // tgen
S19245C12 ::S19245C12(){ note_ctor("S19245C12", this);} // tgen

static void Test_S19245C12()
{
  extern Class_Descriptor cd_S19245C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(719,1821)];
    init_test(&cd_S19245C12, buf);
    S19245C12 *dp, &lv = *(dp=new (buf) S19245C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11488,7280), "sizeof(S19245C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C12)");
    check_base_class_offset(lv, (S19245C4*)(S19245C5*), ABISELECT(11336,7184), "S19245C12");
    check_base_class_offset(lv, (S19245C5*), ABISELECT(11168,7076), "S19245C12");
    check_field_offset(lv, s19245c12f0, ABISELECT(16,4), "S19245C12.s19245c12f0");
    set_bf_and_test(lv, s19245c12f1, ABISELECT(11152,7064), 0, 6, 1, "S19245C12");
    set_bf_and_test(lv, s19245c12f1, ABISELECT(11152,7064), 0, 6, hide_sll(1LL<<5), "S19245C12");
    check_field_offset(lv, s19245c12f2, ABISELECT(11156,7068), "S19245C12.s19245c12f2");
    check_field_offset(lv, s19245c12f3, ABISELECT(11160,7072), "S19245C12.s19245c12f3");
    test_class_info(&lv, &cd_S19245C12);
    dp->~S19245C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C12(Test_S19245C12, "S19245C12", ABISELECT(11488,7280));

#else // __cplusplus

extern void _ZN9S19245C12C1Ev();
extern void _ZN9S19245C12D1Ev();
Name_Map name_map_S19245C12[] = {
  NSPAIR(_ZN9S19245C12C1Ev),
  NSPAIR(_ZN9S19245C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C5;
extern VTBL_ENTRY _ZTI8S19245C5[];
extern  VTBL_ENTRY _ZTV8S19245C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C5[];
static Base_Class bases_S19245C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C4,    ABISELECT(11336,7184), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19245C5,    ABISELECT(11168,7076), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19245C12[];
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY vtc_S19245C12[] = {
  ABISELECT(11336,7184),
  ABISELECT(11168,7076),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C12[0]),
  ABISELECT(168,108),
  ABISELECT(-11168,-7076),
  (VTBL_ENTRY)&(_ZTI9S19245C12[0]),
  0,
  ABISELECT(-11336,-7184),
  (VTBL_ENTRY)&(_ZTI9S19245C12[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern VTBL_ENTRY _ZTV9S19245C12[];
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C12[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__8S19245C5__9S19245C12[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTT_ENTRY vtt_S19245C12[] = {
  {&(_ZTV9S19245C12[4]),  4,11},
  {&(_ZTV9S19245C12[7]),  7,11},
  {&(_ZTV9S19245C12[10]),  10,11},
  {&(_tg__ZTV8S19245C5__9S19245C12[3]),  3,3},
  {&(_tg__ZTV8S19245C4__8S19245C5__9S19245C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19245C12[];
extern  VTBL_ENTRY _ZTV9S19245C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C12[];
Class_Descriptor cd_S19245C12 = {  "S19245C12", // class name
  bases_S19245C12, 2,
  &(vtc_S19245C12[0]), // expected_vtbl_contents
  &(vtt_S19245C12[0]), // expected_vtt_contents
  ABISELECT(11488,7280), // object size
  NSPAIRA(_ZTI9S19245C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19245C12),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19245C12),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19245C13  : virtual S19245C2 , virtual S19245C4 , virtual S19245C11 {
  int s19245c13f0;
  long double s19245c13f1;
  int s19245c13f2;
  void *s19245c13f3;
  long s19245c13f4;
  ::S19763C23 s19245c13f5;
  int s19245c13f6;
  long s19245c13f7;
  virtual  ~S19245C13(); // _ZN9S19245C13D2Ev
  S19245C13(); // tgen
};
//SIG(-1 S19245C13) C1{ VBC2{ BC3{ v1 FL FD Fp Fc FC4{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v2 FC5{ VBC4 Fp FC4 FL:3} Fi Fp Fi} VBC4 VBC6{ VBC3 VBC7{ BC3 BC8{ v4 v5 v6 Fi[2] Fl[2] FC4[3]} BC4 vd v7 Fl FL Fp[8] FC9{ BC4 VBC8 VBC5 VBC3 FC3 Fs Fi[2]} Fp Fi FC9 Fi} VBC4 VBC5 FL:44 Fp Fi FC9 Fl[2] Fi[3] FC7 Fc:7 FC2} vd Fi FD Fi Fp Fl FU10{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi Fl}


 S19245C13 ::~S19245C13(){ note_dtor("S19245C13", this);}
S19245C13 ::S19245C13(){ note_ctor("S19245C13", this);} // tgen

static void Test_S19245C13()
{
  extern Class_Descriptor cd_S19245C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(742,1878)];
    init_test(&cd_S19245C13, buf);
    S19245C13 *dp, &lv = *(dp=new (buf) S19245C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11856,7508), "sizeof(S19245C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C13)");
    check_base_class_offset(lv, (S19245C3*)(S19245C2*), ABISELECT(80,48), "S19245C13");
    check_base_class_offset(lv, (S19245C2*), ABISELECT(80,48), "S19245C13");
    /*is_ambiguous_... S19245C13::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*), ABISELECT(712,448), "S19245C13");
    /*is_ambiguous_... S19245C11::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C11*), ABISELECT(712,448), "S19245C13");
    check_base_class_offset(lv, (S19245C4*)(S19245C5*), ABISELECT(712,448), "S19245C13");
    /*is_ambiguous_... S19245C11::S19245C3 */ AMB_check_base_class_offset(lv, (S19245C3*)(S19245C11*), ABISELECT(7264,4596), "S19245C13");
    check_base_class_offset(lv, (S19245C3*)(S19245C9*), ABISELECT(7568,4780), "S19245C13");
    check_base_class_offset(lv, (S19245C7*)(S19245C9*), ABISELECT(7864,4964), "S19245C13");
    check_base_class_offset(lv, (S19245C4*)(S19245C9*), ABISELECT(8328,5272), "S19245C13");
    check_base_class_offset(lv, (S19245C9*)(S19245C11*), ABISELECT(7568,4780), "S19245C13");
    check_base_class_offset(lv, (S19245C5*)(S19245C11*), ABISELECT(11688,7400), "S19245C13");
    check_base_class_offset(lv, (S19245C11*), ABISELECT(864,544), "S19245C13");
    check_field_offset(lv, s19245c13f0, ABISELECT(8,4), "S19245C13.s19245c13f0");
    check_field_offset(lv, s19245c13f1, ABISELECT(16,8), "S19245C13.s19245c13f1");
    check_field_offset(lv, s19245c13f2, ABISELECT(32,20), "S19245C13.s19245c13f2");
    check_field_offset(lv, s19245c13f3, ABISELECT(40,24), "S19245C13.s19245c13f3");
    check_field_offset(lv, s19245c13f4, ABISELECT(48,28), "S19245C13.s19245c13f4");
    check_field_offset(lv, s19245c13f5, ABISELECT(56,32), "S19245C13.s19245c13f5");
    check_field_offset(lv, s19245c13f6, ABISELECT(64,40), "S19245C13.s19245c13f6");
    check_field_offset(lv, s19245c13f7, ABISELECT(72,44), "S19245C13.s19245c13f7");
    test_class_info(&lv, &cd_S19245C13);
    dp->~S19245C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C13(Test_S19245C13, "S19245C13", ABISELECT(11856,7508));

#else // __cplusplus

extern void _ZN9S19245C13C1Ev();
extern void _ZN9S19245C13D2Ev();
Name_Map name_map_S19245C13[] = {
  NSPAIR(_ZN9S19245C13C1Ev),
  NSPAIR(_ZN9S19245C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C2;
extern VTBL_ENTRY _ZTI8S19245C2[];
extern  VTBL_ENTRY _ZTV8S19245C2[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C9;
extern VTBL_ENTRY _ZTI8S19245C9[];
extern  VTBL_ENTRY _ZTV8S19245C9[];
extern Class_Descriptor cd_S19245C5;
extern VTBL_ENTRY _ZTI8S19245C5[];
extern  VTBL_ENTRY _ZTV8S19245C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C5[];
extern Class_Descriptor cd_S19245C11;
extern VTBL_ENTRY _ZTI9S19245C11[];
extern  VTBL_ENTRY _ZTV9S19245C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C11[];
static Base_Class bases_S19245C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C3,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19245C2,    ABISELECT(80,48), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19245C4,    ABISELECT(712,448), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19245C3,    ABISELECT(7264,4596), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19245C3,    ABISELECT(7568,4780), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19245C7,    ABISELECT(7864,4964), //bcp->offset
    49, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19245C4,    ABISELECT(8328,5272), //bcp->offset
    54, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19245C9,    ABISELECT(7568,4780), //bcp->offset
    36, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19245C5,    ABISELECT(11688,7400), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19245C11,    ABISELECT(864,544), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19245C13[];
extern void _ZN9S19245C13D1Ev();
extern void _ZN9S19245C13D0Ev();
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev)();
extern void ABISELECT(_ZThn80_N9S19245C13D1Ev,_ZThn48_N9S19245C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev)();
extern void ABISELECT(_ZThn80_N9S19245C13D0Ev,_ZThn48_N9S19245C13D0Ev)() __attribute__((weak));
extern void _ZN8S19245C22v2Ev();
extern void _ZN8S19245C42v6Ev();
extern void ABISELECT(_ZTv0_n56_N9S19245C13D1Ev,_ZTv0_n28_N9S19245C13D1Ev)();
extern void ABISELECT(_ZThn864_N9S19245C13D1Ev,_ZThn544_N9S19245C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19245C13D0Ev,_ZTv0_n28_N9S19245C13D0Ev)();
extern void ABISELECT(_ZThn864_N9S19245C13D0Ev,_ZThn544_N9S19245C13D0Ev)() __attribute__((weak));
extern void _ZN8S19245C32v1Ev();
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev)();
extern void ABISELECT(_ZThn7568_N9S19245C13D1Ev,_ZThn4780_N9S19245C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev)();
extern void ABISELECT(_ZThn7568_N9S19245C13D0Ev,_ZThn4780_N9S19245C13D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY vtc_S19245C13[] = {
  ABISELECT(11688,7400),
  ABISELECT(7568,4780),
  ABISELECT(7264,4596),
  ABISELECT(864,544),
  ABISELECT(712,448),
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN9S19245C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19245C13D0Ev,
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C22v2Ev,
  0,
  ABISELECT(-712,-448),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  ABISELECT(-864,-544),
  ABISELECT(10824,6856),
  ABISELECT(-152,-96),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  ABISELECT(-864,-544),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19245C13D1Ev,_ZTv0_n28_N9S19245C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19245C13D0Ev,_ZTv0_n28_N9S19245C13D0Ev),
  0,
  ABISELECT(-7264,-4596),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-7568,-4780),
  0,
  ABISELECT(-7568,-4780),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
  ABISELECT(-7864,-4964),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  ABISELECT(-8328,-5272),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  ABISELECT(-10976,-6952),
  ABISELECT(-11688,-7400),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
};
extern VTBL_ENTRY _ZTV9S19245C13[];
extern void _ZN9S19245C11D1Ev();
extern void _ZN9S19245C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19245C11__9S19245C13[] = {
  ABISELECT(10824,6856),
  ABISELECT(-152,-96),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN9S19245C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19245C11D0Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__9S19245C11__9S19245C13[] = {
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev)();
extern void ABISELECT(_ZThn6704_N9S19245C11D1Ev,_ZThn4236_N9S19245C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev)();
extern void ABISELECT(_ZThn6704_N9S19245C11D0Ev,_ZThn4236_N9S19245C11D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C9__9S19245C11__9S19245C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C78S19245C9__9S19245C11__9S19245C13[] = {
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C48S19245C9__9S19245C11__9S19245C13[] = {
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__9S19245C11__9S19245C13[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C11__9S19245C13[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C13[] = {
  ABISELECT(-10976,-6952),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__8S19245C5__9S19245C13[] = {
  0,
  ABISELECT(10976,6952),
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTT_ENTRY vtt_S19245C13[] = {
  {&(_ZTV9S19245C13[8]),  8,60},
  {&(_ZTV9S19245C13[15]),  15,60},
  {&(_ZTV9S19245C13[22]),  22,60},
  {&(_ZTV9S19245C13[30]),  30,60},
  {&(_ZTV9S19245C13[35]),  35,60},
  {&(_ZTV9S19245C13[45]),  45,60},
  {&(_ZTV9S19245C13[51]),  51,60},
  {&(_ZTV9S19245C13[56]),  56,60},
  {&(_ZTV9S19245C13[60]),  60,60},
  {&(_tg__ZTV9S19245C11__9S19245C13[6]),  6,8},
  {&(_tg__ZTV8S19245C3__9S19245C11__9S19245C13[3]),  3,4},
  {&(_tg__ZTV8S19245C9__9S19245C11__9S19245C13[9]),  9,13},
  {&(_tg__ZTV8S19245C78S19245C9__9S19245C11__9S19245C13[2]),  2,5},
  {&(_tg__ZTV8S19245C48S19245C9__9S19245C11__9S19245C13[2]),  2,3},
  {&(_tg__ZTV8S19245C4__A1__9S19245C11__9S19245C13[3]),  3,4},
  {&(_tg__ZTV8S19245C5__9S19245C11__9S19245C13[3]),  3,3},
  {&(_tg__ZTV8S19245C5__9S19245C13[3]),  3,3},
  {&(_tg__ZTV8S19245C4__8S19245C5__9S19245C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19245C13[];
extern  VTBL_ENTRY _ZTV9S19245C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C13[];
static VTBL_ENTRY alt_thunk_names55[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19245C11D0Ev,_ZThn4236_N9S19245C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19245C11D1Ev,_ZThn4236_N9S19245C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19245C13D0Ev,_ZTv0_n28_N9S19245C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19245C13D0Ev,_ZThn544_N9S19245C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19245C13D1Ev,_ZTv0_n28_N9S19245C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19245C13D1Ev,_ZThn544_N9S19245C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N9S19245C13D0Ev,_ZThn4780_N9S19245C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19245C13D0Ev,_ZThn48_N9S19245C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N9S19245C13D1Ev,_ZThn4780_N9S19245C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19245C13D1Ev,_ZThn48_N9S19245C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19245C13 = {  "S19245C13", // class name
  bases_S19245C13, 10,
  &(vtc_S19245C13[0]), // expected_vtbl_contents
  &(vtt_S19245C13[0]), // expected_vtt_contents
  ABISELECT(11856,7508), // object size
  NSPAIRA(_ZTI9S19245C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19245C13),60, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19245C13),18, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names55,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19245C1  : virtual S19245C2 , virtual S19245C4 , virtual S19245C6 , S19245C12 , S19245C13 {
  int s19245c1f0;
  int s19245c1f1;
  int s19245c1f2;
  int s19245c1f3;
  virtual  ~S19245C1(); // _ZN8S19245C1D2Ev
  S19245C1(); // tgen
};
//SIG(1 S19245C1) C1{ VBC2{ BC3{ v1 FL FD Fp Fc FC4{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v2 FC5{ VBC4 Fp FC4 FL:3} Fi Fp Fi} VBC4 VBC6{ VBC3 BC7{ v4 v5 v6 Fi[2] Fl[2] FC4[3]} VBC8{ VBC9{ BC3 BC7 BC4 vd v7 Fl FL Fp[8] FC10{ BC4 VBC7 VBC5 VBC3 FC3 Fs Fi[2]} Fp Fi FC10 Fi} VBC4 VBC5 BC10 BC11{ VBC3 VBC9 VBC4 VBC5 FL:44 Fp Fi FC10 Fl[2] Fi[3] FC9 Fc:7 FC2} v8 FC9 FL Fc:7} Fc:8 Fi} BC12{ VBC5 FC11 FL:6 Fi Fl} BC13{ VBC2 VBC4 VBC11 vd Fi FD Fi Fp Fl FU14{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi Fl} vd Fi Fi Fi Fi}


 S19245C1 ::~S19245C1(){ note_dtor("S19245C1", this);}
S19245C1 ::S19245C1(){ note_ctor("S19245C1", this);} // tgen

static void Test_S19245C1()
{
  extern Class_Descriptor cd_S19245C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2187,5551)];
    init_test(&cd_S19245C1, buf);
    S19245C1 *dp, &lv = *(dp=new (buf) S19245C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(34976,22200), "sizeof(S19245C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C1)");
    check_base_class_offset(lv, (S19245C3*)(S19245C2*), ABISELECT(11264,7140), "S19245C1");
    check_base_class_offset(lv, (S19245C2*), ABISELECT(11264,7140), "S19245C1");
    check_base_class_offset(lv, (S19245C2*)(S19245C13*), ABISELECT(11264,7140), "S19245C1");
    /*is_ambiguous_... S19245C1::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*), ABISELECT(11896,7540), "S19245C1");
    /*is_ambiguous_... S19245C8::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C8*), ABISELECT(11896,7540), "S19245C1");
    check_base_class_offset(lv, (S19245C4*)(S19245C5*), ABISELECT(11896,7540), "S19245C1");
    /*is_ambiguous_... S19245C11::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C11*)(S19245C8*), ABISELECT(11896,7540), "S19245C1");
    /*is_ambiguous_... S19245C13::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C13*), ABISELECT(11896,7540), "S19245C1");
    /*is_ambiguous_... S19245C1::S19245C11 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C11*), ABISELECT(11896,7540), "S19245C1");
    /*is_ambiguous_... S19245C6::S19245C3 */ AMB_check_base_class_offset(lv, (S19245C3*)(S19245C6*), ABISELECT(12512,7952), "S19245C1");
    check_base_class_offset(lv, (S19245C3*)(S19245C10*)(S19245C8*), ABISELECT(12512,7952), "S19245C1");
    /*is_ambiguous_... S19245C11::S19245C3 */ AMB_check_base_class_offset(lv, (S19245C3*)(S19245C11*)(S19245C8*), ABISELECT(12512,7952), "S19245C1");
    /*is_ambiguous_... S19245C1::S19245C11 */ AMB_check_base_class_offset(lv, (S19245C3*)(S19245C11*), ABISELECT(12512,7952), "S19245C1");
    /*is_ambiguous_... S19245C6::S19245C7 */ AMB_check_base_class_offset(lv, (S19245C7*)(S19245C6*), ABISELECT(12040,7636), "S19245C1");
    check_base_class_offset(lv, (S19245C3*)(S19245C9*), ABISELECT(23824,15112), "S19245C1");
    check_base_class_offset(lv, (S19245C7*)(S19245C9*), ABISELECT(24120,15296), "S19245C1");
    check_base_class_offset(lv, (S19245C4*)(S19245C9*), ABISELECT(24584,15604), "S19245C1");
    check_base_class_offset(lv, (S19245C9*)(S19245C8*), ABISELECT(23824,15112), "S19245C1");
    check_base_class_offset(lv, (S19245C9*)(S19245C11*)(S19245C8*), ABISELECT(23824,15112), "S19245C1");
    /*is_ambiguous_... S19245C1::S19245C11 */ AMB_check_base_class_offset(lv, (S19245C9*)(S19245C11*), ABISELECT(23824,15112), "S19245C1");
    check_base_class_offset(lv, (S19245C5*)(S19245C8*), ABISELECT(27944,17732), "S19245C1");
    check_base_class_offset(lv, (S19245C5*)(S19245C10*)(S19245C8*), ABISELECT(27944,17732), "S19245C1");
    check_base_class_offset(lv, (S19245C5*)(S19245C11*)(S19245C8*), ABISELECT(27944,17732), "S19245C1");
    check_base_class_offset(lv, (S19245C5*)(S19245C12*), ABISELECT(27944,17732), "S19245C1");
    /*is_ambiguous_... S19245C1::S19245C11 */ AMB_check_base_class_offset(lv, (S19245C5*)(S19245C11*), ABISELECT(27944,17732), "S19245C1");
    /*is_ambiguous_... S19245C10::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C10*)(S19245C8*), ABISELECT(12816,8136), "S19245C1");
    check_base_class_offset(lv, (S19245C7*)(S19245C10*)(S19245C8*), ABISELECT(28112,17840), "S19245C1");
    check_base_class_offset(lv, (S19245C10*)(S19245C8*), ABISELECT(12816,8136), "S19245C1");
    check_base_class_offset(lv, (S19245C11*)(S19245C8*), ABISELECT(13280,8428), "S19245C1");
    check_base_class_offset(lv, (S19245C8*)(S19245C6*), ABISELECT(12816,8136), "S19245C1");
    check_base_class_offset(lv, (S19245C6*), ABISELECT(12040,7636), "S19245C1");
    check_base_class_offset(lv, (S19245C12*), 0, "S19245C1");
    check_base_class_offset(lv, (S19245C11*)(S19245C13*), ABISELECT(28576,18148), "S19245C1");
    check_base_class_offset(lv, (S19245C13*), ABISELECT(11168,7076), "S19245C1");
    check_field_offset(lv, s19245c1f0, ABISELECT(11248,7124), "S19245C1.s19245c1f0");
    check_field_offset(lv, s19245c1f1, ABISELECT(11252,7128), "S19245C1.s19245c1f1");
    check_field_offset(lv, s19245c1f2, ABISELECT(11256,7132), "S19245C1.s19245c1f2");
    check_field_offset(lv, s19245c1f3, ABISELECT(11260,7136), "S19245C1.s19245c1f3");
    test_class_info(&lv, &cd_S19245C1);
    dp->~S19245C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C1(Test_S19245C1, "S19245C1", ABISELECT(34976,22200));

#else // __cplusplus

extern void _ZN8S19245C1C1Ev();
extern void _ZN8S19245C1D2Ev();
Name_Map name_map_S19245C1[] = {
  NSPAIR(_ZN8S19245C1C1Ev),
  NSPAIR(_ZN8S19245C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C2;
extern VTBL_ENTRY _ZTI8S19245C2[];
extern  VTBL_ENTRY _ZTV8S19245C2[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C9;
extern VTBL_ENTRY _ZTI8S19245C9[];
extern  VTBL_ENTRY _ZTV8S19245C9[];
extern Class_Descriptor cd_S19245C5;
extern VTBL_ENTRY _ZTI8S19245C5[];
extern  VTBL_ENTRY _ZTV8S19245C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C5[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C10;
extern VTBL_ENTRY _ZTI9S19245C10[];
extern  VTBL_ENTRY _ZTV9S19245C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C10[];
extern Class_Descriptor cd_S19245C11;
extern VTBL_ENTRY _ZTI9S19245C11[];
extern  VTBL_ENTRY _ZTV9S19245C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C11[];
extern Class_Descriptor cd_S19245C8;
extern VTBL_ENTRY _ZTI8S19245C8[];
extern  VTBL_ENTRY _ZTV8S19245C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C8[];
extern Class_Descriptor cd_S19245C6;
extern VTBL_ENTRY _ZTI8S19245C6[];
extern  VTBL_ENTRY _ZTV8S19245C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C6[];
extern Class_Descriptor cd_S19245C12;
extern VTBL_ENTRY _ZTI9S19245C12[];
extern  VTBL_ENTRY _ZTV9S19245C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C12[];
extern Class_Descriptor cd_S19245C11;
extern VTBL_ENTRY _ZTI9S19245C11[];
extern  VTBL_ENTRY _ZTV9S19245C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C11[];
extern Class_Descriptor cd_S19245C13;
extern VTBL_ENTRY _ZTI9S19245C13[];
extern  VTBL_ENTRY _ZTV9S19245C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C13[];
static Base_Class bases_S19245C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C3,    ABISELECT(11264,7140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19245C2,    ABISELECT(11264,7140), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19245C4,    ABISELECT(11896,7540), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19245C3,    ABISELECT(12512,7952), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19245C7,    ABISELECT(12040,7636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19245C3,    ABISELECT(23824,15112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19245C7,    ABISELECT(24120,15296), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19245C4,    ABISELECT(24584,15604), //bcp->offset
    97, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19245C9,    ABISELECT(23824,15112), //bcp->offset
    79, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19245C5,    ABISELECT(27944,17732), //bcp->offset
    100, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19245C4,    ABISELECT(12816,8136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19245C7,    ABISELECT(28112,17840), //bcp->offset
    103, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19245C10,    ABISELECT(12816,8136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19245C11,    ABISELECT(13280,8428), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19245C8,    ABISELECT(12816,8136), //bcp->offset
    57, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19245C6,    ABISELECT(12040,7636), //bcp->offset
    36, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19245C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19245C11,    ABISELECT(28576,18148), //bcp->offset
    111, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19245C13,    ABISELECT(11168,7076), //bcp->offset
    13, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19245C1[];
extern void _ZN8S19245C1D1Ev();
extern void _ZN8S19245C1D0Ev();
extern void ABISELECT(_ZThn11168_N8S19245C1D1Ev,_ZThn7076_N8S19245C1D1Ev)();
extern void ABISELECT(_ZThn11168_N8S19245C1D0Ev,_ZThn7076_N8S19245C1D0Ev)();
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19245C1D1Ev,_ZTv0_n16_N8S19245C1D1Ev)();
extern void ABISELECT(_ZThn11264_N8S19245C1D1Ev,_ZThn7140_N8S19245C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19245C1D0Ev,_ZTv0_n16_N8S19245C1D0Ev)();
extern void ABISELECT(_ZThn11264_N8S19245C1D0Ev,_ZThn7140_N8S19245C1D0Ev)() __attribute__((weak));
extern void _ZN8S19245C22v2Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void ABISELECT(_ZTv0_n96_N8S19245C1D1Ev,_ZTv0_n48_N8S19245C1D1Ev)();
extern void ABISELECT(_ZThn12040_N8S19245C1D1Ev,_ZThn7636_N8S19245C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19245C1D0Ev,_ZTv0_n48_N8S19245C1D0Ev)();
extern void ABISELECT(_ZThn12040_N8S19245C1D0Ev,_ZThn7636_N8S19245C1D0Ev)() __attribute__((weak));
extern void _ZN8S19245C32v1Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C82v8Ev();
extern void ABISELECT(_ZTv0_n80_N8S19245C1D1Ev,_ZTv0_n40_N8S19245C1D1Ev)();
extern void ABISELECT(_ZThn12816_N8S19245C1D1Ev,_ZThn8136_N8S19245C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19245C1D0Ev,_ZTv0_n40_N8S19245C1D0Ev)();
extern void ABISELECT(_ZThn12816_N8S19245C1D0Ev,_ZThn8136_N8S19245C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S19245C1D1Ev,_ZTvn292_n40_N8S19245C1D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S19245C1D0Ev,_ZTvn292_n40_N8S19245C1D0Ev)();
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19245C1D1Ev,_ZTv0_n16_N8S19245C1D1Ev)();
extern void ABISELECT(_ZThn23824_N8S19245C1D1Ev,_ZThn15112_N8S19245C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19245C1D0Ev,_ZTv0_n16_N8S19245C1D0Ev)();
extern void ABISELECT(_ZThn23824_N8S19245C1D0Ev,_ZThn15112_N8S19245C1D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void ABISELECT(_ZTv0_n56_N8S19245C1D1Ev,_ZTv0_n28_N8S19245C1D1Ev)();
extern void ABISELECT(_ZThn28576_N8S19245C1D1Ev,_ZThn18148_N8S19245C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19245C1D0Ev,_ZTv0_n28_N8S19245C1D0Ev)();
extern void ABISELECT(_ZThn28576_N8S19245C1D0Ev,_ZThn18148_N8S19245C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19245C1[] = {
  ABISELECT(28576,18148),
  ABISELECT(28112,17840),
  ABISELECT(23824,15112),
  ABISELECT(12816,8136),
  ABISELECT(12512,7952),
  ABISELECT(12040,7636),
  ABISELECT(11264,7140),
  ABISELECT(11896,7540),
  ABISELECT(27944,17732),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19245C1D0Ev,
  ABISELECT(16776,10656),
  ABISELECT(12656,8036),
  ABISELECT(1344,876),
  ABISELECT(17408,11072),
  ABISELECT(728,464),
  ABISELECT(96,64),
  ABISELECT(-11168,-7076),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn11168_N8S19245C1D1Ev,_ZThn7076_N8S19245C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn11168_N8S19245C1D0Ev,_ZThn7076_N8S19245C1D0Ev),
  0,
  ABISELECT(-11264,-7140),
  0,
  ABISELECT(-11264,-7140),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C1D1Ev,_ZTv0_n16_N8S19245C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C1D0Ev,_ZTv0_n16_N8S19245C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C22v2Ev,
  0,
  ABISELECT(-11896,-7540),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  ABISELECT(-12040,-7636),
  0,
  0,
  0,
  ABISELECT(16072,10204),
  ABISELECT(15904,10096),
  ABISELECT(-144,-96),
  ABISELECT(11784,7476),
  ABISELECT(776,500),
  ABISELECT(472,316),
  ABISELECT(-12040,-7636),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19245C1D1Ev,_ZTv0_n48_N8S19245C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19245C1D0Ev,_ZTv0_n48_N8S19245C1D0Ev),
  0,
  ABISELECT(-12512,-7952),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  ABISELECT(-12816,-8136),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(-920,-596),
  ABISELECT(15128,9596),
  ABISELECT(15296,9704),
  ABISELECT(-12816,-8136),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19245C82v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19245C1D1Ev,_ZTv0_n40_N8S19245C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19245C1D0Ev,_ZTv0_n40_N8S19245C1D0Ev),
  ABISELECT(14664,9304),
  ABISELECT(-1384,-888),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-13280,-8428),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19245C1D1Ev,_ZTvn292_n40_N8S19245C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19245C1D0Ev,_ZTvn292_n40_N8S19245C1D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23824,-15112),
  0,
  ABISELECT(-23824,-15112),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C1D1Ev,_ZTv0_n16_N8S19245C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C1D0Ev,_ZTv0_n16_N8S19245C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
  ABISELECT(-24120,-15296),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  ABISELECT(-24584,-15604),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  ABISELECT(-16048,-10192),
  ABISELECT(-27944,-17732),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  0,
  0,
  0,
  ABISELECT(-28112,-17840),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  ABISELECT(-28576,-18148),
  ABISELECT(-632,-416),
  ABISELECT(-16680,-10608),
  ABISELECT(-4752,-3036),
  ABISELECT(-16064,-10196),
  ABISELECT(-28576,-18148),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19245C1D1Ev,_ZTv0_n28_N8S19245C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19245C1D0Ev,_ZTv0_n28_N8S19245C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19245C1[];
static  VTBL_ENTRY _tg__ZTV9S19245C12__8S19245C1[] = {
  ABISELECT(11896,7540),
  ABISELECT(27944,17732),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C12__8S19245C1[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-27944,-17732),
  (VTBL_ENTRY)&(_ZTI9S19245C12[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__9S19245C12__8S19245C1[] = {
  0,
  ABISELECT(-11896,-7540),
  (VTBL_ENTRY)&(_ZTI9S19245C12[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN9S19245C13D1Ev();
extern void _ZN9S19245C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19245C13__8S19245C1[] = {
  ABISELECT(16776,10656),
  ABISELECT(12656,8036),
  ABISELECT(1344,876),
  ABISELECT(17408,11072),
  ABISELECT(728,464),
  ABISELECT(96,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN9S19245C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19245C13D0Ev,
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S19245C13D1Ev,_ZThn64_N9S19245C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S19245C13D0Ev,_ZThn64_N9S19245C13D0Ev)() __attribute__((weak));
extern void _ZN8S19245C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C2__9S19245C13__8S19245C1[] = {
  0,
  ABISELECT(-96,-64),
  0,
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C22v2Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__9S19245C13__8S19245C1[] = {
  0,
  ABISELECT(-728,-464),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19245C13D1Ev,_ZTv0_n28_N9S19245C13D1Ev)();
extern void ABISELECT(_ZThn17408_N9S19245C13D1Ev,_ZThn11072_N9S19245C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19245C13D0Ev,_ZTv0_n28_N9S19245C13D0Ev)();
extern void ABISELECT(_ZThn17408_N9S19245C13D0Ev,_ZThn11072_N9S19245C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19245C11__9S19245C13__8S19245C1[] = {
  ABISELECT(-17408,-11072),
  ABISELECT(-632,-416),
  ABISELECT(-16680,-10608),
  ABISELECT(-4752,-3036),
  ABISELECT(-16064,-10196),
  ABISELECT(-17408,-11072),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19245C13D1Ev,_ZTv0_n28_N9S19245C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19245C13D0Ev,_ZTv0_n28_N9S19245C13D0Ev),
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__A1__9S19245C13__8S19245C1[] = {
  0,
  ABISELECT(-1344,-876),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev)();
extern void ABISELECT(_ZThn12656_N9S19245C13D1Ev,_ZThn8036_N9S19245C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev)();
extern void ABISELECT(_ZThn12656_N9S19245C13D0Ev,_ZThn8036_N9S19245C13D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C9__9S19245C13__8S19245C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-12656,-8036),
  0,
  ABISELECT(-12656,-8036),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C78S19245C9__9S19245C13__8S19245C1[] = {
  ABISELECT(-12952,-8220),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C48S19245C9__A1__9S19245C13__8S19245C1[] = {
  ABISELECT(-13416,-8528),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C13__8S19245C1[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-16776,-10656),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C6D1Ev();
extern void _ZN8S19245C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C6__8S19245C1[] = {
  ABISELECT(16072,10204),
  ABISELECT(15904,10096),
  ABISELECT(-144,-96),
  ABISELECT(11784,7476),
  ABISELECT(776,500),
  ABISELECT(472,316),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19245C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19245C6D0Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__8S19245C6__8S19245C1[] = {
  0,
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C82v8Ev();
extern void ABISELECT(_ZTv0_n80_N8S19245C6D1Ev,_ZTv0_n40_N8S19245C6D1Ev)();
extern void ABISELECT(_ZThn776_N8S19245C6D1Ev,_ZThn500_N8S19245C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19245C6D0Ev,_ZTv0_n40_N8S19245C6D0Ev)();
extern void ABISELECT(_ZThn776_N8S19245C6D0Ev,_ZThn500_N8S19245C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19245C8__8S19245C6__8S19245C1[] = {
  ABISELECT(-776,-500),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(-920,-596),
  ABISELECT(15128,9596),
  ABISELECT(15296,9704),
  ABISELECT(-776,-500),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19245C82v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19245C6D1Ev,_ZTv0_n40_N8S19245C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19245C6D0Ev,_ZTv0_n40_N8S19245C6D0Ev),
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19245C6D1Ev,_ZTv0_n16_N8S19245C6D1Ev)();
extern void ABISELECT(_ZThn11784_N8S19245C6D1Ev,_ZThn7476_N8S19245C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19245C6D0Ev,_ZTv0_n16_N8S19245C6D0Ev)();
extern void ABISELECT(_ZThn11784_N8S19245C6D0Ev,_ZThn7476_N8S19245C6D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C9__8S19245C6__8S19245C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11784,-7476),
  0,
  ABISELECT(-11784,-7476),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C6D1Ev,_ZTv0_n16_N8S19245C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C6D0Ev,_ZTv0_n16_N8S19245C6D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C78S19245C9__A1__8S19245C6__8S19245C1[] = {
  ABISELECT(-12080,-7660),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C48S19245C9__8S19245C6__8S19245C1[] = {
  ABISELECT(-12544,-7968),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__8S19245C6__8S19245C1[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__8S19245C6__8S19245C1[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-15904,-10096),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C7__A2__8S19245C6__8S19245C1[] = {
  0,
  0,
  0,
  ABISELECT(-16072,-10204),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S19245C6D1Ev,_ZTvn292_n40_N8S19245C6D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S19245C6D0Ev,_ZTvn292_n40_N8S19245C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19245C118S19245C8__8S19245C6__8S19245C1[] = {
  ABISELECT(14664,9304),
  ABISELECT(-1384,-888),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-1240,-792),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19245C6D1Ev,_ZTvn292_n40_N8S19245C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19245C6D0Ev,_ZTvn292_n40_N8S19245C6D0Ev),
};
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C82v8Ev();
extern void _ZN8S19245C8D1Ev();
extern void _ZN8S19245C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C8__8S19245C1[] = {
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(-920,-596),
  ABISELECT(15128,9596),
  ABISELECT(15296,9704),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19245C82v8Ev,
  (VTBL_ENTRY)&_ZN8S19245C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19245C8D0Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19245C108S19245C8__8S19245C1[] = {
  ABISELECT(-304,-184),
  ABISELECT(-920,-596),
  ABISELECT(15128,9596),
  ABISELECT(15296,9704),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C7__9S19245C108S19245C8__8S19245C1[] = {
  0,
  0,
  0,
  ABISELECT(-15296,-9704),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C108S19245C8__8S19245C1[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__9S19245C108S19245C8__8S19245C1[] = {
  0,
  ABISELECT(920,596),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__9S19245C108S19245C8__8S19245C1[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN9S19245C11D1Ev();
extern void _ZN9S19245C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19245C118S19245C8__8S19245C1[] = {
  ABISELECT(14664,9304),
  ABISELECT(-1384,-888),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN9S19245C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19245C11D0Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__9S19245C118S19245C8__8S19245C1[] = {
  0,
  ABISELECT(768,476),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19245C11D1Ev,_ZThn6684_N9S19245C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19245C11D0Ev,_ZThn6684_N9S19245C11D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C9__9S19245C118S19245C8__8S19245C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C78S19245C9__9S19245C118S19245C8__8S19245C1[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C48S19245C9__9S19245C118S19245C8__8S19245C1[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__9S19245C118S19245C8__8S19245C1[] = {
  0,
  ABISELECT(1384,888),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C118S19245C8__8S19245C1[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19245C8D1Ev,_ZTv0_n16_N8S19245C8D1Ev)();
extern void ABISELECT(_ZThn11008_N8S19245C8D1Ev,_ZThn6976_N8S19245C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19245C8D0Ev,_ZTv0_n16_N8S19245C8D0Ev)();
extern void ABISELECT(_ZThn11008_N8S19245C8D0Ev,_ZThn6976_N8S19245C8D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C9__8S19245C8__8S19245C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C8D1Ev,_ZTv0_n16_N8S19245C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C8D0Ev,_ZTv0_n16_N8S19245C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C78S19245C9__8S19245C8__8S19245C1[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C48S19245C9__8S19245C8__8S19245C1[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__8S19245C8__8S19245C1[] = {
  0,
  ABISELECT(920,596),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__8S19245C8__8S19245C1[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C7__A1__8S19245C8__8S19245C1[] = {
  0,
  0,
  0,
  ABISELECT(-15296,-9704),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__A1__8S19245C8__8S19245C1[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void ABISELECT(_ZThn464_N8S19245C8D1Ev,_ZThn292_N8S19245C8D1Ev)();
extern void ABISELECT(_ZThn464_N8S19245C8D0Ev,_ZThn292_N8S19245C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19245C11__8S19245C8__8S19245C1[] = {
  ABISELECT(14664,9304),
  ABISELECT(-1384,-888),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S19245C8D1Ev,_ZThn292_N8S19245C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S19245C8D0Ev,_ZThn292_N8S19245C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__8S19245C1[] = {
  ABISELECT(-16048,-10192),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__8S19245C5__8S19245C1[] = {
  0,
  ABISELECT(16048,10192),
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN9S19245C11D1Ev();
extern void _ZN9S19245C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19245C11__A1__8S19245C1[] = {
  ABISELECT(-632,-416),
  ABISELECT(-16680,-10608),
  ABISELECT(-4752,-3036),
  ABISELECT(-16064,-10196),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN9S19245C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19245C11D0Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__9S19245C11__A1__8S19245C1[] = {
  0,
  ABISELECT(16064,10196),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev)();
extern void _ZN8S19245C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C9__9S19245C11__A1__8S19245C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4752,3036),
  0,
  ABISELECT(4752,3036),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C78S19245C9__9S19245C11__A1__8S19245C1[] = {
  ABISELECT(4456,2852),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C48S19245C9__9S19245C11__A1__8S19245C1[] = {
  ABISELECT(3992,2544),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__9S19245C11__A1__8S19245C1[] = {
  0,
  ABISELECT(16680,10608),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C11__A1__8S19245C1[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(632,416),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
};
static  VTT_ENTRY vtt_S19245C1[] = {
  {&(_ZTV8S19245C1[11]),  11,120},
  {&(_tg__ZTV9S19245C12__8S19245C1[4]),  4,4},
  {&(_tg__ZTV8S19245C5__9S19245C12__8S19245C1[3]),  3,3},
  {&(_tg__ZTV8S19245C4__9S19245C12__8S19245C1[3]),  3,4},
  {&(_tg__ZTV9S19245C13__8S19245C1[8]),  8,10},
  {&(_tg__ZTV8S19245C2__9S19245C13__8S19245C1[5]),  5,9},
  {&(_tg__ZTV8S19245C4__9S19245C13__8S19245C1[3]),  3,4},
  {&(_tg__ZTV9S19245C11__9S19245C13__8S19245C1[7]),  7,9},
  {&(_tg__ZTV8S19245C3__A1__9S19245C13__8S19245C1[3]),  3,4},
  {&(_tg__ZTV8S19245C9__9S19245C13__8S19245C1[9]),  9,13},
  {&(_tg__ZTV8S19245C78S19245C9__9S19245C13__8S19245C1[2]),  2,5},
  {&(_tg__ZTV8S19245C48S19245C9__A1__9S19245C13__8S19245C1[2]),  2,3},
  {&(_tg__ZTV8S19245C5__9S19245C13__8S19245C1[3]),  3,3},
  {&(_ZTV8S19245C1[28]),  28,120},
  {&(_ZTV8S19245C1[35]),  35,120},
  {&(_ZTV8S19245C1[48]),  48,120},
  {&(_ZTV8S19245C1[56]),  56,120},
  {&(_ZTV8S19245C1[67]),  67,120},
  {&(_ZTV8S19245C1[88]),  88,120},
  {&(_ZTV8S19245C1[94]),  94,120},
  {&(_ZTV8S19245C1[99]),  99,120},
  {&(_ZTV8S19245C1[103]),  103,120},
  {&(_ZTV8S19245C1[108]),  108,120},
  {&(_ZTV8S19245C1[77]),  77,120},
  {&(_ZTV8S19245C1[21]),  21,120},
  {&(_ZTV8S19245C1[118]),  118,120},
  {&(_tg__ZTV8S19245C6__8S19245C1[8]),  8,13},
  {&(_tg__ZTV8S19245C3__8S19245C6__8S19245C1[3]),  3,4},
  {&(_tg__ZTV8S19245C8__8S19245C6__8S19245C1[10]),  10,14},
  {&(_tg__ZTV8S19245C9__8S19245C6__8S19245C1[9]),  9,13},
  {&(_tg__ZTV8S19245C78S19245C9__A1__8S19245C6__8S19245C1[2]),  2,5},
  {&(_tg__ZTV8S19245C48S19245C9__8S19245C6__8S19245C1[2]),  2,3},
  {&(_tg__ZTV8S19245C4__A1__8S19245C6__8S19245C1[3]),  3,4},
  {&(_tg__ZTV8S19245C5__8S19245C6__8S19245C1[3]),  3,3},
  {&(_tg__ZTV8S19245C7__A2__8S19245C6__8S19245C1[5]),  5,8},
  {&(_tg__ZTV9S19245C118S19245C8__8S19245C6__8S19245C1[6]),  6,8},
  {&(_tg__ZTV8S19245C8__8S19245C1[7]),  7,11},
  {&(_tg__ZTV9S19245C108S19245C8__8S19245C1[6]),  6,7},
  {&(_tg__ZTV8S19245C7__9S19245C108S19245C8__8S19245C1[5]),  5,8},
  {&(_tg__ZTV8S19245C5__9S19245C108S19245C8__8S19245C1[3]),  3,3},
  {&(_tg__ZTV8S19245C4__A1__9S19245C108S19245C8__8S19245C1[3]),  3,4},
  {&(_tg__ZTV8S19245C3__9S19245C108S19245C8__8S19245C1[3]),  3,4},
  {&(_tg__ZTV9S19245C118S19245C8__8S19245C1[6]),  6,8},
  {&(_tg__ZTV8S19245C3__9S19245C118S19245C8__8S19245C1[3]),  3,4},
  {&(_tg__ZTV8S19245C9__9S19245C118S19245C8__8S19245C1[9]),  9,13},
  {&(_tg__ZTV8S19245C78S19245C9__9S19245C118S19245C8__8S19245C1[2]),  2,5},
  {&(_tg__ZTV8S19245C48S19245C9__9S19245C118S19245C8__8S19245C1[2]),  2,3},
  {&(_tg__ZTV8S19245C4__A1__9S19245C118S19245C8__8S19245C1[3]),  3,4},
  {&(_tg__ZTV8S19245C5__9S19245C118S19245C8__8S19245C1[3]),  3,3},
  {&(_tg__ZTV8S19245C9__8S19245C8__8S19245C1[9]),  9,13},
  {&(_tg__ZTV8S19245C78S19245C9__8S19245C8__8S19245C1[2]),  2,5},
  {&(_tg__ZTV8S19245C48S19245C9__8S19245C8__8S19245C1[2]),  2,3},
  {&(_tg__ZTV8S19245C4__A1__8S19245C8__8S19245C1[3]),  3,4},
  {&(_tg__ZTV8S19245C5__8S19245C8__8S19245C1[3]),  3,3},
  {&(_tg__ZTV8S19245C7__A1__8S19245C8__8S19245C1[5]),  5,8},
  {&(_tg__ZTV8S19245C3__A1__8S19245C8__8S19245C1[3]),  3,4},
  {&(_tg__ZTV9S19245C11__8S19245C8__8S19245C1[6]),  6,8},
  {&(_tg__ZTV8S19245C5__8S19245C1[3]),  3,3},
  {&(_tg__ZTV8S19245C4__8S19245C5__8S19245C1[3]),  3,4},
  {&(_tg__ZTV9S19245C11__A1__8S19245C1[6]),  6,8},
  {&(_tg__ZTV8S19245C3__9S19245C11__A1__8S19245C1[3]),  3,4},
  {&(_tg__ZTV8S19245C9__9S19245C11__A1__8S19245C1[9]),  9,13},
  {&(_tg__ZTV8S19245C78S19245C9__9S19245C11__A1__8S19245C1[2]),  2,5},
  {&(_tg__ZTV8S19245C48S19245C9__9S19245C11__A1__8S19245C1[2]),  2,3},
  {&(_tg__ZTV8S19245C4__A1__9S19245C11__A1__8S19245C1[3]),  3,4},
  {&(_tg__ZTV8S19245C5__9S19245C11__A1__8S19245C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19245C1[];
extern  VTBL_ENTRY _ZTV8S19245C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C1[];
static VTBL_ENTRY alt_thunk_names56[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C8D0Ev,_ZTv0_n16_N8S19245C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S19245C8D0Ev,_ZThn6976_N8S19245C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C8D1Ev,_ZTv0_n16_N8S19245C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S19245C8D1Ev,_ZThn6976_N8S19245C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19245C11D0Ev,_ZThn6684_N9S19245C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19245C11D1Ev,_ZThn6684_N9S19245C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C6D0Ev,_ZTv0_n16_N8S19245C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11784_N8S19245C6D0Ev,_ZThn7476_N8S19245C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C6D1Ev,_ZTv0_n16_N8S19245C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11784_N8S19245C6D1Ev,_ZThn7476_N8S19245C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19245C6D0Ev,_ZTv0_n40_N8S19245C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn776_N8S19245C6D0Ev,_ZThn500_N8S19245C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19245C6D1Ev,_ZTv0_n40_N8S19245C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn776_N8S19245C6D1Ev,_ZThn500_N8S19245C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19245C13D0Ev,_ZTv0_n28_N9S19245C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn17408_N9S19245C13D0Ev,_ZThn11072_N9S19245C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19245C13D1Ev,_ZTv0_n28_N9S19245C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn17408_N9S19245C13D1Ev,_ZThn11072_N9S19245C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12656_N9S19245C13D0Ev,_ZThn8036_N9S19245C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19245C13D0Ev,_ZThn64_N9S19245C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12656_N9S19245C13D1Ev,_ZThn8036_N9S19245C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19245C13D1Ev,_ZThn64_N9S19245C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19245C1D0Ev,_ZTv0_n28_N8S19245C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn28576_N8S19245C1D0Ev,_ZThn18148_N8S19245C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19245C1D1Ev,_ZTv0_n28_N8S19245C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn28576_N8S19245C1D1Ev,_ZThn18148_N8S19245C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19245C1D0Ev,_ZTv0_n40_N8S19245C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12816_N8S19245C1D0Ev,_ZThn8136_N8S19245C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19245C1D1Ev,_ZTv0_n40_N8S19245C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12816_N8S19245C1D1Ev,_ZThn8136_N8S19245C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19245C1D0Ev,_ZTv0_n48_N8S19245C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12040_N8S19245C1D0Ev,_ZThn7636_N8S19245C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19245C1D1Ev,_ZTv0_n48_N8S19245C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12040_N8S19245C1D1Ev,_ZThn7636_N8S19245C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C1D0Ev,_ZTv0_n16_N8S19245C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23824_N8S19245C1D0Ev,_ZThn15112_N8S19245C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn11264_N8S19245C1D0Ev,_ZThn7140_N8S19245C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C1D1Ev,_ZTv0_n16_N8S19245C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23824_N8S19245C1D1Ev,_ZThn15112_N8S19245C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn11264_N8S19245C1D1Ev,_ZThn7140_N8S19245C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19245C1 = {  "S19245C1", // class name
  bases_S19245C1, 19,
  &(vtc_S19245C1[0]), // expected_vtbl_contents
  &(vtt_S19245C1[0]), // expected_vtt_contents
  ABISELECT(34976,22200), // object size
  NSPAIRA(_ZTI8S19245C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19245C1),120, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19245C1),66, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names56,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3211C3  {
  int s3211c3f0;
  __tsi64 s3211c3f1;
  void *s3211c3f2[4];
  int s3211c3f3[2];
  void *s3211c3f4;
  ::S3423C4_nt s3211c3f5;
  void *s3211c3f6[2];
  virtual  ~S3211C3(); // _ZN7S3211C3D1Ev
  virtual void  v4(); // _ZN7S3211C32v4Ev
  virtual void  v5(); // _ZN7S3211C32v5Ev
  virtual void  v6(); // _ZN7S3211C32v6Ev
  virtual void  v7(); // _ZN7S3211C32v7Ev
  virtual void  v8(); // _ZN7S3211C32v8Ev
  virtual void  v9(); // _ZN7S3211C32v9Ev
  virtual void  v10(); // _ZN7S3211C33v10Ev
  virtual void  v11(); // _ZN7S3211C33v11Ev
  virtual void  v12(); // _ZN7S3211C33v12Ev
  virtual void  v13(); // _ZN7S3211C33v13Ev
  virtual void  v14(); // _ZN7S3211C33v14Ev
  virtual void  v15(); // _ZN7S3211C33v15Ev
  virtual void  v16(); // _ZN7S3211C33v16Ev
  virtual void  v17(); // _ZN7S3211C33v17Ev
  virtual void  v18(); // _ZN7S3211C33v18Ev
  virtual void  v19(); // _ZN7S3211C33v19Ev
  virtual void  v20(); // _ZN7S3211C33v20Ev
  virtual void  v21(); // _ZN7S3211C33v21Ev
  virtual void  v22(); // _ZN7S3211C33v22Ev
  virtual void  v23(); // _ZN7S3211C33v23Ev
  virtual void  v24(); // _ZN7S3211C33v24Ev
  virtual void  v25(); // _ZN7S3211C33v25Ev
  virtual void  v26(); // _ZN7S3211C33v26Ev
  virtual void  v27(); // _ZN7S3211C33v27Ev
  virtual void  v28(); // _ZN7S3211C33v28Ev
  virtual void  v29(); // _ZN7S3211C33v29Ev
  virtual void  v30(); // _ZN7S3211C33v30Ev
  virtual void  v31(); // _ZN7S3211C33v31Ev
  virtual void  v32(); // _ZN7S3211C33v32Ev
  virtual void  v33(); // _ZN7S3211C33v33Ev
  virtual void  v34(); // _ZN7S3211C33v34Ev
  virtual void  v35(); // _ZN7S3211C33v35Ev
  virtual void  v36(); // _ZN7S3211C33v36Ev
  virtual void  v37(); // _ZN7S3211C33v37Ev
  virtual void  v38(); // _ZN7S3211C33v38Ev
  virtual void  v39(); // _ZN7S3211C33v39Ev
  virtual void  v40(); // _ZN7S3211C33v40Ev
  virtual void  v41(); // _ZN7S3211C33v41Ev
  virtual void  v42(); // _ZN7S3211C33v42Ev
  virtual void  v43(); // _ZN7S3211C33v43Ev
  virtual void  v44(); // _ZN7S3211C33v44Ev
  virtual void  v45(); // _ZN7S3211C33v45Ev
  virtual void  v46(); // _ZN7S3211C33v46Ev
  virtual void  v47(); // _ZN7S3211C33v47Ev
  virtual void  v48(); // _ZN7S3211C33v48Ev
  virtual void  v49(); // _ZN7S3211C33v49Ev
  virtual void  v50(); // _ZN7S3211C33v50Ev
  virtual void  v51(); // _ZN7S3211C33v51Ev
  virtual void  v52(); // _ZN7S3211C33v52Ev
  virtual void  v53(); // _ZN7S3211C33v53Ev
  virtual void  v54(); // _ZN7S3211C33v54Ev
  virtual void  v55(); // _ZN7S3211C33v55Ev
  virtual void  v56(); // _ZN7S3211C33v56Ev
  virtual void  v57(); // _ZN7S3211C33v57Ev
  virtual void  v58(); // _ZN7S3211C33v58Ev
  virtual void  v59(); // _ZN7S3211C33v59Ev
  virtual void  v60(); // _ZN7S3211C33v60Ev
  virtual void  v61(); // _ZN7S3211C33v61Ev
  virtual void  v62(); // _ZN7S3211C33v62Ev
  virtual void  v63(); // _ZN7S3211C33v63Ev
  virtual void  v64(); // _ZN7S3211C33v64Ev
  virtual void  v65(); // _ZN7S3211C33v65Ev
  virtual void  v66(); // _ZN7S3211C33v66Ev
  virtual void  v67(); // _ZN7S3211C33v67Ev
  S3211C3(); // tgen
};
//SIG(-1 S3211C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S3211C3 ::~S3211C3(){ note_dtor("S3211C3", this);}
void  S3211C3 ::v4(){vfunc_called(this, "_ZN7S3211C32v4Ev");}
void  S3211C3 ::v5(){vfunc_called(this, "_ZN7S3211C32v5Ev");}
void  S3211C3 ::v6(){vfunc_called(this, "_ZN7S3211C32v6Ev");}
void  S3211C3 ::v7(){vfunc_called(this, "_ZN7S3211C32v7Ev");}
void  S3211C3 ::v8(){vfunc_called(this, "_ZN7S3211C32v8Ev");}
void  S3211C3 ::v9(){vfunc_called(this, "_ZN7S3211C32v9Ev");}
void  S3211C3 ::v10(){vfunc_called(this, "_ZN7S3211C33v10Ev");}
void  S3211C3 ::v11(){vfunc_called(this, "_ZN7S3211C33v11Ev");}
void  S3211C3 ::v12(){vfunc_called(this, "_ZN7S3211C33v12Ev");}
void  S3211C3 ::v13(){vfunc_called(this, "_ZN7S3211C33v13Ev");}
void  S3211C3 ::v14(){vfunc_called(this, "_ZN7S3211C33v14Ev");}
void  S3211C3 ::v15(){vfunc_called(this, "_ZN7S3211C33v15Ev");}
void  S3211C3 ::v16(){vfunc_called(this, "_ZN7S3211C33v16Ev");}
void  S3211C3 ::v17(){vfunc_called(this, "_ZN7S3211C33v17Ev");}
void  S3211C3 ::v18(){vfunc_called(this, "_ZN7S3211C33v18Ev");}
void  S3211C3 ::v19(){vfunc_called(this, "_ZN7S3211C33v19Ev");}
void  S3211C3 ::v20(){vfunc_called(this, "_ZN7S3211C33v20Ev");}
void  S3211C3 ::v21(){vfunc_called(this, "_ZN7S3211C33v21Ev");}
void  S3211C3 ::v22(){vfunc_called(this, "_ZN7S3211C33v22Ev");}
void  S3211C3 ::v23(){vfunc_called(this, "_ZN7S3211C33v23Ev");}
void  S3211C3 ::v24(){vfunc_called(this, "_ZN7S3211C33v24Ev");}
void  S3211C3 ::v25(){vfunc_called(this, "_ZN7S3211C33v25Ev");}
void  S3211C3 ::v26(){vfunc_called(this, "_ZN7S3211C33v26Ev");}
void  S3211C3 ::v27(){vfunc_called(this, "_ZN7S3211C33v27Ev");}
void  S3211C3 ::v28(){vfunc_called(this, "_ZN7S3211C33v28Ev");}
void  S3211C3 ::v29(){vfunc_called(this, "_ZN7S3211C33v29Ev");}
void  S3211C3 ::v30(){vfunc_called(this, "_ZN7S3211C33v30Ev");}
void  S3211C3 ::v31(){vfunc_called(this, "_ZN7S3211C33v31Ev");}
void  S3211C3 ::v32(){vfunc_called(this, "_ZN7S3211C33v32Ev");}
void  S3211C3 ::v33(){vfunc_called(this, "_ZN7S3211C33v33Ev");}
void  S3211C3 ::v34(){vfunc_called(this, "_ZN7S3211C33v34Ev");}
void  S3211C3 ::v35(){vfunc_called(this, "_ZN7S3211C33v35Ev");}
void  S3211C3 ::v36(){vfunc_called(this, "_ZN7S3211C33v36Ev");}
void  S3211C3 ::v37(){vfunc_called(this, "_ZN7S3211C33v37Ev");}
void  S3211C3 ::v38(){vfunc_called(this, "_ZN7S3211C33v38Ev");}
void  S3211C3 ::v39(){vfunc_called(this, "_ZN7S3211C33v39Ev");}
void  S3211C3 ::v40(){vfunc_called(this, "_ZN7S3211C33v40Ev");}
void  S3211C3 ::v41(){vfunc_called(this, "_ZN7S3211C33v41Ev");}
void  S3211C3 ::v42(){vfunc_called(this, "_ZN7S3211C33v42Ev");}
void  S3211C3 ::v43(){vfunc_called(this, "_ZN7S3211C33v43Ev");}
void  S3211C3 ::v44(){vfunc_called(this, "_ZN7S3211C33v44Ev");}
void  S3211C3 ::v45(){vfunc_called(this, "_ZN7S3211C33v45Ev");}
void  S3211C3 ::v46(){vfunc_called(this, "_ZN7S3211C33v46Ev");}
void  S3211C3 ::v47(){vfunc_called(this, "_ZN7S3211C33v47Ev");}
void  S3211C3 ::v48(){vfunc_called(this, "_ZN7S3211C33v48Ev");}
void  S3211C3 ::v49(){vfunc_called(this, "_ZN7S3211C33v49Ev");}
void  S3211C3 ::v50(){vfunc_called(this, "_ZN7S3211C33v50Ev");}
void  S3211C3 ::v51(){vfunc_called(this, "_ZN7S3211C33v51Ev");}
void  S3211C3 ::v52(){vfunc_called(this, "_ZN7S3211C33v52Ev");}
void  S3211C3 ::v53(){vfunc_called(this, "_ZN7S3211C33v53Ev");}
void  S3211C3 ::v54(){vfunc_called(this, "_ZN7S3211C33v54Ev");}
void  S3211C3 ::v55(){vfunc_called(this, "_ZN7S3211C33v55Ev");}
void  S3211C3 ::v56(){vfunc_called(this, "_ZN7S3211C33v56Ev");}
void  S3211C3 ::v57(){vfunc_called(this, "_ZN7S3211C33v57Ev");}
void  S3211C3 ::v58(){vfunc_called(this, "_ZN7S3211C33v58Ev");}
void  S3211C3 ::v59(){vfunc_called(this, "_ZN7S3211C33v59Ev");}
void  S3211C3 ::v60(){vfunc_called(this, "_ZN7S3211C33v60Ev");}
void  S3211C3 ::v61(){vfunc_called(this, "_ZN7S3211C33v61Ev");}
void  S3211C3 ::v62(){vfunc_called(this, "_ZN7S3211C33v62Ev");}
void  S3211C3 ::v63(){vfunc_called(this, "_ZN7S3211C33v63Ev");}
void  S3211C3 ::v64(){vfunc_called(this, "_ZN7S3211C33v64Ev");}
void  S3211C3 ::v65(){vfunc_called(this, "_ZN7S3211C33v65Ev");}
void  S3211C3 ::v66(){vfunc_called(this, "_ZN7S3211C33v66Ev");}
void  S3211C3 ::v67(){vfunc_called(this, "_ZN7S3211C33v67Ev");}
S3211C3 ::S3211C3(){ note_ctor("S3211C3", this);} // tgen

static void Test_S3211C3()
{
  extern Class_Descriptor cd_S3211C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3211C3, buf);
    S3211C3 *dp, &lv = *(dp=new (buf) S3211C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3211C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3211C3)");
    check_field_offset(lv, s3211c3f0, ABISELECT(8,4), "S3211C3.s3211c3f0");
    check_field_offset(lv, s3211c3f1, ABISELECT(16,8), "S3211C3.s3211c3f1");
    check_field_offset(lv, s3211c3f2, ABISELECT(24,16), "S3211C3.s3211c3f2");
    check_field_offset(lv, s3211c3f3, ABISELECT(56,32), "S3211C3.s3211c3f3");
    check_field_offset(lv, s3211c3f4, ABISELECT(64,40), "S3211C3.s3211c3f4");
    check_field_offset(lv, s3211c3f5, ABISELECT(72,44), "S3211C3.s3211c3f5");
    check_field_offset(lv, s3211c3f6, ABISELECT(80,52), "S3211C3.s3211c3f6");
    test_class_info(&lv, &cd_S3211C3);
    dp->~S3211C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3211C3(Test_S3211C3, "S3211C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3211C3C1Ev();
extern void _ZN7S3211C3D1Ev();
Name_Map name_map_S3211C3[] = {
  NSPAIR(_ZN7S3211C3C1Ev),
  NSPAIR(_ZN7S3211C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3211C3[];
extern void _ZN7S3211C3D1Ev();
extern void _ZN7S3211C3D0Ev();
extern void _ZN7S3211C32v4Ev();
extern void _ZN7S3211C32v5Ev();
extern void _ZN7S3211C32v6Ev();
extern void _ZN7S3211C32v7Ev();
extern void _ZN7S3211C32v8Ev();
extern void _ZN7S3211C32v9Ev();
extern void _ZN7S3211C33v10Ev();
extern void _ZN7S3211C33v11Ev();
extern void _ZN7S3211C33v12Ev();
extern void _ZN7S3211C33v13Ev();
extern void _ZN7S3211C33v14Ev();
extern void _ZN7S3211C33v15Ev();
extern void _ZN7S3211C33v16Ev();
extern void _ZN7S3211C33v17Ev();
extern void _ZN7S3211C33v18Ev();
extern void _ZN7S3211C33v19Ev();
extern void _ZN7S3211C33v20Ev();
extern void _ZN7S3211C33v21Ev();
extern void _ZN7S3211C33v22Ev();
extern void _ZN7S3211C33v23Ev();
extern void _ZN7S3211C33v24Ev();
extern void _ZN7S3211C33v25Ev();
extern void _ZN7S3211C33v26Ev();
extern void _ZN7S3211C33v27Ev();
extern void _ZN7S3211C33v28Ev();
extern void _ZN7S3211C33v29Ev();
extern void _ZN7S3211C33v30Ev();
extern void _ZN7S3211C33v31Ev();
extern void _ZN7S3211C33v32Ev();
extern void _ZN7S3211C33v33Ev();
extern void _ZN7S3211C33v34Ev();
extern void _ZN7S3211C33v35Ev();
extern void _ZN7S3211C33v36Ev();
extern void _ZN7S3211C33v37Ev();
extern void _ZN7S3211C33v38Ev();
extern void _ZN7S3211C33v39Ev();
extern void _ZN7S3211C33v40Ev();
extern void _ZN7S3211C33v41Ev();
extern void _ZN7S3211C33v42Ev();
extern void _ZN7S3211C33v43Ev();
extern void _ZN7S3211C33v44Ev();
extern void _ZN7S3211C33v45Ev();
extern void _ZN7S3211C33v46Ev();
extern void _ZN7S3211C33v47Ev();
extern void _ZN7S3211C33v48Ev();
extern void _ZN7S3211C33v49Ev();
extern void _ZN7S3211C33v50Ev();
extern void _ZN7S3211C33v51Ev();
extern void _ZN7S3211C33v52Ev();
extern void _ZN7S3211C33v53Ev();
extern void _ZN7S3211C33v54Ev();
extern void _ZN7S3211C33v55Ev();
extern void _ZN7S3211C33v56Ev();
extern void _ZN7S3211C33v57Ev();
extern void _ZN7S3211C33v58Ev();
extern void _ZN7S3211C33v59Ev();
extern void _ZN7S3211C33v60Ev();
extern void _ZN7S3211C33v61Ev();
extern void _ZN7S3211C33v62Ev();
extern void _ZN7S3211C33v63Ev();
extern void _ZN7S3211C33v64Ev();
extern void _ZN7S3211C33v65Ev();
extern void _ZN7S3211C33v66Ev();
extern void _ZN7S3211C33v67Ev();
static  VTBL_ENTRY vtc_S3211C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3211C3[0]),
  (VTBL_ENTRY)&_ZN7S3211C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3211C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v67Ev,
};
extern VTBL_ENTRY _ZTI7S3211C3[];
extern  VTBL_ENTRY _ZTV7S3211C3[];
Class_Descriptor cd_S3211C3 = {  "S3211C3", // class name
  0,0,//no base classes
  &(vtc_S3211C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3211C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3211C3),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3211C5_nt  {
  virtual void  v68(); // _ZN10S3211C5_nt3v68Ev
  virtual void  v69(); // _ZN10S3211C5_nt3v69Ev
  virtual void  v70(); // _ZN10S3211C5_nt3v70Ev
  virtual void  v71(); // _ZN10S3211C5_nt3v71Ev
  virtual void  v72(); // _ZN10S3211C5_nt3v72Ev
  virtual void  v73(); // _ZN10S3211C5_nt3v73Ev
  virtual void  v74(); // _ZN10S3211C5_nt3v74Ev
  virtual void  v75(); // _ZN10S3211C5_nt3v75Ev
  virtual void  v76(); // _ZN10S3211C5_nt3v76Ev
  ~S3211C5_nt(); // tgen
  S3211C5_nt(); // tgen
};
//SIG(-1 S3211C5_nt) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S3211C5_nt ::v68(){vfunc_called(this, "_ZN10S3211C5_nt3v68Ev");}
void  S3211C5_nt ::v69(){vfunc_called(this, "_ZN10S3211C5_nt3v69Ev");}
void  S3211C5_nt ::v70(){vfunc_called(this, "_ZN10S3211C5_nt3v70Ev");}
void  S3211C5_nt ::v71(){vfunc_called(this, "_ZN10S3211C5_nt3v71Ev");}
void  S3211C5_nt ::v72(){vfunc_called(this, "_ZN10S3211C5_nt3v72Ev");}
void  S3211C5_nt ::v73(){vfunc_called(this, "_ZN10S3211C5_nt3v73Ev");}
void  S3211C5_nt ::v74(){vfunc_called(this, "_ZN10S3211C5_nt3v74Ev");}
void  S3211C5_nt ::v75(){vfunc_called(this, "_ZN10S3211C5_nt3v75Ev");}
void  S3211C5_nt ::v76(){vfunc_called(this, "_ZN10S3211C5_nt3v76Ev");}
S3211C5_nt ::~S3211C5_nt(){ note_dtor("S3211C5_nt", this);} // tgen
S3211C5_nt ::S3211C5_nt(){ note_ctor("S3211C5_nt", this);} // tgen

//skip512 S3211C5_nt

#else // __cplusplus

extern void _ZN10S3211C5_ntC1Ev();
extern void _ZN10S3211C5_ntD1Ev();
Name_Map name_map_S3211C5_nt[] = {
  NSPAIR(_ZN10S3211C5_ntC1Ev),
  NSPAIR(_ZN10S3211C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3211C5_nt[];
extern void _ZN10S3211C5_nt3v68Ev();
extern void _ZN10S3211C5_nt3v69Ev();
extern void _ZN10S3211C5_nt3v70Ev();
extern void _ZN10S3211C5_nt3v71Ev();
extern void _ZN10S3211C5_nt3v72Ev();
extern void _ZN10S3211C5_nt3v73Ev();
extern void _ZN10S3211C5_nt3v74Ev();
extern void _ZN10S3211C5_nt3v75Ev();
extern void _ZN10S3211C5_nt3v76Ev();
static  VTBL_ENTRY vtc_S3211C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3211C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v76Ev,
};
extern VTBL_ENTRY _ZTI10S3211C5_nt[];
VTBL_ENTRY *P__ZTI10S3211C5_nt = _ZTI10S3211C5_nt; 
extern  VTBL_ENTRY _ZTV10S3211C5_nt[];
Class_Descriptor cd_S3211C5_nt = {  "S3211C5_nt", // class name
  0,0,//no base classes
  &(vtc_S3211C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S3211C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3211C5_nt),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3211C2  : S3211C3 , S3211C5_nt {
  ::S3423C17 s3211c2f0;
  ::S3423C4_nt s3211c2f1;
  ::S4228C37 s3211c2f2;
  ::S3423C11 s3211c2f3;
  unsigned int s3211c2f4:1;
  unsigned int s3211c2f5:1;
  unsigned int s3211c2f6:1;
  unsigned int s3211c2f7:1;
  virtual  ~S3211C2(); // _ZN7S3211C2D1Ev
  virtual void  v77(); // _ZN7S3211C23v77Ev
  virtual void  v78(); // _ZN7S3211C23v78Ev
  virtual void  v79(); // _ZN7S3211C23v79Ev
  virtual void  v80(); // _ZN7S3211C23v80Ev
  S3211C2(); // tgen
};
//SIG(-1 S3211C2) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} BC4{ v69 v70 v71 v72 v73 v74 v75 v76 v77} vd v1 v2 v3 v4 FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC3 FC8{ m} FC9{ BC10{ BC7}} Fi:1 Fi:1 Fi:1 Fi:1}


 S3211C2 ::~S3211C2(){ note_dtor("S3211C2", this);}
void  S3211C2 ::v77(){vfunc_called(this, "_ZN7S3211C23v77Ev");}
void  S3211C2 ::v78(){vfunc_called(this, "_ZN7S3211C23v78Ev");}
void  S3211C2 ::v79(){vfunc_called(this, "_ZN7S3211C23v79Ev");}
void  S3211C2 ::v80(){vfunc_called(this, "_ZN7S3211C23v80Ev");}
S3211C2 ::S3211C2(){ note_ctor("S3211C2", this);} // tgen

static void Test_S3211C2()
{
  extern Class_Descriptor cd_S3211C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,27)];
    init_test(&cd_S3211C2, buf);
    S3211C2 *dp, &lv = *(dp=new (buf) S3211C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,104), "sizeof(S3211C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3211C2)");
    check_base_class_offset(lv, (S3211C3*), 0, "S3211C2");
    check_base_class_offset(lv, (S3211C5_nt*), ABISELECT(96,60), "S3211C2");
    check_field_offset(lv, s3211c2f0, ABISELECT(104,64), "S3211C2.s3211c2f0");
    check_field_offset(lv, s3211c2f1, ABISELECT(120,76), "S3211C2.s3211c2f1");
    check_field_offset(lv, s3211c2f2, ABISELECT(128,84), "S3211C2.s3211c2f2");
    check_field_offset(lv, s3211c2f3, ABISELECT(136,88), "S3211C2.s3211c2f3");
    set_bf_and_test(lv, s3211c2f4, ABISELECT(152,100), 0, 1, 1, "S3211C2");
    set_bf_and_test(lv, s3211c2f5, ABISELECT(152,100), 1, 1, 1, "S3211C2");
    set_bf_and_test(lv, s3211c2f6, ABISELECT(152,100), 2, 1, 1, "S3211C2");
    set_bf_and_test(lv, s3211c2f7, ABISELECT(152,100), 3, 1, 1, "S3211C2");
    test_class_info(&lv, &cd_S3211C2);
    dp->~S3211C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3211C2(Test_S3211C2, "S3211C2", ABISELECT(160,104));

#else // __cplusplus

extern void _ZN7S3211C2C1Ev();
extern void _ZN7S3211C2D1Ev();
Name_Map name_map_S3211C2[] = {
  NSPAIR(_ZN7S3211C2C1Ev),
  NSPAIR(_ZN7S3211C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3211C3;
extern VTBL_ENTRY _ZTI7S3211C3[];
extern  VTBL_ENTRY _ZTV7S3211C3[];
extern Class_Descriptor cd_S3211C5_nt;
extern VTBL_ENTRY _ZTI10S3211C5_nt[];
extern  VTBL_ENTRY _ZTV10S3211C5_nt[];
static Base_Class bases_S3211C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3211C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3211C5_nt,    ABISELECT(96,60), //bcp->offset
    72, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3211C2[];
extern void _ZN7S3211C2D1Ev();
extern void _ZN7S3211C2D0Ev();
extern void _ZN7S3211C32v4Ev();
extern void _ZN7S3211C32v5Ev();
extern void _ZN7S3211C32v6Ev();
extern void _ZN7S3211C32v7Ev();
extern void _ZN7S3211C32v8Ev();
extern void _ZN7S3211C32v9Ev();
extern void _ZN7S3211C33v10Ev();
extern void _ZN7S3211C33v11Ev();
extern void _ZN7S3211C33v12Ev();
extern void _ZN7S3211C33v13Ev();
extern void _ZN7S3211C33v14Ev();
extern void _ZN7S3211C33v15Ev();
extern void _ZN7S3211C33v16Ev();
extern void _ZN7S3211C33v17Ev();
extern void _ZN7S3211C33v18Ev();
extern void _ZN7S3211C33v19Ev();
extern void _ZN7S3211C33v20Ev();
extern void _ZN7S3211C33v21Ev();
extern void _ZN7S3211C33v22Ev();
extern void _ZN7S3211C33v23Ev();
extern void _ZN7S3211C33v24Ev();
extern void _ZN7S3211C33v25Ev();
extern void _ZN7S3211C33v26Ev();
extern void _ZN7S3211C33v27Ev();
extern void _ZN7S3211C33v28Ev();
extern void _ZN7S3211C33v29Ev();
extern void _ZN7S3211C33v30Ev();
extern void _ZN7S3211C33v31Ev();
extern void _ZN7S3211C33v32Ev();
extern void _ZN7S3211C33v33Ev();
extern void _ZN7S3211C33v34Ev();
extern void _ZN7S3211C33v35Ev();
extern void _ZN7S3211C33v36Ev();
extern void _ZN7S3211C33v37Ev();
extern void _ZN7S3211C33v38Ev();
extern void _ZN7S3211C33v39Ev();
extern void _ZN7S3211C33v40Ev();
extern void _ZN7S3211C33v41Ev();
extern void _ZN7S3211C33v42Ev();
extern void _ZN7S3211C33v43Ev();
extern void _ZN7S3211C33v44Ev();
extern void _ZN7S3211C33v45Ev();
extern void _ZN7S3211C33v46Ev();
extern void _ZN7S3211C33v47Ev();
extern void _ZN7S3211C33v48Ev();
extern void _ZN7S3211C33v49Ev();
extern void _ZN7S3211C33v50Ev();
extern void _ZN7S3211C33v51Ev();
extern void _ZN7S3211C33v52Ev();
extern void _ZN7S3211C33v53Ev();
extern void _ZN7S3211C33v54Ev();
extern void _ZN7S3211C33v55Ev();
extern void _ZN7S3211C33v56Ev();
extern void _ZN7S3211C33v57Ev();
extern void _ZN7S3211C33v58Ev();
extern void _ZN7S3211C33v59Ev();
extern void _ZN7S3211C33v60Ev();
extern void _ZN7S3211C33v61Ev();
extern void _ZN7S3211C33v62Ev();
extern void _ZN7S3211C33v63Ev();
extern void _ZN7S3211C33v64Ev();
extern void _ZN7S3211C33v65Ev();
extern void _ZN7S3211C33v66Ev();
extern void _ZN7S3211C33v67Ev();
extern void _ZN7S3211C23v77Ev();
extern void _ZN7S3211C23v78Ev();
extern void _ZN7S3211C23v79Ev();
extern void _ZN7S3211C23v80Ev();
extern void _ZN10S3211C5_nt3v68Ev();
extern void _ZN10S3211C5_nt3v69Ev();
extern void _ZN10S3211C5_nt3v70Ev();
extern void _ZN10S3211C5_nt3v71Ev();
extern void _ZN10S3211C5_nt3v72Ev();
extern void _ZN10S3211C5_nt3v73Ev();
extern void _ZN10S3211C5_nt3v74Ev();
extern void _ZN10S3211C5_nt3v75Ev();
extern void _ZN10S3211C5_nt3v76Ev();
static  VTBL_ENTRY vtc_S3211C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3211C2[0]),
  (VTBL_ENTRY)&_ZN7S3211C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3211C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3211C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3211C23v78Ev,
  (VTBL_ENTRY)&_ZN7S3211C23v79Ev,
  (VTBL_ENTRY)&_ZN7S3211C23v80Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S3211C2[0]),
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v76Ev,
};
extern VTBL_ENTRY _ZTI7S3211C2[];
extern  VTBL_ENTRY _ZTV7S3211C2[];
Class_Descriptor cd_S3211C2 = {  "S3211C2", // class name
  bases_S3211C2, 2,
  &(vtc_S3211C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,104), // object size
  NSPAIRA(_ZTI7S3211C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3211C2),83, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3211C1  : S3211C2 {
  virtual  ~S3211C1(); // _ZN7S3211C1D1Ev
  virtual void  v1(); // _ZN7S3211C12v1Ev
  virtual void  v2(); // _ZN7S3211C12v2Ev
  virtual void  v3(); // _ZN7S3211C12v3Ev
  S3211C1(); // tgen
};
//SIG(1 S3211C1) C1{ BC2{ BC3{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} BC5{ v68 v69 v70 v71 v72 v73 v74 v75 v76} vd v77 v78 v79 v80 FC6{ BC7{ BC8{ m Fp Fi[2]}}} FC4 FC9{ m} FC10{ BC11{ BC8}} Fi:1 Fi:1 Fi:1 Fi:1} vd v1 v2 v3}


 S3211C1 ::~S3211C1(){ note_dtor("S3211C1", this);}
void  S3211C1 ::v1(){vfunc_called(this, "_ZN7S3211C12v1Ev");}
void  S3211C1 ::v2(){vfunc_called(this, "_ZN7S3211C12v2Ev");}
void  S3211C1 ::v3(){vfunc_called(this, "_ZN7S3211C12v3Ev");}
S3211C1 ::S3211C1(){ note_ctor("S3211C1", this);} // tgen

static void Test_S3211C1()
{
  extern Class_Descriptor cd_S3211C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,27)];
    init_test(&cd_S3211C1, buf);
    S3211C1 *dp, &lv = *(dp=new (buf) S3211C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,104), "sizeof(S3211C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3211C1)");
    check_base_class_offset(lv, (S3211C3*)(S3211C2*), 0, "S3211C1");
    check_base_class_offset(lv, (S3211C5_nt*)(S3211C2*), ABISELECT(96,60), "S3211C1");
    check_base_class_offset(lv, (S3211C2*), 0, "S3211C1");
    test_class_info(&lv, &cd_S3211C1);
    dp->~S3211C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3211C1(Test_S3211C1, "S3211C1", ABISELECT(160,104));

#else // __cplusplus

extern void _ZN7S3211C1C1Ev();
extern void _ZN7S3211C1D1Ev();
Name_Map name_map_S3211C1[] = {
  NSPAIR(_ZN7S3211C1C1Ev),
  NSPAIR(_ZN7S3211C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3211C3;
extern VTBL_ENTRY _ZTI7S3211C3[];
extern  VTBL_ENTRY _ZTV7S3211C3[];
extern Class_Descriptor cd_S3211C5_nt;
extern VTBL_ENTRY _ZTI10S3211C5_nt[];
extern  VTBL_ENTRY _ZTV10S3211C5_nt[];
extern Class_Descriptor cd_S3211C2;
extern VTBL_ENTRY _ZTI7S3211C2[];
extern  VTBL_ENTRY _ZTV7S3211C2[];
static Base_Class bases_S3211C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3211C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3211C5_nt,    ABISELECT(96,60), //bcp->offset
    75, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3211C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3211C1[];
extern void _ZN7S3211C1D1Ev();
extern void _ZN7S3211C1D0Ev();
extern void _ZN7S3211C32v4Ev();
extern void _ZN7S3211C32v5Ev();
extern void _ZN7S3211C32v6Ev();
extern void _ZN7S3211C32v7Ev();
extern void _ZN7S3211C32v8Ev();
extern void _ZN7S3211C32v9Ev();
extern void _ZN7S3211C33v10Ev();
extern void _ZN7S3211C33v11Ev();
extern void _ZN7S3211C33v12Ev();
extern void _ZN7S3211C33v13Ev();
extern void _ZN7S3211C33v14Ev();
extern void _ZN7S3211C33v15Ev();
extern void _ZN7S3211C33v16Ev();
extern void _ZN7S3211C33v17Ev();
extern void _ZN7S3211C33v18Ev();
extern void _ZN7S3211C33v19Ev();
extern void _ZN7S3211C33v20Ev();
extern void _ZN7S3211C33v21Ev();
extern void _ZN7S3211C33v22Ev();
extern void _ZN7S3211C33v23Ev();
extern void _ZN7S3211C33v24Ev();
extern void _ZN7S3211C33v25Ev();
extern void _ZN7S3211C33v26Ev();
extern void _ZN7S3211C33v27Ev();
extern void _ZN7S3211C33v28Ev();
extern void _ZN7S3211C33v29Ev();
extern void _ZN7S3211C33v30Ev();
extern void _ZN7S3211C33v31Ev();
extern void _ZN7S3211C33v32Ev();
extern void _ZN7S3211C33v33Ev();
extern void _ZN7S3211C33v34Ev();
extern void _ZN7S3211C33v35Ev();
extern void _ZN7S3211C33v36Ev();
extern void _ZN7S3211C33v37Ev();
extern void _ZN7S3211C33v38Ev();
extern void _ZN7S3211C33v39Ev();
extern void _ZN7S3211C33v40Ev();
extern void _ZN7S3211C33v41Ev();
extern void _ZN7S3211C33v42Ev();
extern void _ZN7S3211C33v43Ev();
extern void _ZN7S3211C33v44Ev();
extern void _ZN7S3211C33v45Ev();
extern void _ZN7S3211C33v46Ev();
extern void _ZN7S3211C33v47Ev();
extern void _ZN7S3211C33v48Ev();
extern void _ZN7S3211C33v49Ev();
extern void _ZN7S3211C33v50Ev();
extern void _ZN7S3211C33v51Ev();
extern void _ZN7S3211C33v52Ev();
extern void _ZN7S3211C33v53Ev();
extern void _ZN7S3211C33v54Ev();
extern void _ZN7S3211C33v55Ev();
extern void _ZN7S3211C33v56Ev();
extern void _ZN7S3211C33v57Ev();
extern void _ZN7S3211C33v58Ev();
extern void _ZN7S3211C33v59Ev();
extern void _ZN7S3211C33v60Ev();
extern void _ZN7S3211C33v61Ev();
extern void _ZN7S3211C33v62Ev();
extern void _ZN7S3211C33v63Ev();
extern void _ZN7S3211C33v64Ev();
extern void _ZN7S3211C33v65Ev();
extern void _ZN7S3211C33v66Ev();
extern void _ZN7S3211C33v67Ev();
extern void _ZN7S3211C23v77Ev();
extern void _ZN7S3211C23v78Ev();
extern void _ZN7S3211C23v79Ev();
extern void _ZN7S3211C23v80Ev();
extern void _ZN7S3211C12v1Ev();
extern void _ZN7S3211C12v2Ev();
extern void _ZN7S3211C12v3Ev();
extern void _ZN10S3211C5_nt3v68Ev();
extern void _ZN10S3211C5_nt3v69Ev();
extern void _ZN10S3211C5_nt3v70Ev();
extern void _ZN10S3211C5_nt3v71Ev();
extern void _ZN10S3211C5_nt3v72Ev();
extern void _ZN10S3211C5_nt3v73Ev();
extern void _ZN10S3211C5_nt3v74Ev();
extern void _ZN10S3211C5_nt3v75Ev();
extern void _ZN10S3211C5_nt3v76Ev();
static  VTBL_ENTRY vtc_S3211C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3211C1[0]),
  (VTBL_ENTRY)&_ZN7S3211C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3211C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3211C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3211C23v78Ev,
  (VTBL_ENTRY)&_ZN7S3211C23v79Ev,
  (VTBL_ENTRY)&_ZN7S3211C23v80Ev,
  (VTBL_ENTRY)&_ZN7S3211C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3211C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3211C12v3Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S3211C1[0]),
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v76Ev,
};
extern VTBL_ENTRY _ZTI7S3211C1[];
extern  VTBL_ENTRY _ZTV7S3211C1[];
Class_Descriptor cd_S3211C1 = {  "S3211C1", // class name
  bases_S3211C1, 3,
  &(vtc_S3211C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,104), // object size
  NSPAIRA(_ZTI7S3211C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3211C1),86, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20110C4  {
  void *s20110c4f0[3];
  int s20110c4f1[2];
  __tsi64 s20110c4f2;
  virtual void  v4(); // _ZN8S20110C42v4Ev
  ~S20110C4(); // tgen
  S20110C4(); // tgen
};
//SIG(-1 S20110C4) C1{ v1 Fp[3] Fi[2] FL}


void  S20110C4 ::v4(){vfunc_called(this, "_ZN8S20110C42v4Ev");}
S20110C4 ::~S20110C4(){ note_dtor("S20110C4", this);} // tgen
S20110C4 ::S20110C4(){ note_ctor("S20110C4", this);} // tgen

static void Test_S20110C4()
{
  extern Class_Descriptor cd_S20110C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S20110C4, buf);
    S20110C4 *dp, &lv = *(dp=new (buf) S20110C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S20110C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20110C4)");
    check_field_offset(lv, s20110c4f0, ABISELECT(8,4), "S20110C4.s20110c4f0");
    check_field_offset(lv, s20110c4f1, ABISELECT(32,16), "S20110C4.s20110c4f1");
    check_field_offset(lv, s20110c4f2, ABISELECT(40,24), "S20110C4.s20110c4f2");
    test_class_info(&lv, &cd_S20110C4);
    dp->~S20110C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20110C4(Test_S20110C4, "S20110C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S20110C4C1Ev();
extern void _ZN8S20110C4D1Ev();
Name_Map name_map_S20110C4[] = {
  NSPAIR(_ZN8S20110C4C1Ev),
  NSPAIR(_ZN8S20110C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20110C4[];
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY vtc_S20110C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C4[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
Class_Descriptor cd_S20110C4 = {  "S20110C4", // class name
  0,0,//no base classes
  &(vtc_S20110C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S20110C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20110C4),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20110C6  : S20110C4 {
  char s20110c6f0[10];
  long s20110c6f1[6];
  ::S20110C4 s20110c6f2;
  void *s20110c6f3;
  ::S19763C18_nt s20110c6f4;
  int s20110c6f5[4];
  ::S19942C8 s20110c6f6;
  int s20110c6f7;
  void *s20110c6f8;
  __tsi64 s20110c6f9;
  int s20110c6f10:19;
  virtual void  v5(); // _ZN8S20110C62v5Ev
  virtual void  v6(); // _ZN8S20110C62v6Ev
  ~S20110C6(); // tgen
  S20110C6(); // tgen
};
//SIG(-1 S20110C6) C1{ BC2{ v3 Fp[3] Fi[2] FL} v1 v2 Fc[10] Fl[6] FC2 Fp FC3{} Fi[4] FU4{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19}


void  S20110C6 ::v5(){vfunc_called(this, "_ZN8S20110C62v5Ev");}
void  S20110C6 ::v6(){vfunc_called(this, "_ZN8S20110C62v6Ev");}
S20110C6 ::~S20110C6(){ note_dtor("S20110C6", this);} // tgen
S20110C6 ::S20110C6(){ note_ctor("S20110C6", this);} // tgen

static void Test_S20110C6()
{
  extern Class_Descriptor cd_S20110C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,40)];
    init_test(&cd_S20110C6, buf);
    S20110C6 *dp, &lv = *(dp=new (buf) S20110C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,156), "sizeof(S20110C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20110C6)");
    check_base_class_offset(lv, (S20110C4*), 0, "S20110C6");
    check_field_offset(lv, s20110c6f0, ABISELECT(48,32), "S20110C6.s20110c6f0");
    check_field_offset(lv, s20110c6f1, ABISELECT(64,44), "S20110C6.s20110c6f1");
    check_field_offset(lv, s20110c6f2, ABISELECT(112,68), "S20110C6.s20110c6f2");
    check_field_offset(lv, s20110c6f3, ABISELECT(160,100), "S20110C6.s20110c6f3");
    check_field_offset(lv, s20110c6f4, ABISELECT(168,104), "S20110C6.s20110c6f4");
    check_field_offset(lv, s20110c6f5, ABISELECT(172,108), "S20110C6.s20110c6f5");
    check_field_offset(lv, s20110c6f6, ABISELECT(192,124), "S20110C6.s20110c6f6");
    check_field_offset(lv, s20110c6f7, ABISELECT(208,136), "S20110C6.s20110c6f7");
    check_field_offset(lv, s20110c6f8, ABISELECT(216,140), "S20110C6.s20110c6f8");
    check_field_offset(lv, s20110c6f9, ABISELECT(224,144), "S20110C6.s20110c6f9");
    set_bf_and_test(lv, s20110c6f10, ABISELECT(232,152), 0, 19, 1, "S20110C6");
    set_bf_and_test(lv, s20110c6f10, ABISELECT(232,152), 0, 19, hide_sll(1LL<<18), "S20110C6");
    test_class_info(&lv, &cd_S20110C6);
    dp->~S20110C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20110C6(Test_S20110C6, "S20110C6", ABISELECT(240,156));

#else // __cplusplus

extern void _ZN8S20110C6C1Ev();
extern void _ZN8S20110C6D1Ev();
Name_Map name_map_S20110C6[] = {
  NSPAIR(_ZN8S20110C6C1Ev),
  NSPAIR(_ZN8S20110C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
static Base_Class bases_S20110C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20110C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20110C6[];
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C62v5Ev();
extern void _ZN8S20110C62v6Ev();
static  VTBL_ENTRY vtc_S20110C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C6[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v6Ev,
};
extern VTBL_ENTRY _ZTI8S20110C6[];
extern  VTBL_ENTRY _ZTV8S20110C6[];
Class_Descriptor cd_S20110C6 = {  "S20110C6", // class name
  bases_S20110C6, 1,
  &(vtc_S20110C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,156), // object size
  NSPAIRA(_ZTI8S20110C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20110C6),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20110C9  : S20110C4 {
  int s20110c9f0[10];
  short s20110c9f1:11;
  ::S20110C4 s20110c9f2;
  ~S20110C9(); // tgen
  S20110C9(); // tgen
};
//SIG(-1 S20110C9) C1{ BC2{ v1 Fp[3] Fi[2] FL} Fi[10] Fs:11 FC2}


S20110C9 ::~S20110C9(){ note_dtor("S20110C9", this);} // tgen
S20110C9 ::S20110C9(){ note_ctor("S20110C9", this);} // tgen

static void Test_S20110C9()
{
  extern Class_Descriptor cd_S20110C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,28)];
    init_test(&cd_S20110C9, buf);
    S20110C9 *dp, &lv = *(dp=new (buf) S20110C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,108), "sizeof(S20110C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20110C9)");
    check_base_class_offset(lv, (S20110C4*), 0, "S20110C9");
    check_field_offset(lv, s20110c9f0, ABISELECT(48,32), "S20110C9.s20110c9f0");
    set_bf_and_test(lv, s20110c9f1, ABISELECT(88,72), 0, 11, 1, "S20110C9");
    set_bf_and_test(lv, s20110c9f1, ABISELECT(88,72), 0, 11, hide_sll(1LL<<10), "S20110C9");
    check_field_offset(lv, s20110c9f2, ABISELECT(96,76), "S20110C9.s20110c9f2");
    test_class_info(&lv, &cd_S20110C9);
    dp->~S20110C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20110C9(Test_S20110C9, "S20110C9", ABISELECT(144,108));

#else // __cplusplus

extern void _ZN8S20110C9C1Ev();
extern void _ZN8S20110C9D1Ev();
Name_Map name_map_S20110C9[] = {
  NSPAIR(_ZN8S20110C9C1Ev),
  NSPAIR(_ZN8S20110C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
static Base_Class bases_S20110C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20110C4,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20110C9[];
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY vtc_S20110C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C9[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
extern VTBL_ENTRY _ZTI8S20110C9[];
extern  VTBL_ENTRY _ZTV8S20110C9[];
Class_Descriptor cd_S20110C9 = {  "S20110C9", // class name
  bases_S20110C9, 1,
  &(vtc_S20110C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,108), // object size
  NSPAIRA(_ZTI8S20110C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20110C9),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20110C10  {
  void *s20110c10f0;
  short s20110c10f1;
  ::S19763C18_nt s20110c10f2;
  void *s20110c10f3;
  __tsi64 s20110c10f4;
  int s20110c10f5;
  ::S19942C11 s20110c10f6;
  int s20110c10f7;
  int s20110c10f8:12;
  int s20110c10f9;
  int s20110c10f10:8;
  virtual void  v7(); // _ZN9S20110C102v7Ev
  ~S20110C10(); // tgen
  S20110C10(); // tgen
};
//SIG(-1 S20110C10) C1{ v1 Fp Fs FC2{} Fp FL Fi FU3{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8}


void  S20110C10 ::v7(){vfunc_called(this, "_ZN9S20110C102v7Ev");}
S20110C10 ::~S20110C10(){ note_dtor("S20110C10", this);} // tgen
S20110C10 ::S20110C10(){ note_ctor("S20110C10", this);} // tgen

static void Test_S20110C10()
{
  extern Class_Descriptor cd_S20110C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,42)];
    init_test(&cd_S20110C10, buf);
    S20110C10 *dp, &lv = *(dp=new (buf) S20110C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,164), "sizeof(S20110C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20110C10)");
    check_field_offset(lv, s20110c10f0, ABISELECT(8,4), "S20110C10.s20110c10f0");
    check_field_offset(lv, s20110c10f1, ABISELECT(16,8), "S20110C10.s20110c10f1");
    check_field_offset(lv, s20110c10f2, ABISELECT(18,10), "S20110C10.s20110c10f2");
    check_field_offset(lv, s20110c10f3, ABISELECT(24,12), "S20110C10.s20110c10f3");
    check_field_offset(lv, s20110c10f4, ABISELECT(32,16), "S20110C10.s20110c10f4");
    check_field_offset(lv, s20110c10f5, ABISELECT(40,24), "S20110C10.s20110c10f5");
    check_field_offset(lv, s20110c10f6, ABISELECT(48,28), "S20110C10.s20110c10f6");
    check_field_offset(lv, s20110c10f7, ABISELECT(208,148), "S20110C10.s20110c10f7");
    set_bf_and_test(lv, s20110c10f8, ABISELECT(212,152), 0, 12, 1, "S20110C10");
    set_bf_and_test(lv, s20110c10f8, ABISELECT(212,152), 0, 12, hide_sll(1LL<<11), "S20110C10");
    check_field_offset(lv, s20110c10f9, ABISELECT(216,156), "S20110C10.s20110c10f9");
    set_bf_and_test(lv, s20110c10f10, ABISELECT(220,160), 0, 8, 1, "S20110C10");
    set_bf_and_test(lv, s20110c10f10, ABISELECT(220,160), 0, 8, hide_sll(1LL<<7), "S20110C10");
    test_class_info(&lv, &cd_S20110C10);
    dp->~S20110C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20110C10(Test_S20110C10, "S20110C10", ABISELECT(224,164));

#else // __cplusplus

extern void _ZN9S20110C10C1Ev();
extern void _ZN9S20110C10D1Ev();
Name_Map name_map_S20110C10[] = {
  NSPAIR(_ZN9S20110C10C1Ev),
  NSPAIR(_ZN9S20110C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20110C10[];
extern void _ZN9S20110C102v7Ev();
static  VTBL_ENTRY vtc_S20110C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20110C10[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
};
extern VTBL_ENTRY _ZTI9S20110C10[];
extern  VTBL_ENTRY _ZTV9S20110C10[];
Class_Descriptor cd_S20110C10 = {  "S20110C10", // class name
  0,0,//no base classes
  &(vtc_S20110C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,164), // object size
  NSPAIRA(_ZTI9S20110C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20110C10),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20110C5  : virtual S20110C6 , virtual S20110C4 , virtual S20110C9 , S20110C10 {
  long double s20110c5f0;
  int s20110c5f1;
  long double s20110c5f2[3];
  long double s20110c5f3;
  int s20110c5f4;
  __tsi64 s20110c5f5[9];
  int s20110c5f6;
  int s20110c5f7;
  int s20110c5f8;
  int s20110c5f9;
  virtual void  v8(); // _ZN8S20110C52v8Ev
  ~S20110C5(); // tgen
  S20110C5(); // tgen
};
//SIG(-1 S20110C5) C1{ VBC2{ BC3{ v2 Fp[3] Fi[2] FL} v3 v4 Fc[10] Fl[6] FC3 Fp FC4{} Fi[4] FU5{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC3 VBC6{ BC3 Fi[10] Fs:11 FC3} BC7{ v5 Fp Fs FC4 Fp FL Fi FU8{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v1 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi}


void  S20110C5 ::v8(){vfunc_called(this, "_ZN8S20110C52v8Ev");}
S20110C5 ::~S20110C5(){ note_dtor("S20110C5", this);} // tgen
S20110C5 ::S20110C5(){ note_ctor("S20110C5", this);} // tgen

static void Test_S20110C5()
{
  extern Class_Descriptor cd_S20110C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,155)];
    init_test(&cd_S20110C5, buf);
    S20110C5 *dp, &lv = *(dp=new (buf) S20110C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,616), "sizeof(S20110C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20110C5)");
    check_base_class_offset(lv, (S20110C4*)(S20110C6*), ABISELECT(416,320), "S20110C5");
    check_base_class_offset(lv, (S20110C6*), ABISELECT(416,320), "S20110C5");
    /*is_ambiguous_... S20110C5::S20110C4 */ AMB_check_base_class_offset(lv, (S20110C4*), ABISELECT(656,476), "S20110C5");
    check_base_class_offset(lv, (S20110C4*)(S20110C9*), ABISELECT(704,508), "S20110C5");
    check_base_class_offset(lv, (S20110C9*), ABISELECT(704,508), "S20110C5");
    check_base_class_offset(lv, (S20110C10*), 0, "S20110C5");
    check_field_offset(lv, s20110c5f0, ABISELECT(224,164), "S20110C5.s20110c5f0");
    check_field_offset(lv, s20110c5f1, ABISELECT(240,176), "S20110C5.s20110c5f1");
    check_field_offset(lv, s20110c5f2, ABISELECT(256,180), "S20110C5.s20110c5f2");
    check_field_offset(lv, s20110c5f3, ABISELECT(304,216), "S20110C5.s20110c5f3");
    check_field_offset(lv, s20110c5f4, ABISELECT(320,228), "S20110C5.s20110c5f4");
    check_field_offset(lv, s20110c5f5, ABISELECT(328,232), "S20110C5.s20110c5f5");
    check_field_offset(lv, s20110c5f6, ABISELECT(400,304), "S20110C5.s20110c5f6");
    check_field_offset(lv, s20110c5f7, ABISELECT(404,308), "S20110C5.s20110c5f7");
    check_field_offset(lv, s20110c5f8, ABISELECT(408,312), "S20110C5.s20110c5f8");
    check_field_offset(lv, s20110c5f9, ABISELECT(412,316), "S20110C5.s20110c5f9");
    test_class_info(&lv, &cd_S20110C5);
    dp->~S20110C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20110C5(Test_S20110C5, "S20110C5", ABISELECT(848,616));

#else // __cplusplus

extern void _ZN8S20110C5C1Ev();
extern void _ZN8S20110C5D1Ev();
Name_Map name_map_S20110C5[] = {
  NSPAIR(_ZN8S20110C5C1Ev),
  NSPAIR(_ZN8S20110C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
extern Class_Descriptor cd_S20110C6;
extern VTBL_ENTRY _ZTI8S20110C6[];
extern  VTBL_ENTRY _ZTV8S20110C6[];
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
extern Class_Descriptor cd_S20110C9;
extern VTBL_ENTRY _ZTI8S20110C9[];
extern  VTBL_ENTRY _ZTV8S20110C9[];
extern Class_Descriptor cd_S20110C10;
extern VTBL_ENTRY _ZTI9S20110C10[];
extern  VTBL_ENTRY _ZTV9S20110C10[];
static Base_Class bases_S20110C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20110C4,    ABISELECT(416,320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20110C6,    ABISELECT(416,320), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20110C4,    ABISELECT(656,476), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20110C4,    ABISELECT(704,508), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20110C9,    ABISELECT(704,508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20110C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20110C5[];
extern void _ZN9S20110C102v7Ev();
extern void _ZN8S20110C52v8Ev();
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C62v5Ev();
extern void _ZN8S20110C62v6Ev();
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY vtc_S20110C5[] = {
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
  (VTBL_ENTRY)&_ZN8S20110C52v8Ev,
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v6Ev,
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  0,
  ABISELECT(-704,-508),
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S20110C5[];
static  VTT_ENTRY vtt_S20110C5[] = {
  {&(_ZTV8S20110C5[5]),  5,23},
  {&(_ZTV8S20110C5[12]),  12,23},
  {&(_ZTV8S20110C5[18]),  18,23},
  {&(_ZTV8S20110C5[22]),  22,23},
};
extern VTBL_ENTRY _ZTI8S20110C5[];
extern  VTBL_ENTRY _ZTV8S20110C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20110C5[];
Class_Descriptor cd_S20110C5 = {  "S20110C5", // class name
  bases_S20110C5, 6,
  &(vtc_S20110C5[0]), // expected_vtbl_contents
  &(vtt_S20110C5[0]), // expected_vtt_contents
  ABISELECT(848,616), // object size
  NSPAIRA(_ZTI8S20110C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20110C5),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20110C5),4, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20110C3  : virtual S20110C4 , S20110C5 , virtual S19942C12_nt , S20110C10 {
  int s20110c3f0;
  long double s20110c3f1;
  ::S19942C12_nt s20110c3f2;
  void *s20110c3f3;
  short s20110c3f4;
  int s20110c3f5;
  int s20110c3f6;
  int s20110c3f7;
  virtual void  v9(); // _ZN8S20110C32v9Ev
  ~S20110C3(); // tgen
  S20110C3(); // tgen
};
//SIG(-1 S20110C3) C1{ VBC2{ v2 Fp[3] Fi[2] FL} BC3{ VBC4{ BC2 v3 v4 Fc[10] Fl[6] FC2 Fp FC5{} Fi[4] FU6{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC2 VBC7{ BC2 Fi[10] Fs:11 FC2} BC8{ v5 Fp Fs FC5 Fp FL Fi FU9{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v6 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC10{ m Fc[2]} BC8 v1 Fi FD FC10 Fp Fs Fi Fi Fi}


void  S20110C3 ::v9(){vfunc_called(this, "_ZN8S20110C32v9Ev");}
S20110C3 ::~S20110C3(){ note_dtor("S20110C3", this);} // tgen
S20110C3 ::S20110C3(){ note_ctor("S20110C3", this);} // tgen

static void Test_S20110C3()
{
  extern Class_Descriptor cd_S20110C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(73,207)];
    init_test(&cd_S20110C3, buf);
    S20110C3 *dp, &lv = *(dp=new (buf) S20110C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1152,824), "sizeof(S20110C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20110C3)");
    /*is_ambiguous_... S20110C3::S20110C4 */ AMB_check_base_class_offset(lv, (S20110C4*), ABISELECT(704,524), "S20110C3");
    /*is_ambiguous_... S20110C5::S20110C4 */ AMB_check_base_class_offset(lv, (S20110C4*)(S20110C5*), ABISELECT(704,524), "S20110C3");
    check_base_class_offset(lv, (S20110C4*)(S20110C6*), ABISELECT(752,556), "S20110C3");
    check_base_class_offset(lv, (S20110C6*)(S20110C5*), ABISELECT(752,556), "S20110C3");
    check_base_class_offset(lv, (S20110C4*)(S20110C9*), ABISELECT(992,712), "S20110C3");
    check_base_class_offset(lv, (S20110C9*)(S20110C5*), ABISELECT(992,712), "S20110C3");
    check_base_class_offset(lv, (S20110C10*)(S20110C5*), 0, "S20110C3");
    check_base_class_offset(lv, (S20110C5*), 0, "S20110C3");
    check_base_class_offset(lv, (S19942C12_nt*), ABISELECT(1136,820), "S20110C3");
    /*is_ambiguous_... S20110C3::S20110C10 */ AMB_check_base_class_offset(lv, (S20110C10*), ABISELECT(416,320), "S20110C3");
    check_field_offset(lv, s20110c3f0, ABISELECT(640,484), "S20110C3.s20110c3f0");
    check_field_offset(lv, s20110c3f1, ABISELECT(656,488), "S20110C3.s20110c3f1");
    check_field_offset(lv, s20110c3f2, ABISELECT(672,500), "S20110C3.s20110c3f2");
    check_field_offset(lv, s20110c3f3, ABISELECT(680,504), "S20110C3.s20110c3f3");
    check_field_offset(lv, s20110c3f4, ABISELECT(688,508), "S20110C3.s20110c3f4");
    check_field_offset(lv, s20110c3f5, ABISELECT(692,512), "S20110C3.s20110c3f5");
    check_field_offset(lv, s20110c3f6, ABISELECT(696,516), "S20110C3.s20110c3f6");
    check_field_offset(lv, s20110c3f7, ABISELECT(700,520), "S20110C3.s20110c3f7");
    test_class_info(&lv, &cd_S20110C3);
    dp->~S20110C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20110C3(Test_S20110C3, "S20110C3", ABISELECT(1152,824));

#else // __cplusplus

extern void _ZN8S20110C3C1Ev();
extern void _ZN8S20110C3D1Ev();
Name_Map name_map_S20110C3[] = {
  NSPAIR(_ZN8S20110C3C1Ev),
  NSPAIR(_ZN8S20110C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
extern Class_Descriptor cd_S20110C6;
extern VTBL_ENTRY _ZTI8S20110C6[];
extern  VTBL_ENTRY _ZTV8S20110C6[];
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
extern Class_Descriptor cd_S20110C9;
extern VTBL_ENTRY _ZTI8S20110C9[];
extern  VTBL_ENTRY _ZTV8S20110C9[];
extern Class_Descriptor cd_S20110C10;
extern VTBL_ENTRY _ZTI9S20110C10[];
extern  VTBL_ENTRY _ZTV9S20110C10[];
extern Class_Descriptor cd_S20110C5;
extern VTBL_ENTRY _ZTI8S20110C5[];
extern  VTBL_ENTRY _ZTV8S20110C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20110C5[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S20110C10;
extern VTBL_ENTRY _ZTI9S20110C10[];
extern  VTBL_ENTRY _ZTV9S20110C10[];
static Base_Class bases_S20110C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20110C4,    ABISELECT(704,524), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20110C4,    ABISELECT(752,556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20110C6,    ABISELECT(752,556), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20110C4,    ABISELECT(992,712), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20110C9,    ABISELECT(992,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20110C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20110C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C12_nt,    ABISELECT(1136,820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20110C10,    ABISELECT(416,320), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20110C3[];
extern void _ZN9S20110C102v7Ev();
extern void _ZN8S20110C52v8Ev();
extern void _ZN8S20110C32v9Ev();
extern void _ZN9S20110C102v7Ev();
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C62v5Ev();
extern void _ZN8S20110C62v6Ev();
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY vtc_S20110C3[] = {
  ABISELECT(1136,820),
  ABISELECT(992,712),
  ABISELECT(704,524),
  ABISELECT(752,556),
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C3[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
  (VTBL_ENTRY)&_ZN8S20110C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20110C32v9Ev,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI8S20110C3[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
  0,
  ABISELECT(-704,-524),
  (VTBL_ENTRY)&(_ZTI8S20110C3[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  0,
  0,
  0,
  ABISELECT(-752,-556),
  (VTBL_ENTRY)&(_ZTI8S20110C3[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v6Ev,
  0,
  ABISELECT(-992,-712),
  (VTBL_ENTRY)&(_ZTI8S20110C3[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S20110C3[];
extern void _ZN9S20110C102v7Ev();
extern void _ZN8S20110C52v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C5__8S20110C3[] = {
  ABISELECT(992,712),
  ABISELECT(704,524),
  ABISELECT(752,556),
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
  (VTBL_ENTRY)&_ZN8S20110C52v8Ev,
};
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C62v5Ev();
extern void _ZN8S20110C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C6__8S20110C5__8S20110C3[] = {
  0,
  0,
  0,
  ABISELECT(-752,-556),
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v6Ev,
};
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C4__A1__8S20110C5__8S20110C3[] = {
  0,
  ABISELECT(-704,-524),
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C48S20110C9__A2__8S20110C5__8S20110C3[] = {
  0,
  ABISELECT(-992,-712),
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
static  VTT_ENTRY vtt_S20110C3[] = {
  {&(_ZTV8S20110C3[6]),  6,28},
  {&(_tg__ZTV8S20110C5__8S20110C3[5]),  5,7},
  {&(_tg__ZTV8S20110C6__8S20110C5__8S20110C3[5]),  5,8},
  {&(_tg__ZTV8S20110C4__A1__8S20110C5__8S20110C3[3]),  3,4},
  {&(_tg__ZTV8S20110C48S20110C9__A2__8S20110C5__8S20110C3[3]),  3,4},
  {&(_ZTV8S20110C3[15]),  15,28},
  {&(_ZTV8S20110C3[21]),  21,28},
  {&(_ZTV8S20110C3[27]),  27,28},
};
extern VTBL_ENTRY _ZTI8S20110C3[];
extern  VTBL_ENTRY _ZTV8S20110C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20110C3[];
Class_Descriptor cd_S20110C3 = {  "S20110C3", // class name
  bases_S20110C3, 9,
  &(vtc_S20110C3[0]), // expected_vtbl_contents
  &(vtt_S20110C3[0]), // expected_vtt_contents
  ABISELECT(1152,824), // object size
  NSPAIRA(_ZTI8S20110C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20110C3),28, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20110C3),8, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20110C2  {
  char s20110c2f0;
  int s20110c2f1;
  unsigned char s20110c2f2:1;
  void *s20110c2f3;
  ::S20110C3 s20110c2f4[7];
  void *s20110c2f5;
  ::S20110C4 s20110c2f6;
  int s20110c2f7;
  int s20110c2f8;
  virtual void  v3(); // _ZN8S20110C22v3Ev
  ~S20110C2(); // tgen
  S20110C2(); // tgen
};
//SIG(-1 S20110C2) C1{ v1 Fc Fi Fc:1 Fp FC2{ VBC3{ v3 Fp[3] Fi[2] FL} BC4{ VBC5{ BC3 v4 v5 Fc[10] Fl[6] FC3 Fp FC6{} Fi[4] FU7{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC3 VBC8{ BC3 Fi[10] Fs:11 FC3} BC9{ v6 Fp Fs FC6 Fp FL Fi FU10{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v7 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC11{ m Fc[2]} BC9 v2 Fi FD FC11 Fp Fs Fi Fi Fi}[7] Fp FC3 Fi Fi}


void  S20110C2 ::v3(){vfunc_called(this, "_ZN8S20110C22v3Ev");}
S20110C2 ::~S20110C2(){ note_dtor("S20110C2", this);} // tgen
S20110C2 ::S20110C2(){ note_ctor("S20110C2", this);} // tgen

static void Test_S20110C2()
{
  extern Class_Descriptor cd_S20110C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(511,1459)];
    init_test(&cd_S20110C2, buf);
    S20110C2 *dp, &lv = *(dp=new (buf) S20110C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8160,5832), "sizeof(S20110C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20110C2)");
    check_field_offset(lv, s20110c2f0, ABISELECT(8,4), "S20110C2.s20110c2f0");
    check_field_offset(lv, s20110c2f1, ABISELECT(12,8), "S20110C2.s20110c2f1");
    set_bf_and_test(lv, s20110c2f2, ABISELECT(16,12), 0, 1, 1, "S20110C2");
    check_field_offset(lv, s20110c2f3, ABISELECT(24,16), "S20110C2.s20110c2f3");
    check_field_offset(lv, s20110c2f4, ABISELECT(32,20), "S20110C2.s20110c2f4");
    check_field_offset(lv, s20110c2f5, ABISELECT(8096,5788), "S20110C2.s20110c2f5");
    check_field_offset(lv, s20110c2f6, ABISELECT(8104,5792), "S20110C2.s20110c2f6");
    check_field_offset(lv, s20110c2f7, ABISELECT(8152,5824), "S20110C2.s20110c2f7");
    check_field_offset(lv, s20110c2f8, ABISELECT(8156,5828), "S20110C2.s20110c2f8");
    test_class_info(&lv, &cd_S20110C2);
    dp->~S20110C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20110C2(Test_S20110C2, "S20110C2", ABISELECT(8160,5832));

#else // __cplusplus

extern void _ZN8S20110C2C1Ev();
extern void _ZN8S20110C2D1Ev();
Name_Map name_map_S20110C2[] = {
  NSPAIR(_ZN8S20110C2C1Ev),
  NSPAIR(_ZN8S20110C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20110C2[];
extern void _ZN8S20110C22v3Ev();
static  VTBL_ENTRY vtc_S20110C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C2[0]),
  (VTBL_ENTRY)&_ZN8S20110C22v3Ev,
};
extern VTBL_ENTRY _ZTI8S20110C2[];
extern  VTBL_ENTRY _ZTV8S20110C2[];
Class_Descriptor cd_S20110C2 = {  "S20110C2", // class name
  0,0,//no base classes
  &(vtc_S20110C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8160,5832), // object size
  NSPAIRA(_ZTI8S20110C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20110C2),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20110C1  : virtual S20110C2 , S19942C12_nt , virtual S20110C3 , S20110C10 {
  short s20110c1f0;
  ::S19763C18_nt s20110c1f1;
  void *s20110c1f2;
  void *s20110c1f3;
  char s20110c1f4;
  int s20110c1f5;
  __tsi64 s20110c1f6;
  int s20110c1f7;
  int s20110c1f8;
  virtual  ~S20110C1(); // _ZN8S20110C1D2Ev
  virtual void  v1(); // _ZN8S20110C12v1Ev
  virtual void  v2(); // _ZN8S20110C12v2Ev
  S20110C1(); // tgen
};
//SIG(1 S20110C1) C1{ VBC2{ v3 Fc Fi Fc:1 Fp FC3{ VBC4{ v4 Fp[3] Fi[2] FL} BC5{ VBC6{ BC4 v5 v6 Fc[10] Fl[6] FC4 Fp FC7{} Fi[4] FU8{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC4 VBC9{ BC4 Fi[10] Fs:11 FC4} BC10{ v7 Fp Fs FC7 Fp FL Fi FU11{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v8 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC12{ m Fc[2]} BC10 v9 Fi FD FC12 Fp Fs Fi Fi Fi}[7] Fp FC4 Fi Fi} BC12 VBC3 BC10 vd v1 v2 Fs FC7 Fp Fp Fc Fi FL Fi Fi}


 S20110C1 ::~S20110C1(){ note_dtor("S20110C1", this);}
void  S20110C1 ::v1(){vfunc_called(this, "_ZN8S20110C12v1Ev");}
void  S20110C1 ::v2(){vfunc_called(this, "_ZN8S20110C12v2Ev");}
S20110C1 ::S20110C1(){ note_ctor("S20110C1", this);} // tgen

static void Test_S20110C1()
{
  extern Class_Descriptor cd_S20110C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(600,1715)];
    init_test(&cd_S20110C1, buf);
    S20110C1 *dp, &lv = *(dp=new (buf) S20110C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9584,6856), "sizeof(S20110C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20110C1)");
    check_base_class_offset(lv, (S20110C2*), ABISELECT(272,200), "S20110C1");
    /*is_ambiguous_... S20110C1::S19942C12_nt */ AMB_check_base_class_offset(lv, (S19942C12_nt*), ABISELECT(221,161), "S20110C1");
    /*is_ambiguous_... S20110C3::S20110C4 */ AMB_check_base_class_offset(lv, (S20110C4*)(S20110C3*), ABISELECT(9136,6556), "S20110C1");
    /*is_ambiguous_... S20110C5::S20110C4 */ AMB_check_base_class_offset(lv, (S20110C4*)(S20110C5*)(S20110C3*), ABISELECT(9136,6556), "S20110C1");
    check_base_class_offset(lv, (S20110C4*)(S20110C6*), ABISELECT(9184,6588), "S20110C1");
    check_base_class_offset(lv, (S20110C6*)(S20110C5*)(S20110C3*), ABISELECT(9184,6588), "S20110C1");
    check_base_class_offset(lv, (S20110C4*)(S20110C9*), ABISELECT(9424,6744), "S20110C1");
    check_base_class_offset(lv, (S20110C9*)(S20110C5*)(S20110C3*), ABISELECT(9424,6744), "S20110C1");
    check_base_class_offset(lv, (S20110C10*)(S20110C5*)(S20110C3*), ABISELECT(8432,6032), "S20110C1");
    check_base_class_offset(lv, (S20110C5*)(S20110C3*), ABISELECT(8432,6032), "S20110C1");
    check_base_class_offset(lv, (S19942C12_nt*)(S20110C3*), ABISELECT(9568,6852), "S20110C1");
    /*is_ambiguous_... S20110C3::S20110C10 */ AMB_check_base_class_offset(lv, (S20110C10*)(S20110C3*), ABISELECT(8848,6352), "S20110C1");
    check_base_class_offset(lv, (S20110C3*), ABISELECT(8432,6032), "S20110C1");
    /*is_ambiguous_... S20110C1::S20110C10 */ AMB_check_base_class_offset(lv, (S20110C10*), 0, "S20110C1");
    check_field_offset(lv, s20110c1f0, ABISELECT(224,164), "S20110C1.s20110c1f0");
    check_field_offset(lv, s20110c1f1, ABISELECT(226,166), "S20110C1.s20110c1f1");
    check_field_offset(lv, s20110c1f2, ABISELECT(232,168), "S20110C1.s20110c1f2");
    check_field_offset(lv, s20110c1f3, ABISELECT(240,172), "S20110C1.s20110c1f3");
    check_field_offset(lv, s20110c1f4, ABISELECT(248,176), "S20110C1.s20110c1f4");
    check_field_offset(lv, s20110c1f5, ABISELECT(252,180), "S20110C1.s20110c1f5");
    check_field_offset(lv, s20110c1f6, ABISELECT(256,184), "S20110C1.s20110c1f6");
    check_field_offset(lv, s20110c1f7, ABISELECT(264,192), "S20110C1.s20110c1f7");
    check_field_offset(lv, s20110c1f8, ABISELECT(268,196), "S20110C1.s20110c1f8");
    test_class_info(&lv, &cd_S20110C1);
    dp->~S20110C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20110C1(Test_S20110C1, "S20110C1", ABISELECT(9584,6856));

#else // __cplusplus

extern void _ZN8S20110C1C1Ev();
extern void _ZN8S20110C1D2Ev();
Name_Map name_map_S20110C1[] = {
  NSPAIR(_ZN8S20110C1C1Ev),
  NSPAIR(_ZN8S20110C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20110C2;
extern VTBL_ENTRY _ZTI8S20110C2[];
extern  VTBL_ENTRY _ZTV8S20110C2[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
extern Class_Descriptor cd_S20110C6;
extern VTBL_ENTRY _ZTI8S20110C6[];
extern  VTBL_ENTRY _ZTV8S20110C6[];
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
extern Class_Descriptor cd_S20110C9;
extern VTBL_ENTRY _ZTI8S20110C9[];
extern  VTBL_ENTRY _ZTV8S20110C9[];
extern Class_Descriptor cd_S20110C10;
extern VTBL_ENTRY _ZTI9S20110C10[];
extern  VTBL_ENTRY _ZTV9S20110C10[];
extern Class_Descriptor cd_S20110C5;
extern VTBL_ENTRY _ZTI8S20110C5[];
extern  VTBL_ENTRY _ZTV8S20110C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20110C5[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S20110C10;
extern VTBL_ENTRY _ZTI9S20110C10[];
extern  VTBL_ENTRY _ZTV9S20110C10[];
extern Class_Descriptor cd_S20110C3;
extern VTBL_ENTRY _ZTI8S20110C3[];
extern  VTBL_ENTRY _ZTV8S20110C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20110C3[];
extern Class_Descriptor cd_S20110C10;
extern VTBL_ENTRY _ZTI9S20110C10[];
extern  VTBL_ENTRY _ZTV9S20110C10[];
static Base_Class bases_S20110C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20110C2,    ABISELECT(272,200), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C12_nt,    ABISELECT(221,161), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20110C4,    ABISELECT(9136,6556), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20110C4,    ABISELECT(9184,6588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20110C6,    ABISELECT(9184,6588), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20110C4,    ABISELECT(9424,6744), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20110C9,    ABISELECT(9424,6744), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20110C10,    ABISELECT(8432,6032), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20110C5,    ABISELECT(8432,6032), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19942C12_nt,    ABISELECT(9568,6852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20110C10,    ABISELECT(8848,6352), //bcp->offset
    29, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20110C3,    ABISELECT(8432,6032), //bcp->offset
    17, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20110C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20110C1[];
extern void _ZN9S20110C102v7Ev();
extern void _ZN8S20110C1D1Ev();
extern void _ZN8S20110C1D0Ev();
extern void _ZN8S20110C12v1Ev();
extern void _ZN8S20110C12v2Ev();
extern void _ZN8S20110C22v3Ev();
extern void _ZN9S20110C102v7Ev();
extern void _ZN8S20110C52v8Ev();
extern void _ZN8S20110C32v9Ev();
extern void _ZN9S20110C102v7Ev();
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C62v5Ev();
extern void _ZN8S20110C62v6Ev();
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY vtc_S20110C1[] = {
  ABISELECT(9568,6852),
  ABISELECT(9424,6744),
  ABISELECT(9184,6588),
  ABISELECT(9136,6556),
  ABISELECT(8432,6032),
  ABISELECT(272,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C1[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
  (VTBL_ENTRY)&_ZN8S20110C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20110C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20110C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20110C12v2Ev,
  0,
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI8S20110C1[0]),
  (VTBL_ENTRY)&_ZN8S20110C22v3Ev,
  0,
  0,
  0,
  ABISELECT(1136,820),
  ABISELECT(992,712),
  ABISELECT(704,524),
  ABISELECT(752,556),
  ABISELECT(-8432,-6032),
  (VTBL_ENTRY)&(_ZTI8S20110C1[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
  (VTBL_ENTRY)&_ZN8S20110C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20110C32v9Ev,
  ABISELECT(-8848,-6352),
  (VTBL_ENTRY)&(_ZTI8S20110C1[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
  0,
  ABISELECT(-9136,-6556),
  (VTBL_ENTRY)&(_ZTI8S20110C1[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  0,
  0,
  0,
  ABISELECT(-9184,-6588),
  (VTBL_ENTRY)&(_ZTI8S20110C1[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v6Ev,
  0,
  ABISELECT(-9424,-6744),
  (VTBL_ENTRY)&(_ZTI8S20110C1[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S20110C1[];
extern void _ZN9S20110C102v7Ev();
extern void _ZN8S20110C52v8Ev();
extern void _ZN8S20110C32v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C3__8S20110C1[] = {
  ABISELECT(1136,820),
  ABISELECT(992,712),
  ABISELECT(704,524),
  ABISELECT(752,556),
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C3[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
  (VTBL_ENTRY)&_ZN8S20110C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20110C32v9Ev,
};
extern void _ZN9S20110C102v7Ev();
extern void _ZN8S20110C52v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C58S20110C3__8S20110C1[] = {
  ABISELECT(992,712),
  ABISELECT(704,524),
  ABISELECT(752,556),
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
  (VTBL_ENTRY)&_ZN8S20110C52v8Ev,
};
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C62v5Ev();
extern void _ZN8S20110C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C6__8S20110C58S20110C3__8S20110C1[] = {
  0,
  0,
  0,
  ABISELECT(-752,-556),
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v6Ev,
};
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C4__A1__8S20110C58S20110C3__8S20110C1[] = {
  0,
  ABISELECT(-704,-524),
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C48S20110C9__A2__8S20110C58S20110C3__8S20110C1[] = {
  0,
  ABISELECT(-992,-712),
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C4__8S20110C3__8S20110C1[] = {
  0,
  ABISELECT(-704,-524),
  (VTBL_ENTRY)&(_ZTI8S20110C3[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C62v5Ev();
extern void _ZN8S20110C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C6__8S20110C3__8S20110C1[] = {
  0,
  0,
  0,
  ABISELECT(-752,-556),
  (VTBL_ENTRY)&(_ZTI8S20110C3[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v6Ev,
};
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C48S20110C9__A2__8S20110C3__8S20110C1[] = {
  0,
  ABISELECT(-992,-712),
  (VTBL_ENTRY)&(_ZTI8S20110C3[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
static  VTT_ENTRY vtt_S20110C1[] = {
  {&(_ZTV8S20110C1[8]),  8,48},
  {&(_ZTV8S20110C1[16]),  16,48},
  {&(_ZTV8S20110C1[26]),  26,48},
  {&(_ZTV8S20110C1[35]),  35,48},
  {&(_ZTV8S20110C1[41]),  41,48},
  {&(_ZTV8S20110C1[47]),  47,48},
  {&(_ZTV8S20110C1[31]),  31,48},
  {&(_tg__ZTV8S20110C3__8S20110C1[6]),  6,9},
  {&(_tg__ZTV8S20110C58S20110C3__8S20110C1[5]),  5,7},
  {&(_tg__ZTV8S20110C6__8S20110C58S20110C3__8S20110C1[5]),  5,8},
  {&(_tg__ZTV8S20110C4__A1__8S20110C58S20110C3__8S20110C1[3]),  3,4},
  {&(_tg__ZTV8S20110C48S20110C9__A2__8S20110C58S20110C3__8S20110C1[3]),  3,4},
  {&(_tg__ZTV8S20110C4__8S20110C3__8S20110C1[3]),  3,4},
  {&(_tg__ZTV8S20110C6__8S20110C3__8S20110C1[5]),  5,8},
  {&(_tg__ZTV8S20110C48S20110C9__A2__8S20110C3__8S20110C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20110C1[];
extern  VTBL_ENTRY _ZTV8S20110C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20110C1[];
Class_Descriptor cd_S20110C1 = {  "S20110C1", // class name
  bases_S20110C1, 13,
  &(vtc_S20110C1[0]), // expected_vtbl_contents
  &(vtt_S20110C1[0]), // expected_vtt_contents
  ABISELECT(9584,6856), // object size
  NSPAIRA(_ZTI8S20110C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20110C1),48, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20110C1),15, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3005C3_nt  {
  __tsi64 s3005c3f0;
  virtual void  v10(); // _ZN10S3005C3_nt3v10Ev
  virtual void  v11(); // _ZN10S3005C3_nt3v11Ev
  virtual void  v12(); // _ZN10S3005C3_nt3v12Ev
  ~S3005C3_nt(); // tgen
  S3005C3_nt(); // tgen
};
//SIG(-1 S3005C3_nt) C1{ v1 v2 v3 FL}


void  S3005C3_nt ::v10(){vfunc_called(this, "_ZN10S3005C3_nt3v10Ev");}
void  S3005C3_nt ::v11(){vfunc_called(this, "_ZN10S3005C3_nt3v11Ev");}
void  S3005C3_nt ::v12(){vfunc_called(this, "_ZN10S3005C3_nt3v12Ev");}
S3005C3_nt ::~S3005C3_nt(){ note_dtor("S3005C3_nt", this);} // tgen
S3005C3_nt ::S3005C3_nt(){ note_ctor("S3005C3_nt", this);} // tgen

//skip512 S3005C3_nt

#else // __cplusplus

extern void _ZN10S3005C3_ntC1Ev();
extern void _ZN10S3005C3_ntD1Ev();
Name_Map name_map_S3005C3_nt[] = {
  NSPAIR(_ZN10S3005C3_ntC1Ev),
  NSPAIR(_ZN10S3005C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
static  VTBL_ENTRY vtc_S3005C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3005C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
};
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
VTBL_ENTRY *P__ZTI10S3005C3_nt = _ZTI10S3005C3_nt; 
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
Class_Descriptor cd_S3005C3_nt = {  "S3005C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3005C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI10S3005C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3005C3_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3005C4  : S3005C3_nt {
  __tsi64 s3005c4f0;
  virtual void  v13(); // _ZN7S3005C43v13Ev
  virtual void  v14(); // _ZN7S3005C43v14Ev
  virtual void  v15(); // _ZN7S3005C43v15Ev
  virtual void  v16(); // _ZN7S3005C43v16Ev
  virtual void  v17(); // _ZN7S3005C43v17Ev
  ~S3005C4(); // tgen
  S3005C4(); // tgen
};
//SIG(-1 S3005C4) C1{ BC2{ v6 v7 v8 FL} v1 v2 v3 v4 v5 FL}


void  S3005C4 ::v13(){vfunc_called(this, "_ZN7S3005C43v13Ev");}
void  S3005C4 ::v14(){vfunc_called(this, "_ZN7S3005C43v14Ev");}
void  S3005C4 ::v15(){vfunc_called(this, "_ZN7S3005C43v15Ev");}
void  S3005C4 ::v16(){vfunc_called(this, "_ZN7S3005C43v16Ev");}
void  S3005C4 ::v17(){vfunc_called(this, "_ZN7S3005C43v17Ev");}
S3005C4 ::~S3005C4(){ note_dtor("S3005C4", this);} // tgen
S3005C4 ::S3005C4(){ note_ctor("S3005C4", this);} // tgen

static void Test_S3005C4()
{
  extern Class_Descriptor cd_S3005C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S3005C4, buf);
    S3005C4 *dp, &lv = *(dp=new (buf) S3005C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S3005C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3005C4)");
    check_base_class_offset(lv, (S3005C3_nt*), 0, "S3005C4");
    check_field_offset(lv, s3005c4f0, ABISELECT(16,12), "S3005C4.s3005c4f0");
    test_class_info(&lv, &cd_S3005C4);
    dp->~S3005C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C4(Test_S3005C4, "S3005C4", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN7S3005C4C1Ev();
extern void _ZN7S3005C4D1Ev();
Name_Map name_map_S3005C4[] = {
  NSPAIR(_ZN7S3005C4C1Ev),
  NSPAIR(_ZN7S3005C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
static Base_Class bases_S3005C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3005C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3005C4[];
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
static  VTBL_ENTRY vtc_S3005C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C4[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
};
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
Class_Descriptor cd_S3005C4 = {  "S3005C4", // class name
  bases_S3005C4, 1,
  &(vtc_S3005C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI7S3005C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3005C4),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3005C5  {
  short s3005c5f0;
  int s3005c5f1;
  virtual void  v18(); // _ZN7S3005C53v18Ev
  virtual void  v19(); // _ZN7S3005C53v19Ev
  virtual void  v20(); // _ZN7S3005C53v20Ev
  ~S3005C5(); // tgen
  S3005C5(); // tgen
};
//SIG(-1 S3005C5) C1{ v1 v2 v3 Fs Fi}


void  S3005C5 ::v18(){vfunc_called(this, "_ZN7S3005C53v18Ev");}
void  S3005C5 ::v19(){vfunc_called(this, "_ZN7S3005C53v19Ev");}
void  S3005C5 ::v20(){vfunc_called(this, "_ZN7S3005C53v20Ev");}
S3005C5 ::~S3005C5(){ note_dtor("S3005C5", this);} // tgen
S3005C5 ::S3005C5(){ note_ctor("S3005C5", this);} // tgen

static void Test_S3005C5()
{
  extern Class_Descriptor cd_S3005C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3005C5, buf);
    S3005C5 *dp, &lv = *(dp=new (buf) S3005C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3005C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3005C5)");
    check_field_offset(lv, s3005c5f0, ABISELECT(8,4), "S3005C5.s3005c5f0");
    check_field_offset(lv, s3005c5f1, ABISELECT(12,8), "S3005C5.s3005c5f1");
    test_class_info(&lv, &cd_S3005C5);
    dp->~S3005C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C5(Test_S3005C5, "S3005C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S3005C5C1Ev();
extern void _ZN7S3005C5D1Ev();
Name_Map name_map_S3005C5[] = {
  NSPAIR(_ZN7S3005C5C1Ev),
  NSPAIR(_ZN7S3005C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3005C5[];
extern void _ZN7S3005C53v18Ev();
extern void _ZN7S3005C53v19Ev();
extern void _ZN7S3005C53v20Ev();
static  VTBL_ENTRY vtc_S3005C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C5[0]),
  (VTBL_ENTRY)&_ZN7S3005C53v18Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v20Ev,
};
extern VTBL_ENTRY _ZTI7S3005C5[];
extern  VTBL_ENTRY _ZTV7S3005C5[];
Class_Descriptor cd_S3005C5 = {  "S3005C5", // class name
  0,0,//no base classes
  &(vtc_S3005C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S3005C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3005C5),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3005C2  : S3005C3_nt , S3005C4 , virtual S3005C5 {
  virtual  ~S3005C2(); // _ZN7S3005C2D2Ev
  virtual void  v21(); // _ZN7S3005C23v21Ev
  virtual void  v22(); // _ZN7S3005C23v22Ev
  virtual void  v23(); // _ZN7S3005C23v23Ev
  virtual void  v24(); // _ZN7S3005C23v24Ev
  virtual void  v25(); // _ZN7S3005C23v25Ev
  S3005C2(); // tgen
};
//SIG(-1 S3005C2) C1{ BC2{ v6 v7 v8 FL} BC3{ BC2 v9 v10 v11 v12 v13 FL} VBC4{ v14 v15 v16 Fs Fi} vd v1 v2 v3 v4 v5}


 S3005C2 ::~S3005C2(){ note_dtor("S3005C2", this);}
void  S3005C2 ::v21(){vfunc_called(this, "_ZN7S3005C23v21Ev");}
void  S3005C2 ::v22(){vfunc_called(this, "_ZN7S3005C23v22Ev");}
void  S3005C2 ::v23(){vfunc_called(this, "_ZN7S3005C23v23Ev");}
void  S3005C2 ::v24(){vfunc_called(this, "_ZN7S3005C23v24Ev");}
void  S3005C2 ::v25(){vfunc_called(this, "_ZN7S3005C23v25Ev");}
S3005C2 ::S3005C2(){ note_ctor("S3005C2", this);} // tgen

static void Test_S3005C2()
{
  extern Class_Descriptor cd_S3005C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,12)];
    init_test(&cd_S3005C2, buf);
    S3005C2 *dp, &lv = *(dp=new (buf) S3005C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,44), "sizeof(S3005C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3005C2)");
    /*is_ambiguous_... S3005C2::S3005C3_nt */ AMB_check_base_class_offset(lv, (S3005C3_nt*), 0, "S3005C2");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*), ABISELECT(16,12), "S3005C2");
    check_base_class_offset(lv, (S3005C4*), ABISELECT(16,12), "S3005C2");
    check_base_class_offset(lv, (S3005C5*), ABISELECT(40,32), "S3005C2");
    test_class_info(&lv, &cd_S3005C2);
    dp->~S3005C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C2(Test_S3005C2, "S3005C2", ABISELECT(56,44));

#else // __cplusplus

extern void _ZN7S3005C2C1Ev();
extern void _ZN7S3005C2D2Ev();
Name_Map name_map_S3005C2[] = {
  NSPAIR(_ZN7S3005C2C1Ev),
  NSPAIR(_ZN7S3005C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
extern Class_Descriptor cd_S3005C5;
extern VTBL_ENTRY _ZTI7S3005C5[];
extern  VTBL_ENTRY _ZTV7S3005C5[];
static Base_Class bases_S3005C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3005C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3005C3_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3005C4,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3005C5,    ABISELECT(40,32), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3005C2[];
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C2D1Ev();
extern void _ZN7S3005C2D0Ev();
extern void _ZN7S3005C23v21Ev();
extern void _ZN7S3005C23v22Ev();
extern void _ZN7S3005C23v23Ev();
extern void _ZN7S3005C23v24Ev();
extern void _ZN7S3005C23v25Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
extern void _ZN7S3005C53v18Ev();
extern void _ZN7S3005C53v19Ev();
extern void _ZN7S3005C53v20Ev();
static  VTBL_ENTRY vtc_S3005C2[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C2[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3005C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v21Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v22Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v23Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v24Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v25Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S3005C2[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
  0,
  0,
  0,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S3005C2[0]),
  (VTBL_ENTRY)&_ZN7S3005C53v18Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v20Ev,
};
extern VTBL_ENTRY _ZTV7S3005C2[];
static  VTT_ENTRY vtt_S3005C2[] = {
  {&(_ZTV7S3005C2[3]),  3,31},
  {&(_ZTV7S3005C2[28]),  28,31},
};
extern VTBL_ENTRY _ZTI7S3005C2[];
extern  VTBL_ENTRY _ZTV7S3005C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3005C2[];
Class_Descriptor cd_S3005C2 = {  "S3005C2", // class name
  bases_S3005C2, 4,
  &(vtc_S3005C2[0]), // expected_vtbl_contents
  &(vtt_S3005C2[0]), // expected_vtt_contents
  ABISELECT(56,44), // object size
  NSPAIRA(_ZTI7S3005C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3005C2),31, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3005C2),2, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3005C6  : S3005C4 {
  int s3005c6f0[2];
  __tsi64 s3005c6f1[8];
  virtual void  v26(); // _ZN7S3005C63v26Ev
  virtual void  v27(); // _ZN7S3005C63v27Ev
  virtual void  v28(); // _ZN7S3005C63v28Ev
  virtual void  v29(); // _ZN7S3005C63v29Ev
  virtual void  v30(); // _ZN7S3005C63v30Ev
  ~S3005C6(); // tgen
  S3005C6(); // tgen
};
//SIG(-1 S3005C6) C1{ BC2{ BC3{ v6 v7 v8 FL} v9 v10 v11 v12 v13 FL} v1 v2 v3 v4 v5 Fi[2] FL[8]}


void  S3005C6 ::v26(){vfunc_called(this, "_ZN7S3005C63v26Ev");}
void  S3005C6 ::v27(){vfunc_called(this, "_ZN7S3005C63v27Ev");}
void  S3005C6 ::v28(){vfunc_called(this, "_ZN7S3005C63v28Ev");}
void  S3005C6 ::v29(){vfunc_called(this, "_ZN7S3005C63v29Ev");}
void  S3005C6 ::v30(){vfunc_called(this, "_ZN7S3005C63v30Ev");}
S3005C6 ::~S3005C6(){ note_dtor("S3005C6", this);} // tgen
S3005C6 ::S3005C6(){ note_ctor("S3005C6", this);} // tgen

static void Test_S3005C6()
{
  extern Class_Descriptor cd_S3005C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,24)];
    init_test(&cd_S3005C6, buf);
    S3005C6 *dp, &lv = *(dp=new (buf) S3005C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,92), "sizeof(S3005C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3005C6)");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*), 0, "S3005C6");
    check_base_class_offset(lv, (S3005C4*), 0, "S3005C6");
    check_field_offset(lv, s3005c6f0, ABISELECT(24,20), "S3005C6.s3005c6f0");
    check_field_offset(lv, s3005c6f1, ABISELECT(32,28), "S3005C6.s3005c6f1");
    test_class_info(&lv, &cd_S3005C6);
    dp->~S3005C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C6(Test_S3005C6, "S3005C6", ABISELECT(96,92));

#else // __cplusplus

extern void _ZN7S3005C6C1Ev();
extern void _ZN7S3005C6D1Ev();
Name_Map name_map_S3005C6[] = {
  NSPAIR(_ZN7S3005C6C1Ev),
  NSPAIR(_ZN7S3005C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
static Base_Class bases_S3005C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3005C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3005C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3005C6[];
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
extern void _ZN7S3005C63v26Ev();
extern void _ZN7S3005C63v27Ev();
extern void _ZN7S3005C63v28Ev();
extern void _ZN7S3005C63v29Ev();
extern void _ZN7S3005C63v30Ev();
static  VTBL_ENTRY vtc_S3005C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C6[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v26Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v27Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v28Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v29Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v30Ev,
};
extern VTBL_ENTRY _ZTI7S3005C6[];
extern  VTBL_ENTRY _ZTV7S3005C6[];
Class_Descriptor cd_S3005C6 = {  "S3005C6", // class name
  bases_S3005C6, 2,
  &(vtc_S3005C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,92), // object size
  NSPAIRA(_ZTI7S3005C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3005C6),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3005C9  {
  long double s3005c9f0[6];
  virtual  ~S3005C9(); // _ZN7S3005C9D1Ev
  virtual void  v31(); // _ZN7S3005C93v31Ev
  virtual void  v32(); // _ZN7S3005C93v32Ev
  virtual void  v33(); // _ZN7S3005C93v33Ev
  virtual void  v34(); // _ZN7S3005C93v34Ev
  virtual void  v35(); // _ZN7S3005C93v35Ev
  virtual void  v36(); // _ZN7S3005C93v36Ev
  S3005C9(); // tgen
};
//SIG(-1 S3005C9) C1{ vd v1 v2 v3 v4 v5 v6 FD[6]}


 S3005C9 ::~S3005C9(){ note_dtor("S3005C9", this);}
void  S3005C9 ::v31(){vfunc_called(this, "_ZN7S3005C93v31Ev");}
void  S3005C9 ::v32(){vfunc_called(this, "_ZN7S3005C93v32Ev");}
void  S3005C9 ::v33(){vfunc_called(this, "_ZN7S3005C93v33Ev");}
void  S3005C9 ::v34(){vfunc_called(this, "_ZN7S3005C93v34Ev");}
void  S3005C9 ::v35(){vfunc_called(this, "_ZN7S3005C93v35Ev");}
void  S3005C9 ::v36(){vfunc_called(this, "_ZN7S3005C93v36Ev");}
S3005C9 ::S3005C9(){ note_ctor("S3005C9", this);} // tgen

static void Test_S3005C9()
{
  extern Class_Descriptor cd_S3005C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,20)];
    init_test(&cd_S3005C9, buf);
    S3005C9 *dp, &lv = *(dp=new (buf) S3005C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,76), "sizeof(S3005C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3005C9)");
    check_field_offset(lv, s3005c9f0, ABISELECT(16,4), "S3005C9.s3005c9f0");
    test_class_info(&lv, &cd_S3005C9);
    dp->~S3005C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C9(Test_S3005C9, "S3005C9", ABISELECT(112,76));

#else // __cplusplus

extern void _ZN7S3005C9C1Ev();
extern void _ZN7S3005C9D1Ev();
Name_Map name_map_S3005C9[] = {
  NSPAIR(_ZN7S3005C9C1Ev),
  NSPAIR(_ZN7S3005C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3005C9[];
extern void _ZN7S3005C9D1Ev();
extern void _ZN7S3005C9D0Ev();
extern void _ZN7S3005C93v31Ev();
extern void _ZN7S3005C93v32Ev();
extern void _ZN7S3005C93v33Ev();
extern void _ZN7S3005C93v34Ev();
extern void _ZN7S3005C93v35Ev();
extern void _ZN7S3005C93v36Ev();
static  VTBL_ENTRY vtc_S3005C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C9[0]),
  (VTBL_ENTRY)&_ZN7S3005C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3005C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v31Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v32Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v33Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v34Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v35Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v36Ev,
};
extern VTBL_ENTRY _ZTI7S3005C9[];
extern  VTBL_ENTRY _ZTV7S3005C9[];
Class_Descriptor cd_S3005C9 = {  "S3005C9", // class name
  0,0,//no base classes
  &(vtc_S3005C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,76), // object size
  NSPAIRA(_ZTI7S3005C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3005C9),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3005C10  {
  long double s3005c10f0[5];
  virtual void  v37(); // _ZN8S3005C103v37Ev
  virtual void  v38(); // _ZN8S3005C103v38Ev
  virtual void  v39(); // _ZN8S3005C103v39Ev
  virtual void  v40(); // _ZN8S3005C103v40Ev
  virtual void  v41(); // _ZN8S3005C103v41Ev
  ~S3005C10(); // tgen
  S3005C10(); // tgen
};
//SIG(-1 S3005C10) C1{ v1 v2 v3 v4 v5 FD[5]}


void  S3005C10 ::v37(){vfunc_called(this, "_ZN8S3005C103v37Ev");}
void  S3005C10 ::v38(){vfunc_called(this, "_ZN8S3005C103v38Ev");}
void  S3005C10 ::v39(){vfunc_called(this, "_ZN8S3005C103v39Ev");}
void  S3005C10 ::v40(){vfunc_called(this, "_ZN8S3005C103v40Ev");}
void  S3005C10 ::v41(){vfunc_called(this, "_ZN8S3005C103v41Ev");}
S3005C10 ::~S3005C10(){ note_dtor("S3005C10", this);} // tgen
S3005C10 ::S3005C10(){ note_ctor("S3005C10", this);} // tgen

static void Test_S3005C10()
{
  extern Class_Descriptor cd_S3005C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,17)];
    init_test(&cd_S3005C10, buf);
    S3005C10 *dp, &lv = *(dp=new (buf) S3005C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S3005C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3005C10)");
    check_field_offset(lv, s3005c10f0, ABISELECT(16,4), "S3005C10.s3005c10f0");
    test_class_info(&lv, &cd_S3005C10);
    dp->~S3005C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C10(Test_S3005C10, "S3005C10", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN8S3005C10C1Ev();
extern void _ZN8S3005C10D1Ev();
Name_Map name_map_S3005C10[] = {
  NSPAIR(_ZN8S3005C10C1Ev),
  NSPAIR(_ZN8S3005C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S3005C10[];
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
static  VTBL_ENTRY vtc_S3005C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3005C10[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
};
extern VTBL_ENTRY _ZTI8S3005C10[];
extern  VTBL_ENTRY _ZTV8S3005C10[];
Class_Descriptor cd_S3005C10 = {  "S3005C10", // class name
  0,0,//no base classes
  &(vtc_S3005C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI8S3005C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S3005C10),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3005C8  : virtual S3005C9 , S3005C10 , S3005C6 {
  short s3005c8f0[6];
  int s3005c8f1;
  virtual  ~S3005C8(); // _ZN7S3005C8D2Ev
  virtual void  v42(); // _ZN7S3005C83v42Ev
  virtual void  v43(); // _ZN7S3005C83v43Ev
  virtual void  v44(); // _ZN7S3005C83v44Ev
  virtual void  v45(); // _ZN7S3005C83v45Ev
  virtual void  v46(); // _ZN7S3005C83v46Ev
  virtual void  v47(); // _ZN7S3005C83v47Ev
  virtual void  v48(); // _ZN7S3005C83v48Ev
  virtual void  v49(); // _ZN7S3005C83v49Ev
  S3005C8(); // tgen
};
//SIG(-1 S3005C8) C1{ VBC2{ vd v9 v10 v11 v12 v13 v14 FD[6]} BC3{ v15 v16 v17 v18 v19 FD[5]} BC4{ BC5{ BC6{ v20 v21 v22 FL} v23 v24 v25 v26 v27 FL} v28 v29 v30 v31 v32 Fi[2] FL[8]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fs[6] Fi}


 S3005C8 ::~S3005C8(){ note_dtor("S3005C8", this);}
void  S3005C8 ::v42(){vfunc_called(this, "_ZN7S3005C83v42Ev");}
void  S3005C8 ::v43(){vfunc_called(this, "_ZN7S3005C83v43Ev");}
void  S3005C8 ::v44(){vfunc_called(this, "_ZN7S3005C83v44Ev");}
void  S3005C8 ::v45(){vfunc_called(this, "_ZN7S3005C83v45Ev");}
void  S3005C8 ::v46(){vfunc_called(this, "_ZN7S3005C83v46Ev");}
void  S3005C8 ::v47(){vfunc_called(this, "_ZN7S3005C83v47Ev");}
void  S3005C8 ::v48(){vfunc_called(this, "_ZN7S3005C83v48Ev");}
void  S3005C8 ::v49(){vfunc_called(this, "_ZN7S3005C83v49Ev");}
S3005C8 ::S3005C8(){ note_ctor("S3005C8", this);} // tgen

static void Test_S3005C8()
{
  extern Class_Descriptor cd_S3005C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,63)];
    init_test(&cd_S3005C8, buf);
    S3005C8 *dp, &lv = *(dp=new (buf) S3005C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,248), "sizeof(S3005C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3005C8)");
    check_base_class_offset(lv, (S3005C9*), ABISELECT(208,172), "S3005C8");
    check_base_class_offset(lv, (S3005C10*), 0, "S3005C8");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*)(S3005C6*), ABISELECT(96,64), "S3005C8");
    check_base_class_offset(lv, (S3005C4*)(S3005C6*), ABISELECT(96,64), "S3005C8");
    check_base_class_offset(lv, (S3005C6*), ABISELECT(96,64), "S3005C8");
    check_field_offset(lv, s3005c8f0, ABISELECT(192,156), "S3005C8.s3005c8f0");
    check_field_offset(lv, s3005c8f1, ABISELECT(204,168), "S3005C8.s3005c8f1");
    test_class_info(&lv, &cd_S3005C8);
    dp->~S3005C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C8(Test_S3005C8, "S3005C8", ABISELECT(320,248));

#else // __cplusplus

extern void _ZN7S3005C8C1Ev();
extern void _ZN7S3005C8D2Ev();
Name_Map name_map_S3005C8[] = {
  NSPAIR(_ZN7S3005C8C1Ev),
  NSPAIR(_ZN7S3005C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3005C9;
extern VTBL_ENTRY _ZTI7S3005C9[];
extern  VTBL_ENTRY _ZTV7S3005C9[];
extern Class_Descriptor cd_S3005C10;
extern VTBL_ENTRY _ZTI8S3005C10[];
extern  VTBL_ENTRY _ZTV8S3005C10[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
extern Class_Descriptor cd_S3005C6;
extern VTBL_ENTRY _ZTI7S3005C6[];
extern  VTBL_ENTRY _ZTV7S3005C6[];
static Base_Class bases_S3005C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3005C9,    ABISELECT(208,172), //bcp->offset
    33, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3005C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3005C3_nt,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3005C4,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3005C6,    ABISELECT(96,64), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3005C8[];
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
extern void _ZN7S3005C8D1Ev();
extern void _ZN7S3005C8D0Ev();
extern void _ZN7S3005C83v42Ev();
extern void _ZN7S3005C83v43Ev();
extern void _ZN7S3005C83v44Ev();
extern void _ZN7S3005C83v45Ev();
extern void _ZN7S3005C83v46Ev();
extern void _ZN7S3005C83v47Ev();
extern void _ZN7S3005C83v48Ev();
extern void _ZN7S3005C83v49Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
extern void _ZN7S3005C63v26Ev();
extern void _ZN7S3005C63v27Ev();
extern void _ZN7S3005C63v28Ev();
extern void _ZN7S3005C63v29Ev();
extern void _ZN7S3005C63v30Ev();
extern void ABISELECT(_ZTv0_n24_N7S3005C8D1Ev,_ZTv0_n12_N7S3005C8D1Ev)();
extern void ABISELECT(_ZThn208_N7S3005C8D1Ev,_ZThn172_N7S3005C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3005C8D0Ev,_ZTv0_n12_N7S3005C8D0Ev)();
extern void ABISELECT(_ZThn208_N7S3005C8D0Ev,_ZThn172_N7S3005C8D0Ev)() __attribute__((weak));
extern void _ZN7S3005C93v31Ev();
extern void _ZN7S3005C93v32Ev();
extern void _ZN7S3005C93v33Ev();
extern void _ZN7S3005C93v34Ev();
extern void _ZN7S3005C93v35Ev();
extern void _ZN7S3005C93v36Ev();
static  VTBL_ENTRY vtc_S3005C8[] = {
  ABISELECT(208,172),
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C8[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
  (VTBL_ENTRY)&_ZN7S3005C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3005C8D0Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v42Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v43Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v44Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v45Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v46Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v47Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v48Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v49Ev,
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI7S3005C8[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v26Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v27Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v28Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v29Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v30Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-172),
  ABISELECT(-208,-172),
  (VTBL_ENTRY)&(_ZTI7S3005C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C8D1Ev,_ZTv0_n12_N7S3005C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C8D0Ev,_ZTv0_n12_N7S3005C8D0Ev),
  (VTBL_ENTRY)&_ZN7S3005C93v31Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v32Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v33Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v34Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v35Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v36Ev,
};
extern VTBL_ENTRY _ZTV7S3005C8[];
static  VTT_ENTRY vtt_S3005C8[] = {
  {&(_ZTV7S3005C8[3]),  3,50},
  {&(_ZTV7S3005C8[42]),  42,50},
};
extern VTBL_ENTRY _ZTI7S3005C8[];
extern  VTBL_ENTRY _ZTV7S3005C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3005C8[];
static VTBL_ENTRY alt_thunk_names57[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C8D0Ev,_ZTv0_n12_N7S3005C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3005C8D0Ev,_ZThn172_N7S3005C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C8D1Ev,_ZTv0_n12_N7S3005C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3005C8D1Ev,_ZThn172_N7S3005C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3005C8 = {  "S3005C8", // class name
  bases_S3005C8, 5,
  &(vtc_S3005C8[0]), // expected_vtbl_contents
  &(vtt_S3005C8[0]), // expected_vtt_contents
  ABISELECT(320,248), // object size
  NSPAIRA(_ZTI7S3005C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3005C8),50, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3005C8),2, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names57,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3005C7  : S3005C8 {
  virtual  ~S3005C7(); // _ZN7S3005C7D2Ev
  virtual void  v50(); // _ZN7S3005C73v50Ev
  S3005C7(); // tgen
};
//SIG(-1 S3005C7) C1{ BC2{ VBC3{ vd v2 v3 v4 v5 v6 v7 FD[6]} BC4{ v8 v9 v10 v11 v12 FD[5]} BC5{ BC6{ BC7{ v13 v14 v15 FL} v16 v17 v18 v19 v20 FL} v21 v22 v23 v24 v25 Fi[2] FL[8]} vd v26 v27 v28 v29 v30 v31 v32 v33 Fs[6] Fi} vd v1}


 S3005C7 ::~S3005C7(){ note_dtor("S3005C7", this);}
void  S3005C7 ::v50(){vfunc_called(this, "_ZN7S3005C73v50Ev");}
S3005C7 ::S3005C7(){ note_ctor("S3005C7", this);} // tgen

static void Test_S3005C7()
{
  extern Class_Descriptor cd_S3005C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,63)];
    init_test(&cd_S3005C7, buf);
    S3005C7 *dp, &lv = *(dp=new (buf) S3005C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,248), "sizeof(S3005C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3005C7)");
    check_base_class_offset(lv, (S3005C9*)(S3005C8*), ABISELECT(208,172), "S3005C7");
    check_base_class_offset(lv, (S3005C10*)(S3005C8*), 0, "S3005C7");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*)(S3005C6*)(S3005C8*), ABISELECT(96,64), "S3005C7");
    check_base_class_offset(lv, (S3005C4*)(S3005C6*)(S3005C8*), ABISELECT(96,64), "S3005C7");
    check_base_class_offset(lv, (S3005C6*)(S3005C8*), ABISELECT(96,64), "S3005C7");
    check_base_class_offset(lv, (S3005C8*), 0, "S3005C7");
    test_class_info(&lv, &cd_S3005C7);
    dp->~S3005C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C7(Test_S3005C7, "S3005C7", ABISELECT(320,248));

#else // __cplusplus

extern void _ZN7S3005C7C1Ev();
extern void _ZN7S3005C7D2Ev();
Name_Map name_map_S3005C7[] = {
  NSPAIR(_ZN7S3005C7C1Ev),
  NSPAIR(_ZN7S3005C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3005C9;
extern VTBL_ENTRY _ZTI7S3005C9[];
extern  VTBL_ENTRY _ZTV7S3005C9[];
extern Class_Descriptor cd_S3005C10;
extern VTBL_ENTRY _ZTI8S3005C10[];
extern  VTBL_ENTRY _ZTV8S3005C10[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
extern Class_Descriptor cd_S3005C6;
extern VTBL_ENTRY _ZTI7S3005C6[];
extern  VTBL_ENTRY _ZTV7S3005C6[];
extern Class_Descriptor cd_S3005C8;
extern VTBL_ENTRY _ZTI7S3005C8[];
extern  VTBL_ENTRY _ZTV7S3005C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3005C8[];
static Base_Class bases_S3005C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3005C9,    ABISELECT(208,172), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3005C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3005C3_nt,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3005C4,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3005C6,    ABISELECT(96,64), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3005C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3005C7[];
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
extern void _ZN7S3005C7D1Ev();
extern void _ZN7S3005C7D0Ev();
extern void _ZN7S3005C83v42Ev();
extern void _ZN7S3005C83v43Ev();
extern void _ZN7S3005C83v44Ev();
extern void _ZN7S3005C83v45Ev();
extern void _ZN7S3005C83v46Ev();
extern void _ZN7S3005C83v47Ev();
extern void _ZN7S3005C83v48Ev();
extern void _ZN7S3005C83v49Ev();
extern void _ZN7S3005C73v50Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
extern void _ZN7S3005C63v26Ev();
extern void _ZN7S3005C63v27Ev();
extern void _ZN7S3005C63v28Ev();
extern void _ZN7S3005C63v29Ev();
extern void _ZN7S3005C63v30Ev();
extern void ABISELECT(_ZTv0_n24_N7S3005C7D1Ev,_ZTv0_n12_N7S3005C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S3005C7D1Ev,_ZThn172_N7S3005C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3005C7D0Ev,_ZTv0_n12_N7S3005C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S3005C7D0Ev,_ZThn172_N7S3005C7D0Ev)() __attribute__((weak));
extern void _ZN7S3005C93v31Ev();
extern void _ZN7S3005C93v32Ev();
extern void _ZN7S3005C93v33Ev();
extern void _ZN7S3005C93v34Ev();
extern void _ZN7S3005C93v35Ev();
extern void _ZN7S3005C93v36Ev();
static  VTBL_ENTRY vtc_S3005C7[] = {
  ABISELECT(208,172),
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C7[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
  (VTBL_ENTRY)&_ZN7S3005C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3005C7D0Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v42Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v43Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v44Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v45Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v46Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v47Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v48Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v49Ev,
  (VTBL_ENTRY)&_ZN7S3005C73v50Ev,
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI7S3005C7[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v26Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v27Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v28Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v29Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v30Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-172),
  ABISELECT(-208,-172),
  (VTBL_ENTRY)&(_ZTI7S3005C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C7D1Ev,_ZTv0_n12_N7S3005C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C7D0Ev,_ZTv0_n12_N7S3005C7D0Ev),
  (VTBL_ENTRY)&_ZN7S3005C93v31Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v32Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v33Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v34Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v35Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v36Ev,
};
extern VTBL_ENTRY _ZTV7S3005C7[];
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
extern void _ZN7S3005C8D1Ev();
extern void _ZN7S3005C8D0Ev();
extern void _ZN7S3005C83v42Ev();
extern void _ZN7S3005C83v43Ev();
extern void _ZN7S3005C83v44Ev();
extern void _ZN7S3005C83v45Ev();
extern void _ZN7S3005C83v46Ev();
extern void _ZN7S3005C83v47Ev();
extern void _ZN7S3005C83v48Ev();
extern void _ZN7S3005C83v49Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C8__7S3005C7[] = {
  ABISELECT(208,172),
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C8[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
  (VTBL_ENTRY)&_ZN7S3005C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3005C8D0Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v42Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v43Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v44Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v45Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v46Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v47Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v48Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v49Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3005C8D1Ev,_ZTv0_n12_N7S3005C8D1Ev)();
extern void ABISELECT(_ZThn208_N7S3005C8D1Ev,_ZThn172_N7S3005C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3005C8D0Ev,_ZTv0_n12_N7S3005C8D0Ev)();
extern void ABISELECT(_ZThn208_N7S3005C8D0Ev,_ZThn172_N7S3005C8D0Ev)() __attribute__((weak));
extern void _ZN7S3005C93v31Ev();
extern void _ZN7S3005C93v32Ev();
extern void _ZN7S3005C93v33Ev();
extern void _ZN7S3005C93v34Ev();
extern void _ZN7S3005C93v35Ev();
extern void _ZN7S3005C93v36Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C9__7S3005C8__7S3005C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-172),
  ABISELECT(-208,-172),
  (VTBL_ENTRY)&(_ZTI7S3005C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C8D1Ev,_ZTv0_n12_N7S3005C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C8D0Ev,_ZTv0_n12_N7S3005C8D0Ev),
  (VTBL_ENTRY)&_ZN7S3005C93v31Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v32Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v33Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v34Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v35Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v36Ev,
};
static  VTT_ENTRY vtt_S3005C7[] = {
  {&(_ZTV7S3005C7[3]),  3,51},
  {&(_tg__ZTV7S3005C8__7S3005C7[3]),  3,18},
  {&(_tg__ZTV7S3005C9__7S3005C8__7S3005C7[9]),  9,17},
  {&(_ZTV7S3005C7[43]),  43,51},
};
extern VTBL_ENTRY _ZTI7S3005C7[];
extern  VTBL_ENTRY _ZTV7S3005C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3005C7[];
static VTBL_ENTRY alt_thunk_names58[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C8D0Ev,_ZTv0_n12_N7S3005C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3005C8D0Ev,_ZThn172_N7S3005C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C8D1Ev,_ZTv0_n12_N7S3005C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3005C8D1Ev,_ZThn172_N7S3005C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C7D0Ev,_ZTv0_n12_N7S3005C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3005C7D0Ev,_ZThn172_N7S3005C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C7D1Ev,_ZTv0_n12_N7S3005C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3005C7D1Ev,_ZThn172_N7S3005C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3005C7 = {  "S3005C7", // class name
  bases_S3005C7, 6,
  &(vtc_S3005C7[0]), // expected_vtbl_contents
  &(vtt_S3005C7[0]), // expected_vtt_contents
  ABISELECT(320,248), // object size
  NSPAIRA(_ZTI7S3005C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3005C7),51, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3005C7),4, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names58,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3005C13  : S3005C3_nt {
  virtual void  v51(); // _ZN8S3005C133v51Ev
  virtual void  v52(); // _ZN8S3005C133v52Ev
  virtual void  v53(); // _ZN8S3005C133v53Ev
  virtual void  v54(); // _ZN8S3005C133v54Ev
  virtual void  v55(); // _ZN8S3005C133v55Ev
  virtual void  v56(); // _ZN8S3005C133v56Ev
  ~S3005C13(); // tgen
  S3005C13(); // tgen
};
//SIG(-1 S3005C13) C1{ BC2{ v7 v8 v9 FL} v1 v2 v3 v4 v5 v6}


void  S3005C13 ::v51(){vfunc_called(this, "_ZN8S3005C133v51Ev");}
void  S3005C13 ::v52(){vfunc_called(this, "_ZN8S3005C133v52Ev");}
void  S3005C13 ::v53(){vfunc_called(this, "_ZN8S3005C133v53Ev");}
void  S3005C13 ::v54(){vfunc_called(this, "_ZN8S3005C133v54Ev");}
void  S3005C13 ::v55(){vfunc_called(this, "_ZN8S3005C133v55Ev");}
void  S3005C13 ::v56(){vfunc_called(this, "_ZN8S3005C133v56Ev");}
S3005C13 ::~S3005C13(){ note_dtor("S3005C13", this);} // tgen
S3005C13 ::S3005C13(){ note_ctor("S3005C13", this);} // tgen

static void Test_S3005C13()
{
  extern Class_Descriptor cd_S3005C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3005C13, buf);
    S3005C13 *dp, &lv = *(dp=new (buf) S3005C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3005C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3005C13)");
    check_base_class_offset(lv, (S3005C3_nt*), 0, "S3005C13");
    test_class_info(&lv, &cd_S3005C13);
    dp->~S3005C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C13(Test_S3005C13, "S3005C13", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S3005C13C1Ev();
extern void _ZN8S3005C13D1Ev();
Name_Map name_map_S3005C13[] = {
  NSPAIR(_ZN8S3005C13C1Ev),
  NSPAIR(_ZN8S3005C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
static Base_Class bases_S3005C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3005C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3005C13[];
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C133v51Ev();
extern void _ZN8S3005C133v52Ev();
extern void _ZN8S3005C133v53Ev();
extern void _ZN8S3005C133v54Ev();
extern void _ZN8S3005C133v55Ev();
extern void _ZN8S3005C133v56Ev();
static  VTBL_ENTRY vtc_S3005C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3005C13[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v51Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v52Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v53Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v54Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v55Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v56Ev,
};
extern VTBL_ENTRY _ZTI8S3005C13[];
extern  VTBL_ENTRY _ZTV8S3005C13[];
Class_Descriptor cd_S3005C13 = {  "S3005C13", // class name
  bases_S3005C13, 1,
  &(vtc_S3005C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S3005C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S3005C13),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3005C12  : S3005C3_nt , S3005C10 , virtual S3005C13 , virtual S3005C4 {
  virtual void  v57(); // _ZN8S3005C123v57Ev
  virtual void  v58(); // _ZN8S3005C123v58Ev
  ~S3005C12(); // tgen
  S3005C12(); // tgen
};
//SIG(-1 S3005C12) C1{ BC2{ v3 v4 v5 FL} BC3{ v6 v7 v8 v9 v10 FD[5]} VBC4{ BC2 v11 v12 v13 v14 v15 v16} VBC5{ BC2 v17 v18 v19 v20 v21 FL} v1 v2}


void  S3005C12 ::v57(){vfunc_called(this, "_ZN8S3005C123v57Ev");}
void  S3005C12 ::v58(){vfunc_called(this, "_ZN8S3005C123v58Ev");}
S3005C12 ::~S3005C12(){ note_dtor("S3005C12", this);} // tgen
S3005C12 ::S3005C12(){ note_ctor("S3005C12", this);} // tgen

static void Test_S3005C12()
{
  extern Class_Descriptor cd_S3005C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,28)];
    init_test(&cd_S3005C12, buf);
    S3005C12 *dp, &lv = *(dp=new (buf) S3005C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,108), "sizeof(S3005C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3005C12)");
    /*is_ambiguous_... S3005C12::S3005C3_nt */ AMB_check_base_class_offset(lv, (S3005C3_nt*), 0, "S3005C12");
    check_base_class_offset(lv, (S3005C10*), ABISELECT(16,12), "S3005C12");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C13*), ABISELECT(112,76), "S3005C12");
    check_base_class_offset(lv, (S3005C13*), ABISELECT(112,76), "S3005C12");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*), ABISELECT(128,88), "S3005C12");
    check_base_class_offset(lv, (S3005C4*), ABISELECT(128,88), "S3005C12");
    test_class_info(&lv, &cd_S3005C12);
    dp->~S3005C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C12(Test_S3005C12, "S3005C12", ABISELECT(160,108));

#else // __cplusplus

extern void _ZN8S3005C12C1Ev();
extern void _ZN8S3005C12D1Ev();
Name_Map name_map_S3005C12[] = {
  NSPAIR(_ZN8S3005C12C1Ev),
  NSPAIR(_ZN8S3005C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C10;
extern VTBL_ENTRY _ZTI8S3005C10[];
extern  VTBL_ENTRY _ZTV8S3005C10[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C13;
extern VTBL_ENTRY _ZTI8S3005C13[];
extern  VTBL_ENTRY _ZTV8S3005C13[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
static Base_Class bases_S3005C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3005C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3005C10,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3005C3_nt,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3005C13,    ABISELECT(112,76), //bcp->offset
    16, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3005C3_nt,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3005C4,    ABISELECT(128,88), //bcp->offset
    36, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3005C12[];
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C123v57Ev();
extern void _ZN8S3005C123v58Ev();
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C133v51Ev();
extern void _ZN8S3005C133v52Ev();
extern void _ZN8S3005C133v53Ev();
extern void _ZN8S3005C133v54Ev();
extern void _ZN8S3005C133v55Ev();
extern void _ZN8S3005C133v56Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
static  VTBL_ENTRY vtc_S3005C12[] = {
  ABISELECT(128,88),
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v57Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v58Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v51Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v52Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v53Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v54Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v55Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v56Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
};
extern VTBL_ENTRY _ZTV8S3005C12[];
static  VTT_ENTRY vtt_S3005C12[] = {
  {&(_ZTV8S3005C12[4]),  4,54},
  {&(_ZTV8S3005C12[27]),  27,54},
  {&(_ZTV8S3005C12[46]),  46,54},
};
extern VTBL_ENTRY _ZTI8S3005C12[];
extern  VTBL_ENTRY _ZTV8S3005C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3005C12[];
Class_Descriptor cd_S3005C12 = {  "S3005C12", // class name
  bases_S3005C12, 6,
  &(vtc_S3005C12[0]), // expected_vtbl_contents
  &(vtt_S3005C12[0]), // expected_vtt_contents
  ABISELECT(160,108), // object size
  NSPAIRA(_ZTI8S3005C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S3005C12),54, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3005C12),3, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3005C11  : virtual S3005C12 , virtual S3005C9 {
  short s3005c11f0[2];
  long double s3005c11f1;
  ::S3005C13 s3005c11f2;
  virtual  ~S3005C11(); // _ZN8S3005C11D2Ev
  virtual void  v59(); // _ZN8S3005C113v59Ev
  virtual void  v60(); // _ZN8S3005C113v60Ev
  virtual void  v61(); // _ZN8S3005C113v61Ev
  virtual void  v62(); // _ZN8S3005C113v62Ev
  virtual void  v63(); // _ZN8S3005C113v63Ev
  virtual void  v64(); // _ZN8S3005C113v64Ev
  S3005C11(); // tgen
};
//SIG(-1 S3005C11) C1{ VBC2{ BC3{ v7 v8 v9 FL} BC4{ v10 v11 v12 v13 v14 FD[5]} VBC5{ BC3 v15 v16 v17 v18 v19 v20} VBC6{ BC3 v21 v22 v23 v24 v25 FL} v26 v27} VBC7{ vd v28 v29 v30 v31 v32 v33 FD[6]} vd v1 v2 v3 v4 v5 v6 Fs[2] FD FC5}


 S3005C11 ::~S3005C11(){ note_dtor("S3005C11", this);}
void  S3005C11 ::v59(){vfunc_called(this, "_ZN8S3005C113v59Ev");}
void  S3005C11 ::v60(){vfunc_called(this, "_ZN8S3005C113v60Ev");}
void  S3005C11 ::v61(){vfunc_called(this, "_ZN8S3005C113v61Ev");}
void  S3005C11 ::v62(){vfunc_called(this, "_ZN8S3005C113v62Ev");}
void  S3005C11 ::v63(){vfunc_called(this, "_ZN8S3005C113v63Ev");}
void  S3005C11 ::v64(){vfunc_called(this, "_ZN8S3005C113v64Ev");}
S3005C11 ::S3005C11(){ note_ctor("S3005C11", this);} // tgen

static void Test_S3005C11()
{
  extern Class_Descriptor cd_S3005C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,55)];
    init_test(&cd_S3005C11, buf);
    S3005C11 *dp, &lv = *(dp=new (buf) S3005C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,216), "sizeof(S3005C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3005C11)");
    /*is_ambiguous_... S3005C12::S3005C3_nt */ AMB_check_base_class_offset(lv, (S3005C3_nt*)(S3005C12*), ABISELECT(48,32), "S3005C11");
    check_base_class_offset(lv, (S3005C10*)(S3005C12*), ABISELECT(64,44), "S3005C11");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C13*), ABISELECT(160,108), "S3005C11");
    check_base_class_offset(lv, (S3005C13*)(S3005C12*), ABISELECT(160,108), "S3005C11");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*), ABISELECT(176,120), "S3005C11");
    check_base_class_offset(lv, (S3005C4*)(S3005C12*), ABISELECT(176,120), "S3005C11");
    check_base_class_offset(lv, (S3005C12*), ABISELECT(48,32), "S3005C11");
    check_base_class_offset(lv, (S3005C9*), ABISELECT(208,140), "S3005C11");
    check_field_offset(lv, s3005c11f0, ABISELECT(8,4), "S3005C11.s3005c11f0");
    check_field_offset(lv, s3005c11f1, ABISELECT(16,8), "S3005C11.s3005c11f1");
    check_field_offset(lv, s3005c11f2, ABISELECT(32,20), "S3005C11.s3005c11f2");
    test_class_info(&lv, &cd_S3005C11);
    dp->~S3005C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C11(Test_S3005C11, "S3005C11", ABISELECT(320,216));

#else // __cplusplus

extern void _ZN8S3005C11C1Ev();
extern void _ZN8S3005C11D2Ev();
Name_Map name_map_S3005C11[] = {
  NSPAIR(_ZN8S3005C11C1Ev),
  NSPAIR(_ZN8S3005C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C10;
extern VTBL_ENTRY _ZTI8S3005C10[];
extern  VTBL_ENTRY _ZTV8S3005C10[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C13;
extern VTBL_ENTRY _ZTI8S3005C13[];
extern  VTBL_ENTRY _ZTV8S3005C13[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
extern Class_Descriptor cd_S3005C12;
extern VTBL_ENTRY _ZTI8S3005C12[];
extern  VTBL_ENTRY _ZTV8S3005C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3005C12[];
extern Class_Descriptor cd_S3005C9;
extern VTBL_ENTRY _ZTI7S3005C9[];
extern  VTBL_ENTRY _ZTV7S3005C9[];
static Base_Class bases_S3005C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3005C3_nt,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3005C10,    ABISELECT(64,44), //bcp->offset
    33, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3005C3_nt,    ABISELECT(160,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3005C13,    ABISELECT(160,108), //bcp->offset
    40, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3005C3_nt,    ABISELECT(176,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3005C4,    ABISELECT(176,120), //bcp->offset
    60, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3005C12,    ABISELECT(48,32), //bcp->offset
    14, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3005C9,    ABISELECT(208,140), //bcp->offset
    78, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3005C11[];
extern void _ZN8S3005C11D1Ev();
extern void _ZN8S3005C11D0Ev();
extern void _ZN8S3005C113v59Ev();
extern void _ZN8S3005C113v60Ev();
extern void _ZN8S3005C113v61Ev();
extern void _ZN8S3005C113v62Ev();
extern void _ZN8S3005C113v63Ev();
extern void _ZN8S3005C113v64Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C123v57Ev();
extern void _ZN8S3005C123v58Ev();
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C133v51Ev();
extern void _ZN8S3005C133v52Ev();
extern void _ZN8S3005C133v53Ev();
extern void _ZN8S3005C133v54Ev();
extern void _ZN8S3005C133v55Ev();
extern void _ZN8S3005C133v56Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
extern void ABISELECT(_ZTv0_n24_N8S3005C11D1Ev,_ZTv0_n12_N8S3005C11D1Ev)();
extern void ABISELECT(_ZThn208_N8S3005C11D1Ev,_ZThn140_N8S3005C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3005C11D0Ev,_ZTv0_n12_N8S3005C11D0Ev)();
extern void ABISELECT(_ZThn208_N8S3005C11D0Ev,_ZThn140_N8S3005C11D0Ev)() __attribute__((weak));
extern void _ZN7S3005C93v31Ev();
extern void _ZN7S3005C93v32Ev();
extern void _ZN7S3005C93v33Ev();
extern void _ZN7S3005C93v34Ev();
extern void _ZN7S3005C93v35Ev();
extern void _ZN7S3005C93v36Ev();
static  VTBL_ENTRY vtc_S3005C11[] = {
  ABISELECT(208,140),
  ABISELECT(176,120),
  ABISELECT(160,108),
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN8S3005C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3005C11D0Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v59Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v60Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v61Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v62Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v63Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v64Ev,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,88),
  ABISELECT(112,76),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v57Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v58Ev,
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v51Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v52Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v53Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v54Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v55Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v56Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-140),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3005C11D1Ev,_ZTv0_n12_N8S3005C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3005C11D0Ev,_ZTv0_n12_N8S3005C11D0Ev),
  (VTBL_ENTRY)&_ZN7S3005C93v31Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v32Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v33Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v34Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v35Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v36Ev,
};
extern VTBL_ENTRY _ZTV8S3005C11[];
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C123v57Ev();
extern void _ZN8S3005C123v58Ev();
static  VTBL_ENTRY _tg__ZTV8S3005C12__8S3005C11[] = {
  ABISELECT(128,88),
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v57Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v58Ev,
};
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C133v51Ev();
extern void _ZN8S3005C133v52Ev();
extern void _ZN8S3005C133v53Ev();
extern void _ZN8S3005C133v54Ev();
extern void _ZN8S3005C133v55Ev();
extern void _ZN8S3005C133v56Ev();
static  VTBL_ENTRY _tg__ZTV8S3005C13__8S3005C12__8S3005C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v51Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v52Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v53Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v54Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v55Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v56Ev,
};
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C4__8S3005C12__8S3005C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
};
static  VTT_ENTRY vtt_S3005C11[] = {
  {&(_ZTV8S3005C11[6]),  6,95},
  {&(_ZTV8S3005C11[28]),  28,95},
  {&(_ZTV8S3005C11[35]),  35,95},
  {&(_ZTV8S3005C11[51]),  51,95},
  {&(_ZTV8S3005C11[70]),  70,95},
  {&(_ZTV8S3005C11[87]),  87,95},
  {&(_tg__ZTV8S3005C12__8S3005C11[4]),  4,9},
  {&(_tg__ZTV8S3005C13__8S3005C12__8S3005C11[11]),  11,20},
  {&(_tg__ZTV7S3005C4__8S3005C12__8S3005C11[10]),  10,18},
};
extern VTBL_ENTRY _ZTI8S3005C11[];
extern  VTBL_ENTRY _ZTV8S3005C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3005C11[];
static VTBL_ENTRY alt_thunk_names59[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3005C11D0Ev,_ZTv0_n12_N8S3005C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3005C11D0Ev,_ZThn140_N8S3005C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3005C11D1Ev,_ZTv0_n12_N8S3005C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3005C11D1Ev,_ZThn140_N8S3005C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3005C11 = {  "S3005C11", // class name
  bases_S3005C11, 8,
  &(vtc_S3005C11[0]), // expected_vtbl_contents
  &(vtt_S3005C11[0]), // expected_vtt_contents
  ABISELECT(320,216), // object size
  NSPAIRA(_ZTI8S3005C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3005C11),95, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3005C11),9, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names59,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3005C1  : S3005C2 , S3005C6 , S3005C7 , S3005C11 , S3005C5 {
  long double s3005c1f0;
  virtual void  v1(); // _ZN7S3005C12v1Ev
  virtual void  v2(); // _ZN7S3005C12v2Ev
  virtual void  v3(); // _ZN7S3005C12v3Ev
  virtual void  v4(); // _ZN7S3005C12v4Ev
  virtual void  v5(); // _ZN7S3005C12v5Ev
  virtual void  v6(); // _ZN7S3005C12v6Ev
  virtual void  v7(); // _ZN7S3005C12v7Ev
  virtual void  v8(); // _ZN7S3005C12v8Ev
  virtual void  v9(); // _ZN7S3005C12v9Ev
  ~S3005C1(); // tgen
  S3005C1(); // tgen
};
//SIG(1 S3005C1) C1{ BC2{ BC3{ v10 v11 v12 FL} BC4{ BC3 v13 v14 v15 v16 v17 FL} VBC5{ v18 v19 v20 Fs Fi} vd v21 v22 v23 v24 v25} BC6{ BC4 v26 v27 v28 v29 v30 Fi[2] FL[8]} BC7{ BC8{ VBC9{ vd v31 v32 v33 v34 v35 v36 FD[6]} BC10{ v37 v38 v39 v40 v41 FD[5]} BC6 vd v42 v43 v44 v45 v46 v47 v48 v49 Fs[6] Fi} vd v50} BC11{ VBC12{ BC3 BC10 VBC13{ BC3 v51 v52 v53 v54 v55 v56} VBC4 v57 v58} VBC9 vd v59 v60 v61 v62 v63 v64 Fs[2] FD FC13} BC5 v1 v2 v3 v4 v5 v6 v7 v8 v9 FD}


void  S3005C1 ::v1(){vfunc_called(this, "_ZN7S3005C12v1Ev");}
void  S3005C1 ::v2(){vfunc_called(this, "_ZN7S3005C12v2Ev");}
void  S3005C1 ::v3(){vfunc_called(this, "_ZN7S3005C12v3Ev");}
void  S3005C1 ::v4(){vfunc_called(this, "_ZN7S3005C12v4Ev");}
void  S3005C1 ::v5(){vfunc_called(this, "_ZN7S3005C12v5Ev");}
void  S3005C1 ::v6(){vfunc_called(this, "_ZN7S3005C12v6Ev");}
void  S3005C1 ::v7(){vfunc_called(this, "_ZN7S3005C12v7Ev");}
void  S3005C1 ::v8(){vfunc_called(this, "_ZN7S3005C12v8Ev");}
void  S3005C1 ::v9(){vfunc_called(this, "_ZN7S3005C12v9Ev");}
S3005C1 ::~S3005C1(){ note_dtor("S3005C1", this);} // tgen
S3005C1 ::S3005C1(){ note_ctor("S3005C1", this);} // tgen

static void Test_S3005C1()
{
  extern Class_Descriptor cd_S3005C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(46,138)];
    init_test(&cd_S3005C1, buf);
    S3005C1 *dp, &lv = *(dp=new (buf) S3005C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(720,548), "sizeof(S3005C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3005C1)");
    /*is_ambiguous_... S3005C2::S3005C3_nt */ AMB_check_base_class_offset(lv, (S3005C3_nt*)(S3005C2*), 0, "S3005C1");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*)(S3005C2*), ABISELECT(16,12), "S3005C1");
    check_base_class_offset(lv, (S3005C4*)(S3005C2*), ABISELECT(16,12), "S3005C1");
    check_base_class_offset(lv, (S3005C5*)(S3005C2*), ABISELECT(432,352), "S3005C1");
    check_base_class_offset(lv, (S3005C2*), 0, "S3005C1");
    /*is_ambiguous_... S3005C1::S3005C6 */ AMB_check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*)(S3005C6*), ABISELECT(40,32), "S3005C1");
    /*is_ambiguous_... S3005C1::S3005C6 */ AMB_check_base_class_offset(lv, (S3005C4*)(S3005C6*), ABISELECT(40,32), "S3005C1");
    /*is_ambiguous_... S3005C1::S3005C6 */ AMB_check_base_class_offset(lv, (S3005C6*), ABISELECT(40,32), "S3005C1");
    check_base_class_offset(lv, (S3005C9*)(S3005C8*)(S3005C7*), ABISELECT(448,364), "S3005C1");
    check_base_class_offset(lv, (S3005C9*)(S3005C11*), ABISELECT(448,364), "S3005C1");
    check_base_class_offset(lv, (S3005C10*)(S3005C8*)(S3005C7*), ABISELECT(144,124), "S3005C1");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*)(S3005C6*)(S3005C8*)(S3005C7*), ABISELECT(240,188), "S3005C1");
    check_base_class_offset(lv, (S3005C4*)(S3005C6*)(S3005C8*)(S3005C7*), ABISELECT(240,188), "S3005C1");
    check_base_class_offset(lv, (S3005C6*)(S3005C8*)(S3005C7*), ABISELECT(240,188), "S3005C1");
    check_base_class_offset(lv, (S3005C8*)(S3005C7*), ABISELECT(144,124), "S3005C1");
    check_base_class_offset(lv, (S3005C7*), ABISELECT(144,124), "S3005C1");
    /*is_ambiguous_... S3005C12::S3005C3_nt */ AMB_check_base_class_offset(lv, (S3005C3_nt*)(S3005C12*), ABISELECT(560,440), "S3005C1");
    check_base_class_offset(lv, (S3005C10*)(S3005C12*), ABISELECT(576,452), "S3005C1");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C13*), ABISELECT(672,516), "S3005C1");
    check_base_class_offset(lv, (S3005C13*)(S3005C12*), ABISELECT(672,516), "S3005C1");
    /*is_ambiguous_... S3005C1::S3005C4 */ AMB_check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*), ABISELECT(688,528), "S3005C1");
    check_base_class_offset(lv, (S3005C4*)(S3005C12*), ABISELECT(688,528), "S3005C1");
    check_base_class_offset(lv, (S3005C12*)(S3005C11*), ABISELECT(560,440), "S3005C1");
    check_base_class_offset(lv, (S3005C11*), ABISELECT(352,296), "S3005C1");
    /*is_ambiguous_... S3005C1::S3005C5 */ AMB_check_base_class_offset(lv, (S3005C5*), ABISELECT(400,328), "S3005C1");
    check_field_offset(lv, s3005c1f0, ABISELECT(416,340), "S3005C1.s3005c1f0");
    test_class_info(&lv, &cd_S3005C1);
    dp->~S3005C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C1(Test_S3005C1, "S3005C1", ABISELECT(720,548));

#else // __cplusplus

extern void _ZN7S3005C1C1Ev();
extern void _ZN7S3005C1D1Ev();
Name_Map name_map_S3005C1[] = {
  NSPAIR(_ZN7S3005C1C1Ev),
  NSPAIR(_ZN7S3005C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
extern Class_Descriptor cd_S3005C5;
extern VTBL_ENTRY _ZTI7S3005C5[];
extern  VTBL_ENTRY _ZTV7S3005C5[];
extern Class_Descriptor cd_S3005C2;
extern VTBL_ENTRY _ZTI7S3005C2[];
extern  VTBL_ENTRY _ZTV7S3005C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3005C2[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
extern Class_Descriptor cd_S3005C6;
extern VTBL_ENTRY _ZTI7S3005C6[];
extern  VTBL_ENTRY _ZTV7S3005C6[];
extern Class_Descriptor cd_S3005C9;
extern VTBL_ENTRY _ZTI7S3005C9[];
extern  VTBL_ENTRY _ZTV7S3005C9[];
extern Class_Descriptor cd_S3005C10;
extern VTBL_ENTRY _ZTI8S3005C10[];
extern  VTBL_ENTRY _ZTV8S3005C10[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
extern Class_Descriptor cd_S3005C6;
extern VTBL_ENTRY _ZTI7S3005C6[];
extern  VTBL_ENTRY _ZTV7S3005C6[];
extern Class_Descriptor cd_S3005C8;
extern VTBL_ENTRY _ZTI7S3005C8[];
extern  VTBL_ENTRY _ZTV7S3005C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3005C8[];
extern Class_Descriptor cd_S3005C7;
extern VTBL_ENTRY _ZTI7S3005C7[];
extern  VTBL_ENTRY _ZTV7S3005C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3005C7[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C10;
extern VTBL_ENTRY _ZTI8S3005C10[];
extern  VTBL_ENTRY _ZTV8S3005C10[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C13;
extern VTBL_ENTRY _ZTI8S3005C13[];
extern  VTBL_ENTRY _ZTV8S3005C13[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
extern Class_Descriptor cd_S3005C12;
extern VTBL_ENTRY _ZTI8S3005C12[];
extern  VTBL_ENTRY _ZTV8S3005C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3005C12[];
extern Class_Descriptor cd_S3005C11;
extern VTBL_ENTRY _ZTI8S3005C11[];
extern  VTBL_ENTRY _ZTV8S3005C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3005C11[];
extern Class_Descriptor cd_S3005C5;
extern VTBL_ENTRY _ZTI7S3005C5[];
extern  VTBL_ENTRY _ZTV7S3005C5[];
static Base_Class bases_S3005C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3005C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3005C3_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3005C4,    ABISELECT(16,12), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3005C5,    ABISELECT(432,352), //bcp->offset
    104, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3005C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3005C3_nt,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3005C4,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3005C6,    ABISELECT(40,32), //bcp->offset
    36, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3005C9,    ABISELECT(448,364), //bcp->offset
    112, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3005C10,    ABISELECT(144,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3005C3_nt,    ABISELECT(240,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3005C4,    ABISELECT(240,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3005C6,    ABISELECT(240,188), //bcp->offset
    70, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3005C8,    ABISELECT(144,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3005C7,    ABISELECT(144,124), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3005C3_nt,    ABISELECT(560,440), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3005C10,    ABISELECT(576,452), //bcp->offset
    148, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3005C3_nt,    ABISELECT(672,516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3005C13,    ABISELECT(672,516), //bcp->offset
    155, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3005C3_nt,    ABISELECT(688,528), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3005C4,    ABISELECT(688,528), //bcp->offset
    175, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3005C12,    ABISELECT(560,440), //bcp->offset
    129, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S3005C11,    ABISELECT(352,296), //bcp->offset
    85, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3005C5,    ABISELECT(400,328), //bcp->offset
    99, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3005C1[];
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C1D1Ev();
extern void _ZN7S3005C1D0Ev();
extern void _ZN7S3005C23v21Ev();
extern void _ZN7S3005C23v22Ev();
extern void _ZN7S3005C23v23Ev();
extern void _ZN7S3005C23v24Ev();
extern void _ZN7S3005C23v25Ev();
extern void _ZN7S3005C12v1Ev();
extern void _ZN7S3005C12v2Ev();
extern void _ZN7S3005C12v3Ev();
extern void _ZN7S3005C12v4Ev();
extern void _ZN7S3005C12v5Ev();
extern void _ZN7S3005C12v6Ev();
extern void _ZN7S3005C12v7Ev();
extern void _ZN7S3005C12v8Ev();
extern void _ZN7S3005C12v9Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
extern void _ZN7S3005C63v26Ev();
extern void _ZN7S3005C63v27Ev();
extern void _ZN7S3005C63v28Ev();
extern void _ZN7S3005C63v29Ev();
extern void _ZN7S3005C63v30Ev();
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
extern void ABISELECT(_ZThn144_N7S3005C1D1Ev,_ZThn124_N7S3005C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S3005C1D0Ev,_ZThn124_N7S3005C1D0Ev)();
extern void _ZN7S3005C83v42Ev();
extern void _ZN7S3005C83v43Ev();
extern void _ZN7S3005C83v44Ev();
extern void _ZN7S3005C83v45Ev();
extern void _ZN7S3005C83v46Ev();
extern void _ZN7S3005C83v47Ev();
extern void _ZN7S3005C83v48Ev();
extern void _ZN7S3005C83v49Ev();
extern void _ZN7S3005C73v50Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
extern void _ZN7S3005C63v26Ev();
extern void _ZN7S3005C63v27Ev();
extern void _ZN7S3005C63v28Ev();
extern void _ZN7S3005C63v29Ev();
extern void _ZN7S3005C63v30Ev();
extern void ABISELECT(_ZThn352_N7S3005C1D1Ev,_ZThn296_N7S3005C1D1Ev)();
extern void ABISELECT(_ZThn352_N7S3005C1D0Ev,_ZThn296_N7S3005C1D0Ev)();
extern void _ZN8S3005C113v59Ev();
extern void _ZN8S3005C113v60Ev();
extern void _ZN8S3005C113v61Ev();
extern void _ZN8S3005C113v62Ev();
extern void _ZN8S3005C113v63Ev();
extern void _ZN8S3005C113v64Ev();
extern void _ZN7S3005C53v18Ev();
extern void _ZN7S3005C53v19Ev();
extern void _ZN7S3005C53v20Ev();
extern void _ZN7S3005C53v18Ev();
extern void _ZN7S3005C53v19Ev();
extern void _ZN7S3005C53v20Ev();
extern void ABISELECT(_ZTv0_n24_N7S3005C1D1Ev,_ZTv0_n12_N7S3005C1D1Ev)();
extern void ABISELECT(_ZThn448_N7S3005C1D1Ev,_ZThn364_N7S3005C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3005C1D0Ev,_ZTv0_n12_N7S3005C1D0Ev)();
extern void ABISELECT(_ZThn448_N7S3005C1D0Ev,_ZThn364_N7S3005C1D0Ev)() __attribute__((weak));
extern void _ZN7S3005C93v31Ev();
extern void _ZN7S3005C93v32Ev();
extern void _ZN7S3005C93v33Ev();
extern void _ZN7S3005C93v34Ev();
extern void _ZN7S3005C93v35Ev();
extern void _ZN7S3005C93v36Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C123v57Ev();
extern void _ZN8S3005C123v58Ev();
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C133v51Ev();
extern void _ZN8S3005C133v52Ev();
extern void _ZN8S3005C133v53Ev();
extern void _ZN8S3005C133v54Ev();
extern void _ZN8S3005C133v55Ev();
extern void _ZN8S3005C133v56Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
static  VTBL_ENTRY vtc_S3005C1[] = {
  ABISELECT(688,528),
  ABISELECT(672,516),
  ABISELECT(560,440),
  ABISELECT(448,364),
  ABISELECT(432,352),
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3005C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v21Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v22Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v23Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v24Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v25Ev,
  (VTBL_ENTRY)&_ZN7S3005C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3005C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3005C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3005C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3005C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3005C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3005C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3005C12v8Ev,
  (VTBL_ENTRY)&_ZN7S3005C12v9Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v26Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v27Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v28Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v29Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v30Ev,
  ABISELECT(304,240),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N7S3005C1D1Ev,_ZThn124_N7S3005C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N7S3005C1D0Ev,_ZThn124_N7S3005C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3005C83v42Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v43Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v44Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v45Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v46Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v47Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v48Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v49Ev,
  (VTBL_ENTRY)&_ZN7S3005C73v50Ev,
  ABISELECT(-240,-188),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v26Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v27Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v28Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v29Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v30Ev,
  ABISELECT(96,68),
  ABISELECT(336,232),
  ABISELECT(320,220),
  ABISELECT(208,144),
  ABISELECT(-352,-296),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn352_N7S3005C1D1Ev,_ZThn296_N7S3005C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn352_N7S3005C1D0Ev,_ZThn296_N7S3005C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3005C113v59Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v60Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v61Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v62Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v63Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v64Ev,
  ABISELECT(-400,-328),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN7S3005C53v18Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v20Ev,
  0,
  0,
  0,
  ABISELECT(-432,-352),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN7S3005C53v18Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v20Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-448,-364),
  ABISELECT(-448,-364),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C1D1Ev,_ZTv0_n12_N7S3005C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C1D0Ev,_ZTv0_n12_N7S3005C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3005C93v31Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v32Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v33Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v34Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v35Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v36Ev,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,88),
  ABISELECT(112,76),
  ABISELECT(-560,-440),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v57Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v58Ev,
  ABISELECT(-576,-452),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-672,-516),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v51Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v52Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v53Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v54Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v55Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v56Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-688,-528),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
};
extern VTBL_ENTRY _ZTV7S3005C1[];
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C2D1Ev();
extern void _ZN7S3005C2D0Ev();
extern void _ZN7S3005C23v21Ev();
extern void _ZN7S3005C23v22Ev();
extern void _ZN7S3005C23v23Ev();
extern void _ZN7S3005C23v24Ev();
extern void _ZN7S3005C23v25Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C2__7S3005C1[] = {
  ABISELECT(432,352),
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C2[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3005C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v21Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v22Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v23Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v24Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v25Ev,
};
extern void _ZN7S3005C53v18Ev();
extern void _ZN7S3005C53v19Ev();
extern void _ZN7S3005C53v20Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C5__7S3005C2__7S3005C1[] = {
  0,
  0,
  0,
  ABISELECT(-432,-352),
  (VTBL_ENTRY)&(_ZTI7S3005C2[0]),
  (VTBL_ENTRY)&_ZN7S3005C53v18Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v20Ev,
};
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
extern void _ZN7S3005C7D1Ev();
extern void _ZN7S3005C7D0Ev();
extern void _ZN7S3005C83v42Ev();
extern void _ZN7S3005C83v43Ev();
extern void _ZN7S3005C83v44Ev();
extern void _ZN7S3005C83v45Ev();
extern void _ZN7S3005C83v46Ev();
extern void _ZN7S3005C83v47Ev();
extern void _ZN7S3005C83v48Ev();
extern void _ZN7S3005C83v49Ev();
extern void _ZN7S3005C73v50Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C7__7S3005C1[] = {
  ABISELECT(304,240),
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C7[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
  (VTBL_ENTRY)&_ZN7S3005C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3005C7D0Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v42Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v43Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v44Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v45Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v46Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v47Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v48Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v49Ev,
  (VTBL_ENTRY)&_ZN7S3005C73v50Ev,
};
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
extern void _ZN7S3005C8D1Ev();
extern void _ZN7S3005C8D0Ev();
extern void _ZN7S3005C83v42Ev();
extern void _ZN7S3005C83v43Ev();
extern void _ZN7S3005C83v44Ev();
extern void _ZN7S3005C83v45Ev();
extern void _ZN7S3005C83v46Ev();
extern void _ZN7S3005C83v47Ev();
extern void _ZN7S3005C83v48Ev();
extern void _ZN7S3005C83v49Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C87S3005C7__7S3005C1[] = {
  ABISELECT(304,240),
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C8[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
  (VTBL_ENTRY)&_ZN7S3005C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3005C8D0Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v42Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v43Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v44Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v45Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v46Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v47Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v48Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v49Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3005C8D1Ev,_ZTv0_n12_N7S3005C8D1Ev)();
extern void ABISELECT(_ZThn304_N7S3005C8D1Ev,_ZThn240_N7S3005C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3005C8D0Ev,_ZTv0_n12_N7S3005C8D0Ev)();
extern void ABISELECT(_ZThn304_N7S3005C8D0Ev,_ZThn240_N7S3005C8D0Ev)() __attribute__((weak));
extern void _ZN7S3005C93v31Ev();
extern void _ZN7S3005C93v32Ev();
extern void _ZN7S3005C93v33Ev();
extern void _ZN7S3005C93v34Ev();
extern void _ZN7S3005C93v35Ev();
extern void _ZN7S3005C93v36Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C9__7S3005C87S3005C7__7S3005C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-240),
  ABISELECT(-304,-240),
  (VTBL_ENTRY)&(_ZTI7S3005C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C8D1Ev,_ZTv0_n12_N7S3005C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C8D0Ev,_ZTv0_n12_N7S3005C8D0Ev),
  (VTBL_ENTRY)&_ZN7S3005C93v31Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v32Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v33Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v34Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v35Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v36Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3005C7D1Ev,_ZTv0_n12_N7S3005C7D1Ev)();
extern void ABISELECT(_ZThn304_N7S3005C7D1Ev,_ZThn240_N7S3005C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3005C7D0Ev,_ZTv0_n12_N7S3005C7D0Ev)();
extern void ABISELECT(_ZThn304_N7S3005C7D0Ev,_ZThn240_N7S3005C7D0Ev)() __attribute__((weak));
extern void _ZN7S3005C93v31Ev();
extern void _ZN7S3005C93v32Ev();
extern void _ZN7S3005C93v33Ev();
extern void _ZN7S3005C93v34Ev();
extern void _ZN7S3005C93v35Ev();
extern void _ZN7S3005C93v36Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C9__7S3005C7__7S3005C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-240),
  ABISELECT(-304,-240),
  (VTBL_ENTRY)&(_ZTI7S3005C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C7D1Ev,_ZTv0_n12_N7S3005C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C7D0Ev,_ZTv0_n12_N7S3005C7D0Ev),
  (VTBL_ENTRY)&_ZN7S3005C93v31Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v32Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v33Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v34Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v35Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v36Ev,
};
extern void _ZN8S3005C11D1Ev();
extern void _ZN8S3005C11D0Ev();
extern void _ZN8S3005C113v59Ev();
extern void _ZN8S3005C113v60Ev();
extern void _ZN8S3005C113v61Ev();
extern void _ZN8S3005C113v62Ev();
extern void _ZN8S3005C113v63Ev();
extern void _ZN8S3005C113v64Ev();
static  VTBL_ENTRY _tg__ZTV8S3005C11__7S3005C1[] = {
  ABISELECT(96,68),
  ABISELECT(336,232),
  ABISELECT(320,220),
  ABISELECT(208,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN8S3005C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3005C11D0Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v59Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v60Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v61Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v62Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v63Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v64Ev,
};
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C123v57Ev();
extern void _ZN8S3005C123v58Ev();
static  VTBL_ENTRY _tg__ZTV8S3005C12__8S3005C11__7S3005C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,88),
  ABISELECT(112,76),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v57Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v58Ev,
};
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
static  VTBL_ENTRY _tg__ZTV8S3005C108S3005C12__8S3005C11__7S3005C1[] = {
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
};
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C133v51Ev();
extern void _ZN8S3005C133v52Ev();
extern void _ZN8S3005C133v53Ev();
extern void _ZN8S3005C133v54Ev();
extern void _ZN8S3005C133v55Ev();
extern void _ZN8S3005C133v56Ev();
static  VTBL_ENTRY _tg__ZTV8S3005C13__8S3005C11__7S3005C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-320,-220),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v51Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v52Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v53Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v54Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v55Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v56Ev,
};
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C4__8S3005C11__7S3005C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-232),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3005C11D1Ev,_ZTv0_n12_N8S3005C11D1Ev)();
extern void ABISELECT(_ZThn96_N8S3005C11D1Ev,_ZThn68_N8S3005C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3005C11D0Ev,_ZTv0_n12_N8S3005C11D0Ev)();
extern void ABISELECT(_ZThn96_N8S3005C11D0Ev,_ZThn68_N8S3005C11D0Ev)() __attribute__((weak));
extern void _ZN7S3005C93v31Ev();
extern void _ZN7S3005C93v32Ev();
extern void _ZN7S3005C93v33Ev();
extern void _ZN7S3005C93v34Ev();
extern void _ZN7S3005C93v35Ev();
extern void _ZN7S3005C93v36Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C9__8S3005C11__7S3005C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-68),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3005C11D1Ev,_ZTv0_n12_N8S3005C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3005C11D0Ev,_ZTv0_n12_N8S3005C11D0Ev),
  (VTBL_ENTRY)&_ZN7S3005C93v31Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v32Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v33Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v34Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v35Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v36Ev,
};
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C123v57Ev();
extern void _ZN8S3005C123v58Ev();
static  VTBL_ENTRY _tg__ZTV8S3005C12__7S3005C1[] = {
  ABISELECT(128,88),
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v57Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v58Ev,
};
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C133v51Ev();
extern void _ZN8S3005C133v52Ev();
extern void _ZN8S3005C133v53Ev();
extern void _ZN8S3005C133v54Ev();
extern void _ZN8S3005C133v55Ev();
extern void _ZN8S3005C133v56Ev();
static  VTBL_ENTRY _tg__ZTV8S3005C13__8S3005C12__7S3005C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v51Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v52Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v53Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v54Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v55Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v56Ev,
};
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C4__8S3005C12__7S3005C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
};
static  VTT_ENTRY vtt_S3005C1[] = {
  {&(_ZTV7S3005C1[7]),  7,193},
  {&(_tg__ZTV7S3005C2__7S3005C1[3]),  3,13},
  {&(_tg__ZTV7S3005C5__7S3005C2__7S3005C1[5]),  5,8},
  {&(_tg__ZTV7S3005C7__7S3005C1[3]),  3,19},
  {&(_tg__ZTV7S3005C87S3005C7__7S3005C1[3]),  3,18},
  {&(_tg__ZTV7S3005C9__7S3005C87S3005C7__7S3005C1[9]),  9,17},
  {&(_tg__ZTV7S3005C9__7S3005C7__7S3005C1[9]),  9,17},
  {&(_tg__ZTV8S3005C11__7S3005C1[6]),  6,14},
  {&(_tg__ZTV8S3005C12__8S3005C11__7S3005C1[14]),  14,19},
  {&(_tg__ZTV8S3005C108S3005C12__8S3005C11__7S3005C1[2]),  2,7},
  {&(_tg__ZTV8S3005C13__8S3005C11__7S3005C1[11]),  11,20},
  {&(_tg__ZTV7S3005C4__8S3005C11__7S3005C1[10]),  10,18},
  {&(_tg__ZTV7S3005C9__8S3005C11__7S3005C1[9]),  9,17},
  {&(_ZTV7S3005C1[109]),  109,193},
  {&(_ZTV7S3005C1[54]),  54,193},
  {&(_ZTV7S3005C1[121]),  121,193},
  {&(_ZTV7S3005C1[91]),  91,193},
  {&(_ZTV7S3005C1[143]),  143,193},
  {&(_ZTV7S3005C1[150]),  150,193},
  {&(_ZTV7S3005C1[166]),  166,193},
  {&(_ZTV7S3005C1[185]),  185,193},
  {&(_tg__ZTV8S3005C12__7S3005C1[4]),  4,9},
  {&(_tg__ZTV8S3005C13__8S3005C12__7S3005C1[11]),  11,20},
  {&(_tg__ZTV7S3005C4__8S3005C12__7S3005C1[10]),  10,18},
};
extern VTBL_ENTRY _ZTI7S3005C1[];
extern  VTBL_ENTRY _ZTV7S3005C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3005C1[];
static VTBL_ENTRY alt_thunk_names60[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3005C11D0Ev,_ZTv0_n12_N8S3005C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3005C11D0Ev,_ZThn68_N8S3005C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3005C11D1Ev,_ZTv0_n12_N8S3005C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3005C11D1Ev,_ZThn68_N8S3005C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C7D0Ev,_ZTv0_n12_N7S3005C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S3005C7D0Ev,_ZThn240_N7S3005C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C7D1Ev,_ZTv0_n12_N7S3005C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S3005C7D1Ev,_ZThn240_N7S3005C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C8D0Ev,_ZTv0_n12_N7S3005C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S3005C8D0Ev,_ZThn240_N7S3005C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C8D1Ev,_ZTv0_n12_N7S3005C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S3005C8D1Ev,_ZThn240_N7S3005C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C1D0Ev,_ZTv0_n12_N7S3005C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S3005C1D0Ev,_ZThn364_N7S3005C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C1D1Ev,_ZTv0_n12_N7S3005C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S3005C1D1Ev,_ZThn364_N7S3005C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3005C1 = {  "S3005C1", // class name
  bases_S3005C1, 24,
  &(vtc_S3005C1[0]), // expected_vtbl_contents
  &(vtt_S3005C1[0]), // expected_vtt_contents
  ABISELECT(720,548), // object size
  NSPAIRA(_ZTI7S3005C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S3005C1),193, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3005C1),24, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names60,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C2  {
  ::S19763C18_nt s19676c2f0;
  int s19676c2f1[3];
  void  mf19676c2(); // _ZN8S19676C29mf19676c2Ev
};
//SIG(-1 S19676C2) C1{ m FC2{} Fi[3]}


void  S19676C2 ::mf19676c2(){}

static void Test_S19676C2()
{
  {
    init_simple_test("S19676C2");
    S19676C2 lv;
    check2(sizeof(lv), 16, "sizeof(S19676C2)");
    check2(__alignof__(lv), 4, "__alignof__(S19676C2)");
    check_field_offset(lv, s19676c2f0, 0, "S19676C2.s19676c2f0");
    check_field_offset(lv, s19676c2f1, 4, "S19676C2.s19676c2f1");
  }
}
static Arrange_To_Call_Me vS19676C2(Test_S19676C2, "S19676C2", 16);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S19676C2[];
VTBL_ENTRY *P__ZTI8S19676C2 = _ZTI8S19676C2; 
Class_Descriptor cd_S19676C2 = {  "S19676C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  16, // object size
  NSPAIRA(_ZTI8S19676C2),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C9  {
  void *s19676c9f0;
  int s19676c9f1;
  char s19676c9f2;
  long double s19676c9f3;
  void  mf19676c9(); // _ZN8S19676C99mf19676c9Ev
  virtual  ~S19676C9(); // _ZN8S19676C9D1Ev
  S19676C9(); // tgen
};
//SIG(-1 S19676C9) C1{ vd m Fp Fi Fc FD}


void  S19676C9 ::mf19676c9(){}
 S19676C9 ::~S19676C9(){ note_dtor("S19676C9", this);}
S19676C9 ::S19676C9(){ note_ctor("S19676C9", this);} // tgen

static void Test_S19676C9()
{
  extern Class_Descriptor cd_S19676C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S19676C9, buf);
    S19676C9 *dp, &lv = *(dp=new (buf) S19676C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S19676C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C9)");
    check_field_offset(lv, s19676c9f0, ABISELECT(8,4), "S19676C9.s19676c9f0");
    check_field_offset(lv, s19676c9f1, ABISELECT(16,8), "S19676C9.s19676c9f1");
    check_field_offset(lv, s19676c9f2, ABISELECT(20,12), "S19676C9.s19676c9f2");
    check_field_offset(lv, s19676c9f3, ABISELECT(32,16), "S19676C9.s19676c9f3");
    test_class_info(&lv, &cd_S19676C9);
    dp->~S19676C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C9(Test_S19676C9, "S19676C9", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S19676C9C1Ev();
extern void _ZN8S19676C9D1Ev();
Name_Map name_map_S19676C9[] = {
  NSPAIR(_ZN8S19676C9C1Ev),
  NSPAIR(_ZN8S19676C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19676C9[];
extern void _ZN8S19676C9D1Ev();
extern void _ZN8S19676C9D0Ev();
static  VTBL_ENTRY vtc_S19676C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C9[0]),
  (VTBL_ENTRY)&_ZN8S19676C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C9D0Ev,
};
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
Class_Descriptor cd_S19676C9 = {  "S19676C9", // class name
  0,0,//no base classes
  &(vtc_S19676C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S19676C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19676C9),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C10  : virtual S19676C9 {
  virtual  ~S19676C10(); // _ZN9S19676C10D2Ev
  S19676C10(); // tgen
};
//SIG(-1 S19676C10) C1{ VBC2{ vd m Fp Fi Fc FD} vd}


 S19676C10 ::~S19676C10(){ note_dtor("S19676C10", this);}
S19676C10 ::S19676C10(){ note_ctor("S19676C10", this);} // tgen

static void Test_S19676C10()
{
  extern Class_Descriptor cd_S19676C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S19676C10, buf);
    S19676C10 *dp, &lv = *(dp=new (buf) S19676C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S19676C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C10)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(16,4), "S19676C10");
    test_class_info(&lv, &cd_S19676C10);
    dp->~S19676C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C10(Test_S19676C10, "S19676C10", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN9S19676C10C1Ev();
extern void _ZN9S19676C10D2Ev();
Name_Map name_map_S19676C10[] = {
  NSPAIR(_ZN9S19676C10C1Ev),
  NSPAIR(_ZN9S19676C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
static Base_Class bases_S19676C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C10[];
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C10D1Ev,_ZThn4_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C10D0Ev,_ZThn4_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C10[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C10[];
static  VTT_ENTRY vtt_S19676C10[] = {
  {&(_ZTV9S19676C10[3]),  3,10},
  {&(_ZTV9S19676C10[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
static VTBL_ENTRY alt_thunk_names61[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C10D0Ev,_ZThn4_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C10D1Ev,_ZThn4_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C10 = {  "S19676C10", // class name
  bases_S19676C10, 1,
  &(vtc_S19676C10[0]), // expected_vtbl_contents
  &(vtt_S19676C10[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI9S19676C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19676C10),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C10),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names61,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C8  : virtual S19676C9 , S19676C10 {
  void *s19676c8f0[10];
  int s19676c8f1;
  __tsi64 s19676c8f2;
  ~S19676C8(); // tgen
  S19676C8(); // tgen
};
//SIG(-1 S19676C8) C1{ VBC2{ vd m Fp Fi Fc FD} BC3{ VBC2 vd} Fp[10] Fi FL}


S19676C8 ::~S19676C8(){ note_dtor("S19676C8", this);} // tgen
S19676C8 ::S19676C8(){ note_ctor("S19676C8", this);} // tgen

static void Test_S19676C8()
{
  extern Class_Descriptor cd_S19676C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,22)];
    init_test(&cd_S19676C8, buf);
    S19676C8 *dp, &lv = *(dp=new (buf) S19676C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,84), "sizeof(S19676C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C8)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(112,56), "S19676C8");
    check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(112,56), "S19676C8");
    check_base_class_offset(lv, (S19676C10*), 0, "S19676C8");
    check_field_offset(lv, s19676c8f0, ABISELECT(8,4), "S19676C8.s19676c8f0");
    check_field_offset(lv, s19676c8f1, ABISELECT(88,44), "S19676C8.s19676c8f1");
    check_field_offset(lv, s19676c8f2, ABISELECT(96,48), "S19676C8.s19676c8f2");
    test_class_info(&lv, &cd_S19676C8);
    dp->~S19676C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C8(Test_S19676C8, "S19676C8", ABISELECT(160,84));

#else // __cplusplus

extern void _ZN8S19676C8C1Ev();
extern void _ZN8S19676C8D1Ev();
Name_Map name_map_S19676C8[] = {
  NSPAIR(_ZN8S19676C8C1Ev),
  NSPAIR(_ZN8S19676C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
static Base_Class bases_S19676C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(112,56), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19676C8[];
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C8[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19676C8[];
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__8S19676C8[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn112_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__8S19676C8[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
static  VTT_ENTRY vtt_S19676C8[] = {
  {&(_ZTV8S19676C8[3]),  3,10},
  {&(_tg__ZTV9S19676C10__8S19676C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__8S19676C8[3]),  3,5},
  {&(_ZTV8S19676C8[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
static VTBL_ENTRY alt_thunk_names62[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C8 = {  "S19676C8", // class name
  bases_S19676C8, 2,
  &(vtc_S19676C8[0]), // expected_vtbl_contents
  &(vtt_S19676C8[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI8S19676C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19676C8),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19676C8),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names62,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C12  : virtual S19676C8 , S19676C10 {
  int s19676c12f0;
  virtual  ~S19676C12(); // _ZN9S19676C12D2Ev
  S19676C12(); // tgen
};
//SIG(-1 S19676C12) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} BC4 vd Fi}


 S19676C12 ::~S19676C12(){ note_dtor("S19676C12", this);}
S19676C12 ::S19676C12(){ note_ctor("S19676C12", this);} // tgen

static void Test_S19676C12()
{
  extern Class_Descriptor cd_S19676C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,24)];
    init_test(&cd_S19676C12, buf);
    S19676C12 *dp, &lv = *(dp=new (buf) S19676C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S19676C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C12)");
    check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(128,64), "S19676C12");
    check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(128,64), "S19676C12");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(128,64), "S19676C12");
    check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(16,8), "S19676C12");
    check_base_class_offset(lv, (S19676C8*), ABISELECT(16,8), "S19676C12");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*), 0, "S19676C12");
    check_field_offset(lv, s19676c12f0, ABISELECT(8,4), "S19676C12.s19676c12f0");
    test_class_info(&lv, &cd_S19676C12);
    dp->~S19676C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C12(Test_S19676C12, "S19676C12", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN9S19676C12C1Ev();
extern void _ZN9S19676C12D2Ev();
Name_Map name_map_S19676C12[] = {
  NSPAIR(_ZN9S19676C12C1Ev),
  NSPAIR(_ZN9S19676C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
static Base_Class bases_S19676C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(128,64), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C12[];
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn8_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn8_N9S19676C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn128_N9S19676C12D1Ev,_ZThn64_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn128_N9S19676C12D0Ev,_ZThn64_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C12[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C12[];
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C12[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S19676C10D1Ev,_ZThn64_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S19676C10D0Ev,_ZThn64_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__A1__9S19676C12[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C12[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__9S19676C12[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn112_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C12[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C12[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
static  VTT_ENTRY vtt_S19676C12[] = {
  {&(_ZTV9S19676C12[4]),  4,17},
  {&(_tg__ZTV9S19676C10__A1__9S19676C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__A1__9S19676C12[3]),  3,5},
  {&(_ZTV9S19676C12[10]),  10,17},
  {&(_ZTV9S19676C12[15]),  15,17},
  {&(_tg__ZTV8S19676C8__9S19676C12[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__9S19676C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
static VTBL_ENTRY alt_thunk_names63[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C10D0Ev,_ZThn64_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C10D1Ev,_ZThn64_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C12D0Ev,_ZThn64_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C12D1Ev,_ZThn64_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn8_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn8_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C12 = {  "S19676C12", // class name
  bases_S19676C12, 4,
  &(vtc_S19676C12[0]), // expected_vtbl_contents
  &(vtt_S19676C12[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI9S19676C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19676C12),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C12),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names63,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C14  : S19676C9 , virtual S19676C10 , virtual S19676C8 , S19676C12 {
  int s19676c14f0;
  virtual  ~S19676C14(); // _ZN9S19676C14D2Ev
  S19676C14(); // tgen
};
//SIG(-1 S19676C14) C1{ BC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 vd} VBC4{ VBC2 BC3 Fp[10] Fi FL} BC5{ VBC4 BC3 vd Fi} vd Fi}


 S19676C14 ::~S19676C14(){ note_dtor("S19676C14", this);}
S19676C14 ::S19676C14(){ note_ctor("S19676C14", this);} // tgen

static void Test_S19676C14()
{
  extern Class_Descriptor cd_S19676C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,33)];
    init_test(&cd_S19676C14, buf);
    S19676C14 *dp, &lv = *(dp=new (buf) S19676C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,128), "sizeof(S19676C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C14)");
    /*is_ambiguous_... S19676C14::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), 0, "S19676C14");
    /*is_ambiguous_... S19676C14::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(80,44), "S19676C14");
    check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(80,44), "S19676C14");
    check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(80,44), "S19676C14");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*), ABISELECT(80,44), "S19676C14");
    /*is_ambiguous_... S19676C14::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*), ABISELECT(64,40), "S19676C14");
    check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(128,72), "S19676C14");
    check_base_class_offset(lv, (S19676C8*), ABISELECT(128,72), "S19676C14");
    check_base_class_offset(lv, (S19676C8*)(S19676C12*), ABISELECT(128,72), "S19676C14");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*), ABISELECT(48,28), "S19676C14");
    check_base_class_offset(lv, (S19676C12*), ABISELECT(48,28), "S19676C14");
    check_field_offset(lv, s19676c14f0, ABISELECT(60,36), "S19676C14.s19676c14f0");
    test_class_info(&lv, &cd_S19676C14);
    dp->~S19676C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C14(Test_S19676C14, "S19676C14", ABISELECT(240,128));

#else // __cplusplus

extern void _ZN9S19676C14C1Ev();
extern void _ZN9S19676C14D2Ev();
Name_Map name_map_S19676C14[] = {
  NSPAIR(_ZN9S19676C14C1Ev),
  NSPAIR(_ZN9S19676C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
static Base_Class bases_S19676C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(80,44), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(64,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(128,72), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(48,28), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C14[];
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19676C14D1Ev,_ZThn40_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19676C14D0Ev,_ZThn40_N9S19676C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S19676C14D1Ev,_ZThn44_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S19676C14D0Ev,_ZThn44_N9S19676C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn128_N9S19676C14D1Ev,_ZThn72_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn128_N9S19676C14D0Ev,_ZThn72_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C14[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(16,4),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C14[];
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C12__A2__9S19676C14[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn32_N9S19676C10D1Ev,_ZThn16_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn32_N9S19676C10D0Ev,_ZThn16_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C12__A2__9S19676C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn80_N9S19676C12D1Ev,_ZThn44_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn80_N9S19676C12D0Ev,_ZThn44_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C12__9S19676C14[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19676C12D1Ev,_ZThn16_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S19676C12D0Ev,_ZThn16_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C12__9S19676C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C10D1Ev,_ZThn4_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C10D0Ev,_ZThn4_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__9S19676C14[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__A1__9S19676C14[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__A1__9S19676C14[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C14[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
static  VTT_ENTRY vtt_S19676C14[] = {
  {&(_ZTV9S19676C14[5]),  5,30},
  {&(_tg__ZTV9S19676C12__9S19676C14[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C12__A2__9S19676C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C12__A2__9S19676C14[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C12__9S19676C14[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C12__9S19676C14[3]),  3,5},
  {&(_ZTV9S19676C14[17]),  17,30},
  {&(_ZTV9S19676C14[22]),  22,30},
  {&(_ZTV9S19676C14[28]),  28,30},
  {&(_ZTV9S19676C14[11]),  11,30},
  {&(_tg__ZTV9S19676C10__9S19676C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__9S19676C14[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__A1__9S19676C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__A1__9S19676C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
static VTBL_ENTRY alt_thunk_names64[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C12D0Ev,_ZThn16_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C12D1Ev,_ZThn16_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C12D0Ev,_ZThn44_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C12D1Ev,_ZThn44_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C10D0Ev,_ZThn4_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C10D0Ev,_ZThn16_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C10D1Ev,_ZThn4_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C10D1Ev,_ZThn16_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C14D0Ev,_ZThn44_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C14D1Ev,_ZThn44_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C14D0Ev,_ZThn72_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C14D0Ev,_ZThn40_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C14D1Ev,_ZThn72_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C14D1Ev,_ZThn40_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C14 = {  "S19676C14", // class name
  bases_S19676C14, 7,
  &(vtc_S19676C14[0]), // expected_vtbl_contents
  &(vtt_S19676C14[0]), // expected_vtt_contents
  ABISELECT(240,128), // object size
  NSPAIRA(_ZTI9S19676C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19676C14),30, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C14),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names64,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C15  : virtual S19676C9 , virtual S19676C8 , S19676C10 {
  void *s19676c15f0;
  int s19676c15f1;
  ::S19676C9 s19676c15f2[3];
  int s19676c15f3[7];
  virtual  ~S19676C15(); // _ZN9S19676C15D2Ev
  S19676C15(); // tgen
};
//SIG(-1 S19676C15) C1{ VBC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 BC4{ VBC2 vd} Fp[10] Fi FL} BC4 vd Fp Fi FC2[3] Fi[7]}


 S19676C15 ::~S19676C15(){ note_dtor("S19676C15", this);}
S19676C15 ::S19676C15(){ note_ctor("S19676C15", this);} // tgen

static void Test_S19676C15()
{
  extern Class_Descriptor cd_S19676C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,53)];
    init_test(&cd_S19676C15, buf);
    S19676C15 *dp, &lv = *(dp=new (buf) S19676C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,208), "sizeof(S19676C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C15)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S19676C15");
    check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(208,124), "S19676C15");
    check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(208,124), "S19676C15");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(208,124), "S19676C15");
    check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(256,152), "S19676C15");
    check_base_class_offset(lv, (S19676C8*), ABISELECT(256,152), "S19676C15");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*), 0, "S19676C15");
    check_field_offset(lv, s19676c15f0, ABISELECT(8,4), "S19676C15.s19676c15f0");
    check_field_offset(lv, s19676c15f1, ABISELECT(16,8), "S19676C15.s19676c15f1");
    check_field_offset(lv, s19676c15f2, ABISELECT(32,12), "S19676C15.s19676c15f2");
    check_field_offset(lv, s19676c15f3, ABISELECT(176,96), "S19676C15.s19676c15f3");
    test_class_info(&lv, &cd_S19676C15);
    dp->~S19676C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C15(Test_S19676C15, "S19676C15", ABISELECT(368,208));

#else // __cplusplus

extern void _ZN9S19676C15C1Ev();
extern void _ZN9S19676C15D2Ev();
Name_Map name_map_S19676C15[] = {
  NSPAIR(_ZN9S19676C15C1Ev),
  NSPAIR(_ZN9S19676C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
static Base_Class bases_S19676C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(208,124), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    ABISELECT(256,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(256,152), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C15[];
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn208_N9S19676C15D1Ev,_ZThn124_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn208_N9S19676C15D0Ev,_ZThn124_N9S19676C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C15D1Ev,_ZThn152_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn256_N9S19676C15D0Ev,_ZThn152_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C15[] = {
  ABISELECT(256,152),
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
  ABISELECT(-256,-152),
  ABISELECT(-48,-28),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C15[];
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C15[] = {
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn208_N9S19676C10D1Ev,_ZThn124_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn208_N9S19676C10D0Ev,_ZThn124_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__A1__9S19676C15[] = {
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C15[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__9S19676C15[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C15[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C15[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
static  VTT_ENTRY vtt_S19676C15[] = {
  {&(_ZTV9S19676C15[4]),  4,17},
  {&(_tg__ZTV9S19676C10__A1__9S19676C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__A1__9S19676C15[3]),  3,5},
  {&(_ZTV9S19676C15[9]),  9,17},
  {&(_ZTV9S19676C15[15]),  15,17},
  {&(_tg__ZTV8S19676C8__9S19676C15[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__9S19676C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
static VTBL_ENTRY alt_thunk_names65[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19676C10D0Ev,_ZThn124_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19676C10D1Ev,_ZThn124_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19676C15D0Ev,_ZThn152_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19676C15D1Ev,_ZThn152_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19676C15D0Ev,_ZThn124_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19676C15D1Ev,_ZThn124_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C15 = {  "S19676C15", // class name
  bases_S19676C15, 4,
  &(vtc_S19676C15[0]), // expected_vtbl_contents
  &(vtt_S19676C15[0]), // expected_vtt_contents
  ABISELECT(368,208), // object size
  NSPAIRA(_ZTI9S19676C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19676C15),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C15),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names65,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C13  : virtual S19676C8 , virtual S19676C14 , S19676C15 , S19676C9 , S19676C10 {
  virtual  ~S19676C13(); // _ZN9S19676C13D2Ev
  S19676C13(); // tgen
};
//SIG(-1 S19676C13) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC2 BC4 vd Fi} vd Fi} BC7{ VBC3 VBC2 BC4 vd Fp Fi FC3[3] Fi[7]} BC3 BC4 vd}


 S19676C13 ::~S19676C13(){ note_dtor("S19676C13", this);}
S19676C13 ::S19676C13(){ note_ctor("S19676C13", this);} // tgen

static void Test_S19676C13()
{
  extern Class_Descriptor cd_S19676C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(32,72)];
    init_test(&cd_S19676C13, buf);
    S19676C13 *dp, &lv = *(dp=new (buf) S19676C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,284), "sizeof(S19676C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C13)");
    check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(368,212), "S19676C13");
    check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(368,212), "S19676C13");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(368,212), "S19676C13");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(368,212), "S19676C13");
    check_base_class_offset(lv, (S19676C9*)(S19676C15*), ABISELECT(368,212), "S19676C13");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*), ABISELECT(368,212), "S19676C13");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(368,212), "S19676C13");
    check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(264,156), "S19676C13");
    check_base_class_offset(lv, (S19676C8*), ABISELECT(264,156), "S19676C13");
    check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(264,156), "S19676C13");
    check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(264,156), "S19676C13");
    check_base_class_offset(lv, (S19676C8*)(S19676C15*), ABISELECT(264,156), "S19676C13");
    /*is_ambiguous_... S19676C14::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), ABISELECT(416,240), "S19676C13");
    /*is_ambiguous_... S19676C14::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), ABISELECT(480,280), "S19676C13");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(464,268), "S19676C13");
    check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(464,268), "S19676C13");
    check_base_class_offset(lv, (S19676C14*), ABISELECT(416,240), "S19676C13");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*), 0, "S19676C13");
    check_base_class_offset(lv, (S19676C15*), 0, "S19676C13");
    /*is_ambiguous_... S19676C13::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S19676C13");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*), ABISELECT(256,152), "S19676C13");
    test_class_info(&lv, &cd_S19676C13);
    dp->~S19676C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C13(Test_S19676C13, "S19676C13", ABISELECT(496,284));

#else // __cplusplus

extern void _ZN9S19676C13C1Ev();
extern void _ZN9S19676C13D2Ev();
Name_Map name_map_S19676C13[] = {
  NSPAIR(_ZN9S19676C13C1Ev),
  NSPAIR(_ZN9S19676C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
static Base_Class bases_S19676C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(368,212), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(264,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(264,156), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    ABISELECT(416,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(480,280), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(464,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(464,268), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(416,240), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19676C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(208,124), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C10,    ABISELECT(256,152), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C13[];
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
extern void ABISELECT(_ZThn208_N9S19676C13D1Ev,_ZThn124_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn208_N9S19676C13D0Ev,_ZThn124_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S19676C13D1Ev,_ZThn156_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn264_N9S19676C13D0Ev,_ZThn156_N9S19676C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C13D1Ev,_ZThn212_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn368_N9S19676C13D0Ev,_ZThn212_N9S19676C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn416_N9S19676C13D1Ev,_ZThn240_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn416_N9S19676C13D0Ev,_ZThn240_N9S19676C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn480_N9S19676C13D1Ev,_ZThn280_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn480_N9S19676C13D0Ev,_ZThn280_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C13[] = {
  ABISELECT(480,280),
  ABISELECT(416,240),
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N9S19676C13D1Ev,_ZThn124_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N9S19676C13D0Ev,_ZThn124_N9S19676C13D0Ev),
  ABISELECT(112,60),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
  ABISELECT(-416,-240),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-464,-268),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
  ABISELECT(-480,-280),
  ABISELECT(-112,-68),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C13[];
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C15__9S19676C13[] = {
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C15__A3__9S19676C13[] = {
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C10D1Ev,_ZThn212_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn368_N9S19676C10D0Ev,_ZThn212_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C15__A3__9S19676C13[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C15D1Ev,_ZThn212_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn368_N9S19676C15D0Ev,_ZThn212_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C15__9S19676C13[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn264_N9S19676C15D1Ev,_ZThn156_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn264_N9S19676C15D0Ev,_ZThn156_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C15__9S19676C13[] = {
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C13[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C10D1Ev,_ZThn60_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn112_N9S19676C10D0Ev,_ZThn60_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__A__9S19676C13[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C13[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__9S19676C13[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn104_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn104_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C13[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZThn104_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
extern void ABISELECT(_ZThn104_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C13[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C13[] = {
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C13[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A2__9S19676C13[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A2__9S19676C13[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__9S19676C13[] = {
  ABISELECT(200,112),
  ABISELECT(104,56),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__9S19676C13[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19676C14D1Ev,_ZThn40_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19676C14D0Ev,_ZThn40_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__9S19676C13[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__9S19676C13[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__9S19676C13[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__9S19676C13[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C13[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__A1__9S19676C13[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
static  VTT_ENTRY vtt_S19676C13[] = {
  {&(_ZTV9S19676C13[6]),  6,48},
  {&(_tg__ZTV9S19676C15__9S19676C13[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C15__A3__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C15__A3__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C15__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C15__9S19676C13[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__A__9S19676C13[3]),  3,5},
  {&(_ZTV9S19676C13[21]),  21,48},
  {&(_ZTV9S19676C13[26]),  26,48},
  {&(_ZTV9S19676C13[34]),  34,48},
  {&(_ZTV9S19676C13[46]),  46,48},
  {&(_ZTV9S19676C13[40]),  40,48},
  {&(_ZTV9S19676C13[15]),  15,48},
  {&(_tg__ZTV8S19676C8__9S19676C13[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C13[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C13[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C13[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A2__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A2__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__9S19676C13[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__9S19676C13[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__9S19676C13[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__9S19676C13[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__9S19676C13[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A1__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__A1__9S19676C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
static VTBL_ENTRY alt_thunk_names66[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C14D0Ev,_ZThn40_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C14D1Ev,_ZThn40_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19676C15D0Ev,_ZThn156_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19676C15D1Ev,_ZThn156_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C15D0Ev,_ZThn212_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C15D1Ev,_ZThn212_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19676C10D0Ev,_ZThn60_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C10D0Ev,_ZThn212_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19676C10D1Ev,_ZThn60_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C10D1Ev,_ZThn212_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S19676C13D0Ev,_ZThn240_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S19676C13D1Ev,_ZThn240_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C13D0Ev,_ZThn212_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C13D1Ev,_ZThn212_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S19676C13D0Ev,_ZThn280_N9S19676C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19676C13D0Ev,_ZThn156_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S19676C13D1Ev,_ZThn280_N9S19676C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19676C13D1Ev,_ZThn156_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C13 = {  "S19676C13", // class name
  bases_S19676C13, 12,
  &(vtc_S19676C13[0]), // expected_vtbl_contents
  &(vtt_S19676C13[0]), // expected_vtt_contents
  ABISELECT(496,284), // object size
  NSPAIRA(_ZTI9S19676C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19676C13),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C13),30, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names66,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C11  : virtual S19676C10 , virtual S19676C12 , S19676C8 , S19676C13 , S19676C14 {
  short s19676c11f0;
  virtual  ~S19676C11(); // _ZN9S19676C11D2Ev
  S19676C11(); // tgen
};
//SIG(-1 S19676C11) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ VBC5{ VBC3 BC2 Fp[10] Fi FL} BC2 vd Fi} BC5 BC6{ VBC5 VBC7{ BC3 VBC2 VBC5 BC4 vd Fi} BC8{ VBC3 VBC5 BC2 vd Fp Fi FC3[3] Fi[7]} BC3 BC2 vd} BC7 vd Fs}


 S19676C11 ::~S19676C11(){ note_dtor("S19676C11", this);}
S19676C11 ::S19676C11(){ note_ctor("S19676C11", this);} // tgen

static void Test_S19676C11()
{
  extern Class_Descriptor cd_S19676C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,99)];
    init_test(&cd_S19676C11, buf);
    S19676C11 *dp, &lv = *(dp=new (buf) S19676C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,392), "sizeof(S19676C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C11)");
    /*is_ambiguous_... S19676C11::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(464,260), "S19676C11");
    check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*), ABISELECT(456,256), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), ABISELECT(456,256), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), ABISELECT(456,256), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(528,296), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*), ABISELECT(528,296), "S19676C11");
    check_base_class_offset(lv, (S19676C8*)(S19676C13*), ABISELECT(528,296), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(528,296), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(528,296), "S19676C11");
    check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*), ABISELECT(528,296), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(528,296), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(528,296), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*), ABISELECT(512,288), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C12*), ABISELECT(512,288), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*), 0, "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C8*), 0, "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), ABISELECT(640,352), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(688,380), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(688,380), "S19676C11");
    check_base_class_offset(lv, (S19676C14*)(S19676C13*), ABISELECT(640,352), "S19676C11");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*), ABISELECT(112,56), "S19676C11");
    check_base_class_offset(lv, (S19676C15*)(S19676C13*), ABISELECT(112,56), "S19676C11");
    /*is_ambiguous_... S19676C13::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*), ABISELECT(320,180), "S19676C11");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*), ABISELECT(368,208), "S19676C11");
    check_base_class_offset(lv, (S19676C13*), ABISELECT(112,56), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), ABISELECT(384,212), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(432,240), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(432,240), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C14*), ABISELECT(384,212), "S19676C11");
    check_field_offset(lv, s19676c11f0, ABISELECT(448,252), "S19676C11.s19676c11f0");
    test_class_info(&lv, &cd_S19676C11);
    dp->~S19676C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C11(Test_S19676C11, "S19676C11", ABISELECT(704,392));

#else // __cplusplus

extern void _ZN9S19676C11C1Ev();
extern void _ZN9S19676C11D2Ev();
Name_Map name_map_S19676C11[] = {
  NSPAIR(_ZN9S19676C11C1Ev),
  NSPAIR(_ZN9S19676C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
static Base_Class bases_S19676C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(464,260), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(456,256), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    ABISELECT(528,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(528,296), //bcp->offset
    57, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(512,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(512,288), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19676C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(640,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(688,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(688,380), //bcp->offset
    71, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(640,352), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(320,180), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(368,208), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C13,    ABISELECT(112,56), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(384,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(432,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(432,240), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(384,212), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C11[];
extern void _ZN9S19676C11D1Ev();
extern void _ZN9S19676C11D0Ev();
extern void ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn320_N9S19676C11D1Ev,_ZThn180_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn320_N9S19676C11D0Ev,_ZThn180_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn456_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn456_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19676C11D1Ev,_ZThn260_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn464_N9S19676C11D0Ev,_ZThn260_N9S19676C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn512_N9S19676C11D1Ev,_ZThn288_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn512_N9S19676C11D0Ev,_ZThn288_N9S19676C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn528_N9S19676C11D1Ev,_ZThn296_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn528_N9S19676C11D0Ev,_ZThn296_N9S19676C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn640_N9S19676C11D1Ev,_ZThn352_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn640_N9S19676C11D0Ev,_ZThn352_N9S19676C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev)();
static  VTBL_ENTRY vtc_S19676C11[] = {
  ABISELECT(640,352),
  ABISELECT(528,296),
  ABISELECT(512,288),
  ABISELECT(456,256),
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&_ZN9S19676C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C11D0Ev,
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N9S19676C11D1Ev,_ZThn180_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N9S19676C11D0Ev,_ZThn180_N9S19676C11D0Ev),
  ABISELECT(96,52),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev),
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev),
  ABISELECT(-456,-256),
  ABISELECT(8,4),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev),
  ABISELECT(-512,-288),
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  ABISELECT(-512,-288),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev),
  ABISELECT(-528,-296),
  ABISELECT(-64,-36),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
  ABISELECT(-640,-352),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-640,-352),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev),
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C11[];
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__A__9S19676C11[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__A3__9S19676C11[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S19676C10D1Ev,_ZThn260_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn464_N9S19676C10D0Ev,_ZThn260_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__A3__9S19676C11[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZThn464_N8S19676C8D1Ev,_ZThn260_N8S19676C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
extern void ABISELECT(_ZThn464_N8S19676C8D0Ev,_ZThn260_N8S19676C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__A__9S19676C11[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C13__9S19676C11[] = {
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C13__9S19676C11[] = {
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C13__A5__9S19676C11[] = {
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn352_N9S19676C10D1Ev,_ZThn204_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn352_N9S19676C10D0Ev,_ZThn204_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A5__9S19676C11[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn352_N9S19676C15D1Ev,_ZThn204_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn352_N9S19676C15D0Ev,_ZThn204_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C13__9S19676C11[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn416_N9S19676C15D1Ev,_ZThn240_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn416_N9S19676C15D0Ev,_ZThn240_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C13__9S19676C11[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A6__9S19676C11[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn96_N9S19676C10D1Ev,_ZThn52_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn96_N9S19676C10D0Ev,_ZThn52_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C13__A6__9S19676C11[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn416_N9S19676C13D1Ev,_ZThn240_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn416_N9S19676C13D0Ev,_ZThn240_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C13__9S19676C11[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn352_N9S19676C13D1Ev,_ZThn204_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn352_N9S19676C13D0Ev,_ZThn204_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C13__9S19676C11[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn528_N9S19676C13D1Ev,_ZThn296_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn528_N9S19676C13D0Ev,_ZThn296_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C13__9S19676C11[] = {
  ABISELECT(-528,-296),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn344_N9S19676C13D1Ev,_ZThn200_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn344_N9S19676C13D0Ev,_ZThn200_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C13__9S19676C11[] = {
  ABISELECT(-344,-200),
  ABISELECT(8,4),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C13__9S19676C11[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C13__9S19676C11[] = {
  ABISELECT(96,52),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__A__9S19676C11[] = {
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A2__9S19676C11[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A7__9S19676C11[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn32_N9S19676C10D1Ev,_ZThn20_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn32_N9S19676C10D0Ev,_ZThn20_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A7__9S19676C11[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S19676C12D1Ev,_ZThn56_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S19676C12D0Ev,_ZThn56_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__A2__9S19676C11[] = {
  ABISELECT(-96,-56),
  ABISELECT(-64,-36),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19676C12D1Ev,_ZThn20_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S19676C12D0Ev,_ZThn20_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__A2__9S19676C11[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn72_N9S19676C14D1Ev,_ZThn44_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn72_N9S19676C14D0Ev,_ZThn44_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__A__9S19676C11[] = {
  ABISELECT(-72,-44),
  ABISELECT(8,4),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S19676C14D1Ev,_ZThn48_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S19676C14D0Ev,_ZThn48_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__A__9S19676C11[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn144_N9S19676C14D1Ev,_ZThn84_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn144_N9S19676C14D0Ev,_ZThn84_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__A__9S19676C11[] = {
  ABISELECT(-144,-84),
  ABISELECT(-64,-36),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__A__9S19676C11[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C11[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn8_N9S19676C10D1Ev,_ZThn4_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn8_N9S19676C10D0Ev,_ZThn4_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__9S19676C11[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C11[] = {
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C12__A2__9S19676C11[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C12__A2__9S19676C11[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn8_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn8_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C12__9S19676C11[] = {
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C12__9S19676C11[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C11[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__A1__9S19676C11[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__A1__9S19676C11[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C11[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C11[] = {
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__9S19676C11[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A4__9S19676C11[] = {
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A4__9S19676C11[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__A1__9S19676C11[] = {
  ABISELECT(160,84),
  ABISELECT(-64,-36),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__A1__9S19676C11[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__9S19676C11[] = {
  ABISELECT(184,96),
  ABISELECT(8,4),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__9S19676C11[] = {
  ABISELECT(176,92),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__9S19676C11[] = {
  ABISELECT(112,56),
  ABISELECT(-64,-36),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__9S19676C11[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
static  VTT_ENTRY vtt_S19676C11[] = {
  {&(_ZTV9S19676C11[7]),  7,77},
  {&(_tg__ZTV8S19676C8__A__9S19676C11[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__A3__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__A3__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__A__9S19676C11[3]),  3,5},
  {&(_tg__ZTV9S19676C13__9S19676C11[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C13__9S19676C11[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C13__A5__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A5__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C13__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C13__9S19676C11[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A6__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C13__A6__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C13__9S19676C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C13__9S19676C11[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C13__9S19676C11[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C13__9S19676C11[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C13__9S19676C11[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C13__9S19676C11[3]),  3,5},
  {&(_tg__ZTV9S19676C14__A__9S19676C11[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A2__9S19676C11[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A7__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A7__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__A2__9S19676C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__A2__9S19676C11[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__A__9S19676C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__A__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__A__9S19676C11[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__A__9S19676C11[4]),  4,6},
  {&(_ZTV9S19676C11[43]),  43,77},
  {&(_ZTV9S19676C11[48]),  48,77},
  {&(_ZTV9S19676C11[55]),  55,77},
  {&(_ZTV9S19676C11[61]),  61,77},
  {&(_ZTV9S19676C11[15]),  15,77},
  {&(_ZTV9S19676C11[69]),  69,77},
  {&(_ZTV9S19676C11[75]),  75,77},
  {&(_ZTV9S19676C11[24]),  24,77},
  {&(_ZTV9S19676C11[31]),  31,77},
  {&(_ZTV9S19676C11[37]),  37,77},
  {&(_tg__ZTV9S19676C10__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__9S19676C11[3]),  3,5},
  {&(_tg__ZTV9S19676C12__9S19676C11[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C12__A2__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C12__A2__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C12__9S19676C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C12__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C11[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__A1__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__A1__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C11[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C11[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A1__9S19676C11[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A4__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A4__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__A1__9S19676C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__A1__9S19676C11[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__9S19676C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__9S19676C11[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__9S19676C11[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19676C11[];
extern  VTBL_ENTRY _ZTV9S19676C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C11[];
static VTBL_ENTRY alt_thunk_names67[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C14D0Ev,_ZThn48_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C14D1Ev,_ZThn48_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C14D0Ev,_ZThn84_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19676C14D0Ev,_ZThn44_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C14D1Ev,_ZThn84_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19676C14D1Ev,_ZThn44_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C12D0Ev,_ZThn20_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C12D1Ev,_ZThn20_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn8_N9S19676C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19676C12D0Ev,_ZThn56_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn8_N9S19676C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19676C12D1Ev,_ZThn56_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N9S19676C13D0Ev,_ZThn296_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N9S19676C13D1Ev,_ZThn296_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C13D0Ev,_ZThn204_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C13D1Ev,_ZThn204_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S19676C13D0Ev,_ZThn200_N9S19676C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S19676C13D0Ev,_ZThn240_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S19676C13D1Ev,_ZThn200_N9S19676C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S19676C13D1Ev,_ZThn240_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S19676C15D0Ev,_ZThn240_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S19676C15D1Ev,_ZThn240_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C15D0Ev,_ZThn204_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C15D1Ev,_ZThn204_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19676C8D0Ev,_ZThn260_N8S19676C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19676C8D1Ev,_ZThn260_N8S19676C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19676C10D0Ev,_ZThn4_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C10D0Ev,_ZThn20_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19676C10D0Ev,_ZThn52_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C10D0Ev,_ZThn204_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C10D0Ev,_ZThn260_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19676C10D1Ev,_ZThn4_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C10D1Ev,_ZThn20_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19676C10D1Ev,_ZThn52_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C10D1Ev,_ZThn204_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C10D1Ev,_ZThn260_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N9S19676C11D0Ev,_ZThn352_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N9S19676C11D1Ev,_ZThn352_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S19676C11D0Ev,_ZThn288_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S19676C11D1Ev,_ZThn288_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C11D0Ev,_ZThn260_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C11D1Ev,_ZThn260_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N9S19676C11D0Ev,_ZThn296_N9S19676C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N9S19676C11D1Ev,_ZThn296_N9S19676C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C11 = {  "S19676C11", // class name
  bases_S19676C11, 21,
  &(vtc_S19676C11[0]), // expected_vtbl_contents
  &(vtt_S19676C11[0]), // expected_vtt_contents
  ABISELECT(704,392), // object size
  NSPAIRA(_ZTI9S19676C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19676C11),77, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C11),60, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names67,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C7  : virtual S19676C8 , virtual S19676C11 , virtual S19676C13 , virtual S19676C2 , S19676C14 {
  short s19676c7f0;
  void *s19676c7f1[2];
  ~S19676C7(); // tgen
  S19676C7(); // tgen
};
//SIG(-1 S19676C7) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} VBC5{ VBC4 VBC6{ VBC2 BC4 vd Fi} BC2 BC7{ VBC2 VBC8{ BC3 VBC4 VBC2 BC6 vd Fi} BC9{ VBC3 VBC2 BC4 vd Fp Fi FC3[3] Fi[7]} BC3 BC4 vd} BC8 vd Fs} VBC7 VBC10{ m FC11{} Fi[3]} BC8 Fs Fp[2]}


S19676C7 ::~S19676C7(){ note_dtor("S19676C7", this);} // tgen
S19676C7 ::S19676C7(){ note_ctor("S19676C7", this);} // tgen

static void Test_S19676C7()
{
  extern Class_Descriptor cd_S19676C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(68,155)];
    init_test(&cd_S19676C7, buf);
    S19676C7 *dp, &lv = *(dp=new (buf) S19676C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1072,616), "sizeof(S19676C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C7)");
    /*is_ambiguous_... S19676C7::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*)(S19676C11*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*)(S19676C11*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(192,108), "S19676C7");
    check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*)(S19676C11*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C8*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*), ABISELECT(88,52), "S19676C7");
    check_base_class_offset(lv, (S19676C8*)(S19676C13*)(S19676C11*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(88,52), "S19676C7");
    check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*)(S19676C11*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C13*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C11*), ABISELECT(696,392), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), ABISELECT(696,392), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*)(S19676C11*), ABISELECT(696,392), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), ABISELECT(696,392), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*), ABISELECT(704,396), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C11*), ABISELECT(704,396), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*)(S19676C11*), ABISELECT(240,136), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C11*), ABISELECT(240,136), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), ABISELECT(720,404), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(768,432), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(768,432), "S19676C7");
    check_base_class_offset(lv, (S19676C14*)(S19676C13*)(S19676C11*), ABISELECT(720,404), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C13*), ABISELECT(720,404), "S19676C7");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(352,192), "S19676C7");
    check_base_class_offset(lv, (S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(352,192), "S19676C7");
    /*is_ambiguous_... S19676C13::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*)(S19676C11*), ABISELECT(560,316), "S19676C7");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*)(S19676C11*), ABISELECT(608,344), "S19676C7");
    check_base_class_offset(lv, (S19676C13*)(S19676C11*), ABISELECT(352,192), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*)(S19676C11*), ABISELECT(624,348), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(672,376), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(672,376), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C11*), ABISELECT(624,348), "S19676C7");
    check_base_class_offset(lv, (S19676C11*), ABISELECT(240,136), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*), ABISELECT(784,444), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C15*)(S19676C13*), ABISELECT(784,444), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*), ABISELECT(992,568), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*), ABISELECT(1040,596), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C13*), ABISELECT(784,444), "S19676C7");
    check_base_class_offset(lv, (S19676C2*), ABISELECT(1048,600), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), 0, "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(48,28), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(48,28), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C14*), 0, "S19676C7");
    check_field_offset(lv, s19676c7f0, ABISELECT(64,40), "S19676C7.s19676c7f0");
    check_field_offset(lv, s19676c7f1, ABISELECT(72,44), "S19676C7.s19676c7f1");
    test_class_info(&lv, &cd_S19676C7);
    dp->~S19676C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C7(Test_S19676C7, "S19676C7", ABISELECT(1072,616));

#else // __cplusplus

extern void _ZN8S19676C7C1Ev();
extern void _ZN8S19676C7D1Ev();
Name_Map name_map_S19676C7[] = {
  NSPAIR(_ZN8S19676C7C1Ev),
  NSPAIR(_ZN8S19676C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C11;
extern VTBL_ENTRY _ZTI9S19676C11[];
extern  VTBL_ENTRY _ZTV9S19676C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C11[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
static Base_Class bases_S19676C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(192,108), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(88,52), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    ABISELECT(696,392), //bcp->offset
    69, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(704,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(704,396), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(720,404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(768,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(768,432), //bcp->offset
    90, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(720,404), //bcp->offset
    82, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(560,316), //bcp->offset
    47, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(608,344), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C13,    ABISELECT(352,192), //bcp->offset
    39, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(624,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(672,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(672,376), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(624,348), //bcp->offset
    56, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C11,    ABISELECT(240,136), //bcp->offset
    29, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    ABISELECT(784,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(784,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(992,568), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(1040,596), //bcp->offset
    109, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C13,    ABISELECT(784,444), //bcp->offset
    96, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    ABISELECT(1048,600), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(48,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19676C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19676C7[];
extern void _ZN8S19676C7D1Ev();
extern void _ZN8S19676C7D0Ev();
extern void ABISELECT(_ZThn48_N8S19676C7D1Ev,_ZThn28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S19676C7D0Ev,_ZThn28_N8S19676C7D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn88_N8S19676C7D1Ev,_ZThn52_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn88_N8S19676C7D0Ev,_ZThn52_N8S19676C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C7D1Ev,_ZTv0_n12_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn192_N8S19676C7D1Ev,_ZThn108_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C7D0Ev,_ZTv0_n12_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn192_N8S19676C7D0Ev,_ZThn108_N8S19676C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19676C7D1Ev,_ZTv0_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn240_N8S19676C7D1Ev,_ZThn136_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19676C7D0Ev,_ZTv0_n32_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn240_N8S19676C7D0Ev,_ZThn136_N8S19676C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N8S19676C7D1Ev,_ZTvn56_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S19676C7D0Ev,_ZTvn56_n32_N8S19676C7D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S19676C7D1Ev,_ZTvn180_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S19676C7D0Ev,_ZTvn180_n32_N8S19676C7D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S19676C7D1Ev,_ZTvn208_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S19676C7D0Ev,_ZTvn208_n32_N8S19676C7D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S19676C7D1Ev,_ZTvn212_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S19676C7D0Ev,_ZTvn212_n32_N8S19676C7D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S19676C7D1Ev,_ZTvn240_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S19676C7D0Ev,_ZTvn240_n32_N8S19676C7D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn696_N8S19676C7D1Ev,_ZThn392_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn696_N8S19676C7D0Ev,_ZThn392_N8S19676C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19676C7D1Ev,_ZTv0_n20_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn704_N8S19676C7D1Ev,_ZThn396_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19676C7D0Ev,_ZTv0_n20_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn704_N8S19676C7D0Ev,_ZThn396_N8S19676C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19676C7D1Ev,_ZTv0_n24_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn720_N8S19676C7D1Ev,_ZThn404_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19676C7D0Ev,_ZTv0_n24_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn720_N8S19676C7D0Ev,_ZThn404_N8S19676C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S19676C7D1Ev,_ZTvn28_n24_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19676C7D0Ev,_ZTvn28_n24_N8S19676C7D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S19676C7D1Ev,_ZTv0_n28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn784_N8S19676C7D1Ev,_ZThn444_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19676C7D0Ev,_ZTv0_n28_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn784_N8S19676C7D0Ev,_ZThn444_N8S19676C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N8S19676C7D1Ev,_ZTvn124_n28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S19676C7D0Ev,_ZTvn124_n28_N8S19676C7D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S19676C7D1Ev,_ZTvn152_n28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S19676C7D0Ev,_ZTvn152_n28_N8S19676C7D0Ev)();
static  VTBL_ENTRY vtc_S19676C7[] = {
  ABISELECT(1048,600),
  ABISELECT(784,444),
  ABISELECT(720,404),
  ABISELECT(704,396),
  ABISELECT(240,136),
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(696,392),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&_ZN8S19676C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C7D0Ev,
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19676C7D1Ev,_ZThn28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19676C7D0Ev,_ZThn28_N8S19676C7D0Ev),
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C7D1Ev,_ZTv0_n12_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C7D0Ev,_ZTv0_n12_N8S19676C7D0Ev),
  ABISELECT(-240,-136),
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C7D1Ev,_ZTv0_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C7D0Ev,_ZTv0_n32_N8S19676C7D0Ev),
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C7D1Ev,_ZTvn56_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C7D0Ev,_ZTvn56_n32_N8S19676C7D0Ev),
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C7D1Ev,_ZTvn180_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C7D0Ev,_ZTvn180_n32_N8S19676C7D0Ev),
  ABISELECT(-416,-236),
  ABISELECT(-608,-344),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C7D1Ev,_ZTvn208_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C7D0Ev,_ZTvn208_n32_N8S19676C7D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C7D1Ev,_ZTvn212_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C7D0Ev,_ZTvn212_n32_N8S19676C7D0Ev),
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C7D1Ev,_ZTvn240_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C7D0Ev,_ZTvn240_n32_N8S19676C7D0Ev),
  ABISELECT(-696,-392),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev),
  ABISELECT(-704,-396),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-704,-396),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C7D1Ev,_ZTv0_n20_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C7D0Ev,_ZTv0_n20_N8S19676C7D0Ev),
  ABISELECT(-720,-404),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-720,-404),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C7D1Ev,_ZTv0_n24_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C7D0Ev,_ZTv0_n24_N8S19676C7D0Ev),
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-768,-432),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C7D1Ev,_ZTvn28_n24_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C7D0Ev,_ZTvn28_n24_N8S19676C7D0Ev),
  ABISELECT(-784,-444),
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  ABISELECT(-784,-444),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C7D1Ev,_ZTv0_n28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C7D0Ev,_ZTv0_n28_N8S19676C7D0Ev),
  ABISELECT(-992,-568),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C7D1Ev,_ZTvn124_n28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C7D0Ev,_ZTvn124_n28_N8S19676C7D0Ev),
  ABISELECT(-848,-488),
  ABISELECT(-1040,-596),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C7D1Ev,_ZTvn152_n28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C7D0Ev,_ZTvn152_n28_N8S19676C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19676C7[];
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__A__8S19676C7[] = {
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(696,392),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A3__8S19676C7[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A10__8S19676C7[] = {
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn144_N9S19676C10D1Ev,_ZThn80_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn144_N9S19676C10D0Ev,_ZThn80_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A10__8S19676C7[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn40_N9S19676C12D1Ev,_ZThn24_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn40_N9S19676C12D0Ev,_ZThn24_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__A3__8S19676C7[] = {
  ABISELECT(-40,-24),
  ABISELECT(104,56),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn144_N9S19676C12D1Ev,_ZThn80_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn144_N9S19676C12D0Ev,_ZThn80_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__A3__8S19676C7[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn696_N9S19676C14D1Ev,_ZThn392_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn696_N9S19676C14D0Ev,_ZThn392_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__A__8S19676C7[] = {
  ABISELECT(-696,-392),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn192_N9S19676C14D1Ev,_ZThn108_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn192_N9S19676C14D0Ev,_ZThn108_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__A__8S19676C7[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn88_N9S19676C14D1Ev,_ZThn52_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn88_N9S19676C14D0Ev,_ZThn52_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__A__8S19676C7[] = {
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__A__8S19676C7[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__8S19676C7[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__8S19676C7[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn104_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn104_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__8S19676C7[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZThn104_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
extern void ABISELECT(_ZThn104_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__8S19676C7[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C11D1Ev();
extern void _ZN9S19676C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C11__8S19676C7[] = {
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&_ZN9S19676C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C11D0Ev,
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C89S19676C11__A1__8S19676C7[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C89S19676C11__A3__8S19676C7[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C89S19676C11__A3__8S19676C7[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C89S19676C11__A1__8S19676C7[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C7[] = {
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C7[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C7[] = {
  ABISELECT(-416,-236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C139S19676C11__A6__8S19676C7[] = {
  ABISELECT(416,236),
  ABISELECT(416,236),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C13D1Ev,_ZThn212_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn368_N9S19676C13D0Ev,_ZThn212_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(-368,-212),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn344_N9S19676C13D1Ev,_ZThn200_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn344_N9S19676C13D0Ev,_ZThn200_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(-344,-200),
  ABISELECT(-504,-284),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(-416,-236),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C149S19676C11__A1__8S19676C7[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C7[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C7[] = {
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C7[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C149S19676C11__A2__8S19676C7[] = {
  ABISELECT(584,324),
  ABISELECT(104,56),
  ABISELECT(584,324),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C149S19676C11__A2__8S19676C7[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn72_N9S19676C14D1Ev,_ZThn44_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn72_N9S19676C14D0Ev,_ZThn44_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C149S19676C11__A1__8S19676C7[] = {
  ABISELECT(-72,-44),
  ABISELECT(-504,-284),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C149S19676C11__A1__8S19676C7[] = {
  ABISELECT(432,240),
  ABISELECT(432,240),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C149S19676C11__A1__8S19676C7[] = {
  ABISELECT(536,296),
  ABISELECT(104,56),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C149S19676C11__A1__8S19676C7[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn456_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn456_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C11__8S19676C7[] = {
  ABISELECT(-456,-256),
  ABISELECT(-504,-284),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C11__8S19676C7[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19676C11D1Ev,_ZThn260_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn464_N9S19676C11D0Ev,_ZThn260_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C11__8S19676C7[] = {
  ABISELECT(-464,-260),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C11__8S19676C7[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C13__9S19676C11__8S19676C7[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn480_N9S19676C11D1Ev,_ZThn268_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn480_N9S19676C11D0Ev,_ZThn268_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C11__8S19676C7[] = {
  ABISELECT(-480,-268),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-480,-268),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__9S19676C11__8S19676C7[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A6__9S19676C11__8S19676C7[] = {
  ABISELECT(-416,-236),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__A__9S19676C11__8S19676C7[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A2__9S19676C11__8S19676C7[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__8S19676C7[] = {
  ABISELECT(-504,-284),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__A1__8S19676C7[] = {
  ABISELECT(504,284),
  ABISELECT(504,284),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C12__8S19676C7[] = {
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C12__A2__8S19676C7[] = {
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C12__A2__8S19676C7[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C12__8S19676C7[] = {
  ABISELECT(616,344),
  ABISELECT(104,56),
  ABISELECT(616,344),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C12__8S19676C7[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__8S19676C7[] = {
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__8S19676C7[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A4__8S19676C7[] = {
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A4__8S19676C7[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__A1__8S19676C7[] = {
  ABISELECT(680,380),
  ABISELECT(104,56),
  ABISELECT(680,380),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__A1__8S19676C7[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__8S19676C7[] = {
  ABISELECT(24,12),
  ABISELECT(-504,-284),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__8S19676C7[] = {
  ABISELECT(528,296),
  ABISELECT(528,296),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__8S19676C7[] = {
  ABISELECT(632,352),
  ABISELECT(104,56),
  ABISELECT(632,352),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__8S19676C7[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C13__A1__8S19676C7[] = {
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C13__A1__8S19676C7[] = {
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C13__A8__8S19676C7[] = {
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A8__8S19676C7[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C13__A1__8S19676C7[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C13__A1__8S19676C7[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A9__8S19676C7[] = {
  ABISELECT(-848,-488),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C13__A9__8S19676C7[] = {
  ABISELECT(848,488),
  ABISELECT(848,488),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C13__A1__8S19676C7[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C13__A1__8S19676C7[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C13__A1__8S19676C7[] = {
  ABISELECT(64,40),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C13__A1__8S19676C7[] = {
  ABISELECT(88,52),
  ABISELECT(-504,-284),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C13__A1__8S19676C7[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C13__A1__8S19676C7[] = {
  ABISELECT(-848,-488),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
static  VTT_ENTRY vtt_S19676C7[] = {
  {&(_ZTV8S19676C7[10]),  10,114},
  {&(_tg__ZTV9S19676C14__A__8S19676C7[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A3__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A10__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A10__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__A3__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__A3__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__A__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__A__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__A__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__A__8S19676C7[4]),  4,6},
  {&(_ZTV8S19676C7[22]),  22,114},
  {&(_ZTV8S19676C7[27]),  27,114},
  {&(_ZTV8S19676C7[37]),  37,114},
  {&(_ZTV8S19676C7[73]),  73,114},
  {&(_ZTV8S19676C7[80]),  80,114},
  {&(_ZTV8S19676C7[45]),  45,114},
  {&(_ZTV8S19676C7[88]),  88,114},
  {&(_ZTV8S19676C7[94]),  94,114},
  {&(_ZTV8S19676C7[49]),  49,114},
  {&(_ZTV8S19676C7[54]),  54,114},
  {&(_ZTV8S19676C7[61]),  61,114},
  {&(_ZTV8S19676C7[67]),  67,114},
  {&(_ZTV8S19676C7[103]),  103,114},
  {&(_ZTV8S19676C7[107]),  107,114},
  {&(_ZTV8S19676C7[112]),  112,114},
  {&(_ZTV8S19676C7[16]),  16,114},
  {&(_tg__ZTV8S19676C8__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C11__8S19676C7[7]),  7,9},
  {&(_tg__ZTV8S19676C89S19676C11__A1__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C89S19676C11__A3__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C89S19676C11__A3__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C89S19676C11__A1__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C139S19676C11__8S19676C7[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C139S19676C11__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C139S19676C11__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C139S19676C11__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C139S19676C11__A6__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C139S19676C11__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C139S19676C11__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C139S19676C11__8S19676C7[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C139S19676C11__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C139S19676C11__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C139S19676C11__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C149S19676C11__A1__8S19676C7[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C149S19676C11__A2__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C149S19676C11__A2__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C149S19676C11__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C149S19676C11__A1__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C149S19676C11__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C149S19676C11__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C10__9S19676C11__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C11__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C12__9S19676C11__8S19676C7[5]),  5,7},
  {&(_tg__ZTV8S19676C8__9S19676C11__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C13__9S19676C11__8S19676C7[6]),  6,8},
  {&(_tg__ZTV9S19676C14__9S19676C11__8S19676C7[6]),  6,8},
  {&(_tg__ZTV9S19676C129S19676C14__A1__9S19676C11__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A6__9S19676C11__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C14__A__9S19676C11__8S19676C7[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A2__9S19676C11__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A1__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__A1__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C12__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C12__A2__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C12__A2__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C12__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C12__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C14__8S19676C7[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A4__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A4__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__A1__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C13__A1__8S19676C7[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C13__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C13__A8__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A8__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C13__A1__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C13__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A9__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C13__A9__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C13__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C13__A1__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C13__A1__8S19676C7[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C13__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C13__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C13__A1__8S19676C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19676C7[];
extern  VTBL_ENTRY _ZTV8S19676C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C7[];
static VTBL_ENTRY alt_thunk_names68[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S19676C11D0Ev,_ZThn268_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S19676C11D1Ev,_ZThn268_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C11D0Ev,_ZThn260_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C11D1Ev,_ZThn260_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S19676C13D0Ev,_ZThn200_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S19676C13D1Ev,_ZThn200_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C13D0Ev,_ZThn212_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C13D1Ev,_ZThn212_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19676C14D0Ev,_ZThn108_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19676C14D1Ev,_ZThn108_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19676C14D0Ev,_ZThn44_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19676C14D0Ev,_ZThn52_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn696_N9S19676C14D0Ev,_ZThn392_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19676C14D1Ev,_ZThn44_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19676C14D1Ev,_ZThn52_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn696_N9S19676C14D1Ev,_ZThn392_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C12D0Ev,_ZThn80_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C12D1Ev,_ZThn80_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19676C12D0Ev,_ZThn24_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19676C12D1Ev,_ZThn24_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C10D0Ev,_ZThn80_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C10D1Ev,_ZThn80_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C7D0Ev,_ZTv0_n28_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19676C7D0Ev,_ZThn444_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C7D1Ev,_ZTv0_n28_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19676C7D1Ev,_ZThn444_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C7D0Ev,_ZTv0_n24_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19676C7D0Ev,_ZThn404_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C7D1Ev,_ZTv0_n24_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19676C7D1Ev,_ZThn404_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C7D0Ev,_ZTv0_n20_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N8S19676C7D0Ev,_ZThn396_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C7D1Ev,_ZTv0_n20_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N8S19676C7D1Ev,_ZThn396_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C7D0Ev,_ZTv0_n32_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19676C7D0Ev,_ZThn136_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C7D1Ev,_ZTv0_n32_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19676C7D1Ev,_ZThn136_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C7D0Ev,_ZTv0_n12_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19676C7D0Ev,_ZThn108_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C7D1Ev,_ZTv0_n12_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19676C7D1Ev,_ZThn108_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S19676C7D0Ev,_ZThn392_N8S19676C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19676C7D0Ev,_ZThn52_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S19676C7D1Ev,_ZThn392_N8S19676C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19676C7D1Ev,_ZThn52_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C7 = {  "S19676C7", // class name
  bases_S19676C7, 32,
  &(vtc_S19676C7[0]), // expected_vtbl_contents
  &(vtt_S19676C7[0]), // expected_vtt_contents
  ABISELECT(1072,616), // object size
  NSPAIRA(_ZTI8S19676C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19676C7),114, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19676C7),101, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names68,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C17  : virtual S19676C10 , virtual S19676C14 , virtual S19676C2 {
  int s19676c17f0;
  virtual  ~S19676C17(); // _ZN9S19676C17D2Ev
  S19676C17(); // tgen
};
//SIG(-1 S19676C17) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ BC3 VBC2 VBC5{ VBC3 BC2 Fp[10] Fi FL} BC6{ VBC5 BC2 vd Fi} vd Fi} VBC7{ m FC8{} Fi[3]} vd Fi}


 S19676C17 ::~S19676C17(){ note_dtor("S19676C17", this);}
S19676C17 ::S19676C17(){ note_ctor("S19676C17", this);} // tgen

static void Test_S19676C17()
{
  extern Class_Descriptor cd_S19676C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,38)];
    init_test(&cd_S19676C17, buf);
    S19676C17 *dp, &lv = *(dp=new (buf) S19676C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,148), "sizeof(S19676C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C17)");
    /*is_ambiguous_... S19676C17::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(16,8), "S19676C17");
    check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(16,8), "S19676C17");
    check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(16,8), "S19676C17");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(16,8), "S19676C17");
    /*is_ambiguous_... S19676C17::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*), 0, "S19676C17");
    /*is_ambiguous_... S19676C14::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), 0, "S19676C17");
    /*is_ambiguous_... S19676C14::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), ABISELECT(64,36), "S19676C17");
    check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(128,76), "S19676C17");
    check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(128,76), "S19676C17");
    check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(128,76), "S19676C17");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(112,64), "S19676C17");
    check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(112,64), "S19676C17");
    check_base_class_offset(lv, (S19676C14*), ABISELECT(64,36), "S19676C17");
    check_base_class_offset(lv, (S19676C2*), ABISELECT(232,132), "S19676C17");
    check_field_offset(lv, s19676c17f0, ABISELECT(8,4), "S19676C17.s19676c17f0");
    test_class_info(&lv, &cd_S19676C17);
    dp->~S19676C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C17(Test_S19676C17, "S19676C17", ABISELECT(256,148));

#else // __cplusplus

extern void _ZN9S19676C17C1Ev();
extern void _ZN9S19676C17D2Ev();
Name_Map name_map_S19676C17[] = {
  NSPAIR(_ZN9S19676C17C1Ev),
  NSPAIR(_ZN9S19676C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
static Base_Class bases_S19676C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19676C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(128,76), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(112,64), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(64,36), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    ABISELECT(232,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C17[];
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void _ZN9S19676C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void _ZN9S19676C17D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C17D1Ev,_ZThn8_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C17D0Ev,_ZThn8_N9S19676C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S19676C17D1Ev,_ZThn36_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S19676C17D0Ev,_ZThn36_N9S19676C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn128_N9S19676C17D1Ev,_ZThn76_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn128_N9S19676C17D0Ev,_ZThn76_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C17[] = {
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(64,36),
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev),
  ABISELECT(-128,-76),
  ABISELECT(-112,-68),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C17[];
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C17[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C10D1Ev,_ZThn8_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C10D0Ev,_ZThn8_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__9S19676C17[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C17[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C17[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A2__9S19676C17[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A2__9S19676C17[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn12_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn12_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__9S19676C17[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__9S19676C17[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__9S19676C17[] = {
  ABISELECT(64,36),
  ABISELECT(16,8),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__9S19676C17[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19676C14D1Ev,_ZThn40_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19676C14D0Ev,_ZThn40_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__9S19676C17[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__9S19676C17[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C17[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__A1__9S19676C17[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__A1__9S19676C17[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C17[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
static  VTT_ENTRY vtt_S19676C17[] = {
  {&(_ZTV9S19676C17[8]),  8,35},
  {&(_ZTV9S19676C17[8]),  8,35},
  {&(_ZTV9S19676C17[13]),  13,35},
  {&(_ZTV9S19676C17[21]),  21,35},
  {&(_ZTV9S19676C17[33]),  33,35},
  {&(_ZTV9S19676C17[27]),  27,35},
  {&(_tg__ZTV9S19676C10__9S19676C17[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__9S19676C17[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C17[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C17[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A2__9S19676C17[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A2__9S19676C17[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__9S19676C17[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__9S19676C17[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__9S19676C17[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__9S19676C17[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__9S19676C17[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__9S19676C17[4]),  4,6},
  {&(_tg__ZTV8S19676C8__9S19676C17[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__A1__9S19676C17[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__A1__9S19676C17[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19676C17[];
extern  VTBL_ENTRY _ZTV9S19676C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C17[];
static VTBL_ENTRY alt_thunk_names69[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C14D0Ev,_ZThn40_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C14D1Ev,_ZThn40_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn12_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn12_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C10D0Ev,_ZThn8_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C10D1Ev,_ZThn8_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C17D0Ev,_ZThn36_N9S19676C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C17D1Ev,_ZThn36_N9S19676C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C17D0Ev,_ZThn8_N9S19676C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C17D1Ev,_ZThn8_N9S19676C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C17D0Ev,_ZThn76_N9S19676C17D0Ev),
  (VTBL_ENTRY)_ZN9S19676C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C17D1Ev,_ZThn76_N9S19676C17D1Ev),
  (VTBL_ENTRY)_ZN9S19676C17D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C17 = {  "S19676C17", // class name
  bases_S19676C17, 9,
  &(vtc_S19676C17[0]), // expected_vtbl_contents
  &(vtt_S19676C17[0]), // expected_vtt_contents
  ABISELECT(256,148), // object size
  NSPAIRA(_ZTI9S19676C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19676C17),35, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C17),22, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names69,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C16  : virtual S19676C17 , S19676C15 {
  virtual  ~S19676C16(); // _ZN9S19676C16D2Ev
  S19676C16(); // tgen
};
//SIG(-1 S19676C16) C1{ VBC2{ VBC3{ VBC4{ vd m Fp Fi Fc FD} vd} VBC5{ BC4 VBC3 VBC6{ VBC4 BC3 Fp[10] Fi FL} BC7{ VBC6 BC3 vd Fi} vd Fi} VBC8{ m FC9{} Fi[3]} vd Fi} BC10{ VBC4 VBC6 BC3 vd Fp Fi FC4[3] Fi[7]} vd}


 S19676C16 ::~S19676C16(){ note_dtor("S19676C16", this);}
S19676C16 ::S19676C16(){ note_ctor("S19676C16", this);} // tgen

static void Test_S19676C16()
{
  extern Class_Descriptor cd_S19676C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,69)];
    init_test(&cd_S19676C16, buf);
    S19676C16 *dp, &lv = *(dp=new (buf) S19676C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,272), "sizeof(S19676C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C16)");
    /*is_ambiguous_... S19676C16::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(224,132), "S19676C16");
    check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(224,132), "S19676C16");
    check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(224,132), "S19676C16");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(224,132), "S19676C16");
    check_base_class_offset(lv, (S19676C9*)(S19676C15*), ABISELECT(224,132), "S19676C16");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*), ABISELECT(224,132), "S19676C16");
    /*is_ambiguous_... S19676C17::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C17*), ABISELECT(208,124), "S19676C16");
    /*is_ambiguous_... S19676C14::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), ABISELECT(208,124), "S19676C16");
    /*is_ambiguous_... S19676C14::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), ABISELECT(272,160), "S19676C16");
    check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(336,200), "S19676C16");
    check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(336,200), "S19676C16");
    check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(336,200), "S19676C16");
    check_base_class_offset(lv, (S19676C8*)(S19676C15*), ABISELECT(336,200), "S19676C16");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(320,188), "S19676C16");
    check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(320,188), "S19676C16");
    check_base_class_offset(lv, (S19676C14*)(S19676C17*), ABISELECT(272,160), "S19676C16");
    check_base_class_offset(lv, (S19676C2*)(S19676C17*), ABISELECT(440,256), "S19676C16");
    check_base_class_offset(lv, (S19676C17*), ABISELECT(208,124), "S19676C16");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*), 0, "S19676C16");
    check_base_class_offset(lv, (S19676C15*), 0, "S19676C16");
    test_class_info(&lv, &cd_S19676C16);
    dp->~S19676C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C16(Test_S19676C16, "S19676C16", ABISELECT(464,272));

#else // __cplusplus

extern void _ZN9S19676C16C1Ev();
extern void _ZN9S19676C16D2Ev();
Name_Map name_map_S19676C16[] = {
  NSPAIR(_ZN9S19676C16C1Ev),
  NSPAIR(_ZN9S19676C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C17;
extern VTBL_ENTRY _ZTI9S19676C17[];
extern  VTBL_ENTRY _ZTV9S19676C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C17[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
static Base_Class bases_S19676C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(224,132), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(208,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19676C9,    ABISELECT(272,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(336,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(336,200), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(320,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(320,188), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(272,160), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(440,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19676C17,    ABISELECT(208,124), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19676C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C16[];
extern void _ZN9S19676C16D1Ev();
extern void _ZN9S19676C16D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn208_N9S19676C16D1Ev,_ZThn124_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn208_N9S19676C16D0Ev,_ZThn124_N9S19676C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C16D1Ev,_ZTv0_n12_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn224_N9S19676C16D1Ev,_ZThn132_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C16D0Ev,_ZTv0_n12_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn224_N9S19676C16D0Ev,_ZThn132_N9S19676C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C16D1Ev,_ZTv0_n24_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn272_N9S19676C16D1Ev,_ZThn160_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C16D0Ev,_ZTv0_n24_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn272_N9S19676C16D0Ev,_ZThn160_N9S19676C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N9S19676C16D1Ev,_ZTvn28_n24_N9S19676C16D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C16D0Ev,_ZTvn28_n24_N9S19676C16D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn336_N9S19676C16D1Ev,_ZThn200_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn336_N9S19676C16D0Ev,_ZThn200_N9S19676C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C16[] = {
  ABISELECT(440,256),
  ABISELECT(272,160),
  ABISELECT(208,124),
  ABISELECT(208,124),
  ABISELECT(336,200),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&_ZN9S19676C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C16D0Ev,
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(64,36),
  0,
  ABISELECT(-208,-124),
  ABISELECT(16,8),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev),
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C16D1Ev,_ZTv0_n12_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C16D0Ev,_ZTv0_n12_N9S19676C16D0Ev),
  ABISELECT(-272,-160),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-272,-160),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C16D1Ev,_ZTv0_n24_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C16D0Ev,_ZTv0_n24_N9S19676C16D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C16D1Ev,_ZTvn28_n24_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C16D0Ev,_ZTvn28_n24_N9S19676C16D0Ev),
  ABISELECT(-336,-200),
  ABISELECT(-112,-68),
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C16[];
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C15__9S19676C16[] = {
  ABISELECT(336,200),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C15__A3__9S19676C16[] = {
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn224_N9S19676C10D1Ev,_ZThn132_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn224_N9S19676C10D0Ev,_ZThn132_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C15__A3__9S19676C16[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn224_N9S19676C15D1Ev,_ZThn132_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn224_N9S19676C15D0Ev,_ZThn132_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C15__9S19676C16[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn336_N9S19676C15D1Ev,_ZThn200_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn336_N9S19676C15D0Ev,_ZThn200_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C15__9S19676C16[] = {
  ABISELECT(-336,-200),
  ABISELECT(-112,-68),
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void _ZN9S19676C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void _ZN9S19676C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C17__9S19676C16[] = {
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(64,36),
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C17D1Ev,_ZThn8_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C17D0Ev,_ZThn8_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C17__9S19676C16[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S19676C17D1Ev,_ZThn36_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S19676C17D0Ev,_ZThn36_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C17__9S19676C16[] = {
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn128_N9S19676C17D1Ev,_ZThn76_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn128_N9S19676C17D0Ev,_ZThn76_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C17__9S19676C16[] = {
  ABISELECT(-128,-76),
  ABISELECT(-112,-68),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C17__9S19676C16[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C16[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C10D1Ev,_ZThn8_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C10D0Ev,_ZThn8_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__9S19676C16[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C16[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C16[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A2__9S19676C16[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A2__9S19676C16[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn12_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn12_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__9S19676C16[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__9S19676C16[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__9S19676C16[] = {
  ABISELECT(64,36),
  ABISELECT(16,8),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__9S19676C16[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19676C14D1Ev,_ZThn40_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19676C14D0Ev,_ZThn40_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__9S19676C16[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__9S19676C16[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C16[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__A1__9S19676C16[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__A1__9S19676C16[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C16[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
static  VTT_ENTRY vtt_S19676C16[] = {
  {&(_ZTV9S19676C16[8]),  8,45},
  {&(_tg__ZTV9S19676C15__9S19676C16[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C15__A3__9S19676C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C15__A3__9S19676C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C15__9S19676C16[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C15__9S19676C16[4]),  4,6},
  {&(_ZTV9S19676C16[18]),  18,45},
  {&(_ZTV9S19676C16[18]),  18,45},
  {&(_ZTV9S19676C16[23]),  23,45},
  {&(_ZTV9S19676C16[31]),  31,45},
  {&(_ZTV9S19676C16[43]),  43,45},
  {&(_ZTV9S19676C16[37]),  37,45},
  {&(_tg__ZTV9S19676C17__9S19676C16[8]),  8,10},
  {&(_tg__ZTV9S19676C17__9S19676C16[8]),  8,10},
  {&(_tg__ZTV8S19676C9__9S19676C17__9S19676C16[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C17__9S19676C16[6]),  6,8},
  {&(_tg__ZTV8S19676C8__9S19676C17__9S19676C16[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C17__9S19676C16[4]),  4,6},
  {&(_tg__ZTV9S19676C10__9S19676C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__9S19676C16[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C16[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C16[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A2__9S19676C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A2__9S19676C16[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__9S19676C16[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__9S19676C16[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__9S19676C16[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__9S19676C16[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__9S19676C16[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__9S19676C16[4]),  4,6},
  {&(_tg__ZTV8S19676C8__9S19676C16[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__A1__9S19676C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__A1__9S19676C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19676C16[];
extern  VTBL_ENTRY _ZTV9S19676C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C16[];
static VTBL_ENTRY alt_thunk_names70[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C14D0Ev,_ZThn40_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C14D1Ev,_ZThn40_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn12_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn12_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C17D0Ev,_ZThn36_N9S19676C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C17D1Ev,_ZThn36_N9S19676C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C17D0Ev,_ZThn8_N9S19676C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C17D1Ev,_ZThn8_N9S19676C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C17D0Ev,_ZThn76_N9S19676C17D0Ev),
  (VTBL_ENTRY)_ZN9S19676C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C17D1Ev,_ZThn76_N9S19676C17D1Ev),
  (VTBL_ENTRY)_ZN9S19676C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19676C15D0Ev,_ZThn200_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19676C15D1Ev,_ZThn200_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19676C15D0Ev,_ZThn132_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19676C15D1Ev,_ZThn132_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C10D0Ev,_ZThn8_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19676C10D0Ev,_ZThn132_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C10D1Ev,_ZThn8_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19676C10D1Ev,_ZThn132_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C16D0Ev,_ZTv0_n24_N9S19676C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19676C16D0Ev,_ZThn160_N9S19676C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C16D1Ev,_ZTv0_n24_N9S19676C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19676C16D1Ev,_ZThn160_N9S19676C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C16D0Ev,_ZTv0_n12_N9S19676C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19676C16D0Ev,_ZThn132_N9S19676C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C16D1Ev,_ZTv0_n12_N9S19676C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19676C16D1Ev,_ZThn132_N9S19676C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19676C16D0Ev,_ZThn200_N9S19676C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19676C16D0Ev,_ZThn124_N9S19676C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19676C16D1Ev,_ZThn200_N9S19676C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19676C16D1Ev,_ZThn124_N9S19676C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C16 = {  "S19676C16", // class name
  bases_S19676C16, 12,
  &(vtc_S19676C16[0]), // expected_vtbl_contents
  &(vtt_S19676C16[0]), // expected_vtt_contents
  ABISELECT(464,272), // object size
  NSPAIRA(_ZTI9S19676C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19676C16),45, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C16),34, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names70,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C18  : virtual S19676C9 , virtual S19676C8 {
  int s19676c18f0;
  ::S19763C18_nt s19676c18f1;
  virtual  ~S19676C18(); // _ZN9S19676C18D2Ev
  S19676C18(); // tgen
};
//SIG(-1 S19676C18) C1{ VBC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 BC4{ VBC2 vd} Fp[10] Fi FL} vd Fi FC5{}}


 S19676C18 ::~S19676C18(){ note_dtor("S19676C18", this);}
S19676C18 ::S19676C18(){ note_ctor("S19676C18", this);} // tgen

static void Test_S19676C18()
{
  extern Class_Descriptor cd_S19676C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,25)];
    init_test(&cd_S19676C18, buf);
    S19676C18 *dp, &lv = *(dp=new (buf) S19676C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,96), "sizeof(S19676C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C18)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(16,12), "S19676C18");
    check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(16,12), "S19676C18");
    check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(16,12), "S19676C18");
    check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(64,40), "S19676C18");
    check_base_class_offset(lv, (S19676C8*), ABISELECT(64,40), "S19676C18");
    check_field_offset(lv, s19676c18f0, ABISELECT(8,4), "S19676C18.s19676c18f0");
    check_field_offset(lv, s19676c18f1, ABISELECT(12,8), "S19676C18.s19676c18f1");
    test_class_info(&lv, &cd_S19676C18);
    dp->~S19676C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C18(Test_S19676C18, "S19676C18", ABISELECT(176,96));

#else // __cplusplus

extern void _ZN9S19676C18C1Ev();
extern void _ZN9S19676C18D2Ev();
Name_Map name_map_S19676C18[] = {
  NSPAIR(_ZN9S19676C18C1Ev),
  NSPAIR(_ZN9S19676C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
static Base_Class bases_S19676C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(64,40), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C18[];
extern void _ZN9S19676C18D1Ev();
extern void _ZN9S19676C18D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19676C18D1Ev,_ZTv0_n12_N9S19676C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C18D1Ev,_ZThn12_N9S19676C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C18D0Ev,_ZTv0_n12_N9S19676C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C18D0Ev,_ZThn12_N9S19676C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C18D1Ev,_ZTv0_n16_N9S19676C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S19676C18D1Ev,_ZThn40_N9S19676C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C18D0Ev,_ZTv0_n16_N9S19676C18D0Ev)();
extern void ABISELECT(_ZThn64_N9S19676C18D0Ev,_ZThn40_N9S19676C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C18[] = {
  ABISELECT(64,40),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C18[0]),
  (VTBL_ENTRY)&_ZN9S19676C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C18D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19676C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C18D1Ev,_ZTv0_n12_N9S19676C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C18D0Ev,_ZTv0_n12_N9S19676C18D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19676C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C18D1Ev,_ZTv0_n16_N9S19676C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C18D0Ev,_ZTv0_n16_N9S19676C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C18[];
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C18[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__9S19676C18[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C18[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C18[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
static  VTT_ENTRY vtt_S19676C18[] = {
  {&(_ZTV9S19676C18[4]),  4,17},
  {&(_ZTV9S19676C18[9]),  9,17},
  {&(_ZTV9S19676C18[15]),  15,17},
  {&(_tg__ZTV8S19676C8__9S19676C18[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__9S19676C18[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C18[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19676C18[];
extern  VTBL_ENTRY _ZTV9S19676C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C18[];
static VTBL_ENTRY alt_thunk_names71[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C18D0Ev,_ZTv0_n16_N9S19676C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C18D0Ev,_ZThn40_N9S19676C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C18D1Ev,_ZTv0_n16_N9S19676C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C18D1Ev,_ZThn40_N9S19676C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C18D0Ev,_ZTv0_n12_N9S19676C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C18D0Ev,_ZThn12_N9S19676C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C18D1Ev,_ZTv0_n12_N9S19676C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C18D1Ev,_ZThn12_N9S19676C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C18 = {  "S19676C18", // class name
  bases_S19676C18, 3,
  &(vtc_S19676C18[0]), // expected_vtbl_contents
  &(vtt_S19676C18[0]), // expected_vtt_contents
  ABISELECT(176,96), // object size
  NSPAIRA(_ZTI9S19676C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19676C18),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C18),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names71,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C5  : S4228C37 , virtual S19676C7 , S19676C16 , S19676C18 , S19676C17 {
  int s19676c5f0[10];
  long double s19676c5f1;
  virtual  ~S19676C5(); // _ZN8S19676C5D2Ev
  S19676C5(); // tgen
};
//SIG(-1 S19676C5) C1{ BC2{ m} VBC3{ VBC4{ VBC5{ vd m Fp Fi Fc FD} BC6{ VBC5 vd} Fp[10] Fi FL} VBC7{ VBC6 VBC8{ VBC4 BC6 vd Fi} BC4 BC9{ VBC4 VBC10{ BC5 VBC6 VBC4 BC8 vd Fi} BC11{ VBC5 VBC4 BC6 vd Fp Fi FC5[3] Fi[7]} BC5 BC6 vd} BC10 vd Fs} VBC9 VBC12{ m FC13{} Fi[3]} BC10 Fs Fp[2]} BC14{ VBC15{ VBC6 VBC10 VBC12 vd Fi} BC11 vd} BC16{ VBC5 VBC4 vd Fi FC13} BC15 vd Fi[10] FD}


 S19676C5 ::~S19676C5(){ note_dtor("S19676C5", this);}
S19676C5 ::S19676C5(){ note_ctor("S19676C5", this);} // tgen

static void Test_S19676C5()
{
  extern Class_Descriptor cd_S19676C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(88,205)];
    init_test(&cd_S19676C5, buf);
    S19676C5 *dp, &lv = *(dp=new (buf) S19676C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1392,816), "sizeof(S19676C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C5)");
    check_base_class_offset(lv, (S4228C37*), 0, "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*)(S19676C11*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*)(S19676C11*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(496,304), "S19676C5");
    check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*)(S19676C11*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*)(S19676C7*), ABISELECT(496,304), "S19676C5");
    check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C16*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C16*), ABISELECT(496,304), "S19676C5");
    check_base_class_offset(lv, (S19676C9*)(S19676C18*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C7*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*), ABISELECT(392,248), "S19676C5");
    check_base_class_offset(lv, (S19676C8*)(S19676C13*)(S19676C11*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(392,248), "S19676C5");
    check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*)(S19676C11*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C13*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*)(S19676C7*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*)(S19676C7*), ABISELECT(392,248), "S19676C5");
    check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C16*), ABISELECT(392,248), "S19676C5");
    check_base_class_offset(lv, (S19676C8*)(S19676C18*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C11*), ABISELECT(1368,808), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), ABISELECT(1368,808), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*)(S19676C11*), ABISELECT(1368,808), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*)(S19676C7*), ABISELECT(1368,808), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C17*), ABISELECT(1368,808), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C17*), ABISELECT(1368,808), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*), ABISELECT(1000,588), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C11*), ABISELECT(1000,588), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*)(S19676C11*), ABISELECT(544,332), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C11*), ABISELECT(544,332), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), ABISELECT(1024,596), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(1072,624), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(1072,624), "S19676C5");
    check_base_class_offset(lv, (S19676C14*)(S19676C13*)(S19676C11*), ABISELECT(1024,596), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C13*), ABISELECT(1024,596), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C17*), ABISELECT(1024,596), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C17*), ABISELECT(1024,596), "S19676C5");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(656,388), "S19676C5");
    check_base_class_offset(lv, (S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(656,388), "S19676C5");
    /*is_ambiguous_... S19676C13::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*)(S19676C11*), ABISELECT(864,512), "S19676C5");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*)(S19676C11*), ABISELECT(912,540), "S19676C5");
    check_base_class_offset(lv, (S19676C13*)(S19676C11*), ABISELECT(656,388), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*)(S19676C11*), ABISELECT(928,544), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(976,572), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(976,572), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C11*), ABISELECT(928,544), "S19676C5");
    check_base_class_offset(lv, (S19676C11*)(S19676C7*), ABISELECT(544,332), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*), ABISELECT(1088,636), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C15*)(S19676C13*), ABISELECT(1088,636), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*), ABISELECT(1296,760), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*), ABISELECT(1344,788), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C13*)(S19676C7*), ABISELECT(1088,636), "S19676C5");
    check_base_class_offset(lv, (S19676C2*)(S19676C7*), ABISELECT(1352,792), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C2*)(S19676C17*), ABISELECT(1352,792), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C2*)(S19676C17*), ABISELECT(1352,792), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*)(S19676C7*), ABISELECT(304,196), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*)(S19676C7*), ABISELECT(352,224), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*)(S19676C7*), ABISELECT(352,224), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C7*), ABISELECT(304,196), "S19676C5");
    check_base_class_offset(lv, (S19676C7*), ABISELECT(304,196), "S19676C5");
    check_base_class_offset(lv, (S19676C17*)(S19676C16*), ABISELECT(1368,808), "S19676C5");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C16*), 0, "S19676C5");
    check_base_class_offset(lv, (S19676C15*)(S19676C16*), 0, "S19676C5");
    check_base_class_offset(lv, (S19676C16*), 0, "S19676C5");
    check_base_class_offset(lv, (S19676C18*), ABISELECT(208,124), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C17*), ABISELECT(224,136), "S19676C5");
    check_field_offset(lv, s19676c5f0, ABISELECT(236,144), "S19676C5.s19676c5f0");
    check_field_offset(lv, s19676c5f1, ABISELECT(288,184), "S19676C5.s19676c5f1");
    test_class_info(&lv, &cd_S19676C5);
    dp->~S19676C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C5(Test_S19676C5, "S19676C5", ABISELECT(1392,816));

#else // __cplusplus

extern void _ZN8S19676C5C1Ev();
extern void _ZN8S19676C5D2Ev();
Name_Map name_map_S19676C5[] = {
  NSPAIR(_ZN8S19676C5C1Ev),
  NSPAIR(_ZN8S19676C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C11;
extern VTBL_ENTRY _ZTI9S19676C11[];
extern  VTBL_ENTRY _ZTV9S19676C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C11[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C7;
extern VTBL_ENTRY _ZTI8S19676C7[];
extern  VTBL_ENTRY _ZTV8S19676C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C7[];
extern Class_Descriptor cd_S19676C17;
extern VTBL_ENTRY _ZTI9S19676C17[];
extern  VTBL_ENTRY _ZTV9S19676C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C17[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C16;
extern VTBL_ENTRY _ZTI9S19676C16[];
extern  VTBL_ENTRY _ZTV9S19676C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C16[];
extern Class_Descriptor cd_S19676C18;
extern VTBL_ENTRY _ZTI9S19676C18[];
extern  VTBL_ENTRY _ZTV9S19676C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C18[];
extern Class_Descriptor cd_S19676C17;
extern VTBL_ENTRY _ZTI9S19676C17[];
extern  VTBL_ENTRY _ZTV9S19676C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C17[];
static Base_Class bases_S19676C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(496,304), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(392,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(392,248), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(1368,808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(1000,588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(1000,588), //bcp->offset
    100, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(544,332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(544,332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1024,596), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(1072,624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(1072,624), //bcp->offset
    115, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(1024,596), //bcp->offset
    107, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(656,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(656,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(864,512), //bcp->offset
    78, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(912,540), //bcp->offset
    82, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19676C13,    ABISELECT(656,388), //bcp->offset
    70, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(928,544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(976,572), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(976,572), //bcp->offset
    94, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(928,544), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19676C11,    ABISELECT(544,332), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(1088,636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(1088,636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1296,760), //bcp->offset
    130, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(1344,788), //bcp->offset
    134, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    136, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19676C13,    ABISELECT(1088,636), //bcp->offset
    121, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(1352,792), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19676C9,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(352,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(352,224), //bcp->offset
    43, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19676C7,    ABISELECT(304,196), //bcp->offset
    30, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C17,    ABISELECT(1368,808), //bcp->offset
    139, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    144, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S19676C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19676C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19676C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C18,    ABISELECT(208,124), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C17,    ABISELECT(224,136), //bcp->offset
    20, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19676C5[];
extern void _ZN8S19676C5D1Ev();
extern void _ZN8S19676C5D0Ev();
extern void ABISELECT(_ZThn208_N8S19676C5D1Ev,_ZThn124_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn208_N8S19676C5D0Ev,_ZThn124_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn224_N8S19676C5D1Ev,_ZThn136_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn224_N8S19676C5D0Ev,_ZThn136_N8S19676C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19676C5D1Ev,_ZTv0_n44_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn304_N8S19676C5D1Ev,_ZThn196_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19676C5D0Ev,_ZTv0_n44_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn304_N8S19676C5D0Ev,_ZThn196_N8S19676C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n88_N8S19676C5D1Ev,_ZTvn28_n44_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N8S19676C5D0Ev,_ZTvn28_n44_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn392_N8S19676C5D1Ev,_ZThn248_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn392_N8S19676C5D0Ev,_ZThn248_N8S19676C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C5D1Ev,_ZTv0_n12_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19676C5D1Ev,_ZThn304_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C5D0Ev,_ZTv0_n12_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19676C5D0Ev,_ZThn304_N8S19676C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19676C5D1Ev,_ZTv0_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn544_N8S19676C5D1Ev,_ZThn332_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19676C5D0Ev,_ZTv0_n32_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn544_N8S19676C5D0Ev,_ZThn332_N8S19676C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N8S19676C5D1Ev,_ZTvn56_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S19676C5D0Ev,_ZTvn56_n32_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S19676C5D1Ev,_ZTvn180_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S19676C5D0Ev,_ZTvn180_n32_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S19676C5D1Ev,_ZTvn208_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S19676C5D0Ev,_ZTvn208_n32_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S19676C5D1Ev,_ZTvn212_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S19676C5D0Ev,_ZTvn212_n32_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S19676C5D1Ev,_ZTvn240_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S19676C5D0Ev,_ZTvn240_n32_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19676C5D1Ev,_ZTv0_n20_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn1000_N8S19676C5D1Ev,_ZThn588_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19676C5D0Ev,_ZTv0_n20_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn1000_N8S19676C5D0Ev,_ZThn588_N8S19676C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19676C5D1Ev,_ZTv0_n24_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn1024_N8S19676C5D1Ev,_ZThn596_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19676C5D0Ev,_ZTv0_n24_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn1024_N8S19676C5D0Ev,_ZThn596_N8S19676C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S19676C5D1Ev,_ZTvn28_n24_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19676C5D0Ev,_ZTvn28_n24_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S19676C5D1Ev,_ZTv0_n28_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn1088_N8S19676C5D1Ev,_ZThn636_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19676C5D0Ev,_ZTv0_n28_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn1088_N8S19676C5D0Ev,_ZThn636_N8S19676C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N8S19676C5D1Ev,_ZTvn124_n28_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S19676C5D0Ev,_ZTvn124_n28_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S19676C5D1Ev,_ZTvn152_n28_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S19676C5D0Ev,_ZTvn152_n28_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn1368_N8S19676C5D1Ev,_ZThn808_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn1368_N8S19676C5D0Ev,_ZThn808_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C5[] = {
  ABISELECT(1088,636),
  ABISELECT(1000,588),
  ABISELECT(544,332),
  ABISELECT(304,196),
  ABISELECT(1352,792),
  ABISELECT(1024,596),
  ABISELECT(1368,808),
  ABISELECT(1368,808),
  ABISELECT(392,248),
  ABISELECT(496,304),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&_ZN8S19676C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C5D0Ev,
  ABISELECT(184,124),
  ABISELECT(288,180),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19676C5D1Ev,_ZThn124_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19676C5D0Ev,_ZThn124_N8S19676C5D0Ev),
  ABISELECT(1128,656),
  ABISELECT(168,112),
  ABISELECT(800,460),
  ABISELECT(1144,672),
  ABISELECT(-224,-136),
  ABISELECT(272,168),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev),
  ABISELECT(-304,-196),
  ABISELECT(1048,596),
  ABISELECT(784,440),
  ABISELECT(720,400),
  ABISELECT(696,392),
  ABISELECT(240,136),
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(1064,612),
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19676C5D1Ev,_ZTv0_n44_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19676C5D0Ev,_ZTv0_n44_N8S19676C5D0Ev),
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-352,-224),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S19676C5D1Ev,_ZTvn28_n44_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S19676C5D0Ev,_ZTvn28_n44_N8S19676C5D0Ev),
  ABISELECT(-392,-248),
  ABISELECT(104,56),
  ABISELECT(-392,-248),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev),
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C5D1Ev,_ZTv0_n12_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C5D0Ev,_ZTv0_n12_N8S19676C5D0Ev),
  ABISELECT(-544,-332),
  ABISELECT(480,264),
  ABISELECT(-152,-84),
  ABISELECT(456,256),
  ABISELECT(824,476),
  ABISELECT(-48,-28),
  ABISELECT(-544,-332),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C5D1Ev,_ZTv0_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C5D0Ev,_ZTv0_n32_N8S19676C5D0Ev),
  ABISELECT(712,420),
  ABISELECT(368,208),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-656,-388),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C5D1Ev,_ZTvn56_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C5D0Ev,_ZTvn56_n32_N8S19676C5D0Ev),
  ABISELECT(-864,-512),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C5D1Ev,_ZTvn180_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C5D0Ev,_ZTvn180_n32_N8S19676C5D0Ev),
  ABISELECT(-416,-236),
  ABISELECT(-912,-540),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C5D1Ev,_ZTvn208_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C5D0Ev,_ZTvn208_n32_N8S19676C5D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(440,264),
  ABISELECT(-928,-544),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C5D1Ev,_ZTvn212_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C5D0Ev,_ZTvn212_n32_N8S19676C5D0Ev),
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-976,-572),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C5D1Ev,_ZTvn240_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C5D0Ev,_ZTvn240_n32_N8S19676C5D0Ev),
  ABISELECT(-1000,-588),
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  ABISELECT(-1000,-588),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C5D1Ev,_ZTv0_n20_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C5D0Ev,_ZTv0_n20_N8S19676C5D0Ev),
  ABISELECT(-1024,-596),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-1024,-596),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C5D1Ev,_ZTv0_n24_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C5D0Ev,_ZTv0_n24_N8S19676C5D0Ev),
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-1072,-624),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C5D1Ev,_ZTvn28_n24_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C5D0Ev,_ZTvn28_n24_N8S19676C5D0Ev),
  ABISELECT(-1088,-636),
  ABISELECT(280,172),
  ABISELECT(-64,-40),
  ABISELECT(-696,-388),
  ABISELECT(-592,-332),
  ABISELECT(-1088,-636),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C5D1Ev,_ZTv0_n28_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C5D0Ev,_ZTv0_n28_N8S19676C5D0Ev),
  ABISELECT(-1296,-760),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C5D1Ev,_ZTvn124_n28_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C5D0Ev,_ZTvn124_n28_N8S19676C5D0Ev),
  ABISELECT(-848,-484),
  ABISELECT(-1344,-788),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C5D1Ev,_ZTvn152_n28_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C5D0Ev,_ZTvn152_n28_N8S19676C5D0Ev),
  -16,
  ABISELECT(-976,-560),
  ABISELECT(-344,-212),
  0,
  ABISELECT(-1368,-808),
  ABISELECT(-872,-504),
  ABISELECT(-1368,-808),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S19676C5[];
extern void _ZN9S19676C16D1Ev();
extern void _ZN9S19676C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C16__8S19676C5[] = {
  ABISELECT(1352,792),
  ABISELECT(1024,596),
  ABISELECT(1368,808),
  ABISELECT(1368,808),
  ABISELECT(392,248),
  ABISELECT(496,304),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&_ZN9S19676C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C16D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C16__A2__8S19676C5[] = {
  ABISELECT(392,248),
  ABISELECT(496,304),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C16__A11__8S19676C5[] = {
  ABISELECT(496,304),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn496_N9S19676C10D1Ev,_ZThn304_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn496_N9S19676C10D0Ev,_ZThn304_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C16__A11__8S19676C5[] = {
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn496_N9S19676C15D1Ev,_ZThn304_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn496_N9S19676C15D0Ev,_ZThn304_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C16__A2__8S19676C5[] = {
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn392_N9S19676C15D1Ev,_ZThn248_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn392_N9S19676C15D0Ev,_ZThn248_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C16__A2__8S19676C5[] = {
  ABISELECT(-392,-248),
  ABISELECT(104,56),
  ABISELECT(-392,-248),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn1368_N9S19676C16D1Ev,_ZThn808_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn1368_N9S19676C16D0Ev,_ZThn808_N9S19676C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C17__9S19676C16__8S19676C5[] = {
  -16,
  ABISELECT(-976,-560),
  ABISELECT(-344,-212),
  0,
  ABISELECT(-1368,-808),
  ABISELECT(-872,-504),
  ABISELECT(-1368,-808),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C16D1Ev,_ZTv0_n12_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn496_N9S19676C16D1Ev,_ZThn304_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C16D0Ev,_ZTv0_n12_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn496_N9S19676C16D0Ev,_ZThn304_N9S19676C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C16__8S19676C5[] = {
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C16D1Ev,_ZTv0_n12_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C16D0Ev,_ZTv0_n12_N9S19676C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C16D1Ev,_ZTv0_n24_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn1024_N9S19676C16D1Ev,_ZThn596_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C16D0Ev,_ZTv0_n24_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn1024_N9S19676C16D0Ev,_ZThn596_N9S19676C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C16__8S19676C5[] = {
  ABISELECT(-1024,-596),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-1024,-596),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C16D1Ev,_ZTv0_n24_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C16D0Ev,_ZTv0_n24_N9S19676C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn392_N9S19676C16D1Ev,_ZThn248_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn392_N9S19676C16D0Ev,_ZThn248_N9S19676C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C16__8S19676C5[] = {
  ABISELECT(-392,-248),
  ABISELECT(104,56),
  ABISELECT(-392,-248),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C16D1Ev,_ZTvn28_n24_N9S19676C16D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C16D0Ev,_ZTvn28_n24_N9S19676C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C16__8S19676C5[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-1072,-624),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C16D1Ev,_ZTvn28_n24_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C16D0Ev,_ZTvn28_n24_N9S19676C16D0Ev),
};
extern void _ZN9S19676C18D1Ev();
extern void _ZN9S19676C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C18__8S19676C5[] = {
  ABISELECT(184,124),
  ABISELECT(288,180),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C18[0]),
  (VTBL_ENTRY)&_ZN9S19676C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C18D1Ev,_ZTv0_n12_N9S19676C18D1Ev)();
extern void ABISELECT(_ZThn288_N9S19676C18D1Ev,_ZThn180_N9S19676C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C18D0Ev,_ZTv0_n12_N9S19676C18D0Ev)();
extern void ABISELECT(_ZThn288_N9S19676C18D0Ev,_ZThn180_N9S19676C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C18__8S19676C5[] = {
  ABISELECT(-288,-180),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI9S19676C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C18D1Ev,_ZTv0_n12_N9S19676C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C18D0Ev,_ZTv0_n12_N9S19676C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C18D1Ev,_ZTv0_n16_N9S19676C18D1Ev)();
extern void ABISELECT(_ZThn184_N9S19676C18D1Ev,_ZThn124_N9S19676C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C18D0Ev,_ZTv0_n16_N9S19676C18D0Ev)();
extern void ABISELECT(_ZThn184_N9S19676C18D0Ev,_ZThn124_N9S19676C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C18__8S19676C5[] = {
  ABISELECT(-184,-124),
  ABISELECT(104,56),
  ABISELECT(-184,-124),
  (VTBL_ENTRY)&(_ZTI9S19676C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C18D1Ev,_ZTv0_n16_N9S19676C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C18D0Ev,_ZTv0_n16_N9S19676C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void _ZN9S19676C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void _ZN9S19676C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C17__A__8S19676C5[] = {
  ABISELECT(1128,656),
  ABISELECT(168,112),
  ABISELECT(800,460),
  ABISELECT(1144,672),
  0,
  ABISELECT(272,168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn1144_N9S19676C17D1Ev,_ZThn672_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn1144_N9S19676C17D0Ev,_ZThn672_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C17__A__8S19676C5[] = {
  ABISELECT(-1144,-672),
  ABISELECT(-872,-504),
  ABISELECT(-1144,-672),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn272_N9S19676C17D1Ev,_ZThn168_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn272_N9S19676C17D0Ev,_ZThn168_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C17__A__8S19676C5[] = {
  ABISELECT(-272,-168),
  ABISELECT(-272,-168),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn800_N9S19676C17D1Ev,_ZThn460_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn800_N9S19676C17D0Ev,_ZThn460_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C17__A__8S19676C5[] = {
  ABISELECT(-800,-460),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-800,-460),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn168_N9S19676C17D1Ev,_ZThn112_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn168_N9S19676C17D0Ev,_ZThn112_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C17__A__8S19676C5[] = {
  ABISELECT(-168,-112),
  ABISELECT(104,56),
  ABISELECT(-168,-112),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C17__A__8S19676C5[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-848,-488),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev),
};
extern void _ZN8S19676C7D1Ev();
extern void _ZN8S19676C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C7__8S19676C5[] = {
  ABISELECT(1048,596),
  ABISELECT(784,440),
  ABISELECT(720,400),
  ABISELECT(696,392),
  ABISELECT(240,136),
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(1064,612),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&_ZN8S19676C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C7D0Ev,
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C148S19676C7__A2__8S19676C5[] = {
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(1064,612),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C148S19676C7__A3__8S19676C5[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C148S19676C7__A10__8S19676C5[] = {
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn144_N9S19676C10D1Ev,_ZThn80_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn144_N9S19676C10D0Ev,_ZThn80_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C148S19676C7__A10__8S19676C5[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn40_N9S19676C12D1Ev,_ZThn24_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn40_N9S19676C12D0Ev,_ZThn24_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C148S19676C7__A3__8S19676C5[] = {
  ABISELECT(-40,-24),
  ABISELECT(104,56),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn144_N9S19676C12D1Ev,_ZThn80_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn144_N9S19676C12D0Ev,_ZThn80_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C148S19676C7__A3__8S19676C5[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn1064_N9S19676C14D1Ev,_ZThn612_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn1064_N9S19676C14D0Ev,_ZThn612_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C148S19676C7__A2__8S19676C5[] = {
  ABISELECT(-1064,-612),
  ABISELECT(-872,-504),
  ABISELECT(-1064,-612),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn192_N9S19676C14D1Ev,_ZThn108_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn192_N9S19676C14D0Ev,_ZThn108_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C148S19676C7__A2__8S19676C5[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn88_N9S19676C14D1Ev,_ZThn52_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn88_N9S19676C14D0Ev,_ZThn52_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C148S19676C7__A2__8S19676C5[] = {
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C148S19676C7__A2__8S19676C5[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn88_N8S19676C7D1Ev,_ZThn52_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn88_N8S19676C7D0Ev,_ZThn52_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__8S19676C7__8S19676C5[] = {
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C7D1Ev,_ZTv0_n12_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn192_N8S19676C7D1Ev,_ZThn108_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C7D0Ev,_ZTv0_n12_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn192_N8S19676C7D0Ev,_ZThn108_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C7__8S19676C5[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C7D1Ev,_ZTv0_n12_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C7D0Ev,_ZTv0_n12_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19676C7D1Ev,_ZTv0_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn240_N8S19676C7D1Ev,_ZThn136_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19676C7D0Ev,_ZTv0_n32_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn240_N8S19676C7D0Ev,_ZThn136_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C11__8S19676C7__8S19676C5[] = {
  ABISELECT(-240,-136),
  ABISELECT(480,264),
  ABISELECT(-152,-84),
  ABISELECT(456,256),
  ABISELECT(824,476),
  ABISELECT(-48,-28),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C7D1Ev,_ZTv0_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C7D0Ev,_ZTv0_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn1064_N8S19676C7D1Ev,_ZThn612_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn1064_N8S19676C7D0Ev,_ZThn612_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__8S19676C7__8S19676C5[] = {
  ABISELECT(-1064,-612),
  ABISELECT(-872,-504),
  ABISELECT(-1064,-612),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19676C7D1Ev,_ZTv0_n20_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn696_N8S19676C7D1Ev,_ZThn392_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19676C7D0Ev,_ZTv0_n20_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn696_N8S19676C7D0Ev,_ZThn392_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C12__8S19676C7__8S19676C5[] = {
  ABISELECT(-696,-392),
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C7D1Ev,_ZTv0_n20_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C7D0Ev,_ZTv0_n20_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N8S19676C7D1Ev,_ZTvn56_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S19676C7D0Ev,_ZTvn56_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C139S19676C11__8S19676C7__8S19676C5[] = {
  ABISELECT(712,420),
  ABISELECT(368,208),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C7D1Ev,_ZTvn56_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C7D0Ev,_ZTvn56_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19676C7D1Ev,_ZTv0_n24_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn720_N8S19676C7D1Ev,_ZThn400_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19676C7D0Ev,_ZTv0_n24_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn720_N8S19676C7D0Ev,_ZThn400_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__8S19676C7__8S19676C5[] = {
  ABISELECT(-720,-400),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-720,-400),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C7D1Ev,_ZTv0_n24_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C7D0Ev,_ZTv0_n24_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19676C7D1Ev,_ZTvn28_n24_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19676C7D0Ev,_ZTvn28_n24_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__8S19676C7__8S19676C5[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-768,-428),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C7D1Ev,_ZTvn28_n24_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C7D0Ev,_ZTvn28_n24_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N8S19676C7D1Ev,_ZTvn180_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S19676C7D0Ev,_ZTvn180_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C99S19676C139S19676C11__A2__8S19676C7__8S19676C5[] = {
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C7D1Ev,_ZTvn180_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C7D0Ev,_ZTvn180_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N8S19676C7D1Ev,_ZTvn208_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S19676C7D0Ev,_ZTvn208_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C7__8S19676C5[] = {
  ABISELECT(-416,-236),
  ABISELECT(-608,-344),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C7D1Ev,_ZTvn208_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C7D0Ev,_ZTvn208_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N8S19676C7D1Ev,_ZTvn212_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S19676C7D0Ev,_ZTvn212_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C149S19676C11__A1__8S19676C7__8S19676C5[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(440,264),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C7D1Ev,_ZTvn212_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C7D0Ev,_ZTvn212_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N8S19676C7D1Ev,_ZTvn240_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S19676C7D0Ev,_ZTvn240_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C7__8S19676C5[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C7D1Ev,_ZTvn240_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C7D0Ev,_ZTvn240_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S19676C7D1Ev,_ZTv0_n28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn784_N8S19676C7D1Ev,_ZThn440_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19676C7D0Ev,_ZTv0_n28_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn784_N8S19676C7D0Ev,_ZThn440_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C13__A1__8S19676C7__8S19676C5[] = {
  ABISELECT(-784,-440),
  ABISELECT(280,172),
  ABISELECT(-64,-40),
  ABISELECT(-696,-388),
  ABISELECT(-592,-332),
  ABISELECT(-784,-440),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C7D1Ev,_ZTv0_n28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C7D0Ev,_ZTv0_n28_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N8S19676C7D1Ev,_ZTvn124_n28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S19676C7D0Ev,_ZTvn124_n28_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C99S19676C13__A4__8S19676C7__8S19676C5[] = {
  ABISELECT(-992,-564),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C7D1Ev,_ZTvn124_n28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C7D0Ev,_ZTvn124_n28_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N8S19676C7D1Ev,_ZTvn152_n28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S19676C7D0Ev,_ZTvn152_n28_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A9__8S19676C7__8S19676C5[] = {
  ABISELECT(-848,-484),
  ABISELECT(-1040,-592),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C7D1Ev,_ZTvn152_n28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C7D0Ev,_ZTvn152_n28_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZThn48_N8S19676C7D1Ev,_ZThn28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S19676C7D0Ev,_ZThn28_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A3__8S19676C7__8S19676C5[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19676C7D1Ev,_ZThn28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19676C7D0Ev,_ZThn28_N8S19676C7D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__8S19676C5[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__8S19676C5[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn104_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn104_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__8S19676C5[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZThn104_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
extern void ABISELECT(_ZThn104_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__8S19676C5[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C11D1Ev();
extern void _ZN9S19676C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C11__8S19676C5[] = {
  ABISELECT(480,264),
  ABISELECT(-152,-84),
  ABISELECT(456,256),
  ABISELECT(824,476),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&_ZN9S19676C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C11D0Ev,
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C89S19676C11__A1__8S19676C5[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C89S19676C11__A3__8S19676C5[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C89S19676C11__A3__8S19676C5[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C89S19676C11__A1__8S19676C5[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(712,420),
  ABISELECT(368,208),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C5[] = {
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C5[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C5[] = {
  ABISELECT(-416,-236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C139S19676C11__A6__8S19676C5[] = {
  ABISELECT(416,236),
  ABISELECT(416,236),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C13D1Ev,_ZThn208_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn368_N9S19676C13D0Ev,_ZThn208_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(-368,-208),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn712_N9S19676C13D1Ev,_ZThn420_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn712_N9S19676C13D0Ev,_ZThn420_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(-712,-420),
  ABISELECT(-872,-504),
  ABISELECT(-712,-420),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-416,-236),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(-416,-236),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C149S19676C11__A1__8S19676C5[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(440,264),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C5[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C5[] = {
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C5[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C149S19676C11__A2__8S19676C5[] = {
  ABISELECT(584,324),
  ABISELECT(104,56),
  ABISELECT(584,324),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C149S19676C11__A2__8S19676C5[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn440_N9S19676C14D1Ev,_ZThn264_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn440_N9S19676C14D0Ev,_ZThn264_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C149S19676C11__A1__8S19676C5[] = {
  ABISELECT(-440,-264),
  ABISELECT(-872,-504),
  ABISELECT(-440,-264),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C149S19676C11__A1__8S19676C5[] = {
  ABISELECT(432,240),
  ABISELECT(432,240),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C149S19676C11__A1__8S19676C5[] = {
  ABISELECT(536,296),
  ABISELECT(104,56),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C149S19676C11__A1__8S19676C5[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn824_N9S19676C11D1Ev,_ZThn476_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn824_N9S19676C11D0Ev,_ZThn476_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C11__8S19676C5[] = {
  ABISELECT(-824,-476),
  ABISELECT(-872,-504),
  ABISELECT(-824,-476),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C11__8S19676C5[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn456_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn456_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C11__8S19676C5[] = {
  ABISELECT(-456,-256),
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C11__8S19676C5[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C13__9S19676C11__8S19676C5[] = {
  ABISELECT(712,420),
  ABISELECT(368,208),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn480_N9S19676C11D1Ev,_ZThn264_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn480_N9S19676C11D0Ev,_ZThn264_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C11__8S19676C5[] = {
  ABISELECT(-480,-264),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-480,-264),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__9S19676C11__8S19676C5[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-528,-292),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A6__9S19676C11__8S19676C5[] = {
  ABISELECT(-416,-236),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__A__9S19676C11__8S19676C5[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(440,264),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A2__9S19676C11__8S19676C5[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__8S19676C5[] = {
  ABISELECT(-872,-504),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__A1__8S19676C5[] = {
  ABISELECT(872,504),
  ABISELECT(872,504),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C12__8S19676C5[] = {
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C12__A2__8S19676C5[] = {
  ABISELECT(-504,-284),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C12__A2__8S19676C5[] = {
  ABISELECT(504,284),
  ABISELECT(504,284),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C12__8S19676C5[] = {
  ABISELECT(608,340),
  ABISELECT(104,56),
  ABISELECT(608,340),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C12__8S19676C5[] = {
  ABISELECT(504,284),
  ABISELECT(504,284),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__8S19676C5[] = {
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__8S19676C5[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A4__8S19676C5[] = {
  ABISELECT(-576,-320),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A4__8S19676C5[] = {
  ABISELECT(576,320),
  ABISELECT(576,320),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__A1__8S19676C5[] = {
  ABISELECT(680,376),
  ABISELECT(104,56),
  ABISELECT(680,376),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__A1__8S19676C5[] = {
  ABISELECT(576,320),
  ABISELECT(576,320),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn344_N9S19676C14D1Ev,_ZThn212_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn344_N9S19676C14D0Ev,_ZThn212_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__8S19676C5[] = {
  ABISELECT(-344,-212),
  ABISELECT(-872,-504),
  ABISELECT(-344,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__8S19676C5[] = {
  ABISELECT(528,292),
  ABISELECT(528,292),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__8S19676C5[] = {
  ABISELECT(632,348),
  ABISELECT(104,56),
  ABISELECT(632,348),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__8S19676C5[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C13__A1__8S19676C5[] = {
  ABISELECT(280,172),
  ABISELECT(-64,-40),
  ABISELECT(-696,-388),
  ABISELECT(-592,-332),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C13__A1__8S19676C5[] = {
  ABISELECT(-696,-388),
  ABISELECT(-592,-332),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C13__A8__8S19676C5[] = {
  ABISELECT(-592,-332),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A8__8S19676C5[] = {
  ABISELECT(592,332),
  ABISELECT(592,332),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C13__A1__8S19676C5[] = {
  ABISELECT(592,332),
  ABISELECT(592,332),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C13__A1__8S19676C5[] = {
  ABISELECT(696,388),
  ABISELECT(104,56),
  ABISELECT(696,388),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A9__8S19676C5[] = {
  ABISELECT(-848,-484),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C13__A9__8S19676C5[] = {
  ABISELECT(848,484),
  ABISELECT(848,484),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C13__A1__8S19676C5[] = {
  ABISELECT(696,388),
  ABISELECT(104,56),
  ABISELECT(696,388),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C13__A1__8S19676C5[] = {
  ABISELECT(592,332),
  ABISELECT(592,332),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C13__A1__8S19676C5[] = {
  ABISELECT(64,40),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn280_N9S19676C13D1Ev,_ZThn172_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn280_N9S19676C13D0Ev,_ZThn172_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C13__A1__8S19676C5[] = {
  ABISELECT(-280,-172),
  ABISELECT(-872,-504),
  ABISELECT(-280,-172),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C13__A1__8S19676C5[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C13__A1__8S19676C5[] = {
  ABISELECT(-848,-484),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void _ZN9S19676C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void _ZN9S19676C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C17__8S19676C5[] = {
  -16,
  ABISELECT(-976,-560),
  ABISELECT(-344,-212),
  0,
  0,
  ABISELECT(-872,-504),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C17__8S19676C5[] = {
  ABISELECT(872,504),
  ABISELECT(872,504),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C17__8S19676C5[] = {
  ABISELECT(344,212),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(344,212),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C17__8S19676C5[] = {
  ABISELECT(976,560),
  ABISELECT(104,56),
  ABISELECT(976,560),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C17__8S19676C5[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(296,184),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev),
};
static  VTT_ENTRY vtt_S19676C5[] = {
  {&(_ZTV8S19676C5[12]),  12,149},
  {&(_tg__ZTV9S19676C16__8S19676C5[8]),  8,10},
  {&(_tg__ZTV9S19676C159S19676C16__A2__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C16__A11__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C16__A11__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C16__A2__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C16__A2__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C17__9S19676C16__8S19676C5[8]),  8,10},
  {&(_tg__ZTV9S19676C17__9S19676C16__8S19676C5[8]),  8,10},
  {&(_tg__ZTV8S19676C9__9S19676C16__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C16__8S19676C5[6]),  6,8},
  {&(_tg__ZTV8S19676C8__9S19676C16__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C16__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C18__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C18__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C18__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C17__A__8S19676C5[8]),  8,10},
  {&(_tg__ZTV9S19676C10__9S19676C17__A__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C17__A__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C17__A__8S19676C5[6]),  6,8},
  {&(_tg__ZTV8S19676C8__9S19676C17__A__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C17__A__8S19676C5[4]),  4,6},
  {&(_ZTV8S19676C5[41]),  41,149},
  {&(_ZTV8S19676C5[53]),  53,149},
  {&(_ZTV8S19676C5[58]),  58,149},
  {&(_ZTV8S19676C5[68]),  68,149},
  {&(_ZTV8S19676C5[147]),  147,149},
  {&(_ZTV8S19676C5[105]),  105,149},
  {&(_ZTV8S19676C5[76]),  76,149},
  {&(_ZTV8S19676C5[113]),  113,149},
  {&(_ZTV8S19676C5[119]),  119,149},
  {&(_ZTV8S19676C5[80]),  80,149},
  {&(_ZTV8S19676C5[85]),  85,149},
  {&(_ZTV8S19676C5[92]),  92,149},
  {&(_ZTV8S19676C5[98]),  98,149},
  {&(_ZTV8S19676C5[128]),  128,149},
  {&(_ZTV8S19676C5[132]),  132,149},
  {&(_ZTV8S19676C5[137]),  137,149},
  {&(_ZTV8S19676C5[47]),  47,149},
  {&(_ZTV8S19676C5[147]),  147,149},
  {&(_ZTV8S19676C5[18]),  18,149},
  {&(_ZTV8S19676C5[28]),  28,149},
  {&(_tg__ZTV8S19676C7__8S19676C5[10]),  10,12},
  {&(_tg__ZTV9S19676C148S19676C7__A2__8S19676C5[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C148S19676C7__A3__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C148S19676C7__A10__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C148S19676C7__A10__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C148S19676C7__A3__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C148S19676C7__A3__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C148S19676C7__A2__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C148S19676C7__A2__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C148S19676C7__A2__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C148S19676C7__A2__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C8__8S19676C7__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19676C7__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C11__8S19676C7__8S19676C5[8]),  8,10},
  {&(_tg__ZTV9S19676C10__A1__8S19676C7__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C12__8S19676C7__8S19676C5[5]),  5,7},
  {&(_tg__ZTV9S19676C139S19676C11__8S19676C7__8S19676C5[6]),  6,8},
  {&(_tg__ZTV9S19676C14__8S19676C7__8S19676C5[6]),  6,8},
  {&(_tg__ZTV9S19676C129S19676C14__A1__8S19676C7__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C99S19676C139S19676C11__A2__8S19676C7__8S19676C5[2]),  2,4},
  {&(_tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C7__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C149S19676C11__A1__8S19676C7__8S19676C5[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C7__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C13__A1__8S19676C7__8S19676C5[7]),  7,9},
  {&(_tg__ZTV8S19676C99S19676C13__A4__8S19676C7__8S19676C5[2]),  2,4},
  {&(_tg__ZTV9S19676C109S19676C13__A9__8S19676C7__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C129S19676C14__A3__8S19676C7__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C8__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C11__8S19676C5[7]),  7,9},
  {&(_tg__ZTV8S19676C89S19676C11__A1__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C89S19676C11__A3__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C89S19676C11__A3__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C89S19676C11__A1__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C139S19676C11__8S19676C5[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C139S19676C11__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C139S19676C11__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C139S19676C11__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C139S19676C11__A6__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C139S19676C11__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C139S19676C11__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C139S19676C11__8S19676C5[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C139S19676C11__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C139S19676C11__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C139S19676C11__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C149S19676C11__A1__8S19676C5[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C149S19676C11__A2__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C149S19676C11__A2__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C149S19676C11__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C149S19676C11__A1__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C149S19676C11__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C149S19676C11__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C10__9S19676C11__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C11__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C12__9S19676C11__8S19676C5[5]),  5,7},
  {&(_tg__ZTV8S19676C8__9S19676C11__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C13__9S19676C11__8S19676C5[6]),  6,8},
  {&(_tg__ZTV9S19676C14__9S19676C11__8S19676C5[6]),  6,8},
  {&(_tg__ZTV9S19676C129S19676C14__A1__9S19676C11__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A6__9S19676C11__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C14__A__9S19676C11__8S19676C5[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A2__9S19676C11__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A1__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__A1__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C12__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C12__A2__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C12__A2__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C12__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C12__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C14__8S19676C5[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A4__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A4__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__A1__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C13__A1__8S19676C5[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C13__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C13__A8__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A8__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C13__A1__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C13__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A9__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C13__A9__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C13__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C13__A1__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C13__A1__8S19676C5[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C13__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C13__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C13__A1__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C17__8S19676C5[8]),  8,10},
  {&(_tg__ZTV9S19676C17__8S19676C5[8]),  8,10},
  {&(_tg__ZTV8S19676C9__9S19676C17__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C17__8S19676C5[6]),  6,8},
  {&(_tg__ZTV8S19676C8__9S19676C17__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C17__8S19676C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19676C5[];
extern  VTBL_ENTRY _ZTV8S19676C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C5[];
static VTBL_ENTRY alt_thunk_names72[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S19676C11D0Ev,_ZThn264_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S19676C11D1Ev,_ZThn264_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N9S19676C11D0Ev,_ZThn476_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N9S19676C11D1Ev,_ZThn476_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S19676C13D0Ev,_ZThn172_N9S19676C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn712_N9S19676C13D0Ev,_ZThn420_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S19676C13D1Ev,_ZThn172_N9S19676C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn712_N9S19676C13D1Ev,_ZThn420_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C13D0Ev,_ZThn208_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C13D1Ev,_ZThn208_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C7D0Ev,_ZTv0_n28_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19676C7D0Ev,_ZThn440_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C7D1Ev,_ZTv0_n28_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19676C7D1Ev,_ZThn440_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C7D0Ev,_ZTv0_n24_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19676C7D0Ev,_ZThn400_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C7D1Ev,_ZTv0_n24_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19676C7D1Ev,_ZThn400_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C7D0Ev,_ZTv0_n20_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S19676C7D0Ev,_ZThn392_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C7D1Ev,_ZTv0_n20_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S19676C7D1Ev,_ZThn392_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C7D0Ev,_ZTv0_n32_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19676C7D0Ev,_ZThn136_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C7D1Ev,_ZTv0_n32_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19676C7D1Ev,_ZThn136_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C7D0Ev,_ZTv0_n12_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19676C7D0Ev,_ZThn108_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C7D1Ev,_ZTv0_n12_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19676C7D1Ev,_ZThn108_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N8S19676C7D0Ev,_ZThn612_N8S19676C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19676C7D0Ev,_ZThn52_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N8S19676C7D1Ev,_ZThn612_N8S19676C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19676C7D1Ev,_ZThn52_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19676C14D0Ev,_ZThn108_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19676C14D1Ev,_ZThn108_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S19676C14D0Ev,_ZThn212_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S19676C14D0Ev,_ZThn264_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19676C14D0Ev,_ZThn52_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N9S19676C14D0Ev,_ZThn612_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S19676C14D1Ev,_ZThn212_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S19676C14D1Ev,_ZThn264_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19676C14D1Ev,_ZThn52_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N9S19676C14D1Ev,_ZThn612_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C12D0Ev,_ZThn80_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C12D1Ev,_ZThn80_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19676C12D0Ev,_ZThn24_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19676C12D1Ev,_ZThn24_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19676C17D0Ev,_ZThn460_N9S19676C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19676C17D1Ev,_ZThn460_N9S19676C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19676C17D0Ev,_ZThn168_N9S19676C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19676C17D1Ev,_ZThn168_N9S19676C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)_ZN9S19676C17D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19676C17D0Ev,_ZThn112_N9S19676C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1144_N9S19676C17D0Ev,_ZThn672_N9S19676C17D0Ev),
  (VTBL_ENTRY)_ZN9S19676C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)_ZN9S19676C17D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19676C17D1Ev,_ZThn112_N9S19676C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1144_N9S19676C17D1Ev,_ZThn672_N9S19676C17D1Ev),
  (VTBL_ENTRY)_ZN9S19676C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C18D0Ev,_ZTv0_n16_N9S19676C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19676C18D0Ev,_ZThn124_N9S19676C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C18D1Ev,_ZTv0_n16_N9S19676C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19676C18D1Ev,_ZThn124_N9S19676C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C18D0Ev,_ZTv0_n12_N9S19676C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S19676C18D0Ev,_ZThn180_N9S19676C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C18D1Ev,_ZTv0_n12_N9S19676C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S19676C18D1Ev,_ZThn180_N9S19676C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C16D0Ev,_ZTv0_n24_N9S19676C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N9S19676C16D0Ev,_ZThn596_N9S19676C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C16D1Ev,_ZTv0_n24_N9S19676C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N9S19676C16D1Ev,_ZThn596_N9S19676C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C16D0Ev,_ZTv0_n12_N9S19676C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C16D0Ev,_ZThn304_N9S19676C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C16D1Ev,_ZTv0_n12_N9S19676C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C16D1Ev,_ZThn304_N9S19676C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N9S19676C16D0Ev,_ZThn248_N9S19676C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N9S19676C16D0Ev,_ZThn808_N9S19676C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N9S19676C16D1Ev,_ZThn248_N9S19676C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N9S19676C16D1Ev,_ZThn808_N9S19676C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N9S19676C15D0Ev,_ZThn248_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N9S19676C15D1Ev,_ZThn248_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C15D0Ev,_ZThn304_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C15D1Ev,_ZThn304_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C10D0Ev,_ZThn80_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C10D0Ev,_ZThn304_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C10D1Ev,_ZThn80_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C10D1Ev,_ZThn304_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C5D0Ev,_ZTv0_n28_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19676C5D0Ev,_ZThn636_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C5D1Ev,_ZTv0_n28_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19676C5D1Ev,_ZThn636_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C5D0Ev,_ZTv0_n24_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N8S19676C5D0Ev,_ZThn596_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C5D1Ev,_ZTv0_n24_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N8S19676C5D1Ev,_ZThn596_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C5D0Ev,_ZTv0_n20_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1000_N8S19676C5D0Ev,_ZThn588_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C5D1Ev,_ZTv0_n20_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1000_N8S19676C5D1Ev,_ZThn588_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C5D0Ev,_ZTv0_n32_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S19676C5D0Ev,_ZThn332_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C5D1Ev,_ZTv0_n32_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S19676C5D1Ev,_ZThn332_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C5D0Ev,_ZTv0_n12_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19676C5D0Ev,_ZThn304_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C5D1Ev,_ZTv0_n12_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19676C5D1Ev,_ZThn304_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19676C5D0Ev,_ZTv0_n44_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19676C5D0Ev,_ZThn196_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19676C5D1Ev,_ZTv0_n44_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19676C5D1Ev,_ZThn196_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N8S19676C5D0Ev,_ZThn808_N8S19676C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S19676C5D0Ev,_ZThn248_N8S19676C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19676C5D0Ev,_ZThn136_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N8S19676C5D1Ev,_ZThn808_N8S19676C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S19676C5D1Ev,_ZThn248_N8S19676C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19676C5D1Ev,_ZThn136_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C5 = {  "S19676C5", // class name
  bases_S19676C5, 40,
  &(vtc_S19676C5[0]), // expected_vtbl_contents
  &(vtt_S19676C5[0]), // expected_vtt_contents
  ABISELECT(1392,816), // object size
  NSPAIRA(_ZTI8S19676C5),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19676C5),149, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19676C5),149, //virtual table table var
  38, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names72,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C20  : virtual S19676C8 , S19676C12 {
  short  :0;
  virtual  ~S19676C20(); // _ZN9S19676C20D2Ev
  S19676C20(); // tgen
};
//SIG(-1 S19676C20) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} BC5{ VBC2 BC4 vd Fi} vd Fs:0}


 S19676C20 ::~S19676C20(){ note_dtor("S19676C20", this);}
S19676C20 ::S19676C20(){ note_ctor("S19676C20", this);} // tgen

static void Test_S19676C20()
{
  extern Class_Descriptor cd_S19676C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,24)];
    init_test(&cd_S19676C20, buf);
    S19676C20 *dp, &lv = *(dp=new (buf) S19676C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S19676C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C20)");
    check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(128,64), "S19676C20");
    check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(128,64), "S19676C20");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*), ABISELECT(128,64), "S19676C20");
    check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(16,8), "S19676C20");
    check_base_class_offset(lv, (S19676C8*), ABISELECT(16,8), "S19676C20");
    check_base_class_offset(lv, (S19676C8*)(S19676C12*), ABISELECT(16,8), "S19676C20");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*), 0, "S19676C20");
    check_base_class_offset(lv, (S19676C12*), 0, "S19676C20");
    test_class_info(&lv, &cd_S19676C20);
    dp->~S19676C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C20(Test_S19676C20, "S19676C20", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN9S19676C20C1Ev();
extern void _ZN9S19676C20D2Ev();
Name_Map name_map_S19676C20[] = {
  NSPAIR(_ZN9S19676C20C1Ev),
  NSPAIR(_ZN9S19676C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
static Base_Class bases_S19676C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(128,64), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19676C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C20[];
extern void _ZN9S19676C20D1Ev();
extern void _ZN9S19676C20D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19676C20D1Ev,_ZTv0_n16_N9S19676C20D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C20D1Ev,_ZThn8_N9S19676C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C20D0Ev,_ZTv0_n16_N9S19676C20D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C20D0Ev,_ZThn8_N9S19676C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C20D1Ev,_ZTv0_n12_N9S19676C20D1Ev)();
extern void ABISELECT(_ZThn128_N9S19676C20D1Ev,_ZThn64_N9S19676C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C20D0Ev,_ZTv0_n12_N9S19676C20D0Ev)();
extern void ABISELECT(_ZThn128_N9S19676C20D0Ev,_ZThn64_N9S19676C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C20[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C20[0]),
  (VTBL_ENTRY)&_ZN9S19676C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C20D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19676C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C20D1Ev,_ZTv0_n16_N9S19676C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C20D0Ev,_ZTv0_n16_N9S19676C20D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19676C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C20D1Ev,_ZTv0_n12_N9S19676C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C20D0Ev,_ZTv0_n12_N9S19676C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C20[];
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C20[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C12__A1__9S19676C20[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S19676C10D1Ev,_ZThn64_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S19676C10D0Ev,_ZThn64_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C12__A1__9S19676C20[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn8_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn8_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C12__9S19676C20[] = {
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn128_N9S19676C12D1Ev,_ZThn64_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn128_N9S19676C12D0Ev,_ZThn64_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C12__9S19676C20[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C20[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__9S19676C20[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn112_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C20[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C20[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
static  VTT_ENTRY vtt_S19676C20[] = {
  {&(_ZTV9S19676C20[4]),  4,17},
  {&(_tg__ZTV9S19676C12__9S19676C20[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C12__A1__9S19676C20[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C12__A1__9S19676C20[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C12__9S19676C20[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C12__9S19676C20[3]),  3,5},
  {&(_ZTV9S19676C20[10]),  10,17},
  {&(_ZTV9S19676C20[15]),  15,17},
  {&(_tg__ZTV8S19676C8__9S19676C20[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__9S19676C20[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C20[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C20[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19676C20[];
extern  VTBL_ENTRY _ZTV9S19676C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C20[];
static VTBL_ENTRY alt_thunk_names73[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C12D0Ev,_ZThn64_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C12D1Ev,_ZThn64_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn8_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn8_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C10D0Ev,_ZThn64_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C10D1Ev,_ZThn64_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C20D0Ev,_ZTv0_n12_N9S19676C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C20D0Ev,_ZThn64_N9S19676C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C20D1Ev,_ZTv0_n12_N9S19676C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C20D1Ev,_ZThn64_N9S19676C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C20D0Ev,_ZTv0_n16_N9S19676C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C20D0Ev,_ZThn8_N9S19676C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C20D1Ev,_ZTv0_n16_N9S19676C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C20D1Ev,_ZThn8_N9S19676C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C20 = {  "S19676C20", // class name
  bases_S19676C20, 5,
  &(vtc_S19676C20[0]), // expected_vtbl_contents
  &(vtt_S19676C20[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI9S19676C20),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19676C20),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C20),12, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names73,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C19  : S19676C15 , S19676C11 , virtual S19676C20 {
  virtual  ~S19676C19(); // _ZN9S19676C19D2Ev
  S19676C19(); // tgen
};
//SIG(-1 S19676C19) C1{ BC2{ VBC3{ vd m Fp Fi Fc FD} VBC4{ VBC3 BC5{ VBC3 vd} Fp[10] Fi FL} BC5 vd Fp Fi FC3[3] Fi[7]} BC6{ VBC5 VBC7{ VBC4 BC5 vd Fi} BC4 BC8{ VBC4 VBC9{ BC3 VBC5 VBC4 BC7 vd Fi} BC2 BC3 BC5 vd} BC9 vd Fs} VBC10{ VBC4 BC7 vd Fs:0} vd}


 S19676C19 ::~S19676C19(){ note_dtor("S19676C19", this);}
S19676C19 ::S19676C19(){ note_ctor("S19676C19", this);} // tgen

static void Test_S19676C19()
{
  extern Class_Descriptor cd_S19676C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,132)];
    init_test(&cd_S19676C19, buf);
    S19676C19 *dp, &lv = *(dp=new (buf) S19676C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,524), "sizeof(S19676C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C19)");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C15*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*)(S19676C11*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*)(S19676C11*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(672,380), "S19676C19");
    check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*)(S19676C11*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C20*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(720,408), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C15*), ABISELECT(720,408), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*), ABISELECT(720,408), "S19676C19");
    check_base_class_offset(lv, (S19676C8*)(S19676C13*)(S19676C11*), ABISELECT(720,408), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(720,408), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(720,408), "S19676C19");
    check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(720,408), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*)(S19676C11*), ABISELECT(720,408), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(720,408), "S19676C19");
    check_base_class_offset(lv, (S19676C8*)(S19676C20*), ABISELECT(720,408), "S19676C19");
    check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C20*), ABISELECT(720,408), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*), 0, "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C15*), 0, "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C11*), ABISELECT(824,464), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), ABISELECT(824,464), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*)(S19676C11*), ABISELECT(824,464), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*), ABISELECT(832,468), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C11*), ABISELECT(832,468), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*)(S19676C11*), ABISELECT(208,124), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C11*), ABISELECT(208,124), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), ABISELECT(848,476), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(896,504), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(896,504), "S19676C19");
    check_base_class_offset(lv, (S19676C14*)(S19676C13*)(S19676C11*), ABISELECT(848,476), "S19676C19");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(320,180), "S19676C19");
    check_base_class_offset(lv, (S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(320,180), "S19676C19");
    /*is_ambiguous_... S19676C13::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*)(S19676C11*), ABISELECT(528,304), "S19676C19");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*)(S19676C11*), ABISELECT(576,332), "S19676C19");
    check_base_class_offset(lv, (S19676C13*)(S19676C11*), ABISELECT(320,180), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*)(S19676C11*), ABISELECT(592,336), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(640,364), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(640,364), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C11*), ABISELECT(592,336), "S19676C19");
    check_base_class_offset(lv, (S19676C11*), ABISELECT(208,124), "S19676C19");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C20*), ABISELECT(912,516), "S19676C19");
    check_base_class_offset(lv, (S19676C12*)(S19676C20*), ABISELECT(912,516), "S19676C19");
    check_base_class_offset(lv, (S19676C20*), ABISELECT(912,516), "S19676C19");
    test_class_info(&lv, &cd_S19676C19);
    dp->~S19676C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C19(Test_S19676C19, "S19676C19", ABISELECT(928,524));

#else // __cplusplus

extern void _ZN9S19676C19C1Ev();
extern void _ZN9S19676C19D2Ev();
Name_Map name_map_S19676C19[] = {
  NSPAIR(_ZN9S19676C19C1Ev),
  NSPAIR(_ZN9S19676C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C11;
extern VTBL_ENTRY _ZTI9S19676C11[];
extern  VTBL_ENTRY _ZTV9S19676C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C11[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C20;
extern VTBL_ENTRY _ZTI9S19676C20[];
extern  VTBL_ENTRY _ZTV9S19676C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C20[];
static Base_Class bases_S19676C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(672,380), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(720,408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(720,408), //bcp->offset
    54, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19676C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19676C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C10,    ABISELECT(824,464), //bcp->offset
    60, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(832,468), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(832,468), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(208,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(208,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(848,476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(896,504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(896,504), //bcp->offset
    81, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(848,476), //bcp->offset
    73, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(320,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(320,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(528,304), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(576,332), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19676C13,    ABISELECT(320,180), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(592,336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(640,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(640,364), //bcp->offset
    43, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(592,336), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19676C11,    ABISELECT(208,124), //bcp->offset
    10, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C10,    ABISELECT(912,516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(912,516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C20,    ABISELECT(912,516), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C19[];
extern void _ZN9S19676C19D1Ev();
extern void _ZN9S19676C19D0Ev();
extern void ABISELECT(_ZThn208_N9S19676C19D1Ev,_ZThn124_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn208_N9S19676C19D0Ev,_ZThn124_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn320_N9S19676C19D1Ev,_ZThn180_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn320_N9S19676C19D0Ev,_ZThn180_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn528_N9S19676C19D1Ev,_ZThn304_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn528_N9S19676C19D0Ev,_ZThn304_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn576_N9S19676C19D1Ev,_ZThn332_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn576_N9S19676C19D0Ev,_ZThn332_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn592_N9S19676C19D1Ev,_ZThn336_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn592_N9S19676C19D0Ev,_ZThn336_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn640_N9S19676C19D1Ev,_ZThn364_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn640_N9S19676C19D0Ev,_ZThn364_N9S19676C19D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C19D1Ev,_ZTv0_n12_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn672_N9S19676C19D1Ev,_ZThn380_N9S19676C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C19D0Ev,_ZTv0_n12_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn672_N9S19676C19D0Ev,_ZThn380_N9S19676C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C19D1Ev,_ZTv0_n16_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn720_N9S19676C19D1Ev,_ZThn408_N9S19676C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C19D0Ev,_ZTv0_n16_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn720_N9S19676C19D0Ev,_ZThn408_N9S19676C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C19D1Ev,_ZTv0_n16_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn824_N9S19676C19D1Ev,_ZThn464_N9S19676C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C19D0Ev,_ZTv0_n16_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn824_N9S19676C19D0Ev,_ZThn464_N9S19676C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn832_N9S19676C19D1Ev,_ZThn468_N9S19676C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn832_N9S19676C19D0Ev,_ZThn468_N9S19676C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C19D1Ev,_ZTv0_n24_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn848_N9S19676C19D1Ev,_ZThn476_N9S19676C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C19D0Ev,_ZTv0_n24_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn848_N9S19676C19D0Ev,_ZThn476_N9S19676C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N9S19676C19D1Ev,_ZTvn28_n24_N9S19676C19D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C19D0Ev,_ZTvn28_n24_N9S19676C19D0Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn912_N9S19676C19D1Ev,_ZThn516_N9S19676C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn912_N9S19676C19D0Ev,_ZThn516_N9S19676C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C19[] = {
  ABISELECT(912,516),
  ABISELECT(848,476),
  ABISELECT(832,468),
  ABISELECT(824,464),
  ABISELECT(720,408),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&_ZN9S19676C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C19D0Ev,
  ABISELECT(640,352),
  ABISELECT(512,284),
  ABISELECT(624,344),
  ABISELECT(616,340),
  ABISELECT(464,256),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N9S19676C19D1Ev,_ZThn124_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N9S19676C19D0Ev,_ZThn124_N9S19676C19D0Ev),
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N9S19676C19D1Ev,_ZThn180_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N9S19676C19D0Ev,_ZThn180_N9S19676C19D0Ev),
  ABISELECT(-528,-304),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn528_N9S19676C19D1Ev,_ZThn304_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn528_N9S19676C19D0Ev,_ZThn304_N9S19676C19D0Ev),
  ABISELECT(96,48),
  ABISELECT(-576,-332),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn576_N9S19676C19D1Ev,_ZThn332_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn576_N9S19676C19D0Ev,_ZThn332_N9S19676C19D0Ev),
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  ABISELECT(-592,-336),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn592_N9S19676C19D1Ev,_ZThn336_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn592_N9S19676C19D0Ev,_ZThn336_N9S19676C19D0Ev),
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-640,-364),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn640_N9S19676C19D1Ev,_ZThn364_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn640_N9S19676C19D0Ev,_ZThn364_N9S19676C19D0Ev),
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C19D1Ev,_ZTv0_n12_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C19D0Ev,_ZTv0_n12_N9S19676C19D0Ev),
  ABISELECT(-720,-408),
  ABISELECT(-48,-28),
  ABISELECT(-720,-408),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C19D1Ev,_ZTv0_n16_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C19D0Ev,_ZTv0_n16_N9S19676C19D0Ev),
  ABISELECT(-824,-464),
  ABISELECT(-152,-84),
  ABISELECT(-824,-464),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C19D1Ev,_ZTv0_n16_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C19D0Ev,_ZTv0_n16_N9S19676C19D0Ev),
  ABISELECT(-832,-468),
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  ABISELECT(-832,-468),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev),
  ABISELECT(-848,-476),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-848,-476),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C19D1Ev,_ZTv0_n24_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C19D0Ev,_ZTv0_n24_N9S19676C19D0Ev),
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-896,-504),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C19D1Ev,_ZTvn28_n24_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C19D0Ev,_ZTvn28_n24_N9S19676C19D0Ev),
  ABISELECT(-912,-516),
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  ABISELECT(-912,-516),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C19[];
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C15__9S19676C19[] = {
  ABISELECT(720,408),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C15__A1__9S19676C19[] = {
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn672_N9S19676C10D1Ev,_ZThn380_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn672_N9S19676C10D0Ev,_ZThn380_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C15__A1__9S19676C19[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn672_N9S19676C15D1Ev,_ZThn380_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn672_N9S19676C15D0Ev,_ZThn380_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C15__9S19676C19[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn720_N9S19676C15D1Ev,_ZThn408_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn720_N9S19676C15D0Ev,_ZThn408_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C15__9S19676C19[] = {
  ABISELECT(-720,-408),
  ABISELECT(-48,-28),
  ABISELECT(-720,-408),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C11D1Ev();
extern void _ZN9S19676C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C11__9S19676C19[] = {
  ABISELECT(640,352),
  ABISELECT(512,284),
  ABISELECT(624,344),
  ABISELECT(616,340),
  ABISELECT(464,256),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&_ZN9S19676C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C11D0Ev,
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C89S19676C11__A1__9S19676C19[] = {
  ABISELECT(464,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C89S19676C11__A4__9S19676C19[] = {
  ABISELECT(464,256),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S19676C10D1Ev,_ZThn256_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn464_N9S19676C10D0Ev,_ZThn256_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C89S19676C11__A4__9S19676C19[] = {
  ABISELECT(-464,-256),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZThn464_N8S19676C8D1Ev,_ZThn256_N8S19676C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
extern void ABISELECT(_ZThn464_N8S19676C8D0Ev,_ZThn256_N8S19676C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C89S19676C11__A1__9S19676C19[] = {
  ABISELECT(-464,-256),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C139S19676C11__9S19676C19[] = {
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C139S19676C11__A1__9S19676C19[] = {
  ABISELECT(400,228),
  ABISELECT(352,200),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C139S19676C11__A6__9S19676C19[] = {
  ABISELECT(352,200),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn352_N9S19676C10D1Ev,_ZThn200_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn352_N9S19676C10D0Ev,_ZThn200_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C11__A6__9S19676C19[] = {
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn352_N9S19676C15D1Ev,_ZThn200_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn352_N9S19676C15D0Ev,_ZThn200_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C139S19676C11__A1__9S19676C19[] = {
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn400_N9S19676C15D1Ev,_ZThn228_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn400_N9S19676C15D0Ev,_ZThn228_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C139S19676C11__A1__9S19676C19[] = {
  ABISELECT(-400,-228),
  ABISELECT(-48,-28),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C139S19676C11__A7__9S19676C19[] = {
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn96_N9S19676C10D1Ev,_ZThn48_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn96_N9S19676C10D0Ev,_ZThn48_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C139S19676C11__A7__9S19676C19[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn400_N9S19676C13D1Ev,_ZThn228_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn400_N9S19676C13D0Ev,_ZThn228_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C139S19676C11__9S19676C19[] = {
  ABISELECT(-400,-228),
  ABISELECT(-48,-28),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn352_N9S19676C13D1Ev,_ZThn200_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn352_N9S19676C13D0Ev,_ZThn200_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C139S19676C11__9S19676C19[] = {
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn528_N9S19676C13D1Ev,_ZThn296_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn528_N9S19676C13D0Ev,_ZThn296_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C139S19676C11__9S19676C19[] = {
  ABISELECT(-528,-296),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn504_N9S19676C13D1Ev,_ZThn284_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn504_N9S19676C13D0Ev,_ZThn284_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C139S19676C11__9S19676C19[] = {
  ABISELECT(-504,-284),
  ABISELECT(-152,-84),
  ABISELECT(-504,-284),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C139S19676C11__9S19676C19[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C139S19676C11__9S19676C19[] = {
  ABISELECT(96,48),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C149S19676C11__A1__9S19676C19[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C149S19676C11__A2__9S19676C19[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C149S19676C11__A8__9S19676C19[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn32_N9S19676C10D1Ev,_ZThn16_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn32_N9S19676C10D0Ev,_ZThn16_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C11__A8__9S19676C19[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn80_N9S19676C12D1Ev,_ZThn44_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn80_N9S19676C12D0Ev,_ZThn44_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C149S19676C11__A2__9S19676C19[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19676C12D1Ev,_ZThn16_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S19676C12D0Ev,_ZThn16_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C149S19676C11__A2__9S19676C19[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn232_N9S19676C14D1Ev,_ZThn128_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn232_N9S19676C14D0Ev,_ZThn128_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C149S19676C11__A1__9S19676C19[] = {
  ABISELECT(-232,-128),
  ABISELECT(-152,-84),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S19676C14D1Ev,_ZThn44_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S19676C14D0Ev,_ZThn44_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C149S19676C11__A1__9S19676C19[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn128_N9S19676C14D1Ev,_ZThn72_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn128_N9S19676C14D0Ev,_ZThn72_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C149S19676C11__A1__9S19676C19[] = {
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C149S19676C11__A1__9S19676C19[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn616_N9S19676C11D1Ev,_ZThn340_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn616_N9S19676C11D0Ev,_ZThn340_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C11__9S19676C19[] = {
  ABISELECT(-616,-340),
  ABISELECT(-152,-84),
  ABISELECT(-616,-340),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn464_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C11__9S19676C19[] = {
  ABISELECT(-464,-256),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn624_N9S19676C11D1Ev,_ZThn344_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn624_N9S19676C11D0Ev,_ZThn344_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C11__9S19676C19[] = {
  ABISELECT(-624,-344),
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  ABISELECT(-624,-344),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn512_N9S19676C11D1Ev,_ZThn284_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn512_N9S19676C11D0Ev,_ZThn284_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C11__9S19676C19[] = {
  ABISELECT(-512,-284),
  ABISELECT(-48,-28),
  ABISELECT(-512,-284),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C13__9S19676C11__9S19676C19[] = {
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn640_N9S19676C11D1Ev,_ZThn352_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn640_N9S19676C11D0Ev,_ZThn352_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C11__9S19676C19[] = {
  ABISELECT(-640,-352),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-640,-352),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__9S19676C11__9S19676C19[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A6__9S19676C11__9S19676C19[] = {
  ABISELECT(96,48),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__A__9S19676C11__9S19676C19[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A2__9S19676C11__9S19676C19[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C19[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__9S19676C19[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C19[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C19[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A2__9S19676C19[] = {
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__A2__9S19676C19[] = {
  ABISELECT(152,84),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C19[] = {
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C12__A3__9S19676C19[] = {
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C12__A3__9S19676C19[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C12__9S19676C19[] = {
  ABISELECT(112,60),
  ABISELECT(-48,-28),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C12__9S19676C19[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C19[] = {
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__9S19676C19[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A5__9S19676C19[] = {
  ABISELECT(-224,-124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A5__9S19676C19[] = {
  ABISELECT(224,124),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__A1__9S19676C19[] = {
  ABISELECT(176,96),
  ABISELECT(-48,-28),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__A1__9S19676C19[] = {
  ABISELECT(224,124),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__9S19676C19[] = {
  ABISELECT(24,12),
  ABISELECT(-152,-84),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__9S19676C19[] = {
  ABISELECT(176,96),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__9S19676C19[] = {
  ABISELECT(128,68),
  ABISELECT(-48,-28),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__9S19676C19[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void _ZN9S19676C20D1Ev();
extern void _ZN9S19676C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C20__9S19676C19[] = {
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C20[0]),
  (VTBL_ENTRY)&_ZN9S19676C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C20D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C20__A3__9S19676C19[] = {
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C20__A9__9S19676C19[] = {
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C20__A9__9S19676C19[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C20__A3__9S19676C19[] = {
  ABISELECT(192,108),
  ABISELECT(-48,-28),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C20__A3__9S19676C19[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C20D1Ev,_ZTv0_n16_N9S19676C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C20D0Ev,_ZTv0_n16_N9S19676C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C20__9S19676C19[] = {
  ABISELECT(192,108),
  ABISELECT(-48,-28),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S19676C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C20D1Ev,_ZTv0_n16_N9S19676C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C20D0Ev,_ZTv0_n16_N9S19676C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C20D1Ev,_ZTv0_n12_N9S19676C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C20D0Ev,_ZTv0_n12_N9S19676C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C20__9S19676C19[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI9S19676C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C20D1Ev,_ZTv0_n12_N9S19676C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C20D0Ev,_ZTv0_n12_N9S19676C20D0Ev),
};
static  VTT_ENTRY vtt_S19676C19[] = {
  {&(_ZTV9S19676C19[8]),  8,94},
  {&(_tg__ZTV9S19676C15__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C15__A1__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C15__A1__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C15__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C15__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C11__9S19676C19[7]),  7,9},
  {&(_tg__ZTV8S19676C89S19676C11__A1__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C89S19676C11__A4__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C89S19676C11__A4__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C89S19676C11__A1__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C139S19676C11__9S19676C19[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C139S19676C11__A1__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C139S19676C11__A6__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C11__A6__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C139S19676C11__A1__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C139S19676C11__A1__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C139S19676C11__A7__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C139S19676C11__A7__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C139S19676C11__9S19676C19[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C139S19676C11__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C139S19676C11__9S19676C19[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C139S19676C11__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C139S19676C11__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C139S19676C11__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C149S19676C11__A1__9S19676C19[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C149S19676C11__A2__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C149S19676C11__A8__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C11__A8__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C149S19676C11__A2__9S19676C19[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C149S19676C11__A2__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C149S19676C11__A1__9S19676C19[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C149S19676C11__A1__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C149S19676C11__A1__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C149S19676C11__A1__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C10__9S19676C11__9S19676C19[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C11__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C12__9S19676C11__9S19676C19[5]),  5,7},
  {&(_tg__ZTV8S19676C8__9S19676C11__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C13__9S19676C11__9S19676C19[6]),  6,8},
  {&(_tg__ZTV9S19676C14__9S19676C11__9S19676C19[6]),  6,8},
  {&(_tg__ZTV9S19676C129S19676C14__A1__9S19676C11__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A6__9S19676C11__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C14__A__9S19676C11__9S19676C19[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A2__9S19676C11__9S19676C19[4]),  4,6},
  {&(_ZTV9S19676C19[52]),  52,94},
  {&(_ZTV9S19676C19[58]),  58,94},
  {&(_ZTV9S19676C19[17]),  17,94},
  {&(_ZTV9S19676C19[64]),  64,94},
  {&(_ZTV9S19676C19[71]),  71,94},
  {&(_ZTV9S19676C19[25]),  25,94},
  {&(_ZTV9S19676C19[79]),  79,94},
  {&(_ZTV9S19676C19[85]),  85,94},
  {&(_ZTV9S19676C19[34]),  34,94},
  {&(_ZTV9S19676C19[41]),  41,94},
  {&(_ZTV9S19676C19[47]),  47,94},
  {&(_ZTV9S19676C19[92]),  92,94},
  {&(_tg__ZTV8S19676C8__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C10__A2__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__A2__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C12__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C12__A3__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C12__A3__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C12__9S19676C19[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C12__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C19[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A1__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A5__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A5__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__A1__9S19676C19[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__A1__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__9S19676C19[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C20__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C20__A3__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C20__A9__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C20__A9__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C20__A3__9S19676C19[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C20__A3__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C20__9S19676C19[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C20__9S19676C19[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19676C19[];
extern  VTBL_ENTRY _ZTV9S19676C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C19[];
static VTBL_ENTRY alt_thunk_names74[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N9S19676C11D0Ev,_ZThn352_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N9S19676C11D1Ev,_ZThn352_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19676C11D0Ev,_ZThn344_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19676C11D1Ev,_ZThn344_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S19676C11D0Ev,_ZThn284_N9S19676C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn616_N9S19676C11D0Ev,_ZThn340_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S19676C11D1Ev,_ZThn284_N9S19676C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn616_N9S19676C11D1Ev,_ZThn340_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C14D0Ev,_ZThn44_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C14D1Ev,_ZThn44_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C14D0Ev,_ZThn72_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19676C14D0Ev,_ZThn128_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C14D1Ev,_ZThn72_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19676C14D1Ev,_ZThn128_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C12D0Ev,_ZThn16_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C12D1Ev,_ZThn16_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C12D0Ev,_ZThn44_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C12D1Ev,_ZThn44_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N9S19676C13D0Ev,_ZThn296_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N9S19676C13D1Ev,_ZThn296_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C13D0Ev,_ZThn200_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C13D1Ev,_ZThn200_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S19676C13D0Ev,_ZThn284_N9S19676C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S19676C13D0Ev,_ZThn228_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S19676C13D1Ev,_ZThn284_N9S19676C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S19676C13D1Ev,_ZThn228_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19676C8D0Ev,_ZThn256_N8S19676C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19676C8D1Ev,_ZThn256_N8S19676C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S19676C15D0Ev,_ZThn228_N9S19676C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19676C15D0Ev,_ZThn408_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S19676C15D1Ev,_ZThn228_N9S19676C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19676C15D1Ev,_ZThn408_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C15D0Ev,_ZThn200_N9S19676C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19676C15D0Ev,_ZThn380_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C15D1Ev,_ZThn200_N9S19676C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19676C15D1Ev,_ZThn380_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C10D0Ev,_ZThn16_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19676C10D0Ev,_ZThn48_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C10D0Ev,_ZThn200_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C10D0Ev,_ZThn256_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19676C10D0Ev,_ZThn380_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C10D1Ev,_ZThn16_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19676C10D1Ev,_ZThn48_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C10D1Ev,_ZThn200_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C10D1Ev,_ZThn256_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19676C10D1Ev,_ZThn380_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C19D0Ev,_ZTv0_n24_N9S19676C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N9S19676C19D0Ev,_ZThn476_N9S19676C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C19D1Ev,_ZTv0_n24_N9S19676C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N9S19676C19D1Ev,_ZThn476_N9S19676C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N9S19676C19D0Ev,_ZThn516_N9S19676C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N9S19676C19D0Ev,_ZThn468_N9S19676C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N9S19676C19D1Ev,_ZThn516_N9S19676C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N9S19676C19D1Ev,_ZThn468_N9S19676C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C19D0Ev,_ZTv0_n16_N9S19676C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N9S19676C19D0Ev,_ZThn464_N9S19676C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19676C19D0Ev,_ZThn408_N9S19676C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C19D1Ev,_ZTv0_n16_N9S19676C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N9S19676C19D1Ev,_ZThn464_N9S19676C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19676C19D1Ev,_ZThn408_N9S19676C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C19D0Ev,_ZTv0_n12_N9S19676C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19676C19D0Ev,_ZThn380_N9S19676C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C19D1Ev,_ZTv0_n12_N9S19676C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19676C19D1Ev,_ZThn380_N9S19676C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C19 = {  "S19676C19", // class name
  bases_S19676C19, 27,
  &(vtc_S19676C19[0]), // expected_vtbl_contents
  &(vtt_S19676C19[0]), // expected_vtt_contents
  ABISELECT(928,524), // object size
  NSPAIRA(_ZTI9S19676C19),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19676C19),94, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C19),86, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names74,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C4  : virtual S19676C5 , S19676C13 , virtual S19676C19 {
  int s19676c4f0;
  virtual  ~S19676C4(); // _ZN8S19676C4D2Ev
  S19676C4(); // tgen
};
//SIG(-1 S19676C4) C1{ VBC2{ BC3{ m} VBC4{ VBC5{ VBC6{ vd m Fp Fi Fc FD} BC7{ VBC6 vd} Fp[10] Fi FL} VBC8{ VBC7 VBC9{ VBC5 BC7 vd Fi} BC5 BC10{ VBC5 VBC11{ BC6 VBC7 VBC5 BC9 vd Fi} BC12{ VBC6 VBC5 BC7 vd Fp Fi FC6[3] Fi[7]} BC6 BC7 vd} BC11 vd Fs} VBC10 VBC13{ m FC14{} Fi[3]} BC11 Fs Fp[2]} BC15{ VBC16{ VBC7 VBC11 VBC13 vd Fi} BC12 vd} BC17{ VBC6 VBC5 vd Fi FC14} BC16 vd Fi[10] FD} BC10 VBC18{ BC12 BC8 VBC19{ VBC5 BC9 vd Fs:0} vd} vd Fi}


 S19676C4 ::~S19676C4(){ note_dtor("S19676C4", this);}
S19676C4 ::S19676C4(){ note_ctor("S19676C4", this);} // tgen

static void Test_S19676C4()
{
  extern Class_Descriptor cd_S19676C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(148,342)];
    init_test(&cd_S19676C4, buf);
    S19676C4 *dp, &lv = *(dp=new (buf) S19676C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2352,1364), "sizeof(S19676C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C4)");
    check_base_class_offset(lv, (S4228C37*)(S19676C5*), ABISELECT(272,160), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*)(S19676C11*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*)(S19676C11*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*)(S19676C11*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*)(S19676C7*), ABISELECT(768,464), "S19676C4");
    check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C16*)(S19676C5*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C16*)(S19676C5*), ABISELECT(768,464), "S19676C4");
    check_base_class_offset(lv, (S19676C9*)(S19676C18*)(S19676C5*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C19*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C19*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*)(S19676C11*)(S19676C19*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*)(S19676C11*)(S19676C19*), ABISELECT(768,464), "S19676C4");
    check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*)(S19676C19*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C20*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C7*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C13*)(S19676C11*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*)(S19676C11*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C13*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*)(S19676C7*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*)(S19676C7*), ABISELECT(664,408), "S19676C4");
    check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C16*)(S19676C5*), ABISELECT(664,408), "S19676C4");
    check_base_class_offset(lv, (S19676C8*)(S19676C18*)(S19676C5*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C13*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C19*), ABISELECT(664,408), "S19676C4");
    check_base_class_offset(lv, (S19676C8*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(664,408), "S19676C4");
    check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*)(S19676C11*)(S19676C19*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*)(S19676C11*)(S19676C19*), ABISELECT(664,408), "S19676C4");
    check_base_class_offset(lv, (S19676C8*)(S19676C20*), ABISELECT(664,408), "S19676C4");
    check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C20*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C11*), ABISELECT(1640,968), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), ABISELECT(1640,968), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*)(S19676C11*), ABISELECT(1640,968), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*)(S19676C7*), ABISELECT(1640,968), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C17*), ABISELECT(1640,968), "S19676C4");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C17*)(S19676C5*), ABISELECT(1640,968), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C11*)(S19676C19*), ABISELECT(1640,968), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*)(S19676C11*)(S19676C19*), ABISELECT(1640,968), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*), ABISELECT(1272,748), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C11*), ABISELECT(1272,748), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C11*)(S19676C19*), ABISELECT(1272,748), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*)(S19676C11*), ABISELECT(816,492), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C11*), ABISELECT(816,492), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), ABISELECT(1296,756), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(1344,784), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(1344,784), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C13*)(S19676C11*), ABISELECT(1296,756), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C13*), ABISELECT(1296,756), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C17*), ABISELECT(1296,756), "S19676C4");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C17*)(S19676C5*), ABISELECT(1296,756), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C13*), ABISELECT(1296,756), "S19676C4");
    check_base_class_offset(lv, (S19676C14*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(1296,756), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(928,548), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(928,548), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*)(S19676C11*), ABISELECT(1136,672), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*)(S19676C11*), ABISELECT(1184,700), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C13*)(S19676C11*), ABISELECT(928,548), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*)(S19676C11*), ABISELECT(1200,704), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(1248,732), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(1248,732), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C11*), ABISELECT(1200,704), "S19676C4");
    check_base_class_offset(lv, (S19676C11*)(S19676C7*), ABISELECT(816,492), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*), ABISELECT(1360,796), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C15*)(S19676C13*), ABISELECT(1360,796), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*), ABISELECT(1568,920), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*), ABISELECT(1616,948), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C13*)(S19676C7*), ABISELECT(1360,796), "S19676C4");
    check_base_class_offset(lv, (S19676C2*)(S19676C7*), ABISELECT(1624,952), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C2*)(S19676C17*), ABISELECT(1624,952), "S19676C4");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C2*)(S19676C17*)(S19676C5*), ABISELECT(1624,952), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*)(S19676C7*), ABISELECT(576,356), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*)(S19676C7*), ABISELECT(624,384), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*)(S19676C7*), ABISELECT(624,384), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C7*), ABISELECT(576,356), "S19676C4");
    check_base_class_offset(lv, (S19676C7*)(S19676C5*), ABISELECT(576,356), "S19676C4");
    check_base_class_offset(lv, (S19676C17*)(S19676C16*)(S19676C5*), ABISELECT(1640,968), "S19676C4");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C16*)(S19676C5*), ABISELECT(272,160), "S19676C4");
    check_base_class_offset(lv, (S19676C15*)(S19676C16*)(S19676C5*), ABISELECT(272,160), "S19676C4");
    check_base_class_offset(lv, (S19676C16*)(S19676C5*), ABISELECT(272,160), "S19676C4");
    check_base_class_offset(lv, (S19676C18*)(S19676C5*), ABISELECT(480,284), "S19676C4");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C17*)(S19676C5*), ABISELECT(496,296), "S19676C4");
    check_base_class_offset(lv, (S19676C5*), ABISELECT(272,160), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*), 0, "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C15*)(S19676C13*), 0, "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*), ABISELECT(208,124), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*), ABISELECT(256,152), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C13*), 0, "S19676C4");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C19*), ABISELECT(1664,976), "S19676C4");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C15*)(S19676C19*), ABISELECT(1664,976), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*)(S19676C11*)(S19676C19*), ABISELECT(1872,1100), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C11*)(S19676C19*), ABISELECT(1872,1100), "S19676C4");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(1984,1156), "S19676C4");
    check_base_class_offset(lv, (S19676C15*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(1984,1156), "S19676C4");
    /*is_ambiguous_... S19676C13::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(2192,1280), "S19676C4");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(2240,1308), "S19676C4");
    check_base_class_offset(lv, (S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(1984,1156), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*)(S19676C11*)(S19676C19*), ABISELECT(2256,1312), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*)(S19676C19*), ABISELECT(2304,1340), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*)(S19676C11*)(S19676C19*), ABISELECT(2304,1340), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C11*)(S19676C19*), ABISELECT(2256,1312), "S19676C4");
    check_base_class_offset(lv, (S19676C11*)(S19676C19*), ABISELECT(1872,1100), "S19676C4");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C20*), ABISELECT(2328,1356), "S19676C4");
    check_base_class_offset(lv, (S19676C12*)(S19676C20*), ABISELECT(2328,1356), "S19676C4");
    check_base_class_offset(lv, (S19676C20*)(S19676C19*), ABISELECT(2328,1356), "S19676C4");
    check_base_class_offset(lv, (S19676C19*), ABISELECT(1664,976), "S19676C4");
    check_field_offset(lv, s19676c4f0, ABISELECT(264,156), "S19676C4.s19676c4f0");
    test_class_info(&lv, &cd_S19676C4);
    dp->~S19676C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C4(Test_S19676C4, "S19676C4", ABISELECT(2352,1364));

#else // __cplusplus

extern void _ZN8S19676C4C1Ev();
extern void _ZN8S19676C4D2Ev();
Name_Map name_map_S19676C4[] = {
  NSPAIR(_ZN8S19676C4C1Ev),
  NSPAIR(_ZN8S19676C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C11;
extern VTBL_ENTRY _ZTI9S19676C11[];
extern  VTBL_ENTRY _ZTV9S19676C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C11[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C7;
extern VTBL_ENTRY _ZTI8S19676C7[];
extern  VTBL_ENTRY _ZTV8S19676C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C7[];
extern Class_Descriptor cd_S19676C17;
extern VTBL_ENTRY _ZTI9S19676C17[];
extern  VTBL_ENTRY _ZTV9S19676C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C17[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C16;
extern VTBL_ENTRY _ZTI9S19676C16[];
extern  VTBL_ENTRY _ZTV9S19676C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C16[];
extern Class_Descriptor cd_S19676C18;
extern VTBL_ENTRY _ZTI9S19676C18[];
extern  VTBL_ENTRY _ZTV9S19676C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C18[];
extern Class_Descriptor cd_S19676C17;
extern VTBL_ENTRY _ZTI9S19676C17[];
extern  VTBL_ENTRY _ZTV9S19676C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C17[];
extern Class_Descriptor cd_S19676C5;
extern VTBL_ENTRY _ZTI8S19676C5[];
extern  VTBL_ENTRY _ZTV8S19676C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C5[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C11;
extern VTBL_ENTRY _ZTI9S19676C11[];
extern  VTBL_ENTRY _ZTV9S19676C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C11[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C20;
extern VTBL_ENTRY _ZTI9S19676C20[];
extern  VTBL_ENTRY _ZTV9S19676C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C20[];
extern Class_Descriptor cd_S19676C19;
extern VTBL_ENTRY _ZTI9S19676C19[];
extern  VTBL_ENTRY _ZTV9S19676C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C19[];
static Base_Class bases_S19676C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    ABISELECT(272,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(768,464), //bcp->offset
    82, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(664,408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(664,408), //bcp->offset
    76, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(1640,968), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    158, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(1272,748), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    161, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(1272,748), //bcp->offset
    127, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    160, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(816,492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(816,492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1296,756), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(1344,784), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    167, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(1344,784), //bcp->offset
    142, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    166, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(1296,756), //bcp->offset
    134, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    165, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(928,548), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(928,548), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1136,672), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(1184,700), //bcp->offset
    109, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19676C13,    ABISELECT(928,548), //bcp->offset
    97, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1200,704), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(1248,732), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(1248,732), //bcp->offset
    121, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(1200,704), //bcp->offset
    114, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    138, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19676C11,    ABISELECT(816,492), //bcp->offset
    87, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(1360,796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    177, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(1360,796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    176, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1568,920), //bcp->offset
    157, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(1616,948), //bcp->offset
    161, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    181, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19676C13,    ABISELECT(1360,796), //bcp->offset
    148, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    175, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(1624,952), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19676C9,    ABISELECT(576,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(624,384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(624,384), //bcp->offset
    70, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(576,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19676C7,    ABISELECT(576,356), //bcp->offset
    57, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S19676C17,    ABISELECT(1640,968), //bcp->offset
    166, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    189, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(272,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(272,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19676C16,    ABISELECT(272,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19676C18,    ABISELECT(480,284), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19676C17,    ABISELECT(496,296), //bcp->offset
    47, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19676C5,    ABISELECT(272,160), //bcp->offset
    26, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19676C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(208,124), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(256,152), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    61, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19676C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    62, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C10,    ABISELECT(1664,976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    197, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(1664,976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    196, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(1872,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    203, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(1872,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    202, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(1984,1156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    208, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(1984,1156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    207, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(2192,1280), //bcp->offset
    204, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(2240,1308), //bcp->offset
    208, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    212, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S19676C13,    ABISELECT(1984,1156), //bcp->offset
    196, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    206, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(2256,1312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(2304,1340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    222, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(2304,1340), //bcp->offset
    220, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    221, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(2256,1312), //bcp->offset
    213, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    220, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S19676C11,    ABISELECT(1872,1100), //bcp->offset
    187, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    201, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(2328,1356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    254, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(2328,1356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    253, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S19676C20,    ABISELECT(2328,1356), //bcp->offset
    226, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    252, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    63, //immediately_derived
  0, 1},
  {&cd_S19676C19,    ABISELECT(1664,976), //bcp->offset
    176, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    195, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19676C4[];
extern void _ZN8S19676C4D1Ev();
extern void _ZN8S19676C4D0Ev();
extern void ABISELECT(_ZThn208_N8S19676C4D1Ev,_ZThn124_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn208_N8S19676C4D0Ev,_ZThn124_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S19676C4D1Ev,_ZThn152_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S19676C4D0Ev,_ZThn152_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTv0_n104_N8S19676C4D1Ev,_ZTv0_n52_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn272_N8S19676C4D1Ev,_ZThn160_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19676C4D0Ev,_ZTv0_n52_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn272_N8S19676C4D0Ev,_ZThn160_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n104_N8S19676C4D1Ev,_ZTvn124_n52_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn208_n104_N8S19676C4D0Ev,_ZTvn124_n52_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19676C4D1Ev,_ZTv0_n16_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19676C4D1Ev,_ZThn296_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C4D0Ev,_ZTv0_n16_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19676C4D0Ev,_ZThn296_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19676C4D1Ev,_ZTv0_n44_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn576_N8S19676C4D1Ev,_ZThn356_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19676C4D0Ev,_ZTv0_n44_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn576_N8S19676C4D0Ev,_ZThn356_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n88_N8S19676C4D1Ev,_ZTvn28_n44_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N8S19676C4D0Ev,_ZTvn28_n44_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19676C4D1Ev,_ZTv0_n16_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn664_N8S19676C4D1Ev,_ZThn408_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C4D0Ev,_ZTv0_n16_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn664_N8S19676C4D0Ev,_ZThn408_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C4D1Ev,_ZTv0_n12_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn768_N8S19676C4D1Ev,_ZThn464_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C4D0Ev,_ZTv0_n12_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn768_N8S19676C4D0Ev,_ZThn464_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19676C4D1Ev,_ZTv0_n32_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn816_N8S19676C4D1Ev,_ZThn492_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19676C4D0Ev,_ZTv0_n32_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn816_N8S19676C4D0Ev,_ZThn492_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N8S19676C4D1Ev,_ZTvn56_n32_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S19676C4D0Ev,_ZTvn56_n32_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S19676C4D1Ev,_ZTvn180_n32_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S19676C4D0Ev,_ZTvn180_n32_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S19676C4D1Ev,_ZTvn208_n32_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S19676C4D0Ev,_ZTvn208_n32_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S19676C4D1Ev,_ZTvn212_n32_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S19676C4D0Ev,_ZTvn212_n32_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S19676C4D1Ev,_ZTvn240_n32_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S19676C4D0Ev,_ZTvn240_n32_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19676C4D1Ev,_ZTv0_n20_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn1272_N8S19676C4D1Ev,_ZThn748_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19676C4D0Ev,_ZTv0_n20_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn1272_N8S19676C4D0Ev,_ZThn748_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19676C4D1Ev,_ZTv0_n24_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn1296_N8S19676C4D1Ev,_ZThn756_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19676C4D0Ev,_ZTv0_n24_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn1296_N8S19676C4D0Ev,_ZThn756_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S19676C4D1Ev,_ZTvn28_n24_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19676C4D0Ev,_ZTvn28_n24_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S19676C4D1Ev,_ZTv0_n28_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn1360_N8S19676C4D1Ev,_ZThn796_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19676C4D0Ev,_ZTv0_n28_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn1360_N8S19676C4D0Ev,_ZThn796_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N8S19676C4D1Ev,_ZTvn124_n28_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S19676C4D0Ev,_ZTvn124_n28_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S19676C4D1Ev,_ZTvn152_n28_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S19676C4D0Ev,_ZTvn152_n28_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19676C4D1Ev,_ZTv0_n16_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn1640_N8S19676C4D1Ev,_ZThn968_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C4D0Ev,_ZTv0_n16_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn1640_N8S19676C4D0Ev,_ZThn968_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19676C4D1Ev,_ZTv0_n36_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn1664_N8S19676C4D1Ev,_ZThn976_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19676C4D0Ev,_ZTv0_n36_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn1664_N8S19676C4D0Ev,_ZThn976_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n72_N8S19676C4D1Ev,_ZTvn124_n36_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn208_n72_N8S19676C4D0Ev,_ZTvn124_n36_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn320_n72_N8S19676C4D1Ev,_ZTvn180_n36_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn320_n72_N8S19676C4D0Ev,_ZTvn180_n36_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn528_n72_N8S19676C4D1Ev,_ZTvn304_n36_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn528_n72_N8S19676C4D0Ev,_ZTvn304_n36_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn576_n72_N8S19676C4D1Ev,_ZTvn332_n36_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn576_n72_N8S19676C4D0Ev,_ZTvn332_n36_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn592_n72_N8S19676C4D1Ev,_ZTvn336_n36_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn592_n72_N8S19676C4D0Ev,_ZTvn336_n36_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn640_n72_N8S19676C4D1Ev,_ZTvn364_n36_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn640_n72_N8S19676C4D0Ev,_ZTvn364_n36_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19676C4D1Ev,_ZTv0_n20_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn2328_N8S19676C4D1Ev,_ZThn1356_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19676C4D0Ev,_ZTv0_n20_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn2328_N8S19676C4D0Ev,_ZThn1356_N8S19676C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C4[] = {
  ABISELECT(2328,1356),
  ABISELECT(1664,976),
  ABISELECT(1640,968),
  ABISELECT(1624,952),
  ABISELECT(1360,796),
  ABISELECT(1272,748),
  ABISELECT(816,492),
  ABISELECT(576,356),
  ABISELECT(272,160),
  ABISELECT(1640,968),
  ABISELECT(1296,756),
  ABISELECT(664,408),
  ABISELECT(768,464),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&_ZN8S19676C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C4D0Ev,
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19676C4D1Ev,_ZThn124_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19676C4D0Ev,_ZThn124_N8S19676C4D0Ev),
  ABISELECT(512,312),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19676C4D1Ev,_ZThn152_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19676C4D0Ev,_ZThn152_N8S19676C4D0Ev),
  ABISELECT(-272,-160),
  ABISELECT(1088,636),
  ABISELECT(1000,588),
  ABISELECT(544,332),
  ABISELECT(304,196),
  ABISELECT(1352,792),
  ABISELECT(1024,596),
  ABISELECT(1368,808),
  ABISELECT(1368,808),
  ABISELECT(392,248),
  ABISELECT(496,304),
  ABISELECT(-272,-160),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19676C4D1Ev,_ZTv0_n52_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19676C4D0Ev,_ZTv0_n52_N8S19676C4D0Ev),
  ABISELECT(184,124),
  ABISELECT(288,180),
  ABISELECT(-480,-284),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n104_N8S19676C4D1Ev,_ZTvn124_n52_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n104_N8S19676C4D0Ev,_ZTvn124_n52_N8S19676C4D0Ev),
  ABISELECT(1128,656),
  ABISELECT(168,112),
  ABISELECT(800,460),
  ABISELECT(1144,672),
  ABISELECT(-496,-296),
  ABISELECT(272,168),
  ABISELECT(-496,-296),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C4D1Ev,_ZTv0_n16_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C4D0Ev,_ZTv0_n16_N8S19676C4D0Ev),
  ABISELECT(-576,-356),
  ABISELECT(1048,596),
  ABISELECT(784,440),
  ABISELECT(720,400),
  ABISELECT(696,392),
  ABISELECT(240,136),
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(1064,612),
  ABISELECT(-576,-356),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19676C4D1Ev,_ZTv0_n44_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19676C4D0Ev,_ZTv0_n44_N8S19676C4D0Ev),
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-624,-384),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S19676C4D1Ev,_ZTvn28_n44_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S19676C4D0Ev,_ZTvn28_n44_N8S19676C4D0Ev),
  ABISELECT(-664,-408),
  ABISELECT(104,56),
  ABISELECT(-664,-408),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C4D1Ev,_ZTv0_n16_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C4D0Ev,_ZTv0_n16_N8S19676C4D0Ev),
  ABISELECT(-768,-464),
  ABISELECT(-768,-464),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C4D1Ev,_ZTv0_n12_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C4D0Ev,_ZTv0_n12_N8S19676C4D0Ev),
  ABISELECT(-816,-492),
  ABISELECT(480,264),
  ABISELECT(-152,-84),
  ABISELECT(456,256),
  ABISELECT(824,476),
  ABISELECT(-48,-28),
  ABISELECT(-816,-492),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C4D1Ev,_ZTv0_n32_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C4D0Ev,_ZTv0_n32_N8S19676C4D0Ev),
  ABISELECT(712,420),
  ABISELECT(368,208),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-928,-548),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C4D1Ev,_ZTvn56_n32_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C4D0Ev,_ZTvn56_n32_N8S19676C4D0Ev),
  ABISELECT(-1136,-672),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C4D1Ev,_ZTvn180_n32_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C4D0Ev,_ZTvn180_n32_N8S19676C4D0Ev),
  ABISELECT(-416,-236),
  ABISELECT(-1184,-700),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C4D1Ev,_ZTvn208_n32_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C4D0Ev,_ZTvn208_n32_N8S19676C4D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(440,264),
  ABISELECT(-1200,-704),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C4D1Ev,_ZTvn212_n32_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C4D0Ev,_ZTvn212_n32_N8S19676C4D0Ev),
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-1248,-732),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C4D1Ev,_ZTvn240_n32_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C4D0Ev,_ZTvn240_n32_N8S19676C4D0Ev),
  ABISELECT(-1272,-748),
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  ABISELECT(-1272,-748),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C4D1Ev,_ZTv0_n20_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C4D0Ev,_ZTv0_n20_N8S19676C4D0Ev),
  ABISELECT(-1296,-756),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-1296,-756),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C4D1Ev,_ZTv0_n24_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C4D0Ev,_ZTv0_n24_N8S19676C4D0Ev),
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-1344,-784),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C4D1Ev,_ZTvn28_n24_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C4D0Ev,_ZTvn28_n24_N8S19676C4D0Ev),
  ABISELECT(-1360,-796),
  ABISELECT(280,172),
  ABISELECT(-64,-40),
  ABISELECT(-696,-388),
  ABISELECT(-592,-332),
  ABISELECT(-1360,-796),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C4D1Ev,_ZTv0_n28_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C4D0Ev,_ZTv0_n28_N8S19676C4D0Ev),
  ABISELECT(-1568,-920),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C4D1Ev,_ZTvn124_n28_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C4D0Ev,_ZTvn124_n28_N8S19676C4D0Ev),
  ABISELECT(-848,-484),
  ABISELECT(-1616,-948),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C4D1Ev,_ZTvn152_n28_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C4D0Ev,_ZTvn152_n28_N8S19676C4D0Ev),
  -16,
  ABISELECT(-976,-560),
  ABISELECT(-344,-212),
  0,
  ABISELECT(-1640,-968),
  ABISELECT(-872,-504),
  ABISELECT(-1640,-968),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C4D1Ev,_ZTv0_n16_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C4D0Ev,_ZTv0_n16_N8S19676C4D0Ev),
  ABISELECT(-1664,-976),
  ABISELECT(664,380),
  ABISELECT(-368,-220),
  ABISELECT(-392,-228),
  ABISELECT(-24,-8),
  ABISELECT(-1000,-568),
  ABISELECT(-896,-512),
  ABISELECT(-1664,-976),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19676C4D1Ev,_ZTv0_n36_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19676C4D0Ev,_ZTv0_n36_N8S19676C4D0Ev),
  ABISELECT(-576,-344),
  ABISELECT(-1208,-692),
  ABISELECT(-600,-352),
  ABISELECT(-232,-132),
  ABISELECT(-1104,-636),
  ABISELECT(-1872,-1100),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N8S19676C4D1Ev,_ZTvn124_n36_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N8S19676C4D0Ev,_ZTvn124_n36_N8S19676C4D0Ev),
  ABISELECT(-344,-188),
  ABISELECT(-688,-400),
  ABISELECT(-1320,-748),
  ABISELECT(-1216,-692),
  ABISELECT(-1984,-1156),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n72_N8S19676C4D1Ev,_ZTvn180_n36_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n72_N8S19676C4D0Ev,_ZTvn180_n36_N8S19676C4D0Ev),
  ABISELECT(-2192,-1280),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn528_n72_N8S19676C4D1Ev,_ZTvn304_n36_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn528_n72_N8S19676C4D0Ev,_ZTvn304_n36_N8S19676C4D0Ev),
  ABISELECT(-1472,-844),
  ABISELECT(-2240,-1308),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn576_n72_N8S19676C4D1Ev,_ZTvn332_n36_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn576_n72_N8S19676C4D0Ev,_ZTvn332_n36_N8S19676C4D0Ev),
  ABISELECT(-1592,-904),
  ABISELECT(-1488,-848),
  ABISELECT(-616,-344),
  ABISELECT(-2256,-1312),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn592_n72_N8S19676C4D1Ev,_ZTvn336_n36_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn592_n72_N8S19676C4D0Ev,_ZTvn336_n36_N8S19676C4D0Ev),
  ABISELECT(-1640,-932),
  ABISELECT(-1536,-876),
  ABISELECT(-2304,-1340),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn640_n72_N8S19676C4D1Ev,_ZTvn364_n36_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn640_n72_N8S19676C4D0Ev,_ZTvn364_n36_N8S19676C4D0Ev),
  ABISELECT(-2328,-1356),
  ABISELECT(-1664,-948),
  ABISELECT(-1560,-892),
  ABISELECT(-2328,-1356),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C4D1Ev,_ZTv0_n20_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C4D0Ev,_ZTv0_n20_N8S19676C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19676C4[];
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C13__A__8S19676C4[] = {
  ABISELECT(1640,968),
  ABISELECT(1296,756),
  ABISELECT(664,408),
  ABISELECT(768,464),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C13__A3__8S19676C4[] = {
  ABISELECT(664,408),
  ABISELECT(768,464),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C13__A12__8S19676C4[] = {
  ABISELECT(768,464),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn768_N9S19676C10D1Ev,_ZThn464_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn768_N9S19676C10D0Ev,_ZThn464_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A12__8S19676C4[] = {
  ABISELECT(-768,-464),
  ABISELECT(-768,-464),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn768_N9S19676C15D1Ev,_ZThn464_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn768_N9S19676C15D0Ev,_ZThn464_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C13__A3__8S19676C4[] = {
  ABISELECT(-768,-464),
  ABISELECT(-768,-464),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn664_N9S19676C15D1Ev,_ZThn408_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn664_N9S19676C15D0Ev,_ZThn408_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C13__A3__8S19676C4[] = {
  ABISELECT(-664,-408),
  ABISELECT(104,56),
  ABISELECT(-664,-408),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A13__8S19676C4[] = {
  ABISELECT(512,312),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn512_N9S19676C10D1Ev,_ZThn312_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn512_N9S19676C10D0Ev,_ZThn312_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C13__A13__8S19676C4[] = {
  ABISELECT(-512,-312),
  ABISELECT(-512,-312),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn664_N9S19676C13D1Ev,_ZThn408_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn664_N9S19676C13D0Ev,_ZThn408_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C13__A__8S19676C4[] = {
  ABISELECT(-664,-408),
  ABISELECT(104,56),
  ABISELECT(-664,-408),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn768_N9S19676C13D1Ev,_ZThn464_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn768_N9S19676C13D0Ev,_ZThn464_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C13__A__8S19676C4[] = {
  ABISELECT(-768,-464),
  ABISELECT(-768,-464),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn1296_N9S19676C13D1Ev,_ZThn756_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn1296_N9S19676C13D0Ev,_ZThn756_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C13__A__8S19676C4[] = {
  ABISELECT(-1296,-756),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-1296,-756),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn1640_N9S19676C13D1Ev,_ZThn968_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn1640_N9S19676C13D0Ev,_ZThn968_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C13__A__8S19676C4[] = {
  ABISELECT(-1640,-968),
  ABISELECT(-872,-504),
  ABISELECT(-1640,-968),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C13__A__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-1344,-784),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C13__A__8S19676C4[] = {
  ABISELECT(512,312),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
extern void _ZN8S19676C5D1Ev();
extern void _ZN8S19676C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C5__8S19676C4[] = {
  ABISELECT(1088,636),
  ABISELECT(1000,588),
  ABISELECT(544,332),
  ABISELECT(304,196),
  ABISELECT(1352,792),
  ABISELECT(1024,596),
  ABISELECT(1368,808),
  ABISELECT(1368,808),
  ABISELECT(392,248),
  ABISELECT(496,304),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&_ZN8S19676C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C5D0Ev,
};
extern void _ZN9S19676C16D1Ev();
extern void _ZN9S19676C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C168S19676C5__8S19676C4[] = {
  ABISELECT(1352,792),
  ABISELECT(1024,596),
  ABISELECT(1368,808),
  ABISELECT(1368,808),
  ABISELECT(392,248),
  ABISELECT(496,304),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&_ZN9S19676C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C16D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C168S19676C5__A2__8S19676C4[] = {
  ABISELECT(392,248),
  ABISELECT(496,304),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C168S19676C5__A11__8S19676C4[] = {
  ABISELECT(496,304),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn496_N9S19676C10D1Ev,_ZThn304_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn496_N9S19676C10D0Ev,_ZThn304_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C168S19676C5__A11__8S19676C4[] = {
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn496_N9S19676C15D1Ev,_ZThn304_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn496_N9S19676C15D0Ev,_ZThn304_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C168S19676C5__A2__8S19676C4[] = {
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn392_N9S19676C15D1Ev,_ZThn248_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn392_N9S19676C15D0Ev,_ZThn248_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C168S19676C5__A2__8S19676C4[] = {
  ABISELECT(-392,-248),
  ABISELECT(104,56),
  ABISELECT(-392,-248),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn1368_N9S19676C16D1Ev,_ZThn808_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn1368_N9S19676C16D0Ev,_ZThn808_N9S19676C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C17__9S19676C168S19676C5__8S19676C4[] = {
  -16,
  ABISELECT(-976,-560),
  ABISELECT(-344,-212),
  0,
  ABISELECT(-1368,-808),
  ABISELECT(-872,-504),
  ABISELECT(-1368,-808),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C16D1Ev,_ZTv0_n12_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn496_N9S19676C16D1Ev,_ZThn304_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C16D0Ev,_ZTv0_n12_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn496_N9S19676C16D0Ev,_ZThn304_N9S19676C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C168S19676C5__8S19676C4[] = {
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C16D1Ev,_ZTv0_n12_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C16D0Ev,_ZTv0_n12_N9S19676C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C16D1Ev,_ZTv0_n24_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn1024_N9S19676C16D1Ev,_ZThn596_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C16D0Ev,_ZTv0_n24_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn1024_N9S19676C16D0Ev,_ZThn596_N9S19676C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C168S19676C5__8S19676C4[] = {
  ABISELECT(-1024,-596),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-1024,-596),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C16D1Ev,_ZTv0_n24_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C16D0Ev,_ZTv0_n24_N9S19676C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn392_N9S19676C16D1Ev,_ZThn248_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn392_N9S19676C16D0Ev,_ZThn248_N9S19676C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C168S19676C5__8S19676C4[] = {
  ABISELECT(-392,-248),
  ABISELECT(104,56),
  ABISELECT(-392,-248),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C16D1Ev,_ZTvn28_n24_N9S19676C16D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C16D0Ev,_ZTvn28_n24_N9S19676C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C168S19676C5__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-1072,-624),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C16D1Ev,_ZTvn28_n24_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C16D0Ev,_ZTvn28_n24_N9S19676C16D0Ev),
};
extern void _ZN9S19676C18D1Ev();
extern void _ZN9S19676C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C188S19676C5__8S19676C4[] = {
  ABISELECT(184,124),
  ABISELECT(288,180),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C18[0]),
  (VTBL_ENTRY)&_ZN9S19676C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C18D1Ev,_ZTv0_n12_N9S19676C18D1Ev)();
extern void ABISELECT(_ZThn288_N9S19676C18D1Ev,_ZThn180_N9S19676C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C18D0Ev,_ZTv0_n12_N9S19676C18D0Ev)();
extern void ABISELECT(_ZThn288_N9S19676C18D0Ev,_ZThn180_N9S19676C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C188S19676C5__8S19676C4[] = {
  ABISELECT(-288,-180),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI9S19676C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C18D1Ev,_ZTv0_n12_N9S19676C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C18D0Ev,_ZTv0_n12_N9S19676C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C18D1Ev,_ZTv0_n16_N9S19676C18D1Ev)();
extern void ABISELECT(_ZThn184_N9S19676C18D1Ev,_ZThn124_N9S19676C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C18D0Ev,_ZTv0_n16_N9S19676C18D0Ev)();
extern void ABISELECT(_ZThn184_N9S19676C18D0Ev,_ZThn124_N9S19676C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C188S19676C5__8S19676C4[] = {
  ABISELECT(-184,-124),
  ABISELECT(104,56),
  ABISELECT(-184,-124),
  (VTBL_ENTRY)&(_ZTI9S19676C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C18D1Ev,_ZTv0_n16_N9S19676C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C18D0Ev,_ZTv0_n16_N9S19676C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void _ZN9S19676C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void _ZN9S19676C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C178S19676C5__A1__8S19676C4[] = {
  ABISELECT(1128,656),
  ABISELECT(168,112),
  ABISELECT(800,460),
  ABISELECT(1144,672),
  0,
  ABISELECT(272,168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn1144_N9S19676C17D1Ev,_ZThn672_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn1144_N9S19676C17D0Ev,_ZThn672_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C178S19676C5__A1__8S19676C4[] = {
  ABISELECT(-1144,-672),
  ABISELECT(-872,-504),
  ABISELECT(-1144,-672),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn272_N9S19676C17D1Ev,_ZThn168_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn272_N9S19676C17D0Ev,_ZThn168_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C178S19676C5__A1__8S19676C4[] = {
  ABISELECT(-272,-168),
  ABISELECT(-272,-168),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn800_N9S19676C17D1Ev,_ZThn460_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn800_N9S19676C17D0Ev,_ZThn460_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C178S19676C5__A1__8S19676C4[] = {
  ABISELECT(-800,-460),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-800,-460),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn168_N9S19676C17D1Ev,_ZThn112_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn168_N9S19676C17D0Ev,_ZThn112_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C178S19676C5__A1__8S19676C4[] = {
  ABISELECT(-168,-112),
  ABISELECT(104,56),
  ABISELECT(-168,-112),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C178S19676C5__A1__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-848,-488),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S19676C5D1Ev,_ZTv0_n44_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn304_N8S19676C5D1Ev,_ZThn196_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19676C5D0Ev,_ZTv0_n44_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn304_N8S19676C5D0Ev,_ZThn196_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C7__8S19676C5__8S19676C4[] = {
  ABISELECT(-304,-196),
  ABISELECT(1048,596),
  ABISELECT(784,440),
  ABISELECT(720,400),
  ABISELECT(696,392),
  ABISELECT(240,136),
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(1064,612),
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19676C5D1Ev,_ZTv0_n44_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19676C5D0Ev,_ZTv0_n44_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn392_N8S19676C5D1Ev,_ZThn248_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn392_N8S19676C5D0Ev,_ZThn248_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__8S19676C5__8S19676C4[] = {
  ABISELECT(-392,-248),
  ABISELECT(104,56),
  ABISELECT(-392,-248),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C5D1Ev,_ZTv0_n12_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19676C5D1Ev,_ZThn304_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C5D0Ev,_ZTv0_n12_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19676C5D0Ev,_ZThn304_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C5__8S19676C4[] = {
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C5D1Ev,_ZTv0_n12_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C5D0Ev,_ZTv0_n12_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19676C5D1Ev,_ZTv0_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn544_N8S19676C5D1Ev,_ZThn332_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19676C5D0Ev,_ZTv0_n32_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn544_N8S19676C5D0Ev,_ZThn332_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C11__8S19676C5__8S19676C4[] = {
  ABISELECT(-544,-332),
  ABISELECT(480,264),
  ABISELECT(-152,-84),
  ABISELECT(456,256),
  ABISELECT(824,476),
  ABISELECT(-48,-28),
  ABISELECT(-544,-332),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C5D1Ev,_ZTv0_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C5D0Ev,_ZTv0_n32_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn1368_N8S19676C5D1Ev,_ZThn808_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn1368_N8S19676C5D0Ev,_ZThn808_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C17__8S19676C5__8S19676C4[] = {
  -16,
  ABISELECT(-976,-560),
  ABISELECT(-344,-212),
  0,
  ABISELECT(-1368,-808),
  ABISELECT(-872,-504),
  ABISELECT(-1368,-808),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19676C5D1Ev,_ZTv0_n20_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn1000_N8S19676C5D1Ev,_ZThn588_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19676C5D0Ev,_ZTv0_n20_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn1000_N8S19676C5D0Ev,_ZThn588_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C12__8S19676C5__8S19676C4[] = {
  ABISELECT(-1000,-588),
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  ABISELECT(-1000,-588),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C5D1Ev,_ZTv0_n20_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C5D0Ev,_ZTv0_n20_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N8S19676C5D1Ev,_ZTvn56_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S19676C5D0Ev,_ZTvn56_n32_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C139S19676C11__8S19676C5__8S19676C4[] = {
  ABISELECT(712,420),
  ABISELECT(368,208),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-656,-388),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C5D1Ev,_ZTvn56_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C5D0Ev,_ZTvn56_n32_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19676C5D1Ev,_ZTv0_n24_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn1024_N8S19676C5D1Ev,_ZThn596_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19676C5D0Ev,_ZTv0_n24_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn1024_N8S19676C5D0Ev,_ZThn596_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__8S19676C5__8S19676C4[] = {
  ABISELECT(-1024,-596),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-1024,-596),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C5D1Ev,_ZTv0_n24_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C5D0Ev,_ZTv0_n24_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19676C5D1Ev,_ZTvn28_n24_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19676C5D0Ev,_ZTvn28_n24_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__8S19676C5__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-1072,-624),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C5D1Ev,_ZTvn28_n24_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C5D0Ev,_ZTvn28_n24_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N8S19676C5D1Ev,_ZTvn180_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S19676C5D0Ev,_ZTvn180_n32_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C99S19676C139S19676C11__A2__8S19676C5__8S19676C4[] = {
  ABISELECT(-864,-512),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C5D1Ev,_ZTvn180_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C5D0Ev,_ZTvn180_n32_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N8S19676C5D1Ev,_ZTvn208_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S19676C5D0Ev,_ZTvn208_n32_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C5__8S19676C4[] = {
  ABISELECT(-416,-236),
  ABISELECT(-912,-540),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C5D1Ev,_ZTvn208_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C5D0Ev,_ZTvn208_n32_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N8S19676C5D1Ev,_ZTvn212_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S19676C5D0Ev,_ZTvn212_n32_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C149S19676C11__A1__8S19676C5__8S19676C4[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(440,264),
  ABISELECT(-928,-544),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C5D1Ev,_ZTvn212_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C5D0Ev,_ZTvn212_n32_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N8S19676C5D1Ev,_ZTvn240_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S19676C5D0Ev,_ZTvn240_n32_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C5__8S19676C4[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-976,-572),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C5D1Ev,_ZTvn240_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C5D0Ev,_ZTvn240_n32_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S19676C5D1Ev,_ZTv0_n28_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn1088_N8S19676C5D1Ev,_ZThn636_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19676C5D0Ev,_ZTv0_n28_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn1088_N8S19676C5D0Ev,_ZThn636_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C13__A1__8S19676C5__8S19676C4[] = {
  ABISELECT(-1088,-636),
  ABISELECT(280,172),
  ABISELECT(-64,-40),
  ABISELECT(-696,-388),
  ABISELECT(-592,-332),
  ABISELECT(-1088,-636),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C5D1Ev,_ZTv0_n28_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C5D0Ev,_ZTv0_n28_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N8S19676C5D1Ev,_ZTvn124_n28_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S19676C5D0Ev,_ZTvn124_n28_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C99S19676C13__A4__8S19676C5__8S19676C4[] = {
  ABISELECT(-1296,-760),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C5D1Ev,_ZTvn124_n28_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C5D0Ev,_ZTvn124_n28_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N8S19676C5D1Ev,_ZTvn152_n28_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S19676C5D0Ev,_ZTvn152_n28_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A9__8S19676C5__8S19676C4[] = {
  ABISELECT(-848,-484),
  ABISELECT(-1344,-788),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C5D1Ev,_ZTvn152_n28_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C5D0Ev,_ZTvn152_n28_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n88_N8S19676C5D1Ev,_ZTvn28_n44_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N8S19676C5D0Ev,_ZTvn28_n44_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C148S19676C7__A3__8S19676C5__8S19676C4[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-352,-224),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S19676C5D1Ev,_ZTvn28_n44_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S19676C5D0Ev,_ZTvn28_n44_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZThn208_N8S19676C5D1Ev,_ZThn124_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn208_N8S19676C5D0Ev,_ZThn124_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C18__8S19676C5__8S19676C4[] = {
  ABISELECT(184,124),
  ABISELECT(288,180),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19676C5D1Ev,_ZThn124_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19676C5D0Ev,_ZThn124_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn224_N8S19676C5D1Ev,_ZThn136_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn224_N8S19676C5D0Ev,_ZThn136_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C17__A__8S19676C5__8S19676C4[] = {
  ABISELECT(1128,656),
  ABISELECT(168,112),
  ABISELECT(800,460),
  ABISELECT(1144,672),
  ABISELECT(-224,-136),
  ABISELECT(272,168),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev),
};
extern void _ZN8S19676C7D1Ev();
extern void _ZN8S19676C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C7__8S19676C4[] = {
  ABISELECT(1048,596),
  ABISELECT(784,440),
  ABISELECT(720,400),
  ABISELECT(696,392),
  ABISELECT(240,136),
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(1064,612),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&_ZN8S19676C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C7D0Ev,
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C148S19676C7__A2__8S19676C4[] = {
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(1064,612),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C148S19676C7__A3__8S19676C4[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C148S19676C7__A10__8S19676C4[] = {
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn144_N9S19676C10D1Ev,_ZThn80_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn144_N9S19676C10D0Ev,_ZThn80_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C148S19676C7__A10__8S19676C4[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn40_N9S19676C12D1Ev,_ZThn24_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn40_N9S19676C12D0Ev,_ZThn24_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C148S19676C7__A3__8S19676C4[] = {
  ABISELECT(-40,-24),
  ABISELECT(104,56),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn144_N9S19676C12D1Ev,_ZThn80_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn144_N9S19676C12D0Ev,_ZThn80_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C148S19676C7__A3__8S19676C4[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn1064_N9S19676C14D1Ev,_ZThn612_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn1064_N9S19676C14D0Ev,_ZThn612_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C148S19676C7__A2__8S19676C4[] = {
  ABISELECT(-1064,-612),
  ABISELECT(-872,-504),
  ABISELECT(-1064,-612),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn192_N9S19676C14D1Ev,_ZThn108_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn192_N9S19676C14D0Ev,_ZThn108_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C148S19676C7__A2__8S19676C4[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn88_N9S19676C14D1Ev,_ZThn52_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn88_N9S19676C14D0Ev,_ZThn52_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C148S19676C7__A2__8S19676C4[] = {
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C148S19676C7__A2__8S19676C4[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn88_N8S19676C7D1Ev,_ZThn52_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn88_N8S19676C7D0Ev,_ZThn52_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__8S19676C7__8S19676C4[] = {
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C7D1Ev,_ZTv0_n12_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn192_N8S19676C7D1Ev,_ZThn108_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C7D0Ev,_ZTv0_n12_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn192_N8S19676C7D0Ev,_ZThn108_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C7__8S19676C4[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C7D1Ev,_ZTv0_n12_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C7D0Ev,_ZTv0_n12_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19676C7D1Ev,_ZTv0_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn240_N8S19676C7D1Ev,_ZThn136_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19676C7D0Ev,_ZTv0_n32_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn240_N8S19676C7D0Ev,_ZThn136_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C11__8S19676C7__8S19676C4[] = {
  ABISELECT(-240,-136),
  ABISELECT(480,264),
  ABISELECT(-152,-84),
  ABISELECT(456,256),
  ABISELECT(824,476),
  ABISELECT(-48,-28),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C7D1Ev,_ZTv0_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C7D0Ev,_ZTv0_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn1064_N8S19676C7D1Ev,_ZThn612_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn1064_N8S19676C7D0Ev,_ZThn612_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__8S19676C7__8S19676C4[] = {
  ABISELECT(-1064,-612),
  ABISELECT(-872,-504),
  ABISELECT(-1064,-612),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19676C7D1Ev,_ZTv0_n20_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn696_N8S19676C7D1Ev,_ZThn392_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19676C7D0Ev,_ZTv0_n20_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn696_N8S19676C7D0Ev,_ZThn392_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C12__8S19676C7__8S19676C4[] = {
  ABISELECT(-696,-392),
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C7D1Ev,_ZTv0_n20_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C7D0Ev,_ZTv0_n20_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N8S19676C7D1Ev,_ZTvn56_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S19676C7D0Ev,_ZTvn56_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C139S19676C11__8S19676C7__8S19676C4[] = {
  ABISELECT(712,420),
  ABISELECT(368,208),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C7D1Ev,_ZTvn56_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C7D0Ev,_ZTvn56_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19676C7D1Ev,_ZTv0_n24_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn720_N8S19676C7D1Ev,_ZThn400_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19676C7D0Ev,_ZTv0_n24_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn720_N8S19676C7D0Ev,_ZThn400_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__8S19676C7__8S19676C4[] = {
  ABISELECT(-720,-400),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-720,-400),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C7D1Ev,_ZTv0_n24_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C7D0Ev,_ZTv0_n24_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19676C7D1Ev,_ZTvn28_n24_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19676C7D0Ev,_ZTvn28_n24_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__8S19676C7__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-768,-428),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C7D1Ev,_ZTvn28_n24_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C7D0Ev,_ZTvn28_n24_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N8S19676C7D1Ev,_ZTvn180_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S19676C7D0Ev,_ZTvn180_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C99S19676C139S19676C11__A2__8S19676C7__8S19676C4[] = {
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C7D1Ev,_ZTvn180_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C7D0Ev,_ZTvn180_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N8S19676C7D1Ev,_ZTvn208_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S19676C7D0Ev,_ZTvn208_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C7__8S19676C4[] = {
  ABISELECT(-416,-236),
  ABISELECT(-608,-344),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C7D1Ev,_ZTvn208_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C7D0Ev,_ZTvn208_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N8S19676C7D1Ev,_ZTvn212_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S19676C7D0Ev,_ZTvn212_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C149S19676C11__A1__8S19676C7__8S19676C4[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(440,264),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C7D1Ev,_ZTvn212_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C7D0Ev,_ZTvn212_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N8S19676C7D1Ev,_ZTvn240_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S19676C7D0Ev,_ZTvn240_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C7__8S19676C4[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C7D1Ev,_ZTvn240_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C7D0Ev,_ZTvn240_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S19676C7D1Ev,_ZTv0_n28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn784_N8S19676C7D1Ev,_ZThn440_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19676C7D0Ev,_ZTv0_n28_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn784_N8S19676C7D0Ev,_ZThn440_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C13__A1__8S19676C7__8S19676C4[] = {
  ABISELECT(-784,-440),
  ABISELECT(280,172),
  ABISELECT(-64,-40),
  ABISELECT(-696,-388),
  ABISELECT(-592,-332),
  ABISELECT(-784,-440),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C7D1Ev,_ZTv0_n28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C7D0Ev,_ZTv0_n28_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N8S19676C7D1Ev,_ZTvn124_n28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S19676C7D0Ev,_ZTvn124_n28_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C99S19676C13__A4__8S19676C7__8S19676C4[] = {
  ABISELECT(-992,-564),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C7D1Ev,_ZTvn124_n28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C7D0Ev,_ZTvn124_n28_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N8S19676C7D1Ev,_ZTvn152_n28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S19676C7D0Ev,_ZTvn152_n28_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A9__8S19676C7__8S19676C4[] = {
  ABISELECT(-848,-484),
  ABISELECT(-1040,-592),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C7D1Ev,_ZTvn152_n28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C7D0Ev,_ZTvn152_n28_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZThn48_N8S19676C7D1Ev,_ZThn28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S19676C7D0Ev,_ZThn28_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A3__8S19676C7__8S19676C4[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19676C7D1Ev,_ZThn28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19676C7D0Ev,_ZThn28_N8S19676C7D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__8S19676C4[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__8S19676C4[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn104_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn104_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__8S19676C4[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZThn104_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
extern void ABISELECT(_ZThn104_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__8S19676C4[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C11D1Ev();
extern void _ZN9S19676C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C11__8S19676C4[] = {
  ABISELECT(480,264),
  ABISELECT(-152,-84),
  ABISELECT(456,256),
  ABISELECT(824,476),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&_ZN9S19676C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C11D0Ev,
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C89S19676C11__A1__8S19676C4[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C89S19676C11__A3__8S19676C4[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C89S19676C11__A3__8S19676C4[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C89S19676C11__A1__8S19676C4[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(712,420),
  ABISELECT(368,208),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C4[] = {
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C4[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C4[] = {
  ABISELECT(-416,-236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C139S19676C11__A6__8S19676C4[] = {
  ABISELECT(416,236),
  ABISELECT(416,236),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C13D1Ev,_ZThn208_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn368_N9S19676C13D0Ev,_ZThn208_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(-368,-208),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn712_N9S19676C13D1Ev,_ZThn420_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn712_N9S19676C13D0Ev,_ZThn420_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(-712,-420),
  ABISELECT(-872,-504),
  ABISELECT(-712,-420),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-416,-236),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(-416,-236),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C149S19676C11__A1__8S19676C4[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(440,264),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C4[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C4[] = {
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C4[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C149S19676C11__A2__8S19676C4[] = {
  ABISELECT(584,324),
  ABISELECT(104,56),
  ABISELECT(584,324),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C149S19676C11__A2__8S19676C4[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn440_N9S19676C14D1Ev,_ZThn264_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn440_N9S19676C14D0Ev,_ZThn264_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C149S19676C11__A1__8S19676C4[] = {
  ABISELECT(-440,-264),
  ABISELECT(-872,-504),
  ABISELECT(-440,-264),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C149S19676C11__A1__8S19676C4[] = {
  ABISELECT(432,240),
  ABISELECT(432,240),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C149S19676C11__A1__8S19676C4[] = {
  ABISELECT(536,296),
  ABISELECT(104,56),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C149S19676C11__A1__8S19676C4[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn824_N9S19676C11D1Ev,_ZThn476_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn824_N9S19676C11D0Ev,_ZThn476_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C11__8S19676C4[] = {
  ABISELECT(-824,-476),
  ABISELECT(-872,-504),
  ABISELECT(-824,-476),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C11__8S19676C4[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn456_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn456_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C11__8S19676C4[] = {
  ABISELECT(-456,-256),
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C11__8S19676C4[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C13__9S19676C11__8S19676C4[] = {
  ABISELECT(712,420),
  ABISELECT(368,208),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn480_N9S19676C11D1Ev,_ZThn264_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn480_N9S19676C11D0Ev,_ZThn264_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C11__8S19676C4[] = {
  ABISELECT(-480,-264),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-480,-264),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__9S19676C11__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-528,-292),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A6__9S19676C11__8S19676C4[] = {
  ABISELECT(-416,-236),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__A__9S19676C11__8S19676C4[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(440,264),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A2__9S19676C11__8S19676C4[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__8S19676C4[] = {
  ABISELECT(-872,-504),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__A1__8S19676C4[] = {
  ABISELECT(872,504),
  ABISELECT(872,504),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C12__8S19676C4[] = {
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C12__A2__8S19676C4[] = {
  ABISELECT(-504,-284),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C12__A2__8S19676C4[] = {
  ABISELECT(504,284),
  ABISELECT(504,284),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C12__8S19676C4[] = {
  ABISELECT(608,340),
  ABISELECT(104,56),
  ABISELECT(608,340),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C12__8S19676C4[] = {
  ABISELECT(504,284),
  ABISELECT(504,284),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__8S19676C4[] = {
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A4__8S19676C4[] = {
  ABISELECT(-576,-320),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A4__8S19676C4[] = {
  ABISELECT(576,320),
  ABISELECT(576,320),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__A1__8S19676C4[] = {
  ABISELECT(680,376),
  ABISELECT(104,56),
  ABISELECT(680,376),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__A1__8S19676C4[] = {
  ABISELECT(576,320),
  ABISELECT(576,320),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn344_N9S19676C14D1Ev,_ZThn212_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn344_N9S19676C14D0Ev,_ZThn212_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__8S19676C4[] = {
  ABISELECT(-344,-212),
  ABISELECT(-872,-504),
  ABISELECT(-344,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__8S19676C4[] = {
  ABISELECT(528,292),
  ABISELECT(528,292),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__8S19676C4[] = {
  ABISELECT(632,348),
  ABISELECT(104,56),
  ABISELECT(632,348),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C13__A1__8S19676C4[] = {
  ABISELECT(280,172),
  ABISELECT(-64,-40),
  ABISELECT(-696,-388),
  ABISELECT(-592,-332),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C13__A1__8S19676C4[] = {
  ABISELECT(-696,-388),
  ABISELECT(-592,-332),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C13__A8__8S19676C4[] = {
  ABISELECT(-592,-332),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A8__8S19676C4[] = {
  ABISELECT(592,332),
  ABISELECT(592,332),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C13__A1__8S19676C4[] = {
  ABISELECT(592,332),
  ABISELECT(592,332),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C13__A1__8S19676C4[] = {
  ABISELECT(696,388),
  ABISELECT(104,56),
  ABISELECT(696,388),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A9__8S19676C4[] = {
  ABISELECT(-848,-484),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C13__A9__8S19676C4[] = {
  ABISELECT(848,484),
  ABISELECT(848,484),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C13__A1__8S19676C4[] = {
  ABISELECT(696,388),
  ABISELECT(104,56),
  ABISELECT(696,388),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C13__A1__8S19676C4[] = {
  ABISELECT(592,332),
  ABISELECT(592,332),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C13__A1__8S19676C4[] = {
  ABISELECT(64,40),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn280_N9S19676C13D1Ev,_ZThn172_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn280_N9S19676C13D0Ev,_ZThn172_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C13__A1__8S19676C4[] = {
  ABISELECT(-280,-172),
  ABISELECT(-872,-504),
  ABISELECT(-280,-172),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C13__A1__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C13__A1__8S19676C4[] = {
  ABISELECT(-848,-484),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void _ZN9S19676C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void _ZN9S19676C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C17__8S19676C4[] = {
  -16,
  ABISELECT(-976,-560),
  ABISELECT(-344,-212),
  0,
  0,
  ABISELECT(-872,-504),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C17__8S19676C4[] = {
  ABISELECT(872,504),
  ABISELECT(872,504),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C17__8S19676C4[] = {
  ABISELECT(344,212),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(344,212),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C17__8S19676C4[] = {
  ABISELECT(976,560),
  ABISELECT(104,56),
  ABISELECT(976,560),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C17__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(296,184),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev),
};
extern void _ZN9S19676C19D1Ev();
extern void _ZN9S19676C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C19__8S19676C4[] = {
  ABISELECT(664,380),
  ABISELECT(-368,-220),
  ABISELECT(-392,-228),
  ABISELECT(-24,-8),
  ABISELECT(-1000,-568),
  ABISELECT(-896,-512),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&_ZN9S19676C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C19D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C19__A4__8S19676C4[] = {
  ABISELECT(-1000,-568),
  ABISELECT(-896,-512),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C19__A14__8S19676C4[] = {
  ABISELECT(-896,-512),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C19__A14__8S19676C4[] = {
  ABISELECT(896,512),
  ABISELECT(896,512),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C19__A4__8S19676C4[] = {
  ABISELECT(896,512),
  ABISELECT(896,512),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C19__A4__8S19676C4[] = {
  ABISELECT(1000,568),
  ABISELECT(104,56),
  ABISELECT(1000,568),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C11D1Ev();
extern void _ZN9S19676C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(-576,-344),
  ABISELECT(-1208,-692),
  ABISELECT(-600,-352),
  ABISELECT(-232,-132),
  ABISELECT(-1104,-636),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&_ZN9S19676C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C11D0Ev,
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C89S19676C119S19676C19__A2__8S19676C4[] = {
  ABISELECT(-1104,-636),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C89S19676C119S19676C19__A15__8S19676C4[] = {
  ABISELECT(-1104,-636),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C89S19676C119S19676C19__A15__8S19676C4[] = {
  ABISELECT(1104,636),
  ABISELECT(1104,636),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C89S19676C119S19676C19__A2__8S19676C4[] = {
  ABISELECT(1104,636),
  ABISELECT(1104,636),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C139S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(-344,-188),
  ABISELECT(-688,-400),
  ABISELECT(-1320,-748),
  ABISELECT(-1216,-692),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C139S19676C119S19676C19__A5__8S19676C4[] = {
  ABISELECT(-1320,-748),
  ABISELECT(-1216,-692),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C139S19676C119S19676C19__A16__8S19676C4[] = {
  ABISELECT(-1216,-692),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C119S19676C19__A16__8S19676C4[] = {
  ABISELECT(1216,692),
  ABISELECT(1216,692),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C139S19676C119S19676C19__A5__8S19676C4[] = {
  ABISELECT(1216,692),
  ABISELECT(1216,692),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C139S19676C119S19676C19__A5__8S19676C4[] = {
  ABISELECT(1320,748),
  ABISELECT(104,56),
  ABISELECT(1320,748),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C139S19676C119S19676C19__A17__8S19676C4[] = {
  ABISELECT(-1472,-844),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C139S19676C119S19676C19__A17__8S19676C4[] = {
  ABISELECT(1472,844),
  ABISELECT(1472,844),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C139S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(1320,748),
  ABISELECT(104,56),
  ABISELECT(1320,748),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C139S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(1216,692),
  ABISELECT(1216,692),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C139S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(688,400),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(688,400),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C139S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(344,188),
  ABISELECT(-872,-504),
  ABISELECT(344,188),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C139S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(640,372),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C139S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(-1472,-844),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C149S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(-1592,-904),
  ABISELECT(-1488,-848),
  ABISELECT(-616,-344),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C149S19676C119S19676C19__A4__8S19676C4[] = {
  ABISELECT(-1640,-932),
  ABISELECT(-1536,-876),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C149S19676C119S19676C19__A18__8S19676C4[] = {
  ABISELECT(-1536,-876),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C119S19676C19__A18__8S19676C4[] = {
  ABISELECT(1536,876),
  ABISELECT(1536,876),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C149S19676C119S19676C19__A4__8S19676C4[] = {
  ABISELECT(1640,932),
  ABISELECT(104,56),
  ABISELECT(1640,932),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C149S19676C119S19676C19__A4__8S19676C4[] = {
  ABISELECT(1536,876),
  ABISELECT(1536,876),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C149S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(616,344),
  ABISELECT(-872,-504),
  ABISELECT(616,344),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C149S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(1488,848),
  ABISELECT(1488,848),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C149S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(1592,904),
  ABISELECT(104,56),
  ABISELECT(1592,904),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C149S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(-1640,-932),
  ABISELECT(-1536,-876),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(232,132),
  ABISELECT(-872,-504),
  ABISELECT(232,132),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(1104,636),
  ABISELECT(1104,636),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(600,352),
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  ABISELECT(600,352),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(1208,692),
  ABISELECT(104,56),
  ABISELECT(1208,692),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C13__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(-344,-188),
  ABISELECT(-688,-400),
  ABISELECT(-1320,-748),
  ABISELECT(-1216,-692),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(576,344),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(576,344),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(528,316),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A6__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(-1472,-844),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__A__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(-1592,-904),
  ABISELECT(-1488,-848),
  ABISELECT(-616,-344),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A2__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(-1640,-932),
  ABISELECT(-1536,-876),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C19D1Ev,_ZTv0_n12_N9S19676C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C19D0Ev,_ZTv0_n12_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C19__8S19676C4[] = {
  ABISELECT(896,512),
  ABISELECT(896,512),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C19D1Ev,_ZTv0_n12_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C19D0Ev,_ZTv0_n12_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C19D1Ev,_ZTv0_n16_N9S19676C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C19D0Ev,_ZTv0_n16_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C19__8S19676C4[] = {
  ABISELECT(1000,568),
  ABISELECT(104,56),
  ABISELECT(1000,568),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C19D1Ev,_ZTv0_n16_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C19D0Ev,_ZTv0_n16_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZThn208_N9S19676C19D1Ev,_ZThn124_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn208_N9S19676C19D0Ev,_ZThn124_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C11__9S19676C19__8S19676C4[] = {
  ABISELECT(-576,-344),
  ABISELECT(-1208,-692),
  ABISELECT(-600,-352),
  ABISELECT(-232,-132),
  ABISELECT(-1104,-636),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N9S19676C19D1Ev,_ZThn124_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N9S19676C19D0Ev,_ZThn124_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C19D1Ev,_ZTv0_n16_N9S19676C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C19D0Ev,_ZTv0_n16_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A2__9S19676C19__8S19676C4[] = {
  ABISELECT(24,8),
  ABISELECT(-872,-504),
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C19D1Ev,_ZTv0_n16_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C19D0Ev,_ZTv0_n16_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C19__8S19676C4[] = {
  ABISELECT(392,228),
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  ABISELECT(392,228),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZThn320_N9S19676C19D1Ev,_ZThn180_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn320_N9S19676C19D0Ev,_ZThn180_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C139S19676C11__9S19676C19__8S19676C4[] = {
  ABISELECT(-344,-188),
  ABISELECT(-688,-400),
  ABISELECT(-1320,-748),
  ABISELECT(-1216,-692),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N9S19676C19D1Ev,_ZThn180_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N9S19676C19D0Ev,_ZThn180_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C19D1Ev,_ZTv0_n24_N9S19676C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19676C19D0Ev,_ZTv0_n24_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C19__8S19676C4[] = {
  ABISELECT(368,220),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(368,220),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C19D1Ev,_ZTv0_n24_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C19D0Ev,_ZTv0_n24_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C19D1Ev,_ZTvn28_n24_N9S19676C19D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C19D0Ev,_ZTvn28_n24_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__9S19676C19__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(320,192),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C19D1Ev,_ZTvn28_n24_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C19D0Ev,_ZTvn28_n24_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZThn576_N9S19676C19D1Ev,_ZThn332_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn576_N9S19676C19D0Ev,_ZThn332_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C139S19676C11__A7__9S19676C19__8S19676C4[] = {
  ABISELECT(-1472,-844),
  ABISELECT(-576,-332),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn576_N9S19676C19D1Ev,_ZThn332_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn576_N9S19676C19D0Ev,_ZThn332_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZThn592_N9S19676C19D1Ev,_ZThn336_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn592_N9S19676C19D0Ev,_ZThn336_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C149S19676C11__A1__9S19676C19__8S19676C4[] = {
  ABISELECT(-1592,-904),
  ABISELECT(-1488,-848),
  ABISELECT(-616,-344),
  ABISELECT(-592,-336),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn592_N9S19676C19D1Ev,_ZThn336_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn592_N9S19676C19D0Ev,_ZThn336_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZThn640_N9S19676C19D1Ev,_ZThn364_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn640_N9S19676C19D0Ev,_ZThn364_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C149S19676C11__A2__9S19676C19__8S19676C4[] = {
  ABISELECT(-1640,-932),
  ABISELECT(-1536,-876),
  ABISELECT(-640,-364),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn640_N9S19676C19D1Ev,_ZThn364_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn640_N9S19676C19D0Ev,_ZThn364_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn664_N9S19676C19D1Ev,_ZThn380_N9S19676C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn664_N9S19676C19D0Ev,_ZThn380_N9S19676C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C20__9S19676C19__8S19676C4[] = {
  ABISELECT(-664,-380),
  ABISELECT(-1664,-948),
  ABISELECT(-1560,-892),
  ABISELECT(-664,-380),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev),
};
extern void _ZN9S19676C20D1Ev();
extern void _ZN9S19676C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C20__8S19676C4[] = {
  ABISELECT(-1664,-948),
  ABISELECT(-1560,-892),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C20[0]),
  (VTBL_ENTRY)&_ZN9S19676C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C20D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C20__A5__8S19676C4[] = {
  ABISELECT(-1664,-948),
  ABISELECT(-1560,-892),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C20__A19__8S19676C4[] = {
  ABISELECT(-1560,-892),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C20__A19__8S19676C4[] = {
  ABISELECT(1560,892),
  ABISELECT(1560,892),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C20__A5__8S19676C4[] = {
  ABISELECT(1664,948),
  ABISELECT(104,56),
  ABISELECT(1664,948),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C20__A5__8S19676C4[] = {
  ABISELECT(1560,892),
  ABISELECT(1560,892),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C20D1Ev,_ZTv0_n16_N9S19676C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C20D0Ev,_ZTv0_n16_N9S19676C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C20__8S19676C4[] = {
  ABISELECT(1664,948),
  ABISELECT(104,56),
  ABISELECT(1664,948),
  (VTBL_ENTRY)&(_ZTI9S19676C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C20D1Ev,_ZTv0_n16_N9S19676C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C20D0Ev,_ZTv0_n16_N9S19676C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C20D1Ev,_ZTv0_n12_N9S19676C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C20D0Ev,_ZTv0_n12_N9S19676C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C20__8S19676C4[] = {
  ABISELECT(1560,892),
  ABISELECT(1560,892),
  (VTBL_ENTRY)&(_ZTI9S19676C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C20D1Ev,_ZTv0_n12_N9S19676C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C20D0Ev,_ZTv0_n12_N9S19676C20D0Ev),
};
static  VTT_ENTRY vtt_S19676C4[] = {
  {&(_ZTV8S19676C4[15]),  15,233},
  {&(_tg__ZTV9S19676C13__A__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C13__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C13__A12__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A12__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C13__A3__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C13__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A13__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C13__A13__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C13__A__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C13__A__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C13__A__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C13__A__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C13__A__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C13__A__8S19676C4[3]),  3,5},
  {&(_ZTV8S19676C4[39]),  39,233},
  {&(_ZTV8S19676C4[68]),  68,233},
  {&(_ZTV8S19676C4[80]),  80,233},
  {&(_ZTV8S19676C4[85]),  85,233},
  {&(_ZTV8S19676C4[95]),  95,233},
  {&(_ZTV8S19676C4[174]),  174,233},
  {&(_ZTV8S19676C4[132]),  132,233},
  {&(_ZTV8S19676C4[103]),  103,233},
  {&(_ZTV8S19676C4[140]),  140,233},
  {&(_ZTV8S19676C4[146]),  146,233},
  {&(_ZTV8S19676C4[107]),  107,233},
  {&(_ZTV8S19676C4[112]),  112,233},
  {&(_ZTV8S19676C4[119]),  119,233},
  {&(_ZTV8S19676C4[125]),  125,233},
  {&(_ZTV8S19676C4[155]),  155,233},
  {&(_ZTV8S19676C4[159]),  159,233},
  {&(_ZTV8S19676C4[164]),  164,233},
  {&(_ZTV8S19676C4[74]),  74,233},
  {&(_ZTV8S19676C4[174]),  174,233},
  {&(_ZTV8S19676C4[45]),  45,233},
  {&(_ZTV8S19676C4[55]),  55,233},
  {&(_ZTV8S19676C4[24]),  24,233},
  {&(_ZTV8S19676C4[185]),  185,233},
  {&(_ZTV8S19676C4[194]),  194,233},
  {&(_ZTV8S19676C4[202]),  202,233},
  {&(_ZTV8S19676C4[206]),  206,233},
  {&(_ZTV8S19676C4[211]),  211,233},
  {&(_ZTV8S19676C4[218]),  218,233},
  {&(_ZTV8S19676C4[224]),  224,233},
  {&(_ZTV8S19676C4[231]),  231,233},
  {&(_tg__ZTV8S19676C5__8S19676C4[12]),  12,14},
  {&(_tg__ZTV9S19676C168S19676C5__8S19676C4[8]),  8,10},
  {&(_tg__ZTV9S19676C159S19676C168S19676C5__A2__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C168S19676C5__A11__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C168S19676C5__A11__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C168S19676C5__A2__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C168S19676C5__A2__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C17__9S19676C168S19676C5__8S19676C4[8]),  8,10},
  {&(_tg__ZTV9S19676C17__9S19676C168S19676C5__8S19676C4[8]),  8,10},
  {&(_tg__ZTV8S19676C9__9S19676C168S19676C5__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C168S19676C5__8S19676C4[6]),  6,8},
  {&(_tg__ZTV8S19676C8__9S19676C168S19676C5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C168S19676C5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C188S19676C5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C188S19676C5__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C188S19676C5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C178S19676C5__A1__8S19676C4[8]),  8,10},
  {&(_tg__ZTV9S19676C10__9S19676C178S19676C5__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C178S19676C5__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C178S19676C5__A1__8S19676C4[6]),  6,8},
  {&(_tg__ZTV8S19676C8__9S19676C178S19676C5__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C178S19676C5__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C7__8S19676C5__8S19676C4[11]),  11,13},
  {&(_tg__ZTV8S19676C8__8S19676C5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19676C5__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C11__8S19676C5__8S19676C4[8]),  8,10},
  {&(_tg__ZTV9S19676C17__8S19676C5__8S19676C4[8]),  8,10},
  {&(_tg__ZTV9S19676C12__8S19676C5__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C139S19676C11__8S19676C5__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C14__8S19676C5__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C129S19676C14__A1__8S19676C5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C99S19676C139S19676C11__A2__8S19676C5__8S19676C4[2]),  2,4},
  {&(_tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C5__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C149S19676C11__A1__8S19676C5__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C13__A1__8S19676C5__8S19676C4[7]),  7,9},
  {&(_tg__ZTV8S19676C99S19676C13__A4__8S19676C5__8S19676C4[2]),  2,4},
  {&(_tg__ZTV9S19676C109S19676C13__A9__8S19676C5__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C129S19676C148S19676C7__A3__8S19676C5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C17__8S19676C5__8S19676C4[8]),  8,10},
  {&(_tg__ZTV9S19676C18__8S19676C5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C17__A__8S19676C5__8S19676C4[8]),  8,10},
  {&(_tg__ZTV8S19676C7__8S19676C4[10]),  10,12},
  {&(_tg__ZTV9S19676C148S19676C7__A2__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C148S19676C7__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C148S19676C7__A10__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C148S19676C7__A10__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C148S19676C7__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C148S19676C7__A3__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C148S19676C7__A2__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C148S19676C7__A2__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C148S19676C7__A2__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C148S19676C7__A2__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C8__8S19676C7__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19676C7__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C11__8S19676C7__8S19676C4[8]),  8,10},
  {&(_tg__ZTV9S19676C10__A1__8S19676C7__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C12__8S19676C7__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C139S19676C11__8S19676C7__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C14__8S19676C7__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C129S19676C14__A1__8S19676C7__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C99S19676C139S19676C11__A2__8S19676C7__8S19676C4[2]),  2,4},
  {&(_tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C7__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C149S19676C11__A1__8S19676C7__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C7__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C13__A1__8S19676C7__8S19676C4[7]),  7,9},
  {&(_tg__ZTV8S19676C99S19676C13__A4__8S19676C7__8S19676C4[2]),  2,4},
  {&(_tg__ZTV9S19676C109S19676C13__A9__8S19676C7__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C129S19676C14__A3__8S19676C7__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C8__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C11__8S19676C4[7]),  7,9},
  {&(_tg__ZTV8S19676C89S19676C11__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C89S19676C11__A3__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C89S19676C11__A3__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C89S19676C11__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C139S19676C11__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C139S19676C11__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C139S19676C11__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C139S19676C11__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C139S19676C11__A6__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C139S19676C11__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C139S19676C11__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C139S19676C11__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C139S19676C11__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C139S19676C11__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C139S19676C11__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C149S19676C11__A1__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C149S19676C11__A2__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C149S19676C11__A2__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C149S19676C11__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C149S19676C11__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C149S19676C11__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C149S19676C11__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C10__9S19676C11__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C11__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C12__9S19676C11__8S19676C4[5]),  5,7},
  {&(_tg__ZTV8S19676C8__9S19676C11__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C13__9S19676C11__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C14__9S19676C11__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C129S19676C14__A1__9S19676C11__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A6__9S19676C11__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__A__9S19676C11__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A2__9S19676C11__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C12__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C12__A2__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C12__A2__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C12__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C12__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A4__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A4__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C13__A1__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C13__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C13__A8__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A8__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C13__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C13__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A9__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C13__A9__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C13__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C13__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C13__A1__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C13__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C13__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C13__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C17__8S19676C4[8]),  8,10},
  {&(_tg__ZTV9S19676C17__8S19676C4[8]),  8,10},
  {&(_tg__ZTV8S19676C9__9S19676C17__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C17__8S19676C4[6]),  6,8},
  {&(_tg__ZTV8S19676C8__9S19676C17__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C17__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C19__8S19676C4[8]),  8,10},
  {&(_tg__ZTV9S19676C159S19676C19__A4__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C19__A14__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C19__A14__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C19__A4__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C19__A4__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C119S19676C19__A1__8S19676C4[7]),  7,9},
  {&(_tg__ZTV8S19676C89S19676C119S19676C19__A2__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C89S19676C119S19676C19__A15__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C89S19676C119S19676C19__A15__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C89S19676C119S19676C19__A2__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C139S19676C119S19676C19__A3__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C139S19676C119S19676C19__A5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C139S19676C119S19676C19__A16__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C119S19676C19__A16__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C139S19676C119S19676C19__A5__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C139S19676C119S19676C19__A5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C139S19676C119S19676C19__A17__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C139S19676C119S19676C19__A17__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C139S19676C119S19676C19__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C139S19676C119S19676C19__A3__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C139S19676C119S19676C19__A3__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C139S19676C119S19676C19__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C139S19676C119S19676C19__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C139S19676C119S19676C19__A3__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C149S19676C119S19676C19__A3__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C149S19676C119S19676C19__A4__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C149S19676C119S19676C19__A18__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C119S19676C19__A18__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C149S19676C119S19676C19__A4__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C149S19676C119S19676C19__A4__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C149S19676C119S19676C19__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C149S19676C119S19676C19__A3__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C149S19676C119S19676C19__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C149S19676C119S19676C19__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C10__9S19676C119S19676C19__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C119S19676C19__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C12__9S19676C119S19676C19__A1__8S19676C4[5]),  5,7},
  {&(_tg__ZTV8S19676C8__9S19676C119S19676C19__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C13__9S19676C119S19676C19__A1__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C14__9S19676C119S19676C19__A1__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C129S19676C14__A1__9S19676C119S19676C19__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A6__9S19676C119S19676C19__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__A__9S19676C119S19676C19__A1__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A2__9S19676C119S19676C19__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C19__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C19__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C11__9S19676C19__8S19676C4[7]),  7,9},
  {&(_tg__ZTV9S19676C10__A2__9S19676C19__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C19__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C139S19676C11__9S19676C19__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C14__9S19676C19__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C129S19676C14__A1__9S19676C19__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C139S19676C11__A7__9S19676C19__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C149S19676C11__A1__9S19676C19__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C149S19676C11__A2__9S19676C19__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C20__9S19676C19__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C20__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C20__A5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C20__A19__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C20__A19__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C20__A5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C20__A5__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C20__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C20__8S19676C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19676C4[];
extern  VTBL_ENTRY _ZTV8S19676C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C4[];
static VTBL_ENTRY alt_thunk_names75[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19676C19D0Ev,_ZThn380_N9S19676C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19676C19D1Ev,_ZThn380_N9S19676C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S19676C11D0Ev,_ZThn264_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S19676C11D1Ev,_ZThn264_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N9S19676C11D0Ev,_ZThn476_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N9S19676C11D1Ev,_ZThn476_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C7D0Ev,_ZTv0_n28_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19676C7D0Ev,_ZThn440_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C7D1Ev,_ZTv0_n28_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19676C7D1Ev,_ZThn440_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C7D0Ev,_ZTv0_n24_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19676C7D0Ev,_ZThn400_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C7D1Ev,_ZTv0_n24_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19676C7D1Ev,_ZThn400_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C7D0Ev,_ZTv0_n20_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S19676C7D0Ev,_ZThn392_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C7D1Ev,_ZTv0_n20_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S19676C7D1Ev,_ZThn392_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C7D0Ev,_ZTv0_n32_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19676C7D0Ev,_ZThn136_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C7D1Ev,_ZTv0_n32_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19676C7D1Ev,_ZThn136_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C7D0Ev,_ZTv0_n12_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19676C7D0Ev,_ZThn108_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C7D1Ev,_ZTv0_n12_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19676C7D1Ev,_ZThn108_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N8S19676C7D0Ev,_ZThn612_N8S19676C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19676C7D0Ev,_ZThn52_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N8S19676C7D1Ev,_ZThn612_N8S19676C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19676C7D1Ev,_ZThn52_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19676C14D0Ev,_ZThn108_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19676C14D1Ev,_ZThn108_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S19676C14D0Ev,_ZThn212_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S19676C14D0Ev,_ZThn264_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19676C14D0Ev,_ZThn52_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N9S19676C14D0Ev,_ZThn612_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S19676C14D1Ev,_ZThn212_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S19676C14D1Ev,_ZThn264_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19676C14D1Ev,_ZThn52_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N9S19676C14D1Ev,_ZThn612_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C12D0Ev,_ZThn80_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C12D1Ev,_ZThn80_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19676C12D0Ev,_ZThn24_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19676C12D1Ev,_ZThn24_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C5D0Ev,_ZTv0_n28_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19676C5D0Ev,_ZThn636_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C5D1Ev,_ZTv0_n28_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19676C5D1Ev,_ZThn636_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C5D0Ev,_ZTv0_n24_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N8S19676C5D0Ev,_ZThn596_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C5D1Ev,_ZTv0_n24_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N8S19676C5D1Ev,_ZThn596_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C5D0Ev,_ZTv0_n20_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1000_N8S19676C5D0Ev,_ZThn588_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C5D1Ev,_ZTv0_n20_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1000_N8S19676C5D1Ev,_ZThn588_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C5D0Ev,_ZTv0_n32_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S19676C5D0Ev,_ZThn332_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C5D1Ev,_ZTv0_n32_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S19676C5D1Ev,_ZThn332_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C5D0Ev,_ZTv0_n12_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19676C5D0Ev,_ZThn304_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C5D1Ev,_ZTv0_n12_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19676C5D1Ev,_ZThn304_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19676C5D0Ev,_ZThn136_N8S19676C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N8S19676C5D0Ev,_ZThn808_N8S19676C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S19676C5D0Ev,_ZThn248_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19676C5D1Ev,_ZThn136_N8S19676C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N8S19676C5D1Ev,_ZThn808_N8S19676C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S19676C5D1Ev,_ZThn248_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19676C5D0Ev,_ZTv0_n44_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19676C5D0Ev,_ZThn196_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19676C5D1Ev,_ZTv0_n44_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19676C5D1Ev,_ZThn196_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19676C17D0Ev,_ZThn460_N9S19676C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19676C17D1Ev,_ZThn460_N9S19676C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19676C17D0Ev,_ZThn168_N9S19676C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19676C17D1Ev,_ZThn168_N9S19676C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)_ZN9S19676C17D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19676C17D0Ev,_ZThn112_N9S19676C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1144_N9S19676C17D0Ev,_ZThn672_N9S19676C17D0Ev),
  (VTBL_ENTRY)_ZN9S19676C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)_ZN9S19676C17D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19676C17D1Ev,_ZThn112_N9S19676C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1144_N9S19676C17D1Ev,_ZThn672_N9S19676C17D1Ev),
  (VTBL_ENTRY)_ZN9S19676C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C18D0Ev,_ZTv0_n16_N9S19676C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19676C18D0Ev,_ZThn124_N9S19676C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C18D1Ev,_ZTv0_n16_N9S19676C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19676C18D1Ev,_ZThn124_N9S19676C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C18D0Ev,_ZTv0_n12_N9S19676C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S19676C18D0Ev,_ZThn180_N9S19676C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C18D1Ev,_ZTv0_n12_N9S19676C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S19676C18D1Ev,_ZThn180_N9S19676C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C16D0Ev,_ZTv0_n24_N9S19676C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N9S19676C16D0Ev,_ZThn596_N9S19676C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C16D1Ev,_ZTv0_n24_N9S19676C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N9S19676C16D1Ev,_ZThn596_N9S19676C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C16D0Ev,_ZTv0_n12_N9S19676C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C16D0Ev,_ZThn304_N9S19676C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C16D1Ev,_ZTv0_n12_N9S19676C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C16D1Ev,_ZThn304_N9S19676C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N9S19676C16D0Ev,_ZThn248_N9S19676C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N9S19676C16D0Ev,_ZThn808_N9S19676C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N9S19676C16D1Ev,_ZThn248_N9S19676C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N9S19676C16D1Ev,_ZThn808_N9S19676C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C13D0Ev,_ZThn208_N9S19676C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N9S19676C13D0Ev,_ZThn756_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C13D1Ev,_ZThn208_N9S19676C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N9S19676C13D1Ev,_ZThn756_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N9S19676C13D0Ev,_ZThn464_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N9S19676C13D1Ev,_ZThn464_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S19676C13D0Ev,_ZThn172_N9S19676C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn712_N9S19676C13D0Ev,_ZThn420_N9S19676C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1640_N9S19676C13D0Ev,_ZThn968_N9S19676C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19676C13D0Ev,_ZThn408_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S19676C13D1Ev,_ZThn172_N9S19676C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn712_N9S19676C13D1Ev,_ZThn420_N9S19676C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1640_N9S19676C13D1Ev,_ZThn968_N9S19676C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19676C13D1Ev,_ZThn408_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N9S19676C15D0Ev,_ZThn248_N9S19676C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19676C15D0Ev,_ZThn408_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N9S19676C15D1Ev,_ZThn248_N9S19676C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19676C15D1Ev,_ZThn408_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C15D0Ev,_ZThn304_N9S19676C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn768_N9S19676C15D0Ev,_ZThn464_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C15D1Ev,_ZThn304_N9S19676C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn768_N9S19676C15D1Ev,_ZThn464_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C10D0Ev,_ZThn80_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C10D0Ev,_ZThn304_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S19676C10D0Ev,_ZThn312_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn768_N9S19676C10D0Ev,_ZThn464_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C10D1Ev,_ZThn80_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C10D1Ev,_ZThn304_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S19676C10D1Ev,_ZThn312_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn768_N9S19676C10D1Ev,_ZThn464_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19676C4D0Ev,_ZTv0_n36_N8S19676C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1664_N8S19676C4D0Ev,_ZThn976_N8S19676C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19676C4D1Ev,_ZTv0_n36_N8S19676C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1664_N8S19676C4D1Ev,_ZThn976_N8S19676C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C4D0Ev,_ZTv0_n28_N8S19676C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1360_N8S19676C4D0Ev,_ZThn796_N8S19676C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C4D1Ev,_ZTv0_n28_N8S19676C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1360_N8S19676C4D1Ev,_ZThn796_N8S19676C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C4D0Ev,_ZTv0_n24_N8S19676C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N8S19676C4D0Ev,_ZThn756_N8S19676C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C4D1Ev,_ZTv0_n24_N8S19676C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N8S19676C4D1Ev,_ZThn756_N8S19676C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C4D0Ev,_ZTv0_n20_N8S19676C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2328_N8S19676C4D0Ev,_ZThn1356_N8S19676C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1272_N8S19676C4D0Ev,_ZThn748_N8S19676C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C4D1Ev,_ZTv0_n20_N8S19676C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2328_N8S19676C4D1Ev,_ZThn1356_N8S19676C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1272_N8S19676C4D1Ev,_ZThn748_N8S19676C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C4D0Ev,_ZTv0_n32_N8S19676C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn816_N8S19676C4D0Ev,_ZThn492_N8S19676C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C4D1Ev,_ZTv0_n32_N8S19676C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn816_N8S19676C4D1Ev,_ZThn492_N8S19676C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C4D0Ev,_ZTv0_n12_N8S19676C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N8S19676C4D0Ev,_ZThn464_N8S19676C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C4D1Ev,_ZTv0_n12_N8S19676C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N8S19676C4D1Ev,_ZThn464_N8S19676C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19676C4D0Ev,_ZTv0_n44_N8S19676C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S19676C4D0Ev,_ZThn356_N8S19676C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19676C4D1Ev,_ZTv0_n44_N8S19676C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S19676C4D1Ev,_ZThn356_N8S19676C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C4D0Ev,_ZTv0_n16_N8S19676C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1640_N8S19676C4D0Ev,_ZThn968_N8S19676C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S19676C4D0Ev,_ZThn408_N8S19676C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19676C4D0Ev,_ZThn296_N8S19676C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C4D1Ev,_ZTv0_n16_N8S19676C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1640_N8S19676C4D1Ev,_ZThn968_N8S19676C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S19676C4D1Ev,_ZThn408_N8S19676C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19676C4D1Ev,_ZThn296_N8S19676C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19676C4D0Ev,_ZTv0_n52_N8S19676C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19676C4D0Ev,_ZThn160_N8S19676C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19676C4D1Ev,_ZTv0_n52_N8S19676C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19676C4D1Ev,_ZThn160_N8S19676C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C4 = {  "S19676C4", // class name
  bases_S19676C4, 64,
  &(vtc_S19676C4[0]), // expected_vtbl_contents
  &(vtt_S19676C4[0]), // expected_vtt_contents
  ABISELECT(2352,1364), // object size
  NSPAIRA(_ZTI8S19676C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19676C4),233, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19676C4),259, //virtual table table var
  62, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names75,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C1  : virtual S19676C2 {
  void *s19676c1f0;
  ::S19676C4 s19676c1f1;
  virtual  ~S19676C1(); // _ZN8S19676C1D2Ev
  S19676C1(); // tgen
};
//SIG(1 S19676C1) C1{ VBC2{ m FC3{} Fi[3]} vd Fp FC4{ VBC5{ BC6{ m} VBC7{ VBC8{ VBC9{ vd m Fp Fi Fc FD} BC10{ VBC9 vd} Fp[10] Fi FL} VBC11{ VBC10 VBC12{ VBC8 BC10 vd Fi} BC8 BC13{ VBC8 VBC14{ BC9 VBC10 VBC8 BC12 vd Fi} BC15{ VBC9 VBC8 BC10 vd Fp Fi FC9[3] Fi[7]} BC9 BC10 vd} BC14 vd Fs} VBC13 VBC2 BC14 Fs Fp[2]} BC16{ VBC17{ VBC10 VBC14 VBC2 vd Fi} BC15 vd} BC18{ VBC9 VBC8 vd Fi FC3} BC17 vd Fi[10] FD} BC13 VBC19{ BC15 BC11 VBC20{ VBC8 BC12 vd Fs:0} vd} vd Fi}}


 S19676C1 ::~S19676C1(){ note_dtor("S19676C1", this);}
S19676C1 ::S19676C1(){ note_ctor("S19676C1", this);} // tgen

static void Test_S19676C1()
{
  extern Class_Descriptor cd_S19676C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(150,348)];
    init_test(&cd_S19676C1, buf);
    S19676C1 *dp, &lv = *(dp=new (buf) S19676C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2384,1388), "sizeof(S19676C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C1)");
    check_base_class_offset(lv, (S19676C2*), ABISELECT(2368,1372), "S19676C1");
    check_field_offset(lv, s19676c1f0, ABISELECT(8,4), "S19676C1.s19676c1f0");
    check_field_offset(lv, s19676c1f1, ABISELECT(16,8), "S19676C1.s19676c1f1");
    test_class_info(&lv, &cd_S19676C1);
    dp->~S19676C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C1(Test_S19676C1, "S19676C1", ABISELECT(2384,1388));

#else // __cplusplus

extern void _ZN8S19676C1C1Ev();
extern void _ZN8S19676C1D2Ev();
Name_Map name_map_S19676C1[] = {
  NSPAIR(_ZN8S19676C1C1Ev),
  NSPAIR(_ZN8S19676C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
static Base_Class bases_S19676C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C2,    ABISELECT(2368,1372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19676C1[];
extern void _ZN8S19676C1D1Ev();
extern void _ZN8S19676C1D0Ev();
static  VTBL_ENTRY vtc_S19676C1[] = {
  ABISELECT(2368,1372),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C1[0]),
  (VTBL_ENTRY)&_ZN8S19676C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C1D0Ev,
};
extern VTBL_ENTRY _ZTV8S19676C1[];
static  VTT_ENTRY vtt_S19676C1[] = {
  {&(_ZTV8S19676C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19676C1[];
extern  VTBL_ENTRY _ZTV8S19676C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C1[];
Class_Descriptor cd_S19676C1 = {  "S19676C1", // class name
  bases_S19676C1, 1,
  &(vtc_S19676C1[0]), // expected_vtbl_contents
  &(vtt_S19676C1[0]), // expected_vtt_contents
  ABISELECT(2384,1388), // object size
  NSPAIRA(_ZTI8S19676C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19676C1),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19676C1),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7572C3  {
  short s7572c3f0:6;
  long s7572c3f1;
  short s7572c3f2:4;
  __tsi64 s7572c3f3[6];
  long s7572c3f4[7];
  void *s7572c3f5;
  virtual void  v3(); // _ZN7S7572C32v3Ev
  ~S7572C3(); // tgen
  S7572C3(); // tgen
};
//SIG(-1 S7572C3) C1{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}


void  S7572C3 ::v3(){vfunc_called(this, "_ZN7S7572C32v3Ev");}
S7572C3 ::~S7572C3(){ note_dtor("S7572C3", this);} // tgen
S7572C3 ::S7572C3(){ note_ctor("S7572C3", this);} // tgen

static void Test_S7572C3()
{
  extern Class_Descriptor cd_S7572C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,25)];
    init_test(&cd_S7572C3, buf);
    S7572C3 *dp, &lv = *(dp=new (buf) S7572C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,96), "sizeof(S7572C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7572C3)");
    set_bf_and_test(lv, s7572c3f0, ABISELECT(8,4), 0, 6, 1, "S7572C3");
    set_bf_and_test(lv, s7572c3f0, ABISELECT(8,4), 0, 6, hide_sll(1LL<<5), "S7572C3");
    check_field_offset(lv, s7572c3f1, ABISELECT(16,8), "S7572C3.s7572c3f1");
    set_bf_and_test(lv, s7572c3f2, ABISELECT(24,12), 0, 4, 1, "S7572C3");
    set_bf_and_test(lv, s7572c3f2, ABISELECT(24,12), 0, 4, hide_sll(1LL<<3), "S7572C3");
    check_field_offset(lv, s7572c3f3, ABISELECT(32,16), "S7572C3.s7572c3f3");
    check_field_offset(lv, s7572c3f4, ABISELECT(80,64), "S7572C3.s7572c3f4");
    check_field_offset(lv, s7572c3f5, ABISELECT(136,92), "S7572C3.s7572c3f5");
    test_class_info(&lv, &cd_S7572C3);
    dp->~S7572C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7572C3(Test_S7572C3, "S7572C3", ABISELECT(144,96));

#else // __cplusplus

extern void _ZN7S7572C3C1Ev();
extern void _ZN7S7572C3D1Ev();
Name_Map name_map_S7572C3[] = {
  NSPAIR(_ZN7S7572C3C1Ev),
  NSPAIR(_ZN7S7572C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7572C3[];
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY vtc_S7572C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C3[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S7572C3[];
extern  VTBL_ENTRY _ZTV7S7572C3[];
Class_Descriptor cd_S7572C3 = {  "S7572C3", // class name
  0,0,//no base classes
  &(vtc_S7572C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,96), // object size
  NSPAIRA(_ZTI7S7572C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7572C3),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7572C2  : virtual S7572C3 {
  void *s7572c2f0;
  ::S7572C3 s7572c2f1;
  __tsi64 s7572c2f2:3;
  ~S7572C2(); // tgen
  S7572C2(); // tgen
};
//SIG(-1 S7572C2) C1{ VBC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC2 FL:3}


S7572C2 ::~S7572C2(){ note_dtor("S7572C2", this);} // tgen
S7572C2 ::S7572C2(){ note_ctor("S7572C2", this);} // tgen

static void Test_S7572C2()
{
  extern Class_Descriptor cd_S7572C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,52)];
    init_test(&cd_S7572C2, buf);
    S7572C2 *dp, &lv = *(dp=new (buf) S7572C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,204), "sizeof(S7572C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7572C2)");
    check_base_class_offset(lv, (S7572C3*), ABISELECT(168,108), "S7572C2");
    check_field_offset(lv, s7572c2f0, ABISELECT(8,4), "S7572C2.s7572c2f0");
    check_field_offset(lv, s7572c2f1, ABISELECT(16,8), "S7572C2.s7572c2f1");
    set_bf_and_test(lv, s7572c2f2, ABISELECT(160,104), 0, 3, 1, "S7572C2");
    set_bf_and_test(lv, s7572c2f2, ABISELECT(160,104), 0, 3, hide_sll(1LL<<2), "S7572C2");
    test_class_info(&lv, &cd_S7572C2);
    dp->~S7572C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7572C2(Test_S7572C2, "S7572C2", ABISELECT(312,204));

#else // __cplusplus

extern void _ZN7S7572C2C1Ev();
extern void _ZN7S7572C2D1Ev();
Name_Map name_map_S7572C2[] = {
  NSPAIR(_ZN7S7572C2C1Ev),
  NSPAIR(_ZN7S7572C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7572C3;
extern VTBL_ENTRY _ZTI7S7572C3[];
extern  VTBL_ENTRY _ZTV7S7572C3[];
static Base_Class bases_S7572C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7572C3,    ABISELECT(168,108), //bcp->offset
    3, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7572C2[];
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY vtc_S7572C2[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
extern VTBL_ENTRY _ZTV7S7572C2[];
static  VTT_ENTRY vtt_S7572C2[] = {
  {&(_ZTV7S7572C2[3]),  3,7},
  {&(_ZTV7S7572C2[6]),  6,7},
};
extern VTBL_ENTRY _ZTI7S7572C2[];
extern  VTBL_ENTRY _ZTV7S7572C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C2[];
Class_Descriptor cd_S7572C2 = {  "S7572C2", // class name
  bases_S7572C2, 1,
  &(vtc_S7572C2[0]), // expected_vtbl_contents
  &(vtt_S7572C2[0]), // expected_vtt_contents
  ABISELECT(312,204), // object size
  NSPAIRA(_ZTI7S7572C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7572C2),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7572C2),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7572C6  {
  __tsi64 s7572c6f0;
  long double s7572c6f1;
  void *s7572c6f2;
  char s7572c6f3;
  ::S7572C3 s7572c6f4;
  void *s7572c6f5[2];
  long s7572c6f6[8];
  short s7572c6f7;
  void *s7572c6f8;
  __tsi64 s7572c6f9:64;
  virtual void  v4(); // _ZN7S7572C62v4Ev
  ~S7572C6(); // tgen
  S7572C6(); // tgen
};
//SIG(-1 S7572C6) C1{ v1 FL FD Fp Fc FC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64}


void  S7572C6 ::v4(){vfunc_called(this, "_ZN7S7572C62v4Ev");}
S7572C6 ::~S7572C6(){ note_dtor("S7572C6", this);} // tgen
S7572C6 ::S7572C6(){ note_ctor("S7572C6", this);} // tgen

static void Test_S7572C6()
{
  extern Class_Descriptor cd_S7572C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,47)];
    init_test(&cd_S7572C6, buf);
    S7572C6 *dp, &lv = *(dp=new (buf) S7572C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,184), "sizeof(S7572C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7572C6)");
    check_field_offset(lv, s7572c6f0, ABISELECT(8,4), "S7572C6.s7572c6f0");
    check_field_offset(lv, s7572c6f1, ABISELECT(16,12), "S7572C6.s7572c6f1");
    check_field_offset(lv, s7572c6f2, ABISELECT(32,24), "S7572C6.s7572c6f2");
    check_field_offset(lv, s7572c6f3, ABISELECT(40,28), "S7572C6.s7572c6f3");
    check_field_offset(lv, s7572c6f4, ABISELECT(48,32), "S7572C6.s7572c6f4");
    check_field_offset(lv, s7572c6f5, ABISELECT(192,128), "S7572C6.s7572c6f5");
    check_field_offset(lv, s7572c6f6, ABISELECT(208,136), "S7572C6.s7572c6f6");
    check_field_offset(lv, s7572c6f7, ABISELECT(272,168), "S7572C6.s7572c6f7");
    check_field_offset(lv, s7572c6f8, ABISELECT(280,172), "S7572C6.s7572c6f8");
    set_bf_and_test(lv, s7572c6f9, ABISELECT(288,176), 0, 64, 1, "S7572C6");
    set_bf_and_test(lv, s7572c6f9, ABISELECT(288,176), 0, 64, hide_sll(1LL<<63), "S7572C6");
    test_class_info(&lv, &cd_S7572C6);
    dp->~S7572C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7572C6(Test_S7572C6, "S7572C6", ABISELECT(304,184));

#else // __cplusplus

extern void _ZN7S7572C6C1Ev();
extern void _ZN7S7572C6D1Ev();
Name_Map name_map_S7572C6[] = {
  NSPAIR(_ZN7S7572C6C1Ev),
  NSPAIR(_ZN7S7572C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7572C6[];
extern void _ZN7S7572C62v4Ev();
static  VTBL_ENTRY vtc_S7572C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C6[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
};
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
Class_Descriptor cd_S7572C6 = {  "S7572C6", // class name
  0,0,//no base classes
  &(vtc_S7572C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,184), // object size
  NSPAIRA(_ZTI7S7572C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7572C6),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7572C5  : S7572C6 {
  ::S7572C2 s7572c5f0;
  int s7572c5f1;
  void *s7572c5f2;
  int s7572c5f3;
  virtual  ~S7572C5(); // _ZN7S7572C5D1Ev
  virtual void  v5(); // _ZN7S7572C52v5Ev
  S7572C5(); // tgen
};
//SIG(-1 S7572C5) C1{ BC2{ v2 FL FD Fp Fc FC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v1 FC4{ VBC3 Fp FC3 FL:3} Fi Fp Fi}


 S7572C5 ::~S7572C5(){ note_dtor("S7572C5", this);}
void  S7572C5 ::v5(){vfunc_called(this, "_ZN7S7572C52v5Ev");}
S7572C5 ::S7572C5(){ note_ctor("S7572C5", this);} // tgen

static void Test_S7572C5()
{
  extern Class_Descriptor cd_S7572C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,101)];
    init_test(&cd_S7572C5, buf);
    S7572C5 *dp, &lv = *(dp=new (buf) S7572C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,400), "sizeof(S7572C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7572C5)");
    check_base_class_offset(lv, (S7572C6*), 0, "S7572C5");
    check_field_offset(lv, s7572c5f0, ABISELECT(296,184), "S7572C5.s7572c5f0");
    check_field_offset(lv, s7572c5f1, ABISELECT(608,388), "S7572C5.s7572c5f1");
    check_field_offset(lv, s7572c5f2, ABISELECT(616,392), "S7572C5.s7572c5f2");
    check_field_offset(lv, s7572c5f3, ABISELECT(624,396), "S7572C5.s7572c5f3");
    test_class_info(&lv, &cd_S7572C5);
    dp->~S7572C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7572C5(Test_S7572C5, "S7572C5", ABISELECT(640,400));

#else // __cplusplus

extern void _ZN7S7572C5C1Ev();
extern void _ZN7S7572C5D1Ev();
Name_Map name_map_S7572C5[] = {
  NSPAIR(_ZN7S7572C5C1Ev),
  NSPAIR(_ZN7S7572C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
static Base_Class bases_S7572C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7572C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7572C5[];
extern void _ZN7S7572C62v4Ev();
extern void _ZN7S7572C5D1Ev();
extern void _ZN7S7572C5D0Ev();
extern void _ZN7S7572C52v5Ev();
static  VTBL_ENTRY vtc_S7572C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C5[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7572C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7572C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7572C52v5Ev,
};
extern VTBL_ENTRY _ZTI7S7572C5[];
extern  VTBL_ENTRY _ZTV7S7572C5[];
Class_Descriptor cd_S7572C5 = {  "S7572C5", // class name
  bases_S7572C5, 1,
  &(vtc_S7572C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,400), // object size
  NSPAIRA(_ZTI7S7572C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7572C5),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7572C9  {
  int s7572c9f0[2];
  long s7572c9f1[2];
  ::S7572C3 s7572c9f2[3];
  virtual void  v6(); // _ZN7S7572C92v6Ev
  virtual void  v7(); // _ZN7S7572C92v7Ev
  virtual void  v8(); // _ZN7S7572C92v8Ev
  ~S7572C9(); // tgen
  S7572C9(); // tgen
};
//SIG(-1 S7572C9) C1{ v1 v2 v3 Fi[2] Fl[2] FC2{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]}


void  S7572C9 ::v6(){vfunc_called(this, "_ZN7S7572C92v6Ev");}
void  S7572C9 ::v7(){vfunc_called(this, "_ZN7S7572C92v7Ev");}
void  S7572C9 ::v8(){vfunc_called(this, "_ZN7S7572C92v8Ev");}
S7572C9 ::~S7572C9(){ note_dtor("S7572C9", this);} // tgen
S7572C9 ::S7572C9(){ note_ctor("S7572C9", this);} // tgen

static void Test_S7572C9()
{
  extern Class_Descriptor cd_S7572C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,78)];
    init_test(&cd_S7572C9, buf);
    S7572C9 *dp, &lv = *(dp=new (buf) S7572C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S7572C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7572C9)");
    check_field_offset(lv, s7572c9f0, ABISELECT(8,4), "S7572C9.s7572c9f0");
    check_field_offset(lv, s7572c9f1, ABISELECT(16,12), "S7572C9.s7572c9f1");
    check_field_offset(lv, s7572c9f2, ABISELECT(32,20), "S7572C9.s7572c9f2");
    test_class_info(&lv, &cd_S7572C9);
    dp->~S7572C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7572C9(Test_S7572C9, "S7572C9", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN7S7572C9C1Ev();
extern void _ZN7S7572C9D1Ev();
Name_Map name_map_S7572C9[] = {
  NSPAIR(_ZN7S7572C9C1Ev),
  NSPAIR(_ZN7S7572C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7572C9[];
extern void _ZN7S7572C92v6Ev();
extern void _ZN7S7572C92v7Ev();
extern void _ZN7S7572C92v8Ev();
static  VTBL_ENTRY vtc_S7572C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C9[0]),
  (VTBL_ENTRY)&_ZN7S7572C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v8Ev,
};
extern VTBL_ENTRY _ZTI7S7572C9[];
extern  VTBL_ENTRY _ZTV7S7572C9[];
Class_Descriptor cd_S7572C9 = {  "S7572C9", // class name
  0,0,//no base classes
  &(vtc_S7572C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI7S7572C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7572C9),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7572C8  : S7572C6 , S7572C9 , S7572C3 {
  long s7572c8f0;
  __tsi64 s7572c8f1;
  void *s7572c8f2[8];
  ::S20292C9 s7572c8f3;
  void *s7572c8f4;
  int s7572c8f5;
  ::S20292C9 s7572c8f6;
  int s7572c8f7;
  virtual  ~S7572C8(); // _ZN7S7572C8D1Ev
  virtual void  v9(); // _ZN7S7572C82v9Ev
  S7572C8(); // tgen
};
//SIG(-1 S7572C8) C1{ BC2{ v2 FL FD Fp Fc FC3{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC4{ v3 v4 v5 Fi[2] Fl[2] FC3[3]} BC3 vd v1 Fl FL Fp[8] FC5{ BC6{ v7 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC7{ v8 v9 v10 Fi[2] Fl[2] FC6[3]} VBC8{ VBC6 Fp FC6 FL:3} VBC9{ v11 FL FD Fp Fc FC6 Fp[2] Fl[8] Fs Fp FL:64} FC9 Fs Fi[2]} Fp Fi FC5 Fi}


 S7572C8 ::~S7572C8(){ note_dtor("S7572C8", this);}
void  S7572C8 ::v9(){vfunc_called(this, "_ZN7S7572C82v9Ev");}
S7572C8 ::S7572C8(){ note_ctor("S7572C8", this);} // tgen

static void Test_S7572C8()
{
  extern Class_Descriptor cd_S7572C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(259,656)];
    init_test(&cd_S7572C8, buf);
    S7572C8 *dp, &lv = *(dp=new (buf) S7572C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4128,2620), "sizeof(S7572C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7572C8)");
    check_base_class_offset(lv, (S7572C6*), 0, "S7572C8");
    check_base_class_offset(lv, (S7572C9*), ABISELECT(296,184), "S7572C8");
    check_base_class_offset(lv, (S7572C3*), ABISELECT(760,492), "S7572C8");
    check_field_offset(lv, s7572c8f0, ABISELECT(904,588), "S7572C8.s7572c8f0");
    check_field_offset(lv, s7572c8f1, ABISELECT(912,592), "S7572C8.s7572c8f1");
    check_field_offset(lv, s7572c8f2, ABISELECT(920,600), "S7572C8.s7572c8f2");
    check_field_offset(lv, s7572c8f3, ABISELECT(992,632), "S7572C8.s7572c8f3");
    check_field_offset(lv, s7572c8f4, ABISELECT(2544,1620), "S7572C8.s7572c8f4");
    check_field_offset(lv, s7572c8f5, ABISELECT(2552,1624), "S7572C8.s7572c8f5");
    check_field_offset(lv, s7572c8f6, ABISELECT(2560,1628), "S7572C8.s7572c8f6");
    check_field_offset(lv, s7572c8f7, ABISELECT(4112,2616), "S7572C8.s7572c8f7");
    test_class_info(&lv, &cd_S7572C8);
    dp->~S7572C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7572C8(Test_S7572C8, "S7572C8", ABISELECT(4128,2620));

#else // __cplusplus

extern void _ZN7S7572C8C1Ev();
extern void _ZN7S7572C8D1Ev();
Name_Map name_map_S7572C8[] = {
  NSPAIR(_ZN7S7572C8C1Ev),
  NSPAIR(_ZN7S7572C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
extern Class_Descriptor cd_S7572C9;
extern VTBL_ENTRY _ZTI7S7572C9[];
extern  VTBL_ENTRY _ZTV7S7572C9[];
extern Class_Descriptor cd_S7572C3;
extern VTBL_ENTRY _ZTI7S7572C3[];
extern  VTBL_ENTRY _ZTV7S7572C3[];
static Base_Class bases_S7572C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7572C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7572C9,    ABISELECT(296,184), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7572C3,    ABISELECT(760,492), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7572C8[];
extern void _ZN7S7572C62v4Ev();
extern void _ZN7S7572C8D1Ev();
extern void _ZN7S7572C8D0Ev();
extern void _ZN7S7572C82v9Ev();
extern void _ZN7S7572C92v6Ev();
extern void _ZN7S7572C92v7Ev();
extern void _ZN7S7572C92v8Ev();
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY vtc_S7572C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C8[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7572C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7572C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7572C82v9Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI7S7572C8[0]),
  (VTBL_ENTRY)&_ZN7S7572C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v8Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI7S7572C8[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S7572C8[];
extern  VTBL_ENTRY _ZTV7S7572C8[];
Class_Descriptor cd_S7572C8 = {  "S7572C8", // class name
  bases_S7572C8, 3,
  &(vtc_S7572C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(4128,2620), // object size
  NSPAIRA(_ZTI7S7572C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7572C8),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7572C7  : virtual S7572C6 , virtual S7572C8 , virtual S7572C3 , virtual S7572C2 {
  __tsi64 s7572c7f0:44;
  void *s7572c7f1;
  int s7572c7f2;
  ::S20292C9 s7572c7f3;
  long s7572c7f4[2];
  int s7572c7f5[3];
  ::S7572C8 s7572c7f6;
  char s7572c7f7:7;
  ::S7572C5 s7572c7f8;
  ~S7572C7(); // tgen
  S7572C7(); // tgen
};
//SIG(-1 S7572C7) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} VBC4{ BC2 BC5{ v2 v3 v4 Fi[2] Fl[2] FC3[3]} BC3 vd v6 Fl FL Fp[8] FC6{ BC7{ v7 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC8{ v8 v9 v10 Fi[2] Fl[2] FC7[3]} VBC9{ VBC7 Fp FC7 FL:3} VBC10{ v11 FL FD Fp Fc FC7 Fp[2] Fl[8] Fs Fp FL:64} FC10 Fs Fi[2]} Fp Fi FC6 Fi} VBC3 VBC11{ VBC3 Fp FC3 FL:3} FL:44 Fp Fi FC6 Fl[2] Fi[3] FC4 Fc:7 FC12{ BC2 vd v12 FC11 Fi Fp Fi}}


S7572C7 ::~S7572C7(){ note_dtor("S7572C7", this);} // tgen
S7572C7 ::S7572C7(){ note_ctor("S7572C7", this);} // tgen

static void Test_S7572C7()
{
  extern Class_Descriptor cd_S7572C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(697,1766)];
    init_test(&cd_S7572C7, buf);
    S7572C7 *dp, &lv = *(dp=new (buf) S7572C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11136,7060), "sizeof(S7572C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7572C7)");
    /*is_ambiguous_... S7572C7::S7572C6 */ AMB_check_base_class_offset(lv, (S7572C6*), ABISELECT(6400,4052), "S7572C7");
    check_base_class_offset(lv, (S7572C6*)(S7572C8*), ABISELECT(6704,4236), "S7572C7");
    check_base_class_offset(lv, (S7572C9*)(S7572C8*), ABISELECT(7000,4420), "S7572C7");
    check_base_class_offset(lv, (S7572C3*)(S7572C8*), ABISELECT(7464,4728), "S7572C7");
    check_base_class_offset(lv, (S7572C8*), ABISELECT(6704,4236), "S7572C7");
    /*is_ambiguous_... S7572C7::S7572C3 */ AMB_check_base_class_offset(lv, (S7572C3*), ABISELECT(10824,6856), "S7572C7");
    check_base_class_offset(lv, (S7572C3*)(S7572C2*), ABISELECT(10824,6856), "S7572C7");
    check_base_class_offset(lv, (S7572C2*), ABISELECT(10968,6952), "S7572C7");
    set_bf_and_test(lv, s7572c7f0, ABISELECT(8,4), 0, 44, 1, "S7572C7");
    set_bf_and_test(lv, s7572c7f0, ABISELECT(8,4), 0, 44, hide_sll(1LL<<43), "S7572C7");
    check_field_offset(lv, s7572c7f1, ABISELECT(16,12), "S7572C7.s7572c7f1");
    check_field_offset(lv, s7572c7f2, ABISELECT(24,16), "S7572C7.s7572c7f2");
    check_field_offset(lv, s7572c7f3, ABISELECT(32,20), "S7572C7.s7572c7f3");
    check_field_offset(lv, s7572c7f4, ABISELECT(1584,1008), "S7572C7.s7572c7f4");
    check_field_offset(lv, s7572c7f5, ABISELECT(1600,1016), "S7572C7.s7572c7f5");
    check_field_offset(lv, s7572c7f6, ABISELECT(1616,1028), "S7572C7.s7572c7f6");
    set_bf_and_test(lv, s7572c7f7, ABISELECT(5744,3648), 0, 7, 1, "S7572C7");
    set_bf_and_test(lv, s7572c7f7, ABISELECT(5744,3648), 0, 7, hide_sll(1LL<<6), "S7572C7");
    check_field_offset(lv, s7572c7f8, ABISELECT(5760,3652), "S7572C7.s7572c7f8");
    test_class_info(&lv, &cd_S7572C7);
    dp->~S7572C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7572C7(Test_S7572C7, "S7572C7", ABISELECT(11136,7060));

#else // __cplusplus

extern void _ZN7S7572C7C1Ev();
extern void _ZN7S7572C7D1Ev();
Name_Map name_map_S7572C7[] = {
  NSPAIR(_ZN7S7572C7C1Ev),
  NSPAIR(_ZN7S7572C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
extern Class_Descriptor cd_S7572C9;
extern VTBL_ENTRY _ZTI7S7572C9[];
extern  VTBL_ENTRY _ZTV7S7572C9[];
extern Class_Descriptor cd_S7572C3;
extern VTBL_ENTRY _ZTI7S7572C3[];
extern  VTBL_ENTRY _ZTV7S7572C3[];
extern Class_Descriptor cd_S7572C8;
extern VTBL_ENTRY _ZTI7S7572C8[];
extern  VTBL_ENTRY _ZTV7S7572C8[];
extern Class_Descriptor cd_S7572C3;
extern VTBL_ENTRY _ZTI7S7572C3[];
extern  VTBL_ENTRY _ZTV7S7572C3[];
extern Class_Descriptor cd_S7572C2;
extern VTBL_ENTRY _ZTI7S7572C2[];
extern  VTBL_ENTRY _ZTV7S7572C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C2[];
static Base_Class bases_S7572C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7572C6,    ABISELECT(6400,4052), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7572C6,    ABISELECT(6704,4236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7572C9,    ABISELECT(7000,4420), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7572C3,    ABISELECT(7464,4728), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7572C8,    ABISELECT(6704,4236), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7572C3,    ABISELECT(10824,6856), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7572C2,    ABISELECT(10968,6952), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7572C7[];
extern void _ZN7S7572C7D1Ev();
extern void _ZN7S7572C7D0Ev();
extern void _ZN7S7572C62v4Ev();
extern void _ZN7S7572C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7572C7D1Ev,_ZTv0_n16_N7S7572C7D1Ev)();
extern void ABISELECT(_ZThn6704_N7S7572C7D1Ev,_ZThn4236_N7S7572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7572C7D0Ev,_ZTv0_n16_N7S7572C7D0Ev)();
extern void ABISELECT(_ZThn6704_N7S7572C7D0Ev,_ZThn4236_N7S7572C7D0Ev)() __attribute__((weak));
extern void _ZN7S7572C82v9Ev();
extern void _ZN7S7572C92v6Ev();
extern void _ZN7S7572C92v7Ev();
extern void _ZN7S7572C92v8Ev();
extern void _ZN7S7572C32v3Ev();
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY vtc_S7572C7[] = {
  ABISELECT(10968,6952),
  ABISELECT(10824,6856),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7572C7D0Ev,
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C7D1Ev,_ZTv0_n16_N7S7572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C7D0Ev,_ZTv0_n16_N7S7572C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7572C82v9Ev,
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v8Ev,
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
  0,
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
  ABISELECT(-144,-96),
  ABISELECT(-10968,-6952),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
};
extern VTBL_ENTRY _ZTV7S7572C7[];
static  VTBL_ENTRY _tg__ZTV7S7572C2__7S7572C7[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C3__7S7572C2__7S7572C7[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
static  VTT_ENTRY vtt_S7572C7[] = {
  {&(_ZTV7S7572C7[6]),  6,40},
  {&(_ZTV7S7572C7[11]),  11,40},
  {&(_ZTV7S7572C7[21]),  21,40},
  {&(_ZTV7S7572C7[27]),  27,40},
  {&(_ZTV7S7572C7[32]),  32,40},
  {&(_ZTV7S7572C7[36]),  36,40},
  {&(_ZTV7S7572C7[40]),  40,40},
  {&(_tg__ZTV7S7572C2__7S7572C7[3]),  3,3},
  {&(_tg__ZTV7S7572C3__7S7572C2__7S7572C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7572C7[];
extern  VTBL_ENTRY _ZTV7S7572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C7[];
static VTBL_ENTRY alt_thunk_names76[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C7D0Ev,_ZTv0_n16_N7S7572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N7S7572C7D0Ev,_ZThn4236_N7S7572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C7D1Ev,_ZTv0_n16_N7S7572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N7S7572C7D1Ev,_ZThn4236_N7S7572C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7572C7 = {  "S7572C7", // class name
  bases_S7572C7, 7,
  &(vtc_S7572C7[0]), // expected_vtbl_contents
  &(vtt_S7572C7[0]), // expected_vtt_contents
  ABISELECT(11136,7060), // object size
  NSPAIRA(_ZTI7S7572C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7572C7),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7572C7),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names76,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7572C4  : virtual S7572C5 , virtual S7572C3 , virtual S7572C7 {
  int s7572c4f0;
  long double s7572c4f1;
  int s7572c4f2;
  void *s7572c4f3;
  long s7572c4f4;
  ::S19763C23 s7572c4f5;
  int s7572c4f6;
  long s7572c4f7;
  virtual  ~S7572C4(); // _ZN7S7572C4D2Ev
  S7572C4(); // tgen
};
//SIG(-1 S7572C4) C1{ VBC2{ BC3{ v1 FL FD Fp Fc FC4{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v2 FC5{ VBC4 Fp FC4 FL:3} Fi Fp Fi} VBC4 VBC6{ VBC3 VBC7{ BC3 BC8{ v4 v5 v6 Fi[2] Fl[2] FC4[3]} BC4 vd v7 Fl FL Fp[8] FC9{ BC10{ v8 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC11{ v9 v10 v11 Fi[2] Fl[2] FC10[3]} VBC12{ VBC10 Fp FC10 FL:3} VBC13{ v12 FL FD Fp Fc FC10 Fp[2] Fl[8] Fs Fp FL:64} FC13 Fs Fi[2]} Fp Fi FC9 Fi} VBC4 VBC5 FL:44 Fp Fi FC9 Fl[2] Fi[3] FC7 Fc:7 FC2} vd Fi FD Fi Fp Fl FU14{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi Fl}


 S7572C4 ::~S7572C4(){ note_dtor("S7572C4", this);}
S7572C4 ::S7572C4(){ note_ctor("S7572C4", this);} // tgen

static void Test_S7572C4()
{
  extern Class_Descriptor cd_S7572C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(742,1878)];
    init_test(&cd_S7572C4, buf);
    S7572C4 *dp, &lv = *(dp=new (buf) S7572C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11856,7508), "sizeof(S7572C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7572C4)");
    check_base_class_offset(lv, (S7572C6*)(S7572C5*), ABISELECT(80,48), "S7572C4");
    check_base_class_offset(lv, (S7572C5*), ABISELECT(80,48), "S7572C4");
    /*is_ambiguous_... S7572C4::S7572C3 */ AMB_check_base_class_offset(lv, (S7572C3*), ABISELECT(712,448), "S7572C4");
    /*is_ambiguous_... S7572C7::S7572C3 */ AMB_check_base_class_offset(lv, (S7572C3*)(S7572C7*), ABISELECT(712,448), "S7572C4");
    check_base_class_offset(lv, (S7572C3*)(S7572C2*), ABISELECT(712,448), "S7572C4");
    /*is_ambiguous_... S7572C7::S7572C6 */ AMB_check_base_class_offset(lv, (S7572C6*)(S7572C7*), ABISELECT(7264,4596), "S7572C4");
    check_base_class_offset(lv, (S7572C6*)(S7572C8*), ABISELECT(7568,4780), "S7572C4");
    check_base_class_offset(lv, (S7572C9*)(S7572C8*), ABISELECT(7864,4964), "S7572C4");
    check_base_class_offset(lv, (S7572C3*)(S7572C8*), ABISELECT(8328,5272), "S7572C4");
    check_base_class_offset(lv, (S7572C8*)(S7572C7*), ABISELECT(7568,4780), "S7572C4");
    check_base_class_offset(lv, (S7572C2*)(S7572C7*), ABISELECT(11688,7400), "S7572C4");
    check_base_class_offset(lv, (S7572C7*), ABISELECT(864,544), "S7572C4");
    check_field_offset(lv, s7572c4f0, ABISELECT(8,4), "S7572C4.s7572c4f0");
    check_field_offset(lv, s7572c4f1, ABISELECT(16,8), "S7572C4.s7572c4f1");
    check_field_offset(lv, s7572c4f2, ABISELECT(32,20), "S7572C4.s7572c4f2");
    check_field_offset(lv, s7572c4f3, ABISELECT(40,24), "S7572C4.s7572c4f3");
    check_field_offset(lv, s7572c4f4, ABISELECT(48,28), "S7572C4.s7572c4f4");
    check_field_offset(lv, s7572c4f5, ABISELECT(56,32), "S7572C4.s7572c4f5");
    check_field_offset(lv, s7572c4f6, ABISELECT(64,40), "S7572C4.s7572c4f6");
    check_field_offset(lv, s7572c4f7, ABISELECT(72,44), "S7572C4.s7572c4f7");
    test_class_info(&lv, &cd_S7572C4);
    dp->~S7572C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7572C4(Test_S7572C4, "S7572C4", ABISELECT(11856,7508));

#else // __cplusplus

extern void _ZN7S7572C4C1Ev();
extern void _ZN7S7572C4D2Ev();
Name_Map name_map_S7572C4[] = {
  NSPAIR(_ZN7S7572C4C1Ev),
  NSPAIR(_ZN7S7572C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
extern Class_Descriptor cd_S7572C5;
extern VTBL_ENTRY _ZTI7S7572C5[];
extern  VTBL_ENTRY _ZTV7S7572C5[];
extern Class_Descriptor cd_S7572C3;
extern VTBL_ENTRY _ZTI7S7572C3[];
extern  VTBL_ENTRY _ZTV7S7572C3[];
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
extern Class_Descriptor cd_S7572C9;
extern VTBL_ENTRY _ZTI7S7572C9[];
extern  VTBL_ENTRY _ZTV7S7572C9[];
extern Class_Descriptor cd_S7572C3;
extern VTBL_ENTRY _ZTI7S7572C3[];
extern  VTBL_ENTRY _ZTV7S7572C3[];
extern Class_Descriptor cd_S7572C8;
extern VTBL_ENTRY _ZTI7S7572C8[];
extern  VTBL_ENTRY _ZTV7S7572C8[];
extern Class_Descriptor cd_S7572C2;
extern VTBL_ENTRY _ZTI7S7572C2[];
extern  VTBL_ENTRY _ZTV7S7572C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C2[];
extern Class_Descriptor cd_S7572C7;
extern VTBL_ENTRY _ZTI7S7572C7[];
extern  VTBL_ENTRY _ZTV7S7572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C7[];
static Base_Class bases_S7572C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7572C6,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7572C5,    ABISELECT(80,48), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7572C3,    ABISELECT(712,448), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7572C6,    ABISELECT(7264,4596), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7572C6,    ABISELECT(7568,4780), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7572C9,    ABISELECT(7864,4964), //bcp->offset
    49, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7572C3,    ABISELECT(8328,5272), //bcp->offset
    54, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7572C8,    ABISELECT(7568,4780), //bcp->offset
    36, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7572C2,    ABISELECT(11688,7400), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7572C7,    ABISELECT(864,544), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7572C4[];
extern void _ZN7S7572C4D1Ev();
extern void _ZN7S7572C4D0Ev();
extern void _ZN7S7572C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7572C4D1Ev,_ZThn48_N7S7572C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7572C4D0Ev,_ZThn48_N7S7572C4D0Ev)() __attribute__((weak));
extern void _ZN7S7572C52v5Ev();
extern void _ZN7S7572C32v3Ev();
extern void ABISELECT(_ZTv0_n56_N7S7572C4D1Ev,_ZTv0_n28_N7S7572C4D1Ev)();
extern void ABISELECT(_ZThn864_N7S7572C4D1Ev,_ZThn544_N7S7572C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7572C4D0Ev,_ZTv0_n28_N7S7572C4D0Ev)();
extern void ABISELECT(_ZThn864_N7S7572C4D0Ev,_ZThn544_N7S7572C4D0Ev)() __attribute__((weak));
extern void _ZN7S7572C62v4Ev();
extern void _ZN7S7572C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev)();
extern void ABISELECT(_ZThn7568_N7S7572C4D1Ev,_ZThn4780_N7S7572C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev)();
extern void ABISELECT(_ZThn7568_N7S7572C4D0Ev,_ZThn4780_N7S7572C4D0Ev)() __attribute__((weak));
extern void _ZN7S7572C82v9Ev();
extern void _ZN7S7572C92v6Ev();
extern void _ZN7S7572C92v7Ev();
extern void _ZN7S7572C92v8Ev();
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY vtc_S7572C4[] = {
  ABISELECT(11688,7400),
  ABISELECT(7568,4780),
  ABISELECT(7264,4596),
  ABISELECT(864,544),
  ABISELECT(712,448),
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7572C4D0Ev,
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7572C52v5Ev,
  0,
  ABISELECT(-712,-448),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
  ABISELECT(-864,-544),
  ABISELECT(10824,6856),
  ABISELECT(-152,-96),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  ABISELECT(-864,-544),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7572C4D1Ev,_ZTv0_n28_N7S7572C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7572C4D0Ev,_ZTv0_n28_N7S7572C4D0Ev),
  0,
  ABISELECT(-7264,-4596),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-7568,-4780),
  0,
  ABISELECT(-7568,-4780),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7572C82v9Ev,
  ABISELECT(-7864,-4964),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v8Ev,
  ABISELECT(-8328,-5272),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
  ABISELECT(-10976,-6952),
  ABISELECT(-11688,-7400),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
};
extern VTBL_ENTRY _ZTV7S7572C4[];
extern void _ZN7S7572C7D1Ev();
extern void _ZN7S7572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C7__7S7572C4[] = {
  ABISELECT(10824,6856),
  ABISELECT(-152,-96),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7572C7D0Ev,
};
extern void _ZN7S7572C62v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C6__7S7572C7__7S7572C4[] = {
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
};
extern void _ZN7S7572C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7572C7D1Ev,_ZTv0_n16_N7S7572C7D1Ev)();
extern void ABISELECT(_ZThn6704_N7S7572C7D1Ev,_ZThn4236_N7S7572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7572C7D0Ev,_ZTv0_n16_N7S7572C7D0Ev)();
extern void ABISELECT(_ZThn6704_N7S7572C7D0Ev,_ZThn4236_N7S7572C7D0Ev)() __attribute__((weak));
extern void _ZN7S7572C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C8__7S7572C7__7S7572C4[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C7D1Ev,_ZTv0_n16_N7S7572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C7D0Ev,_ZTv0_n16_N7S7572C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7572C82v9Ev,
};
extern void _ZN7S7572C92v6Ev();
extern void _ZN7S7572C92v7Ev();
extern void _ZN7S7572C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C97S7572C8__7S7572C7__7S7572C4[] = {
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v8Ev,
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C37S7572C8__7S7572C7__7S7572C4[] = {
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C3__A1__7S7572C7__7S7572C4[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7572C2__7S7572C7__7S7572C4[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7572C2__7S7572C4[] = {
  ABISELECT(-10976,-6952),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C3__7S7572C2__7S7572C4[] = {
  0,
  ABISELECT(10976,6952),
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
static  VTT_ENTRY vtt_S7572C4[] = {
  {&(_ZTV7S7572C4[8]),  8,60},
  {&(_ZTV7S7572C4[15]),  15,60},
  {&(_ZTV7S7572C4[22]),  22,60},
  {&(_ZTV7S7572C4[30]),  30,60},
  {&(_ZTV7S7572C4[35]),  35,60},
  {&(_ZTV7S7572C4[45]),  45,60},
  {&(_ZTV7S7572C4[51]),  51,60},
  {&(_ZTV7S7572C4[56]),  56,60},
  {&(_ZTV7S7572C4[60]),  60,60},
  {&(_tg__ZTV7S7572C7__7S7572C4[6]),  6,8},
  {&(_tg__ZTV7S7572C6__7S7572C7__7S7572C4[3]),  3,4},
  {&(_tg__ZTV7S7572C8__7S7572C7__7S7572C4[9]),  9,13},
  {&(_tg__ZTV7S7572C97S7572C8__7S7572C7__7S7572C4[2]),  2,5},
  {&(_tg__ZTV7S7572C37S7572C8__7S7572C7__7S7572C4[2]),  2,3},
  {&(_tg__ZTV7S7572C3__A1__7S7572C7__7S7572C4[3]),  3,4},
  {&(_tg__ZTV7S7572C2__7S7572C7__7S7572C4[3]),  3,3},
  {&(_tg__ZTV7S7572C2__7S7572C4[3]),  3,3},
  {&(_tg__ZTV7S7572C3__7S7572C2__7S7572C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7572C4[];
extern  VTBL_ENTRY _ZTV7S7572C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C4[];
static VTBL_ENTRY alt_thunk_names77[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C7D0Ev,_ZTv0_n16_N7S7572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N7S7572C7D0Ev,_ZThn4236_N7S7572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C7D1Ev,_ZTv0_n16_N7S7572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N7S7572C7D1Ev,_ZThn4236_N7S7572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7572C4D0Ev,_ZTv0_n28_N7S7572C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N7S7572C4D0Ev,_ZThn544_N7S7572C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7572C4D1Ev,_ZTv0_n28_N7S7572C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N7S7572C4D1Ev,_ZThn544_N7S7572C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N7S7572C4D0Ev,_ZThn4780_N7S7572C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7572C4D0Ev,_ZThn48_N7S7572C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N7S7572C4D1Ev,_ZThn4780_N7S7572C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7572C4D1Ev,_ZThn48_N7S7572C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7572C4 = {  "S7572C4", // class name
  bases_S7572C4, 10,
  &(vtc_S7572C4[0]), // expected_vtbl_contents
  &(vtt_S7572C4[0]), // expected_vtt_contents
  ABISELECT(11856,7508), // object size
  NSPAIRA(_ZTI7S7572C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7572C4),60, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7572C4),18, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names77,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7572C1  : S7572C2 , S7572C4 {
  int s7572c1f0[7];
  __tsi64 s7572c1f1;
  int s7572c1f2[9];
  int s7572c1f3;
  int s7572c1f4;
  long s7572c1f5;
  int s7572c1f6;
  long s7572c1f7[7];
  virtual void  v1(); // _ZN7S7572C12v1Ev
  virtual void  v2(); // _ZN7S7572C12v2Ev
  ~S7572C1(); // tgen
  S7572C1(); // tgen
};
//SIG(1 S7572C1) C1{ BC2{ VBC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC3 FL:3} BC4{ VBC5{ BC6{ v4 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} vd v5 FC2 Fi Fp Fi} VBC3 VBC7{ VBC6 VBC8{ BC6 BC9{ v6 v7 v8 Fi[2] Fl[2] FC3[3]} BC3 vd v9 Fl FL Fp[8] FC10{ BC11{ v10 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC12{ v11 v12 v13 Fi[2] Fl[2] FC11[3]} VBC13{ VBC11 Fp FC11 FL:3} VBC14{ v14 FL FD Fp Fc FC11 Fp[2] Fl[8] Fs Fp FL:64} FC14 Fs Fi[2]} Fp Fi FC10 Fi} VBC3 VBC2 FL:44 Fp Fi FC10 Fl[2] Fi[3] FC8 Fc:7 FC5} vd Fi FD Fi Fp Fl FU15{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi Fl} v1 v2 Fi[7] FL Fi[9] Fi Fi Fl Fi Fl[7]}


void  S7572C1 ::v1(){vfunc_called(this, "_ZN7S7572C12v1Ev");}
void  S7572C1 ::v2(){vfunc_called(this, "_ZN7S7572C12v2Ev");}
S7572C1 ::~S7572C1(){ note_dtor("S7572C1", this);} // tgen
S7572C1 ::S7572C1(){ note_ctor("S7572C1", this);} // tgen

static void Test_S7572C1()
{
  extern Class_Descriptor cd_S7572C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(763,1934)];
    init_test(&cd_S7572C1, buf);
    S7572C1 *dp, &lv = *(dp=new (buf) S7572C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(12192,7732), "sizeof(S7572C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7572C1)");
    /*is_ambiguous_... S7572C1::S7572C2 */ AMB_check_base_class_offset(lv, (S7572C3*)(S7572C2*), ABISELECT(416,272), "S7572C1");
    /*is_ambiguous_... S7572C4::S7572C3 */ AMB_check_base_class_offset(lv, (S7572C3*)(S7572C4*), ABISELECT(416,272), "S7572C1");
    /*is_ambiguous_... S7572C7::S7572C3 */ AMB_check_base_class_offset(lv, (S7572C3*)(S7572C7*), ABISELECT(416,272), "S7572C1");
    /*is_ambiguous_... S7572C1::S7572C2 */ AMB_check_base_class_offset(lv, (S7572C3*)(S7572C2*), ABISELECT(416,272), "S7572C1");
    /*is_ambiguous_... S7572C1::S7572C2 */ AMB_check_base_class_offset(lv, (S7572C2*), 0, "S7572C1");
    check_base_class_offset(lv, (S7572C6*)(S7572C5*), ABISELECT(560,368), "S7572C1");
    check_base_class_offset(lv, (S7572C5*)(S7572C4*), ABISELECT(560,368), "S7572C1");
    /*is_ambiguous_... S7572C7::S7572C6 */ AMB_check_base_class_offset(lv, (S7572C6*)(S7572C7*), ABISELECT(7600,4820), "S7572C1");
    check_base_class_offset(lv, (S7572C6*)(S7572C8*), ABISELECT(7904,5004), "S7572C1");
    check_base_class_offset(lv, (S7572C9*)(S7572C8*), ABISELECT(8200,5188), "S7572C1");
    check_base_class_offset(lv, (S7572C3*)(S7572C8*), ABISELECT(8664,5496), "S7572C1");
    check_base_class_offset(lv, (S7572C8*)(S7572C7*), ABISELECT(7904,5004), "S7572C1");
    check_base_class_offset(lv, (S7572C2*)(S7572C7*), ABISELECT(12024,7624), "S7572C1");
    check_base_class_offset(lv, (S7572C7*)(S7572C4*), ABISELECT(1200,768), "S7572C1");
    check_base_class_offset(lv, (S7572C4*), ABISELECT(176,108), "S7572C1");
    check_field_offset(lv, s7572c1f0, ABISELECT(256,156), "S7572C1.s7572c1f0");
    check_field_offset(lv, s7572c1f1, ABISELECT(288,184), "S7572C1.s7572c1f1");
    check_field_offset(lv, s7572c1f2, ABISELECT(296,192), "S7572C1.s7572c1f2");
    check_field_offset(lv, s7572c1f3, ABISELECT(332,228), "S7572C1.s7572c1f3");
    check_field_offset(lv, s7572c1f4, ABISELECT(336,232), "S7572C1.s7572c1f4");
    check_field_offset(lv, s7572c1f5, ABISELECT(344,236), "S7572C1.s7572c1f5");
    check_field_offset(lv, s7572c1f6, ABISELECT(352,240), "S7572C1.s7572c1f6");
    check_field_offset(lv, s7572c1f7, ABISELECT(360,244), "S7572C1.s7572c1f7");
    test_class_info(&lv, &cd_S7572C1);
    dp->~S7572C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7572C1(Test_S7572C1, "S7572C1", ABISELECT(12192,7732));

#else // __cplusplus

extern void _ZN7S7572C1C1Ev();
extern void _ZN7S7572C1D1Ev();
Name_Map name_map_S7572C1[] = {
  NSPAIR(_ZN7S7572C1C1Ev),
  NSPAIR(_ZN7S7572C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7572C3;
extern VTBL_ENTRY _ZTI7S7572C3[];
extern  VTBL_ENTRY _ZTV7S7572C3[];
extern Class_Descriptor cd_S7572C2;
extern VTBL_ENTRY _ZTI7S7572C2[];
extern  VTBL_ENTRY _ZTV7S7572C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C2[];
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
extern Class_Descriptor cd_S7572C5;
extern VTBL_ENTRY _ZTI7S7572C5[];
extern  VTBL_ENTRY _ZTV7S7572C5[];
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
extern Class_Descriptor cd_S7572C9;
extern VTBL_ENTRY _ZTI7S7572C9[];
extern  VTBL_ENTRY _ZTV7S7572C9[];
extern Class_Descriptor cd_S7572C3;
extern VTBL_ENTRY _ZTI7S7572C3[];
extern  VTBL_ENTRY _ZTV7S7572C3[];
extern Class_Descriptor cd_S7572C8;
extern VTBL_ENTRY _ZTI7S7572C8[];
extern  VTBL_ENTRY _ZTV7S7572C8[];
extern Class_Descriptor cd_S7572C2;
extern VTBL_ENTRY _ZTI7S7572C2[];
extern  VTBL_ENTRY _ZTV7S7572C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C2[];
extern Class_Descriptor cd_S7572C7;
extern VTBL_ENTRY _ZTI7S7572C7[];
extern  VTBL_ENTRY _ZTV7S7572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C7[];
extern Class_Descriptor cd_S7572C4;
extern VTBL_ENTRY _ZTI7S7572C4[];
extern  VTBL_ENTRY _ZTV7S7572C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C4[];
static Base_Class bases_S7572C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7572C3,    ABISELECT(416,272), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7572C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7572C6,    ABISELECT(560,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7572C5,    ABISELECT(560,368), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7572C6,    ABISELECT(7600,4820), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7572C6,    ABISELECT(7904,5004), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7572C9,    ABISELECT(8200,5188), //bcp->offset
    61, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7572C3,    ABISELECT(8664,5496), //bcp->offset
    66, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7572C8,    ABISELECT(7904,5004), //bcp->offset
    48, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7572C2,    ABISELECT(12024,7624), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7572C7,    ABISELECT(1200,768), //bcp->offset
    35, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7572C4,    ABISELECT(176,108), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7572C1[];
extern void _ZN7S7572C12v1Ev();
extern void _ZN7S7572C12v2Ev();
extern void _ZN7S7572C1D1Ev();
extern void _ZN7S7572C1D0Ev();
extern void ABISELECT(_ZThn176_N7S7572C1D1Ev,_ZThn108_N7S7572C1D1Ev)();
extern void ABISELECT(_ZThn176_N7S7572C1D0Ev,_ZThn108_N7S7572C1D0Ev)();
extern void _ZN7S7572C32v3Ev();
extern void _ZN7S7572C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7572C1D1Ev,_ZTv0_n16_N7S7572C1D1Ev)();
extern void ABISELECT(_ZThn560_N7S7572C1D1Ev,_ZThn368_N7S7572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7572C1D0Ev,_ZTv0_n16_N7S7572C1D0Ev)();
extern void ABISELECT(_ZThn560_N7S7572C1D0Ev,_ZThn368_N7S7572C1D0Ev)() __attribute__((weak));
extern void _ZN7S7572C52v5Ev();
extern void ABISELECT(_ZTv0_n56_N7S7572C1D1Ev,_ZTv0_n28_N7S7572C1D1Ev)();
extern void ABISELECT(_ZThn1200_N7S7572C1D1Ev,_ZThn768_N7S7572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7572C1D0Ev,_ZTv0_n28_N7S7572C1D0Ev)();
extern void ABISELECT(_ZThn1200_N7S7572C1D0Ev,_ZThn768_N7S7572C1D0Ev)() __attribute__((weak));
extern void _ZN7S7572C62v4Ev();
extern void _ZN7S7572C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7572C1D1Ev,_ZTv0_n16_N7S7572C1D1Ev)();
extern void ABISELECT(_ZThn7904_N7S7572C1D1Ev,_ZThn5004_N7S7572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7572C1D0Ev,_ZTv0_n16_N7S7572C1D0Ev)();
extern void ABISELECT(_ZThn7904_N7S7572C1D0Ev,_ZThn5004_N7S7572C1D0Ev)() __attribute__((weak));
extern void _ZN7S7572C82v9Ev();
extern void _ZN7S7572C92v6Ev();
extern void _ZN7S7572C92v7Ev();
extern void _ZN7S7572C92v8Ev();
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY vtc_S7572C1[] = {
  ABISELECT(12024,7624),
  ABISELECT(7904,5004),
  ABISELECT(7600,4820),
  ABISELECT(1200,768),
  ABISELECT(560,368),
  ABISELECT(416,272),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
  (VTBL_ENTRY)&_ZN7S7572C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7572C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7572C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7572C1D0Ev,
  ABISELECT(11848,7516),
  ABISELECT(7728,4896),
  ABISELECT(7424,4712),
  ABISELECT(1024,660),
  ABISELECT(240,164),
  ABISELECT(384,260),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N7S7572C1D1Ev,_ZThn108_N7S7572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N7S7572C1D0Ev,_ZThn108_N7S7572C1D0Ev),
  0,
  ABISELECT(-416,-272),
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
  0,
  ABISELECT(-560,-368),
  0,
  ABISELECT(-560,-368),
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C1D1Ev,_ZTv0_n16_N7S7572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C1D0Ev,_ZTv0_n16_N7S7572C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7572C52v5Ev,
  ABISELECT(-1200,-768),
  ABISELECT(10824,6856),
  ABISELECT(-784,-496),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  ABISELECT(-1200,-768),
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7572C1D1Ev,_ZTv0_n28_N7S7572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7572C1D0Ev,_ZTv0_n28_N7S7572C1D0Ev),
  0,
  ABISELECT(-7600,-4820),
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-7904,-5004),
  0,
  ABISELECT(-7904,-5004),
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C1D1Ev,_ZTv0_n16_N7S7572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C1D0Ev,_ZTv0_n16_N7S7572C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7572C82v9Ev,
  ABISELECT(-8200,-5188),
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
  (VTBL_ENTRY)&_ZN7S7572C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v8Ev,
  ABISELECT(-8664,-5496),
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
  ABISELECT(-11608,-7352),
  ABISELECT(-12024,-7624),
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
};
extern VTBL_ENTRY _ZTV7S7572C1[];
static  VTBL_ENTRY _tg__ZTV7S7572C2__A__7S7572C1[] = {
  ABISELECT(416,272),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C3__7S7572C2__A__7S7572C1[] = {
  0,
  ABISELECT(-416,-272),
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
extern void _ZN7S7572C4D1Ev();
extern void _ZN7S7572C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C4__7S7572C1[] = {
  ABISELECT(11848,7516),
  ABISELECT(7728,4896),
  ABISELECT(7424,4712),
  ABISELECT(1024,660),
  ABISELECT(240,164),
  ABISELECT(384,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7572C4D0Ev,
};
extern void _ZN7S7572C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev)();
extern void ABISELECT(_ZThn384_N7S7572C4D1Ev,_ZThn260_N7S7572C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev)();
extern void ABISELECT(_ZThn384_N7S7572C4D0Ev,_ZThn260_N7S7572C4D0Ev)() __attribute__((weak));
extern void _ZN7S7572C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C5__7S7572C4__7S7572C1[] = {
  0,
  ABISELECT(-384,-260),
  0,
  ABISELECT(-384,-260),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7572C52v5Ev,
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C3__7S7572C4__7S7572C1[] = {
  0,
  ABISELECT(-240,-164),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7572C4D1Ev,_ZTv0_n28_N7S7572C4D1Ev)();
extern void ABISELECT(_ZThn1024_N7S7572C4D1Ev,_ZThn660_N7S7572C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7572C4D0Ev,_ZTv0_n28_N7S7572C4D0Ev)();
extern void ABISELECT(_ZThn1024_N7S7572C4D0Ev,_ZThn660_N7S7572C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7572C7__7S7572C4__7S7572C1[] = {
  ABISELECT(-1024,-660),
  ABISELECT(10824,6856),
  ABISELECT(-784,-496),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  ABISELECT(-1024,-660),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7572C4D1Ev,_ZTv0_n28_N7S7572C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7572C4D0Ev,_ZTv0_n28_N7S7572C4D0Ev),
};
extern void _ZN7S7572C62v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C6__A1__7S7572C4__7S7572C1[] = {
  0,
  ABISELECT(-7424,-4712),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
};
extern void _ZN7S7572C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev)();
extern void ABISELECT(_ZThn7728_N7S7572C4D1Ev,_ZThn4896_N7S7572C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev)();
extern void ABISELECT(_ZThn7728_N7S7572C4D0Ev,_ZThn4896_N7S7572C4D0Ev)() __attribute__((weak));
extern void _ZN7S7572C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C8__7S7572C4__7S7572C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-7728,-4896),
  0,
  ABISELECT(-7728,-4896),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7572C82v9Ev,
};
extern void _ZN7S7572C92v6Ev();
extern void _ZN7S7572C92v7Ev();
extern void _ZN7S7572C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C97S7572C8__7S7572C4__7S7572C1[] = {
  ABISELECT(-8024,-5080),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v8Ev,
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C37S7572C8__A1__7S7572C4__7S7572C1[] = {
  ABISELECT(-8488,-5388),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7572C2__7S7572C4__7S7572C1[] = {
  ABISELECT(-11608,-7352),
  ABISELECT(-11848,-7516),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
};
extern void _ZN7S7572C7D1Ev();
extern void _ZN7S7572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C7__7S7572C1[] = {
  ABISELECT(10824,6856),
  ABISELECT(-784,-496),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7572C7D0Ev,
};
extern void _ZN7S7572C62v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C6__7S7572C7__7S7572C1[] = {
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
};
extern void _ZN7S7572C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7572C7D1Ev,_ZTv0_n16_N7S7572C7D1Ev)();
extern void ABISELECT(_ZThn6704_N7S7572C7D1Ev,_ZThn4236_N7S7572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7572C7D0Ev,_ZTv0_n16_N7S7572C7D0Ev)();
extern void ABISELECT(_ZThn6704_N7S7572C7D0Ev,_ZThn4236_N7S7572C7D0Ev)() __attribute__((weak));
extern void _ZN7S7572C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C8__7S7572C7__7S7572C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C7D1Ev,_ZTv0_n16_N7S7572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C7D0Ev,_ZTv0_n16_N7S7572C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7572C82v9Ev,
};
extern void _ZN7S7572C92v6Ev();
extern void _ZN7S7572C92v7Ev();
extern void _ZN7S7572C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C97S7572C8__7S7572C7__7S7572C1[] = {
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v8Ev,
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C37S7572C8__7S7572C7__7S7572C1[] = {
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C3__A1__7S7572C7__7S7572C1[] = {
  0,
  ABISELECT(784,496),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7572C2__7S7572C7__7S7572C1[] = {
  ABISELECT(-11608,-7352),
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7572C2__A1__7S7572C1[] = {
  ABISELECT(-11608,-7352),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C3__7S7572C2__A1__7S7572C1[] = {
  0,
  ABISELECT(11608,7352),
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
static  VTT_ENTRY vtt_S7572C1[] = {
  {&(_ZTV7S7572C1[8]),  8,72},
  {&(_tg__ZTV7S7572C2__A__7S7572C1[3]),  3,3},
  {&(_tg__ZTV7S7572C3__7S7572C2__A__7S7572C1[3]),  3,4},
  {&(_tg__ZTV7S7572C4__7S7572C1[8]),  8,10},
  {&(_tg__ZTV7S7572C5__7S7572C4__7S7572C1[5]),  5,9},
  {&(_tg__ZTV7S7572C3__7S7572C4__7S7572C1[3]),  3,4},
  {&(_tg__ZTV7S7572C7__7S7572C4__7S7572C1[7]),  7,9},
  {&(_tg__ZTV7S7572C6__A1__7S7572C4__7S7572C1[3]),  3,4},
  {&(_tg__ZTV7S7572C8__7S7572C4__7S7572C1[9]),  9,13},
  {&(_tg__ZTV7S7572C97S7572C8__7S7572C4__7S7572C1[2]),  2,5},
  {&(_tg__ZTV7S7572C37S7572C8__A1__7S7572C4__7S7572C1[2]),  2,3},
  {&(_tg__ZTV7S7572C2__7S7572C4__7S7572C1[3]),  3,3},
  {&(_ZTV7S7572C1[25]),  25,72},
  {&(_ZTV7S7572C1[20]),  20,72},
  {&(_ZTV7S7572C1[31]),  31,72},
  {&(_ZTV7S7572C1[42]),  42,72},
  {&(_ZTV7S7572C1[47]),  47,72},
  {&(_ZTV7S7572C1[57]),  57,72},
  {&(_ZTV7S7572C1[63]),  63,72},
  {&(_ZTV7S7572C1[68]),  68,72},
  {&(_ZTV7S7572C1[72]),  72,72},
  {&(_tg__ZTV7S7572C7__7S7572C1[6]),  6,8},
  {&(_tg__ZTV7S7572C6__7S7572C7__7S7572C1[3]),  3,4},
  {&(_tg__ZTV7S7572C8__7S7572C7__7S7572C1[9]),  9,13},
  {&(_tg__ZTV7S7572C97S7572C8__7S7572C7__7S7572C1[2]),  2,5},
  {&(_tg__ZTV7S7572C37S7572C8__7S7572C7__7S7572C1[2]),  2,3},
  {&(_tg__ZTV7S7572C3__A1__7S7572C7__7S7572C1[3]),  3,4},
  {&(_tg__ZTV7S7572C2__7S7572C7__7S7572C1[3]),  3,3},
  {&(_tg__ZTV7S7572C2__A1__7S7572C1[3]),  3,3},
  {&(_tg__ZTV7S7572C3__7S7572C2__A1__7S7572C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7572C1[];
extern  VTBL_ENTRY _ZTV7S7572C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C1[];
static VTBL_ENTRY alt_thunk_names78[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C7D0Ev,_ZTv0_n16_N7S7572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N7S7572C7D0Ev,_ZThn4236_N7S7572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C7D1Ev,_ZTv0_n16_N7S7572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N7S7572C7D1Ev,_ZThn4236_N7S7572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7572C4D0Ev,_ZTv0_n28_N7S7572C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N7S7572C4D0Ev,_ZThn660_N7S7572C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7572C4D1Ev,_ZTv0_n28_N7S7572C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N7S7572C4D1Ev,_ZThn660_N7S7572C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7728_N7S7572C4D0Ev,_ZThn4896_N7S7572C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7572C4D0Ev,_ZThn260_N7S7572C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7728_N7S7572C4D1Ev,_ZThn4896_N7S7572C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7572C4D1Ev,_ZThn260_N7S7572C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7572C1D0Ev,_ZTv0_n28_N7S7572C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N7S7572C1D0Ev,_ZThn768_N7S7572C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7572C1D1Ev,_ZTv0_n28_N7S7572C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N7S7572C1D1Ev,_ZThn768_N7S7572C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C1D0Ev,_ZTv0_n16_N7S7572C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7904_N7S7572C1D0Ev,_ZThn5004_N7S7572C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S7572C1D0Ev,_ZThn368_N7S7572C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C1D1Ev,_ZTv0_n16_N7S7572C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7904_N7S7572C1D1Ev,_ZThn5004_N7S7572C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S7572C1D1Ev,_ZThn368_N7S7572C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7572C1 = {  "S7572C1", // class name
  bases_S7572C1, 12,
  &(vtc_S7572C1[0]), // expected_vtbl_contents
  &(vtt_S7572C1[0]), // expected_vtt_contents
  ABISELECT(12192,7732), // object size
  NSPAIRA(_ZTI7S7572C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7572C1),72, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7572C1),30, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names78,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19951C2  {
  __tsi64 s19951c2f0;
  virtual void  v1(); // _ZN8S19951C22v1Ev
  virtual void  v2(); // _ZN8S19951C22v2Ev
  virtual void  v3(); // _ZN8S19951C22v3Ev
  ~S19951C2(); // tgen
  S19951C2(); // tgen
};
//SIG(-1 S19951C2) C1{ v1 v2 v3 FL}


void  S19951C2 ::v1(){vfunc_called(this, "_ZN8S19951C22v1Ev");}
void  S19951C2 ::v2(){vfunc_called(this, "_ZN8S19951C22v2Ev");}
void  S19951C2 ::v3(){vfunc_called(this, "_ZN8S19951C22v3Ev");}
S19951C2 ::~S19951C2(){ note_dtor("S19951C2", this);} // tgen
S19951C2 ::S19951C2(){ note_ctor("S19951C2", this);} // tgen

static void Test_S19951C2()
{
  extern Class_Descriptor cd_S19951C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19951C2, buf);
    S19951C2 *dp, &lv = *(dp=new (buf) S19951C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19951C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19951C2)");
    check_field_offset(lv, s19951c2f0, ABISELECT(8,4), "S19951C2.s19951c2f0");
    test_class_info(&lv, &cd_S19951C2);
    dp->~S19951C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C2(Test_S19951C2, "S19951C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19951C2C1Ev();
extern void _ZN8S19951C2D1Ev();
Name_Map name_map_S19951C2[] = {
  NSPAIR(_ZN8S19951C2C1Ev),
  NSPAIR(_ZN8S19951C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19951C2[];
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
static  VTBL_ENTRY vtc_S19951C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C2[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
};
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
Class_Descriptor cd_S19951C2 = {  "S19951C2", // class name
  0,0,//no base classes
  &(vtc_S19951C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19951C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19951C2),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19951C5  : S19951C2 {
  __tsi64 s19951c5f0;
  virtual void  v4(); // _ZN8S19951C52v4Ev
  virtual void  v5(); // _ZN8S19951C52v5Ev
  virtual void  v6(); // _ZN8S19951C52v6Ev
  virtual void  v7(); // _ZN8S19951C52v7Ev
  virtual void  v8(); // _ZN8S19951C52v8Ev
  ~S19951C5(); // tgen
  S19951C5(); // tgen
};
//SIG(-1 S19951C5) C1{ BC2{ v6 v7 v8 FL} v1 v2 v3 v4 v5 FL}


void  S19951C5 ::v4(){vfunc_called(this, "_ZN8S19951C52v4Ev");}
void  S19951C5 ::v5(){vfunc_called(this, "_ZN8S19951C52v5Ev");}
void  S19951C5 ::v6(){vfunc_called(this, "_ZN8S19951C52v6Ev");}
void  S19951C5 ::v7(){vfunc_called(this, "_ZN8S19951C52v7Ev");}
void  S19951C5 ::v8(){vfunc_called(this, "_ZN8S19951C52v8Ev");}
S19951C5 ::~S19951C5(){ note_dtor("S19951C5", this);} // tgen
S19951C5 ::S19951C5(){ note_ctor("S19951C5", this);} // tgen

static void Test_S19951C5()
{
  extern Class_Descriptor cd_S19951C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S19951C5, buf);
    S19951C5 *dp, &lv = *(dp=new (buf) S19951C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S19951C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19951C5)");
    check_base_class_offset(lv, (S19951C2*), 0, "S19951C5");
    check_field_offset(lv, s19951c5f0, ABISELECT(16,12), "S19951C5.s19951c5f0");
    test_class_info(&lv, &cd_S19951C5);
    dp->~S19951C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C5(Test_S19951C5, "S19951C5", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S19951C5C1Ev();
extern void _ZN8S19951C5D1Ev();
Name_Map name_map_S19951C5[] = {
  NSPAIR(_ZN8S19951C5C1Ev),
  NSPAIR(_ZN8S19951C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
static Base_Class bases_S19951C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19951C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19951C5[];
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
static  VTBL_ENTRY vtc_S19951C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C5[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
};
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
Class_Descriptor cd_S19951C5 = {  "S19951C5", // class name
  bases_S19951C5, 1,
  &(vtc_S19951C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S19951C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19951C5),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19951C6  {
  short s19951c6f0;
  int s19951c6f1;
  virtual void  v9(); // _ZN8S19951C62v9Ev
  virtual void  v10(); // _ZN8S19951C63v10Ev
  virtual void  v11(); // _ZN8S19951C63v11Ev
  ~S19951C6(); // tgen
  S19951C6(); // tgen
};
//SIG(-1 S19951C6) C1{ v1 v2 v3 Fs Fi}


void  S19951C6 ::v9(){vfunc_called(this, "_ZN8S19951C62v9Ev");}
void  S19951C6 ::v10(){vfunc_called(this, "_ZN8S19951C63v10Ev");}
void  S19951C6 ::v11(){vfunc_called(this, "_ZN8S19951C63v11Ev");}
S19951C6 ::~S19951C6(){ note_dtor("S19951C6", this);} // tgen
S19951C6 ::S19951C6(){ note_ctor("S19951C6", this);} // tgen

static void Test_S19951C6()
{
  extern Class_Descriptor cd_S19951C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19951C6, buf);
    S19951C6 *dp, &lv = *(dp=new (buf) S19951C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19951C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19951C6)");
    check_field_offset(lv, s19951c6f0, ABISELECT(8,4), "S19951C6.s19951c6f0");
    check_field_offset(lv, s19951c6f1, ABISELECT(12,8), "S19951C6.s19951c6f1");
    test_class_info(&lv, &cd_S19951C6);
    dp->~S19951C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C6(Test_S19951C6, "S19951C6", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19951C6C1Ev();
extern void _ZN8S19951C6D1Ev();
Name_Map name_map_S19951C6[] = {
  NSPAIR(_ZN8S19951C6C1Ev),
  NSPAIR(_ZN8S19951C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19951C6[];
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
static  VTBL_ENTRY vtc_S19951C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C6[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
};
extern VTBL_ENTRY _ZTI8S19951C6[];
extern  VTBL_ENTRY _ZTV8S19951C6[];
Class_Descriptor cd_S19951C6 = {  "S19951C6", // class name
  0,0,//no base classes
  &(vtc_S19951C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19951C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19951C6),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19951C4  : S19951C2 , S19951C5 , virtual S19951C6 {
  virtual  ~S19951C4(); // _ZN8S19951C4D2Ev
  virtual void  v12(); // _ZN8S19951C43v12Ev
  virtual void  v13(); // _ZN8S19951C43v13Ev
  virtual void  v14(); // _ZN8S19951C43v14Ev
  virtual void  v15(); // _ZN8S19951C43v15Ev
  virtual void  v16(); // _ZN8S19951C43v16Ev
  S19951C4(); // tgen
};
//SIG(-1 S19951C4) C1{ BC2{ v6 v7 v8 FL} BC3{ BC2 v9 v10 v11 v12 v13 FL} VBC4{ v14 v15 v16 Fs Fi} vd v1 v2 v3 v4 v5}


 S19951C4 ::~S19951C4(){ note_dtor("S19951C4", this);}
void  S19951C4 ::v12(){vfunc_called(this, "_ZN8S19951C43v12Ev");}
void  S19951C4 ::v13(){vfunc_called(this, "_ZN8S19951C43v13Ev");}
void  S19951C4 ::v14(){vfunc_called(this, "_ZN8S19951C43v14Ev");}
void  S19951C4 ::v15(){vfunc_called(this, "_ZN8S19951C43v15Ev");}
void  S19951C4 ::v16(){vfunc_called(this, "_ZN8S19951C43v16Ev");}
S19951C4 ::S19951C4(){ note_ctor("S19951C4", this);} // tgen

static void Test_S19951C4()
{
  extern Class_Descriptor cd_S19951C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,12)];
    init_test(&cd_S19951C4, buf);
    S19951C4 *dp, &lv = *(dp=new (buf) S19951C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,44), "sizeof(S19951C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19951C4)");
    /*is_ambiguous_... S19951C4::S19951C2 */ AMB_check_base_class_offset(lv, (S19951C2*), 0, "S19951C4");
    check_base_class_offset(lv, (S19951C2*)(S19951C5*), ABISELECT(16,12), "S19951C4");
    check_base_class_offset(lv, (S19951C5*), ABISELECT(16,12), "S19951C4");
    check_base_class_offset(lv, (S19951C6*), ABISELECT(40,32), "S19951C4");
    test_class_info(&lv, &cd_S19951C4);
    dp->~S19951C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C4(Test_S19951C4, "S19951C4", ABISELECT(56,44));

#else // __cplusplus

extern void _ZN8S19951C4C1Ev();
extern void _ZN8S19951C4D2Ev();
Name_Map name_map_S19951C4[] = {
  NSPAIR(_ZN8S19951C4C1Ev),
  NSPAIR(_ZN8S19951C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
extern Class_Descriptor cd_S19951C6;
extern VTBL_ENTRY _ZTI8S19951C6[];
extern  VTBL_ENTRY _ZTV8S19951C6[];
static Base_Class bases_S19951C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19951C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19951C2,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19951C6,    ABISELECT(40,32), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19951C4[];
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C4D1Ev();
extern void _ZN8S19951C4D0Ev();
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
static  VTBL_ENTRY vtc_S19951C4[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
  0,
  0,
  0,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
};
extern VTBL_ENTRY _ZTV8S19951C4[];
static  VTT_ENTRY vtt_S19951C4[] = {
  {&(_ZTV8S19951C4[3]),  3,31},
  {&(_ZTV8S19951C4[28]),  28,31},
};
extern VTBL_ENTRY _ZTI8S19951C4[];
extern  VTBL_ENTRY _ZTV8S19951C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C4[];
Class_Descriptor cd_S19951C4 = {  "S19951C4", // class name
  bases_S19951C4, 4,
  &(vtc_S19951C4[0]), // expected_vtbl_contents
  &(vtt_S19951C4[0]), // expected_vtt_contents
  ABISELECT(56,44), // object size
  NSPAIRA(_ZTI8S19951C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19951C4),31, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19951C4),2, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19951C7  {
  long double s19951c7f0[5];
  virtual void  v17(); // _ZN8S19951C73v17Ev
  virtual void  v18(); // _ZN8S19951C73v18Ev
  virtual void  v19(); // _ZN8S19951C73v19Ev
  virtual void  v20(); // _ZN8S19951C73v20Ev
  virtual void  v21(); // _ZN8S19951C73v21Ev
  ~S19951C7(); // tgen
  S19951C7(); // tgen
};
//SIG(-1 S19951C7) C1{ v1 v2 v3 v4 v5 FD[5]}


void  S19951C7 ::v17(){vfunc_called(this, "_ZN8S19951C73v17Ev");}
void  S19951C7 ::v18(){vfunc_called(this, "_ZN8S19951C73v18Ev");}
void  S19951C7 ::v19(){vfunc_called(this, "_ZN8S19951C73v19Ev");}
void  S19951C7 ::v20(){vfunc_called(this, "_ZN8S19951C73v20Ev");}
void  S19951C7 ::v21(){vfunc_called(this, "_ZN8S19951C73v21Ev");}
S19951C7 ::~S19951C7(){ note_dtor("S19951C7", this);} // tgen
S19951C7 ::S19951C7(){ note_ctor("S19951C7", this);} // tgen

static void Test_S19951C7()
{
  extern Class_Descriptor cd_S19951C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,17)];
    init_test(&cd_S19951C7, buf);
    S19951C7 *dp, &lv = *(dp=new (buf) S19951C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S19951C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19951C7)");
    check_field_offset(lv, s19951c7f0, ABISELECT(16,4), "S19951C7.s19951c7f0");
    test_class_info(&lv, &cd_S19951C7);
    dp->~S19951C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C7(Test_S19951C7, "S19951C7", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN8S19951C7C1Ev();
extern void _ZN8S19951C7D1Ev();
Name_Map name_map_S19951C7[] = {
  NSPAIR(_ZN8S19951C7C1Ev),
  NSPAIR(_ZN8S19951C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19951C7[];
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
static  VTBL_ENTRY vtc_S19951C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C7[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
};
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
Class_Descriptor cd_S19951C7 = {  "S19951C7", // class name
  0,0,//no base classes
  &(vtc_S19951C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI8S19951C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19951C7),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19951C9  : S19951C2 {
  virtual void  v22(); // _ZN8S19951C93v22Ev
  virtual void  v23(); // _ZN8S19951C93v23Ev
  virtual void  v24(); // _ZN8S19951C93v24Ev
  virtual void  v25(); // _ZN8S19951C93v25Ev
  virtual void  v26(); // _ZN8S19951C93v26Ev
  virtual void  v27(); // _ZN8S19951C93v27Ev
  ~S19951C9(); // tgen
  S19951C9(); // tgen
};
//SIG(-1 S19951C9) C1{ BC2{ v7 v8 v9 FL} v1 v2 v3 v4 v5 v6}


void  S19951C9 ::v22(){vfunc_called(this, "_ZN8S19951C93v22Ev");}
void  S19951C9 ::v23(){vfunc_called(this, "_ZN8S19951C93v23Ev");}
void  S19951C9 ::v24(){vfunc_called(this, "_ZN8S19951C93v24Ev");}
void  S19951C9 ::v25(){vfunc_called(this, "_ZN8S19951C93v25Ev");}
void  S19951C9 ::v26(){vfunc_called(this, "_ZN8S19951C93v26Ev");}
void  S19951C9 ::v27(){vfunc_called(this, "_ZN8S19951C93v27Ev");}
S19951C9 ::~S19951C9(){ note_dtor("S19951C9", this);} // tgen
S19951C9 ::S19951C9(){ note_ctor("S19951C9", this);} // tgen

static void Test_S19951C9()
{
  extern Class_Descriptor cd_S19951C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19951C9, buf);
    S19951C9 *dp, &lv = *(dp=new (buf) S19951C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19951C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19951C9)");
    check_base_class_offset(lv, (S19951C2*), 0, "S19951C9");
    test_class_info(&lv, &cd_S19951C9);
    dp->~S19951C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C9(Test_S19951C9, "S19951C9", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19951C9C1Ev();
extern void _ZN8S19951C9D1Ev();
Name_Map name_map_S19951C9[] = {
  NSPAIR(_ZN8S19951C9C1Ev),
  NSPAIR(_ZN8S19951C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
static Base_Class bases_S19951C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19951C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19951C9[];
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C93v22Ev();
extern void _ZN8S19951C93v23Ev();
extern void _ZN8S19951C93v24Ev();
extern void _ZN8S19951C93v25Ev();
extern void _ZN8S19951C93v26Ev();
extern void _ZN8S19951C93v27Ev();
static  VTBL_ENTRY vtc_S19951C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C9[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v22Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v23Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v24Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v27Ev,
};
extern VTBL_ENTRY _ZTI8S19951C9[];
extern  VTBL_ENTRY _ZTV8S19951C9[];
Class_Descriptor cd_S19951C9 = {  "S19951C9", // class name
  bases_S19951C9, 1,
  &(vtc_S19951C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19951C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19951C9),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19951C8  : S19951C2 , S19951C7 , virtual S19951C9 , virtual S19951C5 {
  virtual void  v28(); // _ZN8S19951C83v28Ev
  virtual void  v29(); // _ZN8S19951C83v29Ev
  ~S19951C8(); // tgen
  S19951C8(); // tgen
};
//SIG(-1 S19951C8) C1{ BC2{ v3 v4 v5 FL} BC3{ v6 v7 v8 v9 v10 FD[5]} VBC4{ BC2 v11 v12 v13 v14 v15 v16} VBC5{ BC2 v17 v18 v19 v20 v21 FL} v1 v2}


void  S19951C8 ::v28(){vfunc_called(this, "_ZN8S19951C83v28Ev");}
void  S19951C8 ::v29(){vfunc_called(this, "_ZN8S19951C83v29Ev");}
S19951C8 ::~S19951C8(){ note_dtor("S19951C8", this);} // tgen
S19951C8 ::S19951C8(){ note_ctor("S19951C8", this);} // tgen

static void Test_S19951C8()
{
  extern Class_Descriptor cd_S19951C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,28)];
    init_test(&cd_S19951C8, buf);
    S19951C8 *dp, &lv = *(dp=new (buf) S19951C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,108), "sizeof(S19951C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19951C8)");
    /*is_ambiguous_... S19951C8::S19951C2 */ AMB_check_base_class_offset(lv, (S19951C2*), 0, "S19951C8");
    check_base_class_offset(lv, (S19951C7*), ABISELECT(16,12), "S19951C8");
    check_base_class_offset(lv, (S19951C2*)(S19951C9*), ABISELECT(112,76), "S19951C8");
    check_base_class_offset(lv, (S19951C9*), ABISELECT(112,76), "S19951C8");
    check_base_class_offset(lv, (S19951C2*)(S19951C5*), ABISELECT(128,88), "S19951C8");
    check_base_class_offset(lv, (S19951C5*), ABISELECT(128,88), "S19951C8");
    test_class_info(&lv, &cd_S19951C8);
    dp->~S19951C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C8(Test_S19951C8, "S19951C8", ABISELECT(160,108));

#else // __cplusplus

extern void _ZN8S19951C8C1Ev();
extern void _ZN8S19951C8D1Ev();
Name_Map name_map_S19951C8[] = {
  NSPAIR(_ZN8S19951C8C1Ev),
  NSPAIR(_ZN8S19951C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C7;
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C9;
extern VTBL_ENTRY _ZTI8S19951C9[];
extern  VTBL_ENTRY _ZTV8S19951C9[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
static Base_Class bases_S19951C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19951C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19951C7,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19951C2,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19951C9,    ABISELECT(112,76), //bcp->offset
    16, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19951C2,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(128,88), //bcp->offset
    36, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19951C8[];
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C83v28Ev();
extern void _ZN8S19951C83v29Ev();
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C93v22Ev();
extern void _ZN8S19951C93v23Ev();
extern void _ZN8S19951C93v24Ev();
extern void _ZN8S19951C93v25Ev();
extern void _ZN8S19951C93v26Ev();
extern void _ZN8S19951C93v27Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
static  VTBL_ENTRY vtc_S19951C8[] = {
  ABISELECT(128,88),
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v29Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v22Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v23Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v24Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v27Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
};
extern VTBL_ENTRY _ZTV8S19951C8[];
static  VTT_ENTRY vtt_S19951C8[] = {
  {&(_ZTV8S19951C8[4]),  4,54},
  {&(_ZTV8S19951C8[27]),  27,54},
  {&(_ZTV8S19951C8[46]),  46,54},
};
extern VTBL_ENTRY _ZTI8S19951C8[];
extern  VTBL_ENTRY _ZTV8S19951C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C8[];
Class_Descriptor cd_S19951C8 = {  "S19951C8", // class name
  bases_S19951C8, 6,
  &(vtc_S19951C8[0]), // expected_vtbl_contents
  &(vtt_S19951C8[0]), // expected_vtt_contents
  ABISELECT(160,108), // object size
  NSPAIRA(_ZTI8S19951C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19951C8),54, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19951C8),3, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19951C3  : S19951C4 , S19951C7 , S19951C8 {
  void *s19951c3f0;
  virtual  ~S19951C3(); // _ZN8S19951C3D2Ev
  virtual void  v30(); // _ZN8S19951C33v30Ev
  virtual void  v31(); // _ZN8S19951C33v31Ev
  virtual void  v32(); // _ZN8S19951C33v32Ev
  virtual void  v33(); // _ZN8S19951C33v33Ev
  virtual void  v34(); // _ZN8S19951C33v34Ev
  virtual void  v35(); // _ZN8S19951C33v35Ev
  S19951C3(); // tgen
};
//SIG(-1 S19951C3) C1{ BC2{ BC3{ v7 v8 v9 FL} BC4{ BC3 v10 v11 v12 v13 v14 FL} VBC5{ v15 v16 v17 Fs Fi} vd v18 v19 v20 v21 v22} BC6{ v23 v24 v25 v26 v27 FD[5]} BC7{ BC3 BC6 VBC8{ BC3 v28 v29 v30 v31 v32 v33} VBC4 v34 v35} vd v1 v2 v3 v4 v5 v6 Fp}


 S19951C3 ::~S19951C3(){ note_dtor("S19951C3", this);}
void  S19951C3 ::v30(){vfunc_called(this, "_ZN8S19951C33v30Ev");}
void  S19951C3 ::v31(){vfunc_called(this, "_ZN8S19951C33v31Ev");}
void  S19951C3 ::v32(){vfunc_called(this, "_ZN8S19951C33v32Ev");}
void  S19951C3 ::v33(){vfunc_called(this, "_ZN8S19951C33v33Ev");}
void  S19951C3 ::v34(){vfunc_called(this, "_ZN8S19951C33v34Ev");}
void  S19951C3 ::v35(){vfunc_called(this, "_ZN8S19951C33v35Ev");}
S19951C3 ::S19951C3(){ note_ctor("S19951C3", this);} // tgen

static void Test_S19951C3()
{
  extern Class_Descriptor cd_S19951C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,56)];
    init_test(&cd_S19951C3, buf);
    S19951C3 *dp, &lv = *(dp=new (buf) S19951C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,220), "sizeof(S19951C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19951C3)");
    /*is_ambiguous_... S19951C4::S19951C2 */ AMB_check_base_class_offset(lv, (S19951C2*)(S19951C4*), 0, "S19951C3");
    check_base_class_offset(lv, (S19951C2*)(S19951C5*)(S19951C4*), ABISELECT(16,12), "S19951C3");
    check_base_class_offset(lv, (S19951C5*)(S19951C4*), ABISELECT(16,12), "S19951C3");
    check_base_class_offset(lv, (S19951C6*)(S19951C4*), ABISELECT(264,176), "S19951C3");
    check_base_class_offset(lv, (S19951C4*), 0, "S19951C3");
    /*is_ambiguous_... S19951C3::S19951C7 */ AMB_check_base_class_offset(lv, (S19951C7*), ABISELECT(48,32), "S19951C3");
    /*is_ambiguous_... S19951C8::S19951C2 */ AMB_check_base_class_offset(lv, (S19951C2*)(S19951C8*), ABISELECT(144,96), "S19951C3");
    check_base_class_offset(lv, (S19951C7*)(S19951C8*), ABISELECT(160,108), "S19951C3");
    check_base_class_offset(lv, (S19951C2*)(S19951C9*), ABISELECT(280,188), "S19951C3");
    check_base_class_offset(lv, (S19951C9*)(S19951C8*), ABISELECT(280,188), "S19951C3");
    /*is_ambiguous_... S19951C3::S19951C5 */ AMB_check_base_class_offset(lv, (S19951C2*)(S19951C5*), ABISELECT(296,200), "S19951C3");
    check_base_class_offset(lv, (S19951C5*)(S19951C8*), ABISELECT(296,200), "S19951C3");
    check_base_class_offset(lv, (S19951C8*), ABISELECT(144,96), "S19951C3");
    check_field_offset(lv, s19951c3f0, ABISELECT(256,172), "S19951C3.s19951c3f0");
    test_class_info(&lv, &cd_S19951C3);
    dp->~S19951C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C3(Test_S19951C3, "S19951C3", ABISELECT(320,220));

#else // __cplusplus

extern void _ZN8S19951C3C1Ev();
extern void _ZN8S19951C3D2Ev();
Name_Map name_map_S19951C3[] = {
  NSPAIR(_ZN8S19951C3C1Ev),
  NSPAIR(_ZN8S19951C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
extern Class_Descriptor cd_S19951C6;
extern VTBL_ENTRY _ZTI8S19951C6[];
extern  VTBL_ENTRY _ZTV8S19951C6[];
extern Class_Descriptor cd_S19951C4;
extern VTBL_ENTRY _ZTI8S19951C4[];
extern  VTBL_ENTRY _ZTV8S19951C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C4[];
extern Class_Descriptor cd_S19951C7;
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C7;
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C9;
extern VTBL_ENTRY _ZTI8S19951C9[];
extern  VTBL_ENTRY _ZTV8S19951C9[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
extern Class_Descriptor cd_S19951C8;
extern VTBL_ENTRY _ZTI8S19951C8[];
extern  VTBL_ENTRY _ZTV8S19951C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C8[];
static Base_Class bases_S19951C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19951C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19951C2,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(16,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19951C6,    ABISELECT(264,176), //bcp->offset
    54, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19951C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19951C7,    ABISELECT(48,32), //bcp->offset
    31, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19951C2,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19951C7,    ABISELECT(160,108), //bcp->offset
    47, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19951C2,    ABISELECT(280,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19951C9,    ABISELECT(280,188), //bcp->offset
    62, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19951C2,    ABISELECT(296,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(296,200), //bcp->offset
    82, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19951C8,    ABISELECT(144,96), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19951C3[];
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C3D1Ev();
extern void _ZN8S19951C3D0Ev();
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
extern void _ZN8S19951C33v30Ev();
extern void _ZN8S19951C33v31Ev();
extern void _ZN8S19951C33v32Ev();
extern void _ZN8S19951C33v33Ev();
extern void _ZN8S19951C33v34Ev();
extern void _ZN8S19951C33v35Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C83v28Ev();
extern void _ZN8S19951C83v29Ev();
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C93v22Ev();
extern void _ZN8S19951C93v23Ev();
extern void _ZN8S19951C93v24Ev();
extern void _ZN8S19951C93v25Ev();
extern void _ZN8S19951C93v26Ev();
extern void _ZN8S19951C93v27Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
static  VTBL_ENTRY vtc_S19951C3[] = {
  ABISELECT(296,200),
  ABISELECT(280,188),
  ABISELECT(264,176),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19951C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v30Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v31Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v32Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v33Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v34Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v35Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  ABISELECT(152,104),
  ABISELECT(136,92),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v29Ev,
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  0,
  0,
  0,
  ABISELECT(-264,-176),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-188),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v22Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v23Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v24Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v27Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
};
extern VTBL_ENTRY _ZTV8S19951C3[];
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C4D1Ev();
extern void _ZN8S19951C4D0Ev();
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C4__8S19951C3[] = {
  ABISELECT(264,176),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
};
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C6__8S19951C4__8S19951C3[] = {
  0,
  0,
  0,
  ABISELECT(-264,-176),
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C83v28Ev();
extern void _ZN8S19951C83v29Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C8__8S19951C3[] = {
  ABISELECT(152,104),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v29Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C93v22Ev();
extern void _ZN8S19951C93v23Ev();
extern void _ZN8S19951C93v24Ev();
extern void _ZN8S19951C93v25Ev();
extern void _ZN8S19951C93v26Ev();
extern void _ZN8S19951C93v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C9__8S19951C8__8S19951C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v22Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v23Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v24Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v27Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C5__8S19951C8__8S19951C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
};
static  VTT_ENTRY vtt_S19951C3[] = {
  {&(_ZTV8S19951C3[5]),  5,100},
  {&(_tg__ZTV8S19951C4__8S19951C3[3]),  3,13},
  {&(_tg__ZTV8S19951C6__8S19951C4__8S19951C3[5]),  5,8},
  {&(_tg__ZTV8S19951C8__8S19951C3[4]),  4,9},
  {&(_tg__ZTV8S19951C9__8S19951C8__8S19951C3[11]),  11,20},
  {&(_tg__ZTV8S19951C5__8S19951C8__8S19951C3[10]),  10,18},
  {&(_ZTV8S19951C3[59]),  59,100},
  {&(_ZTV8S19951C3[42]),  42,100},
  {&(_ZTV8S19951C3[73]),  73,100},
  {&(_ZTV8S19951C3[92]),  92,100},
};
extern VTBL_ENTRY _ZTI8S19951C3[];
extern  VTBL_ENTRY _ZTV8S19951C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C3[];
Class_Descriptor cd_S19951C3 = {  "S19951C3", // class name
  bases_S19951C3, 13,
  &(vtc_S19951C3[0]), // expected_vtbl_contents
  &(vtt_S19951C3[0]), // expected_vtt_contents
  ABISELECT(320,220), // object size
  NSPAIRA(_ZTI8S19951C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19951C3),100, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19951C3),10, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19951C10  : virtual S19951C7 , virtual S19951C4 {
  int s19951c10f0;
  virtual  ~S19951C10(); // _ZN9S19951C10D2Ev
  virtual void  v36(); // _ZN9S19951C103v36Ev
  virtual void  v37(); // _ZN9S19951C103v37Ev
  virtual void  v38(); // _ZN9S19951C103v38Ev
  S19951C10(); // tgen
};
//SIG(-1 S19951C10) C1{ VBC2{ v4 v5 v6 v7 v8 FD[5]} VBC3{ BC4{ v9 v10 v11 FL} BC5{ BC4 v12 v13 v14 v15 v16 FL} VBC6{ v17 v18 v19 Fs Fi} vd v20 v21 v22 v23 v24} vd v1 v2 v3 Fi}


 S19951C10 ::~S19951C10(){ note_dtor("S19951C10", this);}
void  S19951C10 ::v36(){vfunc_called(this, "_ZN9S19951C103v36Ev");}
void  S19951C10 ::v37(){vfunc_called(this, "_ZN9S19951C103v37Ev");}
void  S19951C10 ::v38(){vfunc_called(this, "_ZN9S19951C103v38Ev");}
S19951C10 ::S19951C10(){ note_ctor("S19951C10", this);} // tgen

static void Test_S19951C10()
{
  extern Class_Descriptor cd_S19951C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,30)];
    init_test(&cd_S19951C10, buf);
    S19951C10 *dp, &lv = *(dp=new (buf) S19951C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,116), "sizeof(S19951C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19951C10)");
    check_base_class_offset(lv, (S19951C7*), ABISELECT(16,8), "S19951C10");
    /*is_ambiguous_... S19951C4::S19951C2 */ AMB_check_base_class_offset(lv, (S19951C2*)(S19951C4*), ABISELECT(112,72), "S19951C10");
    check_base_class_offset(lv, (S19951C2*)(S19951C5*)(S19951C4*), ABISELECT(128,84), "S19951C10");
    check_base_class_offset(lv, (S19951C5*)(S19951C4*), ABISELECT(128,84), "S19951C10");
    check_base_class_offset(lv, (S19951C6*)(S19951C4*), ABISELECT(152,104), "S19951C10");
    check_base_class_offset(lv, (S19951C4*), ABISELECT(112,72), "S19951C10");
    check_field_offset(lv, s19951c10f0, ABISELECT(8,4), "S19951C10.s19951c10f0");
    test_class_info(&lv, &cd_S19951C10);
    dp->~S19951C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C10(Test_S19951C10, "S19951C10", ABISELECT(176,116));

#else // __cplusplus

extern void _ZN9S19951C10C1Ev();
extern void _ZN9S19951C10D2Ev();
Name_Map name_map_S19951C10[] = {
  NSPAIR(_ZN9S19951C10C1Ev),
  NSPAIR(_ZN9S19951C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19951C7;
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
extern Class_Descriptor cd_S19951C6;
extern VTBL_ENTRY _ZTI8S19951C6[];
extern  VTBL_ENTRY _ZTV8S19951C6[];
extern Class_Descriptor cd_S19951C4;
extern VTBL_ENTRY _ZTI8S19951C4[];
extern  VTBL_ENTRY _ZTV8S19951C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C4[];
static Base_Class bases_S19951C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19951C7,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19951C2,    ABISELECT(112,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19951C2,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(128,84), //bcp->offset
    49, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19951C6,    ABISELECT(152,104), //bcp->offset
    59, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19951C4,    ABISELECT(112,72), //bcp->offset
    22, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19951C10[];
extern void _ZN9S19951C10D1Ev();
extern void _ZN9S19951C10D0Ev();
extern void _ZN9S19951C103v36Ev();
extern void _ZN9S19951C103v37Ev();
extern void _ZN9S19951C103v38Ev();
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void ABISELECT(_ZTv0_n56_N9S19951C10D1Ev,_ZTv0_n28_N9S19951C10D1Ev)();
extern void ABISELECT(_ZThn112_N9S19951C10D1Ev,_ZThn72_N9S19951C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19951C10D0Ev,_ZTv0_n28_N9S19951C10D0Ev)();
extern void ABISELECT(_ZThn112_N9S19951C10D0Ev,_ZThn72_N9S19951C10D0Ev)() __attribute__((weak));
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
static  VTBL_ENTRY vtc_S19951C10[] = {
  ABISELECT(152,104),
  ABISELECT(112,72),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN9S19951C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19951C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19951C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19951C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19951C103v38Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-72),
  0,
  0,
  0,
  ABISELECT(40,32),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19951C10D1Ev,_ZTv0_n28_N9S19951C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19951C10D0Ev,_ZTv0_n28_N9S19951C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
  0,
  0,
  0,
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
};
extern VTBL_ENTRY _ZTV9S19951C10[];
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C4D1Ev();
extern void _ZN8S19951C4D0Ev();
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C4__9S19951C10[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
};
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C6__8S19951C4__9S19951C10[] = {
  0,
  0,
  0,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
};
static  VTT_ENTRY vtt_S19951C10[] = {
  {&(_ZTV9S19951C10[5]),  5,67},
  {&(_ZTV9S19951C10[17]),  17,67},
  {&(_ZTV9S19951C10[39]),  39,67},
  {&(_ZTV9S19951C10[51]),  51,67},
  {&(_ZTV9S19951C10[64]),  64,67},
  {&(_tg__ZTV8S19951C4__9S19951C10[3]),  3,13},
  {&(_tg__ZTV8S19951C6__8S19951C4__9S19951C10[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19951C10[];
extern  VTBL_ENTRY _ZTV9S19951C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19951C10[];
static VTBL_ENTRY alt_thunk_names79[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19951C10D0Ev,_ZTv0_n28_N9S19951C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19951C10D0Ev,_ZThn72_N9S19951C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19951C10D1Ev,_ZTv0_n28_N9S19951C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19951C10D1Ev,_ZThn72_N9S19951C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19951C10 = {  "S19951C10", // class name
  bases_S19951C10, 6,
  &(vtc_S19951C10[0]), // expected_vtbl_contents
  &(vtt_S19951C10[0]), // expected_vtt_contents
  ABISELECT(176,116), // object size
  NSPAIRA(_ZTI9S19951C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19951C10),67, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19951C10),7, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names79,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19951C12  {
  long double s19951c12f0[6];
  virtual  ~S19951C12(); // _ZN9S19951C12D1Ev
  virtual void  v39(); // _ZN9S19951C123v39Ev
  virtual void  v40(); // _ZN9S19951C123v40Ev
  virtual void  v41(); // _ZN9S19951C123v41Ev
  virtual void  v42(); // _ZN9S19951C123v42Ev
  virtual void  v43(); // _ZN9S19951C123v43Ev
  virtual void  v44(); // _ZN9S19951C123v44Ev
  S19951C12(); // tgen
};
//SIG(-1 S19951C12) C1{ vd v1 v2 v3 v4 v5 v6 FD[6]}


 S19951C12 ::~S19951C12(){ note_dtor("S19951C12", this);}
void  S19951C12 ::v39(){vfunc_called(this, "_ZN9S19951C123v39Ev");}
void  S19951C12 ::v40(){vfunc_called(this, "_ZN9S19951C123v40Ev");}
void  S19951C12 ::v41(){vfunc_called(this, "_ZN9S19951C123v41Ev");}
void  S19951C12 ::v42(){vfunc_called(this, "_ZN9S19951C123v42Ev");}
void  S19951C12 ::v43(){vfunc_called(this, "_ZN9S19951C123v43Ev");}
void  S19951C12 ::v44(){vfunc_called(this, "_ZN9S19951C123v44Ev");}
S19951C12 ::S19951C12(){ note_ctor("S19951C12", this);} // tgen

static void Test_S19951C12()
{
  extern Class_Descriptor cd_S19951C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,20)];
    init_test(&cd_S19951C12, buf);
    S19951C12 *dp, &lv = *(dp=new (buf) S19951C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,76), "sizeof(S19951C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19951C12)");
    check_field_offset(lv, s19951c12f0, ABISELECT(16,4), "S19951C12.s19951c12f0");
    test_class_info(&lv, &cd_S19951C12);
    dp->~S19951C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C12(Test_S19951C12, "S19951C12", ABISELECT(112,76));

#else // __cplusplus

extern void _ZN9S19951C12C1Ev();
extern void _ZN9S19951C12D1Ev();
Name_Map name_map_S19951C12[] = {
  NSPAIR(_ZN9S19951C12C1Ev),
  NSPAIR(_ZN9S19951C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19951C12[];
extern void _ZN9S19951C12D1Ev();
extern void _ZN9S19951C12D0Ev();
extern void _ZN9S19951C123v39Ev();
extern void _ZN9S19951C123v40Ev();
extern void _ZN9S19951C123v41Ev();
extern void _ZN9S19951C123v42Ev();
extern void _ZN9S19951C123v43Ev();
extern void _ZN9S19951C123v44Ev();
static  VTBL_ENTRY vtc_S19951C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19951C12[0]),
  (VTBL_ENTRY)&_ZN9S19951C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19951C12D0Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v39Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v40Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v41Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v42Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v43Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v44Ev,
};
extern VTBL_ENTRY _ZTI9S19951C12[];
extern  VTBL_ENTRY _ZTV9S19951C12[];
Class_Descriptor cd_S19951C12 = {  "S19951C12", // class name
  0,0,//no base classes
  &(vtc_S19951C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,76), // object size
  NSPAIRA(_ZTI9S19951C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19951C12),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19951C13  : S19951C5 {
  int s19951c13f0[2];
  __tsi64 s19951c13f1[8];
  virtual void  v45(); // _ZN9S19951C133v45Ev
  virtual void  v46(); // _ZN9S19951C133v46Ev
  virtual void  v47(); // _ZN9S19951C133v47Ev
  virtual void  v48(); // _ZN9S19951C133v48Ev
  virtual void  v49(); // _ZN9S19951C133v49Ev
  ~S19951C13(); // tgen
  S19951C13(); // tgen
};
//SIG(-1 S19951C13) C1{ BC2{ BC3{ v6 v7 v8 FL} v9 v10 v11 v12 v13 FL} v1 v2 v3 v4 v5 Fi[2] FL[8]}


void  S19951C13 ::v45(){vfunc_called(this, "_ZN9S19951C133v45Ev");}
void  S19951C13 ::v46(){vfunc_called(this, "_ZN9S19951C133v46Ev");}
void  S19951C13 ::v47(){vfunc_called(this, "_ZN9S19951C133v47Ev");}
void  S19951C13 ::v48(){vfunc_called(this, "_ZN9S19951C133v48Ev");}
void  S19951C13 ::v49(){vfunc_called(this, "_ZN9S19951C133v49Ev");}
S19951C13 ::~S19951C13(){ note_dtor("S19951C13", this);} // tgen
S19951C13 ::S19951C13(){ note_ctor("S19951C13", this);} // tgen

static void Test_S19951C13()
{
  extern Class_Descriptor cd_S19951C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,24)];
    init_test(&cd_S19951C13, buf);
    S19951C13 *dp, &lv = *(dp=new (buf) S19951C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,92), "sizeof(S19951C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19951C13)");
    check_base_class_offset(lv, (S19951C2*)(S19951C5*), 0, "S19951C13");
    check_base_class_offset(lv, (S19951C5*), 0, "S19951C13");
    check_field_offset(lv, s19951c13f0, ABISELECT(24,20), "S19951C13.s19951c13f0");
    check_field_offset(lv, s19951c13f1, ABISELECT(32,28), "S19951C13.s19951c13f1");
    test_class_info(&lv, &cd_S19951C13);
    dp->~S19951C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C13(Test_S19951C13, "S19951C13", ABISELECT(96,92));

#else // __cplusplus

extern void _ZN9S19951C13C1Ev();
extern void _ZN9S19951C13D1Ev();
Name_Map name_map_S19951C13[] = {
  NSPAIR(_ZN9S19951C13C1Ev),
  NSPAIR(_ZN9S19951C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
static Base_Class bases_S19951C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19951C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19951C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19951C13[];
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
extern void _ZN9S19951C133v45Ev();
extern void _ZN9S19951C133v46Ev();
extern void _ZN9S19951C133v47Ev();
extern void _ZN9S19951C133v48Ev();
extern void _ZN9S19951C133v49Ev();
static  VTBL_ENTRY vtc_S19951C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19951C13[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v45Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v46Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v47Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v48Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v49Ev,
};
extern VTBL_ENTRY _ZTI9S19951C13[];
extern  VTBL_ENTRY _ZTV9S19951C13[];
Class_Descriptor cd_S19951C13 = {  "S19951C13", // class name
  bases_S19951C13, 2,
  &(vtc_S19951C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,92), // object size
  NSPAIRA(_ZTI9S19951C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19951C13),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19951C11  : virtual S19951C12 , S19951C7 , S19951C13 {
  short s19951c11f0[6];
  int s19951c11f1;
  virtual  ~S19951C11(); // _ZN9S19951C11D2Ev
  virtual void  v50(); // _ZN9S19951C113v50Ev
  virtual void  v51(); // _ZN9S19951C113v51Ev
  virtual void  v52(); // _ZN9S19951C113v52Ev
  virtual void  v53(); // _ZN9S19951C113v53Ev
  virtual void  v54(); // _ZN9S19951C113v54Ev
  virtual void  v55(); // _ZN9S19951C113v55Ev
  virtual void  v56(); // _ZN9S19951C113v56Ev
  virtual void  v57(); // _ZN9S19951C113v57Ev
  S19951C11(); // tgen
};
//SIG(-1 S19951C11) C1{ VBC2{ vd v9 v10 v11 v12 v13 v14 FD[6]} BC3{ v15 v16 v17 v18 v19 FD[5]} BC4{ BC5{ BC6{ v20 v21 v22 FL} v23 v24 v25 v26 v27 FL} v28 v29 v30 v31 v32 Fi[2] FL[8]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fs[6] Fi}


 S19951C11 ::~S19951C11(){ note_dtor("S19951C11", this);}
void  S19951C11 ::v50(){vfunc_called(this, "_ZN9S19951C113v50Ev");}
void  S19951C11 ::v51(){vfunc_called(this, "_ZN9S19951C113v51Ev");}
void  S19951C11 ::v52(){vfunc_called(this, "_ZN9S19951C113v52Ev");}
void  S19951C11 ::v53(){vfunc_called(this, "_ZN9S19951C113v53Ev");}
void  S19951C11 ::v54(){vfunc_called(this, "_ZN9S19951C113v54Ev");}
void  S19951C11 ::v55(){vfunc_called(this, "_ZN9S19951C113v55Ev");}
void  S19951C11 ::v56(){vfunc_called(this, "_ZN9S19951C113v56Ev");}
void  S19951C11 ::v57(){vfunc_called(this, "_ZN9S19951C113v57Ev");}
S19951C11 ::S19951C11(){ note_ctor("S19951C11", this);} // tgen

static void Test_S19951C11()
{
  extern Class_Descriptor cd_S19951C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,63)];
    init_test(&cd_S19951C11, buf);
    S19951C11 *dp, &lv = *(dp=new (buf) S19951C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,248), "sizeof(S19951C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19951C11)");
    check_base_class_offset(lv, (S19951C12*), ABISELECT(208,172), "S19951C11");
    check_base_class_offset(lv, (S19951C7*), 0, "S19951C11");
    check_base_class_offset(lv, (S19951C2*)(S19951C5*)(S19951C13*), ABISELECT(96,64), "S19951C11");
    check_base_class_offset(lv, (S19951C5*)(S19951C13*), ABISELECT(96,64), "S19951C11");
    check_base_class_offset(lv, (S19951C13*), ABISELECT(96,64), "S19951C11");
    check_field_offset(lv, s19951c11f0, ABISELECT(192,156), "S19951C11.s19951c11f0");
    check_field_offset(lv, s19951c11f1, ABISELECT(204,168), "S19951C11.s19951c11f1");
    test_class_info(&lv, &cd_S19951C11);
    dp->~S19951C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C11(Test_S19951C11, "S19951C11", ABISELECT(320,248));

#else // __cplusplus

extern void _ZN9S19951C11C1Ev();
extern void _ZN9S19951C11D2Ev();
Name_Map name_map_S19951C11[] = {
  NSPAIR(_ZN9S19951C11C1Ev),
  NSPAIR(_ZN9S19951C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19951C12;
extern VTBL_ENTRY _ZTI9S19951C12[];
extern  VTBL_ENTRY _ZTV9S19951C12[];
extern Class_Descriptor cd_S19951C7;
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
extern Class_Descriptor cd_S19951C13;
extern VTBL_ENTRY _ZTI9S19951C13[];
extern  VTBL_ENTRY _ZTV9S19951C13[];
static Base_Class bases_S19951C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19951C12,    ABISELECT(208,172), //bcp->offset
    33, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19951C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19951C2,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19951C13,    ABISELECT(96,64), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19951C11[];
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void _ZN9S19951C11D1Ev();
extern void _ZN9S19951C11D0Ev();
extern void _ZN9S19951C113v50Ev();
extern void _ZN9S19951C113v51Ev();
extern void _ZN9S19951C113v52Ev();
extern void _ZN9S19951C113v53Ev();
extern void _ZN9S19951C113v54Ev();
extern void _ZN9S19951C113v55Ev();
extern void _ZN9S19951C113v56Ev();
extern void _ZN9S19951C113v57Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
extern void _ZN9S19951C133v45Ev();
extern void _ZN9S19951C133v46Ev();
extern void _ZN9S19951C133v47Ev();
extern void _ZN9S19951C133v48Ev();
extern void _ZN9S19951C133v49Ev();
extern void ABISELECT(_ZTv0_n24_N9S19951C11D1Ev,_ZTv0_n12_N9S19951C11D1Ev)();
extern void ABISELECT(_ZThn208_N9S19951C11D1Ev,_ZThn172_N9S19951C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19951C11D0Ev,_ZTv0_n12_N9S19951C11D0Ev)();
extern void ABISELECT(_ZThn208_N9S19951C11D0Ev,_ZThn172_N9S19951C11D0Ev)() __attribute__((weak));
extern void _ZN9S19951C123v39Ev();
extern void _ZN9S19951C123v40Ev();
extern void _ZN9S19951C123v41Ev();
extern void _ZN9S19951C123v42Ev();
extern void _ZN9S19951C123v43Ev();
extern void _ZN9S19951C123v44Ev();
static  VTBL_ENTRY vtc_S19951C11[] = {
  ABISELECT(208,172),
  0,
  (VTBL_ENTRY)&(_ZTI9S19951C11[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  (VTBL_ENTRY)&_ZN9S19951C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19951C11D0Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v50Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v51Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v52Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v53Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v54Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v55Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v56Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v57Ev,
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S19951C11[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v45Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v46Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v47Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v48Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v49Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-172),
  ABISELECT(-208,-172),
  (VTBL_ENTRY)&(_ZTI9S19951C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19951C11D1Ev,_ZTv0_n12_N9S19951C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19951C11D0Ev,_ZTv0_n12_N9S19951C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19951C123v39Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v40Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v41Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v42Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v43Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v44Ev,
};
extern VTBL_ENTRY _ZTV9S19951C11[];
static  VTT_ENTRY vtt_S19951C11[] = {
  {&(_ZTV9S19951C11[3]),  3,50},
  {&(_ZTV9S19951C11[42]),  42,50},
};
extern VTBL_ENTRY _ZTI9S19951C11[];
extern  VTBL_ENTRY _ZTV9S19951C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19951C11[];
static VTBL_ENTRY alt_thunk_names80[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19951C11D0Ev,_ZTv0_n12_N9S19951C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19951C11D0Ev,_ZThn172_N9S19951C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19951C11D1Ev,_ZTv0_n12_N9S19951C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19951C11D1Ev,_ZThn172_N9S19951C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19951C11 = {  "S19951C11", // class name
  bases_S19951C11, 5,
  &(vtc_S19951C11[0]), // expected_vtbl_contents
  &(vtt_S19951C11[0]), // expected_vtt_contents
  ABISELECT(320,248), // object size
  NSPAIRA(_ZTI9S19951C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19951C11),50, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19951C11),2, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names80,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19951C1  : virtual S19951C2 , virtual S19951C3 , S19951C10 , virtual S19951C11 {
  int s19951c1f0;
  ~S19951C1(); // tgen
  S19951C1(); // tgen
};
//SIG(1 S19951C1) C1{ VBC2{ v1 v2 v3 FL} VBC3{ BC4{ BC2 BC5{ BC2 v4 v5 v6 v7 v8 FL} VBC6{ v9 v10 v11 Fs Fi} vd v12 v13 v14 v15 v16} BC7{ v17 v18 v19 v20 v21 FD[5]} BC8{ BC2 BC7 VBC9{ BC2 v22 v23 v24 v25 v26 v27} VBC5 v28 v29} vd v30 v31 v32 v33 v34 v35 Fp} BC10{ VBC7 VBC4 vd v36 v37 v38 Fi} VBC11{ VBC12{ vd v39 v40 v41 v42 v43 v44 FD[6]} BC7 BC13{ BC5 v45 v46 v47 v48 v49 Fi[2] FL[8]} vd v50 v51 v52 v53 v54 v55 v56 v57 Fs[6] Fi} Fi}


S19951C1 ::~S19951C1(){ note_dtor("S19951C1", this);} // tgen
S19951C1 ::S19951C1(){ note_ctor("S19951C1", this);} // tgen

static void Test_S19951C1()
{
  extern Class_Descriptor cd_S19951C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(52,148)];
    init_test(&cd_S19951C1, buf);
    S19951C1 *dp, &lv = *(dp=new (buf) S19951C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(816,588), "sizeof(S19951C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19951C1)");
    /*is_ambiguous_... S19951C1::S19951C2 */ AMB_check_base_class_offset(lv, (S19951C2*), ABISELECT(16,12), "S19951C1");
    /*is_ambiguous_... S19951C4::S19951C2 */ AMB_check_base_class_offset(lv, (S19951C2*)(S19951C4*)(S19951C3*), ABISELECT(32,24), "S19951C1");
    check_base_class_offset(lv, (S19951C2*)(S19951C5*)(S19951C4*)(S19951C3*), ABISELECT(48,36), "S19951C1");
    check_base_class_offset(lv, (S19951C5*)(S19951C4*)(S19951C3*), ABISELECT(48,36), "S19951C1");
    check_base_class_offset(lv, (S19951C6*)(S19951C4*)(S19951C3*), ABISELECT(296,200), "S19951C1");
    /*is_ambiguous_... S19951C1::S19951C4 */ AMB_check_base_class_offset(lv, (S19951C6*)(S19951C4*), ABISELECT(296,200), "S19951C1");
    check_base_class_offset(lv, (S19951C4*)(S19951C3*), ABISELECT(32,24), "S19951C1");
    /*is_ambiguous_... S19951C3::S19951C7 */ AMB_check_base_class_offset(lv, (S19951C7*)(S19951C3*), ABISELECT(80,56), "S19951C1");
    /*is_ambiguous_... S19951C8::S19951C2 */ AMB_check_base_class_offset(lv, (S19951C2*)(S19951C8*)(S19951C3*), ABISELECT(176,120), "S19951C1");
    check_base_class_offset(lv, (S19951C7*)(S19951C8*)(S19951C3*), ABISELECT(192,132), "S19951C1");
    check_base_class_offset(lv, (S19951C2*)(S19951C9*), ABISELECT(312,212), "S19951C1");
    check_base_class_offset(lv, (S19951C9*)(S19951C8*)(S19951C3*), ABISELECT(312,212), "S19951C1");
    /*is_ambiguous_... S19951C1::S19951C5 */ AMB_check_base_class_offset(lv, (S19951C2*)(S19951C5*), ABISELECT(328,224), "S19951C1");
    check_base_class_offset(lv, (S19951C5*)(S19951C8*)(S19951C3*), ABISELECT(328,224), "S19951C1");
    check_base_class_offset(lv, (S19951C8*)(S19951C3*), ABISELECT(176,120), "S19951C1");
    check_base_class_offset(lv, (S19951C3*), ABISELECT(32,24), "S19951C1");
    check_base_class_offset(lv, (S19951C7*)(S19951C10*), ABISELECT(352,244), "S19951C1");
    /*is_ambiguous_... S19951C1::S19951C4 */ AMB_check_base_class_offset(lv, (S19951C2*)(S19951C4*), ABISELECT(448,308), "S19951C1");
    /*is_ambiguous_... S19951C1::S19951C4 */ AMB_check_base_class_offset(lv, (S19951C2*)(S19951C5*)(S19951C4*), ABISELECT(464,320), "S19951C1");
    /*is_ambiguous_... S19951C1::S19951C4 */ AMB_check_base_class_offset(lv, (S19951C5*)(S19951C4*), ABISELECT(464,320), "S19951C1");
    check_base_class_offset(lv, (S19951C4*)(S19951C10*), ABISELECT(448,308), "S19951C1");
    check_base_class_offset(lv, (S19951C10*), 0, "S19951C1");
    check_base_class_offset(lv, (S19951C12*)(S19951C11*), ABISELECT(704,512), "S19951C1");
    check_base_class_offset(lv, (S19951C7*)(S19951C11*), ABISELECT(496,340), "S19951C1");
    check_base_class_offset(lv, (S19951C2*)(S19951C5*)(S19951C13*)(S19951C11*), ABISELECT(592,404), "S19951C1");
    check_base_class_offset(lv, (S19951C5*)(S19951C13*)(S19951C11*), ABISELECT(592,404), "S19951C1");
    check_base_class_offset(lv, (S19951C13*)(S19951C11*), ABISELECT(592,404), "S19951C1");
    check_base_class_offset(lv, (S19951C11*), ABISELECT(496,340), "S19951C1");
    check_field_offset(lv, s19951c1f0, ABISELECT(12,8), "S19951C1.s19951c1f0");
    test_class_info(&lv, &cd_S19951C1);
    dp->~S19951C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C1(Test_S19951C1, "S19951C1", ABISELECT(816,588));

#else // __cplusplus

extern void _ZN8S19951C1C1Ev();
extern void _ZN8S19951C1D1Ev();
Name_Map name_map_S19951C1[] = {
  NSPAIR(_ZN8S19951C1C1Ev),
  NSPAIR(_ZN8S19951C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
extern Class_Descriptor cd_S19951C6;
extern VTBL_ENTRY _ZTI8S19951C6[];
extern  VTBL_ENTRY _ZTV8S19951C6[];
extern Class_Descriptor cd_S19951C4;
extern VTBL_ENTRY _ZTI8S19951C4[];
extern  VTBL_ENTRY _ZTV8S19951C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C4[];
extern Class_Descriptor cd_S19951C7;
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C7;
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C9;
extern VTBL_ENTRY _ZTI8S19951C9[];
extern  VTBL_ENTRY _ZTV8S19951C9[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
extern Class_Descriptor cd_S19951C8;
extern VTBL_ENTRY _ZTI8S19951C8[];
extern  VTBL_ENTRY _ZTV8S19951C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C8[];
extern Class_Descriptor cd_S19951C3;
extern VTBL_ENTRY _ZTI8S19951C3[];
extern  VTBL_ENTRY _ZTV8S19951C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C3[];
extern Class_Descriptor cd_S19951C7;
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
extern Class_Descriptor cd_S19951C4;
extern VTBL_ENTRY _ZTI8S19951C4[];
extern  VTBL_ENTRY _ZTV8S19951C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C4[];
extern Class_Descriptor cd_S19951C10;
extern VTBL_ENTRY _ZTI9S19951C10[];
extern  VTBL_ENTRY _ZTV9S19951C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19951C10[];
extern Class_Descriptor cd_S19951C12;
extern VTBL_ENTRY _ZTI9S19951C12[];
extern  VTBL_ENTRY _ZTV9S19951C12[];
extern Class_Descriptor cd_S19951C7;
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
extern Class_Descriptor cd_S19951C13;
extern VTBL_ENTRY _ZTI9S19951C13[];
extern  VTBL_ENTRY _ZTV9S19951C13[];
extern Class_Descriptor cd_S19951C11;
extern VTBL_ENTRY _ZTI9S19951C11[];
extern  VTBL_ENTRY _ZTV9S19951C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19951C11[];
static Base_Class bases_S19951C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19951C2,    ABISELECT(16,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19951C2,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19951C2,    ABISELECT(48,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(48,36), //bcp->offset
    72, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19951C6,    ABISELECT(296,200), //bcp->offset
    105, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19951C4,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19951C7,    ABISELECT(80,56), //bcp->offset
    82, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19951C2,    ABISELECT(176,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19951C7,    ABISELECT(192,132), //bcp->offset
    98, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19951C2,    ABISELECT(312,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19951C9,    ABISELECT(312,212), //bcp->offset
    113, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19951C2,    ABISELECT(328,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(328,224), //bcp->offset
    133, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19951C8,    ABISELECT(176,120), //bcp->offset
    89, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19951C3,    ABISELECT(32,24), //bcp->offset
    24, //bcp->virtual_function_table_offset
    32, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19951C7,    ABISELECT(352,244), //bcp->offset
    151, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19951C2,    ABISELECT(448,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19951C2,    ABISELECT(464,320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(464,320), //bcp->offset
    190, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19951C4,    ABISELECT(448,308), //bcp->offset
    163, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19951C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19951C12,    ABISELECT(704,512), //bcp->offset
    260, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S19951C7,    ABISELECT(496,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19951C2,    ABISELECT(592,404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(592,404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19951C13,    ABISELECT(592,404), //bcp->offset
    245, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19951C11,    ABISELECT(496,340), //bcp->offset
    200, //bcp->virtual_function_table_offset
    30, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19951C1[];
extern void _ZN8S19951C1D1Ev();
extern void _ZN8S19951C1D0Ev();
extern void _ZN9S19951C103v36Ev();
extern void _ZN9S19951C103v37Ev();
extern void _ZN9S19951C103v38Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void ABISELECT(_ZTv0_n72_N8S19951C1D1Ev,_ZTv0_n36_N8S19951C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19951C1D1Ev,_ZThn24_N8S19951C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19951C1D0Ev,_ZTv0_n36_N8S19951C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S19951C1D0Ev,_ZThn24_N8S19951C1D0Ev)() __attribute__((weak));
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
extern void _ZN8S19951C33v30Ev();
extern void _ZN8S19951C33v31Ev();
extern void _ZN8S19951C33v32Ev();
extern void _ZN8S19951C33v33Ev();
extern void _ZN8S19951C33v34Ev();
extern void _ZN8S19951C33v35Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C83v28Ev();
extern void _ZN8S19951C83v29Ev();
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C93v22Ev();
extern void _ZN8S19951C93v23Ev();
extern void _ZN8S19951C93v24Ev();
extern void _ZN8S19951C93v25Ev();
extern void _ZN8S19951C93v26Ev();
extern void _ZN8S19951C93v27Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void ABISELECT(_ZTv0_n56_N8S19951C1D1Ev,_ZTv0_n28_N8S19951C1D1Ev)();
extern void ABISELECT(_ZThn448_N8S19951C1D1Ev,_ZThn308_N8S19951C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19951C1D0Ev,_ZTv0_n28_N8S19951C1D0Ev)();
extern void ABISELECT(_ZThn448_N8S19951C1D0Ev,_ZThn308_N8S19951C1D0Ev)() __attribute__((weak));
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void ABISELECT(_ZTv0_n72_N8S19951C1D1Ev,_ZTv0_n36_N8S19951C1D1Ev)();
extern void ABISELECT(_ZThn496_N8S19951C1D1Ev,_ZThn340_N8S19951C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19951C1D0Ev,_ZTv0_n36_N8S19951C1D0Ev)();
extern void ABISELECT(_ZThn496_N8S19951C1D0Ev,_ZThn340_N8S19951C1D0Ev)() __attribute__((weak));
extern void _ZN9S19951C113v50Ev();
extern void _ZN9S19951C113v51Ev();
extern void _ZN9S19951C113v52Ev();
extern void _ZN9S19951C113v53Ev();
extern void _ZN9S19951C113v54Ev();
extern void _ZN9S19951C113v55Ev();
extern void _ZN9S19951C113v56Ev();
extern void _ZN9S19951C113v57Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
extern void _ZN9S19951C133v45Ev();
extern void _ZN9S19951C133v46Ev();
extern void _ZN9S19951C133v47Ev();
extern void _ZN9S19951C133v48Ev();
extern void _ZN9S19951C133v49Ev();
extern void ABISELECT(_ZTv0_n24_N8S19951C1D1Ev,_ZTv0_n12_N8S19951C1D1Ev)();
extern void ABISELECT(_ZThn704_N8S19951C1D1Ev,_ZThn512_N8S19951C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19951C1D0Ev,_ZTv0_n12_N8S19951C1D0Ev)();
extern void ABISELECT(_ZThn704_N8S19951C1D0Ev,_ZThn512_N8S19951C1D0Ev)() __attribute__((weak));
extern void _ZN9S19951C123v39Ev();
extern void _ZN9S19951C123v40Ev();
extern void _ZN9S19951C123v41Ev();
extern void _ZN9S19951C123v42Ev();
extern void _ZN9S19951C123v43Ev();
extern void _ZN9S19951C123v44Ev();
static  VTBL_ENTRY vtc_S19951C1[] = {
  ABISELECT(704,512),
  ABISELECT(496,340),
  ABISELECT(328,224),
  ABISELECT(312,212),
  ABISELECT(32,24),
  ABISELECT(16,12),
  ABISELECT(296,200),
  ABISELECT(448,308),
  ABISELECT(352,244),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19951C1D0Ev,
  (VTBL_ENTRY)&_ZN9S19951C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19951C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19951C103v38Ev,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  ABISELECT(144,96),
  ABISELECT(144,96),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-24),
  0,
  0,
  0,
  ABISELECT(296,200),
  ABISELECT(280,188),
  ABISELECT(264,176),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19951C1D1Ev,_ZTv0_n36_N8S19951C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19951C1D0Ev,_ZTv0_n36_N8S19951C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v30Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v31Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v32Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v33Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v34Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v35Ev,
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  ABISELECT(152,104),
  ABISELECT(136,92),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v29Ev,
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  0,
  0,
  0,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-212),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v22Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v23Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v24Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v27Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-224),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-244),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-448,-308),
  0,
  0,
  0,
  ABISELECT(-152,-108),
  ABISELECT(-448,-308),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19951C1D1Ev,_ZTv0_n28_N8S19951C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19951C1D0Ev,_ZTv0_n28_N8S19951C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
  ABISELECT(-464,-320),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-496,-340),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(208,172),
  ABISELECT(-496,-340),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19951C1D1Ev,_ZTv0_n36_N8S19951C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19951C1D0Ev,_ZTv0_n36_N8S19951C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19951C113v50Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v51Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v52Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v53Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v54Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v55Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v56Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v57Ev,
  ABISELECT(-592,-404),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v45Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v46Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v47Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v48Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v49Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-512),
  ABISELECT(-704,-512),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19951C1D1Ev,_ZTv0_n12_N8S19951C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19951C1D0Ev,_ZTv0_n12_N8S19951C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19951C123v39Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v40Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v41Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v42Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v43Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v44Ev,
};
extern VTBL_ENTRY _ZTV8S19951C1[];
extern void _ZN9S19951C10D1Ev();
extern void _ZN9S19951C10D0Ev();
extern void _ZN9S19951C103v36Ev();
extern void _ZN9S19951C103v37Ev();
extern void _ZN9S19951C103v38Ev();
static  VTBL_ENTRY _tg__ZTV9S19951C10__8S19951C1[] = {
  ABISELECT(296,200),
  ABISELECT(448,308),
  ABISELECT(352,244),
  0,
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN9S19951C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19951C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19951C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19951C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19951C103v38Ev,
};
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C7__9S19951C10__8S19951C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-244),
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void ABISELECT(_ZTv0_n56_N9S19951C10D1Ev,_ZTv0_n28_N9S19951C10D1Ev)();
extern void ABISELECT(_ZThn448_N9S19951C10D1Ev,_ZThn308_N9S19951C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19951C10D0Ev,_ZTv0_n28_N9S19951C10D0Ev)();
extern void ABISELECT(_ZThn448_N9S19951C10D0Ev,_ZThn308_N9S19951C10D0Ev)() __attribute__((weak));
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C4__9S19951C10__8S19951C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-448,-308),
  0,
  0,
  0,
  ABISELECT(-152,-108),
  ABISELECT(-448,-308),
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19951C10D1Ev,_ZTv0_n28_N9S19951C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19951C10D0Ev,_ZTv0_n28_N9S19951C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C58S19951C4__9S19951C10__8S19951C1[] = {
  ABISELECT(-464,-320),
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
};
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C6__9S19951C10__8S19951C1[] = {
  0,
  0,
  0,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C3D1Ev();
extern void _ZN8S19951C3D0Ev();
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
extern void _ZN8S19951C33v30Ev();
extern void _ZN8S19951C33v31Ev();
extern void _ZN8S19951C33v32Ev();
extern void _ZN8S19951C33v33Ev();
extern void _ZN8S19951C33v34Ev();
extern void _ZN8S19951C33v35Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C3__8S19951C1[] = {
  ABISELECT(296,200),
  ABISELECT(280,188),
  ABISELECT(264,176),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19951C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v30Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v31Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v32Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v33Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v34Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v35Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C4D1Ev();
extern void _ZN8S19951C4D0Ev();
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C48S19951C3__8S19951C1[] = {
  ABISELECT(264,176),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
};
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C6__8S19951C48S19951C3__8S19951C1[] = {
  0,
  0,
  0,
  ABISELECT(-264,-176),
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C83v28Ev();
extern void _ZN8S19951C83v29Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C88S19951C3__8S19951C1[] = {
  ABISELECT(152,104),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v29Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C93v22Ev();
extern void _ZN8S19951C93v23Ev();
extern void _ZN8S19951C93v24Ev();
extern void _ZN8S19951C93v25Ev();
extern void _ZN8S19951C93v26Ev();
extern void _ZN8S19951C93v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C9__8S19951C88S19951C3__8S19951C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v22Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v23Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v24Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v27Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C5__8S19951C88S19951C3__8S19951C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
};
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C6__8S19951C3__8S19951C1[] = {
  0,
  0,
  0,
  ABISELECT(-264,-176),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C83v28Ev();
extern void _ZN8S19951C83v29Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C8__8S19951C3__8S19951C1[] = {
  ABISELECT(152,104),
  ABISELECT(136,92),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v29Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C93v22Ev();
extern void _ZN8S19951C93v23Ev();
extern void _ZN8S19951C93v24Ev();
extern void _ZN8S19951C93v25Ev();
extern void _ZN8S19951C93v26Ev();
extern void _ZN8S19951C93v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C9__8S19951C3__8S19951C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-188),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v22Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v23Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v24Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v27Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C5__A1__8S19951C3__8S19951C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C4D1Ev();
extern void _ZN8S19951C4D0Ev();
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C4__A1__8S19951C1[] = {
  ABISELECT(-152,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
};
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C6__8S19951C4__A1__8S19951C1[] = {
  0,
  0,
  0,
  ABISELECT(152,108),
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
};
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void _ZN9S19951C11D1Ev();
extern void _ZN9S19951C11D0Ev();
extern void _ZN9S19951C113v50Ev();
extern void _ZN9S19951C113v51Ev();
extern void _ZN9S19951C113v52Ev();
extern void _ZN9S19951C113v53Ev();
extern void _ZN9S19951C113v54Ev();
extern void _ZN9S19951C113v55Ev();
extern void _ZN9S19951C113v56Ev();
extern void _ZN9S19951C113v57Ev();
static  VTBL_ENTRY _tg__ZTV9S19951C11__8S19951C1[] = {
  ABISELECT(208,172),
  0,
  (VTBL_ENTRY)&(_ZTI9S19951C11[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  (VTBL_ENTRY)&_ZN9S19951C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19951C11D0Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v50Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v51Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v52Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v53Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v54Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v55Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v56Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v57Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19951C11D1Ev,_ZTv0_n12_N9S19951C11D1Ev)();
extern void ABISELECT(_ZThn208_N9S19951C11D1Ev,_ZThn172_N9S19951C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19951C11D0Ev,_ZTv0_n12_N9S19951C11D0Ev)();
extern void ABISELECT(_ZThn208_N9S19951C11D0Ev,_ZThn172_N9S19951C11D0Ev)() __attribute__((weak));
extern void _ZN9S19951C123v39Ev();
extern void _ZN9S19951C123v40Ev();
extern void _ZN9S19951C123v41Ev();
extern void _ZN9S19951C123v42Ev();
extern void _ZN9S19951C123v43Ev();
extern void _ZN9S19951C123v44Ev();
static  VTBL_ENTRY _tg__ZTV9S19951C12__9S19951C11__8S19951C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-172),
  ABISELECT(-208,-172),
  (VTBL_ENTRY)&(_ZTI9S19951C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19951C11D1Ev,_ZTv0_n12_N9S19951C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19951C11D0Ev,_ZTv0_n12_N9S19951C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19951C123v39Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v40Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v41Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v42Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v43Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v44Ev,
};
static  VTT_ENTRY vtt_S19951C1[] = {
  {&(_ZTV8S19951C1[11]),  11,277},
  {&(_tg__ZTV9S19951C10__8S19951C1[5]),  5,10},
  {&(_tg__ZTV8S19951C7__9S19951C10__8S19951C1[7]),  7,12},
  {&(_tg__ZTV8S19951C4__9S19951C10__8S19951C1[17]),  17,27},
  {&(_tg__ZTV8S19951C58S19951C4__9S19951C10__8S19951C1[2]),  2,10},
  {&(_tg__ZTV8S19951C6__9S19951C10__8S19951C1[5]),  5,8},
  {&(_ZTV8S19951C1[21]),  21,277},
  {&(_ZTV8S19951C1[56]),  56,277},
  {&(_ZTV8S19951C1[74]),  74,277},
  {&(_ZTV8S19951C1[110]),  110,277},
  {&(_ZTV8S19951C1[84]),  84,277},
  {&(_ZTV8S19951C1[93]),  93,277},
  {&(_ZTV8S19951C1[100]),  100,277},
  {&(_ZTV8S19951C1[124]),  124,277},
  {&(_ZTV8S19951C1[143]),  143,277},
  {&(_ZTV8S19951C1[158]),  158,277},
  {&(_ZTV8S19951C1[180]),  180,277},
  {&(_ZTV8S19951C1[192]),  192,277},
  {&(_ZTV8S19951C1[230]),  230,277},
  {&(_ZTV8S19951C1[269]),  269,277},
  {&(_ZTV8S19951C1[247]),  247,277},
  {&(_tg__ZTV8S19951C3__8S19951C1[5]),  5,21},
  {&(_tg__ZTV8S19951C48S19951C3__8S19951C1[3]),  3,13},
  {&(_tg__ZTV8S19951C6__8S19951C48S19951C3__8S19951C1[5]),  5,8},
  {&(_tg__ZTV8S19951C88S19951C3__8S19951C1[4]),  4,9},
  {&(_tg__ZTV8S19951C9__8S19951C88S19951C3__8S19951C1[11]),  11,20},
  {&(_tg__ZTV8S19951C5__8S19951C88S19951C3__8S19951C1[10]),  10,18},
  {&(_tg__ZTV8S19951C6__8S19951C3__8S19951C1[5]),  5,8},
  {&(_tg__ZTV8S19951C8__8S19951C3__8S19951C1[4]),  4,9},
  {&(_tg__ZTV8S19951C9__8S19951C3__8S19951C1[11]),  11,20},
  {&(_tg__ZTV8S19951C5__A1__8S19951C3__8S19951C1[10]),  10,18},
  {&(_tg__ZTV8S19951C4__A1__8S19951C1[3]),  3,13},
  {&(_tg__ZTV8S19951C6__8S19951C4__A1__8S19951C1[5]),  5,8},
  {&(_tg__ZTV9S19951C11__8S19951C1[3]),  3,18},
  {&(_tg__ZTV9S19951C12__9S19951C11__8S19951C1[9]),  9,17},
};
extern VTBL_ENTRY _ZTI8S19951C1[];
extern  VTBL_ENTRY _ZTV8S19951C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C1[];
static VTBL_ENTRY alt_thunk_names81[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19951C11D0Ev,_ZTv0_n12_N9S19951C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19951C11D0Ev,_ZThn172_N9S19951C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19951C11D1Ev,_ZTv0_n12_N9S19951C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19951C11D1Ev,_ZThn172_N9S19951C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19951C10D0Ev,_ZTv0_n28_N9S19951C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S19951C10D0Ev,_ZThn308_N9S19951C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19951C10D1Ev,_ZTv0_n28_N9S19951C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S19951C10D1Ev,_ZThn308_N9S19951C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19951C1D0Ev,_ZTv0_n12_N8S19951C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N8S19951C1D0Ev,_ZThn512_N8S19951C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19951C1D1Ev,_ZTv0_n12_N8S19951C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N8S19951C1D1Ev,_ZThn512_N8S19951C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19951C1D0Ev,_ZTv0_n28_N8S19951C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S19951C1D0Ev,_ZThn308_N8S19951C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19951C1D1Ev,_ZTv0_n28_N8S19951C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S19951C1D1Ev,_ZThn308_N8S19951C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19951C1D0Ev,_ZTv0_n36_N8S19951C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19951C1D0Ev,_ZThn340_N8S19951C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19951C1D0Ev,_ZThn24_N8S19951C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19951C1D1Ev,_ZTv0_n36_N8S19951C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19951C1D1Ev,_ZThn340_N8S19951C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19951C1D1Ev,_ZThn24_N8S19951C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19951C1 = {  "S19951C1", // class name
  bases_S19951C1, 27,
  &(vtc_S19951C1[0]), // expected_vtbl_contents
  &(vtt_S19951C1[0]), // expected_vtt_contents
  ABISELECT(816,588), // object size
  NSPAIRA(_ZTI8S19951C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19951C1),277, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19951C1),35, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names81,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4161C3_nt  {
  virtual  ~S4161C3_nt(); // _ZN10S4161C3_ntD1Ev
  virtual void  v1(); // _ZN10S4161C3_nt2v1Ev
  virtual void  v2(); // _ZN10S4161C3_nt2v2Ev
  virtual void  v3(); // _ZN10S4161C3_nt2v3Ev
  virtual void  v4(); // _ZN10S4161C3_nt2v4Ev
  virtual void  v5(); // _ZN10S4161C3_nt2v5Ev
  virtual void  v6(); // _ZN10S4161C3_nt2v6Ev
  virtual void  v7(); // _ZN10S4161C3_nt2v7Ev
  virtual void  v8(); // _ZN10S4161C3_nt2v8Ev
  virtual void  v9(); // _ZN10S4161C3_nt2v9Ev
  virtual void  v10(); // _ZN10S4161C3_nt3v10Ev
  virtual void  v11(); // _ZN10S4161C3_nt3v11Ev
  virtual void  v12(); // _ZN10S4161C3_nt3v12Ev
  virtual void  v13(); // _ZN10S4161C3_nt3v13Ev
  virtual void  v14(); // _ZN10S4161C3_nt3v14Ev
  virtual void  v15(); // _ZN10S4161C3_nt3v15Ev
  virtual void  v16(); // _ZN10S4161C3_nt3v16Ev
  virtual void  v17(); // _ZN10S4161C3_nt3v17Ev
  virtual void  v18(); // _ZN10S4161C3_nt3v18Ev
  virtual void  v19(); // _ZN10S4161C3_nt3v19Ev
  virtual void  v20(); // _ZN10S4161C3_nt3v20Ev
  virtual void  v21(); // _ZN10S4161C3_nt3v21Ev
  virtual void  v22(); // _ZN10S4161C3_nt3v22Ev
  virtual void  v23(); // _ZN10S4161C3_nt3v23Ev
  virtual void  v24(); // _ZN10S4161C3_nt3v24Ev
  virtual void  v25(); // _ZN10S4161C3_nt3v25Ev
  virtual void  v26(); // _ZN10S4161C3_nt3v26Ev
  virtual void  v27(); // _ZN10S4161C3_nt3v27Ev
  virtual void  v28(); // _ZN10S4161C3_nt3v28Ev
  virtual void  v29(); // _ZN10S4161C3_nt3v29Ev
  virtual void  v30(); // _ZN10S4161C3_nt3v30Ev
  virtual void  v31(); // _ZN10S4161C3_nt3v31Ev
  virtual void  v32(); // _ZN10S4161C3_nt3v32Ev
  virtual void  v33(); // _ZN10S4161C3_nt3v33Ev
  virtual void  v34(); // _ZN10S4161C3_nt3v34Ev
  virtual void  v35(); // _ZN10S4161C3_nt3v35Ev
  virtual void  v36(); // _ZN10S4161C3_nt3v36Ev
  virtual void  v37(); // _ZN10S4161C3_nt3v37Ev
  virtual void  v38(); // _ZN10S4161C3_nt3v38Ev
  virtual void  v39(); // _ZN10S4161C3_nt3v39Ev
  virtual void  v40(); // _ZN10S4161C3_nt3v40Ev
  virtual void  v41(); // _ZN10S4161C3_nt3v41Ev
  virtual void  v42(); // _ZN10S4161C3_nt3v42Ev
  S4161C3_nt(); // tgen
};
//SIG(-1 S4161C3_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42}


 S4161C3_nt ::~S4161C3_nt(){ note_dtor("S4161C3_nt", this);}
void  S4161C3_nt ::v1(){vfunc_called(this, "_ZN10S4161C3_nt2v1Ev");}
void  S4161C3_nt ::v2(){vfunc_called(this, "_ZN10S4161C3_nt2v2Ev");}
void  S4161C3_nt ::v3(){vfunc_called(this, "_ZN10S4161C3_nt2v3Ev");}
void  S4161C3_nt ::v4(){vfunc_called(this, "_ZN10S4161C3_nt2v4Ev");}
void  S4161C3_nt ::v5(){vfunc_called(this, "_ZN10S4161C3_nt2v5Ev");}
void  S4161C3_nt ::v6(){vfunc_called(this, "_ZN10S4161C3_nt2v6Ev");}
void  S4161C3_nt ::v7(){vfunc_called(this, "_ZN10S4161C3_nt2v7Ev");}
void  S4161C3_nt ::v8(){vfunc_called(this, "_ZN10S4161C3_nt2v8Ev");}
void  S4161C3_nt ::v9(){vfunc_called(this, "_ZN10S4161C3_nt2v9Ev");}
void  S4161C3_nt ::v10(){vfunc_called(this, "_ZN10S4161C3_nt3v10Ev");}
void  S4161C3_nt ::v11(){vfunc_called(this, "_ZN10S4161C3_nt3v11Ev");}
void  S4161C3_nt ::v12(){vfunc_called(this, "_ZN10S4161C3_nt3v12Ev");}
void  S4161C3_nt ::v13(){vfunc_called(this, "_ZN10S4161C3_nt3v13Ev");}
void  S4161C3_nt ::v14(){vfunc_called(this, "_ZN10S4161C3_nt3v14Ev");}
void  S4161C3_nt ::v15(){vfunc_called(this, "_ZN10S4161C3_nt3v15Ev");}
void  S4161C3_nt ::v16(){vfunc_called(this, "_ZN10S4161C3_nt3v16Ev");}
void  S4161C3_nt ::v17(){vfunc_called(this, "_ZN10S4161C3_nt3v17Ev");}
void  S4161C3_nt ::v18(){vfunc_called(this, "_ZN10S4161C3_nt3v18Ev");}
void  S4161C3_nt ::v19(){vfunc_called(this, "_ZN10S4161C3_nt3v19Ev");}
void  S4161C3_nt ::v20(){vfunc_called(this, "_ZN10S4161C3_nt3v20Ev");}
void  S4161C3_nt ::v21(){vfunc_called(this, "_ZN10S4161C3_nt3v21Ev");}
void  S4161C3_nt ::v22(){vfunc_called(this, "_ZN10S4161C3_nt3v22Ev");}
void  S4161C3_nt ::v23(){vfunc_called(this, "_ZN10S4161C3_nt3v23Ev");}
void  S4161C3_nt ::v24(){vfunc_called(this, "_ZN10S4161C3_nt3v24Ev");}
void  S4161C3_nt ::v25(){vfunc_called(this, "_ZN10S4161C3_nt3v25Ev");}
void  S4161C3_nt ::v26(){vfunc_called(this, "_ZN10S4161C3_nt3v26Ev");}
void  S4161C3_nt ::v27(){vfunc_called(this, "_ZN10S4161C3_nt3v27Ev");}
void  S4161C3_nt ::v28(){vfunc_called(this, "_ZN10S4161C3_nt3v28Ev");}
void  S4161C3_nt ::v29(){vfunc_called(this, "_ZN10S4161C3_nt3v29Ev");}
void  S4161C3_nt ::v30(){vfunc_called(this, "_ZN10S4161C3_nt3v30Ev");}
void  S4161C3_nt ::v31(){vfunc_called(this, "_ZN10S4161C3_nt3v31Ev");}
void  S4161C3_nt ::v32(){vfunc_called(this, "_ZN10S4161C3_nt3v32Ev");}
void  S4161C3_nt ::v33(){vfunc_called(this, "_ZN10S4161C3_nt3v33Ev");}
void  S4161C3_nt ::v34(){vfunc_called(this, "_ZN10S4161C3_nt3v34Ev");}
void  S4161C3_nt ::v35(){vfunc_called(this, "_ZN10S4161C3_nt3v35Ev");}
void  S4161C3_nt ::v36(){vfunc_called(this, "_ZN10S4161C3_nt3v36Ev");}
void  S4161C3_nt ::v37(){vfunc_called(this, "_ZN10S4161C3_nt3v37Ev");}
void  S4161C3_nt ::v38(){vfunc_called(this, "_ZN10S4161C3_nt3v38Ev");}
void  S4161C3_nt ::v39(){vfunc_called(this, "_ZN10S4161C3_nt3v39Ev");}
void  S4161C3_nt ::v40(){vfunc_called(this, "_ZN10S4161C3_nt3v40Ev");}
void  S4161C3_nt ::v41(){vfunc_called(this, "_ZN10S4161C3_nt3v41Ev");}
void  S4161C3_nt ::v42(){vfunc_called(this, "_ZN10S4161C3_nt3v42Ev");}
S4161C3_nt ::S4161C3_nt(){ note_ctor("S4161C3_nt", this);} // tgen

//skip512 S4161C3_nt

#else // __cplusplus

extern void _ZN10S4161C3_ntC1Ev();
extern void _ZN10S4161C3_ntD1Ev();
Name_Map name_map_S4161C3_nt[] = {
  NSPAIR(_ZN10S4161C3_ntC1Ev),
  NSPAIR(_ZN10S4161C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4161C3_nt[];
extern void _ZN10S4161C3_ntD1Ev();
extern void _ZN10S4161C3_ntD0Ev();
extern void _ZN10S4161C3_nt2v1Ev();
extern void _ZN10S4161C3_nt2v2Ev();
extern void _ZN10S4161C3_nt2v3Ev();
extern void _ZN10S4161C3_nt2v4Ev();
extern void _ZN10S4161C3_nt2v5Ev();
extern void _ZN10S4161C3_nt2v6Ev();
extern void _ZN10S4161C3_nt2v7Ev();
extern void _ZN10S4161C3_nt2v8Ev();
extern void _ZN10S4161C3_nt2v9Ev();
extern void _ZN10S4161C3_nt3v10Ev();
extern void _ZN10S4161C3_nt3v11Ev();
extern void _ZN10S4161C3_nt3v12Ev();
extern void _ZN10S4161C3_nt3v13Ev();
extern void _ZN10S4161C3_nt3v14Ev();
extern void _ZN10S4161C3_nt3v15Ev();
extern void _ZN10S4161C3_nt3v16Ev();
extern void _ZN10S4161C3_nt3v17Ev();
extern void _ZN10S4161C3_nt3v18Ev();
extern void _ZN10S4161C3_nt3v19Ev();
extern void _ZN10S4161C3_nt3v20Ev();
extern void _ZN10S4161C3_nt3v21Ev();
extern void _ZN10S4161C3_nt3v22Ev();
extern void _ZN10S4161C3_nt3v23Ev();
extern void _ZN10S4161C3_nt3v24Ev();
extern void _ZN10S4161C3_nt3v25Ev();
extern void _ZN10S4161C3_nt3v26Ev();
extern void _ZN10S4161C3_nt3v27Ev();
extern void _ZN10S4161C3_nt3v28Ev();
extern void _ZN10S4161C3_nt3v29Ev();
extern void _ZN10S4161C3_nt3v30Ev();
extern void _ZN10S4161C3_nt3v31Ev();
extern void _ZN10S4161C3_nt3v32Ev();
extern void _ZN10S4161C3_nt3v33Ev();
extern void _ZN10S4161C3_nt3v34Ev();
extern void _ZN10S4161C3_nt3v35Ev();
extern void _ZN10S4161C3_nt3v36Ev();
extern void _ZN10S4161C3_nt3v37Ev();
extern void _ZN10S4161C3_nt3v38Ev();
extern void _ZN10S4161C3_nt3v39Ev();
extern void _ZN10S4161C3_nt3v40Ev();
extern void _ZN10S4161C3_nt3v41Ev();
extern void _ZN10S4161C3_nt3v42Ev();
static  VTBL_ENTRY vtc_S4161C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4161C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4161C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v1Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v42Ev,
};
extern VTBL_ENTRY _ZTI10S4161C3_nt[];
VTBL_ENTRY *P__ZTI10S4161C3_nt = _ZTI10S4161C3_nt; 
extern  VTBL_ENTRY _ZTV10S4161C3_nt[];
Class_Descriptor cd_S4161C3_nt = {  "S4161C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4161C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4161C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4161C3_nt),46, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4161C4_nt  {
  void *s4161c4f0;
  void  mf4161c4(); // _ZN10S4161C4_nt8mf4161c4Ev
};
//SIG(-1 S4161C4_nt) C1{ m Fp}


void  S4161C4_nt ::mf4161c4(){}

//skip512 S4161C4_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S4161C4_nt[];
VTBL_ENTRY *P__ZTI10S4161C4_nt = _ZTI10S4161C4_nt; 
Class_Descriptor cd_S4161C4_nt = {  "S4161C4_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4161C4_nt),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4161C2  : S4161C3_nt {
  void *s4161c2f0;
  ::S4161C4_nt s4161c2f1;
  ::S4161C4_nt s4161c2f2;
  int s4161c2f3[3];
  virtual  ~S4161C2(); // _ZN7S4161C2D1Ev
  virtual void  v43(); // _ZN7S4161C23v43Ev
  virtual void  v44(); // _ZN7S4161C23v44Ev
  virtual void  v45(); // _ZN7S4161C23v45Ev
  virtual void  v46(); // _ZN7S4161C23v46Ev
  virtual void  v47(); // _ZN7S4161C23v47Ev
  virtual void  v48(); // _ZN7S4161C23v48Ev
  virtual void  v49(); // _ZN7S4161C23v49Ev
  virtual void  v50(); // _ZN7S4161C23v50Ev
  virtual void  v51(); // _ZN7S4161C23v51Ev
  virtual void  v52(); // _ZN7S4161C23v52Ev
  virtual void  v53(); // _ZN7S4161C23v53Ev
  virtual void  v54(); // _ZN7S4161C23v54Ev
  virtual void  v55(); // _ZN7S4161C23v55Ev
  virtual void  v56(); // _ZN7S4161C23v56Ev
  virtual void  v57(); // _ZN7S4161C23v57Ev
  virtual void  v58(); // _ZN7S4161C23v58Ev
  virtual void  v59(); // _ZN7S4161C23v59Ev
  virtual void  v60(); // _ZN7S4161C23v60Ev
  virtual void  v61(); // _ZN7S4161C23v61Ev
  virtual void  v62(); // _ZN7S4161C23v62Ev
  virtual void  v63(); // _ZN7S4161C23v63Ev
  virtual void  v64(); // _ZN7S4161C23v64Ev
  virtual void  v65(); // _ZN7S4161C23v65Ev
  virtual void  v66(); // _ZN7S4161C23v66Ev
  virtual void  v67(); // _ZN7S4161C23v67Ev
  virtual void  v68(); // _ZN7S4161C23v68Ev
  virtual void  v69(); // _ZN7S4161C23v69Ev
  virtual void  v70(); // _ZN7S4161C23v70Ev
  virtual void  v71(); // _ZN7S4161C23v71Ev
  virtual void  v72(); // _ZN7S4161C23v72Ev
  virtual void  v73(); // _ZN7S4161C23v73Ev
  virtual void  v74(); // _ZN7S4161C23v74Ev
  virtual void  v75(); // _ZN7S4161C23v75Ev
  virtual void  v76(); // _ZN7S4161C23v76Ev
  virtual void  v77(); // _ZN7S4161C23v77Ev
  virtual void  v78(); // _ZN7S4161C23v78Ev
  virtual void  v79(); // _ZN7S4161C23v79Ev
  virtual void  v80(); // _ZN7S4161C23v80Ev
  virtual void  v81(); // _ZN7S4161C23v81Ev
  virtual void  v82(); // _ZN7S4161C23v82Ev
  virtual void  v83(); // _ZN7S4161C23v83Ev
  virtual void  v84(); // _ZN7S4161C23v84Ev
  S4161C2(); // tgen
};
//SIG(-1 S4161C2) C1{ BC2{ vd v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 Fp FC3{ m Fp} FC3 Fi[3]}


 S4161C2 ::~S4161C2(){ note_dtor("S4161C2", this);}
void  S4161C2 ::v43(){vfunc_called(this, "_ZN7S4161C23v43Ev");}
void  S4161C2 ::v44(){vfunc_called(this, "_ZN7S4161C23v44Ev");}
void  S4161C2 ::v45(){vfunc_called(this, "_ZN7S4161C23v45Ev");}
void  S4161C2 ::v46(){vfunc_called(this, "_ZN7S4161C23v46Ev");}
void  S4161C2 ::v47(){vfunc_called(this, "_ZN7S4161C23v47Ev");}
void  S4161C2 ::v48(){vfunc_called(this, "_ZN7S4161C23v48Ev");}
void  S4161C2 ::v49(){vfunc_called(this, "_ZN7S4161C23v49Ev");}
void  S4161C2 ::v50(){vfunc_called(this, "_ZN7S4161C23v50Ev");}
void  S4161C2 ::v51(){vfunc_called(this, "_ZN7S4161C23v51Ev");}
void  S4161C2 ::v52(){vfunc_called(this, "_ZN7S4161C23v52Ev");}
void  S4161C2 ::v53(){vfunc_called(this, "_ZN7S4161C23v53Ev");}
void  S4161C2 ::v54(){vfunc_called(this, "_ZN7S4161C23v54Ev");}
void  S4161C2 ::v55(){vfunc_called(this, "_ZN7S4161C23v55Ev");}
void  S4161C2 ::v56(){vfunc_called(this, "_ZN7S4161C23v56Ev");}
void  S4161C2 ::v57(){vfunc_called(this, "_ZN7S4161C23v57Ev");}
void  S4161C2 ::v58(){vfunc_called(this, "_ZN7S4161C23v58Ev");}
void  S4161C2 ::v59(){vfunc_called(this, "_ZN7S4161C23v59Ev");}
void  S4161C2 ::v60(){vfunc_called(this, "_ZN7S4161C23v60Ev");}
void  S4161C2 ::v61(){vfunc_called(this, "_ZN7S4161C23v61Ev");}
void  S4161C2 ::v62(){vfunc_called(this, "_ZN7S4161C23v62Ev");}
void  S4161C2 ::v63(){vfunc_called(this, "_ZN7S4161C23v63Ev");}
void  S4161C2 ::v64(){vfunc_called(this, "_ZN7S4161C23v64Ev");}
void  S4161C2 ::v65(){vfunc_called(this, "_ZN7S4161C23v65Ev");}
void  S4161C2 ::v66(){vfunc_called(this, "_ZN7S4161C23v66Ev");}
void  S4161C2 ::v67(){vfunc_called(this, "_ZN7S4161C23v67Ev");}
void  S4161C2 ::v68(){vfunc_called(this, "_ZN7S4161C23v68Ev");}
void  S4161C2 ::v69(){vfunc_called(this, "_ZN7S4161C23v69Ev");}
void  S4161C2 ::v70(){vfunc_called(this, "_ZN7S4161C23v70Ev");}
void  S4161C2 ::v71(){vfunc_called(this, "_ZN7S4161C23v71Ev");}
void  S4161C2 ::v72(){vfunc_called(this, "_ZN7S4161C23v72Ev");}
void  S4161C2 ::v73(){vfunc_called(this, "_ZN7S4161C23v73Ev");}
void  S4161C2 ::v74(){vfunc_called(this, "_ZN7S4161C23v74Ev");}
void  S4161C2 ::v75(){vfunc_called(this, "_ZN7S4161C23v75Ev");}
void  S4161C2 ::v76(){vfunc_called(this, "_ZN7S4161C23v76Ev");}
void  S4161C2 ::v77(){vfunc_called(this, "_ZN7S4161C23v77Ev");}
void  S4161C2 ::v78(){vfunc_called(this, "_ZN7S4161C23v78Ev");}
void  S4161C2 ::v79(){vfunc_called(this, "_ZN7S4161C23v79Ev");}
void  S4161C2 ::v80(){vfunc_called(this, "_ZN7S4161C23v80Ev");}
void  S4161C2 ::v81(){vfunc_called(this, "_ZN7S4161C23v81Ev");}
void  S4161C2 ::v82(){vfunc_called(this, "_ZN7S4161C23v82Ev");}
void  S4161C2 ::v83(){vfunc_called(this, "_ZN7S4161C23v83Ev");}
void  S4161C2 ::v84(){vfunc_called(this, "_ZN7S4161C23v84Ev");}
S4161C2 ::S4161C2(){ note_ctor("S4161C2", this);} // tgen

static void Test_S4161C2()
{
  extern Class_Descriptor cd_S4161C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S4161C2, buf);
    S4161C2 *dp, &lv = *(dp=new (buf) S4161C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S4161C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4161C2)");
    check_base_class_offset(lv, (S4161C3_nt*), 0, "S4161C2");
    check_field_offset(lv, s4161c2f0, ABISELECT(8,4), "S4161C2.s4161c2f0");
    check_field_offset(lv, s4161c2f1, ABISELECT(16,8), "S4161C2.s4161c2f1");
    check_field_offset(lv, s4161c2f2, ABISELECT(24,12), "S4161C2.s4161c2f2");
    check_field_offset(lv, s4161c2f3, ABISELECT(32,16), "S4161C2.s4161c2f3");
    test_class_info(&lv, &cd_S4161C2);
    dp->~S4161C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4161C2(Test_S4161C2, "S4161C2", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S4161C2C1Ev();
extern void _ZN7S4161C2D1Ev();
Name_Map name_map_S4161C2[] = {
  NSPAIR(_ZN7S4161C2C1Ev),
  NSPAIR(_ZN7S4161C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C3_nt;
extern VTBL_ENTRY _ZTI10S4161C3_nt[];
extern  VTBL_ENTRY _ZTV10S4161C3_nt[];
static Base_Class bases_S4161C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4161C2[];
extern void _ZN7S4161C2D1Ev();
extern void _ZN7S4161C2D0Ev();
extern void _ZN10S4161C3_nt2v1Ev();
extern void _ZN10S4161C3_nt2v2Ev();
extern void _ZN10S4161C3_nt2v3Ev();
extern void _ZN10S4161C3_nt2v4Ev();
extern void _ZN10S4161C3_nt2v5Ev();
extern void _ZN10S4161C3_nt2v6Ev();
extern void _ZN10S4161C3_nt2v7Ev();
extern void _ZN10S4161C3_nt2v8Ev();
extern void _ZN10S4161C3_nt2v9Ev();
extern void _ZN10S4161C3_nt3v10Ev();
extern void _ZN10S4161C3_nt3v11Ev();
extern void _ZN10S4161C3_nt3v12Ev();
extern void _ZN10S4161C3_nt3v13Ev();
extern void _ZN10S4161C3_nt3v14Ev();
extern void _ZN10S4161C3_nt3v15Ev();
extern void _ZN10S4161C3_nt3v16Ev();
extern void _ZN10S4161C3_nt3v17Ev();
extern void _ZN10S4161C3_nt3v18Ev();
extern void _ZN10S4161C3_nt3v19Ev();
extern void _ZN10S4161C3_nt3v20Ev();
extern void _ZN10S4161C3_nt3v21Ev();
extern void _ZN10S4161C3_nt3v22Ev();
extern void _ZN10S4161C3_nt3v23Ev();
extern void _ZN10S4161C3_nt3v24Ev();
extern void _ZN10S4161C3_nt3v25Ev();
extern void _ZN10S4161C3_nt3v26Ev();
extern void _ZN10S4161C3_nt3v27Ev();
extern void _ZN10S4161C3_nt3v28Ev();
extern void _ZN10S4161C3_nt3v29Ev();
extern void _ZN10S4161C3_nt3v30Ev();
extern void _ZN10S4161C3_nt3v31Ev();
extern void _ZN10S4161C3_nt3v32Ev();
extern void _ZN10S4161C3_nt3v33Ev();
extern void _ZN10S4161C3_nt3v34Ev();
extern void _ZN10S4161C3_nt3v35Ev();
extern void _ZN10S4161C3_nt3v36Ev();
extern void _ZN10S4161C3_nt3v37Ev();
extern void _ZN10S4161C3_nt3v38Ev();
extern void _ZN10S4161C3_nt3v39Ev();
extern void _ZN10S4161C3_nt3v40Ev();
extern void _ZN10S4161C3_nt3v41Ev();
extern void _ZN10S4161C3_nt3v42Ev();
extern void _ZN7S4161C23v43Ev();
extern void _ZN7S4161C23v44Ev();
extern void _ZN7S4161C23v45Ev();
extern void _ZN7S4161C23v46Ev();
extern void _ZN7S4161C23v47Ev();
extern void _ZN7S4161C23v48Ev();
extern void _ZN7S4161C23v49Ev();
extern void _ZN7S4161C23v50Ev();
extern void _ZN7S4161C23v51Ev();
extern void _ZN7S4161C23v52Ev();
extern void _ZN7S4161C23v53Ev();
extern void _ZN7S4161C23v54Ev();
extern void _ZN7S4161C23v55Ev();
extern void _ZN7S4161C23v56Ev();
extern void _ZN7S4161C23v57Ev();
extern void _ZN7S4161C23v58Ev();
extern void _ZN7S4161C23v59Ev();
extern void _ZN7S4161C23v60Ev();
extern void _ZN7S4161C23v61Ev();
extern void _ZN7S4161C23v62Ev();
extern void _ZN7S4161C23v63Ev();
extern void _ZN7S4161C23v64Ev();
extern void _ZN7S4161C23v65Ev();
extern void _ZN7S4161C23v66Ev();
extern void _ZN7S4161C23v67Ev();
extern void _ZN7S4161C23v68Ev();
extern void _ZN7S4161C23v69Ev();
extern void _ZN7S4161C23v70Ev();
extern void _ZN7S4161C23v71Ev();
extern void _ZN7S4161C23v72Ev();
extern void _ZN7S4161C23v73Ev();
extern void _ZN7S4161C23v74Ev();
extern void _ZN7S4161C23v75Ev();
extern void _ZN7S4161C23v76Ev();
extern void _ZN7S4161C23v77Ev();
extern void _ZN7S4161C23v78Ev();
extern void _ZN7S4161C23v79Ev();
extern void _ZN7S4161C23v80Ev();
extern void _ZN7S4161C23v81Ev();
extern void _ZN7S4161C23v82Ev();
extern void _ZN7S4161C23v83Ev();
extern void _ZN7S4161C23v84Ev();
static  VTBL_ENTRY vtc_S4161C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4161C2[0]),
  (VTBL_ENTRY)&_ZN7S4161C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4161C2D0Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v1Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v43Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v44Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v45Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v46Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v47Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v48Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v49Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v50Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v51Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v52Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v53Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v54Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v55Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v56Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v57Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v58Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v59Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v60Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v61Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v62Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v63Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v64Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v65Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v66Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v67Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v68Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v69Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v70Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v71Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v72Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v73Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v74Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v75Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v76Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v77Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v78Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v79Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v80Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v81Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v82Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v83Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v84Ev,
};
extern VTBL_ENTRY _ZTI7S4161C2[];
extern  VTBL_ENTRY _ZTV7S4161C2[];
Class_Descriptor cd_S4161C2 = {  "S4161C2", // class name
  bases_S4161C2, 1,
  &(vtc_S4161C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S4161C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4161C2),88, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4161C1  : S4161C2 {
  void *s4161c1f0[19];
  ~S4161C1(); // tgen
  S4161C1(); // tgen
};
//SIG(1 S4161C1) C1{ BC2{ BC3{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42} vd v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 Fp FC4{ m Fp} FC4 Fi[3]} Fp[19]}


S4161C1 ::~S4161C1(){ note_dtor("S4161C1", this);} // tgen
S4161C1 ::S4161C1(){ note_ctor("S4161C1", this);} // tgen

static void Test_S4161C1()
{
  extern Class_Descriptor cd_S4161C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,27)];
    init_test(&cd_S4161C1, buf);
    S4161C1 *dp, &lv = *(dp=new (buf) S4161C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,104), "sizeof(S4161C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4161C1)");
    check_base_class_offset(lv, (S4161C3_nt*)(S4161C2*), 0, "S4161C1");
    check_base_class_offset(lv, (S4161C2*), 0, "S4161C1");
    check_field_offset(lv, s4161c1f0, ABISELECT(48,28), "S4161C1.s4161c1f0");
    test_class_info(&lv, &cd_S4161C1);
    dp->~S4161C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4161C1(Test_S4161C1, "S4161C1", ABISELECT(200,104));

#else // __cplusplus

extern void _ZN7S4161C1C1Ev();
extern void _ZN7S4161C1D1Ev();
Name_Map name_map_S4161C1[] = {
  NSPAIR(_ZN7S4161C1C1Ev),
  NSPAIR(_ZN7S4161C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C3_nt;
extern VTBL_ENTRY _ZTI10S4161C3_nt[];
extern  VTBL_ENTRY _ZTV10S4161C3_nt[];
extern Class_Descriptor cd_S4161C2;
extern VTBL_ENTRY _ZTI7S4161C2[];
extern  VTBL_ENTRY _ZTV7S4161C2[];
static Base_Class bases_S4161C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4161C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4161C1[];
extern void _ZN7S4161C1D1Ev();
extern void _ZN7S4161C1D0Ev();
extern void _ZN10S4161C3_nt2v1Ev();
extern void _ZN10S4161C3_nt2v2Ev();
extern void _ZN10S4161C3_nt2v3Ev();
extern void _ZN10S4161C3_nt2v4Ev();
extern void _ZN10S4161C3_nt2v5Ev();
extern void _ZN10S4161C3_nt2v6Ev();
extern void _ZN10S4161C3_nt2v7Ev();
extern void _ZN10S4161C3_nt2v8Ev();
extern void _ZN10S4161C3_nt2v9Ev();
extern void _ZN10S4161C3_nt3v10Ev();
extern void _ZN10S4161C3_nt3v11Ev();
extern void _ZN10S4161C3_nt3v12Ev();
extern void _ZN10S4161C3_nt3v13Ev();
extern void _ZN10S4161C3_nt3v14Ev();
extern void _ZN10S4161C3_nt3v15Ev();
extern void _ZN10S4161C3_nt3v16Ev();
extern void _ZN10S4161C3_nt3v17Ev();
extern void _ZN10S4161C3_nt3v18Ev();
extern void _ZN10S4161C3_nt3v19Ev();
extern void _ZN10S4161C3_nt3v20Ev();
extern void _ZN10S4161C3_nt3v21Ev();
extern void _ZN10S4161C3_nt3v22Ev();
extern void _ZN10S4161C3_nt3v23Ev();
extern void _ZN10S4161C3_nt3v24Ev();
extern void _ZN10S4161C3_nt3v25Ev();
extern void _ZN10S4161C3_nt3v26Ev();
extern void _ZN10S4161C3_nt3v27Ev();
extern void _ZN10S4161C3_nt3v28Ev();
extern void _ZN10S4161C3_nt3v29Ev();
extern void _ZN10S4161C3_nt3v30Ev();
extern void _ZN10S4161C3_nt3v31Ev();
extern void _ZN10S4161C3_nt3v32Ev();
extern void _ZN10S4161C3_nt3v33Ev();
extern void _ZN10S4161C3_nt3v34Ev();
extern void _ZN10S4161C3_nt3v35Ev();
extern void _ZN10S4161C3_nt3v36Ev();
extern void _ZN10S4161C3_nt3v37Ev();
extern void _ZN10S4161C3_nt3v38Ev();
extern void _ZN10S4161C3_nt3v39Ev();
extern void _ZN10S4161C3_nt3v40Ev();
extern void _ZN10S4161C3_nt3v41Ev();
extern void _ZN10S4161C3_nt3v42Ev();
extern void _ZN7S4161C23v43Ev();
extern void _ZN7S4161C23v44Ev();
extern void _ZN7S4161C23v45Ev();
extern void _ZN7S4161C23v46Ev();
extern void _ZN7S4161C23v47Ev();
extern void _ZN7S4161C23v48Ev();
extern void _ZN7S4161C23v49Ev();
extern void _ZN7S4161C23v50Ev();
extern void _ZN7S4161C23v51Ev();
extern void _ZN7S4161C23v52Ev();
extern void _ZN7S4161C23v53Ev();
extern void _ZN7S4161C23v54Ev();
extern void _ZN7S4161C23v55Ev();
extern void _ZN7S4161C23v56Ev();
extern void _ZN7S4161C23v57Ev();
extern void _ZN7S4161C23v58Ev();
extern void _ZN7S4161C23v59Ev();
extern void _ZN7S4161C23v60Ev();
extern void _ZN7S4161C23v61Ev();
extern void _ZN7S4161C23v62Ev();
extern void _ZN7S4161C23v63Ev();
extern void _ZN7S4161C23v64Ev();
extern void _ZN7S4161C23v65Ev();
extern void _ZN7S4161C23v66Ev();
extern void _ZN7S4161C23v67Ev();
extern void _ZN7S4161C23v68Ev();
extern void _ZN7S4161C23v69Ev();
extern void _ZN7S4161C23v70Ev();
extern void _ZN7S4161C23v71Ev();
extern void _ZN7S4161C23v72Ev();
extern void _ZN7S4161C23v73Ev();
extern void _ZN7S4161C23v74Ev();
extern void _ZN7S4161C23v75Ev();
extern void _ZN7S4161C23v76Ev();
extern void _ZN7S4161C23v77Ev();
extern void _ZN7S4161C23v78Ev();
extern void _ZN7S4161C23v79Ev();
extern void _ZN7S4161C23v80Ev();
extern void _ZN7S4161C23v81Ev();
extern void _ZN7S4161C23v82Ev();
extern void _ZN7S4161C23v83Ev();
extern void _ZN7S4161C23v84Ev();
static  VTBL_ENTRY vtc_S4161C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4161C1[0]),
  (VTBL_ENTRY)&_ZN7S4161C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4161C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v1Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v43Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v44Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v45Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v46Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v47Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v48Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v49Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v50Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v51Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v52Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v53Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v54Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v55Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v56Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v57Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v58Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v59Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v60Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v61Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v62Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v63Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v64Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v65Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v66Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v67Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v68Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v69Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v70Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v71Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v72Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v73Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v74Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v75Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v76Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v77Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v78Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v79Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v80Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v81Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v82Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v83Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v84Ev,
};
extern VTBL_ENTRY _ZTI7S4161C1[];
extern  VTBL_ENTRY _ZTV7S4161C1[];
Class_Descriptor cd_S4161C1 = {  "S4161C1", // class name
  bases_S4161C1, 2,
  &(vtc_S4161C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,104), // object size
  NSPAIRA(_ZTI7S4161C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4161C1),88, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C5  {
  void *s20971c5f0;
  char s20971c5f1[5];
  __tsi64 s20971c5f2;
  void *s20971c5f3[2];
  virtual void  v3(); // _ZN8S20971C52v3Ev
  ~S20971C5(); // tgen
  S20971C5(); // tgen
};
//SIG(-1 S20971C5) C1{ v1 Fp Fc[5] FL Fp[2]}


void  S20971C5 ::v3(){vfunc_called(this, "_ZN8S20971C52v3Ev");}
S20971C5 ::~S20971C5(){ note_dtor("S20971C5", this);} // tgen
S20971C5 ::S20971C5(){ note_ctor("S20971C5", this);} // tgen

static void Test_S20971C5()
{
  extern Class_Descriptor cd_S20971C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S20971C5, buf);
    S20971C5 *dp, &lv = *(dp=new (buf) S20971C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S20971C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20971C5)");
    check_field_offset(lv, s20971c5f0, ABISELECT(8,4), "S20971C5.s20971c5f0");
    check_field_offset(lv, s20971c5f1, ABISELECT(16,8), "S20971C5.s20971c5f1");
    check_field_offset(lv, s20971c5f2, ABISELECT(24,16), "S20971C5.s20971c5f2");
    check_field_offset(lv, s20971c5f3, ABISELECT(32,24), "S20971C5.s20971c5f3");
    test_class_info(&lv, &cd_S20971C5);
    dp->~S20971C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C5(Test_S20971C5, "S20971C5", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S20971C5C1Ev();
extern void _ZN8S20971C5D1Ev();
Name_Map name_map_S20971C5[] = {
  NSPAIR(_ZN8S20971C5C1Ev),
  NSPAIR(_ZN8S20971C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20971C5[];
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY vtc_S20971C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C5[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
Class_Descriptor cd_S20971C5 = {  "S20971C5", // class name
  0,0,//no base classes
  &(vtc_S20971C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S20971C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20971C5),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C4  : S20971C5 {
  ::S20971C5 s20971c4f0;
  char s20971c4f1[2];
  void *s20971c4f2;
  virtual void  v4(); // _ZN8S20971C42v4Ev
  virtual void  v5(); // _ZN8S20971C42v5Ev
  virtual void  v6(); // _ZN8S20971C42v6Ev
  ~S20971C4(); // tgen
  S20971C4(); // tgen
};
//SIG(-1 S20971C4) C1{ BC2{ v4 Fp Fc[5] FL Fp[2]} v1 v2 v3 FC2 Fc[2] Fp}


void  S20971C4 ::v4(){vfunc_called(this, "_ZN8S20971C42v4Ev");}
void  S20971C4 ::v5(){vfunc_called(this, "_ZN8S20971C42v5Ev");}
void  S20971C4 ::v6(){vfunc_called(this, "_ZN8S20971C42v6Ev");}
S20971C4 ::~S20971C4(){ note_dtor("S20971C4", this);} // tgen
S20971C4 ::S20971C4(){ note_ctor("S20971C4", this);} // tgen

static void Test_S20971C4()
{
  extern Class_Descriptor cd_S20971C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S20971C4, buf);
    S20971C4 *dp, &lv = *(dp=new (buf) S20971C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S20971C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20971C4)");
    check_base_class_offset(lv, (S20971C5*), 0, "S20971C4");
    check_field_offset(lv, s20971c4f0, ABISELECT(48,32), "S20971C4.s20971c4f0");
    check_field_offset(lv, s20971c4f1, ABISELECT(96,64), "S20971C4.s20971c4f1");
    check_field_offset(lv, s20971c4f2, ABISELECT(104,68), "S20971C4.s20971c4f2");
    test_class_info(&lv, &cd_S20971C4);
    dp->~S20971C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C4(Test_S20971C4, "S20971C4", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN8S20971C4C1Ev();
extern void _ZN8S20971C4D1Ev();
Name_Map name_map_S20971C4[] = {
  NSPAIR(_ZN8S20971C4C1Ev),
  NSPAIR(_ZN8S20971C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
static Base_Class bases_S20971C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20971C4[];
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY vtc_S20971C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C4[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
Class_Descriptor cd_S20971C4 = {  "S20971C4", // class name
  bases_S20971C4, 1,
  &(vtc_S20971C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI8S20971C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20971C4),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C6  : virtual S20971C4 , virtual S20971C5 {
  int s20971c6f0;
  virtual void  v7(); // _ZN8S20971C62v7Ev
  ~S20971C6(); // tgen
  S20971C6(); // tgen
};
//SIG(-1 S20971C6) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} VBC3 v1 Fi}


void  S20971C6 ::v7(){vfunc_called(this, "_ZN8S20971C62v7Ev");}
S20971C6 ::~S20971C6(){ note_dtor("S20971C6", this);} // tgen
S20971C6 ::S20971C6(){ note_ctor("S20971C6", this);} // tgen

static void Test_S20971C6()
{
  extern Class_Descriptor cd_S20971C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,29)];
    init_test(&cd_S20971C6, buf);
    S20971C6 *dp, &lv = *(dp=new (buf) S20971C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,112), "sizeof(S20971C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20971C6)");
    check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(16,8), "S20971C6");
    check_base_class_offset(lv, (S20971C4*), ABISELECT(16,8), "S20971C6");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*), ABISELECT(128,80), "S20971C6");
    check_field_offset(lv, s20971c6f0, ABISELECT(8,4), "S20971C6.s20971c6f0");
    test_class_info(&lv, &cd_S20971C6);
    dp->~S20971C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C6(Test_S20971C6, "S20971C6", ABISELECT(176,112));

#else // __cplusplus

extern void _ZN8S20971C6C1Ev();
extern void _ZN8S20971C6D1Ev();
Name_Map name_map_S20971C6[] = {
  NSPAIR(_ZN8S20971C6C1Ev),
  NSPAIR(_ZN8S20971C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
static Base_Class bases_S20971C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C5,    ABISELECT(128,80), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20971C6[];
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY vtc_S20971C6[] = {
  ABISELECT(128,80),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  0,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern VTBL_ENTRY _ZTV8S20971C6[];
static  VTT_ENTRY vtt_S20971C6[] = {
  {&(_ZTV8S20971C6[4]),  4,19},
  {&(_ZTV8S20971C6[11]),  11,19},
  {&(_ZTV8S20971C6[18]),  18,19},
};
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
Class_Descriptor cd_S20971C6 = {  "S20971C6", // class name
  bases_S20971C6, 3,
  &(vtc_S20971C6[0]), // expected_vtbl_contents
  &(vtt_S20971C6[0]), // expected_vtt_contents
  ABISELECT(176,112), // object size
  NSPAIRA(_ZTI8S20971C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20971C6),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20971C6),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C3  : virtual S20971C4 , virtual S20971C5 , virtual S20971C6 {
  ::S20971C4 s20971c3f0;
  ::S19763C18_nt s20971c3f1;
  long double s20971c3f2[5];
  void *s20971c3f3;
  ::S20971C5 s20971c3f4;
  int s20971c3f5;
  virtual  ~S20971C3(); // _ZN8S20971C3D2Ev
  S20971C3(); // tgen
};
//SIG(-1 S20971C3) C1{ VBC2{ BC3{ v1 Fp Fc[5] FL Fp[2]} v2 v3 v4 FC3 Fc[2] Fp} VBC3 VBC4{ VBC2 VBC3 v5 Fi} vd FC2 FC5{} FD[5] Fp FC3 Fi}


 S20971C3 ::~S20971C3(){ note_dtor("S20971C3", this);}
S20971C3 ::S20971C3(){ note_ctor("S20971C3", this);} // tgen

static void Test_S20971C3()
{
  extern Class_Descriptor cd_S20971C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(29,74)];
    init_test(&cd_S20971C3, buf);
    S20971C3 *dp, &lv = *(dp=new (buf) S20971C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(448,292), "sizeof(S20971C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20971C3)");
    check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(272,180), "S20971C3");
    check_base_class_offset(lv, (S20971C4*), ABISELECT(272,180), "S20971C3");
    check_base_class_offset(lv, (S20971C4*)(S20971C6*), ABISELECT(272,180), "S20971C3");
    /*is_ambiguous_... S20971C3::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*), ABISELECT(384,252), "S20971C3");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*), ABISELECT(384,252), "S20971C3");
    check_base_class_offset(lv, (S20971C6*), ABISELECT(432,284), "S20971C3");
    check_field_offset(lv, s20971c3f0, ABISELECT(8,4), "S20971C3.s20971c3f0");
    check_field_offset(lv, s20971c3f1, ABISELECT(120,76), "S20971C3.s20971c3f1");
    check_field_offset(lv, s20971c3f2, ABISELECT(128,80), "S20971C3.s20971c3f2");
    check_field_offset(lv, s20971c3f3, ABISELECT(208,140), "S20971C3.s20971c3f3");
    check_field_offset(lv, s20971c3f4, ABISELECT(216,144), "S20971C3.s20971c3f4");
    check_field_offset(lv, s20971c3f5, ABISELECT(264,176), "S20971C3.s20971c3f5");
    test_class_info(&lv, &cd_S20971C3);
    dp->~S20971C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C3(Test_S20971C3, "S20971C3", ABISELECT(448,292));

#else // __cplusplus

extern void _ZN8S20971C3C1Ev();
extern void _ZN8S20971C3D2Ev();
Name_Map name_map_S20971C3[] = {
  NSPAIR(_ZN8S20971C3C1Ev),
  NSPAIR(_ZN8S20971C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
static Base_Class bases_S20971C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    ABISELECT(272,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(272,180), //bcp->offset
    7, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C5,    ABISELECT(384,252), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C6,    ABISELECT(432,284), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20971C3[];
extern void _ZN8S20971C3D1Ev();
extern void _ZN8S20971C3D0Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY vtc_S20971C3[] = {
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C3D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  0,
  ABISELECT(-384,-252),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-432,-284),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern VTBL_ENTRY _ZTV8S20971C3[];
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__8S20971C3[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C6__8S20971C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C6__8S20971C3[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
static  VTT_ENTRY vtt_S20971C3[] = {
  {&(_ZTV8S20971C3[5]),  5,27},
  {&(_ZTV8S20971C3[13]),  13,27},
  {&(_ZTV8S20971C3[20]),  20,27},
  {&(_ZTV8S20971C3[26]),  26,27},
  {&(_tg__ZTV8S20971C6__8S20971C3[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C6__8S20971C3[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C6__8S20971C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20971C3[];
extern  VTBL_ENTRY _ZTV8S20971C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C3[];
Class_Descriptor cd_S20971C3 = {  "S20971C3", // class name
  bases_S20971C3, 4,
  &(vtc_S20971C3[0]), // expected_vtbl_contents
  &(vtt_S20971C3[0]), // expected_vtt_contents
  ABISELECT(448,292), // object size
  NSPAIRA(_ZTI8S20971C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20971C3),27, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20971C3),7, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C9  : S20971C6 , S20971C4 , S20971C5 {
  virtual  ~S20971C9(); // _ZN8S20971C9D2Ev
  virtual void  v8(); // _ZN8S20971C92v8Ev
  S20971C9(); // tgen
};
//SIG(-1 S20971C9) C1{ BC2{ VBC3{ BC4{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC4 Fc[2] Fp} VBC4 v6 Fi} BC3 BC4 vd v1}


 S20971C9 ::~S20971C9(){ note_dtor("S20971C9", this);}
void  S20971C9 ::v8(){vfunc_called(this, "_ZN8S20971C92v8Ev");}
S20971C9 ::S20971C9(){ note_ctor("S20971C9", this);} // tgen

static void Test_S20971C9()
{
  extern Class_Descriptor cd_S20971C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,55)];
    init_test(&cd_S20971C9, buf);
    S20971C9 *dp, &lv = *(dp=new (buf) S20971C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,216), "sizeof(S20971C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20971C9)");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(176,112), "S20971C9");
    check_base_class_offset(lv, (S20971C4*)(S20971C6*), ABISELECT(176,112), "S20971C9");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*), ABISELECT(288,184), "S20971C9");
    check_base_class_offset(lv, (S20971C6*), 0, "S20971C9");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(16,8), "S20971C9");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*), ABISELECT(16,8), "S20971C9");
    /*is_ambiguous_... S20971C9::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*), ABISELECT(128,80), "S20971C9");
    test_class_info(&lv, &cd_S20971C9);
    dp->~S20971C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C9(Test_S20971C9, "S20971C9", ABISELECT(336,216));

#else // __cplusplus

extern void _ZN8S20971C9C1Ev();
extern void _ZN8S20971C9D2Ev();
Name_Map name_map_S20971C9[] = {
  NSPAIR(_ZN8S20971C9C1Ev),
  NSPAIR(_ZN8S20971C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
static Base_Class bases_S20971C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(176,112), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20971C5,    ABISELECT(288,184), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20971C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20971C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20971C5,    ABISELECT(128,80), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20971C9[];
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C9D1Ev();
extern void _ZN8S20971C9D0Ev();
extern void _ZN8S20971C92v8Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY vtc_S20971C9[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern VTBL_ENTRY _ZTV8S20971C9[];
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__8S20971C9[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C6__8S20971C9[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C6__8S20971C9[] = {
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
static  VTT_ENTRY vtt_S20971C9[] = {
  {&(_ZTV8S20971C9[4]),  4,31},
  {&(_tg__ZTV8S20971C6__8S20971C9[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C6__8S20971C9[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C6__8S20971C9[3]),  3,4},
  {&(_ZTV8S20971C9[23]),  23,31},
  {&(_ZTV8S20971C9[30]),  30,31},
};
extern VTBL_ENTRY _ZTI8S20971C9[];
extern  VTBL_ENTRY _ZTV8S20971C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C9[];
Class_Descriptor cd_S20971C9 = {  "S20971C9", // class name
  bases_S20971C9, 7,
  &(vtc_S20971C9[0]), // expected_vtbl_contents
  &(vtt_S20971C9[0]), // expected_vtt_contents
  ABISELECT(336,216), // object size
  NSPAIRA(_ZTI8S20971C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20971C9),31, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20971C9),6, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C10  {
  int s20971c10f0;
  char s20971c10f1[7];
  void *s20971c10f2;
  int s20971c10f3;
  short s20971c10f4;
  virtual void  v9(); // _ZN9S20971C102v9Ev
  virtual void  v10(); // _ZN9S20971C103v10Ev
  ~S20971C10(); // tgen
  S20971C10(); // tgen
};
//SIG(-1 S20971C10) C1{ v1 v2 Fi Fc[7] Fp Fi Fs}


void  S20971C10 ::v9(){vfunc_called(this, "_ZN9S20971C102v9Ev");}
void  S20971C10 ::v10(){vfunc_called(this, "_ZN9S20971C103v10Ev");}
S20971C10 ::~S20971C10(){ note_dtor("S20971C10", this);} // tgen
S20971C10 ::S20971C10(){ note_ctor("S20971C10", this);} // tgen

static void Test_S20971C10()
{
  extern Class_Descriptor cd_S20971C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S20971C10, buf);
    S20971C10 *dp, &lv = *(dp=new (buf) S20971C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S20971C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20971C10)");
    check_field_offset(lv, s20971c10f0, ABISELECT(8,4), "S20971C10.s20971c10f0");
    check_field_offset(lv, s20971c10f1, ABISELECT(12,8), "S20971C10.s20971c10f1");
    check_field_offset(lv, s20971c10f2, ABISELECT(24,16), "S20971C10.s20971c10f2");
    check_field_offset(lv, s20971c10f3, ABISELECT(32,20), "S20971C10.s20971c10f3");
    check_field_offset(lv, s20971c10f4, ABISELECT(36,24), "S20971C10.s20971c10f4");
    test_class_info(&lv, &cd_S20971C10);
    dp->~S20971C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C10(Test_S20971C10, "S20971C10", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN9S20971C10C1Ev();
extern void _ZN9S20971C10D1Ev();
Name_Map name_map_S20971C10[] = {
  NSPAIR(_ZN9S20971C10C1Ev),
  NSPAIR(_ZN9S20971C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20971C10[];
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY vtc_S20971C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20971C10[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
extern VTBL_ENTRY _ZTI9S20971C10[];
extern  VTBL_ENTRY _ZTV9S20971C10[];
Class_Descriptor cd_S20971C10 = {  "S20971C10", // class name
  0,0,//no base classes
  &(vtc_S20971C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI9S20971C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20971C10),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C8  : virtual S20971C4 , S20971C6 , S20971C9 , virtual S20971C3 , virtual S20971C10 {
  ::S20971C4 s20971c8f0;
  ::S20971C9 s20971c8f1[3];
  virtual void  v11(); // _ZN8S20971C83v11Ev
  ~S20971C8(); // tgen
  S20971C8(); // tgen
};
//SIG(-1 S20971C8) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} BC4{ VBC2 VBC3 v6 Fi} BC5{ BC4 BC2 BC3 vd v7} VBC6{ VBC2 VBC3 VBC4 vd FC2 FC7{} FD[5] Fp FC3 Fi} VBC8{ v8 v9 Fi Fc[7] Fp Fi Fs} v1 FC2 FC5[3]}


void  S20971C8 ::v11(){vfunc_called(this, "_ZN8S20971C83v11Ev");}
S20971C8 ::~S20971C8(){ note_dtor("S20971C8", this);} // tgen
S20971C8 ::S20971C8(){ note_ctor("S20971C8", this);} // tgen

static void Test_S20971C8()
{
  extern Class_Descriptor cd_S20971C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(114,291)];
    init_test(&cd_S20971C8, buf);
    S20971C8 *dp, &lv = *(dp=new (buf) S20971C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1808,1160), "sizeof(S20971C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20971C8)");
    /*is_ambiguous_... S20971C8::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(1312,840), "S20971C8");
    /*is_ambiguous_... S20971C8::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*), ABISELECT(1312,840), "S20971C8");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*), ABISELECT(1312,840), "S20971C8");
    check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C9*), ABISELECT(1312,840), "S20971C8");
    check_base_class_offset(lv, (S20971C4*)(S20971C3*), ABISELECT(1312,840), "S20971C8");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*), ABISELECT(1312,840), "S20971C8");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*), ABISELECT(1424,912), "S20971C8");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C9*), ABISELECT(1424,912), "S20971C8");
    /*is_ambiguous_... S20971C3::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C3*), ABISELECT(1424,912), "S20971C8");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*), ABISELECT(1424,912), "S20971C8");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C6*), 0, "S20971C8");
    check_base_class_offset(lv, (S20971C6*)(S20971C9*), ABISELECT(16,8), "S20971C8");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*)(S20971C9*), ABISELECT(32,16), "S20971C8");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C9*), ABISELECT(32,16), "S20971C8");
    /*is_ambiguous_... S20971C9::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C9*), ABISELECT(144,88), "S20971C8");
    check_base_class_offset(lv, (S20971C9*), ABISELECT(16,8), "S20971C8");
    check_base_class_offset(lv, (S20971C6*)(S20971C3*), ABISELECT(1744,1124), "S20971C8");
    check_base_class_offset(lv, (S20971C3*), ABISELECT(1472,944), "S20971C8");
    check_base_class_offset(lv, (S20971C10*), ABISELECT(1760,1132), "S20971C8");
    check_field_offset(lv, s20971c8f0, ABISELECT(192,120), "S20971C8.s20971c8f0");
    check_field_offset(lv, s20971c8f1, ABISELECT(304,192), "S20971C8.s20971c8f1");
    test_class_info(&lv, &cd_S20971C8);
    dp->~S20971C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C8(Test_S20971C8, "S20971C8", ABISELECT(1808,1160));

#else // __cplusplus

extern void _ZN8S20971C8C1Ev();
extern void _ZN8S20971C8D1Ev();
Name_Map name_map_S20971C8[] = {
  NSPAIR(_ZN8S20971C8C1Ev),
  NSPAIR(_ZN8S20971C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C9;
extern VTBL_ENTRY _ZTI8S20971C9[];
extern  VTBL_ENTRY _ZTV8S20971C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C9[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C3;
extern VTBL_ENTRY _ZTI8S20971C3[];
extern  VTBL_ENTRY _ZTV8S20971C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C3[];
extern Class_Descriptor cd_S20971C10;
extern VTBL_ENTRY _ZTI9S20971C10[];
extern  VTBL_ENTRY _ZTV9S20971C10[];
static Base_Class bases_S20971C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    ABISELECT(1312,840), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(1312,840), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C5,    ABISELECT(1424,912), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20971C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20971C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(144,88), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20971C9,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20971C6,    ABISELECT(1744,1124), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20971C3,    ABISELECT(1472,944), //bcp->offset
    42, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C10,    ABISELECT(1760,1132), //bcp->offset
    56, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20971C8[];
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C83v11Ev();
extern void _ZN8S20971C8D1Ev();
extern void _ZN8S20971C8D0Ev();
extern void _ZN8S20971C62v7Ev();
extern void ABISELECT(_ZThn16_N8S20971C8D1Ev,_ZThn8_N8S20971C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20971C8D0Ev,_ZThn8_N8S20971C8D0Ev)();
extern void _ZN8S20971C92v8Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S20971C8D1Ev,_ZTv0_n24_N8S20971C8D1Ev)();
extern void ABISELECT(_ZThn1472_N8S20971C8D1Ev,_ZThn944_N8S20971C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20971C8D0Ev,_ZTv0_n24_N8S20971C8D0Ev)();
extern void ABISELECT(_ZThn1472_N8S20971C8D0Ev,_ZThn944_N8S20971C8D0Ev)() __attribute__((weak));
extern void _ZN8S20971C62v7Ev();
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY vtc_S20971C8[] = {
  ABISELECT(1760,1132),
  ABISELECT(1744,1124),
  ABISELECT(1472,944),
  ABISELECT(1424,912),
  ABISELECT(1312,840),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C83v11Ev,
  (VTBL_ENTRY)&_ZN8S20971C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C8D0Ev,
  ABISELECT(1408,904),
  ABISELECT(1296,832),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20971C8D1Ev,_ZThn8_N8S20971C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20971C8D0Ev,_ZThn8_N8S20971C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-1312,-840),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  0,
  ABISELECT(-1424,-912),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  ABISELECT(-1472,-944),
  ABISELECT(272,180),
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-1472,-944),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C8D1Ev,_ZTv0_n24_N8S20971C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C8D0Ev,_ZTv0_n24_N8S20971C8D0Ev),
  0,
  ABISELECT(-320,-212),
  ABISELECT(-432,-284),
  ABISELECT(-1744,-1124),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  0,
  0,
  ABISELECT(-1760,-1132),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
extern VTBL_ENTRY _ZTV8S20971C8[];
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__A__8S20971C8[] = {
  ABISELECT(1424,912),
  ABISELECT(1312,840),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C6__A__8S20971C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1312,-840),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C6__A__8S20971C8[] = {
  0,
  ABISELECT(-1424,-912),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C9D1Ev();
extern void _ZN8S20971C9D0Ev();
extern void _ZN8S20971C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C9__8S20971C8[] = {
  ABISELECT(1408,904),
  ABISELECT(1296,832),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C68S20971C9__A1__8S20971C8[] = {
  ABISELECT(1408,904),
  ABISELECT(1296,832),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C68S20971C9__A1__8S20971C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1296,-832),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C68S20971C9__A1__8S20971C8[] = {
  0,
  ABISELECT(-1408,-904),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C9__8S20971C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1296,-832),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C9__8S20971C8[] = {
  0,
  ABISELECT(-1408,-904),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C3D1Ev();
extern void _ZN8S20971C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C3__8S20971C8[] = {
  ABISELECT(272,180),
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C3D0Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C3__8S20971C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C3__8S20971C8[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__8S20971C3__8S20971C8[] = {
  0,
  ABISELECT(-320,-212),
  ABISELECT(-432,-284),
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__A2__8S20971C8[] = {
  ABISELECT(-320,-212),
  ABISELECT(-432,-284),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C6__A2__8S20971C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(432,284),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C6__A2__8S20971C8[] = {
  0,
  ABISELECT(320,212),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
static  VTT_ENTRY vtt_S20971C8[] = {
  {&(_ZTV8S20971C8[7]),  7,62},
  {&(_tg__ZTV8S20971C6__A__8S20971C8[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C6__A__8S20971C8[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C6__A__8S20971C8[3]),  3,4},
  {&(_tg__ZTV8S20971C9__8S20971C8[4]),  4,8},
  {&(_tg__ZTV8S20971C68S20971C9__A1__8S20971C8[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C68S20971C9__A1__8S20971C8[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C68S20971C9__A1__8S20971C8[3]),  3,4},
  {&(_tg__ZTV8S20971C4__8S20971C9__8S20971C8[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C9__8S20971C8[3]),  3,4},
  {&(_ZTV8S20971C8[34]),  34,62},
  {&(_ZTV8S20971C8[41]),  41,62},
  {&(_ZTV8S20971C8[15]),  15,62},
  {&(_ZTV8S20971C8[48]),  48,62},
  {&(_ZTV8S20971C8[55]),  55,62},
  {&(_ZTV8S20971C8[60]),  60,62},
  {&(_tg__ZTV8S20971C3__8S20971C8[5]),  5,7},
  {&(_tg__ZTV8S20971C4__8S20971C3__8S20971C8[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C3__8S20971C8[3]),  3,4},
  {&(_tg__ZTV8S20971C6__8S20971C3__8S20971C8[5]),  5,6},
  {&(_tg__ZTV8S20971C6__A2__8S20971C8[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C6__A2__8S20971C8[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C6__A2__8S20971C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20971C8[];
extern  VTBL_ENTRY _ZTV8S20971C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C8[];
static VTBL_ENTRY alt_thunk_names82[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20971C8D0Ev,_ZTv0_n24_N8S20971C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S20971C8D0Ev,_ZThn944_N8S20971C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20971C8D1Ev,_ZTv0_n24_N8S20971C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S20971C8D1Ev,_ZThn944_N8S20971C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20971C8 = {  "S20971C8", // class name
  bases_S20971C8, 12,
  &(vtc_S20971C8[0]), // expected_vtbl_contents
  &(vtt_S20971C8[0]), // expected_vtt_contents
  ABISELECT(1808,1160), // object size
  NSPAIRA(_ZTI8S20971C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20971C8),62, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20971C8),23, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names82,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C2  : virtual S20971C3 , virtual S20971C8 {
  char s20971c2f0[4];
  virtual  ~S20971C2(); // _ZN8S20971C2D2Ev
  virtual void  v12(); // _ZN8S20971C23v12Ev
  virtual void  v13(); // _ZN8S20971C23v13Ev
  virtual void  v14(); // _ZN8S20971C23v14Ev
  S20971C2(); // tgen
};
//SIG(-1 S20971C2) C1{ VBC2{ VBC3{ BC4{ v4 Fp Fc[5] FL Fp[2]} v5 v6 v7 FC4 Fc[2] Fp} VBC4 VBC5{ VBC3 VBC4 v8 Fi} vd FC3 FC6{} FD[5] Fp FC4 Fi} VBC7{ VBC3 BC5 BC8{ BC5 BC3 BC4 vd v9} VBC2 VBC9{ v10 v11 Fi Fc[7] Fp Fi Fs} v12 FC3 FC8[3]} vd v1 v2 v3 Fc[4]}


 S20971C2 ::~S20971C2(){ note_dtor("S20971C2", this);}
void  S20971C2 ::v12(){vfunc_called(this, "_ZN8S20971C23v12Ev");}
void  S20971C2 ::v13(){vfunc_called(this, "_ZN8S20971C23v13Ev");}
void  S20971C2 ::v14(){vfunc_called(this, "_ZN8S20971C23v14Ev");}
S20971C2 ::S20971C2(){ note_ctor("S20971C2", this);} // tgen

static void Test_S20971C2()
{
  extern Class_Descriptor cd_S20971C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(115,293)];
    init_test(&cd_S20971C2, buf);
    S20971C2 *dp, &lv = *(dp=new (buf) S20971C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1824,1168), "sizeof(S20971C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20971C2)");
    /*is_ambiguous_... S20971C2::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(288,188), "S20971C2");
    check_base_class_offset(lv, (S20971C4*)(S20971C3*), ABISELECT(288,188), "S20971C2");
    /*is_ambiguous_... S20971C2::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*), ABISELECT(288,188), "S20971C2");
    /*is_ambiguous_... S20971C8::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C8*), ABISELECT(288,188), "S20971C2");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C8*), ABISELECT(288,188), "S20971C2");
    check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C9*)(S20971C8*), ABISELECT(288,188), "S20971C2");
    /*is_ambiguous_... S20971C3::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C3*), ABISELECT(400,260), "S20971C2");
    /*is_ambiguous_... S20971C2::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*), ABISELECT(400,260), "S20971C2");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C8*), ABISELECT(400,260), "S20971C2");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C9*)(S20971C8*), ABISELECT(400,260), "S20971C2");
    check_base_class_offset(lv, (S20971C6*)(S20971C3*), ABISELECT(448,292), "S20971C2");
    check_base_class_offset(lv, (S20971C3*), ABISELECT(16,8), "S20971C2");
    check_base_class_offset(lv, (S20971C3*)(S20971C8*), ABISELECT(16,8), "S20971C2");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C6*)(S20971C8*), ABISELECT(464,300), "S20971C2");
    check_base_class_offset(lv, (S20971C6*)(S20971C9*)(S20971C8*), ABISELECT(480,308), "S20971C2");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*)(S20971C9*)(S20971C8*), ABISELECT(496,316), "S20971C2");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C9*)(S20971C8*), ABISELECT(496,316), "S20971C2");
    /*is_ambiguous_... S20971C9::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C9*)(S20971C8*), ABISELECT(608,388), "S20971C2");
    check_base_class_offset(lv, (S20971C9*)(S20971C8*), ABISELECT(480,308), "S20971C2");
    check_base_class_offset(lv, (S20971C10*)(S20971C8*), ABISELECT(1776,1140), "S20971C2");
    check_base_class_offset(lv, (S20971C8*), ABISELECT(464,300), "S20971C2");
    check_field_offset(lv, s20971c2f0, ABISELECT(8,4), "S20971C2.s20971c2f0");
    test_class_info(&lv, &cd_S20971C2);
    dp->~S20971C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C2(Test_S20971C2, "S20971C2", ABISELECT(1824,1168));

#else // __cplusplus

extern void _ZN8S20971C2C1Ev();
extern void _ZN8S20971C2D2Ev();
Name_Map name_map_S20971C2[] = {
  NSPAIR(_ZN8S20971C2C1Ev),
  NSPAIR(_ZN8S20971C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C3;
extern VTBL_ENTRY _ZTI8S20971C3[];
extern  VTBL_ENTRY _ZTV8S20971C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C3[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C9;
extern VTBL_ENTRY _ZTI8S20971C9[];
extern  VTBL_ENTRY _ZTV8S20971C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C9[];
extern Class_Descriptor cd_S20971C10;
extern VTBL_ENTRY _ZTI9S20971C10[];
extern  VTBL_ENTRY _ZTV9S20971C10[];
extern Class_Descriptor cd_S20971C8;
extern VTBL_ENTRY _ZTI8S20971C8[];
extern  VTBL_ENTRY _ZTV8S20971C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C8[];
static Base_Class bases_S20971C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    ABISELECT(288,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(288,188), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20971C5,    ABISELECT(400,260), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20971C6,    ABISELECT(448,292), //bcp->offset
    35, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20971C3,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C6,    ABISELECT(464,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20971C6,    ABISELECT(480,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(496,316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(496,316), //bcp->offset
    68, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(608,388), //bcp->offset
    74, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20971C9,    ABISELECT(480,308), //bcp->offset
    60, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20971C10,    ABISELECT(1776,1140), //bcp->offset
    77, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20971C8,    ABISELECT(464,300), //bcp->offset
    41, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20971C2[];
extern void _ZN8S20971C2D1Ev();
extern void _ZN8S20971C2D0Ev();
extern void _ZN8S20971C23v12Ev();
extern void _ZN8S20971C23v13Ev();
extern void _ZN8S20971C23v14Ev();
extern void ABISELECT(_ZTv0_n48_N8S20971C2D1Ev,_ZTv0_n24_N8S20971C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20971C2D1Ev,_ZThn8_N8S20971C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20971C2D0Ev,_ZTv0_n24_N8S20971C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20971C2D0Ev,_ZThn8_N8S20971C2D0Ev)() __attribute__((weak));
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C83v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S20971C2D1Ev,_ZTv0_n40_N8S20971C2D1Ev)();
extern void ABISELECT(_ZThn464_N8S20971C2D1Ev,_ZThn300_N8S20971C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20971C2D0Ev,_ZTv0_n40_N8S20971C2D0Ev)();
extern void ABISELECT(_ZThn464_N8S20971C2D0Ev,_ZThn300_N8S20971C2D0Ev)() __attribute__((weak));
extern void _ZN8S20971C62v7Ev();
extern void ABISELECT(_ZTvn16_n80_N8S20971C2D1Ev,_ZTvn8_n40_N8S20971C2D1Ev)();
extern void ABISELECT(_ZTvn16_n80_N8S20971C2D0Ev,_ZTvn8_n40_N8S20971C2D0Ev)();
extern void _ZN8S20971C92v8Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY vtc_S20971C2[] = {
  ABISELECT(1776,1140),
  ABISELECT(464,300),
  ABISELECT(448,292),
  ABISELECT(400,260),
  ABISELECT(288,188),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20971C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20971C23v14Ev,
  ABISELECT(-16,-8),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C2D1Ev,_ZTv0_n24_N8S20971C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C2D0Ev,_ZTv0_n24_N8S20971C2D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  0,
  ABISELECT(-400,-260),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-448,-292),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-464,-300),
  0,
  0,
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C83v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20971C2D1Ev,_ZTv0_n40_N8S20971C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20971C2D0Ev,_ZTv0_n40_N8S20971C2D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-480,-308),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20971C2D1Ev,_ZTvn8_n40_N8S20971C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20971C2D0Ev,_ZTvn8_n40_N8S20971C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
  ABISELECT(-496,-316),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  0,
  ABISELECT(-1776,-1140),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
extern VTBL_ENTRY _ZTV8S20971C2[];
extern void _ZN8S20971C3D1Ev();
extern void _ZN8S20971C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C3__8S20971C2[] = {
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C3D0Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C3__8S20971C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C3__8S20971C2[] = {
  0,
  ABISELECT(-384,-252),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__8S20971C3__8S20971C2[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-432,-284),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__8S20971C2[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C6__8S20971C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C6__8S20971C2[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C83v11Ev();
extern void _ZN8S20971C8D1Ev();
extern void _ZN8S20971C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C8__8S20971C2[] = {
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C83v11Ev,
  (VTBL_ENTRY)&_ZN8S20971C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C8D0Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C68S20971C8__A1__8S20971C2[] = {
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C68S20971C8__A1__8S20971C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C68S20971C8__A1__8S20971C2[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C9D1Ev();
extern void _ZN8S20971C9D0Ev();
extern void _ZN8S20971C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C98S20971C8__8S20971C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C68S20971C98S20971C8__A2__8S20971C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C68S20971C98S20971C8__A2__8S20971C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,120),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C68S20971C98S20971C8__A2__8S20971C2[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C98S20971C8__8S20971C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,120),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C98S20971C8__8S20971C2[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C8__8S20971C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C8__8S20971C2[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void ABISELECT(_ZThn16_N8S20971C8D1Ev,_ZThn8_N8S20971C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20971C8D0Ev,_ZThn8_N8S20971C8D0Ev)();
extern void _ZN8S20971C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C9__8S20971C8__8S20971C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20971C8D1Ev,_ZThn8_N8S20971C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20971C8D0Ev,_ZThn8_N8S20971C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20971C8D1Ev,_ZTv0_n24_N8S20971C8D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20971C8D0Ev,_ZTv0_n24_N8S20971C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20971C3__8S20971C8__8S20971C2[] = {
  ABISELECT(448,292),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(448,292),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C8D1Ev,_ZTv0_n24_N8S20971C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C8D0Ev,_ZTv0_n24_N8S20971C8D0Ev),
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__A2__8S20971C8__8S20971C2[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S20971C10__8S20971C8__8S20971C2[] = {
  0,
  0,
  ABISELECT(-1312,-840),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
static  VTT_ENTRY vtt_S20971C2[] = {
  {&(_ZTV8S20971C2[8]),  8,83},
  {&(_ZTV8S20971C2[19]),  19,83},
  {&(_ZTV8S20971C2[27]),  27,83},
  {&(_ZTV8S20971C2[34]),  34,83},
  {&(_ZTV8S20971C2[40]),  40,83},
  {&(_ZTV8S20971C2[56]),  56,83},
  {&(_ZTV8S20971C2[64]),  64,83},
  {&(_ZTV8S20971C2[70]),  70,83},
  {&(_ZTV8S20971C2[76]),  76,83},
  {&(_ZTV8S20971C2[81]),  81,83},
  {&(_tg__ZTV8S20971C3__8S20971C2[5]),  5,7},
  {&(_tg__ZTV8S20971C4__8S20971C3__8S20971C2[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C3__8S20971C2[3]),  3,4},
  {&(_tg__ZTV8S20971C6__8S20971C3__8S20971C2[5]),  5,6},
  {&(_tg__ZTV8S20971C6__8S20971C2[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C6__8S20971C2[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C6__8S20971C2[3]),  3,4},
  {&(_tg__ZTV8S20971C8__8S20971C2[7]),  7,11},
  {&(_tg__ZTV8S20971C68S20971C8__A1__8S20971C2[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C68S20971C8__A1__8S20971C2[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C68S20971C8__A1__8S20971C2[3]),  3,4},
  {&(_tg__ZTV8S20971C98S20971C8__8S20971C2[4]),  4,8},
  {&(_tg__ZTV8S20971C68S20971C98S20971C8__A2__8S20971C2[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C68S20971C98S20971C8__A2__8S20971C2[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C68S20971C98S20971C8__A2__8S20971C2[3]),  3,4},
  {&(_tg__ZTV8S20971C4__8S20971C98S20971C8__8S20971C2[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C98S20971C8__8S20971C2[3]),  3,4},
  {&(_tg__ZTV8S20971C4__8S20971C8__8S20971C2[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C8__8S20971C2[3]),  3,4},
  {&(_tg__ZTV8S20971C9__8S20971C8__8S20971C2[4]),  4,8},
  {&(_tg__ZTV8S20971C3__8S20971C8__8S20971C2[6]),  6,8},
  {&(_tg__ZTV8S20971C6__A2__8S20971C8__8S20971C2[5]),  5,6},
  {&(_tg__ZTV9S20971C10__8S20971C8__8S20971C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20971C2[];
extern  VTBL_ENTRY _ZTV8S20971C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C2[];
static VTBL_ENTRY alt_thunk_names83[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20971C2D0Ev,_ZTv0_n40_N8S20971C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S20971C2D0Ev,_ZThn300_N8S20971C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20971C2D1Ev,_ZTv0_n40_N8S20971C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S20971C2D1Ev,_ZThn300_N8S20971C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20971C2D0Ev,_ZTv0_n24_N8S20971C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20971C2D0Ev,_ZThn8_N8S20971C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20971C2D1Ev,_ZTv0_n24_N8S20971C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20971C2D1Ev,_ZThn8_N8S20971C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20971C2 = {  "S20971C2", // class name
  bases_S20971C2, 13,
  &(vtc_S20971C2[0]), // expected_vtbl_contents
  &(vtt_S20971C2[0]), // expected_vtt_contents
  ABISELECT(1824,1168), // object size
  NSPAIRA(_ZTI8S20971C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20971C2),83, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20971C2),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names83,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C13  : virtual S20971C4 , virtual S20971C5 , S20971C6 {
  __tsi64 s20971c13f0;
  void *s20971c13f1;
  int s20971c13f2[2];
  virtual void  v15(); // _ZN9S20971C133v15Ev
  ~S20971C13(); // tgen
  S20971C13(); // tgen
};
//SIG(-1 S20971C13) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} VBC3 BC4{ VBC2 VBC3 v6 Fi} v1 FL Fp Fi[2]}


void  S20971C13 ::v15(){vfunc_called(this, "_ZN9S20971C133v15Ev");}
S20971C13 ::~S20971C13(){ note_dtor("S20971C13", this);} // tgen
S20971C13 ::S20971C13(){ note_ctor("S20971C13", this);} // tgen

static void Test_S20971C13()
{
  extern Class_Descriptor cd_S20971C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,34)];
    init_test(&cd_S20971C13, buf);
    S20971C13 *dp, &lv = *(dp=new (buf) S20971C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,132), "sizeof(S20971C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20971C13)");
    check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(40,28), "S20971C13");
    check_base_class_offset(lv, (S20971C4*), ABISELECT(40,28), "S20971C13");
    check_base_class_offset(lv, (S20971C4*)(S20971C6*), ABISELECT(40,28), "S20971C13");
    /*is_ambiguous_... S20971C13::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*), ABISELECT(152,100), "S20971C13");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*), ABISELECT(152,100), "S20971C13");
    check_base_class_offset(lv, (S20971C6*), 0, "S20971C13");
    check_field_offset(lv, s20971c13f0, ABISELECT(16,8), "S20971C13.s20971c13f0");
    check_field_offset(lv, s20971c13f1, ABISELECT(24,16), "S20971C13.s20971c13f1");
    check_field_offset(lv, s20971c13f2, ABISELECT(32,20), "S20971C13.s20971c13f2");
    test_class_info(&lv, &cd_S20971C13);
    dp->~S20971C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C13(Test_S20971C13, "S20971C13", ABISELECT(200,132));

#else // __cplusplus

extern void _ZN9S20971C13C1Ev();
extern void _ZN9S20971C13D1Ev();
Name_Map name_map_S20971C13[] = {
  NSPAIR(_ZN9S20971C13C1Ev),
  NSPAIR(_ZN9S20971C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
static Base_Class bases_S20971C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(40,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C5,    ABISELECT(152,100), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20971C13[];
extern void _ZN8S20971C62v7Ev();
extern void _ZN9S20971C133v15Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY vtc_S20971C13[] = {
  ABISELECT(152,100),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20971C13[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20971C133v15Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20971C13[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  0,
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20971C13[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern VTBL_ENTRY _ZTV9S20971C13[];
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__9S20971C13[] = {
  ABISELECT(152,100),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C6__9S20971C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C6__9S20971C13[] = {
  0,
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
static  VTT_ENTRY vtt_S20971C13[] = {
  {&(_ZTV9S20971C13[4]),  4,20},
  {&(_tg__ZTV8S20971C6__9S20971C13[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C6__9S20971C13[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C6__9S20971C13[3]),  3,4},
  {&(_ZTV9S20971C13[12]),  12,20},
  {&(_ZTV9S20971C13[19]),  19,20},
};
extern VTBL_ENTRY _ZTI9S20971C13[];
extern  VTBL_ENTRY _ZTV9S20971C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20971C13[];
Class_Descriptor cd_S20971C13 = {  "S20971C13", // class name
  bases_S20971C13, 4,
  &(vtc_S20971C13[0]), // expected_vtbl_contents
  &(vtt_S20971C13[0]), // expected_vtt_contents
  ABISELECT(200,132), // object size
  NSPAIRA(_ZTI9S20971C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20971C13),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20971C13),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C12  : virtual S20971C4 {
  void *s20971c12f0[4];
  ::S20971C5 s20971c12f1;
  ::S20971C13 s20971c12f2;
  ~S20971C12(); // tgen
  S20971C12(); // tgen
};
//SIG(-1 S20971C12) C1{ VBC2{ BC3{ v1 Fp Fc[5] FL Fp[2]} v2 v3 v4 FC3 Fc[2] Fp} Fp[4] FC3 FC4{ VBC2 VBC3 BC5{ VBC2 VBC3 v6 Fi} v5 FL Fp Fi[2]}}


S20971C12 ::~S20971C12(){ note_dtor("S20971C12", this);} // tgen
S20971C12 ::S20971C12(){ note_ctor("S20971C12", this);} // tgen

static void Test_S20971C12()
{
  extern Class_Descriptor cd_S20971C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(51,65)];
    init_test(&cd_S20971C12, buf);
    S20971C12 *dp, &lv = *(dp=new (buf) S20971C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(400,256), "sizeof(S20971C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20971C12)");
    check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(288,184), "S20971C12");
    check_base_class_offset(lv, (S20971C4*), ABISELECT(288,184), "S20971C12");
    check_field_offset(lv, s20971c12f0, ABISELECT(8,4), "S20971C12.s20971c12f0");
    check_field_offset(lv, s20971c12f1, ABISELECT(40,20), "S20971C12.s20971c12f1");
    check_field_offset(lv, s20971c12f2, ABISELECT(88,52), "S20971C12.s20971c12f2");
    test_class_info(&lv, &cd_S20971C12);
    dp->~S20971C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C12(Test_S20971C12, "S20971C12", ABISELECT(400,256));

#else // __cplusplus

extern void _ZN9S20971C12C1Ev();
extern void _ZN9S20971C12D1Ev();
Name_Map name_map_S20971C12[] = {
  NSPAIR(_ZN9S20971C12C1Ev),
  NSPAIR(_ZN9S20971C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
static Base_Class bases_S20971C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    ABISELECT(288,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(288,184), //bcp->offset
    3, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20971C12[];
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY vtc_S20971C12[] = {
  ABISELECT(288,184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20971C12[0]),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI9S20971C12[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern VTBL_ENTRY _ZTV9S20971C12[];
static  VTT_ENTRY vtt_S20971C12[] = {
  {&(_ZTV9S20971C12[3]),  3,13},
  {&(_ZTV9S20971C12[9]),  9,13},
};
extern VTBL_ENTRY _ZTI9S20971C12[];
extern  VTBL_ENTRY _ZTV9S20971C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20971C12[];
Class_Descriptor cd_S20971C12 = {  "S20971C12", // class name
  bases_S20971C12, 2,
  &(vtc_S20971C12[0]), // expected_vtbl_contents
  &(vtt_S20971C12[0]), // expected_vtt_contents
  ABISELECT(400,256), // object size
  NSPAIRA(_ZTI9S20971C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20971C12),13, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20971C12),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C14  : S20971C9 , S20971C4 , S20971C6 , virtual S20971C10 {
  int s20971c14f0;
  virtual void  v16(); // _ZN9S20971C143v16Ev
  virtual void  v17(); // _ZN9S20971C143v17Ev
  virtual void  v18(); // _ZN9S20971C143v18Ev
  ~S20971C14(); // tgen
  S20971C14(); // tgen
};
//SIG(-1 S20971C14) C1{ BC2{ BC3{ VBC4{ BC5{ v4 Fp Fc[5] FL Fp[2]} v5 v6 v7 FC5 Fc[2] Fp} VBC5 v8 Fi} BC4 BC5 vd v9} BC4 BC3 VBC6{ v10 v11 Fi Fc[7] Fp Fi Fs} v1 v2 v3 Fi}


void  S20971C14 ::v16(){vfunc_called(this, "_ZN9S20971C143v16Ev");}
void  S20971C14 ::v17(){vfunc_called(this, "_ZN9S20971C143v17Ev");}
void  S20971C14 ::v18(){vfunc_called(this, "_ZN9S20971C143v18Ev");}
S20971C14 ::~S20971C14(){ note_dtor("S20971C14", this);} // tgen
S20971C14 ::S20971C14(){ note_ctor("S20971C14", this);} // tgen

static void Test_S20971C14()
{
  extern Class_Descriptor cd_S20971C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(64,83)];
    init_test(&cd_S20971C14, buf);
    S20971C14 *dp, &lv = *(dp=new (buf) S20971C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(504,328), "sizeof(S20971C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20971C14)");
    /*is_ambiguous_... S20971C14::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(304,196), "S20971C14");
    check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C9*), ABISELECT(304,196), "S20971C14");
    /*is_ambiguous_... S20971C14::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*), ABISELECT(304,196), "S20971C14");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C9*), ABISELECT(416,268), "S20971C14");
    /*is_ambiguous_... S20971C14::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*), ABISELECT(416,268), "S20971C14");
    check_base_class_offset(lv, (S20971C6*)(S20971C9*), 0, "S20971C14");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*)(S20971C9*), ABISELECT(16,8), "S20971C14");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C9*), ABISELECT(16,8), "S20971C14");
    /*is_ambiguous_... S20971C9::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C9*), ABISELECT(128,80), "S20971C14");
    check_base_class_offset(lv, (S20971C9*), 0, "S20971C14");
    /*is_ambiguous_... S20971C14::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(176,112), "S20971C14");
    /*is_ambiguous_... S20971C14::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*), ABISELECT(176,112), "S20971C14");
    /*is_ambiguous_... S20971C14::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C6*), ABISELECT(288,184), "S20971C14");
    check_base_class_offset(lv, (S20971C10*), ABISELECT(464,300), "S20971C14");
    check_field_offset(lv, s20971c14f0, ABISELECT(300,192), "S20971C14.s20971c14f0");
    test_class_info(&lv, &cd_S20971C14);
    dp->~S20971C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C14(Test_S20971C14, "S20971C14", ABISELECT(504,328));

#else // __cplusplus

extern void _ZN9S20971C14C1Ev();
extern void _ZN9S20971C14D1Ev();
Name_Map name_map_S20971C14[] = {
  NSPAIR(_ZN9S20971C14C1Ev),
  NSPAIR(_ZN9S20971C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C9;
extern VTBL_ENTRY _ZTI8S20971C9[];
extern  VTBL_ENTRY _ZTV8S20971C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C9[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C10;
extern VTBL_ENTRY _ZTI9S20971C10[];
extern  VTBL_ENTRY _ZTV9S20971C10[];
static Base_Class bases_S20971C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(304,196), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20971C5,    ABISELECT(416,268), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20971C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(128,80), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20971C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20971C5,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(176,112), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20971C6,    ABISELECT(288,184), //bcp->offset
    27, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20971C10,    ABISELECT(464,300), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20971C14[];
extern void _ZN8S20971C62v7Ev();
extern void _ZN9S20971C14D1Ev();
extern void _ZN9S20971C14D0Ev();
extern void _ZN8S20971C92v8Ev();
extern void _ZN9S20971C143v16Ev();
extern void _ZN9S20971C143v17Ev();
extern void _ZN9S20971C143v18Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY vtc_S20971C14[] = {
  ABISELECT(464,300),
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20971C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20971C14D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
  (VTBL_ENTRY)&_ZN9S20971C143v16Ev,
  (VTBL_ENTRY)&_ZN9S20971C143v17Ev,
  (VTBL_ENTRY)&_ZN9S20971C143v18Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  ABISELECT(128,84),
  ABISELECT(16,12),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  0,
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
extern VTBL_ENTRY _ZTV9S20971C14[];
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C9D1Ev();
extern void _ZN8S20971C9D0Ev();
extern void _ZN8S20971C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C9__9S20971C14[] = {
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C68S20971C9__9S20971C14[] = {
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C68S20971C9__9S20971C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C68S20971C9__9S20971C14[] = {
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C9__9S20971C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C9__9S20971C14[] = {
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__A1__9S20971C14[] = {
  ABISELECT(128,84),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C6__A1__9S20971C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C6__A1__9S20971C14[] = {
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
static  VTT_ENTRY vtt_S20971C14[] = {
  {&(_ZTV9S20971C14[5]),  5,52},
  {&(_tg__ZTV8S20971C9__9S20971C14[4]),  4,8},
  {&(_tg__ZTV8S20971C68S20971C9__9S20971C14[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C68S20971C9__9S20971C14[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C68S20971C9__9S20971C14[3]),  3,4},
  {&(_tg__ZTV8S20971C4__8S20971C9__9S20971C14[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C9__9S20971C14[3]),  3,4},
  {&(_tg__ZTV8S20971C6__A1__9S20971C14[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C6__A1__9S20971C14[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C6__A1__9S20971C14[3]),  3,4},
  {&(_ZTV9S20971C14[38]),  38,52},
  {&(_ZTV9S20971C14[45]),  45,52},
  {&(_ZTV9S20971C14[31]),  31,52},
  {&(_ZTV9S20971C14[50]),  50,52},
};
extern VTBL_ENTRY _ZTI9S20971C14[];
extern  VTBL_ENTRY _ZTV9S20971C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20971C14[];
Class_Descriptor cd_S20971C14 = {  "S20971C14", // class name
  bases_S20971C14, 12,
  &(vtc_S20971C14[0]), // expected_vtbl_contents
  &(vtt_S20971C14[0]), // expected_vtt_contents
  ABISELECT(504,328), // object size
  NSPAIRA(_ZTI9S20971C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20971C14),52, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20971C14),14, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C11  : S20971C12 , S20971C9 , virtual S20971C13 , virtual S20971C6 , virtual S20971C14 {
  int s20971c11f0;
  long double s20971c11f1;
  int s20971c11f2;
  virtual  ~S20971C11(); // _ZN9S20971C11D2Ev
  S20971C11(); // tgen
};
//SIG(-1 S20971C11) C1{ BC2{ VBC3{ BC4{ v1 Fp Fc[5] FL Fp[2]} v2 v3 v4 FC4 Fc[2] Fp} Fp[4] FC4 FC5{ VBC3 VBC4 BC6{ VBC3 VBC4 v5 Fi} v7 FL Fp Fi[2]}} BC7{ BC6 BC3 BC4 vd v6} VBC5 VBC6 VBC8{ BC7 BC3 BC6 VBC9{ v8 v9 Fi Fc[7] Fp Fi Fs} v10 v11 v12 Fi} vd Fi FD Fi}


 S20971C11 ::~S20971C11(){ note_dtor("S20971C11", this);}
S20971C11 ::S20971C11(){ note_ctor("S20971C11", this);} // tgen

static void Test_S20971C11()
{
  extern Class_Descriptor cd_S20971C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(68,171)];
    init_test(&cd_S20971C11, buf);
    S20971C11 *dp, &lv = *(dp=new (buf) S20971C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1072,680), "sizeof(S20971C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20971C11)");
    /*is_ambiguous_... S20971C11::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(504,316), "S20971C11");
    check_base_class_offset(lv, (S20971C4*)(S20971C12*), ABISELECT(504,316), "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C9 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C9*), ABISELECT(504,316), "S20971C11");
    check_base_class_offset(lv, (S20971C4*)(S20971C13*), ABISELECT(504,316), "S20971C11");
    check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C13*), ABISELECT(504,316), "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*), ABISELECT(504,316), "S20971C11");
    check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C9*)(S20971C14*), ABISELECT(504,316), "S20971C11");
    /*is_ambiguous_... S20971C14::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C14*), ABISELECT(504,316), "S20971C11");
    check_base_class_offset(lv, (S20971C12*), 0, "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C9 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C9*), ABISELECT(616,388), "S20971C11");
    /*is_ambiguous_... S20971C13::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C13*), ABISELECT(616,388), "S20971C11");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C13*), ABISELECT(616,388), "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*), ABISELECT(616,388), "S20971C11");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C9*)(S20971C14*), ABISELECT(616,388), "S20971C11");
    /*is_ambiguous_... S20971C14::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C14*), ABISELECT(616,388), "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C9 */ AMB_check_base_class_offset(lv, (S20971C6*)(S20971C9*), ABISELECT(288,184), "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C9 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*)(S20971C9*), ABISELECT(304,192), "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C9 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C9*), ABISELECT(304,192), "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C9 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C9*), ABISELECT(416,264), "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C9 */ AMB_check_base_class_offset(lv, (S20971C9*), ABISELECT(288,184), "S20971C11");
    check_base_class_offset(lv, (S20971C6*)(S20971C13*), ABISELECT(664,420), "S20971C11");
    check_base_class_offset(lv, (S20971C13*), ABISELECT(664,420), "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C6*), ABISELECT(704,448), "S20971C11");
    check_base_class_offset(lv, (S20971C6*)(S20971C9*)(S20971C14*), ABISELECT(720,456), "S20971C11");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*)(S20971C9*)(S20971C14*), ABISELECT(736,464), "S20971C11");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C9*)(S20971C14*), ABISELECT(736,464), "S20971C11");
    /*is_ambiguous_... S20971C9::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C9*)(S20971C14*), ABISELECT(848,536), "S20971C11");
    check_base_class_offset(lv, (S20971C9*)(S20971C14*), ABISELECT(720,456), "S20971C11");
    /*is_ambiguous_... S20971C14::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*)(S20971C14*), ABISELECT(896,568), "S20971C11");
    /*is_ambiguous_... S20971C14::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C14*), ABISELECT(896,568), "S20971C11");
    /*is_ambiguous_... S20971C14::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C6*)(S20971C14*), ABISELECT(1008,640), "S20971C11");
    check_base_class_offset(lv, (S20971C10*)(S20971C14*), ABISELECT(1024,652), "S20971C11");
    check_base_class_offset(lv, (S20971C14*), ABISELECT(720,456), "S20971C11");
    check_field_offset(lv, s20971c11f0, ABISELECT(464,296), "S20971C11.s20971c11f0");
    check_field_offset(lv, s20971c11f1, ABISELECT(480,300), "S20971C11.s20971c11f1");
    check_field_offset(lv, s20971c11f2, ABISELECT(496,312), "S20971C11.s20971c11f2");
    test_class_info(&lv, &cd_S20971C11);
    dp->~S20971C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C11(Test_S20971C11, "S20971C11", ABISELECT(1072,680));

#else // __cplusplus

extern void _ZN9S20971C11C1Ev();
extern void _ZN9S20971C11D2Ev();
Name_Map name_map_S20971C11[] = {
  NSPAIR(_ZN9S20971C11C1Ev),
  NSPAIR(_ZN9S20971C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C12;
extern VTBL_ENTRY _ZTI9S20971C12[];
extern  VTBL_ENTRY _ZTV9S20971C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20971C12[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C9;
extern VTBL_ENTRY _ZTI8S20971C9[];
extern  VTBL_ENTRY _ZTV8S20971C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C9[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C13;
extern VTBL_ENTRY _ZTI9S20971C13[];
extern  VTBL_ENTRY _ZTV9S20971C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20971C13[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C9;
extern VTBL_ENTRY _ZTI8S20971C9[];
extern  VTBL_ENTRY _ZTV8S20971C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C9[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C10;
extern VTBL_ENTRY _ZTI9S20971C10[];
extern  VTBL_ENTRY _ZTV9S20971C10[];
extern Class_Descriptor cd_S20971C14;
extern VTBL_ENTRY _ZTI9S20971C14[];
extern  VTBL_ENTRY _ZTV9S20971C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20971C14[];
static Base_Class bases_S20971C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    ABISELECT(504,316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(504,316), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20971C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20971C5,    ABISELECT(616,388), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20971C6,    ABISELECT(288,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(304,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(304,192), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(416,264), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20971C9,    ABISELECT(288,184), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20971C6,    ABISELECT(664,420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20971C13,    ABISELECT(664,420), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C6,    ABISELECT(704,448), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C6,    ABISELECT(720,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(736,464), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(736,464), //bcp->offset
    77, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(848,536), //bcp->offset
    83, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20971C9,    ABISELECT(720,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(896,568), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(896,568), //bcp->offset
    86, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20971C6,    ABISELECT(1008,640), //bcp->offset
    92, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20971C10,    ABISELECT(1024,652), //bcp->offset
    97, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20971C14,    ABISELECT(720,456), //bcp->offset
    55, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20971C11[];
extern void _ZN9S20971C11D1Ev();
extern void _ZN9S20971C11D0Ev();
extern void _ZN8S20971C62v7Ev();
extern void ABISELECT(_ZThn288_N9S20971C11D1Ev,_ZThn184_N9S20971C11D1Ev)();
extern void ABISELECT(_ZThn288_N9S20971C11D0Ev,_ZThn184_N9S20971C11D0Ev)();
extern void _ZN8S20971C92v8Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C62v7Ev();
extern void _ZN9S20971C133v15Ev();
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C62v7Ev();
extern void ABISELECT(_ZTv0_n56_N9S20971C11D1Ev,_ZTv0_n28_N9S20971C11D1Ev)();
extern void ABISELECT(_ZThn720_N9S20971C11D1Ev,_ZThn456_N9S20971C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20971C11D0Ev,_ZTv0_n28_N9S20971C11D0Ev)();
extern void ABISELECT(_ZThn720_N9S20971C11D0Ev,_ZThn456_N9S20971C11D0Ev)() __attribute__((weak));
extern void _ZN8S20971C92v8Ev();
extern void _ZN9S20971C143v16Ev();
extern void _ZN9S20971C143v17Ev();
extern void _ZN9S20971C143v18Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C62v7Ev();
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY vtc_S20971C11[] = {
  ABISELECT(1024,652),
  ABISELECT(720,456),
  ABISELECT(704,448),
  ABISELECT(664,420),
  ABISELECT(616,388),
  ABISELECT(504,316),
  0,
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN9S20971C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20971C11D0Ev,
  ABISELECT(328,204),
  ABISELECT(216,132),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N9S20971C11D1Ev,_ZThn184_N9S20971C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N9S20971C11D0Ev,_ZThn184_N9S20971C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
  ABISELECT(-304,-192),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  ABISELECT(-416,-264),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-504,-316),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  0,
  ABISELECT(-616,-388),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-664,-420),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20971C133v15Ev,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-200,-132),
  ABISELECT(-704,-448),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  ABISELECT(-720,-456),
  0,
  ABISELECT(304,196),
  ABISELECT(-104,-68),
  ABISELECT(-216,-140),
  ABISELECT(-720,-456),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20971C11D1Ev,_ZTv0_n28_N9S20971C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20971C11D0Ev,_ZTv0_n28_N9S20971C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
  (VTBL_ENTRY)&_ZN9S20971C143v16Ev,
  (VTBL_ENTRY)&_ZN9S20971C143v17Ev,
  (VTBL_ENTRY)&_ZN9S20971C143v18Ev,
  ABISELECT(-736,-464),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  ABISELECT(-848,-536),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  ABISELECT(-896,-568),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  ABISELECT(-392,-252),
  ABISELECT(-504,-324),
  ABISELECT(-1008,-640),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  0,
  0,
  ABISELECT(-1024,-652),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
extern VTBL_ENTRY _ZTV9S20971C11[];
static  VTBL_ENTRY _tg__ZTV9S20971C12__9S20971C11[] = {
  ABISELECT(504,316),
  0,
  (VTBL_ENTRY)&(_ZTI9S20971C12[0]),
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__9S20971C12__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-504,-316),
  (VTBL_ENTRY)&(_ZTI9S20971C12[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C9D1Ev();
extern void _ZN8S20971C9D0Ev();
extern void _ZN8S20971C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C9__9S20971C11[] = {
  ABISELECT(328,204),
  ABISELECT(216,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C68S20971C9__9S20971C11[] = {
  ABISELECT(328,204),
  ABISELECT(216,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C68S20971C9__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C68S20971C9__9S20971C11[] = {
  0,
  ABISELECT(-328,-204),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C9__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C9__9S20971C11[] = {
  0,
  ABISELECT(-328,-204),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN9S20971C133v15Ev();
static  VTBL_ENTRY _tg__ZTV9S20971C13__9S20971C11[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20971C13[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20971C133v15Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C69S20971C13__A1__9S20971C11[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C69S20971C13__A1__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C69S20971C13__A1__9S20971C11[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__9S20971C13__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI9S20971C13[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__9S20971C13__9S20971C11[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S20971C13[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__A2__9S20971C11[] = {
  ABISELECT(-88,-60),
  ABISELECT(-200,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C6__A2__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(200,132),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C6__A2__9S20971C11[] = {
  0,
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN9S20971C14D1Ev();
extern void _ZN9S20971C14D0Ev();
extern void _ZN8S20971C92v8Ev();
extern void _ZN9S20971C143v16Ev();
extern void _ZN9S20971C143v17Ev();
extern void _ZN9S20971C143v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20971C14__9S20971C11[] = {
  ABISELECT(304,196),
  ABISELECT(-104,-68),
  ABISELECT(-216,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20971C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20971C14D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
  (VTBL_ENTRY)&_ZN9S20971C143v16Ev,
  (VTBL_ENTRY)&_ZN9S20971C143v17Ev,
  (VTBL_ENTRY)&_ZN9S20971C143v18Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C9D1Ev();
extern void _ZN8S20971C9D0Ev();
extern void _ZN8S20971C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C99S20971C14__A1__9S20971C11[] = {
  ABISELECT(-104,-68),
  ABISELECT(-216,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C68S20971C99S20971C14__A3__9S20971C11[] = {
  ABISELECT(-104,-68),
  ABISELECT(-216,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C68S20971C99S20971C14__A3__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(216,140),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C68S20971C99S20971C14__A3__9S20971C11[] = {
  0,
  ABISELECT(104,68),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C99S20971C14__A1__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(216,140),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C99S20971C14__A1__9S20971C11[] = {
  0,
  ABISELECT(104,68),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C69S20971C14__A4__9S20971C11[] = {
  ABISELECT(-392,-252),
  ABISELECT(-504,-324),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C69S20971C14__A4__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(504,324),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C69S20971C14__A4__9S20971C11[] = {
  0,
  ABISELECT(392,252),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__9S20971C14__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(216,140),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__9S20971C14__9S20971C11[] = {
  0,
  ABISELECT(104,68),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__A1__9S20971C14__9S20971C11[] = {
  ABISELECT(-392,-252),
  ABISELECT(-504,-324),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S20971C10__9S20971C14__9S20971C11[] = {
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
static  VTT_ENTRY vtt_S20971C11[] = {
  {&(_ZTV9S20971C11[8]),  8,103},
  {&(_tg__ZTV9S20971C12__9S20971C11[3]),  3,3},
  {&(_tg__ZTV8S20971C4__9S20971C12__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C9__9S20971C11[4]),  4,8},
  {&(_tg__ZTV8S20971C68S20971C9__9S20971C11[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C68S20971C9__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C68S20971C9__9S20971C11[3]),  3,4},
  {&(_tg__ZTV8S20971C4__8S20971C9__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C9__9S20971C11[3]),  3,4},
  {&(_ZTV9S20971C11[33]),  33,103},
  {&(_ZTV9S20971C11[14]),  14,103},
  {&(_ZTV9S20971C11[40]),  40,103},
  {&(_ZTV9S20971C11[47]),  47,103},
  {&(_ZTV9S20971C11[54]),  54,103},
  {&(_ZTV9S20971C11[70]),  70,103},
  {&(_ZTV9S20971C11[79]),  79,103},
  {&(_ZTV9S20971C11[85]),  85,103},
  {&(_ZTV9S20971C11[88]),  88,103},
  {&(_ZTV9S20971C11[96]),  96,103},
  {&(_ZTV9S20971C11[101]),  101,103},
  {&(_tg__ZTV9S20971C13__9S20971C11[4]),  4,6},
  {&(_tg__ZTV8S20971C69S20971C13__A1__9S20971C11[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C69S20971C13__A1__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C69S20971C13__A1__9S20971C11[3]),  3,4},
  {&(_tg__ZTV8S20971C4__9S20971C13__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__9S20971C13__9S20971C11[3]),  3,4},
  {&(_tg__ZTV8S20971C6__A2__9S20971C11[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C6__A2__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C6__A2__9S20971C11[3]),  3,4},
  {&(_tg__ZTV9S20971C14__9S20971C11[5]),  5,12},
  {&(_tg__ZTV8S20971C99S20971C14__A1__9S20971C11[4]),  4,8},
  {&(_tg__ZTV8S20971C68S20971C99S20971C14__A3__9S20971C11[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C68S20971C99S20971C14__A3__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C68S20971C99S20971C14__A3__9S20971C11[3]),  3,4},
  {&(_tg__ZTV8S20971C4__8S20971C99S20971C14__A1__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C99S20971C14__A1__9S20971C11[3]),  3,4},
  {&(_tg__ZTV8S20971C69S20971C14__A4__9S20971C11[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C69S20971C14__A4__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C69S20971C14__A4__9S20971C11[3]),  3,4},
  {&(_tg__ZTV8S20971C4__9S20971C14__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__9S20971C14__9S20971C11[3]),  3,4},
  {&(_tg__ZTV8S20971C6__A1__9S20971C14__9S20971C11[4]),  4,5},
  {&(_tg__ZTV9S20971C10__9S20971C14__9S20971C11[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20971C11[];
extern  VTBL_ENTRY _ZTV9S20971C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20971C11[];
static VTBL_ENTRY alt_thunk_names84[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20971C11D0Ev,_ZTv0_n28_N9S20971C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20971C11D0Ev,_ZThn456_N9S20971C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20971C11D1Ev,_ZTv0_n28_N9S20971C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20971C11D1Ev,_ZThn456_N9S20971C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20971C11 = {  "S20971C11", // class name
  bases_S20971C11, 22,
  &(vtc_S20971C11[0]), // expected_vtbl_contents
  &(vtt_S20971C11[0]), // expected_vtt_contents
  ABISELECT(1072,680), // object size
  NSPAIRA(_ZTI9S20971C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20971C11),103, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20971C11),43, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names84,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C1  : virtual S20971C2 {
  ::S20971C11 s20971c1f0;
  void *s20971c1f1[2];
  virtual  ~S20971C1(); // _ZN8S20971C1D2Ev
  virtual void  v1(); // _ZN8S20971C12v1Ev
  virtual void  v2(); // _ZN8S20971C12v2Ev
  S20971C1(); // tgen
};
//SIG(1 S20971C1) C1{ VBC2{ VBC3{ VBC4{ BC5{ v3 Fp Fc[5] FL Fp[2]} v4 v5 v6 FC5 Fc[2] Fp} VBC5 VBC6{ VBC4 VBC5 v7 Fi} vd FC4 FC7{} FD[5] Fp FC5 Fi} VBC8{ VBC4 BC6 BC9{ BC6 BC4 BC5 vd v8} VBC3 VBC10{ v9 v10 Fi Fc[7] Fp Fi Fs} v11 FC4 FC9[3]} vd v12 v13 v14 Fc[4]} vd v1 v2 FC11{ BC12{ VBC4 Fp[4] FC5 FC13{ VBC4 VBC5 BC6 v15 FL Fp Fi[2]}} BC9 VBC13 VBC6 VBC14{ BC9 BC4 BC6 VBC10 v16 v17 v18 Fi} vd Fi FD Fi} Fp[2]}


 S20971C1 ::~S20971C1(){ note_dtor("S20971C1", this);}
void  S20971C1 ::v1(){vfunc_called(this, "_ZN8S20971C12v1Ev");}
void  S20971C1 ::v2(){vfunc_called(this, "_ZN8S20971C12v2Ev");}
S20971C1 ::S20971C1(){ note_ctor("S20971C1", this);} // tgen

static void Test_S20971C1()
{
  extern Class_Descriptor cd_S20971C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(184,466)];
    init_test(&cd_S20971C1, buf);
    S20971C1 *dp, &lv = *(dp=new (buf) S20971C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2928,1860), "sizeof(S20971C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20971C1)");
    /*is_ambiguous_... S20971C1::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(1392,880), "S20971C1");
    check_base_class_offset(lv, (S20971C4*)(S20971C3*), ABISELECT(1392,880), "S20971C1");
    /*is_ambiguous_... S20971C1::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*), ABISELECT(1392,880), "S20971C1");
    /*is_ambiguous_... S20971C8::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C8*), ABISELECT(1392,880), "S20971C1");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C8*), ABISELECT(1392,880), "S20971C1");
    check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C9*)(S20971C8*), ABISELECT(1392,880), "S20971C1");
    /*is_ambiguous_... S20971C3::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C3*), ABISELECT(1504,952), "S20971C1");
    /*is_ambiguous_... S20971C1::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*), ABISELECT(1504,952), "S20971C1");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C8*), ABISELECT(1504,952), "S20971C1");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C9*)(S20971C8*), ABISELECT(1504,952), "S20971C1");
    check_base_class_offset(lv, (S20971C6*)(S20971C3*), ABISELECT(1552,984), "S20971C1");
    check_base_class_offset(lv, (S20971C3*)(S20971C2*), ABISELECT(1120,700), "S20971C1");
    check_base_class_offset(lv, (S20971C3*)(S20971C8*), ABISELECT(1120,700), "S20971C1");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C6*)(S20971C8*), ABISELECT(1568,992), "S20971C1");
    check_base_class_offset(lv, (S20971C6*)(S20971C9*)(S20971C8*), ABISELECT(1584,1000), "S20971C1");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*)(S20971C9*)(S20971C8*), ABISELECT(1600,1008), "S20971C1");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C9*)(S20971C8*), ABISELECT(1600,1008), "S20971C1");
    /*is_ambiguous_... S20971C9::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C9*)(S20971C8*), ABISELECT(1712,1080), "S20971C1");
    check_base_class_offset(lv, (S20971C9*)(S20971C8*), ABISELECT(1584,1000), "S20971C1");
    check_base_class_offset(lv, (S20971C10*)(S20971C8*), ABISELECT(2880,1832), "S20971C1");
    check_base_class_offset(lv, (S20971C8*)(S20971C2*), ABISELECT(1568,992), "S20971C1");
    check_base_class_offset(lv, (S20971C2*), ABISELECT(1104,692), "S20971C1");
    check_field_offset(lv, s20971c1f0, ABISELECT(16,4), "S20971C1.s20971c1f0");
    check_field_offset(lv, s20971c1f1, ABISELECT(1088,684), "S20971C1.s20971c1f1");
    test_class_info(&lv, &cd_S20971C1);
    dp->~S20971C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C1(Test_S20971C1, "S20971C1", ABISELECT(2928,1860));

#else // __cplusplus

extern void _ZN8S20971C1C1Ev();
extern void _ZN8S20971C1D2Ev();
Name_Map name_map_S20971C1[] = {
  NSPAIR(_ZN8S20971C1C1Ev),
  NSPAIR(_ZN8S20971C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C3;
extern VTBL_ENTRY _ZTI8S20971C3[];
extern  VTBL_ENTRY _ZTV8S20971C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C3[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C9;
extern VTBL_ENTRY _ZTI8S20971C9[];
extern  VTBL_ENTRY _ZTV8S20971C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C9[];
extern Class_Descriptor cd_S20971C10;
extern VTBL_ENTRY _ZTI9S20971C10[];
extern  VTBL_ENTRY _ZTV9S20971C10[];
extern Class_Descriptor cd_S20971C8;
extern VTBL_ENTRY _ZTI8S20971C8[];
extern  VTBL_ENTRY _ZTV8S20971C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C8[];
extern Class_Descriptor cd_S20971C2;
extern VTBL_ENTRY _ZTI8S20971C2[];
extern  VTBL_ENTRY _ZTV8S20971C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C2[];
static Base_Class bases_S20971C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    ABISELECT(1392,880), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(1392,880), //bcp->offset
    38, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20971C5,    ABISELECT(1504,952), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20971C6,    ABISELECT(1552,984), //bcp->offset
    52, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20971C3,    ABISELECT(1120,700), //bcp->offset
    30, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20971C6,    ABISELECT(1568,992), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20971C6,    ABISELECT(1584,1000), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(1600,1008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(1600,1008), //bcp->offset
    85, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(1712,1080), //bcp->offset
    91, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20971C9,    ABISELECT(1584,1000), //bcp->offset
    77, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20971C10,    ABISELECT(2880,1832), //bcp->offset
    94, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20971C8,    ABISELECT(1568,992), //bcp->offset
    58, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20971C2,    ABISELECT(1104,692), //bcp->offset
    13, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20971C1[];
extern void _ZN8S20971C1D1Ev();
extern void _ZN8S20971C1D0Ev();
extern void _ZN8S20971C12v1Ev();
extern void _ZN8S20971C12v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S20971C1D1Ev,_ZTv0_n36_N8S20971C1D1Ev)();
extern void ABISELECT(_ZThn1104_N8S20971C1D1Ev,_ZThn692_N8S20971C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20971C1D0Ev,_ZTv0_n36_N8S20971C1D0Ev)();
extern void ABISELECT(_ZThn1104_N8S20971C1D0Ev,_ZThn692_N8S20971C1D0Ev)() __attribute__((weak));
extern void _ZN8S20971C23v12Ev();
extern void _ZN8S20971C23v13Ev();
extern void _ZN8S20971C23v14Ev();
extern void ABISELECT(_ZTv0_n48_N8S20971C1D1Ev,_ZTv0_n24_N8S20971C1D1Ev)();
extern void ABISELECT(_ZThn1120_N8S20971C1D1Ev,_ZThn700_N8S20971C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20971C1D0Ev,_ZTv0_n24_N8S20971C1D0Ev)();
extern void ABISELECT(_ZThn1120_N8S20971C1D0Ev,_ZThn700_N8S20971C1D0Ev)() __attribute__((weak));
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C83v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S20971C1D1Ev,_ZTv0_n40_N8S20971C1D1Ev)();
extern void ABISELECT(_ZThn1568_N8S20971C1D1Ev,_ZThn992_N8S20971C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20971C1D0Ev,_ZTv0_n40_N8S20971C1D0Ev)();
extern void ABISELECT(_ZThn1568_N8S20971C1D0Ev,_ZThn992_N8S20971C1D0Ev)() __attribute__((weak));
extern void _ZN8S20971C62v7Ev();
extern void ABISELECT(_ZTvn16_n80_N8S20971C1D1Ev,_ZTvn8_n40_N8S20971C1D1Ev)();
extern void ABISELECT(_ZTvn16_n80_N8S20971C1D0Ev,_ZTvn8_n40_N8S20971C1D0Ev)();
extern void _ZN8S20971C92v8Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY vtc_S20971C1[] = {
  ABISELECT(2880,1832),
  ABISELECT(1568,992),
  ABISELECT(1552,984),
  ABISELECT(1504,952),
  ABISELECT(1392,880),
  ABISELECT(1120,700),
  ABISELECT(1104,692),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&_ZN8S20971C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20971C12v2Ev,
  0,
  0,
  0,
  ABISELECT(-1104,-692),
  ABISELECT(1776,1140),
  ABISELECT(464,300),
  ABISELECT(448,292),
  ABISELECT(400,260),
  ABISELECT(288,188),
  ABISELECT(16,8),
  ABISELECT(-1104,-692),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20971C1D1Ev,_ZTv0_n36_N8S20971C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20971C1D0Ev,_ZTv0_n36_N8S20971C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20971C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20971C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20971C23v14Ev,
  ABISELECT(-1120,-700),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(-1120,-700),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C1D1Ev,_ZTv0_n24_N8S20971C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C1D0Ev,_ZTv0_n24_N8S20971C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-1392,-880),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  0,
  ABISELECT(-1504,-952),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-1552,-984),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-1568,-992),
  0,
  0,
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  ABISELECT(-1568,-992),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C83v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20971C1D1Ev,_ZTv0_n40_N8S20971C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20971C1D0Ev,_ZTv0_n40_N8S20971C1D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-1584,-1000),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20971C1D1Ev,_ZTvn8_n40_N8S20971C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20971C1D0Ev,_ZTvn8_n40_N8S20971C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
  ABISELECT(-1600,-1008),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  ABISELECT(-1712,-1080),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  0,
  ABISELECT(-2880,-1832),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
extern VTBL_ENTRY _ZTV8S20971C1[];
extern void _ZN8S20971C2D1Ev();
extern void _ZN8S20971C2D0Ev();
extern void _ZN8S20971C23v12Ev();
extern void _ZN8S20971C23v13Ev();
extern void _ZN8S20971C23v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C2__8S20971C1[] = {
  ABISELECT(1776,1140),
  ABISELECT(464,300),
  ABISELECT(448,292),
  ABISELECT(400,260),
  ABISELECT(288,188),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20971C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20971C23v14Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20971C2D1Ev,_ZTv0_n24_N8S20971C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20971C2D1Ev,_ZThn8_N8S20971C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20971C2D0Ev,_ZTv0_n24_N8S20971C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20971C2D0Ev,_ZThn8_N8S20971C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20971C3__8S20971C2__8S20971C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C2D1Ev,_ZTv0_n24_N8S20971C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C2D0Ev,_ZTv0_n24_N8S20971C2D0Ev),
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C2__8S20971C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C2__8S20971C1[] = {
  0,
  ABISELECT(-400,-260),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__8S20971C2__8S20971C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-448,-292),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C83v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S20971C2D1Ev,_ZTv0_n40_N8S20971C2D1Ev)();
extern void ABISELECT(_ZThn464_N8S20971C2D1Ev,_ZThn300_N8S20971C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20971C2D0Ev,_ZTv0_n40_N8S20971C2D0Ev)();
extern void ABISELECT(_ZThn464_N8S20971C2D0Ev,_ZThn300_N8S20971C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20971C8__8S20971C2__8S20971C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-464,-300),
  0,
  0,
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C83v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20971C2D1Ev,_ZTv0_n40_N8S20971C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20971C2D0Ev,_ZTv0_n40_N8S20971C2D0Ev),
};
extern void _ZN8S20971C62v7Ev();
extern void ABISELECT(_ZTvn16_n80_N8S20971C2D1Ev,_ZTvn8_n40_N8S20971C2D1Ev)();
extern void ABISELECT(_ZTvn16_n80_N8S20971C2D0Ev,_ZTvn8_n40_N8S20971C2D0Ev)();
extern void _ZN8S20971C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C98S20971C8__8S20971C2__8S20971C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-480,-308),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20971C2D1Ev,_ZTvn8_n40_N8S20971C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20971C2D0Ev,_ZTvn8_n40_N8S20971C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C48S20971C98S20971C8__A1__8S20971C2__8S20971C1[] = {
  ABISELECT(-496,-316),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C58S20971C98S20971C8__A3__8S20971C2__8S20971C1[] = {
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S20971C10__8S20971C2__8S20971C1[] = {
  0,
  0,
  ABISELECT(-1776,-1140),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
extern void _ZN8S20971C3D1Ev();
extern void _ZN8S20971C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C3__8S20971C1[] = {
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C3D0Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C3__8S20971C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C3__8S20971C1[] = {
  0,
  ABISELECT(-384,-252),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__8S20971C3__8S20971C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-432,-284),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__8S20971C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C6__8S20971C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C6__8S20971C1[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C83v11Ev();
extern void _ZN8S20971C8D1Ev();
extern void _ZN8S20971C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C8__8S20971C1[] = {
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C83v11Ev,
  (VTBL_ENTRY)&_ZN8S20971C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C8D0Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C68S20971C8__A1__8S20971C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C68S20971C8__A1__8S20971C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C68S20971C8__A1__8S20971C1[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C9D1Ev();
extern void _ZN8S20971C9D0Ev();
extern void _ZN8S20971C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C98S20971C8__8S20971C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C68S20971C98S20971C8__A2__8S20971C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C68S20971C98S20971C8__A2__8S20971C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,120),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C68S20971C98S20971C8__A2__8S20971C1[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C98S20971C8__8S20971C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,120),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C98S20971C8__8S20971C1[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C8__8S20971C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C8__8S20971C1[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void ABISELECT(_ZThn16_N8S20971C8D1Ev,_ZThn8_N8S20971C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20971C8D0Ev,_ZThn8_N8S20971C8D0Ev)();
extern void _ZN8S20971C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C9__8S20971C8__8S20971C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20971C8D1Ev,_ZThn8_N8S20971C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20971C8D0Ev,_ZThn8_N8S20971C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20971C8D1Ev,_ZTv0_n24_N8S20971C8D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20971C8D0Ev,_ZTv0_n24_N8S20971C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20971C3__8S20971C8__8S20971C1[] = {
  ABISELECT(448,292),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(448,292),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C8D1Ev,_ZTv0_n24_N8S20971C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C8D0Ev,_ZTv0_n24_N8S20971C8D0Ev),
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__A2__8S20971C8__8S20971C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S20971C10__8S20971C8__8S20971C1[] = {
  0,
  0,
  ABISELECT(-1312,-840),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
static  VTT_ENTRY vtt_S20971C1[] = {
  {&(_ZTV8S20971C1[9]),  9,100},
  {&(_ZTV8S20971C1[25]),  25,100},
  {&(_ZTV8S20971C1[36]),  36,100},
  {&(_ZTV8S20971C1[44]),  44,100},
  {&(_ZTV8S20971C1[51]),  51,100},
  {&(_ZTV8S20971C1[57]),  57,100},
  {&(_ZTV8S20971C1[73]),  73,100},
  {&(_ZTV8S20971C1[81]),  81,100},
  {&(_ZTV8S20971C1[87]),  87,100},
  {&(_ZTV8S20971C1[93]),  93,100},
  {&(_ZTV8S20971C1[98]),  98,100},
  {&(_tg__ZTV8S20971C2__8S20971C1[8]),  8,13},
  {&(_tg__ZTV8S20971C3__8S20971C2__8S20971C1[6]),  6,8},
  {&(_tg__ZTV8S20971C4__8S20971C2__8S20971C1[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C2__8S20971C1[3]),  3,4},
  {&(_tg__ZTV8S20971C6__8S20971C2__8S20971C1[5]),  5,6},
  {&(_tg__ZTV8S20971C8__8S20971C2__8S20971C1[15]),  15,19},
  {&(_tg__ZTV8S20971C98S20971C8__8S20971C2__8S20971C1[4]),  4,8},
  {&(_tg__ZTV8S20971C48S20971C98S20971C8__A1__8S20971C2__8S20971C1[2]),  2,6},
  {&(_tg__ZTV8S20971C58S20971C98S20971C8__A3__8S20971C2__8S20971C1[2]),  2,3},
  {&(_tg__ZTV9S20971C10__8S20971C2__8S20971C1[4]),  4,6},
  {&(_tg__ZTV8S20971C3__8S20971C1[5]),  5,7},
  {&(_tg__ZTV8S20971C4__8S20971C3__8S20971C1[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C3__8S20971C1[3]),  3,4},
  {&(_tg__ZTV8S20971C6__8S20971C3__8S20971C1[5]),  5,6},
  {&(_tg__ZTV8S20971C6__8S20971C1[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C6__8S20971C1[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C6__8S20971C1[3]),  3,4},
  {&(_tg__ZTV8S20971C8__8S20971C1[7]),  7,11},
  {&(_tg__ZTV8S20971C68S20971C8__A1__8S20971C1[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C68S20971C8__A1__8S20971C1[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C68S20971C8__A1__8S20971C1[3]),  3,4},
  {&(_tg__ZTV8S20971C98S20971C8__8S20971C1[4]),  4,8},
  {&(_tg__ZTV8S20971C68S20971C98S20971C8__A2__8S20971C1[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C68S20971C98S20971C8__A2__8S20971C1[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C68S20971C98S20971C8__A2__8S20971C1[3]),  3,4},
  {&(_tg__ZTV8S20971C4__8S20971C98S20971C8__8S20971C1[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C98S20971C8__8S20971C1[3]),  3,4},
  {&(_tg__ZTV8S20971C4__8S20971C8__8S20971C1[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C8__8S20971C1[3]),  3,4},
  {&(_tg__ZTV8S20971C9__8S20971C8__8S20971C1[4]),  4,8},
  {&(_tg__ZTV8S20971C3__8S20971C8__8S20971C1[6]),  6,8},
  {&(_tg__ZTV8S20971C6__A2__8S20971C8__8S20971C1[5]),  5,6},
  {&(_tg__ZTV9S20971C10__8S20971C8__8S20971C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20971C1[];
extern  VTBL_ENTRY _ZTV8S20971C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C1[];
static VTBL_ENTRY alt_thunk_names85[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20971C2D0Ev,_ZTv0_n40_N8S20971C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S20971C2D0Ev,_ZThn300_N8S20971C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20971C2D1Ev,_ZTv0_n40_N8S20971C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S20971C2D1Ev,_ZThn300_N8S20971C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20971C2D0Ev,_ZTv0_n24_N8S20971C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20971C2D0Ev,_ZThn8_N8S20971C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20971C2D1Ev,_ZTv0_n24_N8S20971C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20971C2D1Ev,_ZThn8_N8S20971C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20971C1D0Ev,_ZTv0_n40_N8S20971C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S20971C1D0Ev,_ZThn992_N8S20971C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20971C1D1Ev,_ZTv0_n40_N8S20971C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S20971C1D1Ev,_ZThn992_N8S20971C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20971C1D0Ev,_ZTv0_n24_N8S20971C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1120_N8S20971C1D0Ev,_ZThn700_N8S20971C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20971C1D1Ev,_ZTv0_n24_N8S20971C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1120_N8S20971C1D1Ev,_ZThn700_N8S20971C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20971C1D0Ev,_ZTv0_n36_N8S20971C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N8S20971C1D0Ev,_ZThn692_N8S20971C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20971C1D1Ev,_ZTv0_n36_N8S20971C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N8S20971C1D1Ev,_ZThn692_N8S20971C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20971C1 = {  "S20971C1", // class name
  bases_S20971C1, 14,
  &(vtc_S20971C1[0]), // expected_vtbl_contents
  &(vtt_S20971C1[0]), // expected_vtt_contents
  ABISELECT(2928,1860), // object size
  NSPAIRA(_ZTI8S20971C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20971C1),100, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20971C1),44, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names85,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C5  {
  void *s20970c5f0;
  char s20970c5f1[5];
  __tsi64 s20970c5f2;
  void *s20970c5f3[2];
  virtual void  v3(); // _ZN8S20970C52v3Ev
  ~S20970C5(); // tgen
  S20970C5(); // tgen
};
//SIG(-1 S20970C5) C1{ v1 Fp Fc[5] FL Fp[2]}


void  S20970C5 ::v3(){vfunc_called(this, "_ZN8S20970C52v3Ev");}
S20970C5 ::~S20970C5(){ note_dtor("S20970C5", this);} // tgen
S20970C5 ::S20970C5(){ note_ctor("S20970C5", this);} // tgen

static void Test_S20970C5()
{
  extern Class_Descriptor cd_S20970C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S20970C5, buf);
    S20970C5 *dp, &lv = *(dp=new (buf) S20970C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S20970C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20970C5)");
    check_field_offset(lv, s20970c5f0, ABISELECT(8,4), "S20970C5.s20970c5f0");
    check_field_offset(lv, s20970c5f1, ABISELECT(16,8), "S20970C5.s20970c5f1");
    check_field_offset(lv, s20970c5f2, ABISELECT(24,16), "S20970C5.s20970c5f2");
    check_field_offset(lv, s20970c5f3, ABISELECT(32,24), "S20970C5.s20970c5f3");
    test_class_info(&lv, &cd_S20970C5);
    dp->~S20970C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C5(Test_S20970C5, "S20970C5", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S20970C5C1Ev();
extern void _ZN8S20970C5D1Ev();
Name_Map name_map_S20970C5[] = {
  NSPAIR(_ZN8S20970C5C1Ev),
  NSPAIR(_ZN8S20970C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20970C5[];
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY vtc_S20970C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C5[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
Class_Descriptor cd_S20970C5 = {  "S20970C5", // class name
  0,0,//no base classes
  &(vtc_S20970C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S20970C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20970C5),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C4  : S20970C5 {
  ::S20970C5 s20970c4f0;
  char s20970c4f1[2];
  void *s20970c4f2;
  virtual void  v4(); // _ZN8S20970C42v4Ev
  virtual void  v5(); // _ZN8S20970C42v5Ev
  virtual void  v6(); // _ZN8S20970C42v6Ev
  ~S20970C4(); // tgen
  S20970C4(); // tgen
};
//SIG(-1 S20970C4) C1{ BC2{ v4 Fp Fc[5] FL Fp[2]} v1 v2 v3 FC2 Fc[2] Fp}


void  S20970C4 ::v4(){vfunc_called(this, "_ZN8S20970C42v4Ev");}
void  S20970C4 ::v5(){vfunc_called(this, "_ZN8S20970C42v5Ev");}
void  S20970C4 ::v6(){vfunc_called(this, "_ZN8S20970C42v6Ev");}
S20970C4 ::~S20970C4(){ note_dtor("S20970C4", this);} // tgen
S20970C4 ::S20970C4(){ note_ctor("S20970C4", this);} // tgen

static void Test_S20970C4()
{
  extern Class_Descriptor cd_S20970C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S20970C4, buf);
    S20970C4 *dp, &lv = *(dp=new (buf) S20970C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S20970C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20970C4)");
    check_base_class_offset(lv, (S20970C5*), 0, "S20970C4");
    check_field_offset(lv, s20970c4f0, ABISELECT(48,32), "S20970C4.s20970c4f0");
    check_field_offset(lv, s20970c4f1, ABISELECT(96,64), "S20970C4.s20970c4f1");
    check_field_offset(lv, s20970c4f2, ABISELECT(104,68), "S20970C4.s20970c4f2");
    test_class_info(&lv, &cd_S20970C4);
    dp->~S20970C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C4(Test_S20970C4, "S20970C4", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN8S20970C4C1Ev();
extern void _ZN8S20970C4D1Ev();
Name_Map name_map_S20970C4[] = {
  NSPAIR(_ZN8S20970C4C1Ev),
  NSPAIR(_ZN8S20970C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
static Base_Class bases_S20970C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20970C4[];
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY vtc_S20970C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C4[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
Class_Descriptor cd_S20970C4 = {  "S20970C4", // class name
  bases_S20970C4, 1,
  &(vtc_S20970C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI8S20970C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20970C4),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C6  : virtual S20970C4 , virtual S20970C5 {
  int s20970c6f0;
  virtual void  v7(); // _ZN8S20970C62v7Ev
  ~S20970C6(); // tgen
  S20970C6(); // tgen
};
//SIG(-1 S20970C6) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} VBC3 v1 Fi}


void  S20970C6 ::v7(){vfunc_called(this, "_ZN8S20970C62v7Ev");}
S20970C6 ::~S20970C6(){ note_dtor("S20970C6", this);} // tgen
S20970C6 ::S20970C6(){ note_ctor("S20970C6", this);} // tgen

static void Test_S20970C6()
{
  extern Class_Descriptor cd_S20970C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,29)];
    init_test(&cd_S20970C6, buf);
    S20970C6 *dp, &lv = *(dp=new (buf) S20970C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,112), "sizeof(S20970C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20970C6)");
    check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(16,8), "S20970C6");
    check_base_class_offset(lv, (S20970C4*), ABISELECT(16,8), "S20970C6");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*), ABISELECT(128,80), "S20970C6");
    check_field_offset(lv, s20970c6f0, ABISELECT(8,4), "S20970C6.s20970c6f0");
    test_class_info(&lv, &cd_S20970C6);
    dp->~S20970C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C6(Test_S20970C6, "S20970C6", ABISELECT(176,112));

#else // __cplusplus

extern void _ZN8S20970C6C1Ev();
extern void _ZN8S20970C6D1Ev();
Name_Map name_map_S20970C6[] = {
  NSPAIR(_ZN8S20970C6C1Ev),
  NSPAIR(_ZN8S20970C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
static Base_Class bases_S20970C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C5,    ABISELECT(128,80), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20970C6[];
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY vtc_S20970C6[] = {
  ABISELECT(128,80),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  0,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern VTBL_ENTRY _ZTV8S20970C6[];
static  VTT_ENTRY vtt_S20970C6[] = {
  {&(_ZTV8S20970C6[4]),  4,19},
  {&(_ZTV8S20970C6[11]),  11,19},
  {&(_ZTV8S20970C6[18]),  18,19},
};
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
Class_Descriptor cd_S20970C6 = {  "S20970C6", // class name
  bases_S20970C6, 3,
  &(vtc_S20970C6[0]), // expected_vtbl_contents
  &(vtt_S20970C6[0]), // expected_vtt_contents
  ABISELECT(176,112), // object size
  NSPAIRA(_ZTI8S20970C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20970C6),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20970C6),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C3  : virtual S20970C4 , virtual S20970C5 , virtual S20970C6 {
  ::S20970C4 s20970c3f0;
  ::S19763C18_nt s20970c3f1;
  long double s20970c3f2[5];
  void *s20970c3f3;
  ::S20970C5 s20970c3f4;
  int s20970c3f5;
  virtual  ~S20970C3(); // _ZN8S20970C3D2Ev
  S20970C3(); // tgen
};
//SIG(-1 S20970C3) C1{ VBC2{ BC3{ v1 Fp Fc[5] FL Fp[2]} v2 v3 v4 FC3 Fc[2] Fp} VBC3 VBC4{ VBC2 VBC3 v5 Fi} vd FC2 FC5{} FD[5] Fp FC3 Fi}


 S20970C3 ::~S20970C3(){ note_dtor("S20970C3", this);}
S20970C3 ::S20970C3(){ note_ctor("S20970C3", this);} // tgen

static void Test_S20970C3()
{
  extern Class_Descriptor cd_S20970C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(29,74)];
    init_test(&cd_S20970C3, buf);
    S20970C3 *dp, &lv = *(dp=new (buf) S20970C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(448,292), "sizeof(S20970C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20970C3)");
    check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(272,180), "S20970C3");
    check_base_class_offset(lv, (S20970C4*), ABISELECT(272,180), "S20970C3");
    check_base_class_offset(lv, (S20970C4*)(S20970C6*), ABISELECT(272,180), "S20970C3");
    /*is_ambiguous_... S20970C3::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*), ABISELECT(384,252), "S20970C3");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*), ABISELECT(384,252), "S20970C3");
    check_base_class_offset(lv, (S20970C6*), ABISELECT(432,284), "S20970C3");
    check_field_offset(lv, s20970c3f0, ABISELECT(8,4), "S20970C3.s20970c3f0");
    check_field_offset(lv, s20970c3f1, ABISELECT(120,76), "S20970C3.s20970c3f1");
    check_field_offset(lv, s20970c3f2, ABISELECT(128,80), "S20970C3.s20970c3f2");
    check_field_offset(lv, s20970c3f3, ABISELECT(208,140), "S20970C3.s20970c3f3");
    check_field_offset(lv, s20970c3f4, ABISELECT(216,144), "S20970C3.s20970c3f4");
    check_field_offset(lv, s20970c3f5, ABISELECT(264,176), "S20970C3.s20970c3f5");
    test_class_info(&lv, &cd_S20970C3);
    dp->~S20970C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C3(Test_S20970C3, "S20970C3", ABISELECT(448,292));

#else // __cplusplus

extern void _ZN8S20970C3C1Ev();
extern void _ZN8S20970C3D2Ev();
Name_Map name_map_S20970C3[] = {
  NSPAIR(_ZN8S20970C3C1Ev),
  NSPAIR(_ZN8S20970C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
static Base_Class bases_S20970C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    ABISELECT(272,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(272,180), //bcp->offset
    7, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C5,    ABISELECT(384,252), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C6,    ABISELECT(432,284), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20970C3[];
extern void _ZN8S20970C3D1Ev();
extern void _ZN8S20970C3D0Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY vtc_S20970C3[] = {
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C3D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  0,
  ABISELECT(-384,-252),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-432,-284),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern VTBL_ENTRY _ZTV8S20970C3[];
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__8S20970C3[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C6__8S20970C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C6__8S20970C3[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
static  VTT_ENTRY vtt_S20970C3[] = {
  {&(_ZTV8S20970C3[5]),  5,27},
  {&(_ZTV8S20970C3[13]),  13,27},
  {&(_ZTV8S20970C3[20]),  20,27},
  {&(_ZTV8S20970C3[26]),  26,27},
  {&(_tg__ZTV8S20970C6__8S20970C3[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C6__8S20970C3[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C6__8S20970C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20970C3[];
extern  VTBL_ENTRY _ZTV8S20970C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C3[];
Class_Descriptor cd_S20970C3 = {  "S20970C3", // class name
  bases_S20970C3, 4,
  &(vtc_S20970C3[0]), // expected_vtbl_contents
  &(vtt_S20970C3[0]), // expected_vtt_contents
  ABISELECT(448,292), // object size
  NSPAIRA(_ZTI8S20970C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20970C3),27, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20970C3),7, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C9  : S20970C6 , S20970C4 , S20970C5 {
  virtual  ~S20970C9(); // _ZN8S20970C9D2Ev
  virtual void  v8(); // _ZN8S20970C92v8Ev
  S20970C9(); // tgen
};
//SIG(-1 S20970C9) C1{ BC2{ VBC3{ BC4{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC4 Fc[2] Fp} VBC4 v6 Fi} BC3 BC4 vd v1}


 S20970C9 ::~S20970C9(){ note_dtor("S20970C9", this);}
void  S20970C9 ::v8(){vfunc_called(this, "_ZN8S20970C92v8Ev");}
S20970C9 ::S20970C9(){ note_ctor("S20970C9", this);} // tgen

static void Test_S20970C9()
{
  extern Class_Descriptor cd_S20970C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,55)];
    init_test(&cd_S20970C9, buf);
    S20970C9 *dp, &lv = *(dp=new (buf) S20970C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,216), "sizeof(S20970C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20970C9)");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(176,112), "S20970C9");
    check_base_class_offset(lv, (S20970C4*)(S20970C6*), ABISELECT(176,112), "S20970C9");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*), ABISELECT(288,184), "S20970C9");
    check_base_class_offset(lv, (S20970C6*), 0, "S20970C9");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(16,8), "S20970C9");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*), ABISELECT(16,8), "S20970C9");
    /*is_ambiguous_... S20970C9::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*), ABISELECT(128,80), "S20970C9");
    test_class_info(&lv, &cd_S20970C9);
    dp->~S20970C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C9(Test_S20970C9, "S20970C9", ABISELECT(336,216));

#else // __cplusplus

extern void _ZN8S20970C9C1Ev();
extern void _ZN8S20970C9D2Ev();
Name_Map name_map_S20970C9[] = {
  NSPAIR(_ZN8S20970C9C1Ev),
  NSPAIR(_ZN8S20970C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
static Base_Class bases_S20970C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(176,112), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20970C5,    ABISELECT(288,184), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20970C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20970C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20970C5,    ABISELECT(128,80), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20970C9[];
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C9D1Ev();
extern void _ZN8S20970C9D0Ev();
extern void _ZN8S20970C92v8Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY vtc_S20970C9[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern VTBL_ENTRY _ZTV8S20970C9[];
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__8S20970C9[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C6__8S20970C9[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C6__8S20970C9[] = {
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
static  VTT_ENTRY vtt_S20970C9[] = {
  {&(_ZTV8S20970C9[4]),  4,31},
  {&(_tg__ZTV8S20970C6__8S20970C9[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C6__8S20970C9[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C6__8S20970C9[3]),  3,4},
  {&(_ZTV8S20970C9[23]),  23,31},
  {&(_ZTV8S20970C9[30]),  30,31},
};
extern VTBL_ENTRY _ZTI8S20970C9[];
extern  VTBL_ENTRY _ZTV8S20970C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C9[];
Class_Descriptor cd_S20970C9 = {  "S20970C9", // class name
  bases_S20970C9, 7,
  &(vtc_S20970C9[0]), // expected_vtbl_contents
  &(vtt_S20970C9[0]), // expected_vtt_contents
  ABISELECT(336,216), // object size
  NSPAIRA(_ZTI8S20970C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20970C9),31, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20970C9),6, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C10  {
  int s20970c10f0;
  char s20970c10f1[7];
  void *s20970c10f2;
  int s20970c10f3;
  short s20970c10f4;
  virtual void  v9(); // _ZN9S20970C102v9Ev
  virtual void  v10(); // _ZN9S20970C103v10Ev
  ~S20970C10(); // tgen
  S20970C10(); // tgen
};
//SIG(-1 S20970C10) C1{ v1 v2 Fi Fc[7] Fp Fi Fs}


void  S20970C10 ::v9(){vfunc_called(this, "_ZN9S20970C102v9Ev");}
void  S20970C10 ::v10(){vfunc_called(this, "_ZN9S20970C103v10Ev");}
S20970C10 ::~S20970C10(){ note_dtor("S20970C10", this);} // tgen
S20970C10 ::S20970C10(){ note_ctor("S20970C10", this);} // tgen

static void Test_S20970C10()
{
  extern Class_Descriptor cd_S20970C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S20970C10, buf);
    S20970C10 *dp, &lv = *(dp=new (buf) S20970C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S20970C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20970C10)");
    check_field_offset(lv, s20970c10f0, ABISELECT(8,4), "S20970C10.s20970c10f0");
    check_field_offset(lv, s20970c10f1, ABISELECT(12,8), "S20970C10.s20970c10f1");
    check_field_offset(lv, s20970c10f2, ABISELECT(24,16), "S20970C10.s20970c10f2");
    check_field_offset(lv, s20970c10f3, ABISELECT(32,20), "S20970C10.s20970c10f3");
    check_field_offset(lv, s20970c10f4, ABISELECT(36,24), "S20970C10.s20970c10f4");
    test_class_info(&lv, &cd_S20970C10);
    dp->~S20970C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C10(Test_S20970C10, "S20970C10", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN9S20970C10C1Ev();
extern void _ZN9S20970C10D1Ev();
Name_Map name_map_S20970C10[] = {
  NSPAIR(_ZN9S20970C10C1Ev),
  NSPAIR(_ZN9S20970C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20970C10[];
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY vtc_S20970C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20970C10[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
extern VTBL_ENTRY _ZTI9S20970C10[];
extern  VTBL_ENTRY _ZTV9S20970C10[];
Class_Descriptor cd_S20970C10 = {  "S20970C10", // class name
  0,0,//no base classes
  &(vtc_S20970C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI9S20970C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20970C10),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C8  : virtual S20970C4 , S20970C6 , S20970C9 , virtual S20970C3 , virtual S20970C10 {
  ::S20970C4 s20970c8f0;
  ::S20970C9 s20970c8f1[3];
  virtual void  v11(); // _ZN8S20970C83v11Ev
  ~S20970C8(); // tgen
  S20970C8(); // tgen
};
//SIG(-1 S20970C8) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} BC4{ VBC2 VBC3 v6 Fi} BC5{ BC4 BC2 BC3 vd v7} VBC6{ VBC2 VBC3 VBC4 vd FC2 FC7{} FD[5] Fp FC3 Fi} VBC8{ v8 v9 Fi Fc[7] Fp Fi Fs} v1 FC2 FC5[3]}


void  S20970C8 ::v11(){vfunc_called(this, "_ZN8S20970C83v11Ev");}
S20970C8 ::~S20970C8(){ note_dtor("S20970C8", this);} // tgen
S20970C8 ::S20970C8(){ note_ctor("S20970C8", this);} // tgen

static void Test_S20970C8()
{
  extern Class_Descriptor cd_S20970C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(114,291)];
    init_test(&cd_S20970C8, buf);
    S20970C8 *dp, &lv = *(dp=new (buf) S20970C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1808,1160), "sizeof(S20970C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20970C8)");
    /*is_ambiguous_... S20970C8::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(1312,840), "S20970C8");
    /*is_ambiguous_... S20970C8::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*), ABISELECT(1312,840), "S20970C8");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*), ABISELECT(1312,840), "S20970C8");
    check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C9*), ABISELECT(1312,840), "S20970C8");
    check_base_class_offset(lv, (S20970C4*)(S20970C3*), ABISELECT(1312,840), "S20970C8");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*), ABISELECT(1312,840), "S20970C8");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*), ABISELECT(1424,912), "S20970C8");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C9*), ABISELECT(1424,912), "S20970C8");
    /*is_ambiguous_... S20970C3::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C3*), ABISELECT(1424,912), "S20970C8");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*), ABISELECT(1424,912), "S20970C8");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C6*), 0, "S20970C8");
    check_base_class_offset(lv, (S20970C6*)(S20970C9*), ABISELECT(16,8), "S20970C8");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*)(S20970C9*), ABISELECT(32,16), "S20970C8");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C9*), ABISELECT(32,16), "S20970C8");
    /*is_ambiguous_... S20970C9::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C9*), ABISELECT(144,88), "S20970C8");
    check_base_class_offset(lv, (S20970C9*), ABISELECT(16,8), "S20970C8");
    check_base_class_offset(lv, (S20970C6*)(S20970C3*), ABISELECT(1744,1124), "S20970C8");
    check_base_class_offset(lv, (S20970C3*), ABISELECT(1472,944), "S20970C8");
    check_base_class_offset(lv, (S20970C10*), ABISELECT(1760,1132), "S20970C8");
    check_field_offset(lv, s20970c8f0, ABISELECT(192,120), "S20970C8.s20970c8f0");
    check_field_offset(lv, s20970c8f1, ABISELECT(304,192), "S20970C8.s20970c8f1");
    test_class_info(&lv, &cd_S20970C8);
    dp->~S20970C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C8(Test_S20970C8, "S20970C8", ABISELECT(1808,1160));

#else // __cplusplus

extern void _ZN8S20970C8C1Ev();
extern void _ZN8S20970C8D1Ev();
Name_Map name_map_S20970C8[] = {
  NSPAIR(_ZN8S20970C8C1Ev),
  NSPAIR(_ZN8S20970C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C9;
extern VTBL_ENTRY _ZTI8S20970C9[];
extern  VTBL_ENTRY _ZTV8S20970C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C9[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C3;
extern VTBL_ENTRY _ZTI8S20970C3[];
extern  VTBL_ENTRY _ZTV8S20970C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C3[];
extern Class_Descriptor cd_S20970C10;
extern VTBL_ENTRY _ZTI9S20970C10[];
extern  VTBL_ENTRY _ZTV9S20970C10[];
static Base_Class bases_S20970C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    ABISELECT(1312,840), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(1312,840), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C5,    ABISELECT(1424,912), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20970C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20970C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(144,88), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20970C9,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20970C6,    ABISELECT(1744,1124), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20970C3,    ABISELECT(1472,944), //bcp->offset
    42, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C10,    ABISELECT(1760,1132), //bcp->offset
    56, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20970C8[];
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C83v11Ev();
extern void _ZN8S20970C8D1Ev();
extern void _ZN8S20970C8D0Ev();
extern void _ZN8S20970C62v7Ev();
extern void ABISELECT(_ZThn16_N8S20970C8D1Ev,_ZThn8_N8S20970C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20970C8D0Ev,_ZThn8_N8S20970C8D0Ev)();
extern void _ZN8S20970C92v8Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S20970C8D1Ev,_ZTv0_n24_N8S20970C8D1Ev)();
extern void ABISELECT(_ZThn1472_N8S20970C8D1Ev,_ZThn944_N8S20970C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20970C8D0Ev,_ZTv0_n24_N8S20970C8D0Ev)();
extern void ABISELECT(_ZThn1472_N8S20970C8D0Ev,_ZThn944_N8S20970C8D0Ev)() __attribute__((weak));
extern void _ZN8S20970C62v7Ev();
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY vtc_S20970C8[] = {
  ABISELECT(1760,1132),
  ABISELECT(1744,1124),
  ABISELECT(1472,944),
  ABISELECT(1424,912),
  ABISELECT(1312,840),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C83v11Ev,
  (VTBL_ENTRY)&_ZN8S20970C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C8D0Ev,
  ABISELECT(1408,904),
  ABISELECT(1296,832),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20970C8D1Ev,_ZThn8_N8S20970C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20970C8D0Ev,_ZThn8_N8S20970C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-1312,-840),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  0,
  ABISELECT(-1424,-912),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  ABISELECT(-1472,-944),
  ABISELECT(272,180),
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-1472,-944),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C8D1Ev,_ZTv0_n24_N8S20970C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C8D0Ev,_ZTv0_n24_N8S20970C8D0Ev),
  0,
  ABISELECT(-320,-212),
  ABISELECT(-432,-284),
  ABISELECT(-1744,-1124),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  0,
  0,
  ABISELECT(-1760,-1132),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
extern VTBL_ENTRY _ZTV8S20970C8[];
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__A__8S20970C8[] = {
  ABISELECT(1424,912),
  ABISELECT(1312,840),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C6__A__8S20970C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1312,-840),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C6__A__8S20970C8[] = {
  0,
  ABISELECT(-1424,-912),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C9D1Ev();
extern void _ZN8S20970C9D0Ev();
extern void _ZN8S20970C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C9__8S20970C8[] = {
  ABISELECT(1408,904),
  ABISELECT(1296,832),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C68S20970C9__A1__8S20970C8[] = {
  ABISELECT(1408,904),
  ABISELECT(1296,832),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C68S20970C9__A1__8S20970C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1296,-832),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C68S20970C9__A1__8S20970C8[] = {
  0,
  ABISELECT(-1408,-904),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C9__8S20970C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1296,-832),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C9__8S20970C8[] = {
  0,
  ABISELECT(-1408,-904),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C3D1Ev();
extern void _ZN8S20970C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C3__8S20970C8[] = {
  ABISELECT(272,180),
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C3D0Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C3__8S20970C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C3__8S20970C8[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__8S20970C3__8S20970C8[] = {
  0,
  ABISELECT(-320,-212),
  ABISELECT(-432,-284),
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__A2__8S20970C8[] = {
  ABISELECT(-320,-212),
  ABISELECT(-432,-284),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C6__A2__8S20970C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(432,284),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C6__A2__8S20970C8[] = {
  0,
  ABISELECT(320,212),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
static  VTT_ENTRY vtt_S20970C8[] = {
  {&(_ZTV8S20970C8[7]),  7,62},
  {&(_tg__ZTV8S20970C6__A__8S20970C8[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C6__A__8S20970C8[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C6__A__8S20970C8[3]),  3,4},
  {&(_tg__ZTV8S20970C9__8S20970C8[4]),  4,8},
  {&(_tg__ZTV8S20970C68S20970C9__A1__8S20970C8[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C68S20970C9__A1__8S20970C8[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C68S20970C9__A1__8S20970C8[3]),  3,4},
  {&(_tg__ZTV8S20970C4__8S20970C9__8S20970C8[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C9__8S20970C8[3]),  3,4},
  {&(_ZTV8S20970C8[34]),  34,62},
  {&(_ZTV8S20970C8[41]),  41,62},
  {&(_ZTV8S20970C8[15]),  15,62},
  {&(_ZTV8S20970C8[48]),  48,62},
  {&(_ZTV8S20970C8[55]),  55,62},
  {&(_ZTV8S20970C8[60]),  60,62},
  {&(_tg__ZTV8S20970C3__8S20970C8[5]),  5,7},
  {&(_tg__ZTV8S20970C4__8S20970C3__8S20970C8[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C3__8S20970C8[3]),  3,4},
  {&(_tg__ZTV8S20970C6__8S20970C3__8S20970C8[5]),  5,6},
  {&(_tg__ZTV8S20970C6__A2__8S20970C8[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C6__A2__8S20970C8[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C6__A2__8S20970C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20970C8[];
extern  VTBL_ENTRY _ZTV8S20970C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C8[];
static VTBL_ENTRY alt_thunk_names86[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20970C8D0Ev,_ZTv0_n24_N8S20970C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S20970C8D0Ev,_ZThn944_N8S20970C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20970C8D1Ev,_ZTv0_n24_N8S20970C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S20970C8D1Ev,_ZThn944_N8S20970C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20970C8 = {  "S20970C8", // class name
  bases_S20970C8, 12,
  &(vtc_S20970C8[0]), // expected_vtbl_contents
  &(vtt_S20970C8[0]), // expected_vtt_contents
  ABISELECT(1808,1160), // object size
  NSPAIRA(_ZTI8S20970C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20970C8),62, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20970C8),23, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names86,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C2  : virtual S20970C3 , virtual S20970C8 {
  char s20970c2f0[4];
  virtual  ~S20970C2(); // _ZN8S20970C2D2Ev
  virtual void  v12(); // _ZN8S20970C23v12Ev
  virtual void  v13(); // _ZN8S20970C23v13Ev
  virtual void  v14(); // _ZN8S20970C23v14Ev
  S20970C2(); // tgen
};
//SIG(-1 S20970C2) C1{ VBC2{ VBC3{ BC4{ v4 Fp Fc[5] FL Fp[2]} v5 v6 v7 FC4 Fc[2] Fp} VBC4 VBC5{ VBC3 VBC4 v8 Fi} vd FC3 FC6{} FD[5] Fp FC4 Fi} VBC7{ VBC3 BC5 BC8{ BC5 BC3 BC4 vd v9} VBC2 VBC9{ v10 v11 Fi Fc[7] Fp Fi Fs} v12 FC3 FC8[3]} vd v1 v2 v3 Fc[4]}


 S20970C2 ::~S20970C2(){ note_dtor("S20970C2", this);}
void  S20970C2 ::v12(){vfunc_called(this, "_ZN8S20970C23v12Ev");}
void  S20970C2 ::v13(){vfunc_called(this, "_ZN8S20970C23v13Ev");}
void  S20970C2 ::v14(){vfunc_called(this, "_ZN8S20970C23v14Ev");}
S20970C2 ::S20970C2(){ note_ctor("S20970C2", this);} // tgen

static void Test_S20970C2()
{
  extern Class_Descriptor cd_S20970C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(115,293)];
    init_test(&cd_S20970C2, buf);
    S20970C2 *dp, &lv = *(dp=new (buf) S20970C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1824,1168), "sizeof(S20970C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20970C2)");
    /*is_ambiguous_... S20970C2::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(288,188), "S20970C2");
    check_base_class_offset(lv, (S20970C4*)(S20970C3*), ABISELECT(288,188), "S20970C2");
    /*is_ambiguous_... S20970C2::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*), ABISELECT(288,188), "S20970C2");
    /*is_ambiguous_... S20970C8::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C8*), ABISELECT(288,188), "S20970C2");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C8*), ABISELECT(288,188), "S20970C2");
    check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C9*)(S20970C8*), ABISELECT(288,188), "S20970C2");
    /*is_ambiguous_... S20970C3::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C3*), ABISELECT(400,260), "S20970C2");
    /*is_ambiguous_... S20970C2::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*), ABISELECT(400,260), "S20970C2");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C8*), ABISELECT(400,260), "S20970C2");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C9*)(S20970C8*), ABISELECT(400,260), "S20970C2");
    check_base_class_offset(lv, (S20970C6*)(S20970C3*), ABISELECT(448,292), "S20970C2");
    check_base_class_offset(lv, (S20970C3*), ABISELECT(16,8), "S20970C2");
    check_base_class_offset(lv, (S20970C3*)(S20970C8*), ABISELECT(16,8), "S20970C2");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C6*)(S20970C8*), ABISELECT(464,300), "S20970C2");
    check_base_class_offset(lv, (S20970C6*)(S20970C9*)(S20970C8*), ABISELECT(480,308), "S20970C2");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*)(S20970C9*)(S20970C8*), ABISELECT(496,316), "S20970C2");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C9*)(S20970C8*), ABISELECT(496,316), "S20970C2");
    /*is_ambiguous_... S20970C9::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C9*)(S20970C8*), ABISELECT(608,388), "S20970C2");
    check_base_class_offset(lv, (S20970C9*)(S20970C8*), ABISELECT(480,308), "S20970C2");
    check_base_class_offset(lv, (S20970C10*)(S20970C8*), ABISELECT(1776,1140), "S20970C2");
    check_base_class_offset(lv, (S20970C8*), ABISELECT(464,300), "S20970C2");
    check_field_offset(lv, s20970c2f0, ABISELECT(8,4), "S20970C2.s20970c2f0");
    test_class_info(&lv, &cd_S20970C2);
    dp->~S20970C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C2(Test_S20970C2, "S20970C2", ABISELECT(1824,1168));

#else // __cplusplus

extern void _ZN8S20970C2C1Ev();
extern void _ZN8S20970C2D2Ev();
Name_Map name_map_S20970C2[] = {
  NSPAIR(_ZN8S20970C2C1Ev),
  NSPAIR(_ZN8S20970C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C3;
extern VTBL_ENTRY _ZTI8S20970C3[];
extern  VTBL_ENTRY _ZTV8S20970C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C3[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C9;
extern VTBL_ENTRY _ZTI8S20970C9[];
extern  VTBL_ENTRY _ZTV8S20970C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C9[];
extern Class_Descriptor cd_S20970C10;
extern VTBL_ENTRY _ZTI9S20970C10[];
extern  VTBL_ENTRY _ZTV9S20970C10[];
extern Class_Descriptor cd_S20970C8;
extern VTBL_ENTRY _ZTI8S20970C8[];
extern  VTBL_ENTRY _ZTV8S20970C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C8[];
static Base_Class bases_S20970C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    ABISELECT(288,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(288,188), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20970C5,    ABISELECT(400,260), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20970C6,    ABISELECT(448,292), //bcp->offset
    35, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20970C3,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C6,    ABISELECT(464,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20970C6,    ABISELECT(480,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(496,316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(496,316), //bcp->offset
    68, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(608,388), //bcp->offset
    74, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20970C9,    ABISELECT(480,308), //bcp->offset
    60, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20970C10,    ABISELECT(1776,1140), //bcp->offset
    77, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20970C8,    ABISELECT(464,300), //bcp->offset
    41, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20970C2[];
extern void _ZN8S20970C2D1Ev();
extern void _ZN8S20970C2D0Ev();
extern void _ZN8S20970C23v12Ev();
extern void _ZN8S20970C23v13Ev();
extern void _ZN8S20970C23v14Ev();
extern void ABISELECT(_ZTv0_n48_N8S20970C2D1Ev,_ZTv0_n24_N8S20970C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20970C2D1Ev,_ZThn8_N8S20970C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20970C2D0Ev,_ZTv0_n24_N8S20970C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20970C2D0Ev,_ZThn8_N8S20970C2D0Ev)() __attribute__((weak));
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C83v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S20970C2D1Ev,_ZTv0_n40_N8S20970C2D1Ev)();
extern void ABISELECT(_ZThn464_N8S20970C2D1Ev,_ZThn300_N8S20970C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20970C2D0Ev,_ZTv0_n40_N8S20970C2D0Ev)();
extern void ABISELECT(_ZThn464_N8S20970C2D0Ev,_ZThn300_N8S20970C2D0Ev)() __attribute__((weak));
extern void _ZN8S20970C62v7Ev();
extern void ABISELECT(_ZTvn16_n80_N8S20970C2D1Ev,_ZTvn8_n40_N8S20970C2D1Ev)();
extern void ABISELECT(_ZTvn16_n80_N8S20970C2D0Ev,_ZTvn8_n40_N8S20970C2D0Ev)();
extern void _ZN8S20970C92v8Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY vtc_S20970C2[] = {
  ABISELECT(1776,1140),
  ABISELECT(464,300),
  ABISELECT(448,292),
  ABISELECT(400,260),
  ABISELECT(288,188),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20970C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20970C23v14Ev,
  ABISELECT(-16,-8),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C2D1Ev,_ZTv0_n24_N8S20970C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C2D0Ev,_ZTv0_n24_N8S20970C2D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  0,
  ABISELECT(-400,-260),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-448,-292),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-464,-300),
  0,
  0,
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C83v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20970C2D1Ev,_ZTv0_n40_N8S20970C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20970C2D0Ev,_ZTv0_n40_N8S20970C2D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-480,-308),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20970C2D1Ev,_ZTvn8_n40_N8S20970C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20970C2D0Ev,_ZTvn8_n40_N8S20970C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
  ABISELECT(-496,-316),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  0,
  ABISELECT(-1776,-1140),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
extern VTBL_ENTRY _ZTV8S20970C2[];
extern void _ZN8S20970C3D1Ev();
extern void _ZN8S20970C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C3__8S20970C2[] = {
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C3D0Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C3__8S20970C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C3__8S20970C2[] = {
  0,
  ABISELECT(-384,-252),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__8S20970C3__8S20970C2[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-432,-284),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__8S20970C2[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C6__8S20970C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C6__8S20970C2[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C83v11Ev();
extern void _ZN8S20970C8D1Ev();
extern void _ZN8S20970C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C8__8S20970C2[] = {
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C83v11Ev,
  (VTBL_ENTRY)&_ZN8S20970C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C8D0Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C68S20970C8__A1__8S20970C2[] = {
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C68S20970C8__A1__8S20970C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C68S20970C8__A1__8S20970C2[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C9D1Ev();
extern void _ZN8S20970C9D0Ev();
extern void _ZN8S20970C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C98S20970C8__8S20970C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C68S20970C98S20970C8__A2__8S20970C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C68S20970C98S20970C8__A2__8S20970C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,120),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C68S20970C98S20970C8__A2__8S20970C2[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C98S20970C8__8S20970C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,120),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C98S20970C8__8S20970C2[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C8__8S20970C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C8__8S20970C2[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void ABISELECT(_ZThn16_N8S20970C8D1Ev,_ZThn8_N8S20970C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20970C8D0Ev,_ZThn8_N8S20970C8D0Ev)();
extern void _ZN8S20970C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C9__8S20970C8__8S20970C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20970C8D1Ev,_ZThn8_N8S20970C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20970C8D0Ev,_ZThn8_N8S20970C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20970C8D1Ev,_ZTv0_n24_N8S20970C8D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20970C8D0Ev,_ZTv0_n24_N8S20970C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20970C3__8S20970C8__8S20970C2[] = {
  ABISELECT(448,292),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(448,292),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C8D1Ev,_ZTv0_n24_N8S20970C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C8D0Ev,_ZTv0_n24_N8S20970C8D0Ev),
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__A2__8S20970C8__8S20970C2[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S20970C10__8S20970C8__8S20970C2[] = {
  0,
  0,
  ABISELECT(-1312,-840),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
static  VTT_ENTRY vtt_S20970C2[] = {
  {&(_ZTV8S20970C2[8]),  8,83},
  {&(_ZTV8S20970C2[19]),  19,83},
  {&(_ZTV8S20970C2[27]),  27,83},
  {&(_ZTV8S20970C2[34]),  34,83},
  {&(_ZTV8S20970C2[40]),  40,83},
  {&(_ZTV8S20970C2[56]),  56,83},
  {&(_ZTV8S20970C2[64]),  64,83},
  {&(_ZTV8S20970C2[70]),  70,83},
  {&(_ZTV8S20970C2[76]),  76,83},
  {&(_ZTV8S20970C2[81]),  81,83},
  {&(_tg__ZTV8S20970C3__8S20970C2[5]),  5,7},
  {&(_tg__ZTV8S20970C4__8S20970C3__8S20970C2[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C3__8S20970C2[3]),  3,4},
  {&(_tg__ZTV8S20970C6__8S20970C3__8S20970C2[5]),  5,6},
  {&(_tg__ZTV8S20970C6__8S20970C2[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C6__8S20970C2[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C6__8S20970C2[3]),  3,4},
  {&(_tg__ZTV8S20970C8__8S20970C2[7]),  7,11},
  {&(_tg__ZTV8S20970C68S20970C8__A1__8S20970C2[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C68S20970C8__A1__8S20970C2[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C68S20970C8__A1__8S20970C2[3]),  3,4},
  {&(_tg__ZTV8S20970C98S20970C8__8S20970C2[4]),  4,8},
  {&(_tg__ZTV8S20970C68S20970C98S20970C8__A2__8S20970C2[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C68S20970C98S20970C8__A2__8S20970C2[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C68S20970C98S20970C8__A2__8S20970C2[3]),  3,4},
  {&(_tg__ZTV8S20970C4__8S20970C98S20970C8__8S20970C2[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C98S20970C8__8S20970C2[3]),  3,4},
  {&(_tg__ZTV8S20970C4__8S20970C8__8S20970C2[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C8__8S20970C2[3]),  3,4},
  {&(_tg__ZTV8S20970C9__8S20970C8__8S20970C2[4]),  4,8},
  {&(_tg__ZTV8S20970C3__8S20970C8__8S20970C2[6]),  6,8},
  {&(_tg__ZTV8S20970C6__A2__8S20970C8__8S20970C2[5]),  5,6},
  {&(_tg__ZTV9S20970C10__8S20970C8__8S20970C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20970C2[];
extern  VTBL_ENTRY _ZTV8S20970C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C2[];
static VTBL_ENTRY alt_thunk_names87[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20970C2D0Ev,_ZTv0_n40_N8S20970C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S20970C2D0Ev,_ZThn300_N8S20970C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20970C2D1Ev,_ZTv0_n40_N8S20970C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S20970C2D1Ev,_ZThn300_N8S20970C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20970C2D0Ev,_ZTv0_n24_N8S20970C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20970C2D0Ev,_ZThn8_N8S20970C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20970C2D1Ev,_ZTv0_n24_N8S20970C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20970C2D1Ev,_ZThn8_N8S20970C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20970C2 = {  "S20970C2", // class name
  bases_S20970C2, 13,
  &(vtc_S20970C2[0]), // expected_vtbl_contents
  &(vtt_S20970C2[0]), // expected_vtt_contents
  ABISELECT(1824,1168), // object size
  NSPAIRA(_ZTI8S20970C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20970C2),83, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20970C2),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names87,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C13  : virtual S20970C4 , virtual S20970C5 , S20970C6 {
  long s20970c13f0;
  void *s20970c13f1;
  int s20970c13f2[2];
  virtual void  v15(); // _ZN9S20970C133v15Ev
  ~S20970C13(); // tgen
  S20970C13(); // tgen
};
//SIG(-1 S20970C13) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} VBC3 BC4{ VBC2 VBC3 v6 Fi} v1 Fl Fp Fi[2]}


void  S20970C13 ::v15(){vfunc_called(this, "_ZN9S20970C133v15Ev");}
S20970C13 ::~S20970C13(){ note_dtor("S20970C13", this);} // tgen
S20970C13 ::S20970C13(){ note_ctor("S20970C13", this);} // tgen

static void Test_S20970C13()
{
  extern Class_Descriptor cd_S20970C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,33)];
    init_test(&cd_S20970C13, buf);
    S20970C13 *dp, &lv = *(dp=new (buf) S20970C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,128), "sizeof(S20970C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20970C13)");
    check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(40,24), "S20970C13");
    check_base_class_offset(lv, (S20970C4*), ABISELECT(40,24), "S20970C13");
    check_base_class_offset(lv, (S20970C4*)(S20970C6*), ABISELECT(40,24), "S20970C13");
    /*is_ambiguous_... S20970C13::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*), ABISELECT(152,96), "S20970C13");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*), ABISELECT(152,96), "S20970C13");
    check_base_class_offset(lv, (S20970C6*), 0, "S20970C13");
    check_field_offset(lv, s20970c13f0, ABISELECT(16,8), "S20970C13.s20970c13f0");
    check_field_offset(lv, s20970c13f1, ABISELECT(24,12), "S20970C13.s20970c13f1");
    check_field_offset(lv, s20970c13f2, ABISELECT(32,16), "S20970C13.s20970c13f2");
    test_class_info(&lv, &cd_S20970C13);
    dp->~S20970C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C13(Test_S20970C13, "S20970C13", ABISELECT(200,128));

#else // __cplusplus

extern void _ZN9S20970C13C1Ev();
extern void _ZN9S20970C13D1Ev();
Name_Map name_map_S20970C13[] = {
  NSPAIR(_ZN9S20970C13C1Ev),
  NSPAIR(_ZN9S20970C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
static Base_Class bases_S20970C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(40,24), //bcp->offset
    6, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C5,    ABISELECT(152,96), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20970C13[];
extern void _ZN8S20970C62v7Ev();
extern void _ZN9S20970C133v15Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY vtc_S20970C13[] = {
  ABISELECT(152,96),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20970C13[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20970C133v15Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20970C13[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  0,
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S20970C13[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern VTBL_ENTRY _ZTV9S20970C13[];
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__9S20970C13[] = {
  ABISELECT(152,96),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C6__9S20970C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C6__9S20970C13[] = {
  0,
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
static  VTT_ENTRY vtt_S20970C13[] = {
  {&(_ZTV9S20970C13[4]),  4,20},
  {&(_tg__ZTV8S20970C6__9S20970C13[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C6__9S20970C13[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C6__9S20970C13[3]),  3,4},
  {&(_ZTV9S20970C13[12]),  12,20},
  {&(_ZTV9S20970C13[19]),  19,20},
};
extern VTBL_ENTRY _ZTI9S20970C13[];
extern  VTBL_ENTRY _ZTV9S20970C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20970C13[];
Class_Descriptor cd_S20970C13 = {  "S20970C13", // class name
  bases_S20970C13, 4,
  &(vtc_S20970C13[0]), // expected_vtbl_contents
  &(vtt_S20970C13[0]), // expected_vtt_contents
  ABISELECT(200,128), // object size
  NSPAIRA(_ZTI9S20970C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20970C13),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20970C13),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C12  : virtual S20970C4 {
  void *s20970c12f0[4];
  ::S20970C5 s20970c12f1;
  ::S20970C13 s20970c12f2;
  ~S20970C12(); // tgen
  S20970C12(); // tgen
};
//SIG(-1 S20970C12) C1{ VBC2{ BC3{ v1 Fp Fc[5] FL Fp[2]} v2 v3 v4 FC3 Fc[2] Fp} Fp[4] FC3 FC4{ VBC2 VBC3 BC5{ VBC2 VBC3 v6 Fi} v5 Fl Fp Fi[2]}}


S20970C12 ::~S20970C12(){ note_dtor("S20970C12", this);} // tgen
S20970C12 ::S20970C12(){ note_ctor("S20970C12", this);} // tgen

static void Test_S20970C12()
{
  extern Class_Descriptor cd_S20970C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(51,64)];
    init_test(&cd_S20970C12, buf);
    S20970C12 *dp, &lv = *(dp=new (buf) S20970C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(400,252), "sizeof(S20970C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20970C12)");
    check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(288,180), "S20970C12");
    check_base_class_offset(lv, (S20970C4*), ABISELECT(288,180), "S20970C12");
    check_field_offset(lv, s20970c12f0, ABISELECT(8,4), "S20970C12.s20970c12f0");
    check_field_offset(lv, s20970c12f1, ABISELECT(40,20), "S20970C12.s20970c12f1");
    check_field_offset(lv, s20970c12f2, ABISELECT(88,52), "S20970C12.s20970c12f2");
    test_class_info(&lv, &cd_S20970C12);
    dp->~S20970C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C12(Test_S20970C12, "S20970C12", ABISELECT(400,252));

#else // __cplusplus

extern void _ZN9S20970C12C1Ev();
extern void _ZN9S20970C12D1Ev();
Name_Map name_map_S20970C12[] = {
  NSPAIR(_ZN9S20970C12C1Ev),
  NSPAIR(_ZN9S20970C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
static Base_Class bases_S20970C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    ABISELECT(288,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(288,180), //bcp->offset
    3, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20970C12[];
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY vtc_S20970C12[] = {
  ABISELECT(288,180),
  0,
  (VTBL_ENTRY)&(_ZTI9S20970C12[0]),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI9S20970C12[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern VTBL_ENTRY _ZTV9S20970C12[];
static  VTT_ENTRY vtt_S20970C12[] = {
  {&(_ZTV9S20970C12[3]),  3,13},
  {&(_ZTV9S20970C12[9]),  9,13},
};
extern VTBL_ENTRY _ZTI9S20970C12[];
extern  VTBL_ENTRY _ZTV9S20970C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20970C12[];
Class_Descriptor cd_S20970C12 = {  "S20970C12", // class name
  bases_S20970C12, 2,
  &(vtc_S20970C12[0]), // expected_vtbl_contents
  &(vtt_S20970C12[0]), // expected_vtt_contents
  ABISELECT(400,252), // object size
  NSPAIRA(_ZTI9S20970C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20970C12),13, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20970C12),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C14  : S20970C9 , S20970C4 , S20970C6 , virtual S20970C10 {
  int s20970c14f0;
  virtual void  v16(); // _ZN9S20970C143v16Ev
  virtual void  v17(); // _ZN9S20970C143v17Ev
  virtual void  v18(); // _ZN9S20970C143v18Ev
  ~S20970C14(); // tgen
  S20970C14(); // tgen
};
//SIG(-1 S20970C14) C1{ BC2{ BC3{ VBC4{ BC5{ v4 Fp Fc[5] FL Fp[2]} v5 v6 v7 FC5 Fc[2] Fp} VBC5 v8 Fi} BC4 BC5 vd v9} BC4 BC3 VBC6{ v10 v11 Fi Fc[7] Fp Fi Fs} v1 v2 v3 Fi}


void  S20970C14 ::v16(){vfunc_called(this, "_ZN9S20970C143v16Ev");}
void  S20970C14 ::v17(){vfunc_called(this, "_ZN9S20970C143v17Ev");}
void  S20970C14 ::v18(){vfunc_called(this, "_ZN9S20970C143v18Ev");}
S20970C14 ::~S20970C14(){ note_dtor("S20970C14", this);} // tgen
S20970C14 ::S20970C14(){ note_ctor("S20970C14", this);} // tgen

static void Test_S20970C14()
{
  extern Class_Descriptor cd_S20970C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(64,83)];
    init_test(&cd_S20970C14, buf);
    S20970C14 *dp, &lv = *(dp=new (buf) S20970C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(504,328), "sizeof(S20970C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20970C14)");
    /*is_ambiguous_... S20970C14::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(304,196), "S20970C14");
    check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C9*), ABISELECT(304,196), "S20970C14");
    /*is_ambiguous_... S20970C14::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*), ABISELECT(304,196), "S20970C14");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C9*), ABISELECT(416,268), "S20970C14");
    /*is_ambiguous_... S20970C14::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*), ABISELECT(416,268), "S20970C14");
    check_base_class_offset(lv, (S20970C6*)(S20970C9*), 0, "S20970C14");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*)(S20970C9*), ABISELECT(16,8), "S20970C14");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C9*), ABISELECT(16,8), "S20970C14");
    /*is_ambiguous_... S20970C9::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C9*), ABISELECT(128,80), "S20970C14");
    check_base_class_offset(lv, (S20970C9*), 0, "S20970C14");
    /*is_ambiguous_... S20970C14::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(176,112), "S20970C14");
    /*is_ambiguous_... S20970C14::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*), ABISELECT(176,112), "S20970C14");
    /*is_ambiguous_... S20970C14::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C6*), ABISELECT(288,184), "S20970C14");
    check_base_class_offset(lv, (S20970C10*), ABISELECT(464,300), "S20970C14");
    check_field_offset(lv, s20970c14f0, ABISELECT(300,192), "S20970C14.s20970c14f0");
    test_class_info(&lv, &cd_S20970C14);
    dp->~S20970C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C14(Test_S20970C14, "S20970C14", ABISELECT(504,328));

#else // __cplusplus

extern void _ZN9S20970C14C1Ev();
extern void _ZN9S20970C14D1Ev();
Name_Map name_map_S20970C14[] = {
  NSPAIR(_ZN9S20970C14C1Ev),
  NSPAIR(_ZN9S20970C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C9;
extern VTBL_ENTRY _ZTI8S20970C9[];
extern  VTBL_ENTRY _ZTV8S20970C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C9[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C10;
extern VTBL_ENTRY _ZTI9S20970C10[];
extern  VTBL_ENTRY _ZTV9S20970C10[];
static Base_Class bases_S20970C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(304,196), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20970C5,    ABISELECT(416,268), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20970C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(128,80), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20970C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20970C5,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(176,112), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20970C6,    ABISELECT(288,184), //bcp->offset
    27, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20970C10,    ABISELECT(464,300), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20970C14[];
extern void _ZN8S20970C62v7Ev();
extern void _ZN9S20970C14D1Ev();
extern void _ZN9S20970C14D0Ev();
extern void _ZN8S20970C92v8Ev();
extern void _ZN9S20970C143v16Ev();
extern void _ZN9S20970C143v17Ev();
extern void _ZN9S20970C143v18Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY vtc_S20970C14[] = {
  ABISELECT(464,300),
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20970C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20970C14D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
  (VTBL_ENTRY)&_ZN9S20970C143v16Ev,
  (VTBL_ENTRY)&_ZN9S20970C143v17Ev,
  (VTBL_ENTRY)&_ZN9S20970C143v18Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  ABISELECT(128,84),
  ABISELECT(16,12),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  0,
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
extern VTBL_ENTRY _ZTV9S20970C14[];
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C9D1Ev();
extern void _ZN8S20970C9D0Ev();
extern void _ZN8S20970C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C9__9S20970C14[] = {
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C68S20970C9__9S20970C14[] = {
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C68S20970C9__9S20970C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C68S20970C9__9S20970C14[] = {
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C9__9S20970C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C9__9S20970C14[] = {
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__A1__9S20970C14[] = {
  ABISELECT(128,84),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C6__A1__9S20970C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C6__A1__9S20970C14[] = {
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
static  VTT_ENTRY vtt_S20970C14[] = {
  {&(_ZTV9S20970C14[5]),  5,52},
  {&(_tg__ZTV8S20970C9__9S20970C14[4]),  4,8},
  {&(_tg__ZTV8S20970C68S20970C9__9S20970C14[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C68S20970C9__9S20970C14[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C68S20970C9__9S20970C14[3]),  3,4},
  {&(_tg__ZTV8S20970C4__8S20970C9__9S20970C14[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C9__9S20970C14[3]),  3,4},
  {&(_tg__ZTV8S20970C6__A1__9S20970C14[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C6__A1__9S20970C14[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C6__A1__9S20970C14[3]),  3,4},
  {&(_ZTV9S20970C14[38]),  38,52},
  {&(_ZTV9S20970C14[45]),  45,52},
  {&(_ZTV9S20970C14[31]),  31,52},
  {&(_ZTV9S20970C14[50]),  50,52},
};
extern VTBL_ENTRY _ZTI9S20970C14[];
extern  VTBL_ENTRY _ZTV9S20970C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20970C14[];
Class_Descriptor cd_S20970C14 = {  "S20970C14", // class name
  bases_S20970C14, 12,
  &(vtc_S20970C14[0]), // expected_vtbl_contents
  &(vtt_S20970C14[0]), // expected_vtt_contents
  ABISELECT(504,328), // object size
  NSPAIRA(_ZTI9S20970C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20970C14),52, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20970C14),14, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C11  : S20970C12 , S20970C9 , virtual S20970C13 , virtual S20970C6 , virtual S20970C14 {
  int s20970c11f0;
  long double s20970c11f1;
  int s20970c11f2;
  virtual  ~S20970C11(); // _ZN9S20970C11D2Ev
  S20970C11(); // tgen
};
//SIG(-1 S20970C11) C1{ BC2{ VBC3{ BC4{ v1 Fp Fc[5] FL Fp[2]} v2 v3 v4 FC4 Fc[2] Fp} Fp[4] FC4 FC5{ VBC3 VBC4 BC6{ VBC3 VBC4 v5 Fi} v7 Fl Fp Fi[2]}} BC7{ BC6 BC3 BC4 vd v6} VBC5 VBC6 VBC8{ BC7 BC3 BC6 VBC9{ v8 v9 Fi Fc[7] Fp Fi Fs} v10 v11 v12 Fi} vd Fi FD Fi}


 S20970C11 ::~S20970C11(){ note_dtor("S20970C11", this);}
S20970C11 ::S20970C11(){ note_ctor("S20970C11", this);} // tgen

static void Test_S20970C11()
{
  extern Class_Descriptor cd_S20970C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(68,169)];
    init_test(&cd_S20970C11, buf);
    S20970C11 *dp, &lv = *(dp=new (buf) S20970C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1072,672), "sizeof(S20970C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20970C11)");
    /*is_ambiguous_... S20970C11::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(504,312), "S20970C11");
    check_base_class_offset(lv, (S20970C4*)(S20970C12*), ABISELECT(504,312), "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C9 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C9*), ABISELECT(504,312), "S20970C11");
    check_base_class_offset(lv, (S20970C4*)(S20970C13*), ABISELECT(504,312), "S20970C11");
    check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C13*), ABISELECT(504,312), "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*), ABISELECT(504,312), "S20970C11");
    check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C9*)(S20970C14*), ABISELECT(504,312), "S20970C11");
    /*is_ambiguous_... S20970C14::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C14*), ABISELECT(504,312), "S20970C11");
    check_base_class_offset(lv, (S20970C12*), 0, "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C9 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C9*), ABISELECT(616,384), "S20970C11");
    /*is_ambiguous_... S20970C13::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C13*), ABISELECT(616,384), "S20970C11");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C13*), ABISELECT(616,384), "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*), ABISELECT(616,384), "S20970C11");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C9*)(S20970C14*), ABISELECT(616,384), "S20970C11");
    /*is_ambiguous_... S20970C14::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C14*), ABISELECT(616,384), "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C9 */ AMB_check_base_class_offset(lv, (S20970C6*)(S20970C9*), ABISELECT(288,180), "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C9 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*)(S20970C9*), ABISELECT(304,188), "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C9 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C9*), ABISELECT(304,188), "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C9 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C9*), ABISELECT(416,260), "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C9 */ AMB_check_base_class_offset(lv, (S20970C9*), ABISELECT(288,180), "S20970C11");
    check_base_class_offset(lv, (S20970C6*)(S20970C13*), ABISELECT(664,416), "S20970C11");
    check_base_class_offset(lv, (S20970C13*), ABISELECT(664,416), "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C6*), ABISELECT(704,440), "S20970C11");
    check_base_class_offset(lv, (S20970C6*)(S20970C9*)(S20970C14*), ABISELECT(720,448), "S20970C11");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*)(S20970C9*)(S20970C14*), ABISELECT(736,456), "S20970C11");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C9*)(S20970C14*), ABISELECT(736,456), "S20970C11");
    /*is_ambiguous_... S20970C9::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C9*)(S20970C14*), ABISELECT(848,528), "S20970C11");
    check_base_class_offset(lv, (S20970C9*)(S20970C14*), ABISELECT(720,448), "S20970C11");
    /*is_ambiguous_... S20970C14::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*)(S20970C14*), ABISELECT(896,560), "S20970C11");
    /*is_ambiguous_... S20970C14::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C14*), ABISELECT(896,560), "S20970C11");
    /*is_ambiguous_... S20970C14::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C6*)(S20970C14*), ABISELECT(1008,632), "S20970C11");
    check_base_class_offset(lv, (S20970C10*)(S20970C14*), ABISELECT(1024,644), "S20970C11");
    check_base_class_offset(lv, (S20970C14*), ABISELECT(720,448), "S20970C11");
    check_field_offset(lv, s20970c11f0, ABISELECT(464,292), "S20970C11.s20970c11f0");
    check_field_offset(lv, s20970c11f1, ABISELECT(480,296), "S20970C11.s20970c11f1");
    check_field_offset(lv, s20970c11f2, ABISELECT(496,308), "S20970C11.s20970c11f2");
    test_class_info(&lv, &cd_S20970C11);
    dp->~S20970C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C11(Test_S20970C11, "S20970C11", ABISELECT(1072,672));

#else // __cplusplus

extern void _ZN9S20970C11C1Ev();
extern void _ZN9S20970C11D2Ev();
Name_Map name_map_S20970C11[] = {
  NSPAIR(_ZN9S20970C11C1Ev),
  NSPAIR(_ZN9S20970C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C12;
extern VTBL_ENTRY _ZTI9S20970C12[];
extern  VTBL_ENTRY _ZTV9S20970C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20970C12[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C9;
extern VTBL_ENTRY _ZTI8S20970C9[];
extern  VTBL_ENTRY _ZTV8S20970C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C9[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C13;
extern VTBL_ENTRY _ZTI9S20970C13[];
extern  VTBL_ENTRY _ZTV9S20970C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20970C13[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C9;
extern VTBL_ENTRY _ZTI8S20970C9[];
extern  VTBL_ENTRY _ZTV8S20970C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C9[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C10;
extern VTBL_ENTRY _ZTI9S20970C10[];
extern  VTBL_ENTRY _ZTV9S20970C10[];
extern Class_Descriptor cd_S20970C14;
extern VTBL_ENTRY _ZTI9S20970C14[];
extern  VTBL_ENTRY _ZTV9S20970C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20970C14[];
static Base_Class bases_S20970C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    ABISELECT(504,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(504,312), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20970C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20970C5,    ABISELECT(616,384), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20970C6,    ABISELECT(288,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(304,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(304,188), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(416,260), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20970C9,    ABISELECT(288,180), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20970C6,    ABISELECT(664,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20970C13,    ABISELECT(664,416), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C6,    ABISELECT(704,440), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C6,    ABISELECT(720,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(736,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(736,456), //bcp->offset
    77, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(848,528), //bcp->offset
    83, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20970C9,    ABISELECT(720,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(896,560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(896,560), //bcp->offset
    86, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20970C6,    ABISELECT(1008,632), //bcp->offset
    92, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20970C10,    ABISELECT(1024,644), //bcp->offset
    97, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20970C14,    ABISELECT(720,448), //bcp->offset
    55, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20970C11[];
extern void _ZN9S20970C11D1Ev();
extern void _ZN9S20970C11D0Ev();
extern void _ZN8S20970C62v7Ev();
extern void ABISELECT(_ZThn288_N9S20970C11D1Ev,_ZThn180_N9S20970C11D1Ev)();
extern void ABISELECT(_ZThn288_N9S20970C11D0Ev,_ZThn180_N9S20970C11D0Ev)();
extern void _ZN8S20970C92v8Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C62v7Ev();
extern void _ZN9S20970C133v15Ev();
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C62v7Ev();
extern void ABISELECT(_ZTv0_n56_N9S20970C11D1Ev,_ZTv0_n28_N9S20970C11D1Ev)();
extern void ABISELECT(_ZThn720_N9S20970C11D1Ev,_ZThn448_N9S20970C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20970C11D0Ev,_ZTv0_n28_N9S20970C11D0Ev)();
extern void ABISELECT(_ZThn720_N9S20970C11D0Ev,_ZThn448_N9S20970C11D0Ev)() __attribute__((weak));
extern void _ZN8S20970C92v8Ev();
extern void _ZN9S20970C143v16Ev();
extern void _ZN9S20970C143v17Ev();
extern void _ZN9S20970C143v18Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C62v7Ev();
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY vtc_S20970C11[] = {
  ABISELECT(1024,644),
  ABISELECT(720,448),
  ABISELECT(704,440),
  ABISELECT(664,416),
  ABISELECT(616,384),
  ABISELECT(504,312),
  0,
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN9S20970C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20970C11D0Ev,
  ABISELECT(328,204),
  ABISELECT(216,132),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N9S20970C11D1Ev,_ZThn180_N9S20970C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N9S20970C11D0Ev,_ZThn180_N9S20970C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
  ABISELECT(-304,-188),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  ABISELECT(-416,-260),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-504,-312),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  0,
  ABISELECT(-616,-384),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-664,-416),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20970C133v15Ev,
  0,
  ABISELECT(-88,-56),
  ABISELECT(-200,-128),
  ABISELECT(-704,-440),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  ABISELECT(-720,-448),
  0,
  ABISELECT(304,196),
  ABISELECT(-104,-64),
  ABISELECT(-216,-136),
  ABISELECT(-720,-448),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20970C11D1Ev,_ZTv0_n28_N9S20970C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20970C11D0Ev,_ZTv0_n28_N9S20970C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
  (VTBL_ENTRY)&_ZN9S20970C143v16Ev,
  (VTBL_ENTRY)&_ZN9S20970C143v17Ev,
  (VTBL_ENTRY)&_ZN9S20970C143v18Ev,
  ABISELECT(-736,-456),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  ABISELECT(-848,-528),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  ABISELECT(-896,-560),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  ABISELECT(-392,-248),
  ABISELECT(-504,-320),
  ABISELECT(-1008,-632),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  0,
  0,
  ABISELECT(-1024,-644),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
extern VTBL_ENTRY _ZTV9S20970C11[];
static  VTBL_ENTRY _tg__ZTV9S20970C12__9S20970C11[] = {
  ABISELECT(504,312),
  0,
  (VTBL_ENTRY)&(_ZTI9S20970C12[0]),
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__9S20970C12__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-504,-312),
  (VTBL_ENTRY)&(_ZTI9S20970C12[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C9D1Ev();
extern void _ZN8S20970C9D0Ev();
extern void _ZN8S20970C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C9__9S20970C11[] = {
  ABISELECT(328,204),
  ABISELECT(216,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C68S20970C9__9S20970C11[] = {
  ABISELECT(328,204),
  ABISELECT(216,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C68S20970C9__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C68S20970C9__9S20970C11[] = {
  0,
  ABISELECT(-328,-204),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C9__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C9__9S20970C11[] = {
  0,
  ABISELECT(-328,-204),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN9S20970C133v15Ev();
static  VTBL_ENTRY _tg__ZTV9S20970C13__9S20970C11[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20970C13[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20970C133v15Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C69S20970C13__A1__9S20970C11[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C69S20970C13__A1__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C69S20970C13__A1__9S20970C11[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__9S20970C13__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI9S20970C13[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__9S20970C13__9S20970C11[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S20970C13[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__A2__9S20970C11[] = {
  ABISELECT(-88,-56),
  ABISELECT(-200,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C6__A2__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(200,128),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C6__A2__9S20970C11[] = {
  0,
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN9S20970C14D1Ev();
extern void _ZN9S20970C14D0Ev();
extern void _ZN8S20970C92v8Ev();
extern void _ZN9S20970C143v16Ev();
extern void _ZN9S20970C143v17Ev();
extern void _ZN9S20970C143v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20970C14__9S20970C11[] = {
  ABISELECT(304,196),
  ABISELECT(-104,-64),
  ABISELECT(-216,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20970C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20970C14D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
  (VTBL_ENTRY)&_ZN9S20970C143v16Ev,
  (VTBL_ENTRY)&_ZN9S20970C143v17Ev,
  (VTBL_ENTRY)&_ZN9S20970C143v18Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C9D1Ev();
extern void _ZN8S20970C9D0Ev();
extern void _ZN8S20970C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C99S20970C14__A1__9S20970C11[] = {
  ABISELECT(-104,-64),
  ABISELECT(-216,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C68S20970C99S20970C14__A3__9S20970C11[] = {
  ABISELECT(-104,-64),
  ABISELECT(-216,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C68S20970C99S20970C14__A3__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(216,136),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C68S20970C99S20970C14__A3__9S20970C11[] = {
  0,
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C99S20970C14__A1__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(216,136),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C99S20970C14__A1__9S20970C11[] = {
  0,
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C69S20970C14__A4__9S20970C11[] = {
  ABISELECT(-392,-248),
  ABISELECT(-504,-320),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C69S20970C14__A4__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(504,320),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C69S20970C14__A4__9S20970C11[] = {
  0,
  ABISELECT(392,248),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__9S20970C14__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(216,136),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__9S20970C14__9S20970C11[] = {
  0,
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__A1__9S20970C14__9S20970C11[] = {
  ABISELECT(-392,-248),
  ABISELECT(-504,-320),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S20970C10__9S20970C14__9S20970C11[] = {
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
static  VTT_ENTRY vtt_S20970C11[] = {
  {&(_ZTV9S20970C11[8]),  8,103},
  {&(_tg__ZTV9S20970C12__9S20970C11[3]),  3,3},
  {&(_tg__ZTV8S20970C4__9S20970C12__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C9__9S20970C11[4]),  4,8},
  {&(_tg__ZTV8S20970C68S20970C9__9S20970C11[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C68S20970C9__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C68S20970C9__9S20970C11[3]),  3,4},
  {&(_tg__ZTV8S20970C4__8S20970C9__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C9__9S20970C11[3]),  3,4},
  {&(_ZTV9S20970C11[33]),  33,103},
  {&(_ZTV9S20970C11[14]),  14,103},
  {&(_ZTV9S20970C11[40]),  40,103},
  {&(_ZTV9S20970C11[47]),  47,103},
  {&(_ZTV9S20970C11[54]),  54,103},
  {&(_ZTV9S20970C11[70]),  70,103},
  {&(_ZTV9S20970C11[79]),  79,103},
  {&(_ZTV9S20970C11[85]),  85,103},
  {&(_ZTV9S20970C11[88]),  88,103},
  {&(_ZTV9S20970C11[96]),  96,103},
  {&(_ZTV9S20970C11[101]),  101,103},
  {&(_tg__ZTV9S20970C13__9S20970C11[4]),  4,6},
  {&(_tg__ZTV8S20970C69S20970C13__A1__9S20970C11[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C69S20970C13__A1__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C69S20970C13__A1__9S20970C11[3]),  3,4},
  {&(_tg__ZTV8S20970C4__9S20970C13__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__9S20970C13__9S20970C11[3]),  3,4},
  {&(_tg__ZTV8S20970C6__A2__9S20970C11[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C6__A2__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C6__A2__9S20970C11[3]),  3,4},
  {&(_tg__ZTV9S20970C14__9S20970C11[5]),  5,12},
  {&(_tg__ZTV8S20970C99S20970C14__A1__9S20970C11[4]),  4,8},
  {&(_tg__ZTV8S20970C68S20970C99S20970C14__A3__9S20970C11[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C68S20970C99S20970C14__A3__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C68S20970C99S20970C14__A3__9S20970C11[3]),  3,4},
  {&(_tg__ZTV8S20970C4__8S20970C99S20970C14__A1__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C99S20970C14__A1__9S20970C11[3]),  3,4},
  {&(_tg__ZTV8S20970C69S20970C14__A4__9S20970C11[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C69S20970C14__A4__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C69S20970C14__A4__9S20970C11[3]),  3,4},
  {&(_tg__ZTV8S20970C4__9S20970C14__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__9S20970C14__9S20970C11[3]),  3,4},
  {&(_tg__ZTV8S20970C6__A1__9S20970C14__9S20970C11[4]),  4,5},
  {&(_tg__ZTV9S20970C10__9S20970C14__9S20970C11[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20970C11[];
extern  VTBL_ENTRY _ZTV9S20970C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20970C11[];
static VTBL_ENTRY alt_thunk_names88[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20970C11D0Ev,_ZTv0_n28_N9S20970C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20970C11D0Ev,_ZThn448_N9S20970C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20970C11D1Ev,_ZTv0_n28_N9S20970C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20970C11D1Ev,_ZThn448_N9S20970C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20970C11 = {  "S20970C11", // class name
  bases_S20970C11, 22,
  &(vtc_S20970C11[0]), // expected_vtbl_contents
  &(vtt_S20970C11[0]), // expected_vtt_contents
  ABISELECT(1072,672), // object size
  NSPAIRA(_ZTI9S20970C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20970C11),103, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20970C11),43, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names88,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C1  : virtual S20970C2 {
  ::S20970C11 s20970c1f0;
  void *s20970c1f1[2];
  virtual  ~S20970C1(); // _ZN8S20970C1D2Ev
  virtual void  v1(); // _ZN8S20970C12v1Ev
  virtual void  v2(); // _ZN8S20970C12v2Ev
  S20970C1(); // tgen
};
//SIG(1 S20970C1) C1{ VBC2{ VBC3{ VBC4{ BC5{ v3 Fp Fc[5] FL Fp[2]} v4 v5 v6 FC5 Fc[2] Fp} VBC5 VBC6{ VBC4 VBC5 v7 Fi} vd FC4 FC7{} FD[5] Fp FC5 Fi} VBC8{ VBC4 BC6 BC9{ BC6 BC4 BC5 vd v8} VBC3 VBC10{ v9 v10 Fi Fc[7] Fp Fi Fs} v11 FC4 FC9[3]} vd v12 v13 v14 Fc[4]} vd v1 v2 FC11{ BC12{ VBC4 Fp[4] FC5 FC13{ VBC4 VBC5 BC6 v15 Fl Fp Fi[2]}} BC9 VBC13 VBC6 VBC14{ BC9 BC4 BC6 VBC10 v16 v17 v18 Fi} vd Fi FD Fi} Fp[2]}


 S20970C1 ::~S20970C1(){ note_dtor("S20970C1", this);}
void  S20970C1 ::v1(){vfunc_called(this, "_ZN8S20970C12v1Ev");}
void  S20970C1 ::v2(){vfunc_called(this, "_ZN8S20970C12v2Ev");}
S20970C1 ::S20970C1(){ note_ctor("S20970C1", this);} // tgen

static void Test_S20970C1()
{
  extern Class_Descriptor cd_S20970C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(184,464)];
    init_test(&cd_S20970C1, buf);
    S20970C1 *dp, &lv = *(dp=new (buf) S20970C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2928,1852), "sizeof(S20970C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20970C1)");
    /*is_ambiguous_... S20970C1::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(1392,872), "S20970C1");
    check_base_class_offset(lv, (S20970C4*)(S20970C3*), ABISELECT(1392,872), "S20970C1");
    /*is_ambiguous_... S20970C1::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*), ABISELECT(1392,872), "S20970C1");
    /*is_ambiguous_... S20970C8::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C8*), ABISELECT(1392,872), "S20970C1");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C8*), ABISELECT(1392,872), "S20970C1");
    check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C9*)(S20970C8*), ABISELECT(1392,872), "S20970C1");
    /*is_ambiguous_... S20970C3::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C3*), ABISELECT(1504,944), "S20970C1");
    /*is_ambiguous_... S20970C1::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*), ABISELECT(1504,944), "S20970C1");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C8*), ABISELECT(1504,944), "S20970C1");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C9*)(S20970C8*), ABISELECT(1504,944), "S20970C1");
    check_base_class_offset(lv, (S20970C6*)(S20970C3*), ABISELECT(1552,976), "S20970C1");
    check_base_class_offset(lv, (S20970C3*)(S20970C2*), ABISELECT(1120,692), "S20970C1");
    check_base_class_offset(lv, (S20970C3*)(S20970C8*), ABISELECT(1120,692), "S20970C1");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C6*)(S20970C8*), ABISELECT(1568,984), "S20970C1");
    check_base_class_offset(lv, (S20970C6*)(S20970C9*)(S20970C8*), ABISELECT(1584,992), "S20970C1");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*)(S20970C9*)(S20970C8*), ABISELECT(1600,1000), "S20970C1");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C9*)(S20970C8*), ABISELECT(1600,1000), "S20970C1");
    /*is_ambiguous_... S20970C9::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C9*)(S20970C8*), ABISELECT(1712,1072), "S20970C1");
    check_base_class_offset(lv, (S20970C9*)(S20970C8*), ABISELECT(1584,992), "S20970C1");
    check_base_class_offset(lv, (S20970C10*)(S20970C8*), ABISELECT(2880,1824), "S20970C1");
    check_base_class_offset(lv, (S20970C8*)(S20970C2*), ABISELECT(1568,984), "S20970C1");
    check_base_class_offset(lv, (S20970C2*), ABISELECT(1104,684), "S20970C1");
    check_field_offset(lv, s20970c1f0, ABISELECT(16,4), "S20970C1.s20970c1f0");
    check_field_offset(lv, s20970c1f1, ABISELECT(1088,676), "S20970C1.s20970c1f1");
    test_class_info(&lv, &cd_S20970C1);
    dp->~S20970C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C1(Test_S20970C1, "S20970C1", ABISELECT(2928,1852));

#else // __cplusplus

extern void _ZN8S20970C1C1Ev();
extern void _ZN8S20970C1D2Ev();
Name_Map name_map_S20970C1[] = {
  NSPAIR(_ZN8S20970C1C1Ev),
  NSPAIR(_ZN8S20970C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C3;
extern VTBL_ENTRY _ZTI8S20970C3[];
extern  VTBL_ENTRY _ZTV8S20970C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C3[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C9;
extern VTBL_ENTRY _ZTI8S20970C9[];
extern  VTBL_ENTRY _ZTV8S20970C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C9[];
extern Class_Descriptor cd_S20970C10;
extern VTBL_ENTRY _ZTI9S20970C10[];
extern  VTBL_ENTRY _ZTV9S20970C10[];
extern Class_Descriptor cd_S20970C8;
extern VTBL_ENTRY _ZTI8S20970C8[];
extern  VTBL_ENTRY _ZTV8S20970C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C8[];
extern Class_Descriptor cd_S20970C2;
extern VTBL_ENTRY _ZTI8S20970C2[];
extern  VTBL_ENTRY _ZTV8S20970C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C2[];
static Base_Class bases_S20970C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    ABISELECT(1392,872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(1392,872), //bcp->offset
    38, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20970C5,    ABISELECT(1504,944), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20970C6,    ABISELECT(1552,976), //bcp->offset
    52, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20970C3,    ABISELECT(1120,692), //bcp->offset
    30, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20970C6,    ABISELECT(1568,984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20970C6,    ABISELECT(1584,992), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(1600,1000), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(1600,1000), //bcp->offset
    85, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(1712,1072), //bcp->offset
    91, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20970C9,    ABISELECT(1584,992), //bcp->offset
    77, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20970C10,    ABISELECT(2880,1824), //bcp->offset
    94, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20970C8,    ABISELECT(1568,984), //bcp->offset
    58, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20970C2,    ABISELECT(1104,684), //bcp->offset
    13, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20970C1[];
extern void _ZN8S20970C1D1Ev();
extern void _ZN8S20970C1D0Ev();
extern void _ZN8S20970C12v1Ev();
extern void _ZN8S20970C12v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S20970C1D1Ev,_ZTv0_n36_N8S20970C1D1Ev)();
extern void ABISELECT(_ZThn1104_N8S20970C1D1Ev,_ZThn684_N8S20970C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20970C1D0Ev,_ZTv0_n36_N8S20970C1D0Ev)();
extern void ABISELECT(_ZThn1104_N8S20970C1D0Ev,_ZThn684_N8S20970C1D0Ev)() __attribute__((weak));
extern void _ZN8S20970C23v12Ev();
extern void _ZN8S20970C23v13Ev();
extern void _ZN8S20970C23v14Ev();
extern void ABISELECT(_ZTv0_n48_N8S20970C1D1Ev,_ZTv0_n24_N8S20970C1D1Ev)();
extern void ABISELECT(_ZThn1120_N8S20970C1D1Ev,_ZThn692_N8S20970C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20970C1D0Ev,_ZTv0_n24_N8S20970C1D0Ev)();
extern void ABISELECT(_ZThn1120_N8S20970C1D0Ev,_ZThn692_N8S20970C1D0Ev)() __attribute__((weak));
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C83v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S20970C1D1Ev,_ZTv0_n40_N8S20970C1D1Ev)();
extern void ABISELECT(_ZThn1568_N8S20970C1D1Ev,_ZThn984_N8S20970C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20970C1D0Ev,_ZTv0_n40_N8S20970C1D0Ev)();
extern void ABISELECT(_ZThn1568_N8S20970C1D0Ev,_ZThn984_N8S20970C1D0Ev)() __attribute__((weak));
extern void _ZN8S20970C62v7Ev();
extern void ABISELECT(_ZTvn16_n80_N8S20970C1D1Ev,_ZTvn8_n40_N8S20970C1D1Ev)();
extern void ABISELECT(_ZTvn16_n80_N8S20970C1D0Ev,_ZTvn8_n40_N8S20970C1D0Ev)();
extern void _ZN8S20970C92v8Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY vtc_S20970C1[] = {
  ABISELECT(2880,1824),
  ABISELECT(1568,984),
  ABISELECT(1552,976),
  ABISELECT(1504,944),
  ABISELECT(1392,872),
  ABISELECT(1120,692),
  ABISELECT(1104,684),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&_ZN8S20970C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20970C12v2Ev,
  0,
  0,
  0,
  ABISELECT(-1104,-684),
  ABISELECT(1776,1140),
  ABISELECT(464,300),
  ABISELECT(448,292),
  ABISELECT(400,260),
  ABISELECT(288,188),
  ABISELECT(16,8),
  ABISELECT(-1104,-684),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20970C1D1Ev,_ZTv0_n36_N8S20970C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20970C1D0Ev,_ZTv0_n36_N8S20970C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20970C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20970C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20970C23v14Ev,
  ABISELECT(-1120,-692),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(-1120,-692),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C1D1Ev,_ZTv0_n24_N8S20970C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C1D0Ev,_ZTv0_n24_N8S20970C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-1392,-872),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  0,
  ABISELECT(-1504,-944),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-1552,-976),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-1568,-984),
  0,
  0,
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  ABISELECT(-1568,-984),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C83v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20970C1D1Ev,_ZTv0_n40_N8S20970C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20970C1D0Ev,_ZTv0_n40_N8S20970C1D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-1584,-992),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20970C1D1Ev,_ZTvn8_n40_N8S20970C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20970C1D0Ev,_ZTvn8_n40_N8S20970C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
  ABISELECT(-1600,-1000),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  ABISELECT(-1712,-1072),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  0,
  ABISELECT(-2880,-1824),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
extern VTBL_ENTRY _ZTV8S20970C1[];
extern void _ZN8S20970C2D1Ev();
extern void _ZN8S20970C2D0Ev();
extern void _ZN8S20970C23v12Ev();
extern void _ZN8S20970C23v13Ev();
extern void _ZN8S20970C23v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C2__8S20970C1[] = {
  ABISELECT(1776,1140),
  ABISELECT(464,300),
  ABISELECT(448,292),
  ABISELECT(400,260),
  ABISELECT(288,188),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20970C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20970C23v14Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20970C2D1Ev,_ZTv0_n24_N8S20970C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20970C2D1Ev,_ZThn8_N8S20970C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20970C2D0Ev,_ZTv0_n24_N8S20970C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20970C2D0Ev,_ZThn8_N8S20970C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20970C3__8S20970C2__8S20970C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C2D1Ev,_ZTv0_n24_N8S20970C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C2D0Ev,_ZTv0_n24_N8S20970C2D0Ev),
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C2__8S20970C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C2__8S20970C1[] = {
  0,
  ABISELECT(-400,-260),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__8S20970C2__8S20970C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-448,-292),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C83v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S20970C2D1Ev,_ZTv0_n40_N8S20970C2D1Ev)();
extern void ABISELECT(_ZThn464_N8S20970C2D1Ev,_ZThn300_N8S20970C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20970C2D0Ev,_ZTv0_n40_N8S20970C2D0Ev)();
extern void ABISELECT(_ZThn464_N8S20970C2D0Ev,_ZThn300_N8S20970C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20970C8__8S20970C2__8S20970C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-464,-300),
  0,
  0,
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C83v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20970C2D1Ev,_ZTv0_n40_N8S20970C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20970C2D0Ev,_ZTv0_n40_N8S20970C2D0Ev),
};
extern void _ZN8S20970C62v7Ev();
extern void ABISELECT(_ZTvn16_n80_N8S20970C2D1Ev,_ZTvn8_n40_N8S20970C2D1Ev)();
extern void ABISELECT(_ZTvn16_n80_N8S20970C2D0Ev,_ZTvn8_n40_N8S20970C2D0Ev)();
extern void _ZN8S20970C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C98S20970C8__8S20970C2__8S20970C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-480,-308),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20970C2D1Ev,_ZTvn8_n40_N8S20970C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20970C2D0Ev,_ZTvn8_n40_N8S20970C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C48S20970C98S20970C8__A1__8S20970C2__8S20970C1[] = {
  ABISELECT(-496,-316),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C58S20970C98S20970C8__A3__8S20970C2__8S20970C1[] = {
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S20970C10__8S20970C2__8S20970C1[] = {
  0,
  0,
  ABISELECT(-1776,-1140),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
extern void _ZN8S20970C3D1Ev();
extern void _ZN8S20970C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C3__8S20970C1[] = {
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C3D0Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C3__8S20970C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C3__8S20970C1[] = {
  0,
  ABISELECT(-384,-252),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__8S20970C3__8S20970C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-432,-284),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__8S20970C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C6__8S20970C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C6__8S20970C1[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C83v11Ev();
extern void _ZN8S20970C8D1Ev();
extern void _ZN8S20970C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C8__8S20970C1[] = {
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C83v11Ev,
  (VTBL_ENTRY)&_ZN8S20970C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C8D0Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C68S20970C8__A1__8S20970C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C68S20970C8__A1__8S20970C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C68S20970C8__A1__8S20970C1[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C9D1Ev();
extern void _ZN8S20970C9D0Ev();
extern void _ZN8S20970C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C98S20970C8__8S20970C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C68S20970C98S20970C8__A2__8S20970C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C68S20970C98S20970C8__A2__8S20970C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,120),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C68S20970C98S20970C8__A2__8S20970C1[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C98S20970C8__8S20970C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,120),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C98S20970C8__8S20970C1[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C8__8S20970C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C8__8S20970C1[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void ABISELECT(_ZThn16_N8S20970C8D1Ev,_ZThn8_N8S20970C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20970C8D0Ev,_ZThn8_N8S20970C8D0Ev)();
extern void _ZN8S20970C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C9__8S20970C8__8S20970C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20970C8D1Ev,_ZThn8_N8S20970C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20970C8D0Ev,_ZThn8_N8S20970C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20970C8D1Ev,_ZTv0_n24_N8S20970C8D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20970C8D0Ev,_ZTv0_n24_N8S20970C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20970C3__8S20970C8__8S20970C1[] = {
  ABISELECT(448,292),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(448,292),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C8D1Ev,_ZTv0_n24_N8S20970C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C8D0Ev,_ZTv0_n24_N8S20970C8D0Ev),
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__A2__8S20970C8__8S20970C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S20970C10__8S20970C8__8S20970C1[] = {
  0,
  0,
  ABISELECT(-1312,-840),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
static  VTT_ENTRY vtt_S20970C1[] = {
  {&(_ZTV8S20970C1[9]),  9,100},
  {&(_ZTV8S20970C1[25]),  25,100},
  {&(_ZTV8S20970C1[36]),  36,100},
  {&(_ZTV8S20970C1[44]),  44,100},
  {&(_ZTV8S20970C1[51]),  51,100},
  {&(_ZTV8S20970C1[57]),  57,100},
  {&(_ZTV8S20970C1[73]),  73,100},
  {&(_ZTV8S20970C1[81]),  81,100},
  {&(_ZTV8S20970C1[87]),  87,100},
  {&(_ZTV8S20970C1[93]),  93,100},
  {&(_ZTV8S20970C1[98]),  98,100},
  {&(_tg__ZTV8S20970C2__8S20970C1[8]),  8,13},
  {&(_tg__ZTV8S20970C3__8S20970C2__8S20970C1[6]),  6,8},
  {&(_tg__ZTV8S20970C4__8S20970C2__8S20970C1[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C2__8S20970C1[3]),  3,4},
  {&(_tg__ZTV8S20970C6__8S20970C2__8S20970C1[5]),  5,6},
  {&(_tg__ZTV8S20970C8__8S20970C2__8S20970C1[15]),  15,19},
  {&(_tg__ZTV8S20970C98S20970C8__8S20970C2__8S20970C1[4]),  4,8},
  {&(_tg__ZTV8S20970C48S20970C98S20970C8__A1__8S20970C2__8S20970C1[2]),  2,6},
  {&(_tg__ZTV8S20970C58S20970C98S20970C8__A3__8S20970C2__8S20970C1[2]),  2,3},
  {&(_tg__ZTV9S20970C10__8S20970C2__8S20970C1[4]),  4,6},
  {&(_tg__ZTV8S20970C3__8S20970C1[5]),  5,7},
  {&(_tg__ZTV8S20970C4__8S20970C3__8S20970C1[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C3__8S20970C1[3]),  3,4},
  {&(_tg__ZTV8S20970C6__8S20970C3__8S20970C1[5]),  5,6},
  {&(_tg__ZTV8S20970C6__8S20970C1[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C6__8S20970C1[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C6__8S20970C1[3]),  3,4},
  {&(_tg__ZTV8S20970C8__8S20970C1[7]),  7,11},
  {&(_tg__ZTV8S20970C68S20970C8__A1__8S20970C1[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C68S20970C8__A1__8S20970C1[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C68S20970C8__A1__8S20970C1[3]),  3,4},
  {&(_tg__ZTV8S20970C98S20970C8__8S20970C1[4]),  4,8},
  {&(_tg__ZTV8S20970C68S20970C98S20970C8__A2__8S20970C1[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C68S20970C98S20970C8__A2__8S20970C1[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C68S20970C98S20970C8__A2__8S20970C1[3]),  3,4},
  {&(_tg__ZTV8S20970C4__8S20970C98S20970C8__8S20970C1[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C98S20970C8__8S20970C1[3]),  3,4},
  {&(_tg__ZTV8S20970C4__8S20970C8__8S20970C1[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C8__8S20970C1[3]),  3,4},
  {&(_tg__ZTV8S20970C9__8S20970C8__8S20970C1[4]),  4,8},
  {&(_tg__ZTV8S20970C3__8S20970C8__8S20970C1[6]),  6,8},
  {&(_tg__ZTV8S20970C6__A2__8S20970C8__8S20970C1[5]),  5,6},
  {&(_tg__ZTV9S20970C10__8S20970C8__8S20970C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20970C1[];
extern  VTBL_ENTRY _ZTV8S20970C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C1[];
static VTBL_ENTRY alt_thunk_names89[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20970C2D0Ev,_ZTv0_n40_N8S20970C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S20970C2D0Ev,_ZThn300_N8S20970C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20970C2D1Ev,_ZTv0_n40_N8S20970C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S20970C2D1Ev,_ZThn300_N8S20970C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20970C2D0Ev,_ZTv0_n24_N8S20970C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20970C2D0Ev,_ZThn8_N8S20970C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20970C2D1Ev,_ZTv0_n24_N8S20970C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20970C2D1Ev,_ZThn8_N8S20970C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20970C1D0Ev,_ZTv0_n40_N8S20970C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S20970C1D0Ev,_ZThn984_N8S20970C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20970C1D1Ev,_ZTv0_n40_N8S20970C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S20970C1D1Ev,_ZThn984_N8S20970C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20970C1D0Ev,_ZTv0_n24_N8S20970C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1120_N8S20970C1D0Ev,_ZThn692_N8S20970C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20970C1D1Ev,_ZTv0_n24_N8S20970C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1120_N8S20970C1D1Ev,_ZThn692_N8S20970C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20970C1D0Ev,_ZTv0_n36_N8S20970C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N8S20970C1D0Ev,_ZThn684_N8S20970C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20970C1D1Ev,_ZTv0_n36_N8S20970C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N8S20970C1D1Ev,_ZThn684_N8S20970C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20970C1 = {  "S20970C1", // class name
  bases_S20970C1, 14,
  &(vtc_S20970C1[0]), // expected_vtbl_contents
  &(vtt_S20970C1[0]), // expected_vtt_contents
  ABISELECT(2928,1852), // object size
  NSPAIRA(_ZTI8S20970C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20970C1),100, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20970C1),44, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names89,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C2_nt  : virtual S4228C37 {
  ~S20760C2_nt(); // tgen
  S20760C2_nt(); // tgen
};
//SIG(-1 S20760C2_nt) C1{ VBC2{ m}}


S20760C2_nt ::~S20760C2_nt(){ note_dtor("S20760C2_nt", this);} // tgen
S20760C2_nt ::S20760C2_nt(){ note_ctor("S20760C2_nt", this);} // tgen

//skip512 S20760C2_nt

#else // __cplusplus

extern void _ZN11S20760C2_ntC1Ev();
extern void _ZN11S20760C2_ntD1Ev();
Name_Map name_map_S20760C2_nt[] = {
  NSPAIR(_ZN11S20760C2_ntC1Ev),
  NSPAIR(_ZN11S20760C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S20760C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S20760C2_nt[];
static  VTBL_ENTRY vtc_S20760C2_nt[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S20760C2_nt[0]),
};
extern VTBL_ENTRY _ZTV11S20760C2_nt[];
static  VTT_ENTRY vtt_S20760C2_nt[] = {
  {&(_ZTV11S20760C2_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI11S20760C2_nt[];
VTBL_ENTRY *P__ZTI11S20760C2_nt = _ZTI11S20760C2_nt; 
extern  VTBL_ENTRY _ZTV11S20760C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20760C2_nt[];
Class_Descriptor cd_S20760C2_nt = {  "S20760C2_nt", // class name
  bases_S20760C2_nt, 1,
  &(vtc_S20760C2_nt[0]), // expected_vtbl_contents
  &(vtt_S20760C2_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S20760C2_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S20760C2_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S20760C2_nt),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C5_nt  {
  __tsi64 s20760c5f0;
  void  mf20760c5(); // _ZN11S20760C5_nt9mf20760c5Ev
  virtual  ~S20760C5_nt(); // _ZN11S20760C5_ntD1Ev
  S20760C5_nt(); // tgen
};
//SIG(-1 S20760C5_nt) C1{ vd m FL}


void  S20760C5_nt ::mf20760c5(){}
 S20760C5_nt ::~S20760C5_nt(){ note_dtor("S20760C5_nt", this);}
S20760C5_nt ::S20760C5_nt(){ note_ctor("S20760C5_nt", this);} // tgen

//skip512 S20760C5_nt

#else // __cplusplus

extern void _ZN11S20760C5_ntC1Ev();
extern void _ZN11S20760C5_ntD1Ev();
Name_Map name_map_S20760C5_nt[] = {
  NSPAIR(_ZN11S20760C5_ntC1Ev),
  NSPAIR(_ZN11S20760C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern void _ZN11S20760C5_ntD1Ev();
extern void _ZN11S20760C5_ntD0Ev();
static  VTBL_ENTRY vtc_S20760C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20760C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20760C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20760C5_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
VTBL_ENTRY *P__ZTI11S20760C5_nt = _ZTI11S20760C5_nt; 
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
Class_Descriptor cd_S20760C5_nt = {  "S20760C5_nt", // class name
  0,0,//no base classes
  &(vtc_S20760C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI11S20760C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20760C5_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C4  : virtual S20760C5_nt {
  char s20760c4f0[2];
  virtual  ~S20760C4(); // _ZN8S20760C4D2Ev
  S20760C4(); // tgen
};
//SIG(-1 S20760C4) C1{ VBC2{ vd m FL} vd Fc[2]}


 S20760C4 ::~S20760C4(){ note_dtor("S20760C4", this);}
S20760C4 ::S20760C4(){ note_ctor("S20760C4", this);} // tgen

static void Test_S20760C4()
{
  extern Class_Descriptor cd_S20760C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20760C4, buf);
    S20760C4 *dp, &lv = *(dp=new (buf) S20760C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20760C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20760C4)");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(16,8), "S20760C4");
    check_field_offset(lv, s20760c4f0, ABISELECT(8,4), "S20760C4.s20760c4f0");
    test_class_info(&lv, &cd_S20760C4);
    dp->~S20760C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C4(Test_S20760C4, "S20760C4", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20760C4C1Ev();
extern void _ZN8S20760C4D2Ev();
Name_Map name_map_S20760C4[] = {
  NSPAIR(_ZN8S20760C4C1Ev),
  NSPAIR(_ZN8S20760C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S20760C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20760C4[];
extern void _ZN8S20760C4D1Ev();
extern void _ZN8S20760C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20760C4D1Ev,_ZThn8_N8S20760C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20760C4D0Ev,_ZThn8_N8S20760C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C4[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C4[0]),
  (VTBL_ENTRY)&_ZN8S20760C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C4D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20760C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S20760C4[];
static  VTT_ENTRY vtt_S20760C4[] = {
  {&(_ZTV8S20760C4[3]),  3,10},
  {&(_ZTV8S20760C4[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S20760C4[];
extern  VTBL_ENTRY _ZTV8S20760C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C4[];
static VTBL_ENTRY alt_thunk_names90[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C4D0Ev,_ZThn8_N8S20760C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C4D1Ev,_ZThn8_N8S20760C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C4 = {  "S20760C4", // class name
  bases_S20760C4, 1,
  &(vtc_S20760C4[0]), // expected_vtbl_contents
  &(vtt_S20760C4[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20760C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20760C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20760C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names90,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C9  {
  __tsi64 s20760c9f0;
  void  mf20760c9(); // _ZN8S20760C99mf20760c9Ev
  virtual  ~S20760C9(); // _ZN8S20760C9D1Ev
  S20760C9(); // tgen
};
//SIG(-1 S20760C9) C1{ vd m FL}


void  S20760C9 ::mf20760c9(){}
 S20760C9 ::~S20760C9(){ note_dtor("S20760C9", this);}
S20760C9 ::S20760C9(){ note_ctor("S20760C9", this);} // tgen

static void Test_S20760C9()
{
  extern Class_Descriptor cd_S20760C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20760C9, buf);
    S20760C9 *dp, &lv = *(dp=new (buf) S20760C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20760C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20760C9)");
    check_field_offset(lv, s20760c9f0, ABISELECT(8,4), "S20760C9.s20760c9f0");
    test_class_info(&lv, &cd_S20760C9);
    dp->~S20760C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C9(Test_S20760C9, "S20760C9", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20760C9C1Ev();
extern void _ZN8S20760C9D1Ev();
Name_Map name_map_S20760C9[] = {
  NSPAIR(_ZN8S20760C9C1Ev),
  NSPAIR(_ZN8S20760C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20760C9[];
extern void _ZN8S20760C9D1Ev();
extern void _ZN8S20760C9D0Ev();
static  VTBL_ENTRY vtc_S20760C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C9[0]),
  (VTBL_ENTRY)&_ZN8S20760C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C9D0Ev,
};
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
Class_Descriptor cd_S20760C9 = {  "S20760C9", // class name
  0,0,//no base classes
  &(vtc_S20760C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20760C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20760C9),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C8  : virtual S20760C9 {
  ::S4228C27 s20760c8f0;
  virtual  ~S20760C8(); // _ZN8S20760C8D2Ev
  S20760C8(); // tgen
};
//SIG(-1 S20760C8) C1{ VBC2{ vd m FL} vd FC3{ m}}


 S20760C8 ::~S20760C8(){ note_dtor("S20760C8", this);}
S20760C8 ::S20760C8(){ note_ctor("S20760C8", this);} // tgen

static void Test_S20760C8()
{
  extern Class_Descriptor cd_S20760C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20760C8, buf);
    S20760C8 *dp, &lv = *(dp=new (buf) S20760C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20760C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20760C8)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(16,8), "S20760C8");
    check_field_offset(lv, s20760c8f0, ABISELECT(8,4), "S20760C8.s20760c8f0");
    test_class_info(&lv, &cd_S20760C8);
    dp->~S20760C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C8(Test_S20760C8, "S20760C8", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20760C8C1Ev();
extern void _ZN8S20760C8D2Ev();
Name_Map name_map_S20760C8[] = {
  NSPAIR(_ZN8S20760C8C1Ev),
  NSPAIR(_ZN8S20760C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S20760C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20760C8[];
extern void _ZN8S20760C8D1Ev();
extern void _ZN8S20760C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20760C8D1Ev,_ZThn8_N8S20760C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20760C8D0Ev,_ZThn8_N8S20760C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C8[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C8[0]),
  (VTBL_ENTRY)&_ZN8S20760C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C8D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20760C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S20760C8[];
static  VTT_ENTRY vtt_S20760C8[] = {
  {&(_ZTV8S20760C8[3]),  3,10},
  {&(_ZTV8S20760C8[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S20760C8[];
extern  VTBL_ENTRY _ZTV8S20760C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C8[];
static VTBL_ENTRY alt_thunk_names91[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C8D0Ev,_ZThn8_N8S20760C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C8D1Ev,_ZThn8_N8S20760C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C8 = {  "S20760C8", // class name
  bases_S20760C8, 1,
  &(vtc_S20760C8[0]), // expected_vtbl_contents
  &(vtt_S20760C8[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20760C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20760C8),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20760C8),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names91,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C13  {
  int s20760c13f0[6];
  void  mf20760c13(); // _ZN9S20760C1310mf20760c13Ev
  virtual  ~S20760C13(); // _ZN9S20760C13D1Ev
  S20760C13(); // tgen
};
//SIG(-1 S20760C13) C1{ vd m Fi[6]}


void  S20760C13 ::mf20760c13(){}
 S20760C13 ::~S20760C13(){ note_dtor("S20760C13", this);}
S20760C13 ::S20760C13(){ note_ctor("S20760C13", this);} // tgen

static void Test_S20760C13()
{
  extern Class_Descriptor cd_S20760C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,8)];
    init_test(&cd_S20760C13, buf);
    S20760C13 *dp, &lv = *(dp=new (buf) S20760C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S20760C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20760C13)");
    check_field_offset(lv, s20760c13f0, ABISELECT(8,4), "S20760C13.s20760c13f0");
    test_class_info(&lv, &cd_S20760C13);
    dp->~S20760C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C13(Test_S20760C13, "S20760C13", ABISELECT(32,28));

#else // __cplusplus

extern void _ZN9S20760C13C1Ev();
extern void _ZN9S20760C13D1Ev();
Name_Map name_map_S20760C13[] = {
  NSPAIR(_ZN9S20760C13C1Ev),
  NSPAIR(_ZN9S20760C13D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20760C13[];
extern void _ZN9S20760C13D1Ev();
extern void _ZN9S20760C13D0Ev();
static  VTBL_ENTRY vtc_S20760C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C13[0]),
  (VTBL_ENTRY)&_ZN9S20760C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C13D0Ev,
};
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
Class_Descriptor cd_S20760C13 = {  "S20760C13", // class name
  0,0,//no base classes
  &(vtc_S20760C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,28), // object size
  NSPAIRA(_ZTI9S20760C13),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20760C13),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C12  : S20760C13 , virtual S4228C20 , virtual S4228C27 {
  short s20760c12f0;
  ~S20760C12(); // tgen
  S20760C12(); // tgen
};
//SIG(-1 S20760C12) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S20760C12 ::~S20760C12(){ note_dtor("S20760C12", this);} // tgen
S20760C12 ::S20760C12(){ note_ctor("S20760C12", this);} // tgen

static void Test_S20760C12()
{
  extern Class_Descriptor cd_S20760C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S20760C12, buf);
    S20760C12 *dp, &lv = *(dp=new (buf) S20760C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S20760C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20760C12)");
    check_base_class_offset(lv, (S20760C13*), 0, "S20760C12");
    check_base_class_offset(lv, (S4228C20*), 0, "S20760C12");
    check_base_class_offset(lv, (S4228C27*), 0, "S20760C12");
    check_field_offset(lv, s20760c12f0, ABISELECT(32,28), "S20760C12.s20760c12f0");
    test_class_info(&lv, &cd_S20760C12);
    dp->~S20760C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C12(Test_S20760C12, "S20760C12", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN9S20760C12C1Ev();
extern void _ZN9S20760C12D1Ev();
Name_Map name_map_S20760C12[] = {
  NSPAIR(_ZN9S20760C12C1Ev),
  NSPAIR(_ZN9S20760C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C20;
extern VTBL_ENTRY _ZTI8S4228C20[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S20760C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20760C12[];
extern void _ZN9S20760C12D1Ev();
extern void _ZN9S20760C12D0Ev();
static  VTBL_ENTRY vtc_S20760C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C12[0]),
  (VTBL_ENTRY)&_ZN9S20760C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C12D0Ev,
};
extern VTBL_ENTRY _ZTV9S20760C12[];
static  VTT_ENTRY vtt_S20760C12[] = {
  {&(_ZTV9S20760C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20760C12[];
extern  VTBL_ENTRY _ZTV9S20760C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C12[];
Class_Descriptor cd_S20760C12 = {  "S20760C12", // class name
  bases_S20760C12, 3,
  &(vtc_S20760C12[0]), // expected_vtbl_contents
  &(vtt_S20760C12[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI9S20760C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20760C12),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C12),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C7  : virtual S20760C8 , virtual S4228C23 , S20760C12 {
  int s20760c7f0;
  virtual  ~S20760C7(); // _ZN8S20760C7D2Ev
  S20760C7(); // tgen
};
//SIG(-1 S20760C7) C1{ VBC2{ VBC3{ vd m FL} vd FC4{ m}} VBC5{ m} BC6{ BC7{ vd m Fi[6]} VBC8{ m} VBC4 Fs} vd Fi}


 S20760C7 ::~S20760C7(){ note_dtor("S20760C7", this);}
S20760C7 ::S20760C7(){ note_ctor("S20760C7", this);} // tgen

static void Test_S20760C7()
{
  extern Class_Descriptor cd_S20760C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S20760C7, buf);
    S20760C7 *dp, &lv = *(dp=new (buf) S20760C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S20760C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20760C7)");
    check_base_class_offset(lv, (S20760C9*)(S20760C8*), ABISELECT(56,44), "S20760C7");
    check_base_class_offset(lv, (S20760C8*), ABISELECT(40,36), "S20760C7");
    check_base_class_offset(lv, (S4228C23*), 0, "S20760C7");
    check_base_class_offset(lv, (S20760C13*)(S20760C12*), 0, "S20760C7");
    check_base_class_offset(lv, (S4228C20*)(S20760C12*), 0, "S20760C7");
    check_base_class_offset(lv, (S4228C27*)(S20760C12*), 0, "S20760C7");
    check_base_class_offset(lv, (S20760C12*), 0, "S20760C7");
    check_field_offset(lv, s20760c7f0, ABISELECT(36,32), "S20760C7.s20760c7f0");
    test_class_info(&lv, &cd_S20760C7);
    dp->~S20760C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C7(Test_S20760C7, "S20760C7", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN8S20760C7C1Ev();
extern void _ZN8S20760C7D2Ev();
Name_Map name_map_S20760C7[] = {
  NSPAIR(_ZN8S20760C7C1Ev),
  NSPAIR(_ZN8S20760C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C8;
extern VTBL_ENTRY _ZTI8S20760C8[];
extern  VTBL_ENTRY _ZTV8S20760C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C8[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C20;
extern VTBL_ENTRY _ZTI8S4228C20[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C12;
extern VTBL_ENTRY _ZTI9S20760C12[];
extern  VTBL_ENTRY _ZTV9S20760C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C12[];
static Base_Class bases_S20760C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(56,44), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20760C8,    ABISELECT(40,36), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20760C7[];
extern void _ZN8S20760C7D1Ev();
extern void _ZN8S20760C7D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20760C7D1Ev,_ZTv0_n16_N8S20760C7D1Ev)();
extern void ABISELECT(_ZThn40_N8S20760C7D1Ev,_ZThn36_N8S20760C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C7D0Ev,_ZTv0_n16_N8S20760C7D0Ev)();
extern void ABISELECT(_ZThn40_N8S20760C7D0Ev,_ZThn36_N8S20760C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C7D1Ev,_ZTv0_n12_N8S20760C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S20760C7D1Ev,_ZThn44_N8S20760C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C7D0Ev,_ZTv0_n12_N8S20760C7D0Ev)();
extern void ABISELECT(_ZThn56_N8S20760C7D0Ev,_ZThn44_N8S20760C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C7[] = {
  0,
  ABISELECT(56,44),
  ABISELECT(40,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C7[0]),
  (VTBL_ENTRY)&_ZN8S20760C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C7D0Ev,
  ABISELECT(-40,-36),
  ABISELECT(16,8),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S20760C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C7D1Ev,_ZTv0_n16_N8S20760C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C7D0Ev,_ZTv0_n16_N8S20760C7D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S20760C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C7D1Ev,_ZTv0_n12_N8S20760C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C7D0Ev,_ZTv0_n12_N8S20760C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S20760C7[];
extern void _ZN9S20760C12D1Ev();
extern void _ZN9S20760C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C12__8S20760C7[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C12[0]),
  (VTBL_ENTRY)&_ZN9S20760C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C12D0Ev,
};
extern void _ZN8S20760C8D1Ev();
extern void _ZN8S20760C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20760C8__8S20760C7[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C8[0]),
  (VTBL_ENTRY)&_ZN8S20760C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20760C8D1Ev,_ZThn8_N8S20760C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20760C8D0Ev,_ZThn8_N8S20760C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20760C8__8S20760C7[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20760C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev),
};
static  VTT_ENTRY vtt_S20760C7[] = {
  {&(_ZTV8S20760C7[7]),  7,20},
  {&(_tg__ZTV9S20760C12__8S20760C7[4]),  4,6},
  {&(_ZTV8S20760C7[13]),  13,20},
  {&(_ZTV8S20760C7[18]),  18,20},
  {&(_tg__ZTV8S20760C8__8S20760C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S20760C8__8S20760C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20760C7[];
extern  VTBL_ENTRY _ZTV8S20760C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C7[];
static VTBL_ENTRY alt_thunk_names92[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C8D0Ev,_ZThn8_N8S20760C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C8D1Ev,_ZThn8_N8S20760C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C7D0Ev,_ZTv0_n12_N8S20760C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20760C7D0Ev,_ZThn44_N8S20760C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C7D1Ev,_ZTv0_n12_N8S20760C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20760C7D1Ev,_ZThn44_N8S20760C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C7D0Ev,_ZTv0_n16_N8S20760C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20760C7D0Ev,_ZThn36_N8S20760C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C7D1Ev,_ZTv0_n16_N8S20760C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20760C7D1Ev,_ZThn36_N8S20760C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C7 = {  "S20760C7", // class name
  bases_S20760C7, 7,
  &(vtc_S20760C7[0]), // expected_vtbl_contents
  &(vtt_S20760C7[0]), // expected_vtt_contents
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI8S20760C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20760C7),20, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20760C7),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names92,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C18  : virtual S20760C9 {
  virtual  ~S20760C18(); // _ZN9S20760C18D2Ev
  S20760C18(); // tgen
};
//SIG(-1 S20760C18) C1{ VBC2{ vd m FL} vd}


 S20760C18 ::~S20760C18(){ note_dtor("S20760C18", this);}
S20760C18 ::S20760C18(){ note_ctor("S20760C18", this);} // tgen

static void Test_S20760C18()
{
  extern Class_Descriptor cd_S20760C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20760C18, buf);
    S20760C18 *dp, &lv = *(dp=new (buf) S20760C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20760C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20760C18)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S20760C18");
    test_class_info(&lv, &cd_S20760C18);
    dp->~S20760C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C18(Test_S20760C18, "S20760C18", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S20760C18C1Ev();
extern void _ZN9S20760C18D2Ev();
Name_Map name_map_S20760C18[] = {
  NSPAIR(_ZN9S20760C18C1Ev),
  NSPAIR(_ZN9S20760C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S20760C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20760C18[];
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn8_N9S20760C18D1Ev,_ZThn4_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn8_N9S20760C18D0Ev,_ZThn4_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C18[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S20760C18[];
static  VTT_ENTRY vtt_S20760C18[] = {
  {&(_ZTV9S20760C18[3]),  3,10},
  {&(_ZTV9S20760C18[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
static VTBL_ENTRY alt_thunk_names93[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20760C18D0Ev,_ZThn4_N9S20760C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20760C18D1Ev,_ZThn4_N9S20760C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C18 = {  "S20760C18", // class name
  bases_S20760C18, 1,
  &(vtc_S20760C18[0]), // expected_vtbl_contents
  &(vtt_S20760C18[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S20760C18),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20760C18),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C18),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names93,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C17  : S20760C9 , virtual S20760C13 , S20760C18 {
  ::S20760C13 s20760c17f0;
  ~S20760C17(); // tgen
  S20760C17(); // tgen
};
//SIG(-1 S20760C17) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S20760C17 ::~S20760C17(){ note_dtor("S20760C17", this);} // tgen
S20760C17 ::S20760C17(){ note_ctor("S20760C17", this);} // tgen

static void Test_S20760C17()
{
  extern Class_Descriptor cd_S20760C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S20760C17, buf);
    S20760C17 *dp, &lv = *(dp=new (buf) S20760C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S20760C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20760C17)");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S20760C17");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S20760C17");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*), ABISELECT(88,72), "S20760C17");
    check_base_class_offset(lv, (S20760C18*), ABISELECT(16,12), "S20760C17");
    check_field_offset(lv, s20760c17f0, ABISELECT(24,16), "S20760C17.s20760c17f0");
    test_class_info(&lv, &cd_S20760C17);
    dp->~S20760C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C17(Test_S20760C17, "S20760C17", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN9S20760C17C1Ev();
extern void _ZN9S20760C17D1Ev();
Name_Map name_map_S20760C17[] = {
  NSPAIR(_ZN9S20760C17C1Ev),
  NSPAIR(_ZN9S20760C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
static Base_Class bases_S20760C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20760C18,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20760C17[];
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn88_N9S20760C17D1Ev,_ZThn72_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn88_N9S20760C17D0Ev,_ZThn72_N9S20760C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C17[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S20760C17[];
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn72_N9S20760C18D1Ev,_ZThn60_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn72_N9S20760C18D0Ev,_ZThn60_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C18__9S20760C17[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
static  VTT_ENTRY vtt_S20760C17[] = {
  {&(_ZTV9S20760C17[4]),  4,21},
  {&(_tg__ZTV9S20760C18__9S20760C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C18__9S20760C17[3]),  3,5},
  {&(_ZTV9S20760C17[14]),  14,21},
  {&(_ZTV9S20760C17[9]),  9,21},
  {&(_ZTV9S20760C17[19]),  19,21},
};
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
static VTBL_ENTRY alt_thunk_names94[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C18D0Ev,_ZThn60_N9S20760C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C18D1Ev,_ZThn60_N9S20760C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20760C17D0Ev,_ZThn72_N9S20760C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20760C17D1Ev,_ZThn72_N9S20760C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C17 = {  "S20760C17", // class name
  bases_S20760C17, 4,
  &(vtc_S20760C17[0]), // expected_vtbl_contents
  &(vtt_S20760C17[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI9S20760C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20760C17),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C17),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names94,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C16  : virtual S20760C13 , virtual S20760C17 {
  long double s20760c16f0;
  ~S20760C16(); // tgen
  S20760C16(); // tgen
};
//SIG(-1 S20760C16) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S20760C16 ::~S20760C16(){ note_dtor("S20760C16", this);} // tgen
S20760C16 ::S20760C16(){ note_ctor("S20760C16", this);} // tgen

static void Test_S20760C16()
{
  extern Class_Descriptor cd_S20760C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S20760C16, buf);
    S20760C16 *dp, &lv = *(dp=new (buf) S20760C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S20760C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20760C16)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S20760C16");
    check_base_class_offset(lv, (S20760C13*)(S20760C17*), ABISELECT(32,16), "S20760C16");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*), ABISELECT(64,44), "S20760C16");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*), ABISELECT(120,88), "S20760C16");
    check_base_class_offset(lv, (S20760C18*)(S20760C17*), ABISELECT(80,56), "S20760C16");
    check_base_class_offset(lv, (S20760C17*), ABISELECT(64,44), "S20760C16");
    check_field_offset(lv, s20760c16f0, ABISELECT(16,4), "S20760C16.s20760c16f0");
    test_class_info(&lv, &cd_S20760C16);
    dp->~S20760C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C16(Test_S20760C16, "S20760C16", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN9S20760C16C1Ev();
extern void _ZN9S20760C16D1Ev();
Name_Map name_map_S20760C16[] = {
  NSPAIR(_ZN9S20760C16C1Ev),
  NSPAIR(_ZN9S20760C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
static Base_Class bases_S20760C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20760C18,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20760C16[];
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20760C16D1Ev,_ZThn16_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S20760C16D0Ev,_ZThn16_N9S20760C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn120_N9S20760C16D1Ev,_ZThn88_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn120_N9S20760C16D0Ev,_ZThn88_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C16[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S20760C16[];
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C16[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C16[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20760C18D1Ev,_ZThn32_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20760C18D0Ev,_ZThn32_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C16[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C17__9S20760C16[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17__9S20760C16[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C17__9S20760C16[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
static  VTT_ENTRY vtt_S20760C16[] = {
  {&(_ZTV9S20760C16[5]),  5,29},
  {&(_ZTV9S20760C16[10]),  10,29},
  {&(_ZTV9S20760C16[17]),  17,29},
  {&(_ZTV9S20760C16[22]),  22,29},
  {&(_ZTV9S20760C16[27]),  27,29},
  {&(_tg__ZTV9S20760C17__9S20760C16[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C16[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C16[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C17__9S20760C16[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C17__9S20760C16[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C17__9S20760C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
static VTBL_ENTRY alt_thunk_names95[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C18D0Ev,_ZThn32_N9S20760C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C18D1Ev,_ZThn32_N9S20760C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20760C16D0Ev,_ZThn88_N9S20760C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20760C16D0Ev,_ZThn16_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20760C16D1Ev,_ZThn88_N9S20760C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20760C16D1Ev,_ZThn16_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C16 = {  "S20760C16", // class name
  bases_S20760C16, 5,
  &(vtc_S20760C16[0]), // expected_vtbl_contents
  &(vtt_S20760C16[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI9S20760C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20760C16),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C16),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names95,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C22_nt  {
  void  mf20760c22(); // _ZN12S20760C22_nt10mf20760c22Ev
  virtual  ~S20760C22_nt(); // _ZN12S20760C22_ntD1Ev
  S20760C22_nt(); // tgen
};
//SIG(-1 S20760C22_nt) C1{ vd m}


void  S20760C22_nt ::mf20760c22(){}
 S20760C22_nt ::~S20760C22_nt(){ note_dtor("S20760C22_nt", this);}
S20760C22_nt ::S20760C22_nt(){ note_ctor("S20760C22_nt", this);} // tgen

//skip512 S20760C22_nt

#else // __cplusplus

extern void _ZN12S20760C22_ntC1Ev();
extern void _ZN12S20760C22_ntD1Ev();
Name_Map name_map_S20760C22_nt[] = {
  NSPAIR(_ZN12S20760C22_ntC1Ev),
  NSPAIR(_ZN12S20760C22_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern void _ZN12S20760C22_ntD1Ev();
extern void _ZN12S20760C22_ntD0Ev();
static  VTBL_ENTRY vtc_S20760C22_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S20760C22_nt[0]),
  (VTBL_ENTRY)&_ZN12S20760C22_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20760C22_ntD0Ev,
};
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
VTBL_ENTRY *P__ZTI12S20760C22_nt = _ZTI12S20760C22_nt; 
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
Class_Descriptor cd_S20760C22_nt = {  "S20760C22_nt", // class name
  0,0,//no base classes
  &(vtc_S20760C22_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S20760C22_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV12S20760C22_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C20  : S4161C4_nt , S20760C16 , S20760C22_nt , virtual S20760C18 {
  virtual  ~S20760C20(); // _ZN9S20760C20D2Ev
  S20760C20(); // tgen
};
//SIG(-1 S20760C20) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S20760C20 ::~S20760C20(){ note_dtor("S20760C20", this);}
S20760C20 ::S20760C20(){ note_ctor("S20760C20", this);} // tgen

static void Test_S20760C20()
{
  extern Class_Descriptor cd_S20760C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S20760C20, buf);
    S20760C20 *dp, &lv = *(dp=new (buf) S20760C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S20760C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20760C20)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S20760C20");
    check_base_class_offset(lv, (S20760C13*)(S20760C16*), ABISELECT(48,24), "S20760C20");
    check_base_class_offset(lv, (S20760C13*)(S20760C17*), ABISELECT(48,24), "S20760C20");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*), ABISELECT(80,52), "S20760C20");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*), ABISELECT(136,96), "S20760C20");
    /*is_ambiguous_... S20760C20::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C18*), ABISELECT(136,96), "S20760C20");
    check_base_class_offset(lv, (S20760C18*)(S20760C17*), ABISELECT(96,64), "S20760C20");
    check_base_class_offset(lv, (S20760C17*)(S20760C16*), ABISELECT(80,52), "S20760C20");
    check_base_class_offset(lv, (S20760C16*), 0, "S20760C20");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S20760C20");
    /*is_ambiguous_... S20760C20::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C18*), ABISELECT(152,108), "S20760C20");
    test_class_info(&lv, &cd_S20760C20);
    dp->~S20760C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C20(Test_S20760C20, "S20760C20", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN9S20760C20C1Ev();
extern void _ZN9S20760C20D2Ev();
Name_Map name_map_S20760C20[] = {
  NSPAIR(_ZN9S20760C20C1Ev),
  NSPAIR(_ZN9S20760C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
static Base_Class bases_S20760C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C18,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C18,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20760C20[];
extern void _ZN9S20760C20D1Ev();
extern void _ZN9S20760C20D0Ev();
extern void ABISELECT(_ZThn40_N9S20760C20D1Ev,_ZThn20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn40_N9S20760C20D0Ev,_ZThn20_N9S20760C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn48_N9S20760C20D1Ev,_ZThn24_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn48_N9S20760C20D0Ev,_ZThn24_N9S20760C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C20D1Ev,_ZThn52_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C20D0Ev,_ZThn52_N9S20760C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn136_N9S20760C20D1Ev,_ZThn96_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn136_N9S20760C20D0Ev,_ZThn96_N9S20760C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn152_N9S20760C20D1Ev,_ZThn108_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn152_N9S20760C20D0Ev,_ZThn108_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C20[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&_ZN9S20760C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C20D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20760C20D1Ev,_ZThn20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20760C20D0Ev,_ZThn20_N9S20760C20D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S20760C20[];
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C16__9S20760C20[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S20760C16D1Ev,_ZThn24_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S20760C16D0Ev,_ZThn24_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C16__9S20760C20[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C16D1Ev,_ZThn52_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C16D0Ev,_ZThn52_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C16__9S20760C20[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C16__9S20760C20[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn136_N9S20760C16D1Ev,_ZThn96_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn136_N9S20760C16D0Ev,_ZThn96_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C16__9S20760C20[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C20[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C20[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20760C18D1Ev,_ZThn32_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20760C18D0Ev,_ZThn32_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C20[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C17__9S20760C20[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17__9S20760C20[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C17__9S20760C20[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C20[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C18__A1__9S20760C20[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
static  VTT_ENTRY vtt_S20760C20[] = {
  {&(_ZTV9S20760C20[6]),  6,40},
  {&(_tg__ZTV9S20760C16__9S20760C20[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C16__9S20760C20[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C16__9S20760C20[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C16__9S20760C20[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C16__9S20760C20[3]),  3,5},
  {&(_ZTV9S20760C20[15]),  15,40},
  {&(_ZTV9S20760C20[22]),  22,40},
  {&(_ZTV9S20760C20[27]),  27,40},
  {&(_ZTV9S20760C20[32]),  32,40},
  {&(_ZTV9S20760C20[38]),  38,40},
  {&(_tg__ZTV9S20760C17__9S20760C20[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C20[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C20[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C17__9S20760C20[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C17__9S20760C20[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C17__9S20760C20[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C20[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C18__A1__9S20760C20[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20760C20[];
extern  VTBL_ENTRY _ZTV9S20760C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C20[];
static VTBL_ENTRY alt_thunk_names96[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C18D0Ev,_ZThn32_N9S20760C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C18D1Ev,_ZThn32_N9S20760C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C16D0Ev,_ZThn52_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C16D1Ev,_ZThn52_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C16D0Ev,_ZThn96_N9S20760C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C16D0Ev,_ZThn24_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C16D1Ev,_ZThn96_N9S20760C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C16D1Ev,_ZThn24_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C20D0Ev,_ZThn108_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C20D1Ev,_ZThn108_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C20D0Ev,_ZThn52_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C20D1Ev,_ZThn52_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C20D0Ev,_ZThn96_N9S20760C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C20D0Ev,_ZThn24_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C20D1Ev,_ZThn96_N9S20760C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C20D1Ev,_ZThn24_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C20 = {  "S20760C20", // class name
  bases_S20760C20, 9,
  &(vtc_S20760C20[0]), // expected_vtbl_contents
  &(vtt_S20760C20[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI9S20760C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20760C20),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C20),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names96,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C19  : S20760C9 , S20760C20 {
  virtual  ~S20760C19(); // _ZN9S20760C19D2Ev
  S20760C19(); // tgen
};
//SIG(-1 S20760C19) C1{ BC2{ vd m FL} BC3{ BC4{ m Fp} BC5{ VBC6{ vd m Fi[6]} VBC7{ BC2 VBC6 BC8{ VBC2 vd} FC6} FD} BC9{ vd m} VBC8 vd} vd}


 S20760C19 ::~S20760C19(){ note_dtor("S20760C19", this);}
S20760C19 ::S20760C19(){ note_ctor("S20760C19", this);} // tgen

static void Test_S20760C19()
{
  extern Class_Descriptor cd_S20760C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,32)];
    init_test(&cd_S20760C19, buf);
    S20760C19 *dp, &lv = *(dp=new (buf) S20760C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S20760C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20760C19)");
    /*is_ambiguous_... S20760C19::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S20760C19");
    check_base_class_offset(lv, (S4161C4_nt*)(S20760C20*), ABISELECT(48,28), "S20760C19");
    check_base_class_offset(lv, (S20760C13*)(S20760C16*)(S20760C20*), ABISELECT(64,36), "S20760C19");
    check_base_class_offset(lv, (S20760C13*)(S20760C17*), ABISELECT(64,36), "S20760C19");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*), ABISELECT(96,64), "S20760C19");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*), ABISELECT(152,108), "S20760C19");
    /*is_ambiguous_... S20760C19::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C18*), ABISELECT(152,108), "S20760C19");
    check_base_class_offset(lv, (S20760C18*)(S20760C17*), ABISELECT(112,76), "S20760C19");
    check_base_class_offset(lv, (S20760C17*)(S20760C16*)(S20760C20*), ABISELECT(96,64), "S20760C19");
    check_base_class_offset(lv, (S20760C16*)(S20760C20*), ABISELECT(16,12), "S20760C19");
    check_base_class_offset(lv, (S20760C22_nt*)(S20760C20*), ABISELECT(56,32), "S20760C19");
    /*is_ambiguous_... S20760C20::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C18*)(S20760C20*), ABISELECT(168,120), "S20760C19");
    check_base_class_offset(lv, (S20760C20*), ABISELECT(16,12), "S20760C19");
    test_class_info(&lv, &cd_S20760C19);
    dp->~S20760C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C19(Test_S20760C19, "S20760C19", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN9S20760C19C1Ev();
extern void _ZN9S20760C19D2Ev();
Name_Map name_map_S20760C19[] = {
  NSPAIR(_ZN9S20760C19C1Ev),
  NSPAIR(_ZN9S20760C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C20;
extern VTBL_ENTRY _ZTI9S20760C20[];
extern  VTBL_ENTRY _ZTV9S20760C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C20[];
static Base_Class bases_S20760C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(64,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(152,108), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C18,    ABISELECT(112,76), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(96,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20760C16,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C18,    ABISELECT(168,120), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20760C20,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20760C19[];
extern void _ZN9S20760C19D1Ev();
extern void _ZN9S20760C19D0Ev();
extern void ABISELECT(_ZThn16_N9S20760C19D1Ev,_ZThn12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C19D0Ev,_ZThn12_N9S20760C19D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C19D1Ev,_ZThn32_N9S20760C19D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C19D0Ev,_ZThn32_N9S20760C19D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZThn64_N9S20760C19D1Ev,_ZThn36_N9S20760C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev)();
extern void ABISELECT(_ZThn64_N9S20760C19D0Ev,_ZThn36_N9S20760C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C19D1Ev,_ZTv0_n20_N9S20760C19D1Ev)();
extern void ABISELECT(_ZThn96_N9S20760C19D1Ev,_ZThn64_N9S20760C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C19D0Ev,_ZTv0_n20_N9S20760C19D0Ev)();
extern void ABISELECT(_ZThn96_N9S20760C19D0Ev,_ZThn64_N9S20760C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20760C19D1Ev,_ZTvn12_n20_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C19D0Ev,_ZTvn12_n20_N9S20760C19D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZThn152_N9S20760C19D1Ev,_ZThn108_N9S20760C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev)();
extern void ABISELECT(_ZThn152_N9S20760C19D0Ev,_ZThn108_N9S20760C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C19D1Ev,_ZTv0_n16_N9S20760C19D1Ev)();
extern void ABISELECT(_ZThn168_N9S20760C19D1Ev,_ZThn120_N9S20760C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C19D0Ev,_ZTv0_n16_N9S20760C19D0Ev)();
extern void ABISELECT(_ZThn168_N9S20760C19D0Ev,_ZThn120_N9S20760C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C19[] = {
  ABISELECT(168,120),
  ABISELECT(152,108),
  ABISELECT(96,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&_ZN9S20760C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C19D0Ev,
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C19D1Ev,_ZThn12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C19D0Ev,_ZThn12_N9S20760C19D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20760C19D1Ev,_ZThn32_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20760C19D0Ev,_ZThn32_N9S20760C19D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev),
  ABISELECT(-96,-64),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C19D1Ev,_ZTv0_n20_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C19D0Ev,_ZTv0_n20_N9S20760C19D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C19D1Ev,_ZTvn12_n20_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C19D0Ev,_ZTvn12_n20_N9S20760C19D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev),
  ABISELECT(-168,-120),
  ABISELECT(-16,-12),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C19D1Ev,_ZTv0_n16_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C19D0Ev,_ZTv0_n16_N9S20760C19D0Ev),
};
extern VTBL_ENTRY _ZTV9S20760C19[];
extern void _ZN9S20760C20D1Ev();
extern void _ZN9S20760C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C20__9S20760C19[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&_ZN9S20760C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C20D0Ev,
};
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C169S20760C20__9S20760C19[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S20760C16D1Ev,_ZThn24_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S20760C16D0Ev,_ZThn24_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C169S20760C20__9S20760C19[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C16D1Ev,_ZThn52_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C16D0Ev,_ZThn52_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C169S20760C20__9S20760C19[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C169S20760C20__9S20760C19[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn136_N9S20760C16D1Ev,_ZThn96_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn136_N9S20760C16D0Ev,_ZThn96_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C169S20760C20__9S20760C19[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn48_N9S20760C20D1Ev,_ZThn24_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn48_N9S20760C20D0Ev,_ZThn24_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C20__9S20760C19[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C20D1Ev,_ZThn52_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C20D0Ev,_ZThn52_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C20__9S20760C19[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C20__9S20760C19[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn136_N9S20760C20D1Ev,_ZThn96_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn136_N9S20760C20D0Ev,_ZThn96_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C20__9S20760C19[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn152_N9S20760C20D1Ev,_ZThn108_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn152_N9S20760C20D0Ev,_ZThn108_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C20__9S20760C19[] = {
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev),
};
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C19[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C19[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20760C18D1Ev,_ZThn32_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20760C18D0Ev,_ZThn32_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C19[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C17__9S20760C19[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17__9S20760C19[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C17__9S20760C19[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C19[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C18__A1__9S20760C19[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
static  VTT_ENTRY vtt_S20760C19[] = {
  {&(_ZTV9S20760C19[6]),  6,48},
  {&(_tg__ZTV9S20760C20__9S20760C19[6]),  6,8},
  {&(_tg__ZTV9S20760C169S20760C20__9S20760C19[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C169S20760C20__9S20760C19[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C169S20760C20__9S20760C19[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C169S20760C20__9S20760C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C169S20760C20__9S20760C19[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C20__9S20760C19[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C20__9S20760C19[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C20__9S20760C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C20__9S20760C19[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C20__9S20760C19[4]),  4,6},
  {&(_ZTV9S20760C19[14]),  14,48},
  {&(_ZTV9S20760C19[23]),  23,48},
  {&(_ZTV9S20760C19[30]),  30,48},
  {&(_ZTV9S20760C19[35]),  35,48},
  {&(_ZTV9S20760C19[40]),  40,48},
  {&(_ZTV9S20760C19[46]),  46,48},
  {&(_tg__ZTV9S20760C17__9S20760C19[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C19[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C17__9S20760C19[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C17__9S20760C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C17__9S20760C19[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C18__A1__9S20760C19[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20760C19[];
extern  VTBL_ENTRY _ZTV9S20760C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C19[];
static VTBL_ENTRY alt_thunk_names97[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C18D0Ev,_ZThn32_N9S20760C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C18D1Ev,_ZThn32_N9S20760C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C20D0Ev,_ZThn108_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C20D1Ev,_ZThn108_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C20D0Ev,_ZThn52_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C20D1Ev,_ZThn52_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C20D0Ev,_ZThn96_N9S20760C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C20D0Ev,_ZThn24_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C20D1Ev,_ZThn96_N9S20760C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C20D1Ev,_ZThn24_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C16D0Ev,_ZThn52_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C16D1Ev,_ZThn52_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C16D0Ev,_ZThn96_N9S20760C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C16D0Ev,_ZThn24_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C16D1Ev,_ZThn96_N9S20760C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C16D1Ev,_ZThn24_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C19D0Ev,_ZTv0_n16_N9S20760C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C19D0Ev,_ZThn120_N9S20760C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C19D1Ev,_ZTv0_n16_N9S20760C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C19D1Ev,_ZThn120_N9S20760C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C19D0Ev,_ZTv0_n20_N9S20760C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20760C19D0Ev,_ZThn64_N9S20760C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C19D1Ev,_ZTv0_n20_N9S20760C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20760C19D1Ev,_ZThn64_N9S20760C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C19D0Ev,_ZThn108_N9S20760C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C19D0Ev,_ZThn36_N9S20760C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C19D1Ev,_ZThn108_N9S20760C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C19D1Ev,_ZThn36_N9S20760C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C19 = {  "S20760C19", // class name
  bases_S20760C19, 11,
  &(vtc_S20760C19[0]), // expected_vtbl_contents
  &(vtt_S20760C19[0]), // expected_vtt_contents
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI9S20760C19),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20760C19),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C19),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names97,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C15  : virtual S20760C16 , virtual S20760C19 , S4228C27 , virtual S20760C5_nt {
  virtual  ~S20760C15(); // _ZN9S20760C15D2Ev
  virtual void  v1(); // _ZN9S20760C152v1Ev
  S20760C15(); // tgen
};
//SIG(-1 S20760C15) C1{ VBC2{ VBC3{ vd m Fi[6]} VBC4{ BC5{ vd m FL} VBC3 BC6{ VBC5 vd} FC3} FD} VBC7{ BC5 BC8{ BC9{ m Fp} BC2 BC10{ vd m} VBC6 vd} vd} BC11{ m} VBC12{ vd m FL} vd v1}


 S20760C15 ::~S20760C15(){ note_dtor("S20760C15", this);}
void  S20760C15 ::v1(){vfunc_called(this, "_ZN9S20760C152v1Ev");}
S20760C15 ::S20760C15(){ note_ctor("S20760C15", this);} // tgen

static void Test_S20760C15()
{
  extern Class_Descriptor cd_S20760C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,39)];
    init_test(&cd_S20760C15, buf);
    S20760C15 *dp, &lv = *(dp=new (buf) S20760C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,152), "sizeof(S20760C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20760C15)");
    /*is_ambiguous_... S20760C15::S20760C16 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20760C16*), ABISELECT(48,20), "S20760C15");
    check_base_class_offset(lv, (S20760C13*)(S20760C17*), ABISELECT(48,20), "S20760C15");
    check_base_class_offset(lv, (S20760C13*)(S20760C16*)(S20760C20*)(S20760C19*), ABISELECT(48,20), "S20760C15");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*), ABISELECT(80,48), "S20760C15");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*), ABISELECT(136,92), "S20760C15");
    /*is_ambiguous_... S20760C15::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C18*), ABISELECT(136,92), "S20760C15");
    check_base_class_offset(lv, (S20760C18*)(S20760C17*), ABISELECT(96,60), "S20760C15");
    /*is_ambiguous_... S20760C15::S20760C16 */ AMB_check_base_class_offset(lv, (S20760C17*)(S20760C16*), ABISELECT(80,48), "S20760C15");
    check_base_class_offset(lv, (S20760C17*)(S20760C16*)(S20760C20*)(S20760C19*), ABISELECT(80,48), "S20760C15");
    /*is_ambiguous_... S20760C15::S20760C16 */ AMB_check_base_class_offset(lv, (S20760C16*), ABISELECT(16,4), "S20760C15");
    /*is_ambiguous_... S20760C19::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C19*), ABISELECT(160,104), "S20760C15");
    check_base_class_offset(lv, (S4161C4_nt*)(S20760C20*)(S20760C19*), ABISELECT(208,132), "S20760C15");
    check_base_class_offset(lv, (S20760C16*)(S20760C20*)(S20760C19*), ABISELECT(176,116), "S20760C15");
    check_base_class_offset(lv, (S20760C22_nt*)(S20760C20*)(S20760C19*), ABISELECT(216,136), "S20760C15");
    /*is_ambiguous_... S20760C20::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C18*)(S20760C20*)(S20760C19*), 0, "S20760C15");
    check_base_class_offset(lv, (S20760C20*)(S20760C19*), ABISELECT(176,116), "S20760C15");
    check_base_class_offset(lv, (S20760C19*), ABISELECT(160,104), "S20760C15");
    check_base_class_offset(lv, (S4228C27*), 0, "S20760C15");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(224,140), "S20760C15");
    test_class_info(&lv, &cd_S20760C15);
    dp->~S20760C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C15(Test_S20760C15, "S20760C15", ABISELECT(240,152));

#else // __cplusplus

extern void _ZN9S20760C15C1Ev();
extern void _ZN9S20760C15D2Ev();
Name_Map name_map_S20760C15[] = {
  NSPAIR(_ZN9S20760C15C1Ev),
  NSPAIR(_ZN9S20760C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C20;
extern VTBL_ENTRY _ZTI9S20760C20[];
extern  VTBL_ENTRY _ZTV9S20760C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C20[];
extern Class_Descriptor cd_S20760C19;
extern VTBL_ENTRY _ZTI9S20760C19[];
extern  VTBL_ENTRY _ZTV9S20760C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C19[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S20760C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(48,20), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,92), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20760C18,    ABISELECT(96,60), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(80,48), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C16,    ABISELECT(16,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C16,    ABISELECT(176,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(216,136), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20760C20,    ABISELECT(176,116), //bcp->offset
    52, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C19,    ABISELECT(160,104), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C5_nt,    ABISELECT(224,140), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20760C15[];
extern void ABISELECT(_ZTv0_n32_N9S20760C15D1Ev,_ZTv0_n16_N9S20760C15D1Ev)();
extern void _ZN9S20760C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C15D0Ev,_ZTv0_n16_N9S20760C15D0Ev)();
extern void _ZN9S20760C15D0Ev() __attribute__((weak));
extern void _ZN9S20760C152v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20760C15D1Ev,_ZTv0_n24_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C15D1Ev,_ZThn4_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20760C15D0Ev,_ZTv0_n24_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S20760C15D0Ev,_ZThn4_N9S20760C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn48_N9S20760C15D1Ev,_ZThn20_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn48_N9S20760C15D0Ev,_ZThn20_N9S20760C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C15D1Ev,_ZTv0_n20_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C15D1Ev,_ZThn48_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C15D0Ev,_ZTv0_n20_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C15D0Ev,_ZThn48_N9S20760C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20760C15D1Ev,_ZTvn12_n20_N9S20760C15D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C15D0Ev,_ZTvn12_n20_N9S20760C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn136_N9S20760C15D1Ev,_ZThn92_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn136_N9S20760C15D0Ev,_ZThn92_N9S20760C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20760C15D1Ev,_ZTv0_n28_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn160_N9S20760C15D1Ev,_ZThn104_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20760C15D0Ev,_ZTv0_n28_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn160_N9S20760C15D0Ev,_ZThn104_N9S20760C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N9S20760C15D1Ev,_ZTvn12_n28_N9S20760C15D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S20760C15D0Ev,_ZTvn12_n28_N9S20760C15D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S20760C15D1Ev,_ZTvn32_n28_N9S20760C15D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S20760C15D0Ev,_ZTvn32_n28_N9S20760C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn224_N9S20760C15D1Ev,_ZThn140_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn224_N9S20760C15D0Ev,_ZThn140_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C15[] = {
  ABISELECT(224,140),
  0,
  ABISELECT(160,104),
  ABISELECT(80,48),
  ABISELECT(48,20),
  ABISELECT(16,4),
  0,
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C15D1Ev,_ZTv0_n16_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C15D0Ev,_ZTv0_n16_N9S20760C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20760C152v1Ev,
  ABISELECT(-16,-4),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C15D1Ev,_ZTv0_n24_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C15D0Ev,_ZTv0_n24_N9S20760C15D0Ev),
  ABISELECT(-48,-20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C15D1Ev,_ZTv0_n20_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C15D0Ev,_ZTv0_n20_N9S20760C15D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C15D1Ev,_ZTvn12_n20_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C15D0Ev,_ZTvn12_n20_N9S20760C15D0Ev),
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev),
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20760C15D1Ev,_ZTv0_n28_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20760C15D0Ev,_ZTv0_n28_N9S20760C15D0Ev),
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20760C15D1Ev,_ZTvn12_n28_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20760C15D0Ev,_ZTvn12_n28_N9S20760C15D0Ev),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20760C15D1Ev,_ZTvn32_n28_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20760C15D0Ev,_ZTvn32_n28_N9S20760C15D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S20760C15[];
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C16__9S20760C15[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20760C16D1Ev,_ZThn16_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S20760C16D0Ev,_ZThn16_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C16__9S20760C15[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C16__9S20760C15[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C16__9S20760C15[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn120_N9S20760C16D1Ev,_ZThn88_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn120_N9S20760C16D0Ev,_ZThn88_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C16__9S20760C15[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C15[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C15[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20760C18D1Ev,_ZThn32_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20760C18D0Ev,_ZThn32_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C15[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C17__9S20760C15[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17__9S20760C15[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C17__9S20760C15[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void _ZN9S20760C19D1Ev();
extern void _ZN9S20760C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C19__9S20760C15[] = {
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&_ZN9S20760C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C19D0Ev,
};
extern void _ZN9S20760C20D1Ev();
extern void _ZN9S20760C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C209S20760C19__9S20760C15[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&_ZN9S20760C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C20D0Ev,
};
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C169S20760C209S20760C19__A1__9S20760C15[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C169S20760C209S20760C19__A1__9S20760C15[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C169S20760C209S20760C19__A1__9S20760C15[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C19__A1__9S20760C15[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C19__A1__9S20760C15[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C209S20760C19__9S20760C15[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C209S20760C19__9S20760C15[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C209S20760C19__9S20760C15[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C209S20760C19__9S20760C15[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C209S20760C19__9S20760C15[] = {
  ABISELECT(176,116),
  ABISELECT(136,92),
  ABISELECT(176,116),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C19D1Ev,_ZThn12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C19D0Ev,_ZThn12_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C20__9S20760C19__9S20760C15[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C19D1Ev,_ZThn12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C19D0Ev,_ZThn12_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C19__9S20760C15[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C19D1Ev,_ZTv0_n20_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20760C19D0Ev,_ZTv0_n20_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C19__9S20760C15[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C19D1Ev,_ZTv0_n20_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C19D0Ev,_ZTv0_n20_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C19D1Ev,_ZTvn12_n20_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C19D0Ev,_ZTvn12_n20_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C19__9S20760C15[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C19D1Ev,_ZTvn12_n20_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C19D0Ev,_ZTvn12_n20_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__9S20760C19__9S20760C15[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C19D1Ev,_ZTv0_n16_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20760C19D0Ev,_ZTv0_n16_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C19__9S20760C15[] = {
  ABISELECT(160,104),
  ABISELECT(136,92),
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C19D1Ev,_ZTv0_n16_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C19D0Ev,_ZTv0_n16_N9S20760C19D0Ev),
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C15[] = {
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn136_N9S20760C18D1Ev,_ZThn92_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn136_N9S20760C18D0Ev,_ZThn92_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C18__A1__9S20760C15[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
static  VTT_ENTRY vtt_S20760C15[] = {
  {&(_ZTV9S20760C15[10]),  10,69},
  {&(_ZTV9S20760C15[19]),  19,69},
  {&(_ZTV9S20760C15[24]),  24,69},
  {&(_ZTV9S20760C15[31]),  31,69},
  {&(_ZTV9S20760C15[36]),  36,69},
  {&(_ZTV9S20760C15[41]),  41,69},
  {&(_ZTV9S20760C15[50]),  50,69},
  {&(_ZTV9S20760C15[58]),  58,69},
  {&(_ZTV9S20760C15[62]),  62,69},
  {&(_ZTV9S20760C15[10]),  10,69},
  {&(_ZTV9S20760C15[67]),  67,69},
  {&(_tg__ZTV9S20760C16__9S20760C15[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C16__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C16__9S20760C15[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C16__9S20760C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C16__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C15[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C17__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C17__9S20760C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C17__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C19__9S20760C15[6]),  6,8},
  {&(_tg__ZTV9S20760C209S20760C19__9S20760C15[6]),  6,8},
  {&(_tg__ZTV9S20760C169S20760C209S20760C19__A1__9S20760C15[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C169S20760C209S20760C19__A1__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C169S20760C209S20760C19__A1__9S20760C15[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C19__A1__9S20760C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C19__A1__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C209S20760C19__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C209S20760C19__9S20760C15[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C209S20760C19__9S20760C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C209S20760C19__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C209S20760C19__9S20760C15[4]),  4,6},
  {&(_tg__ZTV9S20760C20__9S20760C19__9S20760C15[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20760C19__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C19__9S20760C15[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C19__9S20760C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__9S20760C19__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C19__9S20760C15[4]),  4,6},
  {&(_tg__ZTV9S20760C18__A1__9S20760C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C18__A1__9S20760C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20760C15[];
extern  VTBL_ENTRY _ZTV9S20760C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C15[];
static VTBL_ENTRY alt_thunk_names98[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C18D0Ev,_ZThn92_N9S20760C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C18D0Ev,_ZThn32_N9S20760C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C18D1Ev,_ZThn92_N9S20760C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C18D1Ev,_ZThn32_N9S20760C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20760C16D0Ev,_ZThn88_N9S20760C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20760C16D0Ev,_ZThn16_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20760C16D1Ev,_ZThn88_N9S20760C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20760C16D1Ev,_ZThn16_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20760C15D0Ev,_ZTv0_n28_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C15D0Ev,_ZThn104_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20760C15D1Ev,_ZTv0_n28_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C15D1Ev,_ZThn104_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C15D0Ev,_ZTv0_n20_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C15D0Ev,_ZThn48_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C15D1Ev,_ZTv0_n20_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C15D1Ev,_ZThn48_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20760C15D0Ev,_ZThn140_N9S20760C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C15D0Ev,_ZThn92_N9S20760C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C15D0Ev,_ZThn20_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20760C15D1Ev,_ZThn140_N9S20760C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C15D1Ev,_ZThn92_N9S20760C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C15D1Ev,_ZThn20_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C15D0Ev,_ZTv0_n24_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20760C15D0Ev,_ZThn4_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C15D1Ev,_ZTv0_n24_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20760C15D1Ev,_ZThn4_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C15D0Ev,_ZTv0_n16_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)_ZN9S20760C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C15D1Ev,_ZTv0_n16_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)_ZN9S20760C15D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C15 = {  "S20760C15", // class name
  bases_S20760C15, 15,
  &(vtc_S20760C15[0]), // expected_vtbl_contents
  &(vtt_S20760C15[0]), // expected_vtt_contents
  ABISELECT(240,152), // object size
  NSPAIRA(_ZTI9S20760C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20760C15),69, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C15),42, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names98,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C6  : virtual S20760C4 , S20760C7 , S20760C15 , S20760C9 {
  virtual  ~S20760C6(); // _ZN8S20760C6D2Ev
  S20760C6(); // tgen
};
//SIG(-1 S20760C6) C1{ VBC2{ VBC3{ vd m FL} vd Fc[2]} BC4{ VBC5{ VBC6{ vd m FL} vd FC7{ m}} VBC8{ m} BC9{ BC10{ vd m Fi[6]} VBC11{ m} VBC7 Fs} vd Fi} BC12{ VBC13{ VBC10 VBC14{ BC6 VBC10 BC15{ VBC6 vd} FC10} FD} VBC16{ BC6 BC17{ BC18{ m Fp} BC13 BC19{ vd m} VBC15 vd} vd} BC7 VBC3 vd v1} BC6 vd}


 S20760C6 ::~S20760C6(){ note_dtor("S20760C6", this);}
S20760C6 ::S20760C6(){ note_ctor("S20760C6", this);} // tgen

static void Test_S20760C6()
{
  extern Class_Descriptor cd_S20760C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,55)];
    init_test(&cd_S20760C6, buf);
    S20760C6 *dp, &lv = *(dp=new (buf) S20760C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,216), "sizeof(S20760C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20760C6)");
    check_base_class_offset(lv, (S20760C5_nt*)(S20760C4*), ABISELECT(80,60), "S20760C6");
    check_base_class_offset(lv, (S20760C5_nt*)(S20760C15*), ABISELECT(80,60), "S20760C6");
    check_base_class_offset(lv, (S20760C4*), ABISELECT(64,52), "S20760C6");
    check_base_class_offset(lv, (S20760C9*)(S20760C8*), ABISELECT(112,80), "S20760C6");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*), ABISELECT(112,80), "S20760C6");
    /*is_ambiguous_... S20760C6::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C18*), ABISELECT(112,80), "S20760C6");
    check_base_class_offset(lv, (S20760C8*)(S20760C7*), ABISELECT(96,72), "S20760C6");
    check_base_class_offset(lv, (S4228C23*)(S20760C7*), 0, "S20760C6");
    check_base_class_offset(lv, (S20760C13*)(S20760C12*)(S20760C7*), 0, "S20760C6");
    check_base_class_offset(lv, (S4228C20*)(S20760C12*)(S20760C7*), 0, "S20760C6");
    check_base_class_offset(lv, (S4228C27*)(S20760C12*)(S20760C7*), 0, "S20760C6");
    check_base_class_offset(lv, (S20760C12*)(S20760C7*), 0, "S20760C6");
    check_base_class_offset(lv, (S20760C7*), 0, "S20760C6");
    /*is_ambiguous_... S20760C6::S20760C16 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20760C16*), ABISELECT(160,108), "S20760C6");
    check_base_class_offset(lv, (S20760C13*)(S20760C17*), ABISELECT(160,108), "S20760C6");
    check_base_class_offset(lv, (S20760C13*)(S20760C16*)(S20760C20*)(S20760C19*), ABISELECT(160,108), "S20760C6");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*), ABISELECT(192,136), "S20760C6");
    check_base_class_offset(lv, (S20760C18*)(S20760C17*), ABISELECT(208,148), "S20760C6");
    /*is_ambiguous_... S20760C6::S20760C16 */ AMB_check_base_class_offset(lv, (S20760C17*)(S20760C16*), ABISELECT(192,136), "S20760C6");
    check_base_class_offset(lv, (S20760C17*)(S20760C16*)(S20760C20*)(S20760C19*), ABISELECT(192,136), "S20760C6");
    /*is_ambiguous_... S20760C15::S20760C16 */ AMB_check_base_class_offset(lv, (S20760C16*)(S20760C15*), ABISELECT(128,92), "S20760C6");
    /*is_ambiguous_... S20760C19::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C19*), ABISELECT(256,180), "S20760C6");
    check_base_class_offset(lv, (S4161C4_nt*)(S20760C20*)(S20760C19*), ABISELECT(304,208), "S20760C6");
    check_base_class_offset(lv, (S20760C16*)(S20760C20*)(S20760C19*), ABISELECT(272,192), "S20760C6");
    check_base_class_offset(lv, (S20760C22_nt*)(S20760C20*)(S20760C19*), ABISELECT(312,212), "S20760C6");
    /*is_ambiguous_... S20760C20::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C18*)(S20760C20*)(S20760C19*), ABISELECT(40,36), "S20760C6");
    check_base_class_offset(lv, (S20760C20*)(S20760C19*), ABISELECT(272,192), "S20760C6");
    check_base_class_offset(lv, (S20760C19*)(S20760C15*), ABISELECT(256,180), "S20760C6");
    check_base_class_offset(lv, (S4228C27*)(S20760C15*), ABISELECT(40,36), "S20760C6");
    check_base_class_offset(lv, (S20760C15*), ABISELECT(40,36), "S20760C6");
    /*is_ambiguous_... S20760C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(48,40), "S20760C6");
    test_class_info(&lv, &cd_S20760C6);
    dp->~S20760C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C6(Test_S20760C6, "S20760C6", ABISELECT(320,216));

#else // __cplusplus

extern void _ZN8S20760C6C1Ev();
extern void _ZN8S20760C6D2Ev();
Name_Map name_map_S20760C6[] = {
  NSPAIR(_ZN8S20760C6C1Ev),
  NSPAIR(_ZN8S20760C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C4;
extern VTBL_ENTRY _ZTI8S20760C4[];
extern  VTBL_ENTRY _ZTV8S20760C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C8;
extern VTBL_ENTRY _ZTI8S20760C8[];
extern  VTBL_ENTRY _ZTV8S20760C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C8[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C20;
extern VTBL_ENTRY _ZTI8S4228C20[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C12;
extern VTBL_ENTRY _ZTI9S20760C12[];
extern  VTBL_ENTRY _ZTV9S20760C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C12[];
extern Class_Descriptor cd_S20760C7;
extern VTBL_ENTRY _ZTI8S20760C7[];
extern  VTBL_ENTRY _ZTV8S20760C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C7[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C20;
extern VTBL_ENTRY _ZTI9S20760C20[];
extern  VTBL_ENTRY _ZTV9S20760C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C20[];
extern Class_Descriptor cd_S20760C19;
extern VTBL_ENTRY _ZTI9S20760C19[];
extern  VTBL_ENTRY _ZTV9S20760C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C19[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C15;
extern VTBL_ENTRY _ZTI9S20760C15[];
extern  VTBL_ENTRY _ZTV9S20760C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C15[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S20760C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    ABISELECT(80,60), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20760C4,    ABISELECT(64,52), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(112,80), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20760C8,    ABISELECT(96,72), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20760C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20760C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(160,108), //bcp->offset
    63, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(192,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20760C18,    ABISELECT(208,148), //bcp->offset
    75, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(192,136), //bcp->offset
    68, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20760C16,    ABISELECT(128,92), //bcp->offset
    55, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(256,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20760C16,    ABISELECT(272,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(312,212), //bcp->offset
    97, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20760C18,    ABISELECT(40,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S20760C20,    ABISELECT(272,192), //bcp->offset
    89, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20760C19,    ABISELECT(256,180), //bcp->offset
    80, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(40,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20760C15,    ABISELECT(40,36), //bcp->offset
    16, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(48,40), //bcp->offset
    29, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20760C6[];
extern void _ZN8S20760C6D1Ev();
extern void _ZN8S20760C6D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S20760C6D1Ev,_ZThn36_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S20760C6D0Ev,_ZThn36_N8S20760C6D0Ev)() __attribute__((weak));
extern void _ZN9S20760C152v1Ev();
extern void ABISELECT(_ZThn48_N8S20760C6D1Ev,_ZThn40_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn48_N8S20760C6D0Ev,_ZThn40_N8S20760C6D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S20760C6D1Ev,_ZThn52_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S20760C6D0Ev,_ZThn52_N8S20760C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn80_N8S20760C6D1Ev,_ZThn60_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn80_N8S20760C6D0Ev,_ZThn60_N8S20760C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S20760C6D1Ev,_ZThn72_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S20760C6D0Ev,_ZThn72_N8S20760C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S20760C6D1Ev,_ZThn80_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S20760C6D0Ev,_ZThn80_N8S20760C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20760C6D1Ev,_ZTv0_n24_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S20760C6D1Ev,_ZThn92_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20760C6D0Ev,_ZTv0_n24_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S20760C6D0Ev,_ZThn92_N8S20760C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn160_N8S20760C6D1Ev,_ZThn108_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn160_N8S20760C6D0Ev,_ZThn108_N8S20760C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20760C6D1Ev,_ZTv0_n20_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S20760C6D1Ev,_ZThn136_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20760C6D0Ev,_ZTv0_n20_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S20760C6D0Ev,_ZThn136_N8S20760C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S20760C6D1Ev,_ZTvn12_n20_N8S20760C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S20760C6D0Ev,_ZTvn12_n20_N8S20760C6D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S20760C6D1Ev,_ZTv0_n28_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn256_N8S20760C6D1Ev,_ZThn180_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20760C6D0Ev,_ZTv0_n28_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn256_N8S20760C6D0Ev,_ZThn180_N8S20760C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S20760C6D1Ev,_ZTvn12_n28_N8S20760C6D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S20760C6D0Ev,_ZTvn12_n28_N8S20760C6D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20760C6D1Ev,_ZTvn32_n28_N8S20760C6D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20760C6D0Ev,_ZTvn32_n28_N8S20760C6D0Ev)();
static  VTBL_ENTRY vtc_S20760C6[] = {
  ABISELECT(40,36),
  ABISELECT(256,180),
  ABISELECT(192,136),
  ABISELECT(160,108),
  ABISELECT(128,92),
  ABISELECT(80,60),
  ABISELECT(64,52),
  0,
  ABISELECT(112,80),
  ABISELECT(96,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&_ZN8S20760C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C6D0Ev,
  ABISELECT(40,24),
  0,
  ABISELECT(216,144),
  ABISELECT(152,100),
  ABISELECT(120,72),
  ABISELECT(88,56),
  ABISELECT(-40,-36),
  ABISELECT(72,44),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20760C152v1Ev,
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20760C6D1Ev,_ZThn40_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20760C6D0Ev,_ZThn40_N8S20760C6D0Ev),
  ABISELECT(-64,-52),
  ABISELECT(16,8),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev),
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev),
  ABISELECT(-96,-72),
  ABISELECT(16,8),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev),
  ABISELECT(-112,-80),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev),
  ABISELECT(-128,-92),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20760C6D1Ev,_ZTv0_n24_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20760C6D0Ev,_ZTv0_n24_N8S20760C6D0Ev),
  ABISELECT(-160,-108),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev),
  ABISELECT(-192,-136),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20760C6D1Ev,_ZTv0_n20_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20760C6D0Ev,_ZTv0_n20_N8S20760C6D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20760C6D1Ev,_ZTvn12_n20_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20760C6D0Ev,_ZTvn12_n20_N8S20760C6D0Ev),
  ABISELECT(-256,-180),
  ABISELECT(-216,-144),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-256,-180),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20760C6D1Ev,_ZTv0_n28_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20760C6D0Ev,_ZTv0_n28_N8S20760C6D0Ev),
  ABISELECT(-232,-156),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20760C6D1Ev,_ZTvn12_n28_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20760C6D0Ev,_ZTvn12_n28_N8S20760C6D0Ev),
  ABISELECT(-312,-212),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20760C6D1Ev,_ZTvn32_n28_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20760C6D0Ev,_ZTvn32_n28_N8S20760C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S20760C6[];
extern void _ZN8S20760C7D1Ev();
extern void _ZN8S20760C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20760C7__8S20760C6[] = {
  0,
  ABISELECT(112,80),
  ABISELECT(96,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C7[0]),
  (VTBL_ENTRY)&_ZN8S20760C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C7D0Ev,
};
extern void _ZN9S20760C12D1Ev();
extern void _ZN9S20760C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C128S20760C7__8S20760C6[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C12[0]),
  (VTBL_ENTRY)&_ZN9S20760C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20760C7D1Ev,_ZTv0_n16_N8S20760C7D1Ev)();
extern void ABISELECT(_ZThn96_N8S20760C7D1Ev,_ZThn72_N8S20760C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C7D0Ev,_ZTv0_n16_N8S20760C7D0Ev)();
extern void ABISELECT(_ZThn96_N8S20760C7D0Ev,_ZThn72_N8S20760C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C8__8S20760C7__8S20760C6[] = {
  ABISELECT(-96,-72),
  ABISELECT(16,8),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S20760C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C7D1Ev,_ZTv0_n16_N8S20760C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C7D0Ev,_ZTv0_n16_N8S20760C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20760C7D1Ev,_ZTv0_n12_N8S20760C7D1Ev)();
extern void ABISELECT(_ZThn112_N8S20760C7D1Ev,_ZThn80_N8S20760C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C7D0Ev,_ZTv0_n12_N8S20760C7D0Ev)();
extern void ABISELECT(_ZThn112_N8S20760C7D0Ev,_ZThn80_N8S20760C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20760C7__8S20760C6[] = {
  ABISELECT(-112,-80),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S20760C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C7D1Ev,_ZTv0_n12_N8S20760C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C7D0Ev,_ZTv0_n12_N8S20760C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C15D1Ev,_ZTv0_n16_N9S20760C15D1Ev)();
extern void _ZN9S20760C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C15D0Ev,_ZTv0_n16_N9S20760C15D0Ev)();
extern void _ZN9S20760C15D0Ev() __attribute__((weak));
extern void _ZN9S20760C152v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C15__8S20760C6[] = {
  ABISELECT(40,24),
  0,
  ABISELECT(216,144),
  ABISELECT(152,100),
  ABISELECT(120,72),
  ABISELECT(88,56),
  0,
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C15D1Ev,_ZTv0_n16_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C15D0Ev,_ZTv0_n16_N9S20760C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20760C152v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S20760C15D1Ev,_ZTv0_n24_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S20760C15D1Ev,_ZThn56_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20760C15D0Ev,_ZTv0_n24_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S20760C15D0Ev,_ZThn56_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C16__9S20760C15__8S20760C6[] = {
  ABISELECT(-88,-56),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C15D1Ev,_ZTv0_n24_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C15D0Ev,_ZTv0_n24_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn120_N9S20760C15D1Ev,_ZThn72_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn120_N9S20760C15D0Ev,_ZThn72_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C15__8S20760C6[] = {
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C15D1Ev,_ZTv0_n20_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S20760C15D1Ev,_ZThn100_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C15D0Ev,_ZTv0_n20_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S20760C15D0Ev,_ZThn100_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C15__8S20760C6[] = {
  ABISELECT(-152,-100),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C15D1Ev,_ZTv0_n20_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C15D0Ev,_ZTv0_n20_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C15D1Ev,_ZTvn12_n20_N9S20760C15D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C15D0Ev,_ZTvn12_n20_N9S20760C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C15__8S20760C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(-168,-112),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C15D1Ev,_ZTvn12_n20_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C15D0Ev,_ZTvn12_n20_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn72_N9S20760C15D1Ev,_ZThn44_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn72_N9S20760C15D0Ev,_ZThn44_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C15__8S20760C6[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S20760C15D1Ev,_ZTv0_n28_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn216_N9S20760C15D1Ev,_ZThn144_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20760C15D0Ev,_ZTv0_n28_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn216_N9S20760C15D0Ev,_ZThn144_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C19__9S20760C15__8S20760C6[] = {
  ABISELECT(-216,-144),
  ABISELECT(-216,-144),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-216,-144),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20760C15D1Ev,_ZTv0_n28_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20760C15D0Ev,_ZTv0_n28_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N9S20760C15D1Ev,_ZTvn12_n28_N9S20760C15D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S20760C15D0Ev,_ZTvn12_n28_N9S20760C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C209S20760C19__9S20760C15__8S20760C6[] = {
  ABISELECT(-232,-156),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-232,-156),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20760C15D1Ev,_ZTvn12_n28_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20760C15D0Ev,_ZTvn12_n28_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N9S20760C15D1Ev,_ZTvn32_n28_N9S20760C15D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S20760C15D0Ev,_ZTvn32_n28_N9S20760C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S20760C209S20760C19__9S20760C15__8S20760C6[] = {
  ABISELECT(-272,-176),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20760C15D1Ev,_ZTvn32_n28_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20760C15D0Ev,_ZTvn32_n28_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S20760C15D1Ev,_ZThn24_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S20760C15D0Ev,_ZThn24_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S20760C15__8S20760C6[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev),
};
extern void _ZN8S20760C4D1Ev();
extern void _ZN8S20760C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20760C4__8S20760C6[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C4[0]),
  (VTBL_ENTRY)&_ZN8S20760C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20760C4D1Ev,_ZThn8_N8S20760C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20760C4D0Ev,_ZThn8_N8S20760C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S20760C4__8S20760C6[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20760C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev),
};
extern void _ZN8S20760C8D1Ev();
extern void _ZN8S20760C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20760C8__8S20760C6[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C8[0]),
  (VTBL_ENTRY)&_ZN8S20760C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20760C8D1Ev,_ZThn8_N8S20760C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20760C8D0Ev,_ZThn8_N8S20760C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20760C8__8S20760C6[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20760C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev),
};
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C16__8S20760C6[] = {
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20760C16D1Ev,_ZThn16_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S20760C16D0Ev,_ZThn16_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C16__8S20760C6[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C16__8S20760C6[] = {
  ABISELECT(-64,-44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C16__8S20760C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C16__8S20760C6[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C17__8S20760C6[] = {
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__8S20760C6[] = {
  ABISELECT(-96,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C17__8S20760C6[] = {
  ABISELECT(96,68),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C17__8S20760C6[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17__8S20760C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C17__8S20760C6[] = {
  ABISELECT(80,56),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void _ZN9S20760C19D1Ev();
extern void _ZN9S20760C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C19__8S20760C6[] = {
  ABISELECT(-216,-144),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&_ZN9S20760C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C19D0Ev,
};
extern void _ZN9S20760C20D1Ev();
extern void _ZN9S20760C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C209S20760C19__8S20760C6[] = {
  ABISELECT(-232,-156),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&_ZN9S20760C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C20D0Ev,
};
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C169S20760C209S20760C19__A1__8S20760C6[] = {
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C169S20760C209S20760C19__A1__8S20760C6[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C169S20760C209S20760C19__A1__8S20760C6[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C19__A1__8S20760C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C19__A1__8S20760C6[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C209S20760C19__8S20760C6[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C209S20760C19__8S20760C6[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C209S20760C19__8S20760C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C209S20760C19__8S20760C6[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C209S20760C19__8S20760C6[] = {
  ABISELECT(232,156),
  ABISELECT(72,44),
  ABISELECT(232,156),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C19D1Ev,_ZThn12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C19D0Ev,_ZThn12_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C20__9S20760C19__8S20760C6[] = {
  ABISELECT(-232,-156),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C19D1Ev,_ZThn12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C19D0Ev,_ZThn12_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C19__8S20760C6[] = {
  ABISELECT(96,72),
  ABISELECT(96,72),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C19D1Ev,_ZTv0_n20_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20760C19D0Ev,_ZTv0_n20_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C19__8S20760C6[] = {
  ABISELECT(64,44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C19D1Ev,_ZTv0_n20_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C19D0Ev,_ZTv0_n20_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C19D1Ev,_ZTvn12_n20_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C19D0Ev,_ZTvn12_n20_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C19__8S20760C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C19D1Ev,_ZTvn12_n20_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C19D0Ev,_ZTvn12_n20_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__9S20760C19__8S20760C6[] = {
  ABISELECT(144,100),
  ABISELECT(144,100),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C19D1Ev,_ZTv0_n16_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20760C19D0Ev,_ZTv0_n16_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C19__8S20760C6[] = {
  ABISELECT(216,144),
  ABISELECT(72,44),
  ABISELECT(216,144),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C19D1Ev,_ZTv0_n16_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C19D0Ev,_ZTv0_n16_N9S20760C19D0Ev),
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__8S20760C6[] = {
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn72_N9S20760C18D1Ev,_ZThn44_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn72_N9S20760C18D0Ev,_ZThn44_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C18__A1__8S20760C6[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
static  VTT_ENTRY vtt_S20760C6[] = {
  {&(_ZTV8S20760C6[14]),  14,101},
  {&(_tg__ZTV8S20760C7__8S20760C6[7]),  7,9},
  {&(_tg__ZTV9S20760C128S20760C7__8S20760C6[4]),  4,6},
  {&(_tg__ZTV8S20760C8__8S20760C7__8S20760C6[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S20760C7__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C15__8S20760C6[10]),  10,13},
  {&(_tg__ZTV9S20760C16__9S20760C15__8S20760C6[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20760C15__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C15__8S20760C6[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C15__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C15__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C19__9S20760C15__8S20760C6[7]),  7,9},
  {&(_tg__ZTV9S20760C209S20760C19__9S20760C15__8S20760C6[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S20760C209S20760C19__9S20760C15__8S20760C6[2]),  2,4},
  {&(_tg__ZTV9S20760C15__8S20760C6[10]),  10,13},
  {&(_tg__ZTV11S20760C5_nt__9S20760C15__8S20760C6[3]),  3,5},
  {&(_ZTV8S20760C6[37]),  37,101},
  {&(_ZTV8S20760C6[42]),  42,101},
  {&(_ZTV8S20760C6[48]),  48,101},
  {&(_ZTV8S20760C6[53]),  53,101},
  {&(_ZTV8S20760C6[26]),  26,101},
  {&(_ZTV8S20760C6[61]),  61,101},
  {&(_ZTV8S20760C6[66]),  66,101},
  {&(_ZTV8S20760C6[73]),  73,101},
  {&(_ZTV8S20760C6[78]),  78,101},
  {&(_ZTV8S20760C6[87]),  87,101},
  {&(_ZTV8S20760C6[95]),  95,101},
  {&(_ZTV8S20760C6[99]),  99,101},
  {&(_ZTV8S20760C6[26]),  26,101},
  {&(_tg__ZTV8S20760C4__8S20760C6[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S20760C4__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C8__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S20760C8__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C16__8S20760C6[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C16__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C16__8S20760C6[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C16__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C16__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C17__8S20760C6[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C17__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C17__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C17__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C17__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C17__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C19__8S20760C6[6]),  6,8},
  {&(_tg__ZTV9S20760C209S20760C19__8S20760C6[6]),  6,8},
  {&(_tg__ZTV9S20760C169S20760C209S20760C19__A1__8S20760C6[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C169S20760C209S20760C19__A1__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C169S20760C209S20760C19__A1__8S20760C6[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C19__A1__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C19__A1__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C209S20760C19__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C209S20760C19__8S20760C6[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C209S20760C19__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C209S20760C19__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C209S20760C19__8S20760C6[4]),  4,6},
  {&(_tg__ZTV9S20760C20__9S20760C19__8S20760C6[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20760C19__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C19__8S20760C6[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C19__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__9S20760C19__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C19__8S20760C6[4]),  4,6},
  {&(_tg__ZTV9S20760C18__A1__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C18__A1__8S20760C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20760C6[];
extern  VTBL_ENTRY _ZTV8S20760C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C6[];
static VTBL_ENTRY alt_thunk_names99[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C18D0Ev,_ZThn44_N9S20760C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C18D1Ev,_ZThn44_N9S20760C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20760C16D0Ev,_ZThn16_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20760C16D1Ev,_ZThn16_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C8D0Ev,_ZThn8_N8S20760C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C8D1Ev,_ZThn8_N8S20760C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C4D0Ev,_ZThn8_N8S20760C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C4D1Ev,_ZThn8_N8S20760C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20760C15D0Ev,_ZTv0_n28_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20760C15D0Ev,_ZThn144_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20760C15D1Ev,_ZTv0_n28_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20760C15D1Ev,_ZThn144_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C15D0Ev,_ZTv0_n20_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C15D0Ev,_ZThn100_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C15D1Ev,_ZTv0_n20_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C15D1Ev,_ZThn100_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C15D0Ev,_ZThn24_N9S20760C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C15D0Ev,_ZThn44_N9S20760C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20760C15D0Ev,_ZThn72_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C15D1Ev,_ZThn24_N9S20760C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C15D1Ev,_ZThn44_N9S20760C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20760C15D1Ev,_ZThn72_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C15D0Ev,_ZTv0_n24_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20760C15D0Ev,_ZThn56_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C15D1Ev,_ZTv0_n24_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20760C15D1Ev,_ZThn56_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C15D0Ev,_ZTv0_n16_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)_ZN9S20760C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C15D1Ev,_ZTv0_n16_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)_ZN9S20760C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C7D0Ev,_ZTv0_n12_N8S20760C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20760C7D0Ev,_ZThn80_N8S20760C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C7D1Ev,_ZTv0_n12_N8S20760C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20760C7D1Ev,_ZThn80_N8S20760C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C7D0Ev,_ZTv0_n16_N8S20760C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20760C7D0Ev,_ZThn72_N8S20760C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C7D1Ev,_ZTv0_n16_N8S20760C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20760C7D1Ev,_ZThn72_N8S20760C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20760C6D0Ev,_ZTv0_n28_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20760C6D0Ev,_ZThn180_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20760C6D1Ev,_ZTv0_n28_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20760C6D1Ev,_ZThn180_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20760C6D0Ev,_ZTv0_n20_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20760C6D0Ev,_ZThn136_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20760C6D1Ev,_ZTv0_n20_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20760C6D1Ev,_ZThn136_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20760C6D0Ev,_ZTv0_n24_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20760C6D0Ev,_ZThn92_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20760C6D1Ev,_ZTv0_n24_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20760C6D1Ev,_ZThn92_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20760C6D0Ev,_ZThn108_N8S20760C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20760C6D0Ev,_ZThn80_N8S20760C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20760C6D0Ev,_ZThn60_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20760C6D1Ev,_ZThn108_N8S20760C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20760C6D1Ev,_ZThn80_N8S20760C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20760C6D1Ev,_ZThn60_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20760C6D0Ev,_ZThn72_N8S20760C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20760C6D0Ev,_ZThn52_N8S20760C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20760C6D0Ev,_ZThn36_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20760C6D1Ev,_ZThn72_N8S20760C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20760C6D1Ev,_ZThn52_N8S20760C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20760C6D1Ev,_ZThn36_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C6 = {  "S20760C6", // class name
  bases_S20760C6, 25,
  &(vtc_S20760C6[0]), // expected_vtbl_contents
  &(vtt_S20760C6[0]), // expected_vtt_contents
  ABISELECT(320,216), // object size
  NSPAIRA(_ZTI8S20760C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20760C6),101, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20760C6),64, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names99,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C24  : virtual S4161C4_nt , virtual S20760C9 , virtual S20760C17 , S20760C20 , virtual S20760C5_nt {
  ~S20760C24(); // tgen
  S20760C24(); // tgen
};
//SIG(-1 S20760C24) C1{ VBC2{ m Fp} VBC3{ vd m FL} VBC4{ BC3 VBC5{ vd m Fi[6]} BC6{ VBC3 vd} FC5} BC7{ BC2 BC8{ VBC5 VBC4 FD} BC9{ vd m} VBC6 vd} VBC10{ vd m FL}}


S20760C24 ::~S20760C24(){ note_dtor("S20760C24", this);} // tgen
S20760C24 ::S20760C24(){ note_ctor("S20760C24", this);} // tgen

static void Test_S20760C24()
{
  extern Class_Descriptor cd_S20760C24;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,33)];
    init_test(&cd_S20760C24, buf);
    S20760C24 *dp, &lv = *(dp=new (buf) S20760C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,128), "sizeof(S20760C24)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20760C24)");
    /*is_ambiguous_... S20760C24::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(48,24), "S20760C24");
    /*is_ambiguous_... S20760C24::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(56,28), "S20760C24");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*), ABISELECT(56,28), "S20760C24");
    /*is_ambiguous_... S20760C24::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C18*), ABISELECT(56,28), "S20760C24");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*), ABISELECT(72,40), "S20760C24");
    check_base_class_offset(lv, (S20760C13*)(S20760C17*), ABISELECT(128,84), "S20760C24");
    check_base_class_offset(lv, (S20760C13*)(S20760C16*)(S20760C20*), ABISELECT(128,84), "S20760C24");
    check_base_class_offset(lv, (S20760C18*)(S20760C17*), ABISELECT(88,52), "S20760C24");
    check_base_class_offset(lv, (S20760C17*), ABISELECT(72,40), "S20760C24");
    check_base_class_offset(lv, (S20760C17*)(S20760C16*)(S20760C20*), ABISELECT(72,40), "S20760C24");
    check_base_class_offset(lv, (S4161C4_nt*)(S20760C20*), ABISELECT(32,16), "S20760C24");
    check_base_class_offset(lv, (S20760C16*)(S20760C20*), 0, "S20760C24");
    check_base_class_offset(lv, (S20760C22_nt*)(S20760C20*), ABISELECT(40,20), "S20760C24");
    /*is_ambiguous_... S20760C20::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C18*)(S20760C20*), ABISELECT(160,112), "S20760C24");
    check_base_class_offset(lv, (S20760C20*), 0, "S20760C24");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(168,116), "S20760C24");
    test_class_info(&lv, &cd_S20760C24);
    dp->~S20760C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C24(Test_S20760C24, "S20760C24", ABISELECT(192,128));

#else // __cplusplus

extern void _ZN9S20760C24C1Ev();
extern void _ZN9S20760C24D1Ev();
Name_Map name_map_S20760C24[] = {
  NSPAIR(_ZN9S20760C24C1Ev),
  NSPAIR(_ZN9S20760C24D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C20;
extern VTBL_ENTRY _ZTI9S20760C20[];
extern  VTBL_ENTRY _ZTV9S20760C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C20[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S20760C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(56,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(128,84), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C18,    ABISELECT(88,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(72,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C18,    ABISELECT(160,112), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20760C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C5_nt,    ABISELECT(168,116), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20760C24[];
extern void _ZN9S20760C24D1Ev();
extern void _ZN9S20760C24D0Ev();
extern void ABISELECT(_ZThn40_N9S20760C24D1Ev,_ZThn20_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn40_N9S20760C24D0Ev,_ZThn20_N9S20760C24D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C24D1Ev,_ZThn28_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C24D0Ev,_ZThn28_N9S20760C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C24D1Ev,_ZTv0_n20_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn72_N9S20760C24D1Ev,_ZThn40_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C24D0Ev,_ZTv0_n20_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn72_N9S20760C24D0Ev,_ZThn40_N9S20760C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20760C24D1Ev,_ZTvn12_n20_N9S20760C24D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C24D0Ev,_ZTvn12_n20_N9S20760C24D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn128_N9S20760C24D1Ev,_ZThn84_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn128_N9S20760C24D0Ev,_ZThn84_N9S20760C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C24D1Ev,_ZTv0_n16_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn160_N9S20760C24D1Ev,_ZThn112_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C24D0Ev,_ZTv0_n16_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn160_N9S20760C24D0Ev,_ZThn112_N9S20760C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn168_N9S20760C24D1Ev,_ZThn116_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn168_N9S20760C24D0Ev,_ZThn116_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C24[] = {
  ABISELECT(168,116),
  ABISELECT(48,24),
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&_ZN9S20760C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C24D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20760C24D1Ev,_ZThn20_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20760C24D0Ev,_ZThn20_N9S20760C24D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C24D1Ev,_ZTv0_n20_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C24D0Ev,_ZTv0_n20_N9S20760C24D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C24D1Ev,_ZTvn12_n20_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C24D0Ev,_ZTvn12_n20_N9S20760C24D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev),
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C24D1Ev,_ZTv0_n16_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C24D0Ev,_ZTv0_n16_N9S20760C24D0Ev),
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev),
};
extern VTBL_ENTRY _ZTV9S20760C24[];
extern void _ZN9S20760C20D1Ev();
extern void _ZN9S20760C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C20__9S20760C24[] = {
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&_ZN9S20760C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C20D0Ev,
};
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C169S20760C20__9S20760C24[] = {
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn128_N9S20760C16D1Ev,_ZThn84_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn128_N9S20760C16D0Ev,_ZThn84_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C169S20760C20__9S20760C24[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S20760C16D1Ev,_ZThn40_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn72_N9S20760C16D0Ev,_ZThn40_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C169S20760C20__9S20760C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C169S20760C20__9S20760C24[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C16D1Ev,_ZThn28_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C16D0Ev,_ZThn28_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C169S20760C20__9S20760C24[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn128_N9S20760C20D1Ev,_ZThn84_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn128_N9S20760C20D0Ev,_ZThn84_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C20__9S20760C24[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn72_N9S20760C20D1Ev,_ZThn40_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn72_N9S20760C20D0Ev,_ZThn40_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C20__9S20760C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C20__9S20760C24[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C20D1Ev,_ZThn28_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C20D0Ev,_ZThn28_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C20__9S20760C24[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn160_N9S20760C20D1Ev,_ZThn112_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn160_N9S20760C20D0Ev,_ZThn112_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C20__9S20760C24[] = {
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev),
};
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C24[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C24[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C24[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C17__9S20760C24[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17__9S20760C24[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C17__9S20760C24[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C24[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C18__A1__9S20760C24[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
static  VTT_ENTRY vtt_S20760C24[] = {
  {&(_ZTV9S20760C24[8]),  8,47},
  {&(_tg__ZTV9S20760C20__9S20760C24[6]),  6,8},
  {&(_tg__ZTV9S20760C169S20760C20__9S20760C24[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C169S20760C20__9S20760C24[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C169S20760C20__9S20760C24[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C169S20760C20__9S20760C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C169S20760C20__9S20760C24[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C20__9S20760C24[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C20__9S20760C24[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C20__9S20760C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C20__9S20760C24[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C20__9S20760C24[4]),  4,6},
  {&(_ZTV9S20760C24[17]),  17,47},
  {&(_ZTV9S20760C24[24]),  24,47},
  {&(_ZTV9S20760C24[34]),  34,47},
  {&(_ZTV9S20760C24[29]),  29,47},
  {&(_ZTV9S20760C24[40]),  40,47},
  {&(_ZTV9S20760C24[45]),  45,47},
  {&(_tg__ZTV9S20760C17__9S20760C24[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C24[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C17__9S20760C24[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C17__9S20760C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C17__9S20760C24[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C18__A1__9S20760C24[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20760C24[];
extern  VTBL_ENTRY _ZTV9S20760C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C24[];
static VTBL_ENTRY alt_thunk_names100[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C20D0Ev,_ZThn112_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C20D1Ev,_ZThn112_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C20D0Ev,_ZThn40_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C20D1Ev,_ZThn40_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C20D0Ev,_ZThn28_N9S20760C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20760C20D0Ev,_ZThn84_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C20D1Ev,_ZThn28_N9S20760C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20760C20D1Ev,_ZThn84_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C16D0Ev,_ZThn40_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C16D1Ev,_ZThn40_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C16D0Ev,_ZThn28_N9S20760C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20760C16D0Ev,_ZThn84_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C16D1Ev,_ZThn28_N9S20760C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20760C16D1Ev,_ZThn84_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C24D0Ev,_ZTv0_n16_N9S20760C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C24D0Ev,_ZThn112_N9S20760C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C24D1Ev,_ZTv0_n16_N9S20760C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C24D1Ev,_ZThn112_N9S20760C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C24D0Ev,_ZTv0_n20_N9S20760C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C24D0Ev,_ZThn40_N9S20760C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C24D1Ev,_ZTv0_n20_N9S20760C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C24D1Ev,_ZThn40_N9S20760C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C24D0Ev,_ZThn116_N9S20760C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20760C24D0Ev,_ZThn84_N9S20760C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C24D0Ev,_ZThn28_N9S20760C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C24D1Ev,_ZThn116_N9S20760C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20760C24D1Ev,_ZThn84_N9S20760C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C24D1Ev,_ZThn28_N9S20760C24D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C24 = {  "S20760C24", // class name
  bases_S20760C24, 12,
  &(vtc_S20760C24[0]), // expected_vtbl_contents
  &(vtt_S20760C24[0]), // expected_vtt_contents
  ABISELECT(192,128), // object size
  NSPAIRA(_ZTI9S20760C24),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20760C24),47, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C24),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names100,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C25  : virtual S20760C13 , S20760C17 , virtual S4161C4_nt {
  ::S20760C24 s20760c25f0;
  ~S20760C25(); // tgen
  S20760C25(); // tgen
};
//SIG(-1 S20760C25) C1{ VBC2{ vd m Fi[6]} BC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} VBC6{ m Fp} FC7{ VBC6 VBC4 VBC3 BC8{ BC6 BC9{ VBC2 VBC3 FD} BC10{ vd m} VBC5 vd} VBC11{ vd m FL}}}


S20760C25 ::~S20760C25(){ note_dtor("S20760C25", this);} // tgen
S20760C25 ::S20760C25(){ note_ctor("S20760C25", this);} // tgen

static void Test_S20760C25()
{
  extern Class_Descriptor cd_S20760C25;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,55)];
    init_test(&cd_S20760C25, buf);
    S20760C25 *dp, &lv = *(dp=new (buf) S20760C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,216), "sizeof(S20760C25)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20760C25)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(256,172), "S20760C25");
    check_base_class_offset(lv, (S20760C13*)(S20760C17*), ABISELECT(256,172), "S20760C25");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*), 0, "S20760C25");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*), ABISELECT(288,200), "S20760C25");
    check_base_class_offset(lv, (S20760C18*)(S20760C17*), ABISELECT(16,12), "S20760C25");
    check_base_class_offset(lv, (S20760C17*), 0, "S20760C25");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(304,212), "S20760C25");
    check_field_offset(lv, s20760c25f0, ABISELECT(64,44), "S20760C25.s20760c25f0");
    test_class_info(&lv, &cd_S20760C25);
    dp->~S20760C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C25(Test_S20760C25, "S20760C25", ABISELECT(320,216));

#else // __cplusplus

extern void _ZN9S20760C25C1Ev();
extern void _ZN9S20760C25D1Ev();
Name_Map name_map_S20760C25[] = {
  NSPAIR(_ZN9S20760C25C1Ev),
  NSPAIR(_ZN9S20760C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S20760C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(256,172), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(288,200), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20760C18,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20760C25[];
extern void _ZN9S20760C25D1Ev();
extern void _ZN9S20760C25D0Ev();
extern void ABISELECT(_ZThn16_N9S20760C25D1Ev,_ZThn12_N9S20760C25D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C25D0Ev,_ZThn12_N9S20760C25D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev)();
extern void ABISELECT(_ZThn256_N9S20760C25D1Ev,_ZThn172_N9S20760C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev)();
extern void ABISELECT(_ZThn256_N9S20760C25D0Ev,_ZThn172_N9S20760C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev)();
extern void ABISELECT(_ZThn288_N9S20760C25D1Ev,_ZThn200_N9S20760C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev)();
extern void ABISELECT(_ZThn288_N9S20760C25D0Ev,_ZThn200_N9S20760C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C25[] = {
  ABISELECT(304,212),
  ABISELECT(288,200),
  ABISELECT(256,172),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&_ZN9S20760C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C25D0Ev,
  ABISELECT(272,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C25D1Ev,_ZThn12_N9S20760C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C25D0Ev,_ZThn12_N9S20760C25D0Ev),
  ABISELECT(-256,-172),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev),
  ABISELECT(-288,-200),
  ABISELECT(-288,-200),
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev),
};
extern VTBL_ENTRY _ZTV9S20760C25[];
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C25[] = {
  ABISELECT(288,200),
  ABISELECT(256,172),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C25[] = {
  ABISELECT(272,188),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn272_N9S20760C18D1Ev,_ZThn188_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn272_N9S20760C18D0Ev,_ZThn188_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C25[] = {
  ABISELECT(-272,-188),
  ABISELECT(-272,-188),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn256_N9S20760C17D1Ev,_ZThn172_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn256_N9S20760C17D0Ev,_ZThn172_N9S20760C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C17__9S20760C25[] = {
  ABISELECT(-256,-172),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17__9S20760C25[] = {
  ABISELECT(272,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn288_N9S20760C17D1Ev,_ZThn200_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn288_N9S20760C17D0Ev,_ZThn200_N9S20760C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C17__9S20760C25[] = {
  ABISELECT(-288,-200),
  ABISELECT(-288,-200),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
static  VTT_ENTRY vtt_S20760C25[] = {
  {&(_ZTV9S20760C25[5]),  5,22},
  {&(_tg__ZTV9S20760C17__9S20760C25[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C25[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C25[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C17__9S20760C25[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C17__9S20760C25[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C17__9S20760C25[3]),  3,5},
  {&(_ZTV9S20760C25[15]),  15,22},
  {&(_ZTV9S20760C25[10]),  10,22},
  {&(_ZTV9S20760C25[20]),  20,22},
};
extern VTBL_ENTRY _ZTI9S20760C25[];
extern  VTBL_ENTRY _ZTV9S20760C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C25[];
static VTBL_ENTRY alt_thunk_names101[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20760C17D0Ev,_ZThn200_N9S20760C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20760C17D0Ev,_ZThn172_N9S20760C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20760C17D1Ev,_ZThn200_N9S20760C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20760C17D1Ev,_ZThn172_N9S20760C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20760C18D0Ev,_ZThn188_N9S20760C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20760C18D1Ev,_ZThn188_N9S20760C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20760C25D0Ev,_ZThn200_N9S20760C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20760C25D0Ev,_ZThn172_N9S20760C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20760C25D1Ev,_ZThn200_N9S20760C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20760C25D1Ev,_ZThn172_N9S20760C25D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C25 = {  "S20760C25", // class name
  bases_S20760C25, 6,
  &(vtc_S20760C25[0]), // expected_vtbl_contents
  &(vtt_S20760C25[0]), // expected_vtt_contents
  ABISELECT(320,216), // object size
  NSPAIRA(_ZTI9S20760C25),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20760C25),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C25),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names101,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C23  : S4228C37 , S20760C9 , virtual S4161C4_nt , S20760C24 , virtual S20760C25 {
  int s20760c23f0;
  virtual  ~S20760C23(); // _ZN9S20760C23D2Ev
  S20760C23(); // tgen
};
//SIG(-1 S20760C23) C1{ BC2{ m} BC3{ vd m FL} VBC4{ m Fp} BC5{ VBC4 VBC3 VBC6{ BC3 VBC7{ vd m Fi[6]} BC8{ VBC3 vd} FC7} BC9{ BC4 BC10{ VBC7 VBC6 FD} BC11{ vd m} VBC8 vd} VBC12{ vd m FL}} VBC13{ VBC7 BC6 VBC4 FC5} vd Fi}


 S20760C23 ::~S20760C23(){ note_dtor("S20760C23", this);}
S20760C23 ::S20760C23(){ note_ctor("S20760C23", this);} // tgen

static void Test_S20760C23()
{
  extern Class_Descriptor cd_S20760C23;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,80)];
    init_test(&cd_S20760C23, buf);
    S20760C23 *dp, &lv = *(dp=new (buf) S20760C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,316), "sizeof(S20760C23)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20760C23)");
    check_base_class_offset(lv, (S4228C37*), 0, "S20760C23");
    /*is_ambiguous_... S20760C23::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S20760C23");
    /*is_ambiguous_... S20760C23::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(72,40), "S20760C23");
    /*is_ambiguous_... S20760C24::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S20760C24*), ABISELECT(72,40), "S20760C23");
    check_base_class_offset(lv, (S4161C4_nt*)(S20760C25*), ABISELECT(72,40), "S20760C23");
    /*is_ambiguous_... S20760C24::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C24*), ABISELECT(80,44), "S20760C23");
    /*is_ambiguous_... S20760C23::S20760C17 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*), ABISELECT(80,44), "S20760C23");
    /*is_ambiguous_... S20760C23::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C18*), ABISELECT(80,44), "S20760C23");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*)(S20760C25*), ABISELECT(80,44), "S20760C23");
    /*is_ambiguous_... S20760C23::S20760C17 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*), ABISELECT(96,56), "S20760C23");
    /*is_ambiguous_... S20760C23::S20760C17 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20760C17*), ABISELECT(152,100), "S20760C23");
    check_base_class_offset(lv, (S20760C13*)(S20760C16*)(S20760C20*)(S20760C24*), ABISELECT(152,100), "S20760C23");
    check_base_class_offset(lv, (S20760C13*)(S20760C25*), ABISELECT(152,100), "S20760C23");
    check_base_class_offset(lv, (S20760C13*)(S20760C17*)(S20760C25*), ABISELECT(152,100), "S20760C23");
    /*is_ambiguous_... S20760C23::S20760C17 */ AMB_check_base_class_offset(lv, (S20760C18*)(S20760C17*), ABISELECT(112,68), "S20760C23");
    check_base_class_offset(lv, (S20760C17*)(S20760C24*), ABISELECT(96,56), "S20760C23");
    check_base_class_offset(lv, (S20760C17*)(S20760C16*)(S20760C20*)(S20760C24*), ABISELECT(96,56), "S20760C23");
    check_base_class_offset(lv, (S4161C4_nt*)(S20760C20*)(S20760C24*), ABISELECT(48,28), "S20760C23");
    check_base_class_offset(lv, (S20760C16*)(S20760C20*)(S20760C24*), ABISELECT(16,12), "S20760C23");
    check_base_class_offset(lv, (S20760C22_nt*)(S20760C20*)(S20760C24*), ABISELECT(56,32), "S20760C23");
    /*is_ambiguous_... S20760C20::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C18*)(S20760C20*)(S20760C24*), ABISELECT(184,128), "S20760C23");
    check_base_class_offset(lv, (S20760C20*)(S20760C24*), ABISELECT(16,12), "S20760C23");
    check_base_class_offset(lv, (S20760C5_nt*)(S20760C24*), ABISELECT(192,132), "S20760C23");
    check_base_class_offset(lv, (S20760C24*), ABISELECT(16,12), "S20760C23");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*)(S20760C25*), ABISELECT(208,144), "S20760C23");
    check_base_class_offset(lv, (S20760C18*)(S20760C17*)(S20760C25*), ABISELECT(224,156), "S20760C23");
    check_base_class_offset(lv, (S20760C17*)(S20760C25*), ABISELECT(208,144), "S20760C23");
    check_base_class_offset(lv, (S20760C25*), ABISELECT(208,144), "S20760C23");
    check_field_offset(lv, s20760c23f0, ABISELECT(64,36), "S20760C23.s20760c23f0");
    test_class_info(&lv, &cd_S20760C23);
    dp->~S20760C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C23(Test_S20760C23, "S20760C23", ABISELECT(464,316));

#else // __cplusplus

extern void _ZN9S20760C23C1Ev();
extern void _ZN9S20760C23D2Ev();
Name_Map name_map_S20760C23[] = {
  NSPAIR(_ZN9S20760C23C1Ev),
  NSPAIR(_ZN9S20760C23D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C20;
extern VTBL_ENTRY _ZTI9S20760C20[];
extern  VTBL_ENTRY _ZTV9S20760C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C20[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C24;
extern VTBL_ENTRY _ZTI9S20760C24[];
extern  VTBL_ENTRY _ZTV9S20760C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C24[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S20760C25;
extern VTBL_ENTRY _ZTI9S20760C25[];
extern  VTBL_ENTRY _ZTV9S20760C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C25[];
static Base_Class bases_S20760C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,100), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20760C18,    ABISELECT(112,68), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(96,56), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C16,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C18,    ABISELECT(184,128), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20760C20,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(192,132), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20760C24,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20760C18,    ABISELECT(224,156), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20760C25,    ABISELECT(208,144), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20760C23[];
extern void _ZN9S20760C23D1Ev();
extern void _ZN9S20760C23D0Ev();
extern void ABISELECT(_ZThn16_N9S20760C23D1Ev,_ZThn12_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C23D0Ev,_ZThn12_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C23D1Ev,_ZThn32_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C23D0Ev,_ZThn32_N9S20760C23D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C23D1Ev,_ZThn44_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C23D0Ev,_ZThn44_N9S20760C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C23D1Ev,_ZTv0_n20_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn96_N9S20760C23D1Ev,_ZThn56_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C23D0Ev,_ZTv0_n20_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn96_N9S20760C23D0Ev,_ZThn56_N9S20760C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20760C23D1Ev,_ZTvn12_n20_N9S20760C23D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C23D0Ev,_ZTvn12_n20_N9S20760C23D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn152_N9S20760C23D1Ev,_ZThn100_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn152_N9S20760C23D0Ev,_ZThn100_N9S20760C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C23D1Ev,_ZTv0_n16_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn184_N9S20760C23D1Ev,_ZThn128_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C23D0Ev,_ZTv0_n16_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn184_N9S20760C23D0Ev,_ZThn128_N9S20760C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn192_N9S20760C23D1Ev,_ZThn132_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn192_N9S20760C23D0Ev,_ZThn132_N9S20760C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20760C23D1Ev,_ZTv0_n24_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn208_N9S20760C23D1Ev,_ZThn144_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20760C23D0Ev,_ZTv0_n24_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn208_N9S20760C23D0Ev,_ZThn144_N9S20760C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N9S20760C23D1Ev,_ZTvn12_n24_N9S20760C23D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S20760C23D0Ev,_ZTvn12_n24_N9S20760C23D0Ev)();
static  VTBL_ENTRY vtc_S20760C23[] = {
  ABISELECT(208,144),
  ABISELECT(192,132),
  ABISELECT(184,128),
  ABISELECT(152,100),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&_ZN9S20760C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C23D0Ev,
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C23D1Ev,_ZThn12_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C23D0Ev,_ZThn12_N9S20760C23D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20760C23D1Ev,_ZThn32_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20760C23D0Ev,_ZThn32_N9S20760C23D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C23D1Ev,_ZTv0_n20_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C23D0Ev,_ZTv0_n20_N9S20760C23D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C23D1Ev,_ZTvn12_n20_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C23D0Ev,_ZTvn12_n20_N9S20760C23D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev),
  ABISELECT(-184,-128),
  ABISELECT(-104,-84),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C23D1Ev,_ZTv0_n16_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C23D0Ev,_ZTv0_n16_N9S20760C23D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev),
  ABISELECT(-208,-144),
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C23D1Ev,_ZTv0_n24_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C23D0Ev,_ZTv0_n24_N9S20760C23D0Ev),
  ABISELECT(-144,-112),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S20760C23D1Ev,_ZTvn12_n24_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S20760C23D0Ev,_ZTvn12_n24_N9S20760C23D0Ev),
};
extern VTBL_ENTRY _ZTV9S20760C23[];
extern void _ZN9S20760C24D1Ev();
extern void _ZN9S20760C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C24__9S20760C23[] = {
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&_ZN9S20760C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C24D0Ev,
};
extern void _ZN9S20760C20D1Ev();
extern void _ZN9S20760C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&_ZN9S20760C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C20D0Ev,
};
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C169S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn136_N9S20760C16D1Ev,_ZThn88_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn136_N9S20760C16D0Ev,_ZThn88_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C169S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C169S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn32_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn32_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn136_N9S20760C20D1Ev,_ZThn88_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn136_N9S20760C20D0Ev,_ZThn88_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C20D1Ev,_ZThn44_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C20D0Ev,_ZThn44_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S20760C20D1Ev,_ZThn32_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn64_N9S20760C20D0Ev,_ZThn32_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn168_N9S20760C20D1Ev,_ZThn116_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn168_N9S20760C20D0Ev,_ZThn116_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn64_N9S20760C24D1Ev,_ZThn32_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn64_N9S20760C24D0Ev,_ZThn32_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C24__9S20760C23[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C24D1Ev,_ZTv0_n20_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C24D1Ev,_ZThn44_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C24D0Ev,_ZTv0_n20_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C24D0Ev,_ZThn44_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C24__9S20760C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C24D1Ev,_ZTv0_n20_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C24D0Ev,_ZTv0_n20_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn136_N9S20760C24D1Ev,_ZThn88_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn136_N9S20760C24D0Ev,_ZThn88_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C24__9S20760C23[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C24D1Ev,_ZTvn12_n20_N9S20760C24D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C24D0Ev,_ZTvn12_n20_N9S20760C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C24__9S20760C23[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C24D1Ev,_ZTvn12_n20_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C24D0Ev,_ZTvn12_n20_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C24D1Ev,_ZTv0_n16_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn168_N9S20760C24D1Ev,_ZThn116_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C24D0Ev,_ZTv0_n16_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn168_N9S20760C24D0Ev,_ZThn116_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C24__9S20760C23[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C24D1Ev,_ZTv0_n16_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C24D0Ev,_ZTv0_n16_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn176_N9S20760C24D1Ev,_ZThn120_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn176_N9S20760C24D0Ev,_ZThn120_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S20760C24__9S20760C23[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev),
};
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C23[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C23[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C23[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C17__9S20760C23[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17__9S20760C23[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C17__9S20760C23[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C23[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C18__A1__9S20760C23[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void _ZN9S20760C25D1Ev();
extern void _ZN9S20760C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C25__9S20760C23[] = {
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&_ZN9S20760C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C25D0Ev,
};
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C179S20760C25__A1__9S20760C23[] = {
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C179S20760C25__A2__9S20760C23[] = {
  ABISELECT(-144,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C179S20760C25__A2__9S20760C23[] = {
  ABISELECT(144,112),
  ABISELECT(144,112),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C179S20760C25__A1__9S20760C23[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C179S20760C25__A1__9S20760C23[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C179S20760C25__A1__9S20760C23[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C25__9S20760C23[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C25D1Ev,_ZThn12_N9S20760C25D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C25D0Ev,_ZThn12_N9S20760C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C25__9S20760C23[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C25D1Ev,_ZThn12_N9S20760C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C25D0Ev,_ZThn12_N9S20760C25D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C25__9S20760C23[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev),
};
static  VTT_ENTRY vtt_S20760C23[] = {
  {&(_ZTV9S20760C23[9]),  9,71},
  {&(_tg__ZTV9S20760C24__9S20760C23[8]),  8,10},
  {&(_tg__ZTV9S20760C209S20760C24__9S20760C23[6]),  6,8},
  {&(_tg__ZTV9S20760C169S20760C209S20760C24__9S20760C23[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C169S20760C209S20760C24__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C169S20760C209S20760C24__9S20760C23[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C24__9S20760C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C24__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C209S20760C24__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C209S20760C24__9S20760C23[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C209S20760C24__9S20760C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C209S20760C24__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C209S20760C24__9S20760C23[4]),  4,6},
  {&(_tg__ZTV8S20760C9__9S20760C24__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C24__9S20760C23[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C24__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C24__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C24__9S20760C23[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__9S20760C24__9S20760C23[3]),  3,5},
  {&(_ZTV9S20760C23[19]),  19,71},
  {&(_ZTV9S20760C23[28]),  28,71},
  {&(_ZTV9S20760C23[35]),  35,71},
  {&(_ZTV9S20760C23[45]),  45,71},
  {&(_ZTV9S20760C23[40]),  40,71},
  {&(_ZTV9S20760C23[51]),  51,71},
  {&(_ZTV9S20760C23[56]),  56,71},
  {&(_ZTV9S20760C23[64]),  64,71},
  {&(_ZTV9S20760C23[69]),  69,71},
  {&(_tg__ZTV9S20760C17__9S20760C23[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C17__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C17__9S20760C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C17__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C18__A1__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C25__9S20760C23[5]),  5,7},
  {&(_tg__ZTV9S20760C179S20760C25__A1__9S20760C23[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C179S20760C25__A2__9S20760C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C179S20760C25__A2__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C179S20760C25__A1__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C179S20760C25__A1__9S20760C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C179S20760C25__A1__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C25__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C25__9S20760C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C25__9S20760C23[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20760C23[];
extern  VTBL_ENTRY _ZTV9S20760C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C23[];
static VTBL_ENTRY alt_thunk_names102[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C24D0Ev,_ZTv0_n16_N9S20760C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C24D0Ev,_ZThn116_N9S20760C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C24D1Ev,_ZTv0_n16_N9S20760C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C24D1Ev,_ZThn116_N9S20760C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C24D0Ev,_ZTv0_n20_N9S20760C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C24D0Ev,_ZThn44_N9S20760C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C24D1Ev,_ZTv0_n20_N9S20760C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C24D1Ev,_ZThn44_N9S20760C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20760C24D0Ev,_ZThn120_N9S20760C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C24D0Ev,_ZThn88_N9S20760C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C24D0Ev,_ZThn32_N9S20760C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20760C24D1Ev,_ZThn120_N9S20760C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C24D1Ev,_ZThn88_N9S20760C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C24D1Ev,_ZThn32_N9S20760C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C20D0Ev,_ZThn116_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C20D1Ev,_ZThn116_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C20D0Ev,_ZThn44_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C20D1Ev,_ZThn44_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C20D0Ev,_ZThn32_N9S20760C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C20D0Ev,_ZThn88_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C20D1Ev,_ZThn32_N9S20760C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C20D1Ev,_ZThn88_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn32_N9S20760C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C16D0Ev,_ZThn88_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn32_N9S20760C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C16D1Ev,_ZThn88_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C23D0Ev,_ZTv0_n24_N9S20760C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20760C23D0Ev,_ZThn144_N9S20760C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C23D1Ev,_ZTv0_n24_N9S20760C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20760C23D1Ev,_ZThn144_N9S20760C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C23D0Ev,_ZTv0_n16_N9S20760C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20760C23D0Ev,_ZThn128_N9S20760C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C23D1Ev,_ZTv0_n16_N9S20760C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20760C23D1Ev,_ZThn128_N9S20760C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C23D0Ev,_ZTv0_n20_N9S20760C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20760C23D0Ev,_ZThn56_N9S20760C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C23D1Ev,_ZTv0_n20_N9S20760C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20760C23D1Ev,_ZThn56_N9S20760C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20760C23D0Ev,_ZThn132_N9S20760C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C23D0Ev,_ZThn100_N9S20760C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C23D0Ev,_ZThn44_N9S20760C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20760C23D1Ev,_ZThn132_N9S20760C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C23D1Ev,_ZThn100_N9S20760C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C23D1Ev,_ZThn44_N9S20760C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C23 = {  "S20760C23", // class name
  bases_S20760C23, 19,
  &(vtc_S20760C23[0]), // expected_vtbl_contents
  &(vtt_S20760C23[0]), // expected_vtt_contents
  ABISELECT(464,316), // object size
  NSPAIRA(_ZTI9S20760C23),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20760C23),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C23),46, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names102,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C1  : virtual S20760C2_nt , S20760C4 , S20760C6 , S20760C23 {
  int s20760c1f0;
  ~S20760C1(); // tgen
  S20760C1(); // tgen
};
//SIG(1 S20760C1) C1{ VBC2{ VBC3{ m}} BC4{ VBC5{ vd m FL} vd Fc[2]} BC6{ VBC4 BC7{ VBC8{ VBC9{ vd m FL} vd FC10{ m}} VBC11{ m} BC12{ BC13{ vd m Fi[6]} VBC14{ m} VBC10 Fs} vd Fi} BC15{ VBC16{ VBC13 VBC17{ BC9 VBC13 BC18{ VBC9 vd} FC13} FD} VBC19{ BC9 BC20{ BC21{ m Fp} BC16 BC22{ vd m} VBC18 vd} vd} BC10 VBC5 vd v1} BC9 vd} BC23{ BC3 BC9 VBC21 BC24{ VBC21 VBC9 VBC17 BC20 VBC5} VBC25{ VBC13 BC17 VBC21 FC24} vd Fi} Fi}


S20760C1 ::~S20760C1(){ note_dtor("S20760C1", this);} // tgen
S20760C1 ::S20760C1(){ note_ctor("S20760C1", this);} // tgen

static void Test_S20760C1()
{
  extern Class_Descriptor cd_S20760C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(44,113)];
    init_test(&cd_S20760C1, buf);
    S20760C1 *dp, &lv = *(dp=new (buf) S20760C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(688,448), "sizeof(S20760C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20760C1)");
    check_base_class_offset(lv, (S4228C37*)(S20760C2_nt*), 0, "S20760C1");
    check_base_class_offset(lv, (S20760C2_nt*), ABISELECT(152,104), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C4 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S20760C4*), ABISELECT(160,108), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C4 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S20760C4*), ABISELECT(160,108), "S20760C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S20760C15*)(S20760C6*), ABISELECT(160,108), "S20760C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S20760C24*)(S20760C23*), ABISELECT(160,108), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C4 */ AMB_check_base_class_offset(lv, (S20760C4*), 0, "S20760C1");
    check_base_class_offset(lv, (S20760C4*)(S20760C6*), ABISELECT(176,120), "S20760C1");
    check_base_class_offset(lv, (S20760C9*)(S20760C8*), ABISELECT(208,136), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C17 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*), ABISELECT(208,136), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C18*), ABISELECT(208,136), "S20760C1");
    /*is_ambiguous_... S20760C24::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C24*)(S20760C23*), ABISELECT(208,136), "S20760C1");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*)(S20760C25*), ABISELECT(208,136), "S20760C1");
    check_base_class_offset(lv, (S20760C8*)(S20760C7*)(S20760C6*), ABISELECT(192,128), "S20760C1");
    check_base_class_offset(lv, (S4228C23*)(S20760C7*)(S20760C6*), 0, "S20760C1");
    check_base_class_offset(lv, (S20760C13*)(S20760C12*)(S20760C7*)(S20760C6*), ABISELECT(16,8), "S20760C1");
    check_base_class_offset(lv, (S4228C20*)(S20760C12*)(S20760C7*)(S20760C6*), 0, "S20760C1");
    check_base_class_offset(lv, (S4228C27*)(S20760C12*)(S20760C7*)(S20760C6*), 0, "S20760C1");
    check_base_class_offset(lv, (S20760C12*)(S20760C7*)(S20760C6*), ABISELECT(16,8), "S20760C1");
    check_base_class_offset(lv, (S20760C7*)(S20760C6*), ABISELECT(16,8), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C16 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20760C16*), ABISELECT(256,164), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C17 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20760C17*), ABISELECT(256,164), "S20760C1");
    check_base_class_offset(lv, (S20760C13*)(S20760C16*)(S20760C20*)(S20760C19*), ABISELECT(256,164), "S20760C1");
    check_base_class_offset(lv, (S20760C13*)(S20760C16*)(S20760C20*)(S20760C24*)(S20760C23*), ABISELECT(256,164), "S20760C1");
    check_base_class_offset(lv, (S20760C13*)(S20760C25*), ABISELECT(256,164), "S20760C1");
    check_base_class_offset(lv, (S20760C13*)(S20760C17*)(S20760C25*), ABISELECT(256,164), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C17 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*), ABISELECT(288,192), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C17 */ AMB_check_base_class_offset(lv, (S20760C18*)(S20760C17*), ABISELECT(304,204), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C16 */ AMB_check_base_class_offset(lv, (S20760C17*)(S20760C16*), ABISELECT(288,192), "S20760C1");
    check_base_class_offset(lv, (S20760C17*)(S20760C16*)(S20760C20*)(S20760C19*), ABISELECT(288,192), "S20760C1");
    check_base_class_offset(lv, (S20760C17*)(S20760C24*)(S20760C23*), ABISELECT(288,192), "S20760C1");
    check_base_class_offset(lv, (S20760C17*)(S20760C16*)(S20760C20*)(S20760C24*)(S20760C23*), ABISELECT(288,192), "S20760C1");
    /*is_ambiguous_... S20760C15::S20760C16 */ AMB_check_base_class_offset(lv, (S20760C16*)(S20760C15*)(S20760C6*), ABISELECT(224,148), "S20760C1");
    /*is_ambiguous_... S20760C19::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C19*), ABISELECT(352,236), "S20760C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S20760C20*)(S20760C19*), ABISELECT(400,264), "S20760C1");
    check_base_class_offset(lv, (S20760C16*)(S20760C20*)(S20760C19*), ABISELECT(368,248), "S20760C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S20760C20*)(S20760C19*), ABISELECT(408,268), "S20760C1");
    /*is_ambiguous_... S20760C20::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C18*)(S20760C20*)(S20760C19*), ABISELECT(56,44), "S20760C1");
    /*is_ambiguous_... S20760C20::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C18*)(S20760C20*)(S20760C24*)(S20760C23*), ABISELECT(56,44), "S20760C1");
    check_base_class_offset(lv, (S20760C20*)(S20760C19*), ABISELECT(368,248), "S20760C1");
    check_base_class_offset(lv, (S20760C19*)(S20760C15*)(S20760C6*), ABISELECT(352,236), "S20760C1");
    check_base_class_offset(lv, (S4228C27*)(S20760C15*)(S20760C6*), ABISELECT(56,44), "S20760C1");
    check_base_class_offset(lv, (S20760C15*)(S20760C6*), ABISELECT(56,44), "S20760C1");
    /*is_ambiguous_... S20760C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C6*), ABISELECT(64,48), "S20760C1");
    check_base_class_offset(lv, (S20760C6*), ABISELECT(16,8), "S20760C1");
    check_base_class_offset(lv, (S4228C37*)(S20760C23*), ABISELECT(80,60), "S20760C1");
    /*is_ambiguous_... S20760C23::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C23*), ABISELECT(80,60), "S20760C1");
    /*is_ambiguous_... S20760C23::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S20760C23*), ABISELECT(416,272), "S20760C1");
    /*is_ambiguous_... S20760C24::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S20760C24*)(S20760C23*), ABISELECT(416,272), "S20760C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S20760C25*), ABISELECT(416,272), "S20760C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S20760C20*)(S20760C24*)(S20760C23*), ABISELECT(128,88), "S20760C1");
    check_base_class_offset(lv, (S20760C16*)(S20760C20*)(S20760C24*)(S20760C23*), ABISELECT(96,72), "S20760C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S20760C20*)(S20760C24*)(S20760C23*), ABISELECT(136,92), "S20760C1");
    check_base_class_offset(lv, (S20760C20*)(S20760C24*)(S20760C23*), ABISELECT(96,72), "S20760C1");
    check_base_class_offset(lv, (S20760C24*)(S20760C23*), ABISELECT(96,72), "S20760C1");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*)(S20760C25*), ABISELECT(432,276), "S20760C1");
    check_base_class_offset(lv, (S20760C18*)(S20760C17*)(S20760C25*), ABISELECT(448,288), "S20760C1");
    check_base_class_offset(lv, (S20760C17*)(S20760C25*), ABISELECT(432,276), "S20760C1");
    check_base_class_offset(lv, (S20760C25*)(S20760C23*), ABISELECT(432,276), "S20760C1");
    check_base_class_offset(lv, (S20760C23*), ABISELECT(80,60), "S20760C1");
    check_field_offset(lv, s20760c1f0, ABISELECT(148,100), "S20760C1.s20760c1f0");
    test_class_info(&lv, &cd_S20760C1);
    dp->~S20760C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C1(Test_S20760C1, "S20760C1", ABISELECT(688,448));

#else // __cplusplus

extern void _ZN8S20760C1C1Ev();
extern void _ZN8S20760C1D1Ev();
Name_Map name_map_S20760C1[] = {
  NSPAIR(_ZN8S20760C1C1Ev),
  NSPAIR(_ZN8S20760C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C2_nt;
extern VTBL_ENTRY _ZTI11S20760C2_nt[];
extern  VTBL_ENTRY _ZTV11S20760C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20760C2_nt[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C4;
extern VTBL_ENTRY _ZTI8S20760C4[];
extern  VTBL_ENTRY _ZTV8S20760C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C4[];
extern Class_Descriptor cd_S20760C4;
extern VTBL_ENTRY _ZTI8S20760C4[];
extern  VTBL_ENTRY _ZTV8S20760C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C8;
extern VTBL_ENTRY _ZTI8S20760C8[];
extern  VTBL_ENTRY _ZTV8S20760C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C8[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C20;
extern VTBL_ENTRY _ZTI8S4228C20[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C12;
extern VTBL_ENTRY _ZTI9S20760C12[];
extern  VTBL_ENTRY _ZTV9S20760C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C12[];
extern Class_Descriptor cd_S20760C7;
extern VTBL_ENTRY _ZTI8S20760C7[];
extern  VTBL_ENTRY _ZTV8S20760C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C7[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C20;
extern VTBL_ENTRY _ZTI9S20760C20[];
extern  VTBL_ENTRY _ZTV9S20760C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C20[];
extern Class_Descriptor cd_S20760C19;
extern VTBL_ENTRY _ZTI9S20760C19[];
extern  VTBL_ENTRY _ZTV9S20760C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C19[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C15;
extern VTBL_ENTRY _ZTI9S20760C15[];
extern  VTBL_ENTRY _ZTV9S20760C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C15[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C6;
extern VTBL_ENTRY _ZTI8S20760C6[];
extern  VTBL_ENTRY _ZTV8S20760C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C6[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20760C20;
extern VTBL_ENTRY _ZTI9S20760C20[];
extern  VTBL_ENTRY _ZTV9S20760C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C20[];
extern Class_Descriptor cd_S20760C24;
extern VTBL_ENTRY _ZTI9S20760C24[];
extern  VTBL_ENTRY _ZTV9S20760C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C24[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S20760C25;
extern VTBL_ENTRY _ZTI9S20760C25[];
extern  VTBL_ENTRY _ZTV9S20760C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C25[];
extern Class_Descriptor cd_S20760C23;
extern VTBL_ENTRY _ZTI9S20760C23[];
extern  VTBL_ENTRY _ZTV9S20760C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C23[];
static Base_Class bases_S20760C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20760C2_nt,    ABISELECT(152,104), //bcp->offset
    78, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C5_nt,    ABISELECT(160,108), //bcp->offset
    81, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20760C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C4,    ABISELECT(176,120), //bcp->offset
    86, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(208,136), //bcp->offset
    98, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C8,    ABISELECT(192,128), //bcp->offset
    92, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20760C13,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4228C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20760C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(256,164), //bcp->offset
    111, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(288,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20760C18,    ABISELECT(304,204), //bcp->offset
    123, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(288,192), //bcp->offset
    116, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20760C16,    ABISELECT(224,148), //bcp->offset
    103, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(352,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(400,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20760C16,    ABISELECT(368,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(408,268), //bcp->offset
    145, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20760C18,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20760C20,    ABISELECT(368,248), //bcp->offset
    137, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20760C19,    ABISELECT(352,236), //bcp->offset
    128, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20760C15,    ABISELECT(56,44), //bcp->offset
    36, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(64,48), //bcp->offset
    49, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20760C6,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(416,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20760C16,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(136,92), //bcp->offset
    74, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20760C20,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20760C24,    ABISELECT(96,72), //bcp->offset
    64, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    77, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(432,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20760C18,    ABISELECT(448,288), //bcp->offset
    157, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(432,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20760C25,    ABISELECT(432,276), //bcp->offset
    149, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    78, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S20760C23,    ABISELECT(80,60), //bcp->offset
    53, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20760C1[];
extern void _ZN8S20760C1D1Ev();
extern void _ZN8S20760C1D0Ev();
extern void ABISELECT(_ZThn16_N8S20760C1D1Ev,_ZThn8_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20760C1D0Ev,_ZThn8_N8S20760C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20760C1D1Ev,_ZTv0_n16_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S20760C1D1Ev,_ZThn44_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C1D0Ev,_ZTv0_n16_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S20760C1D0Ev,_ZThn44_N8S20760C1D0Ev)() __attribute__((weak));
extern void _ZN9S20760C152v1Ev();
extern void ABISELECT(_ZThn64_N8S20760C1D1Ev,_ZThn48_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S20760C1D0Ev,_ZThn48_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S20760C1D1Ev,_ZThn60_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S20760C1D0Ev,_ZThn60_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S20760C1D1Ev,_ZThn72_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S20760C1D0Ev,_ZThn72_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn136_N8S20760C1D1Ev,_ZThn92_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn136_N8S20760C1D0Ev,_ZThn92_N8S20760C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20760C1D1Ev,_ZTv0_n12_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn160_N8S20760C1D1Ev,_ZThn108_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C1D0Ev,_ZTv0_n12_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn160_N8S20760C1D0Ev,_ZThn108_N8S20760C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C1D1Ev,_ZTv0_n16_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S20760C1D1Ev,_ZThn120_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C1D0Ev,_ZTv0_n16_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn176_N8S20760C1D0Ev,_ZThn120_N8S20760C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C1D1Ev,_ZTv0_n16_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S20760C1D1Ev,_ZThn128_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C1D0Ev,_ZTv0_n16_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S20760C1D0Ev,_ZThn128_N8S20760C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C1D1Ev,_ZTv0_n12_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S20760C1D1Ev,_ZThn136_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C1D0Ev,_ZTv0_n12_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S20760C1D0Ev,_ZThn136_N8S20760C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20760C1D1Ev,_ZTv0_n24_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S20760C1D1Ev,_ZThn148_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20760C1D0Ev,_ZTv0_n24_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S20760C1D0Ev,_ZThn148_N8S20760C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C1D1Ev,_ZTv0_n12_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn256_N8S20760C1D1Ev,_ZThn164_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C1D0Ev,_ZTv0_n12_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn256_N8S20760C1D0Ev,_ZThn164_N8S20760C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20760C1D1Ev,_ZTv0_n20_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn288_N8S20760C1D1Ev,_ZThn192_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20760C1D0Ev,_ZTv0_n20_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn288_N8S20760C1D0Ev,_ZThn192_N8S20760C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S20760C1D1Ev,_ZTvn12_n20_N8S20760C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S20760C1D0Ev,_ZTvn12_n20_N8S20760C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S20760C1D1Ev,_ZTv0_n28_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn352_N8S20760C1D1Ev,_ZThn236_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20760C1D0Ev,_ZTv0_n28_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn352_N8S20760C1D0Ev,_ZThn236_N8S20760C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S20760C1D1Ev,_ZTvn12_n28_N8S20760C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S20760C1D0Ev,_ZTvn12_n28_N8S20760C1D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20760C1D1Ev,_ZTvn32_n28_N8S20760C1D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20760C1D0Ev,_ZTvn32_n28_N8S20760C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20760C1D1Ev,_ZTv0_n24_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn432_N8S20760C1D1Ev,_ZThn276_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20760C1D0Ev,_ZTv0_n24_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn432_N8S20760C1D0Ev,_ZThn276_N8S20760C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S20760C1D1Ev,_ZTvn12_n24_N8S20760C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S20760C1D0Ev,_ZTvn12_n24_N8S20760C1D0Ev)();
static  VTBL_ENTRY vtc_S20760C1[] = {
  ABISELECT(432,276),
  ABISELECT(416,272),
  ABISELECT(56,44),
  ABISELECT(352,236),
  ABISELECT(288,192),
  ABISELECT(256,164),
  ABISELECT(224,148),
  0,
  0,
  0,
  ABISELECT(208,136),
  ABISELECT(192,128),
  ABISELECT(176,120),
  0,
  ABISELECT(152,104),
  ABISELECT(160,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&_ZN8S20760C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C1D0Ev,
  ABISELECT(40,36),
  ABISELECT(336,228),
  ABISELECT(272,184),
  ABISELECT(240,156),
  ABISELECT(208,140),
  ABISELECT(144,100),
  ABISELECT(160,112),
  ABISELECT(-16,-8),
  ABISELECT(192,128),
  ABISELECT(176,120),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20760C1D1Ev,_ZThn8_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20760C1D0Ev,_ZThn8_N8S20760C1D0Ev),
  ABISELECT(104,64),
  0,
  ABISELECT(296,192),
  ABISELECT(232,148),
  ABISELECT(200,120),
  ABISELECT(168,104),
  ABISELECT(-56,-44),
  ABISELECT(152,92),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C1D1Ev,_ZTv0_n16_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C1D0Ev,_ZTv0_n16_N8S20760C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20760C152v1Ev,
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20760C1D1Ev,_ZThn48_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20760C1D0Ev,_ZThn48_N8S20760C1D0Ev),
  ABISELECT(352,216),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(176,104),
  ABISELECT(208,132),
  ABISELECT(128,76),
  ABISELECT(336,212),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20760C1D1Ev,_ZThn60_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20760C1D0Ev,_ZThn60_N8S20760C1D0Ev),
  ABISELECT(64,36),
  ABISELECT(320,200),
  ABISELECT(-40,-28),
  ABISELECT(112,64),
  ABISELECT(192,120),
  ABISELECT(160,92),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20760C1D1Ev,_ZThn72_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20760C1D0Ev,_ZThn72_N8S20760C1D0Ev),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N8S20760C1D1Ev,_ZThn92_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N8S20760C1D0Ev,_ZThn92_N8S20760C1D0Ev),
  ABISELECT(-152,-104),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  ABISELECT(-160,-108),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C1D1Ev,_ZTv0_n12_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C1D0Ev,_ZTv0_n12_N8S20760C1D0Ev),
  ABISELECT(-176,-120),
  ABISELECT(-16,-12),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C1D1Ev,_ZTv0_n16_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C1D0Ev,_ZTv0_n16_N8S20760C1D0Ev),
  ABISELECT(-192,-128),
  ABISELECT(16,8),
  ABISELECT(-192,-128),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C1D1Ev,_ZTv0_n16_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C1D0Ev,_ZTv0_n16_N8S20760C1D0Ev),
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C1D1Ev,_ZTv0_n12_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C1D0Ev,_ZTv0_n12_N8S20760C1D0Ev),
  ABISELECT(-224,-148),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20760C1D1Ev,_ZTv0_n24_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20760C1D0Ev,_ZTv0_n24_N8S20760C1D0Ev),
  ABISELECT(-256,-164),
  ABISELECT(-256,-164),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C1D1Ev,_ZTv0_n12_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C1D0Ev,_ZTv0_n12_N8S20760C1D0Ev),
  ABISELECT(-288,-192),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-288,-192),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20760C1D1Ev,_ZTv0_n20_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20760C1D0Ev,_ZTv0_n20_N8S20760C1D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(-304,-204),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20760C1D1Ev,_ZTvn12_n20_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20760C1D0Ev,_ZTvn12_n20_N8S20760C1D0Ev),
  ABISELECT(-352,-236),
  ABISELECT(-296,-192),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-352,-236),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20760C1D1Ev,_ZTv0_n28_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20760C1D0Ev,_ZTv0_n28_N8S20760C1D0Ev),
  ABISELECT(-312,-204),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-368,-248),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20760C1D1Ev,_ZTvn12_n28_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20760C1D0Ev,_ZTvn12_n28_N8S20760C1D0Ev),
  ABISELECT(-408,-268),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20760C1D1Ev,_ZTvn32_n28_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20760C1D0Ev,_ZTvn32_n28_N8S20760C1D0Ev),
  ABISELECT(-432,-276),
  ABISELECT(-16,-4),
  ABISELECT(-224,-140),
  ABISELECT(-176,-112),
  ABISELECT(-432,-276),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20760C1D1Ev,_ZTv0_n24_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20760C1D0Ev,_ZTv0_n24_N8S20760C1D0Ev),
  ABISELECT(-240,-152),
  ABISELECT(-448,-288),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S20760C1D1Ev,_ZTvn12_n24_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S20760C1D0Ev,_ZTvn12_n24_N8S20760C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20760C1[];
extern void _ZN8S20760C4D1Ev();
extern void _ZN8S20760C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20760C4__A__8S20760C1[] = {
  ABISELECT(160,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C4[0]),
  (VTBL_ENTRY)&_ZN8S20760C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev)();
extern void ABISELECT(_ZThn160_N8S20760C4D1Ev,_ZThn108_N8S20760C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev)();
extern void ABISELECT(_ZThn160_N8S20760C4D0Ev,_ZThn108_N8S20760C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S20760C4__A__8S20760C1[] = {
  ABISELECT(-160,-108),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S20760C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev),
};
extern void _ZN8S20760C6D1Ev();
extern void _ZN8S20760C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20760C6__8S20760C1[] = {
  ABISELECT(40,36),
  ABISELECT(336,228),
  ABISELECT(272,184),
  ABISELECT(240,156),
  ABISELECT(208,140),
  ABISELECT(144,100),
  ABISELECT(160,112),
  ABISELECT(-16,-8),
  ABISELECT(192,128),
  ABISELECT(176,120),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&_ZN8S20760C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C6D0Ev,
};
extern void _ZN8S20760C7D1Ev();
extern void _ZN8S20760C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20760C78S20760C6__8S20760C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(192,128),
  ABISELECT(176,120),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C7[0]),
  (VTBL_ENTRY)&_ZN8S20760C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C7D0Ev,
};
extern void _ZN9S20760C12D1Ev();
extern void _ZN9S20760C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C128S20760C78S20760C6__8S20760C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C12[0]),
  (VTBL_ENTRY)&_ZN9S20760C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20760C7D1Ev,_ZTv0_n16_N8S20760C7D1Ev)();
extern void ABISELECT(_ZThn176_N8S20760C7D1Ev,_ZThn120_N8S20760C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C7D0Ev,_ZTv0_n16_N8S20760C7D0Ev)();
extern void ABISELECT(_ZThn176_N8S20760C7D0Ev,_ZThn120_N8S20760C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C8__8S20760C78S20760C6__8S20760C1[] = {
  ABISELECT(-176,-120),
  ABISELECT(16,8),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S20760C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C7D1Ev,_ZTv0_n16_N8S20760C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C7D0Ev,_ZTv0_n16_N8S20760C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20760C7D1Ev,_ZTv0_n12_N8S20760C7D1Ev)();
extern void ABISELECT(_ZThn192_N8S20760C7D1Ev,_ZThn128_N8S20760C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C7D0Ev,_ZTv0_n12_N8S20760C7D0Ev)();
extern void ABISELECT(_ZThn192_N8S20760C7D0Ev,_ZThn128_N8S20760C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20760C78S20760C6__8S20760C1[] = {
  ABISELECT(-192,-128),
  ABISELECT(-192,-128),
  (VTBL_ENTRY)&(_ZTI8S20760C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C7D1Ev,_ZTv0_n12_N8S20760C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C7D0Ev,_ZTv0_n12_N8S20760C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C15D1Ev,_ZTv0_n16_N9S20760C15D1Ev)();
extern void _ZN9S20760C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C15D0Ev,_ZTv0_n16_N9S20760C15D0Ev)();
extern void _ZN9S20760C15D0Ev() __attribute__((weak));
extern void _ZN9S20760C152v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(104,64),
  0,
  ABISELECT(296,192),
  ABISELECT(232,148),
  ABISELECT(200,120),
  ABISELECT(168,104),
  0,
  ABISELECT(152,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C15D1Ev,_ZTv0_n16_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C15D0Ev,_ZTv0_n16_N9S20760C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20760C152v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S20760C15D1Ev,_ZTv0_n24_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn168_N9S20760C15D1Ev,_ZThn104_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20760C15D0Ev,_ZTv0_n24_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn168_N9S20760C15D0Ev,_ZThn104_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C16__9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C15D1Ev,_ZTv0_n24_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C15D0Ev,_ZTv0_n24_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn200_N9S20760C15D1Ev,_ZThn120_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn200_N9S20760C15D0Ev,_ZThn120_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(-200,-120),
  ABISELECT(-200,-120),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C15D1Ev,_ZTv0_n20_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn232_N9S20760C15D1Ev,_ZThn148_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C15D0Ev,_ZTv0_n20_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn232_N9S20760C15D0Ev,_ZThn148_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(-232,-148),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C15D1Ev,_ZTv0_n20_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C15D0Ev,_ZTv0_n20_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C15D1Ev,_ZTvn12_n20_N9S20760C15D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C15D0Ev,_ZTvn12_n20_N9S20760C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C15D1Ev,_ZTvn12_n20_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C15D0Ev,_ZTvn12_n20_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S20760C15D1Ev,_ZThn92_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S20760C15D0Ev,_ZThn92_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(-152,-92),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S20760C15D1Ev,_ZTv0_n28_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn296_N9S20760C15D1Ev,_ZThn192_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20760C15D0Ev,_ZTv0_n28_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn296_N9S20760C15D0Ev,_ZThn192_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C19__9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(-296,-192),
  ABISELECT(-296,-192),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-296,-192),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20760C15D1Ev,_ZTv0_n28_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20760C15D0Ev,_ZTv0_n28_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N9S20760C15D1Ev,_ZTvn12_n28_N9S20760C15D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S20760C15D0Ev,_ZTvn12_n28_N9S20760C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C209S20760C19__9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(-312,-204),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-312,-204),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20760C15D1Ev,_ZTvn12_n28_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20760C15D0Ev,_ZTvn12_n28_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N9S20760C15D1Ev,_ZTvn32_n28_N9S20760C15D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S20760C15D0Ev,_ZTvn32_n28_N9S20760C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S20760C209S20760C19__9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(-352,-224),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20760C15D1Ev,_ZTvn32_n28_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20760C15D0Ev,_ZTvn32_n28_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn104_N9S20760C15D1Ev,_ZThn64_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn104_N9S20760C15D0Ev,_ZThn64_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn160_N8S20760C6D1Ev,_ZThn112_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn160_N8S20760C6D0Ev,_ZThn112_N8S20760C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C4__8S20760C6__8S20760C1[] = {
  ABISELECT(-160,-112),
  ABISELECT(-16,-12),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn144_N8S20760C6D1Ev,_ZThn100_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn144_N8S20760C6D0Ev,_ZThn100_N8S20760C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S20760C6__8S20760C1[] = {
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn176_N8S20760C6D1Ev,_ZThn120_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn176_N8S20760C6D0Ev,_ZThn120_N8S20760C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C8__8S20760C6__8S20760C1[] = {
  ABISELECT(-176,-120),
  ABISELECT(16,8),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S20760C6D1Ev,_ZThn128_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S20760C6D0Ev,_ZThn128_N8S20760C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20760C6__8S20760C1[] = {
  ABISELECT(-192,-128),
  ABISELECT(-192,-128),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S20760C6D1Ev,_ZThn36_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S20760C6D0Ev,_ZThn36_N8S20760C6D0Ev)() __attribute__((weak));
extern void _ZN9S20760C152v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C15__8S20760C6__8S20760C1[] = {
  ABISELECT(104,64),
  0,
  ABISELECT(296,192),
  ABISELECT(232,148),
  ABISELECT(200,120),
  ABISELECT(168,104),
  ABISELECT(-40,-36),
  ABISELECT(152,92),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20760C152v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20760C6D1Ev,_ZTv0_n24_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn208_N8S20760C6D1Ev,_ZThn140_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20760C6D0Ev,_ZTv0_n24_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn208_N8S20760C6D0Ev,_ZThn140_N8S20760C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C16__8S20760C6__8S20760C1[] = {
  ABISELECT(-208,-140),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20760C6D1Ev,_ZTv0_n24_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20760C6D0Ev,_ZTv0_n24_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn240_N8S20760C6D1Ev,_ZThn156_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn240_N8S20760C6D0Ev,_ZThn156_N8S20760C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__A1__8S20760C6__8S20760C1[] = {
  ABISELECT(-240,-156),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20760C6D1Ev,_ZTv0_n20_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn272_N8S20760C6D1Ev,_ZThn184_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20760C6D0Ev,_ZTv0_n20_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn272_N8S20760C6D0Ev,_ZThn184_N8S20760C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__8S20760C6__8S20760C1[] = {
  ABISELECT(-272,-184),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20760C6D1Ev,_ZTv0_n20_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20760C6D0Ev,_ZTv0_n20_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S20760C6D1Ev,_ZTvn12_n20_N8S20760C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S20760C6D0Ev,_ZTvn12_n20_N8S20760C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__8S20760C6__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20760C6D1Ev,_ZTvn12_n20_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20760C6D0Ev,_ZTvn12_n20_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S20760C6D1Ev,_ZTv0_n28_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn336_N8S20760C6D1Ev,_ZThn228_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20760C6D0Ev,_ZTv0_n28_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn336_N8S20760C6D0Ev,_ZThn228_N8S20760C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C19__8S20760C6__8S20760C1[] = {
  ABISELECT(-336,-228),
  ABISELECT(-296,-192),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-336,-228),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20760C6D1Ev,_ZTv0_n28_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20760C6D0Ev,_ZTv0_n28_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N8S20760C6D1Ev,_ZTvn12_n28_N8S20760C6D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S20760C6D0Ev,_ZTvn12_n28_N8S20760C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C209S20760C19__8S20760C6__8S20760C1[] = {
  ABISELECT(-312,-204),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-352,-240),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20760C6D1Ev,_ZTvn12_n28_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20760C6D0Ev,_ZTvn12_n28_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N8S20760C6D1Ev,_ZTvn32_n28_N8S20760C6D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20760C6D0Ev,_ZTvn32_n28_N8S20760C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S20760C209S20760C19__8S20760C6__8S20760C1[] = {
  ABISELECT(-392,-260),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20760C6D1Ev,_ZTvn32_n28_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20760C6D0Ev,_ZTvn32_n28_N8S20760C6D0Ev),
};
extern void _ZN9S20760C23D1Ev();
extern void _ZN9S20760C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C23__8S20760C1[] = {
  ABISELECT(352,216),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(176,104),
  ABISELECT(208,132),
  ABISELECT(128,76),
  ABISELECT(336,212),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&_ZN9S20760C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C23D0Ev,
};
extern void _ZN9S20760C24D1Ev();
extern void _ZN9S20760C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C249S20760C23__8S20760C1[] = {
  ABISELECT(64,36),
  ABISELECT(320,200),
  ABISELECT(-40,-28),
  ABISELECT(112,64),
  ABISELECT(192,120),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&_ZN9S20760C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C24D0Ev,
};
extern void _ZN9S20760C20D1Ev();
extern void _ZN9S20760C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C209S20760C249S20760C23__A1__8S20760C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(112,64),
  ABISELECT(192,120),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&_ZN9S20760C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C20D0Ev,
};
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[] = {
  ABISELECT(112,64),
  ABISELECT(192,120),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn160_N9S20760C16D1Ev,_ZThn92_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn160_N9S20760C16D0Ev,_ZThn92_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[] = {
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn192_N9S20760C16D1Ev,_ZThn120_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn192_N9S20760C16D0Ev,_ZThn120_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[] = {
  ABISELECT(-192,-120),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-208,-132),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn112_N9S20760C16D1Ev,_ZThn64_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn112_N9S20760C16D0Ev,_ZThn64_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn160_N9S20760C20D1Ev,_ZThn92_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn160_N9S20760C20D0Ev,_ZThn92_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C209S20760C249S20760C23__A1__8S20760C1[] = {
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn192_N9S20760C20D1Ev,_ZThn120_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn192_N9S20760C20D0Ev,_ZThn120_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C209S20760C249S20760C23__A1__8S20760C1[] = {
  ABISELECT(-192,-120),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C209S20760C249S20760C23__A1__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-208,-132),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn112_N9S20760C20D1Ev,_ZThn64_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn112_N9S20760C20D0Ev,_ZThn64_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C209S20760C249S20760C23__A1__8S20760C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C209S20760C249S20760C23__A1__8S20760C1[] = {
  ABISELECT(40,28),
  ABISELECT(152,92),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn112_N9S20760C24D1Ev,_ZThn64_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn112_N9S20760C24D0Ev,_ZThn64_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C249S20760C23__8S20760C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C24D1Ev,_ZTv0_n20_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn192_N9S20760C24D1Ev,_ZThn120_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C24D0Ev,_ZTv0_n20_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn192_N9S20760C24D0Ev,_ZThn120_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C249S20760C23__8S20760C1[] = {
  ABISELECT(-192,-120),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C24D1Ev,_ZTv0_n20_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C24D0Ev,_ZTv0_n20_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn160_N9S20760C24D1Ev,_ZThn92_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn160_N9S20760C24D0Ev,_ZThn92_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C249S20760C23__8S20760C1[] = {
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C24D1Ev,_ZTvn12_n20_N9S20760C24D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C24D0Ev,_ZTvn12_n20_N9S20760C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C249S20760C23__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-208,-132),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C24D1Ev,_ZTvn12_n20_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C24D0Ev,_ZTvn12_n20_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C24D1Ev,_ZTv0_n16_N9S20760C24D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20760C24D0Ev,_ZTv0_n16_N9S20760C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C249S20760C23__8S20760C1[] = {
  ABISELECT(40,28),
  ABISELECT(152,92),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C24D1Ev,_ZTv0_n16_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C24D0Ev,_ZTv0_n16_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn64_N9S20760C24D1Ev,_ZThn36_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn64_N9S20760C24D0Ev,_ZThn36_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S20760C249S20760C23__8S20760C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C23D1Ev,_ZThn12_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C23D0Ev,_ZThn12_N9S20760C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C24__9S20760C23__8S20760C1[] = {
  ABISELECT(64,36),
  ABISELECT(320,200),
  ABISELECT(-40,-28),
  ABISELECT(112,64),
  ABISELECT(192,120),
  ABISELECT(160,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C23D1Ev,_ZThn12_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C23D0Ev,_ZThn12_N9S20760C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn128_N9S20760C23D1Ev,_ZThn76_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn128_N9S20760C23D0Ev,_ZThn76_N9S20760C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C23__8S20760C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C23D1Ev,_ZTv0_n20_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn208_N9S20760C23D1Ev,_ZThn132_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C23D0Ev,_ZTv0_n20_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn208_N9S20760C23D0Ev,_ZThn132_N9S20760C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C23__8S20760C1[] = {
  ABISELECT(-208,-132),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-208,-132),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C23D1Ev,_ZTv0_n20_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C23D0Ev,_ZTv0_n20_N9S20760C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn176_N9S20760C23D1Ev,_ZThn104_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn176_N9S20760C23D0Ev,_ZThn104_N9S20760C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C23__8S20760C1[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C23D1Ev,_ZTvn12_n20_N9S20760C23D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C23D0Ev,_ZTvn12_n20_N9S20760C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C23__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C23D1Ev,_ZTvn12_n20_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C23D0Ev,_ZTvn12_n20_N9S20760C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C23D1Ev,_ZTv0_n16_N9S20760C23D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20760C23D0Ev,_ZTv0_n16_N9S20760C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C23__8S20760C1[] = {
  ABISELECT(24,16),
  ABISELECT(152,92),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C23D1Ev,_ZTv0_n16_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C23D0Ev,_ZTv0_n16_N9S20760C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C23D1Ev,_ZThn48_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C23D0Ev,_ZThn48_N9S20760C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S20760C23__8S20760C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20760C23D1Ev,_ZTv0_n24_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn352_N9S20760C23D1Ev,_ZThn216_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20760C23D0Ev,_ZTv0_n24_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn352_N9S20760C23D0Ev,_ZThn216_N9S20760C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C25__9S20760C23__8S20760C1[] = {
  ABISELECT(-352,-216),
  ABISELECT(-16,-4),
  ABISELECT(-224,-140),
  ABISELECT(-176,-112),
  ABISELECT(-352,-216),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C23D1Ev,_ZTv0_n24_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C23D0Ev,_ZTv0_n24_N9S20760C23D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N9S20760C23D1Ev,_ZTvn12_n24_N9S20760C23D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S20760C23D0Ev,_ZTvn12_n24_N9S20760C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C179S20760C25__A2__9S20760C23__8S20760C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-368,-228),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S20760C23D1Ev,_ZTvn12_n24_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S20760C23D0Ev,_ZTvn12_n24_N9S20760C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S20760C2_nt__8S20760C1[] = {
  ABISELECT(-152,-104),
  0,
  (VTBL_ENTRY)&(_ZTI11S20760C2_nt[0]),
};
extern void _ZN8S20760C4D1Ev();
extern void _ZN8S20760C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20760C4__A1__8S20760C1[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C4[0]),
  (VTBL_ENTRY)&_ZN8S20760C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S20760C4__A1__8S20760C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20760C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev),
};
extern void _ZN8S20760C8D1Ev();
extern void _ZN8S20760C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20760C8__8S20760C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C8[0]),
  (VTBL_ENTRY)&_ZN8S20760C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20760C8D1Ev,_ZThn8_N8S20760C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20760C8D0Ev,_ZThn8_N8S20760C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20760C8__8S20760C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20760C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev),
};
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C16__8S20760C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20760C16D1Ev,_ZThn16_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S20760C16D0Ev,_ZThn16_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C16__8S20760C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C16__8S20760C1[] = {
  ABISELECT(-64,-44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C16__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C16__8S20760C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C17__8S20760C1[] = {
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__8S20760C1[] = {
  ABISELECT(-96,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C17__8S20760C1[] = {
  ABISELECT(96,68),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C17__8S20760C1[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C17__8S20760C1[] = {
  ABISELECT(80,56),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void _ZN9S20760C19D1Ev();
extern void _ZN9S20760C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C19__8S20760C1[] = {
  ABISELECT(-296,-192),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&_ZN9S20760C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C19D0Ev,
};
extern void _ZN9S20760C20D1Ev();
extern void _ZN9S20760C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C209S20760C19__8S20760C1[] = {
  ABISELECT(-312,-204),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&_ZN9S20760C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C20D0Ev,
};
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C169S20760C209S20760C19__A1__8S20760C1[] = {
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C169S20760C209S20760C19__A1__8S20760C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C169S20760C209S20760C19__A1__8S20760C1[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C19__A1__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C19__A1__8S20760C1[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C209S20760C19__8S20760C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C209S20760C19__8S20760C1[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C209S20760C19__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C209S20760C19__8S20760C1[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C209S20760C19__8S20760C1[] = {
  ABISELECT(312,204),
  ABISELECT(152,92),
  ABISELECT(312,204),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C19D1Ev,_ZThn12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C19D0Ev,_ZThn12_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C20__9S20760C19__8S20760C1[] = {
  ABISELECT(-312,-204),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C19D1Ev,_ZThn12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C19D0Ev,_ZThn12_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C19__8S20760C1[] = {
  ABISELECT(96,72),
  ABISELECT(96,72),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C19D1Ev,_ZTv0_n20_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20760C19D0Ev,_ZTv0_n20_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C19__8S20760C1[] = {
  ABISELECT(64,44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C19D1Ev,_ZTv0_n20_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C19D0Ev,_ZTv0_n20_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C19D1Ev,_ZTvn12_n20_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C19D0Ev,_ZTvn12_n20_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C19__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C19D1Ev,_ZTvn12_n20_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C19D0Ev,_ZTvn12_n20_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__9S20760C19__8S20760C1[] = {
  ABISELECT(144,100),
  ABISELECT(144,100),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C19D1Ev,_ZTv0_n16_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20760C19D0Ev,_ZTv0_n16_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C19__8S20760C1[] = {
  ABISELECT(296,192),
  ABISELECT(152,92),
  ABISELECT(296,192),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C19D1Ev,_ZTv0_n16_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C19D0Ev,_ZTv0_n16_N9S20760C19D0Ev),
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__8S20760C1[] = {
  ABISELECT(152,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn152_N9S20760C18D1Ev,_ZThn92_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn152_N9S20760C18D0Ev,_ZThn92_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C18__A1__8S20760C1[] = {
  ABISELECT(-152,-92),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void _ZN9S20760C25D1Ev();
extern void _ZN9S20760C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C25__8S20760C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(-224,-140),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&_ZN9S20760C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C25D0Ev,
};
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C179S20760C25__A1__8S20760C1[] = {
  ABISELECT(-224,-140),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C179S20760C25__A2__8S20760C1[] = {
  ABISELECT(-240,-152),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C179S20760C25__A2__8S20760C1[] = {
  ABISELECT(240,152),
  ABISELECT(240,152),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C179S20760C25__A1__8S20760C1[] = {
  ABISELECT(176,112),
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C179S20760C25__A1__8S20760C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C179S20760C25__A1__8S20760C1[] = {
  ABISELECT(224,140),
  ABISELECT(224,140),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C25__8S20760C1[] = {
  ABISELECT(176,112),
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C25D1Ev,_ZThn12_N9S20760C25D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C25D0Ev,_ZThn12_N9S20760C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C25__8S20760C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C25D1Ev,_ZThn12_N9S20760C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C25D0Ev,_ZThn12_N9S20760C25D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C25__8S20760C1[] = {
  ABISELECT(224,140),
  ABISELECT(224,140),
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev),
};
static  VTT_ENTRY vtt_S20760C1[] = {
  {&(_ZTV8S20760C1[18]),  18,162},
  {&(_tg__ZTV8S20760C4__A__8S20760C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S20760C4__A__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C6__8S20760C1[14]),  14,16},
  {&(_tg__ZTV8S20760C78S20760C6__8S20760C1[7]),  7,9},
  {&(_tg__ZTV9S20760C128S20760C78S20760C6__8S20760C1[4]),  4,6},
  {&(_tg__ZTV8S20760C8__8S20760C78S20760C6__8S20760C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S20760C78S20760C6__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C158S20760C6__8S20760C1[10]),  10,13},
  {&(_tg__ZTV9S20760C16__9S20760C158S20760C6__8S20760C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20760C158S20760C6__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C158S20760C6__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C158S20760C6__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C158S20760C6__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C19__9S20760C158S20760C6__8S20760C1[7]),  7,9},
  {&(_tg__ZTV9S20760C209S20760C19__9S20760C158S20760C6__8S20760C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S20760C209S20760C19__9S20760C158S20760C6__8S20760C1[2]),  2,4},
  {&(_tg__ZTV9S20760C158S20760C6__8S20760C1[10]),  10,13},
  {&(_tg__ZTV11S20760C5_nt__9S20760C158S20760C6__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C4__8S20760C6__8S20760C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__8S20760C6__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C8__8S20760C6__8S20760C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S20760C6__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C15__8S20760C6__8S20760C1[10]),  10,13},
  {&(_tg__ZTV9S20760C16__8S20760C6__8S20760C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__A1__8S20760C6__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__8S20760C6__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__8S20760C6__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C19__8S20760C6__8S20760C1[7]),  7,9},
  {&(_tg__ZTV9S20760C209S20760C19__8S20760C6__8S20760C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S20760C209S20760C19__8S20760C6__8S20760C1[2]),  2,4},
  {&(_tg__ZTV9S20760C15__8S20760C6__8S20760C1[10]),  10,13},
  {&(_tg__ZTV9S20760C23__8S20760C1[9]),  9,11},
  {&(_tg__ZTV9S20760C249S20760C23__8S20760C1[8]),  8,10},
  {&(_tg__ZTV9S20760C209S20760C249S20760C23__A1__8S20760C1[6]),  6,8},
  {&(_tg__ZTV9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C209S20760C249S20760C23__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C209S20760C249S20760C23__A1__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C209S20760C249S20760C23__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C209S20760C249S20760C23__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C209S20760C249S20760C23__A1__8S20760C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__9S20760C249S20760C23__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C249S20760C23__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C249S20760C23__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C249S20760C23__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C249S20760C23__8S20760C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__9S20760C249S20760C23__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C24__9S20760C23__8S20760C1[8]),  8,10},
  {&(_tg__ZTV8S20760C9__A1__9S20760C23__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C23__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C23__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C23__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C23__8S20760C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__9S20760C23__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C25__9S20760C23__8S20760C1[6]),  6,8},
  {&(_tg__ZTV9S20760C189S20760C179S20760C25__A2__9S20760C23__8S20760C1[3]),  3,5},
  {&(_ZTV8S20760C1[81]),  81,162},
  {&(_ZTV8S20760C1[84]),  84,162},
  {&(_ZTV8S20760C1[34]),  34,162},
  {&(_ZTV8S20760C1[90]),  90,162},
  {&(_ZTV8S20760C1[96]),  96,162},
  {&(_ZTV8S20760C1[101]),  101,162},
  {&(_ZTV8S20760C1[46]),  46,162},
  {&(_ZTV8S20760C1[109]),  109,162},
  {&(_ZTV8S20760C1[114]),  114,162},
  {&(_ZTV8S20760C1[121]),  121,162},
  {&(_ZTV8S20760C1[126]),  126,162},
  {&(_ZTV8S20760C1[135]),  135,162},
  {&(_ZTV8S20760C1[143]),  143,162},
  {&(_ZTV8S20760C1[147]),  147,162},
  {&(_ZTV8S20760C1[46]),  46,162},
  {&(_ZTV8S20760C1[62]),  62,162},
  {&(_ZTV8S20760C1[72]),  72,162},
  {&(_ZTV8S20760C1[155]),  155,162},
  {&(_ZTV8S20760C1[160]),  160,162},
  {&(_tg__ZTV11S20760C2_nt__8S20760C1[3]),  3,3},
  {&(_tg__ZTV8S20760C4__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S20760C4__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C8__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S20760C8__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C16__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C16__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C16__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C16__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C16__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__8S20760C1[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C17__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C17__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C17__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C17__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C17__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C19__8S20760C1[6]),  6,8},
  {&(_tg__ZTV9S20760C209S20760C19__8S20760C1[6]),  6,8},
  {&(_tg__ZTV9S20760C169S20760C209S20760C19__A1__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C169S20760C209S20760C19__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C169S20760C209S20760C19__A1__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C19__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C19__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C209S20760C19__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C209S20760C19__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C209S20760C19__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C209S20760C19__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C209S20760C19__8S20760C1[4]),  4,6},
  {&(_tg__ZTV9S20760C20__9S20760C19__8S20760C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20760C19__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C19__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C19__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__9S20760C19__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C19__8S20760C1[4]),  4,6},
  {&(_tg__ZTV9S20760C18__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C18__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C25__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C179S20760C25__A1__8S20760C1[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C179S20760C25__A2__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C179S20760C25__A2__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C179S20760C25__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C179S20760C25__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C179S20760C25__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C25__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C25__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C25__8S20760C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20760C1[];
extern  VTBL_ENTRY _ZTV8S20760C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C1[];
static VTBL_ENTRY alt_thunk_names103[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C18D0Ev,_ZThn92_N9S20760C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C18D1Ev,_ZThn92_N9S20760C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C8D0Ev,_ZThn8_N8S20760C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C8D1Ev,_ZThn8_N8S20760C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C23D0Ev,_ZTv0_n24_N9S20760C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20760C23D0Ev,_ZThn216_N9S20760C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C23D1Ev,_ZTv0_n24_N9S20760C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20760C23D1Ev,_ZThn216_N9S20760C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C23D0Ev,_ZTv0_n20_N9S20760C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20760C23D0Ev,_ZThn132_N9S20760C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C23D1Ev,_ZTv0_n20_N9S20760C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20760C23D1Ev,_ZThn132_N9S20760C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C23D0Ev,_ZThn48_N9S20760C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20760C23D0Ev,_ZThn104_N9S20760C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20760C23D0Ev,_ZThn76_N9S20760C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C23D1Ev,_ZThn48_N9S20760C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20760C23D1Ev,_ZThn104_N9S20760C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20760C23D1Ev,_ZThn76_N9S20760C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C24D0Ev,_ZTv0_n20_N9S20760C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20760C24D0Ev,_ZThn120_N9S20760C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C24D1Ev,_ZTv0_n20_N9S20760C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20760C24D1Ev,_ZThn120_N9S20760C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C24D0Ev,_ZThn36_N9S20760C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C24D0Ev,_ZThn92_N9S20760C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20760C24D0Ev,_ZThn64_N9S20760C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C24D1Ev,_ZThn36_N9S20760C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C24D1Ev,_ZThn92_N9S20760C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20760C24D1Ev,_ZThn64_N9S20760C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20760C20D0Ev,_ZThn120_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20760C20D1Ev,_ZThn120_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20760C20D0Ev,_ZThn64_N9S20760C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C20D0Ev,_ZThn92_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20760C20D1Ev,_ZThn64_N9S20760C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C20D1Ev,_ZThn92_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20760C16D0Ev,_ZThn120_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20760C16D1Ev,_ZThn120_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20760C16D0Ev,_ZThn16_N9S20760C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20760C16D0Ev,_ZThn64_N9S20760C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C16D0Ev,_ZThn92_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20760C16D1Ev,_ZThn16_N9S20760C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20760C16D1Ev,_ZThn64_N9S20760C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C16D1Ev,_ZThn92_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20760C6D0Ev,_ZTv0_n28_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20760C6D0Ev,_ZThn228_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20760C6D1Ev,_ZTv0_n28_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20760C6D1Ev,_ZThn228_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20760C6D0Ev,_ZTv0_n20_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20760C6D0Ev,_ZThn184_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20760C6D1Ev,_ZTv0_n20_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20760C6D1Ev,_ZThn184_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20760C6D0Ev,_ZTv0_n24_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20760C6D0Ev,_ZThn140_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20760C6D1Ev,_ZTv0_n24_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20760C6D1Ev,_ZThn140_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20760C6D0Ev,_ZThn156_N8S20760C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20760C6D0Ev,_ZThn128_N8S20760C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20760C6D0Ev,_ZThn100_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20760C6D1Ev,_ZThn156_N8S20760C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20760C6D1Ev,_ZThn128_N8S20760C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20760C6D1Ev,_ZThn100_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20760C6D0Ev,_ZThn36_N8S20760C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20760C6D0Ev,_ZThn120_N8S20760C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20760C6D0Ev,_ZThn112_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20760C6D1Ev,_ZThn36_N8S20760C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20760C6D1Ev,_ZThn120_N8S20760C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20760C6D1Ev,_ZThn112_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20760C15D0Ev,_ZTv0_n28_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N9S20760C15D0Ev,_ZThn192_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20760C15D1Ev,_ZTv0_n28_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N9S20760C15D1Ev,_ZThn192_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C15D0Ev,_ZTv0_n20_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20760C15D0Ev,_ZThn148_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C15D1Ev,_ZTv0_n20_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20760C15D1Ev,_ZThn148_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20760C15D0Ev,_ZThn64_N9S20760C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C15D0Ev,_ZThn92_N9S20760C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20760C15D0Ev,_ZThn120_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20760C15D1Ev,_ZThn64_N9S20760C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C15D1Ev,_ZThn92_N9S20760C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20760C15D1Ev,_ZThn120_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C15D0Ev,_ZTv0_n24_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C15D0Ev,_ZThn104_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C15D1Ev,_ZTv0_n24_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C15D1Ev,_ZThn104_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C15D0Ev,_ZTv0_n16_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)_ZN9S20760C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C15D1Ev,_ZTv0_n16_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)_ZN9S20760C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C7D0Ev,_ZTv0_n12_N8S20760C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20760C7D0Ev,_ZThn128_N8S20760C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C7D1Ev,_ZTv0_n12_N8S20760C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20760C7D1Ev,_ZThn128_N8S20760C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C7D0Ev,_ZTv0_n16_N8S20760C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20760C7D0Ev,_ZThn120_N8S20760C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C7D1Ev,_ZTv0_n16_N8S20760C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20760C7D1Ev,_ZThn120_N8S20760C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20760C4D0Ev,_ZThn108_N8S20760C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20760C4D1Ev,_ZThn108_N8S20760C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20760C1D0Ev,_ZTv0_n28_N8S20760C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20760C1D0Ev,_ZThn236_N8S20760C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20760C1D1Ev,_ZTv0_n28_N8S20760C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20760C1D1Ev,_ZThn236_N8S20760C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20760C1D0Ev,_ZTv0_n20_N8S20760C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20760C1D0Ev,_ZThn192_N8S20760C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20760C1D1Ev,_ZTv0_n20_N8S20760C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20760C1D1Ev,_ZThn192_N8S20760C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20760C1D0Ev,_ZTv0_n24_N8S20760C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N8S20760C1D0Ev,_ZThn276_N8S20760C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20760C1D0Ev,_ZThn148_N8S20760C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20760C1D1Ev,_ZTv0_n24_N8S20760C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N8S20760C1D1Ev,_ZThn276_N8S20760C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20760C1D1Ev,_ZThn148_N8S20760C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C1D0Ev,_ZTv0_n12_N8S20760C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20760C1D0Ev,_ZThn164_N8S20760C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20760C1D0Ev,_ZThn136_N8S20760C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20760C1D0Ev,_ZThn108_N8S20760C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C1D1Ev,_ZTv0_n12_N8S20760C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20760C1D1Ev,_ZThn164_N8S20760C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20760C1D1Ev,_ZThn136_N8S20760C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20760C1D1Ev,_ZThn108_N8S20760C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C1D0Ev,_ZTv0_n16_N8S20760C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20760C1D0Ev,_ZThn128_N8S20760C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20760C1D0Ev,_ZThn120_N8S20760C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20760C1D0Ev,_ZThn44_N8S20760C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C1D1Ev,_ZTv0_n16_N8S20760C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20760C1D1Ev,_ZThn128_N8S20760C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20760C1D1Ev,_ZThn120_N8S20760C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20760C1D1Ev,_ZThn44_N8S20760C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C1 = {  "S20760C1", // class name
  bases_S20760C1, 42,
  &(vtc_S20760C1[0]), // expected_vtbl_contents
  &(vtt_S20760C1[0]), // expected_vtt_contents
  ABISELECT(688,448), // object size
  NSPAIRA(_ZTI8S20760C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20760C1),162, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20760C1),125, //virtual table table var
  33, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names103,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C2  : virtual S4228C37 {
  ~S20759C2(); // tgen
  S20759C2(); // tgen
};
//SIG(-1 S20759C2) C1{ VBC2{ m}}


S20759C2 ::~S20759C2(){ note_dtor("S20759C2", this);} // tgen
S20759C2 ::S20759C2(){ note_ctor("S20759C2", this);} // tgen

static void Test_S20759C2()
{
  extern Class_Descriptor cd_S20759C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20759C2, buf);
    S20759C2 *dp, &lv = *(dp=new (buf) S20759C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20759C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20759C2)");
    check_base_class_offset(lv, (S4228C37*), 0, "S20759C2");
    test_class_info(&lv, &cd_S20759C2);
    dp->~S20759C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C2(Test_S20759C2, "S20759C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20759C2C1Ev();
extern void _ZN8S20759C2D1Ev();
Name_Map name_map_S20759C2[] = {
  NSPAIR(_ZN8S20759C2C1Ev),
  NSPAIR(_ZN8S20759C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S20759C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20759C2[];
static  VTBL_ENTRY vtc_S20759C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C2[0]),
};
extern VTBL_ENTRY _ZTV8S20759C2[];
static  VTT_ENTRY vtt_S20759C2[] = {
  {&(_ZTV8S20759C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20759C2[];
extern  VTBL_ENTRY _ZTV8S20759C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C2[];
Class_Descriptor cd_S20759C2 = {  "S20759C2", // class name
  bases_S20759C2, 1,
  &(vtc_S20759C2[0]), // expected_vtbl_contents
  &(vtt_S20759C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20759C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20759C2),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20759C2),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C5_nt  {
  long s20759c5f0;
  void  mf20759c5(); // _ZN11S20759C5_nt9mf20759c5Ev
  virtual  ~S20759C5_nt(); // _ZN11S20759C5_ntD1Ev
  S20759C5_nt(); // tgen
};
//SIG(-1 S20759C5_nt) C1{ vd m Fl}


void  S20759C5_nt ::mf20759c5(){}
 S20759C5_nt ::~S20759C5_nt(){ note_dtor("S20759C5_nt", this);}
S20759C5_nt ::S20759C5_nt(){ note_ctor("S20759C5_nt", this);} // tgen

//skip512 S20759C5_nt

#else // __cplusplus

extern void _ZN11S20759C5_ntC1Ev();
extern void _ZN11S20759C5_ntD1Ev();
Name_Map name_map_S20759C5_nt[] = {
  NSPAIR(_ZN11S20759C5_ntC1Ev),
  NSPAIR(_ZN11S20759C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern void _ZN11S20759C5_ntD1Ev();
extern void _ZN11S20759C5_ntD0Ev();
static  VTBL_ENTRY vtc_S20759C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20759C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20759C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20759C5_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
VTBL_ENTRY *P__ZTI11S20759C5_nt = _ZTI11S20759C5_nt; 
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
Class_Descriptor cd_S20759C5_nt = {  "S20759C5_nt", // class name
  0,0,//no base classes
  &(vtc_S20759C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S20759C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20759C5_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C4  : virtual S20759C5_nt {
  char s20759c4f0[2];
  virtual  ~S20759C4(); // _ZN8S20759C4D2Ev
  S20759C4(); // tgen
};
//SIG(-1 S20759C4) C1{ VBC2{ vd m Fl} vd Fc[2]}


 S20759C4 ::~S20759C4(){ note_dtor("S20759C4", this);}
S20759C4 ::S20759C4(){ note_ctor("S20759C4", this);} // tgen

static void Test_S20759C4()
{
  extern Class_Descriptor cd_S20759C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20759C4, buf);
    S20759C4 *dp, &lv = *(dp=new (buf) S20759C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20759C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20759C4)");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(16,8), "S20759C4");
    check_field_offset(lv, s20759c4f0, ABISELECT(8,4), "S20759C4.s20759c4f0");
    test_class_info(&lv, &cd_S20759C4);
    dp->~S20759C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C4(Test_S20759C4, "S20759C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20759C4C1Ev();
extern void _ZN8S20759C4D2Ev();
Name_Map name_map_S20759C4[] = {
  NSPAIR(_ZN8S20759C4C1Ev),
  NSPAIR(_ZN8S20759C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S20759C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20759C5_nt,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20759C4[];
extern void _ZN8S20759C4D1Ev();
extern void _ZN8S20759C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20759C4D1Ev,_ZThn8_N8S20759C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20759C4D0Ev,_ZThn8_N8S20759C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C4[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C4[0]),
  (VTBL_ENTRY)&_ZN8S20759C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C4D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20759C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S20759C4[];
static  VTT_ENTRY vtt_S20759C4[] = {
  {&(_ZTV8S20759C4[3]),  3,10},
  {&(_ZTV8S20759C4[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S20759C4[];
extern  VTBL_ENTRY _ZTV8S20759C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C4[];
static VTBL_ENTRY alt_thunk_names104[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C4D0Ev,_ZThn8_N8S20759C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C4D1Ev,_ZThn8_N8S20759C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C4 = {  "S20759C4", // class name
  bases_S20759C4, 1,
  &(vtc_S20759C4[0]), // expected_vtbl_contents
  &(vtt_S20759C4[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20759C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20759C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20759C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names104,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C8  : virtual S20760C9 {
  ::S4228C27 s20759c8f0;
  virtual  ~S20759C8(); // _ZN8S20759C8D2Ev
  S20759C8(); // tgen
};
//SIG(-1 S20759C8) C1{ VBC2{ vd m FL} vd FC3{ m}}


 S20759C8 ::~S20759C8(){ note_dtor("S20759C8", this);}
S20759C8 ::S20759C8(){ note_ctor("S20759C8", this);} // tgen

static void Test_S20759C8()
{
  extern Class_Descriptor cd_S20759C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20759C8, buf);
    S20759C8 *dp, &lv = *(dp=new (buf) S20759C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20759C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20759C8)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(16,8), "S20759C8");
    check_field_offset(lv, s20759c8f0, ABISELECT(8,4), "S20759C8.s20759c8f0");
    test_class_info(&lv, &cd_S20759C8);
    dp->~S20759C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C8(Test_S20759C8, "S20759C8", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20759C8C1Ev();
extern void _ZN8S20759C8D2Ev();
Name_Map name_map_S20759C8[] = {
  NSPAIR(_ZN8S20759C8C1Ev),
  NSPAIR(_ZN8S20759C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S20759C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20759C8[];
extern void _ZN8S20759C8D1Ev();
extern void _ZN8S20759C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20759C8D1Ev,_ZThn8_N8S20759C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20759C8D0Ev,_ZThn8_N8S20759C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C8[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C8[0]),
  (VTBL_ENTRY)&_ZN8S20759C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C8D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20759C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S20759C8[];
static  VTT_ENTRY vtt_S20759C8[] = {
  {&(_ZTV8S20759C8[3]),  3,10},
  {&(_ZTV8S20759C8[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S20759C8[];
extern  VTBL_ENTRY _ZTV8S20759C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C8[];
static VTBL_ENTRY alt_thunk_names105[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C8D0Ev,_ZThn8_N8S20759C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C8D1Ev,_ZThn8_N8S20759C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C8 = {  "S20759C8", // class name
  bases_S20759C8, 1,
  &(vtc_S20759C8[0]), // expected_vtbl_contents
  &(vtt_S20759C8[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20759C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20759C8),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20759C8),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names105,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C12  : S20760C13 , virtual S4228C20 , virtual S4228C27 {
  short s20759c12f0;
  ~S20759C12(); // tgen
  S20759C12(); // tgen
};
//SIG(-1 S20759C12) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S20759C12 ::~S20759C12(){ note_dtor("S20759C12", this);} // tgen
S20759C12 ::S20759C12(){ note_ctor("S20759C12", this);} // tgen

static void Test_S20759C12()
{
  extern Class_Descriptor cd_S20759C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S20759C12, buf);
    S20759C12 *dp, &lv = *(dp=new (buf) S20759C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S20759C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20759C12)");
    check_base_class_offset(lv, (S20760C13*), 0, "S20759C12");
    check_base_class_offset(lv, (S4228C20*), 0, "S20759C12");
    check_base_class_offset(lv, (S4228C27*), 0, "S20759C12");
    check_field_offset(lv, s20759c12f0, ABISELECT(32,28), "S20759C12.s20759c12f0");
    test_class_info(&lv, &cd_S20759C12);
    dp->~S20759C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C12(Test_S20759C12, "S20759C12", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN9S20759C12C1Ev();
extern void _ZN9S20759C12D1Ev();
Name_Map name_map_S20759C12[] = {
  NSPAIR(_ZN9S20759C12C1Ev),
  NSPAIR(_ZN9S20759C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C20;
extern VTBL_ENTRY _ZTI8S4228C20[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S20759C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20759C12[];
extern void _ZN9S20759C12D1Ev();
extern void _ZN9S20759C12D0Ev();
static  VTBL_ENTRY vtc_S20759C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C12[0]),
  (VTBL_ENTRY)&_ZN9S20759C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C12D0Ev,
};
extern VTBL_ENTRY _ZTV9S20759C12[];
static  VTT_ENTRY vtt_S20759C12[] = {
  {&(_ZTV9S20759C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20759C12[];
extern  VTBL_ENTRY _ZTV9S20759C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C12[];
Class_Descriptor cd_S20759C12 = {  "S20759C12", // class name
  bases_S20759C12, 3,
  &(vtc_S20759C12[0]), // expected_vtbl_contents
  &(vtt_S20759C12[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI9S20759C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20759C12),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C12),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C7  : virtual S20759C8 , virtual S4228C23 , S20759C12 {
  int s20759c7f0;
  virtual  ~S20759C7(); // _ZN8S20759C7D2Ev
  S20759C7(); // tgen
};
//SIG(-1 S20759C7) C1{ VBC2{ VBC3{ vd m FL} vd FC4{ m}} VBC5{ m} BC6{ BC7{ vd m Fi[6]} VBC8{ m} VBC4 Fs} vd Fi}


 S20759C7 ::~S20759C7(){ note_dtor("S20759C7", this);}
S20759C7 ::S20759C7(){ note_ctor("S20759C7", this);} // tgen

static void Test_S20759C7()
{
  extern Class_Descriptor cd_S20759C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S20759C7, buf);
    S20759C7 *dp, &lv = *(dp=new (buf) S20759C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S20759C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20759C7)");
    check_base_class_offset(lv, (S20760C9*)(S20759C8*), ABISELECT(56,44), "S20759C7");
    check_base_class_offset(lv, (S20759C8*), ABISELECT(40,36), "S20759C7");
    check_base_class_offset(lv, (S4228C23*), 0, "S20759C7");
    check_base_class_offset(lv, (S20760C13*)(S20759C12*), 0, "S20759C7");
    check_base_class_offset(lv, (S4228C20*)(S20759C12*), 0, "S20759C7");
    check_base_class_offset(lv, (S4228C27*)(S20759C12*), 0, "S20759C7");
    check_base_class_offset(lv, (S20759C12*), 0, "S20759C7");
    check_field_offset(lv, s20759c7f0, ABISELECT(36,32), "S20759C7.s20759c7f0");
    test_class_info(&lv, &cd_S20759C7);
    dp->~S20759C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C7(Test_S20759C7, "S20759C7", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN8S20759C7C1Ev();
extern void _ZN8S20759C7D2Ev();
Name_Map name_map_S20759C7[] = {
  NSPAIR(_ZN8S20759C7C1Ev),
  NSPAIR(_ZN8S20759C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C8;
extern VTBL_ENTRY _ZTI8S20759C8[];
extern  VTBL_ENTRY _ZTV8S20759C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C8[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C20;
extern VTBL_ENTRY _ZTI8S4228C20[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20759C12;
extern VTBL_ENTRY _ZTI9S20759C12[];
extern  VTBL_ENTRY _ZTV9S20759C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C12[];
static Base_Class bases_S20759C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(56,44), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20759C8,    ABISELECT(40,36), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20759C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20759C7[];
extern void _ZN8S20759C7D1Ev();
extern void _ZN8S20759C7D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20759C7D1Ev,_ZTv0_n16_N8S20759C7D1Ev)();
extern void ABISELECT(_ZThn40_N8S20759C7D1Ev,_ZThn36_N8S20759C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C7D0Ev,_ZTv0_n16_N8S20759C7D0Ev)();
extern void ABISELECT(_ZThn40_N8S20759C7D0Ev,_ZThn36_N8S20759C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C7D1Ev,_ZTv0_n12_N8S20759C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S20759C7D1Ev,_ZThn44_N8S20759C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C7D0Ev,_ZTv0_n12_N8S20759C7D0Ev)();
extern void ABISELECT(_ZThn56_N8S20759C7D0Ev,_ZThn44_N8S20759C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C7[] = {
  0,
  ABISELECT(56,44),
  ABISELECT(40,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C7[0]),
  (VTBL_ENTRY)&_ZN8S20759C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C7D0Ev,
  ABISELECT(-40,-36),
  ABISELECT(16,8),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S20759C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C7D1Ev,_ZTv0_n16_N8S20759C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C7D0Ev,_ZTv0_n16_N8S20759C7D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S20759C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C7D1Ev,_ZTv0_n12_N8S20759C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C7D0Ev,_ZTv0_n12_N8S20759C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S20759C7[];
extern void _ZN9S20759C12D1Ev();
extern void _ZN9S20759C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C12__8S20759C7[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C12[0]),
  (VTBL_ENTRY)&_ZN9S20759C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C12D0Ev,
};
extern void _ZN8S20759C8D1Ev();
extern void _ZN8S20759C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20759C8__8S20759C7[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C8[0]),
  (VTBL_ENTRY)&_ZN8S20759C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20759C8D1Ev,_ZThn8_N8S20759C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20759C8D0Ev,_ZThn8_N8S20759C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20759C8__8S20759C7[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20759C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev),
};
static  VTT_ENTRY vtt_S20759C7[] = {
  {&(_ZTV8S20759C7[7]),  7,20},
  {&(_tg__ZTV9S20759C12__8S20759C7[4]),  4,6},
  {&(_ZTV8S20759C7[13]),  13,20},
  {&(_ZTV8S20759C7[18]),  18,20},
  {&(_tg__ZTV8S20759C8__8S20759C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S20759C8__8S20759C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20759C7[];
extern  VTBL_ENTRY _ZTV8S20759C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C7[];
static VTBL_ENTRY alt_thunk_names106[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C8D0Ev,_ZThn8_N8S20759C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C8D1Ev,_ZThn8_N8S20759C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C7D0Ev,_ZTv0_n12_N8S20759C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20759C7D0Ev,_ZThn44_N8S20759C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C7D1Ev,_ZTv0_n12_N8S20759C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20759C7D1Ev,_ZThn44_N8S20759C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C7D0Ev,_ZTv0_n16_N8S20759C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20759C7D0Ev,_ZThn36_N8S20759C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C7D1Ev,_ZTv0_n16_N8S20759C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20759C7D1Ev,_ZThn36_N8S20759C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C7 = {  "S20759C7", // class name
  bases_S20759C7, 7,
  &(vtc_S20759C7[0]), // expected_vtbl_contents
  &(vtt_S20759C7[0]), // expected_vtt_contents
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI8S20759C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20759C7),20, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20759C7),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names106,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C18  : virtual S20760C9 {
  virtual  ~S20759C18(); // _ZN9S20759C18D2Ev
  S20759C18(); // tgen
};
//SIG(-1 S20759C18) C1{ VBC2{ vd m FL} vd}


 S20759C18 ::~S20759C18(){ note_dtor("S20759C18", this);}
S20759C18 ::S20759C18(){ note_ctor("S20759C18", this);} // tgen

static void Test_S20759C18()
{
  extern Class_Descriptor cd_S20759C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20759C18, buf);
    S20759C18 *dp, &lv = *(dp=new (buf) S20759C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20759C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20759C18)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S20759C18");
    test_class_info(&lv, &cd_S20759C18);
    dp->~S20759C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C18(Test_S20759C18, "S20759C18", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S20759C18C1Ev();
extern void _ZN9S20759C18D2Ev();
Name_Map name_map_S20759C18[] = {
  NSPAIR(_ZN9S20759C18C1Ev),
  NSPAIR(_ZN9S20759C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S20759C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20759C18[];
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn8_N9S20759C18D1Ev,_ZThn4_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn8_N9S20759C18D0Ev,_ZThn4_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C18[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S20759C18[];
static  VTT_ENTRY vtt_S20759C18[] = {
  {&(_ZTV9S20759C18[3]),  3,10},
  {&(_ZTV9S20759C18[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
static VTBL_ENTRY alt_thunk_names107[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20759C18D0Ev,_ZThn4_N9S20759C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20759C18D1Ev,_ZThn4_N9S20759C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C18 = {  "S20759C18", // class name
  bases_S20759C18, 1,
  &(vtc_S20759C18[0]), // expected_vtbl_contents
  &(vtt_S20759C18[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S20759C18),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20759C18),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C18),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names107,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C17  : S20760C9 , virtual S20760C13 , S20759C18 {
  ::S20760C13 s20759c17f0;
  ~S20759C17(); // tgen
  S20759C17(); // tgen
};
//SIG(-1 S20759C17) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S20759C17 ::~S20759C17(){ note_dtor("S20759C17", this);} // tgen
S20759C17 ::S20759C17(){ note_ctor("S20759C17", this);} // tgen

static void Test_S20759C17()
{
  extern Class_Descriptor cd_S20759C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S20759C17, buf);
    S20759C17 *dp, &lv = *(dp=new (buf) S20759C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S20759C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20759C17)");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S20759C17");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S20759C17");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*), ABISELECT(88,72), "S20759C17");
    check_base_class_offset(lv, (S20759C18*), ABISELECT(16,12), "S20759C17");
    check_field_offset(lv, s20759c17f0, ABISELECT(24,16), "S20759C17.s20759c17f0");
    test_class_info(&lv, &cd_S20759C17);
    dp->~S20759C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C17(Test_S20759C17, "S20759C17", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN9S20759C17C1Ev();
extern void _ZN9S20759C17D1Ev();
Name_Map name_map_S20759C17[] = {
  NSPAIR(_ZN9S20759C17C1Ev),
  NSPAIR(_ZN9S20759C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
static Base_Class bases_S20759C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20759C18,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20759C17[];
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn88_N9S20759C17D1Ev,_ZThn72_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn88_N9S20759C17D0Ev,_ZThn72_N9S20759C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C17[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S20759C17[];
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn72_N9S20759C18D1Ev,_ZThn60_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn72_N9S20759C18D0Ev,_ZThn60_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C18__9S20759C17[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
static  VTT_ENTRY vtt_S20759C17[] = {
  {&(_ZTV9S20759C17[4]),  4,21},
  {&(_tg__ZTV9S20759C18__9S20759C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C18__9S20759C17[3]),  3,5},
  {&(_ZTV9S20759C17[14]),  14,21},
  {&(_ZTV9S20759C17[9]),  9,21},
  {&(_ZTV9S20759C17[19]),  19,21},
};
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
static VTBL_ENTRY alt_thunk_names108[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C18D0Ev,_ZThn60_N9S20759C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C18D1Ev,_ZThn60_N9S20759C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20759C17D0Ev,_ZThn72_N9S20759C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20759C17D1Ev,_ZThn72_N9S20759C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C17 = {  "S20759C17", // class name
  bases_S20759C17, 4,
  &(vtc_S20759C17[0]), // expected_vtbl_contents
  &(vtt_S20759C17[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI9S20759C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20759C17),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C17),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names108,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C16  : virtual S20760C13 , virtual S20759C17 {
  long double s20759c16f0;
  ~S20759C16(); // tgen
  S20759C16(); // tgen
};
//SIG(-1 S20759C16) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S20759C16 ::~S20759C16(){ note_dtor("S20759C16", this);} // tgen
S20759C16 ::S20759C16(){ note_ctor("S20759C16", this);} // tgen

static void Test_S20759C16()
{
  extern Class_Descriptor cd_S20759C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S20759C16, buf);
    S20759C16 *dp, &lv = *(dp=new (buf) S20759C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S20759C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20759C16)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S20759C16");
    check_base_class_offset(lv, (S20760C13*)(S20759C17*), ABISELECT(32,16), "S20759C16");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*), ABISELECT(64,44), "S20759C16");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*), ABISELECT(120,88), "S20759C16");
    check_base_class_offset(lv, (S20759C18*)(S20759C17*), ABISELECT(80,56), "S20759C16");
    check_base_class_offset(lv, (S20759C17*), ABISELECT(64,44), "S20759C16");
    check_field_offset(lv, s20759c16f0, ABISELECT(16,4), "S20759C16.s20759c16f0");
    test_class_info(&lv, &cd_S20759C16);
    dp->~S20759C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C16(Test_S20759C16, "S20759C16", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN9S20759C16C1Ev();
extern void _ZN9S20759C16D1Ev();
Name_Map name_map_S20759C16[] = {
  NSPAIR(_ZN9S20759C16C1Ev),
  NSPAIR(_ZN9S20759C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
static Base_Class bases_S20759C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20759C18,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20759C16[];
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20759C16D1Ev,_ZThn16_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S20759C16D0Ev,_ZThn16_N9S20759C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn120_N9S20759C16D1Ev,_ZThn88_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn120_N9S20759C16D0Ev,_ZThn88_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C16[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S20759C16[];
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C16[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C16[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20759C18D1Ev,_ZThn32_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20759C18D0Ev,_ZThn32_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C16[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C17__9S20759C16[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17__9S20759C16[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C17__9S20759C16[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
static  VTT_ENTRY vtt_S20759C16[] = {
  {&(_ZTV9S20759C16[5]),  5,29},
  {&(_ZTV9S20759C16[10]),  10,29},
  {&(_ZTV9S20759C16[17]),  17,29},
  {&(_ZTV9S20759C16[22]),  22,29},
  {&(_ZTV9S20759C16[27]),  27,29},
  {&(_tg__ZTV9S20759C17__9S20759C16[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C16[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C16[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C17__9S20759C16[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C17__9S20759C16[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C17__9S20759C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
static VTBL_ENTRY alt_thunk_names109[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C18D0Ev,_ZThn32_N9S20759C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C18D1Ev,_ZThn32_N9S20759C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20759C16D0Ev,_ZThn88_N9S20759C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20759C16D0Ev,_ZThn16_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20759C16D1Ev,_ZThn88_N9S20759C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20759C16D1Ev,_ZThn16_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C16 = {  "S20759C16", // class name
  bases_S20759C16, 5,
  &(vtc_S20759C16[0]), // expected_vtbl_contents
  &(vtt_S20759C16[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI9S20759C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20759C16),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C16),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names109,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C20  : S4161C4_nt , S20759C16 , S20760C22_nt , virtual S20759C18 {
  virtual  ~S20759C20(); // _ZN9S20759C20D2Ev
  S20759C20(); // tgen
};
//SIG(-1 S20759C20) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S20759C20 ::~S20759C20(){ note_dtor("S20759C20", this);}
S20759C20 ::S20759C20(){ note_ctor("S20759C20", this);} // tgen

static void Test_S20759C20()
{
  extern Class_Descriptor cd_S20759C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S20759C20, buf);
    S20759C20 *dp, &lv = *(dp=new (buf) S20759C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S20759C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20759C20)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S20759C20");
    check_base_class_offset(lv, (S20760C13*)(S20759C16*), ABISELECT(48,24), "S20759C20");
    check_base_class_offset(lv, (S20760C13*)(S20759C17*), ABISELECT(48,24), "S20759C20");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*), ABISELECT(80,52), "S20759C20");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*), ABISELECT(136,96), "S20759C20");
    /*is_ambiguous_... S20759C20::S20759C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C18*), ABISELECT(136,96), "S20759C20");
    check_base_class_offset(lv, (S20759C18*)(S20759C17*), ABISELECT(96,64), "S20759C20");
    check_base_class_offset(lv, (S20759C17*)(S20759C16*), ABISELECT(80,52), "S20759C20");
    check_base_class_offset(lv, (S20759C16*), 0, "S20759C20");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S20759C20");
    /*is_ambiguous_... S20759C20::S20759C18 */ AMB_check_base_class_offset(lv, (S20759C18*), ABISELECT(152,108), "S20759C20");
    test_class_info(&lv, &cd_S20759C20);
    dp->~S20759C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C20(Test_S20759C20, "S20759C20", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN9S20759C20C1Ev();
extern void _ZN9S20759C20D2Ev();
Name_Map name_map_S20759C20[] = {
  NSPAIR(_ZN9S20759C20C1Ev),
  NSPAIR(_ZN9S20759C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
static Base_Class bases_S20759C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20759C18,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20759C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20759C18,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20759C20[];
extern void _ZN9S20759C20D1Ev();
extern void _ZN9S20759C20D0Ev();
extern void ABISELECT(_ZThn40_N9S20759C20D1Ev,_ZThn20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn40_N9S20759C20D0Ev,_ZThn20_N9S20759C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn48_N9S20759C20D1Ev,_ZThn24_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn48_N9S20759C20D0Ev,_ZThn24_N9S20759C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C20D1Ev,_ZThn52_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C20D0Ev,_ZThn52_N9S20759C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn136_N9S20759C20D1Ev,_ZThn96_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn136_N9S20759C20D0Ev,_ZThn96_N9S20759C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn152_N9S20759C20D1Ev,_ZThn108_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn152_N9S20759C20D0Ev,_ZThn108_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C20[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&_ZN9S20759C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C20D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20759C20D1Ev,_ZThn20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20759C20D0Ev,_ZThn20_N9S20759C20D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S20759C20[];
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C16__9S20759C20[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S20759C16D1Ev,_ZThn24_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S20759C16D0Ev,_ZThn24_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C16__9S20759C20[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C16D1Ev,_ZThn52_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C16D0Ev,_ZThn52_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C16__9S20759C20[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C16__9S20759C20[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn136_N9S20759C16D1Ev,_ZThn96_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn136_N9S20759C16D0Ev,_ZThn96_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C16__9S20759C20[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C20[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C20[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20759C18D1Ev,_ZThn32_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20759C18D0Ev,_ZThn32_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C20[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C17__9S20759C20[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17__9S20759C20[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C17__9S20759C20[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C20[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C18__A1__9S20759C20[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
static  VTT_ENTRY vtt_S20759C20[] = {
  {&(_ZTV9S20759C20[6]),  6,40},
  {&(_tg__ZTV9S20759C16__9S20759C20[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C16__9S20759C20[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C16__9S20759C20[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C16__9S20759C20[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C16__9S20759C20[3]),  3,5},
  {&(_ZTV9S20759C20[15]),  15,40},
  {&(_ZTV9S20759C20[22]),  22,40},
  {&(_ZTV9S20759C20[27]),  27,40},
  {&(_ZTV9S20759C20[32]),  32,40},
  {&(_ZTV9S20759C20[38]),  38,40},
  {&(_tg__ZTV9S20759C17__9S20759C20[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C20[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C20[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C17__9S20759C20[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C17__9S20759C20[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C17__9S20759C20[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C20[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C18__A1__9S20759C20[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20759C20[];
extern  VTBL_ENTRY _ZTV9S20759C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C20[];
static VTBL_ENTRY alt_thunk_names110[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C18D0Ev,_ZThn32_N9S20759C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C18D1Ev,_ZThn32_N9S20759C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C16D0Ev,_ZThn52_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C16D1Ev,_ZThn52_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C16D0Ev,_ZThn96_N9S20759C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C16D0Ev,_ZThn24_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C16D1Ev,_ZThn96_N9S20759C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C16D1Ev,_ZThn24_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C20D0Ev,_ZThn108_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C20D1Ev,_ZThn108_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C20D0Ev,_ZThn52_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C20D1Ev,_ZThn52_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C20D0Ev,_ZThn96_N9S20759C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C20D0Ev,_ZThn24_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C20D1Ev,_ZThn96_N9S20759C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C20D1Ev,_ZThn24_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C20 = {  "S20759C20", // class name
  bases_S20759C20, 9,
  &(vtc_S20759C20[0]), // expected_vtbl_contents
  &(vtt_S20759C20[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI9S20759C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20759C20),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C20),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names110,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C19  : S20760C9 , S20759C20 {
  virtual  ~S20759C19(); // _ZN9S20759C19D2Ev
  S20759C19(); // tgen
};
//SIG(-1 S20759C19) C1{ BC2{ vd m FL} BC3{ BC4{ m Fp} BC5{ VBC6{ vd m Fi[6]} VBC7{ BC2 VBC6 BC8{ VBC2 vd} FC6} FD} BC9{ vd m} VBC8 vd} vd}


 S20759C19 ::~S20759C19(){ note_dtor("S20759C19", this);}
S20759C19 ::S20759C19(){ note_ctor("S20759C19", this);} // tgen

static void Test_S20759C19()
{
  extern Class_Descriptor cd_S20759C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,32)];
    init_test(&cd_S20759C19, buf);
    S20759C19 *dp, &lv = *(dp=new (buf) S20759C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S20759C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20759C19)");
    /*is_ambiguous_... S20759C19::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S20759C19");
    check_base_class_offset(lv, (S4161C4_nt*)(S20759C20*), ABISELECT(48,28), "S20759C19");
    check_base_class_offset(lv, (S20760C13*)(S20759C16*)(S20759C20*), ABISELECT(64,36), "S20759C19");
    check_base_class_offset(lv, (S20760C13*)(S20759C17*), ABISELECT(64,36), "S20759C19");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*), ABISELECT(96,64), "S20759C19");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*), ABISELECT(152,108), "S20759C19");
    /*is_ambiguous_... S20759C19::S20759C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C18*), ABISELECT(152,108), "S20759C19");
    check_base_class_offset(lv, (S20759C18*)(S20759C17*), ABISELECT(112,76), "S20759C19");
    check_base_class_offset(lv, (S20759C17*)(S20759C16*)(S20759C20*), ABISELECT(96,64), "S20759C19");
    check_base_class_offset(lv, (S20759C16*)(S20759C20*), ABISELECT(16,12), "S20759C19");
    check_base_class_offset(lv, (S20760C22_nt*)(S20759C20*), ABISELECT(56,32), "S20759C19");
    /*is_ambiguous_... S20759C20::S20759C18 */ AMB_check_base_class_offset(lv, (S20759C18*)(S20759C20*), ABISELECT(168,120), "S20759C19");
    check_base_class_offset(lv, (S20759C20*), ABISELECT(16,12), "S20759C19");
    test_class_info(&lv, &cd_S20759C19);
    dp->~S20759C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C19(Test_S20759C19, "S20759C19", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN9S20759C19C1Ev();
extern void _ZN9S20759C19D2Ev();
Name_Map name_map_S20759C19[] = {
  NSPAIR(_ZN9S20759C19C1Ev),
  NSPAIR(_ZN9S20759C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C20;
extern VTBL_ENTRY _ZTI9S20759C20[];
extern  VTBL_ENTRY _ZTV9S20759C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C20[];
static Base_Class bases_S20759C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(64,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(152,108), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20759C18,    ABISELECT(112,76), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(96,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20759C16,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20759C18,    ABISELECT(168,120), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20759C20,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20759C19[];
extern void _ZN9S20759C19D1Ev();
extern void _ZN9S20759C19D0Ev();
extern void ABISELECT(_ZThn16_N9S20759C19D1Ev,_ZThn12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C19D0Ev,_ZThn12_N9S20759C19D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C19D1Ev,_ZThn32_N9S20759C19D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C19D0Ev,_ZThn32_N9S20759C19D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZThn64_N9S20759C19D1Ev,_ZThn36_N9S20759C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev)();
extern void ABISELECT(_ZThn64_N9S20759C19D0Ev,_ZThn36_N9S20759C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C19D1Ev,_ZTv0_n20_N9S20759C19D1Ev)();
extern void ABISELECT(_ZThn96_N9S20759C19D1Ev,_ZThn64_N9S20759C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C19D0Ev,_ZTv0_n20_N9S20759C19D0Ev)();
extern void ABISELECT(_ZThn96_N9S20759C19D0Ev,_ZThn64_N9S20759C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20759C19D1Ev,_ZTvn12_n20_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C19D0Ev,_ZTvn12_n20_N9S20759C19D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZThn152_N9S20759C19D1Ev,_ZThn108_N9S20759C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev)();
extern void ABISELECT(_ZThn152_N9S20759C19D0Ev,_ZThn108_N9S20759C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C19D1Ev,_ZTv0_n16_N9S20759C19D1Ev)();
extern void ABISELECT(_ZThn168_N9S20759C19D1Ev,_ZThn120_N9S20759C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C19D0Ev,_ZTv0_n16_N9S20759C19D0Ev)();
extern void ABISELECT(_ZThn168_N9S20759C19D0Ev,_ZThn120_N9S20759C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C19[] = {
  ABISELECT(168,120),
  ABISELECT(152,108),
  ABISELECT(96,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&_ZN9S20759C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C19D0Ev,
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C19D1Ev,_ZThn12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C19D0Ev,_ZThn12_N9S20759C19D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20759C19D1Ev,_ZThn32_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20759C19D0Ev,_ZThn32_N9S20759C19D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev),
  ABISELECT(-96,-64),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C19D1Ev,_ZTv0_n20_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C19D0Ev,_ZTv0_n20_N9S20759C19D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C19D1Ev,_ZTvn12_n20_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C19D0Ev,_ZTvn12_n20_N9S20759C19D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev),
  ABISELECT(-168,-120),
  ABISELECT(-16,-12),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C19D1Ev,_ZTv0_n16_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C19D0Ev,_ZTv0_n16_N9S20759C19D0Ev),
};
extern VTBL_ENTRY _ZTV9S20759C19[];
extern void _ZN9S20759C20D1Ev();
extern void _ZN9S20759C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C20__9S20759C19[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&_ZN9S20759C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C20D0Ev,
};
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C169S20759C20__9S20759C19[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S20759C16D1Ev,_ZThn24_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S20759C16D0Ev,_ZThn24_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C169S20759C20__9S20759C19[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C16D1Ev,_ZThn52_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C16D0Ev,_ZThn52_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C169S20759C20__9S20759C19[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C169S20759C20__9S20759C19[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn136_N9S20759C16D1Ev,_ZThn96_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn136_N9S20759C16D0Ev,_ZThn96_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C169S20759C20__9S20759C19[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn48_N9S20759C20D1Ev,_ZThn24_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn48_N9S20759C20D0Ev,_ZThn24_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C20__9S20759C19[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C20D1Ev,_ZThn52_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C20D0Ev,_ZThn52_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C20__9S20759C19[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C20__9S20759C19[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn136_N9S20759C20D1Ev,_ZThn96_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn136_N9S20759C20D0Ev,_ZThn96_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C20__9S20759C19[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn152_N9S20759C20D1Ev,_ZThn108_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn152_N9S20759C20D0Ev,_ZThn108_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C20__9S20759C19[] = {
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev),
};
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C19[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C19[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20759C18D1Ev,_ZThn32_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20759C18D0Ev,_ZThn32_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C19[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C17__9S20759C19[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17__9S20759C19[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C17__9S20759C19[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C19[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C18__A1__9S20759C19[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
static  VTT_ENTRY vtt_S20759C19[] = {
  {&(_ZTV9S20759C19[6]),  6,48},
  {&(_tg__ZTV9S20759C20__9S20759C19[6]),  6,8},
  {&(_tg__ZTV9S20759C169S20759C20__9S20759C19[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C169S20759C20__9S20759C19[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C169S20759C20__9S20759C19[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C169S20759C20__9S20759C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C169S20759C20__9S20759C19[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C20__9S20759C19[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C20__9S20759C19[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C20__9S20759C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C20__9S20759C19[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C20__9S20759C19[4]),  4,6},
  {&(_ZTV9S20759C19[14]),  14,48},
  {&(_ZTV9S20759C19[23]),  23,48},
  {&(_ZTV9S20759C19[30]),  30,48},
  {&(_ZTV9S20759C19[35]),  35,48},
  {&(_ZTV9S20759C19[40]),  40,48},
  {&(_ZTV9S20759C19[46]),  46,48},
  {&(_tg__ZTV9S20759C17__9S20759C19[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C19[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C17__9S20759C19[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C17__9S20759C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C17__9S20759C19[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C18__A1__9S20759C19[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20759C19[];
extern  VTBL_ENTRY _ZTV9S20759C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C19[];
static VTBL_ENTRY alt_thunk_names111[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C18D0Ev,_ZThn32_N9S20759C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C18D1Ev,_ZThn32_N9S20759C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C20D0Ev,_ZThn108_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C20D1Ev,_ZThn108_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C20D0Ev,_ZThn52_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C20D1Ev,_ZThn52_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C20D0Ev,_ZThn96_N9S20759C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C20D0Ev,_ZThn24_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C20D1Ev,_ZThn96_N9S20759C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C20D1Ev,_ZThn24_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C16D0Ev,_ZThn52_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C16D1Ev,_ZThn52_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C16D0Ev,_ZThn96_N9S20759C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C16D0Ev,_ZThn24_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C16D1Ev,_ZThn96_N9S20759C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C16D1Ev,_ZThn24_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C19D0Ev,_ZTv0_n16_N9S20759C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C19D0Ev,_ZThn120_N9S20759C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C19D1Ev,_ZTv0_n16_N9S20759C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C19D1Ev,_ZThn120_N9S20759C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C19D0Ev,_ZTv0_n20_N9S20759C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20759C19D0Ev,_ZThn64_N9S20759C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C19D1Ev,_ZTv0_n20_N9S20759C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20759C19D1Ev,_ZThn64_N9S20759C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C19D0Ev,_ZThn108_N9S20759C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C19D0Ev,_ZThn36_N9S20759C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C19D1Ev,_ZThn108_N9S20759C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C19D1Ev,_ZThn36_N9S20759C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C19 = {  "S20759C19", // class name
  bases_S20759C19, 11,
  &(vtc_S20759C19[0]), // expected_vtbl_contents
  &(vtt_S20759C19[0]), // expected_vtt_contents
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI9S20759C19),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20759C19),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C19),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names111,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C15  : virtual S20759C16 , virtual S20759C19 , S4228C27 , virtual S20759C5_nt {
  virtual  ~S20759C15(); // _ZN9S20759C15D2Ev
  virtual void  v1(); // _ZN9S20759C152v1Ev
  S20759C15(); // tgen
};
//SIG(-1 S20759C15) C1{ VBC2{ VBC3{ vd m Fi[6]} VBC4{ BC5{ vd m FL} VBC3 BC6{ VBC5 vd} FC3} FD} VBC7{ BC5 BC8{ BC9{ m Fp} BC2 BC10{ vd m} VBC6 vd} vd} BC11{ m} VBC12{ vd m Fl} vd v1}


 S20759C15 ::~S20759C15(){ note_dtor("S20759C15", this);}
void  S20759C15 ::v1(){vfunc_called(this, "_ZN9S20759C152v1Ev");}
S20759C15 ::S20759C15(){ note_ctor("S20759C15", this);} // tgen

static void Test_S20759C15()
{
  extern Class_Descriptor cd_S20759C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,38)];
    init_test(&cd_S20759C15, buf);
    S20759C15 *dp, &lv = *(dp=new (buf) S20759C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,148), "sizeof(S20759C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20759C15)");
    /*is_ambiguous_... S20759C15::S20759C16 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20759C16*), ABISELECT(48,20), "S20759C15");
    check_base_class_offset(lv, (S20760C13*)(S20759C17*), ABISELECT(48,20), "S20759C15");
    check_base_class_offset(lv, (S20760C13*)(S20759C16*)(S20759C20*)(S20759C19*), ABISELECT(48,20), "S20759C15");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*), ABISELECT(80,48), "S20759C15");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*), ABISELECT(136,92), "S20759C15");
    /*is_ambiguous_... S20759C15::S20759C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C18*), ABISELECT(136,92), "S20759C15");
    check_base_class_offset(lv, (S20759C18*)(S20759C17*), ABISELECT(96,60), "S20759C15");
    /*is_ambiguous_... S20759C15::S20759C16 */ AMB_check_base_class_offset(lv, (S20759C17*)(S20759C16*), ABISELECT(80,48), "S20759C15");
    check_base_class_offset(lv, (S20759C17*)(S20759C16*)(S20759C20*)(S20759C19*), ABISELECT(80,48), "S20759C15");
    /*is_ambiguous_... S20759C15::S20759C16 */ AMB_check_base_class_offset(lv, (S20759C16*), ABISELECT(16,4), "S20759C15");
    /*is_ambiguous_... S20759C19::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C19*), ABISELECT(160,104), "S20759C15");
    check_base_class_offset(lv, (S4161C4_nt*)(S20759C20*)(S20759C19*), ABISELECT(208,132), "S20759C15");
    check_base_class_offset(lv, (S20759C16*)(S20759C20*)(S20759C19*), ABISELECT(176,116), "S20759C15");
    check_base_class_offset(lv, (S20760C22_nt*)(S20759C20*)(S20759C19*), ABISELECT(216,136), "S20759C15");
    /*is_ambiguous_... S20759C20::S20759C18 */ AMB_check_base_class_offset(lv, (S20759C18*)(S20759C20*)(S20759C19*), 0, "S20759C15");
    check_base_class_offset(lv, (S20759C20*)(S20759C19*), ABISELECT(176,116), "S20759C15");
    check_base_class_offset(lv, (S20759C19*), ABISELECT(160,104), "S20759C15");
    check_base_class_offset(lv, (S4228C27*), 0, "S20759C15");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(224,140), "S20759C15");
    test_class_info(&lv, &cd_S20759C15);
    dp->~S20759C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C15(Test_S20759C15, "S20759C15", ABISELECT(240,148));

#else // __cplusplus

extern void _ZN9S20759C15C1Ev();
extern void _ZN9S20759C15D2Ev();
Name_Map name_map_S20759C15[] = {
  NSPAIR(_ZN9S20759C15C1Ev),
  NSPAIR(_ZN9S20759C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C20;
extern VTBL_ENTRY _ZTI9S20759C20[];
extern  VTBL_ENTRY _ZTV9S20759C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C20[];
extern Class_Descriptor cd_S20759C19;
extern VTBL_ENTRY _ZTI9S20759C19[];
extern  VTBL_ENTRY _ZTV9S20759C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C19[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S20759C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(48,20), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,92), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20759C18,    ABISELECT(96,60), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(80,48), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20759C16,    ABISELECT(16,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20759C16,    ABISELECT(176,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(216,136), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20759C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20759C20,    ABISELECT(176,116), //bcp->offset
    52, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20759C19,    ABISELECT(160,104), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20759C5_nt,    ABISELECT(224,140), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20759C15[];
extern void ABISELECT(_ZTv0_n32_N9S20759C15D1Ev,_ZTv0_n16_N9S20759C15D1Ev)();
extern void _ZN9S20759C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C15D0Ev,_ZTv0_n16_N9S20759C15D0Ev)();
extern void _ZN9S20759C15D0Ev() __attribute__((weak));
extern void _ZN9S20759C152v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20759C15D1Ev,_ZTv0_n24_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C15D1Ev,_ZThn4_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20759C15D0Ev,_ZTv0_n24_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S20759C15D0Ev,_ZThn4_N9S20759C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn48_N9S20759C15D1Ev,_ZThn20_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn48_N9S20759C15D0Ev,_ZThn20_N9S20759C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C15D1Ev,_ZTv0_n20_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C15D1Ev,_ZThn48_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C15D0Ev,_ZTv0_n20_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C15D0Ev,_ZThn48_N9S20759C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20759C15D1Ev,_ZTvn12_n20_N9S20759C15D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C15D0Ev,_ZTvn12_n20_N9S20759C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn136_N9S20759C15D1Ev,_ZThn92_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn136_N9S20759C15D0Ev,_ZThn92_N9S20759C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20759C15D1Ev,_ZTv0_n28_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn160_N9S20759C15D1Ev,_ZThn104_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20759C15D0Ev,_ZTv0_n28_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn160_N9S20759C15D0Ev,_ZThn104_N9S20759C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N9S20759C15D1Ev,_ZTvn12_n28_N9S20759C15D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S20759C15D0Ev,_ZTvn12_n28_N9S20759C15D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S20759C15D1Ev,_ZTvn32_n28_N9S20759C15D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S20759C15D0Ev,_ZTvn32_n28_N9S20759C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn224_N9S20759C15D1Ev,_ZThn140_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn224_N9S20759C15D0Ev,_ZThn140_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C15[] = {
  ABISELECT(224,140),
  0,
  ABISELECT(160,104),
  ABISELECT(80,48),
  ABISELECT(48,20),
  ABISELECT(16,4),
  0,
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C15D1Ev,_ZTv0_n16_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C15D0Ev,_ZTv0_n16_N9S20759C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20759C152v1Ev,
  ABISELECT(-16,-4),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C15D1Ev,_ZTv0_n24_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C15D0Ev,_ZTv0_n24_N9S20759C15D0Ev),
  ABISELECT(-48,-20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C15D1Ev,_ZTv0_n20_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C15D0Ev,_ZTv0_n20_N9S20759C15D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C15D1Ev,_ZTvn12_n20_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C15D0Ev,_ZTvn12_n20_N9S20759C15D0Ev),
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev),
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20759C15D1Ev,_ZTv0_n28_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20759C15D0Ev,_ZTv0_n28_N9S20759C15D0Ev),
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20759C15D1Ev,_ZTvn12_n28_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20759C15D0Ev,_ZTvn12_n28_N9S20759C15D0Ev),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20759C15D1Ev,_ZTvn32_n28_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20759C15D0Ev,_ZTvn32_n28_N9S20759C15D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S20759C15[];
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C16__9S20759C15[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20759C16D1Ev,_ZThn16_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S20759C16D0Ev,_ZThn16_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C16__9S20759C15[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C16__9S20759C15[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C16__9S20759C15[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn120_N9S20759C16D1Ev,_ZThn88_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn120_N9S20759C16D0Ev,_ZThn88_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C16__9S20759C15[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C15[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C15[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20759C18D1Ev,_ZThn32_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20759C18D0Ev,_ZThn32_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C15[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C17__9S20759C15[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17__9S20759C15[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C17__9S20759C15[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void _ZN9S20759C19D1Ev();
extern void _ZN9S20759C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C19__9S20759C15[] = {
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&_ZN9S20759C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C19D0Ev,
};
extern void _ZN9S20759C20D1Ev();
extern void _ZN9S20759C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C209S20759C19__9S20759C15[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&_ZN9S20759C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C20D0Ev,
};
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C169S20759C209S20759C19__A1__9S20759C15[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C169S20759C209S20759C19__A1__9S20759C15[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C169S20759C209S20759C19__A1__9S20759C15[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C19__A1__9S20759C15[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C19__A1__9S20759C15[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C209S20759C19__9S20759C15[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C209S20759C19__9S20759C15[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C209S20759C19__9S20759C15[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C209S20759C19__9S20759C15[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C209S20759C19__9S20759C15[] = {
  ABISELECT(176,116),
  ABISELECT(136,92),
  ABISELECT(176,116),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C19D1Ev,_ZThn12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C19D0Ev,_ZThn12_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C20__9S20759C19__9S20759C15[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C19D1Ev,_ZThn12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C19D0Ev,_ZThn12_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C19__9S20759C15[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C19D1Ev,_ZTv0_n20_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20759C19D0Ev,_ZTv0_n20_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C19__9S20759C15[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C19D1Ev,_ZTv0_n20_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C19D0Ev,_ZTv0_n20_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C19D1Ev,_ZTvn12_n20_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C19D0Ev,_ZTvn12_n20_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C19__9S20759C15[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C19D1Ev,_ZTvn12_n20_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C19D0Ev,_ZTvn12_n20_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__9S20759C19__9S20759C15[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C19D1Ev,_ZTv0_n16_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20759C19D0Ev,_ZTv0_n16_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C19__9S20759C15[] = {
  ABISELECT(160,104),
  ABISELECT(136,92),
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C19D1Ev,_ZTv0_n16_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C19D0Ev,_ZTv0_n16_N9S20759C19D0Ev),
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C15[] = {
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn136_N9S20759C18D1Ev,_ZThn92_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn136_N9S20759C18D0Ev,_ZThn92_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C18__A1__9S20759C15[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
static  VTT_ENTRY vtt_S20759C15[] = {
  {&(_ZTV9S20759C15[10]),  10,69},
  {&(_ZTV9S20759C15[19]),  19,69},
  {&(_ZTV9S20759C15[24]),  24,69},
  {&(_ZTV9S20759C15[31]),  31,69},
  {&(_ZTV9S20759C15[36]),  36,69},
  {&(_ZTV9S20759C15[41]),  41,69},
  {&(_ZTV9S20759C15[50]),  50,69},
  {&(_ZTV9S20759C15[58]),  58,69},
  {&(_ZTV9S20759C15[62]),  62,69},
  {&(_ZTV9S20759C15[10]),  10,69},
  {&(_ZTV9S20759C15[67]),  67,69},
  {&(_tg__ZTV9S20759C16__9S20759C15[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C16__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C16__9S20759C15[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C16__9S20759C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C16__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C15[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C17__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C17__9S20759C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C17__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20759C19__9S20759C15[6]),  6,8},
  {&(_tg__ZTV9S20759C209S20759C19__9S20759C15[6]),  6,8},
  {&(_tg__ZTV9S20759C169S20759C209S20759C19__A1__9S20759C15[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C169S20759C209S20759C19__A1__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C169S20759C209S20759C19__A1__9S20759C15[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C19__A1__9S20759C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C19__A1__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C209S20759C19__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C209S20759C19__9S20759C15[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C209S20759C19__9S20759C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C209S20759C19__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C209S20759C19__9S20759C15[4]),  4,6},
  {&(_tg__ZTV9S20759C20__9S20759C19__9S20759C15[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20759C19__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C19__9S20759C15[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C19__9S20759C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__9S20759C19__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C19__9S20759C15[4]),  4,6},
  {&(_tg__ZTV9S20759C18__A1__9S20759C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C18__A1__9S20759C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20759C15[];
extern  VTBL_ENTRY _ZTV9S20759C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C15[];
static VTBL_ENTRY alt_thunk_names112[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C18D0Ev,_ZThn92_N9S20759C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C18D0Ev,_ZThn32_N9S20759C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C18D1Ev,_ZThn92_N9S20759C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C18D1Ev,_ZThn32_N9S20759C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20759C16D0Ev,_ZThn88_N9S20759C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20759C16D0Ev,_ZThn16_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20759C16D1Ev,_ZThn88_N9S20759C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20759C16D1Ev,_ZThn16_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20759C15D0Ev,_ZTv0_n28_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C15D0Ev,_ZThn104_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20759C15D1Ev,_ZTv0_n28_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C15D1Ev,_ZThn104_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C15D0Ev,_ZTv0_n20_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C15D0Ev,_ZThn48_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C15D1Ev,_ZTv0_n20_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C15D1Ev,_ZThn48_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20759C15D0Ev,_ZThn140_N9S20759C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C15D0Ev,_ZThn92_N9S20759C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C15D0Ev,_ZThn20_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20759C15D1Ev,_ZThn140_N9S20759C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C15D1Ev,_ZThn92_N9S20759C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C15D1Ev,_ZThn20_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C15D0Ev,_ZTv0_n24_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20759C15D0Ev,_ZThn4_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C15D1Ev,_ZTv0_n24_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20759C15D1Ev,_ZThn4_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C15D0Ev,_ZTv0_n16_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)_ZN9S20759C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C15D1Ev,_ZTv0_n16_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)_ZN9S20759C15D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C15 = {  "S20759C15", // class name
  bases_S20759C15, 15,
  &(vtc_S20759C15[0]), // expected_vtbl_contents
  &(vtt_S20759C15[0]), // expected_vtt_contents
  ABISELECT(240,148), // object size
  NSPAIRA(_ZTI9S20759C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20759C15),69, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C15),42, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names112,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C6  : virtual S20759C4 , S20759C7 , S20759C15 , S20760C9 {
  virtual  ~S20759C6(); // _ZN8S20759C6D2Ev
  S20759C6(); // tgen
};
//SIG(-1 S20759C6) C1{ VBC2{ VBC3{ vd m Fl} vd Fc[2]} BC4{ VBC5{ VBC6{ vd m FL} vd FC7{ m}} VBC8{ m} BC9{ BC10{ vd m Fi[6]} VBC11{ m} VBC7 Fs} vd Fi} BC12{ VBC13{ VBC10 VBC14{ BC6 VBC10 BC15{ VBC6 vd} FC10} FD} VBC16{ BC6 BC17{ BC18{ m Fp} BC13 BC19{ vd m} VBC15 vd} vd} BC7 VBC3 vd v1} BC6 vd}


 S20759C6 ::~S20759C6(){ note_dtor("S20759C6", this);}
S20759C6 ::S20759C6(){ note_ctor("S20759C6", this);} // tgen

static void Test_S20759C6()
{
  extern Class_Descriptor cd_S20759C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,54)];
    init_test(&cd_S20759C6, buf);
    S20759C6 *dp, &lv = *(dp=new (buf) S20759C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,212), "sizeof(S20759C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20759C6)");
    check_base_class_offset(lv, (S20759C5_nt*)(S20759C4*), ABISELECT(80,60), "S20759C6");
    check_base_class_offset(lv, (S20759C5_nt*)(S20759C15*), ABISELECT(80,60), "S20759C6");
    check_base_class_offset(lv, (S20759C4*), ABISELECT(64,52), "S20759C6");
    check_base_class_offset(lv, (S20760C9*)(S20759C8*), ABISELECT(112,76), "S20759C6");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*), ABISELECT(112,76), "S20759C6");
    /*is_ambiguous_... S20759C6::S20759C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C18*), ABISELECT(112,76), "S20759C6");
    check_base_class_offset(lv, (S20759C8*)(S20759C7*), ABISELECT(96,68), "S20759C6");
    check_base_class_offset(lv, (S4228C23*)(S20759C7*), 0, "S20759C6");
    check_base_class_offset(lv, (S20760C13*)(S20759C12*)(S20759C7*), 0, "S20759C6");
    check_base_class_offset(lv, (S4228C20*)(S20759C12*)(S20759C7*), 0, "S20759C6");
    check_base_class_offset(lv, (S4228C27*)(S20759C12*)(S20759C7*), 0, "S20759C6");
    check_base_class_offset(lv, (S20759C12*)(S20759C7*), 0, "S20759C6");
    check_base_class_offset(lv, (S20759C7*), 0, "S20759C6");
    /*is_ambiguous_... S20759C6::S20759C16 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20759C16*), ABISELECT(160,104), "S20759C6");
    check_base_class_offset(lv, (S20760C13*)(S20759C17*), ABISELECT(160,104), "S20759C6");
    check_base_class_offset(lv, (S20760C13*)(S20759C16*)(S20759C20*)(S20759C19*), ABISELECT(160,104), "S20759C6");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*), ABISELECT(192,132), "S20759C6");
    check_base_class_offset(lv, (S20759C18*)(S20759C17*), ABISELECT(208,144), "S20759C6");
    /*is_ambiguous_... S20759C6::S20759C16 */ AMB_check_base_class_offset(lv, (S20759C17*)(S20759C16*), ABISELECT(192,132), "S20759C6");
    check_base_class_offset(lv, (S20759C17*)(S20759C16*)(S20759C20*)(S20759C19*), ABISELECT(192,132), "S20759C6");
    /*is_ambiguous_... S20759C15::S20759C16 */ AMB_check_base_class_offset(lv, (S20759C16*)(S20759C15*), ABISELECT(128,88), "S20759C6");
    /*is_ambiguous_... S20759C19::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C19*), ABISELECT(256,176), "S20759C6");
    check_base_class_offset(lv, (S4161C4_nt*)(S20759C20*)(S20759C19*), ABISELECT(304,204), "S20759C6");
    check_base_class_offset(lv, (S20759C16*)(S20759C20*)(S20759C19*), ABISELECT(272,188), "S20759C6");
    check_base_class_offset(lv, (S20760C22_nt*)(S20759C20*)(S20759C19*), ABISELECT(312,208), "S20759C6");
    /*is_ambiguous_... S20759C20::S20759C18 */ AMB_check_base_class_offset(lv, (S20759C18*)(S20759C20*)(S20759C19*), ABISELECT(40,36), "S20759C6");
    check_base_class_offset(lv, (S20759C20*)(S20759C19*), ABISELECT(272,188), "S20759C6");
    check_base_class_offset(lv, (S20759C19*)(S20759C15*), ABISELECT(256,176), "S20759C6");
    check_base_class_offset(lv, (S4228C27*)(S20759C15*), ABISELECT(40,36), "S20759C6");
    check_base_class_offset(lv, (S20759C15*), ABISELECT(40,36), "S20759C6");
    /*is_ambiguous_... S20759C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(48,40), "S20759C6");
    test_class_info(&lv, &cd_S20759C6);
    dp->~S20759C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C6(Test_S20759C6, "S20759C6", ABISELECT(320,212));

#else // __cplusplus

extern void _ZN8S20759C6C1Ev();
extern void _ZN8S20759C6D2Ev();
Name_Map name_map_S20759C6[] = {
  NSPAIR(_ZN8S20759C6C1Ev),
  NSPAIR(_ZN8S20759C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S20759C4;
extern VTBL_ENTRY _ZTI8S20759C4[];
extern  VTBL_ENTRY _ZTV8S20759C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C8;
extern VTBL_ENTRY _ZTI8S20759C8[];
extern  VTBL_ENTRY _ZTV8S20759C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C8[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C20;
extern VTBL_ENTRY _ZTI8S4228C20[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20759C12;
extern VTBL_ENTRY _ZTI9S20759C12[];
extern  VTBL_ENTRY _ZTV9S20759C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C12[];
extern Class_Descriptor cd_S20759C7;
extern VTBL_ENTRY _ZTI8S20759C7[];
extern  VTBL_ENTRY _ZTV8S20759C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C7[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C20;
extern VTBL_ENTRY _ZTI9S20759C20[];
extern  VTBL_ENTRY _ZTV9S20759C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C20[];
extern Class_Descriptor cd_S20759C19;
extern VTBL_ENTRY _ZTI9S20759C19[];
extern  VTBL_ENTRY _ZTV9S20759C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C19[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20759C15;
extern VTBL_ENTRY _ZTI9S20759C15[];
extern  VTBL_ENTRY _ZTV9S20759C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C15[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S20759C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20759C5_nt,    ABISELECT(80,60), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20759C4,    ABISELECT(64,52), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(112,76), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20759C8,    ABISELECT(96,68), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20759C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20759C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(160,104), //bcp->offset
    63, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(192,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20759C18,    ABISELECT(208,144), //bcp->offset
    75, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(192,132), //bcp->offset
    68, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20759C16,    ABISELECT(128,88), //bcp->offset
    55, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(256,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20759C16,    ABISELECT(272,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(312,208), //bcp->offset
    97, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20759C18,    ABISELECT(40,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S20759C20,    ABISELECT(272,188), //bcp->offset
    89, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20759C19,    ABISELECT(256,176), //bcp->offset
    80, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(40,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20759C15,    ABISELECT(40,36), //bcp->offset
    16, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(48,40), //bcp->offset
    29, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20759C6[];
extern void _ZN8S20759C6D1Ev();
extern void _ZN8S20759C6D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S20759C6D1Ev,_ZThn36_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S20759C6D0Ev,_ZThn36_N8S20759C6D0Ev)() __attribute__((weak));
extern void _ZN9S20759C152v1Ev();
extern void ABISELECT(_ZThn48_N8S20759C6D1Ev,_ZThn40_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn48_N8S20759C6D0Ev,_ZThn40_N8S20759C6D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S20759C6D1Ev,_ZThn52_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S20759C6D0Ev,_ZThn52_N8S20759C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn80_N8S20759C6D1Ev,_ZThn60_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn80_N8S20759C6D0Ev,_ZThn60_N8S20759C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S20759C6D1Ev,_ZThn68_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S20759C6D0Ev,_ZThn68_N8S20759C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S20759C6D1Ev,_ZThn76_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S20759C6D0Ev,_ZThn76_N8S20759C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20759C6D1Ev,_ZTv0_n24_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S20759C6D1Ev,_ZThn88_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20759C6D0Ev,_ZTv0_n24_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S20759C6D0Ev,_ZThn88_N8S20759C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn160_N8S20759C6D1Ev,_ZThn104_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn160_N8S20759C6D0Ev,_ZThn104_N8S20759C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20759C6D1Ev,_ZTv0_n20_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S20759C6D1Ev,_ZThn132_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20759C6D0Ev,_ZTv0_n20_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S20759C6D0Ev,_ZThn132_N8S20759C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S20759C6D1Ev,_ZTvn12_n20_N8S20759C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S20759C6D0Ev,_ZTvn12_n20_N8S20759C6D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S20759C6D1Ev,_ZTv0_n28_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn256_N8S20759C6D1Ev,_ZThn176_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20759C6D0Ev,_ZTv0_n28_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn256_N8S20759C6D0Ev,_ZThn176_N8S20759C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S20759C6D1Ev,_ZTvn12_n28_N8S20759C6D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S20759C6D0Ev,_ZTvn12_n28_N8S20759C6D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20759C6D1Ev,_ZTvn32_n28_N8S20759C6D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20759C6D0Ev,_ZTvn32_n28_N8S20759C6D0Ev)();
static  VTBL_ENTRY vtc_S20759C6[] = {
  ABISELECT(40,36),
  ABISELECT(256,176),
  ABISELECT(192,132),
  ABISELECT(160,104),
  ABISELECT(128,88),
  ABISELECT(80,60),
  ABISELECT(64,52),
  0,
  ABISELECT(112,76),
  ABISELECT(96,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&_ZN8S20759C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C6D0Ev,
  ABISELECT(40,24),
  0,
  ABISELECT(216,140),
  ABISELECT(152,96),
  ABISELECT(120,68),
  ABISELECT(88,52),
  ABISELECT(-40,-36),
  ABISELECT(72,40),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20759C152v1Ev,
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20759C6D1Ev,_ZThn40_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20759C6D0Ev,_ZThn40_N8S20759C6D0Ev),
  ABISELECT(-64,-52),
  ABISELECT(16,8),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev),
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(16,8),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev),
  ABISELECT(-128,-88),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20759C6D1Ev,_ZTv0_n24_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20759C6D0Ev,_ZTv0_n24_N8S20759C6D0Ev),
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20759C6D1Ev,_ZTv0_n20_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20759C6D0Ev,_ZTv0_n20_N8S20759C6D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20759C6D1Ev,_ZTvn12_n20_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20759C6D0Ev,_ZTvn12_n20_N8S20759C6D0Ev),
  ABISELECT(-256,-176),
  ABISELECT(-216,-140),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-256,-176),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20759C6D1Ev,_ZTv0_n28_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20759C6D0Ev,_ZTv0_n28_N8S20759C6D0Ev),
  ABISELECT(-232,-152),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-272,-188),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20759C6D1Ev,_ZTvn12_n28_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20759C6D0Ev,_ZTvn12_n28_N8S20759C6D0Ev),
  ABISELECT(-312,-208),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20759C6D1Ev,_ZTvn32_n28_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20759C6D0Ev,_ZTvn32_n28_N8S20759C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S20759C6[];
extern void _ZN8S20759C7D1Ev();
extern void _ZN8S20759C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20759C7__8S20759C6[] = {
  0,
  ABISELECT(112,76),
  ABISELECT(96,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C7[0]),
  (VTBL_ENTRY)&_ZN8S20759C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C7D0Ev,
};
extern void _ZN9S20759C12D1Ev();
extern void _ZN9S20759C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C128S20759C7__8S20759C6[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C12[0]),
  (VTBL_ENTRY)&_ZN9S20759C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20759C7D1Ev,_ZTv0_n16_N8S20759C7D1Ev)();
extern void ABISELECT(_ZThn96_N8S20759C7D1Ev,_ZThn68_N8S20759C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C7D0Ev,_ZTv0_n16_N8S20759C7D0Ev)();
extern void ABISELECT(_ZThn96_N8S20759C7D0Ev,_ZThn68_N8S20759C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20759C8__8S20759C7__8S20759C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(16,8),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S20759C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C7D1Ev,_ZTv0_n16_N8S20759C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C7D0Ev,_ZTv0_n16_N8S20759C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20759C7D1Ev,_ZTv0_n12_N8S20759C7D1Ev)();
extern void ABISELECT(_ZThn112_N8S20759C7D1Ev,_ZThn76_N8S20759C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C7D0Ev,_ZTv0_n12_N8S20759C7D0Ev)();
extern void ABISELECT(_ZThn112_N8S20759C7D0Ev,_ZThn76_N8S20759C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20759C7__8S20759C6[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S20759C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C7D1Ev,_ZTv0_n12_N8S20759C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C7D0Ev,_ZTv0_n12_N8S20759C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C15D1Ev,_ZTv0_n16_N9S20759C15D1Ev)();
extern void _ZN9S20759C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C15D0Ev,_ZTv0_n16_N9S20759C15D0Ev)();
extern void _ZN9S20759C15D0Ev() __attribute__((weak));
extern void _ZN9S20759C152v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C15__8S20759C6[] = {
  ABISELECT(40,24),
  0,
  ABISELECT(216,140),
  ABISELECT(152,96),
  ABISELECT(120,68),
  ABISELECT(88,52),
  0,
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C15D1Ev,_ZTv0_n16_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C15D0Ev,_ZTv0_n16_N9S20759C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20759C152v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S20759C15D1Ev,_ZTv0_n24_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S20759C15D1Ev,_ZThn52_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20759C15D0Ev,_ZTv0_n24_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S20759C15D0Ev,_ZThn52_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C16__9S20759C15__8S20759C6[] = {
  ABISELECT(-88,-52),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C15D1Ev,_ZTv0_n24_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C15D0Ev,_ZTv0_n24_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn120_N9S20759C15D1Ev,_ZThn68_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn120_N9S20759C15D0Ev,_ZThn68_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C15__8S20759C6[] = {
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C15D1Ev,_ZTv0_n20_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S20759C15D1Ev,_ZThn96_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C15D0Ev,_ZTv0_n20_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S20759C15D0Ev,_ZThn96_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C15__8S20759C6[] = {
  ABISELECT(-152,-96),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C15D1Ev,_ZTv0_n20_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C15D0Ev,_ZTv0_n20_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C15D1Ev,_ZTvn12_n20_N9S20759C15D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C15D0Ev,_ZTvn12_n20_N9S20759C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C15__8S20759C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C15D1Ev,_ZTvn12_n20_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C15D0Ev,_ZTvn12_n20_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn72_N9S20759C15D1Ev,_ZThn40_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn72_N9S20759C15D0Ev,_ZThn40_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C15__8S20759C6[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S20759C15D1Ev,_ZTv0_n28_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn216_N9S20759C15D1Ev,_ZThn140_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20759C15D0Ev,_ZTv0_n28_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn216_N9S20759C15D0Ev,_ZThn140_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C19__9S20759C15__8S20759C6[] = {
  ABISELECT(-216,-140),
  ABISELECT(-216,-140),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-216,-140),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20759C15D1Ev,_ZTv0_n28_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20759C15D0Ev,_ZTv0_n28_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N9S20759C15D1Ev,_ZTvn12_n28_N9S20759C15D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S20759C15D0Ev,_ZTvn12_n28_N9S20759C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C209S20759C19__9S20759C15__8S20759C6[] = {
  ABISELECT(-232,-152),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-232,-152),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20759C15D1Ev,_ZTvn12_n28_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20759C15D0Ev,_ZTvn12_n28_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N9S20759C15D1Ev,_ZTvn32_n28_N9S20759C15D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S20759C15D0Ev,_ZTvn32_n28_N9S20759C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S20759C209S20759C19__9S20759C15__8S20759C6[] = {
  ABISELECT(-272,-172),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20759C15D1Ev,_ZTvn32_n28_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20759C15D0Ev,_ZTvn32_n28_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S20759C15D1Ev,_ZThn24_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S20759C15D0Ev,_ZThn24_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S20759C15__8S20759C6[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev),
};
extern void _ZN8S20759C4D1Ev();
extern void _ZN8S20759C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20759C4__8S20759C6[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C4[0]),
  (VTBL_ENTRY)&_ZN8S20759C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20759C4D1Ev,_ZThn8_N8S20759C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20759C4D0Ev,_ZThn8_N8S20759C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S20759C4__8S20759C6[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20759C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev),
};
extern void _ZN8S20759C8D1Ev();
extern void _ZN8S20759C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20759C8__8S20759C6[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C8[0]),
  (VTBL_ENTRY)&_ZN8S20759C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20759C8D1Ev,_ZThn8_N8S20759C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20759C8D0Ev,_ZThn8_N8S20759C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20759C8__8S20759C6[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20759C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev),
};
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C16__8S20759C6[] = {
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20759C16D1Ev,_ZThn16_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S20759C16D0Ev,_ZThn16_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C16__8S20759C6[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C16__8S20759C6[] = {
  ABISELECT(-64,-44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C16__8S20759C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C16__8S20759C6[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C17__8S20759C6[] = {
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__8S20759C6[] = {
  ABISELECT(-96,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C17__8S20759C6[] = {
  ABISELECT(96,68),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C17__8S20759C6[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17__8S20759C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C17__8S20759C6[] = {
  ABISELECT(80,56),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void _ZN9S20759C19D1Ev();
extern void _ZN9S20759C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C19__8S20759C6[] = {
  ABISELECT(-216,-140),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&_ZN9S20759C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C19D0Ev,
};
extern void _ZN9S20759C20D1Ev();
extern void _ZN9S20759C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C209S20759C19__8S20759C6[] = {
  ABISELECT(-232,-152),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&_ZN9S20759C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C20D0Ev,
};
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C169S20759C209S20759C19__A1__8S20759C6[] = {
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C169S20759C209S20759C19__A1__8S20759C6[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C169S20759C209S20759C19__A1__8S20759C6[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C19__A1__8S20759C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C19__A1__8S20759C6[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C209S20759C19__8S20759C6[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C209S20759C19__8S20759C6[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C209S20759C19__8S20759C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C209S20759C19__8S20759C6[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C209S20759C19__8S20759C6[] = {
  ABISELECT(232,152),
  ABISELECT(72,40),
  ABISELECT(232,152),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C19D1Ev,_ZThn12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C19D0Ev,_ZThn12_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C20__9S20759C19__8S20759C6[] = {
  ABISELECT(-232,-152),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C19D1Ev,_ZThn12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C19D0Ev,_ZThn12_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C19__8S20759C6[] = {
  ABISELECT(96,72),
  ABISELECT(96,72),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C19D1Ev,_ZTv0_n20_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20759C19D0Ev,_ZTv0_n20_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C19__8S20759C6[] = {
  ABISELECT(64,44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C19D1Ev,_ZTv0_n20_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C19D0Ev,_ZTv0_n20_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C19D1Ev,_ZTvn12_n20_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C19D0Ev,_ZTvn12_n20_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C19__8S20759C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C19D1Ev,_ZTvn12_n20_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C19D0Ev,_ZTvn12_n20_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__9S20759C19__8S20759C6[] = {
  ABISELECT(144,100),
  ABISELECT(144,100),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C19D1Ev,_ZTv0_n16_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20759C19D0Ev,_ZTv0_n16_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C19__8S20759C6[] = {
  ABISELECT(216,140),
  ABISELECT(72,40),
  ABISELECT(216,140),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C19D1Ev,_ZTv0_n16_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C19D0Ev,_ZTv0_n16_N9S20759C19D0Ev),
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__8S20759C6[] = {
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn72_N9S20759C18D1Ev,_ZThn40_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn72_N9S20759C18D0Ev,_ZThn40_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C18__A1__8S20759C6[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
static  VTT_ENTRY vtt_S20759C6[] = {
  {&(_ZTV8S20759C6[14]),  14,101},
  {&(_tg__ZTV8S20759C7__8S20759C6[7]),  7,9},
  {&(_tg__ZTV9S20759C128S20759C7__8S20759C6[4]),  4,6},
  {&(_tg__ZTV8S20759C8__8S20759C7__8S20759C6[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S20759C7__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C15__8S20759C6[10]),  10,13},
  {&(_tg__ZTV9S20759C16__9S20759C15__8S20759C6[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20759C15__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C15__8S20759C6[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C15__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C15__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C19__9S20759C15__8S20759C6[7]),  7,9},
  {&(_tg__ZTV9S20759C209S20759C19__9S20759C15__8S20759C6[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S20759C209S20759C19__9S20759C15__8S20759C6[2]),  2,4},
  {&(_tg__ZTV9S20759C15__8S20759C6[10]),  10,13},
  {&(_tg__ZTV11S20759C5_nt__9S20759C15__8S20759C6[3]),  3,5},
  {&(_ZTV8S20759C6[37]),  37,101},
  {&(_ZTV8S20759C6[42]),  42,101},
  {&(_ZTV8S20759C6[48]),  48,101},
  {&(_ZTV8S20759C6[53]),  53,101},
  {&(_ZTV8S20759C6[26]),  26,101},
  {&(_ZTV8S20759C6[61]),  61,101},
  {&(_ZTV8S20759C6[66]),  66,101},
  {&(_ZTV8S20759C6[73]),  73,101},
  {&(_ZTV8S20759C6[78]),  78,101},
  {&(_ZTV8S20759C6[87]),  87,101},
  {&(_ZTV8S20759C6[95]),  95,101},
  {&(_ZTV8S20759C6[99]),  99,101},
  {&(_ZTV8S20759C6[26]),  26,101},
  {&(_tg__ZTV8S20759C4__8S20759C6[3]),  3,5},
  {&(_tg__ZTV11S20759C5_nt__8S20759C4__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20759C8__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S20759C8__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C16__8S20759C6[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C16__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C16__8S20759C6[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C16__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C16__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C17__8S20759C6[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C17__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C17__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C17__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C17__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C17__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C19__8S20759C6[6]),  6,8},
  {&(_tg__ZTV9S20759C209S20759C19__8S20759C6[6]),  6,8},
  {&(_tg__ZTV9S20759C169S20759C209S20759C19__A1__8S20759C6[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C169S20759C209S20759C19__A1__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C169S20759C209S20759C19__A1__8S20759C6[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C19__A1__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C19__A1__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C209S20759C19__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C209S20759C19__8S20759C6[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C209S20759C19__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C209S20759C19__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C209S20759C19__8S20759C6[4]),  4,6},
  {&(_tg__ZTV9S20759C20__9S20759C19__8S20759C6[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20759C19__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C19__8S20759C6[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C19__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__9S20759C19__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C19__8S20759C6[4]),  4,6},
  {&(_tg__ZTV9S20759C18__A1__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C18__A1__8S20759C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20759C6[];
extern  VTBL_ENTRY _ZTV8S20759C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C6[];
static VTBL_ENTRY alt_thunk_names113[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C18D0Ev,_ZThn40_N9S20759C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C18D1Ev,_ZThn40_N9S20759C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20759C16D0Ev,_ZThn16_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20759C16D1Ev,_ZThn16_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C8D0Ev,_ZThn8_N8S20759C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C8D1Ev,_ZThn8_N8S20759C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C4D0Ev,_ZThn8_N8S20759C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C4D1Ev,_ZThn8_N8S20759C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20759C15D0Ev,_ZTv0_n28_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20759C15D0Ev,_ZThn140_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20759C15D1Ev,_ZTv0_n28_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20759C15D1Ev,_ZThn140_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C15D0Ev,_ZTv0_n20_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C15D0Ev,_ZThn96_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C15D1Ev,_ZTv0_n20_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C15D1Ev,_ZThn96_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C15D0Ev,_ZThn24_N9S20759C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C15D0Ev,_ZThn40_N9S20759C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20759C15D0Ev,_ZThn68_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C15D1Ev,_ZThn24_N9S20759C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C15D1Ev,_ZThn40_N9S20759C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20759C15D1Ev,_ZThn68_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C15D0Ev,_ZTv0_n24_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20759C15D0Ev,_ZThn52_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C15D1Ev,_ZTv0_n24_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20759C15D1Ev,_ZThn52_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C15D0Ev,_ZTv0_n16_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)_ZN9S20759C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C15D1Ev,_ZTv0_n16_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)_ZN9S20759C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C7D0Ev,_ZTv0_n12_N8S20759C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20759C7D0Ev,_ZThn76_N8S20759C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C7D1Ev,_ZTv0_n12_N8S20759C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20759C7D1Ev,_ZThn76_N8S20759C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C7D0Ev,_ZTv0_n16_N8S20759C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20759C7D0Ev,_ZThn68_N8S20759C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C7D1Ev,_ZTv0_n16_N8S20759C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20759C7D1Ev,_ZThn68_N8S20759C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20759C6D0Ev,_ZTv0_n28_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20759C6D0Ev,_ZThn176_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20759C6D1Ev,_ZTv0_n28_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20759C6D1Ev,_ZThn176_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20759C6D0Ev,_ZTv0_n20_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20759C6D0Ev,_ZThn132_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20759C6D1Ev,_ZTv0_n20_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20759C6D1Ev,_ZThn132_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20759C6D0Ev,_ZTv0_n24_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20759C6D0Ev,_ZThn88_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20759C6D1Ev,_ZTv0_n24_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20759C6D1Ev,_ZThn88_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20759C6D0Ev,_ZThn104_N8S20759C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20759C6D0Ev,_ZThn76_N8S20759C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20759C6D0Ev,_ZThn60_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20759C6D1Ev,_ZThn104_N8S20759C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20759C6D1Ev,_ZThn76_N8S20759C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20759C6D1Ev,_ZThn60_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20759C6D0Ev,_ZThn68_N8S20759C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20759C6D0Ev,_ZThn52_N8S20759C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20759C6D0Ev,_ZThn36_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20759C6D1Ev,_ZThn68_N8S20759C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20759C6D1Ev,_ZThn52_N8S20759C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20759C6D1Ev,_ZThn36_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C6 = {  "S20759C6", // class name
  bases_S20759C6, 25,
  &(vtc_S20759C6[0]), // expected_vtbl_contents
  &(vtt_S20759C6[0]), // expected_vtt_contents
  ABISELECT(320,212), // object size
  NSPAIRA(_ZTI8S20759C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20759C6),101, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20759C6),64, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names113,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C24  : virtual S4161C4_nt , virtual S20760C9 , virtual S20759C17 , S20759C20 , virtual S20759C5_nt {
  ~S20759C24(); // tgen
  S20759C24(); // tgen
};
//SIG(-1 S20759C24) C1{ VBC2{ m Fp} VBC3{ vd m FL} VBC4{ BC3 VBC5{ vd m Fi[6]} BC6{ VBC3 vd} FC5} BC7{ BC2 BC8{ VBC5 VBC4 FD} BC9{ vd m} VBC6 vd} VBC10{ vd m Fl}}


S20759C24 ::~S20759C24(){ note_dtor("S20759C24", this);} // tgen
S20759C24 ::S20759C24(){ note_ctor("S20759C24", this);} // tgen

static void Test_S20759C24()
{
  extern Class_Descriptor cd_S20759C24;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,32)];
    init_test(&cd_S20759C24, buf);
    S20759C24 *dp, &lv = *(dp=new (buf) S20759C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,124), "sizeof(S20759C24)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20759C24)");
    /*is_ambiguous_... S20759C24::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(48,24), "S20759C24");
    /*is_ambiguous_... S20759C24::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(56,28), "S20759C24");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*), ABISELECT(56,28), "S20759C24");
    /*is_ambiguous_... S20759C24::S20759C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C18*), ABISELECT(56,28), "S20759C24");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*), ABISELECT(72,40), "S20759C24");
    check_base_class_offset(lv, (S20760C13*)(S20759C17*), ABISELECT(128,84), "S20759C24");
    check_base_class_offset(lv, (S20760C13*)(S20759C16*)(S20759C20*), ABISELECT(128,84), "S20759C24");
    check_base_class_offset(lv, (S20759C18*)(S20759C17*), ABISELECT(88,52), "S20759C24");
    check_base_class_offset(lv, (S20759C17*), ABISELECT(72,40), "S20759C24");
    check_base_class_offset(lv, (S20759C17*)(S20759C16*)(S20759C20*), ABISELECT(72,40), "S20759C24");
    check_base_class_offset(lv, (S4161C4_nt*)(S20759C20*), ABISELECT(32,16), "S20759C24");
    check_base_class_offset(lv, (S20759C16*)(S20759C20*), 0, "S20759C24");
    check_base_class_offset(lv, (S20760C22_nt*)(S20759C20*), ABISELECT(40,20), "S20759C24");
    /*is_ambiguous_... S20759C20::S20759C18 */ AMB_check_base_class_offset(lv, (S20759C18*)(S20759C20*), ABISELECT(160,112), "S20759C24");
    check_base_class_offset(lv, (S20759C20*), 0, "S20759C24");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(168,116), "S20759C24");
    test_class_info(&lv, &cd_S20759C24);
    dp->~S20759C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C24(Test_S20759C24, "S20759C24", ABISELECT(192,124));

#else // __cplusplus

extern void _ZN9S20759C24C1Ev();
extern void _ZN9S20759C24D1Ev();
Name_Map name_map_S20759C24[] = {
  NSPAIR(_ZN9S20759C24C1Ev),
  NSPAIR(_ZN9S20759C24D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C20;
extern VTBL_ENTRY _ZTI9S20759C20[];
extern  VTBL_ENTRY _ZTV9S20759C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C20[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S20759C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(56,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(128,84), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20759C18,    ABISELECT(88,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(72,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20759C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20759C18,    ABISELECT(160,112), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20759C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20759C5_nt,    ABISELECT(168,116), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20759C24[];
extern void _ZN9S20759C24D1Ev();
extern void _ZN9S20759C24D0Ev();
extern void ABISELECT(_ZThn40_N9S20759C24D1Ev,_ZThn20_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn40_N9S20759C24D0Ev,_ZThn20_N9S20759C24D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C24D1Ev,_ZThn28_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C24D0Ev,_ZThn28_N9S20759C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C24D1Ev,_ZTv0_n20_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn72_N9S20759C24D1Ev,_ZThn40_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C24D0Ev,_ZTv0_n20_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn72_N9S20759C24D0Ev,_ZThn40_N9S20759C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20759C24D1Ev,_ZTvn12_n20_N9S20759C24D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C24D0Ev,_ZTvn12_n20_N9S20759C24D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn128_N9S20759C24D1Ev,_ZThn84_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn128_N9S20759C24D0Ev,_ZThn84_N9S20759C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C24D1Ev,_ZTv0_n16_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn160_N9S20759C24D1Ev,_ZThn112_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C24D0Ev,_ZTv0_n16_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn160_N9S20759C24D0Ev,_ZThn112_N9S20759C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn168_N9S20759C24D1Ev,_ZThn116_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn168_N9S20759C24D0Ev,_ZThn116_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C24[] = {
  ABISELECT(168,116),
  ABISELECT(48,24),
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&_ZN9S20759C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C24D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20759C24D1Ev,_ZThn20_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20759C24D0Ev,_ZThn20_N9S20759C24D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C24D1Ev,_ZTv0_n20_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C24D0Ev,_ZTv0_n20_N9S20759C24D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C24D1Ev,_ZTvn12_n20_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C24D0Ev,_ZTvn12_n20_N9S20759C24D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev),
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C24D1Ev,_ZTv0_n16_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C24D0Ev,_ZTv0_n16_N9S20759C24D0Ev),
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev),
};
extern VTBL_ENTRY _ZTV9S20759C24[];
extern void _ZN9S20759C20D1Ev();
extern void _ZN9S20759C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C20__9S20759C24[] = {
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&_ZN9S20759C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C20D0Ev,
};
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C169S20759C20__9S20759C24[] = {
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn128_N9S20759C16D1Ev,_ZThn84_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn128_N9S20759C16D0Ev,_ZThn84_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C169S20759C20__9S20759C24[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S20759C16D1Ev,_ZThn40_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn72_N9S20759C16D0Ev,_ZThn40_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C169S20759C20__9S20759C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C169S20759C20__9S20759C24[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C16D1Ev,_ZThn28_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C16D0Ev,_ZThn28_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C169S20759C20__9S20759C24[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn128_N9S20759C20D1Ev,_ZThn84_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn128_N9S20759C20D0Ev,_ZThn84_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C20__9S20759C24[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn72_N9S20759C20D1Ev,_ZThn40_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn72_N9S20759C20D0Ev,_ZThn40_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C20__9S20759C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C20__9S20759C24[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C20D1Ev,_ZThn28_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C20D0Ev,_ZThn28_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C20__9S20759C24[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn160_N9S20759C20D1Ev,_ZThn112_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn160_N9S20759C20D0Ev,_ZThn112_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C20__9S20759C24[] = {
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev),
};
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C24[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C24[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C24[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C17__9S20759C24[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17__9S20759C24[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C17__9S20759C24[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C24[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C18__A1__9S20759C24[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
static  VTT_ENTRY vtt_S20759C24[] = {
  {&(_ZTV9S20759C24[8]),  8,47},
  {&(_tg__ZTV9S20759C20__9S20759C24[6]),  6,8},
  {&(_tg__ZTV9S20759C169S20759C20__9S20759C24[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C169S20759C20__9S20759C24[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C169S20759C20__9S20759C24[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C169S20759C20__9S20759C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C169S20759C20__9S20759C24[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C20__9S20759C24[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C20__9S20759C24[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C20__9S20759C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C20__9S20759C24[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C20__9S20759C24[4]),  4,6},
  {&(_ZTV9S20759C24[17]),  17,47},
  {&(_ZTV9S20759C24[24]),  24,47},
  {&(_ZTV9S20759C24[34]),  34,47},
  {&(_ZTV9S20759C24[29]),  29,47},
  {&(_ZTV9S20759C24[40]),  40,47},
  {&(_ZTV9S20759C24[45]),  45,47},
  {&(_tg__ZTV9S20759C17__9S20759C24[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C24[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C17__9S20759C24[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C17__9S20759C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C17__9S20759C24[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C18__A1__9S20759C24[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20759C24[];
extern  VTBL_ENTRY _ZTV9S20759C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C24[];
static VTBL_ENTRY alt_thunk_names114[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C20D0Ev,_ZThn112_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C20D1Ev,_ZThn112_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C20D0Ev,_ZThn40_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C20D1Ev,_ZThn40_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C20D0Ev,_ZThn28_N9S20759C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20759C20D0Ev,_ZThn84_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C20D1Ev,_ZThn28_N9S20759C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20759C20D1Ev,_ZThn84_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C16D0Ev,_ZThn40_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C16D1Ev,_ZThn40_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C16D0Ev,_ZThn28_N9S20759C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20759C16D0Ev,_ZThn84_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C16D1Ev,_ZThn28_N9S20759C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20759C16D1Ev,_ZThn84_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C24D0Ev,_ZTv0_n16_N9S20759C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C24D0Ev,_ZThn112_N9S20759C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C24D1Ev,_ZTv0_n16_N9S20759C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C24D1Ev,_ZThn112_N9S20759C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C24D0Ev,_ZTv0_n20_N9S20759C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C24D0Ev,_ZThn40_N9S20759C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C24D1Ev,_ZTv0_n20_N9S20759C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C24D1Ev,_ZThn40_N9S20759C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C24D0Ev,_ZThn116_N9S20759C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20759C24D0Ev,_ZThn84_N9S20759C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C24D0Ev,_ZThn28_N9S20759C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C24D1Ev,_ZThn116_N9S20759C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20759C24D1Ev,_ZThn84_N9S20759C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C24D1Ev,_ZThn28_N9S20759C24D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C24 = {  "S20759C24", // class name
  bases_S20759C24, 12,
  &(vtc_S20759C24[0]), // expected_vtbl_contents
  &(vtt_S20759C24[0]), // expected_vtt_contents
  ABISELECT(192,124), // object size
  NSPAIRA(_ZTI9S20759C24),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20759C24),47, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C24),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names114,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C25  : virtual S20760C13 , S20759C17 , virtual S4161C4_nt {
  ::S20759C24 s20759c25f0;
  ~S20759C25(); // tgen
  S20759C25(); // tgen
};
//SIG(-1 S20759C25) C1{ VBC2{ vd m Fi[6]} BC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} VBC6{ m Fp} FC7{ VBC6 VBC4 VBC3 BC8{ BC6 BC9{ VBC2 VBC3 FD} BC10{ vd m} VBC5 vd} VBC11{ vd m Fl}}}


S20759C25 ::~S20759C25(){ note_dtor("S20759C25", this);} // tgen
S20759C25 ::S20759C25(){ note_ctor("S20759C25", this);} // tgen

static void Test_S20759C25()
{
  extern Class_Descriptor cd_S20759C25;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,54)];
    init_test(&cd_S20759C25, buf);
    S20759C25 *dp, &lv = *(dp=new (buf) S20759C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,212), "sizeof(S20759C25)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20759C25)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(256,168), "S20759C25");
    check_base_class_offset(lv, (S20760C13*)(S20759C17*), ABISELECT(256,168), "S20759C25");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*), 0, "S20759C25");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*), ABISELECT(288,196), "S20759C25");
    check_base_class_offset(lv, (S20759C18*)(S20759C17*), ABISELECT(16,12), "S20759C25");
    check_base_class_offset(lv, (S20759C17*), 0, "S20759C25");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(304,208), "S20759C25");
    check_field_offset(lv, s20759c25f0, ABISELECT(64,44), "S20759C25.s20759c25f0");
    test_class_info(&lv, &cd_S20759C25);
    dp->~S20759C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C25(Test_S20759C25, "S20759C25", ABISELECT(320,212));

#else // __cplusplus

extern void _ZN9S20759C25C1Ev();
extern void _ZN9S20759C25D1Ev();
Name_Map name_map_S20759C25[] = {
  NSPAIR(_ZN9S20759C25C1Ev),
  NSPAIR(_ZN9S20759C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S20759C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(256,168), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(288,196), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20759C18,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20759C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20759C25[];
extern void _ZN9S20759C25D1Ev();
extern void _ZN9S20759C25D0Ev();
extern void ABISELECT(_ZThn16_N9S20759C25D1Ev,_ZThn12_N9S20759C25D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C25D0Ev,_ZThn12_N9S20759C25D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev)();
extern void ABISELECT(_ZThn256_N9S20759C25D1Ev,_ZThn168_N9S20759C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev)();
extern void ABISELECT(_ZThn256_N9S20759C25D0Ev,_ZThn168_N9S20759C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev)();
extern void ABISELECT(_ZThn288_N9S20759C25D1Ev,_ZThn196_N9S20759C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev)();
extern void ABISELECT(_ZThn288_N9S20759C25D0Ev,_ZThn196_N9S20759C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C25[] = {
  ABISELECT(304,208),
  ABISELECT(288,196),
  ABISELECT(256,168),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&_ZN9S20759C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C25D0Ev,
  ABISELECT(272,184),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C25D1Ev,_ZThn12_N9S20759C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C25D0Ev,_ZThn12_N9S20759C25D0Ev),
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev),
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev),
};
extern VTBL_ENTRY _ZTV9S20759C25[];
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C25[] = {
  ABISELECT(288,196),
  ABISELECT(256,168),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C25[] = {
  ABISELECT(272,184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn272_N9S20759C18D1Ev,_ZThn184_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn272_N9S20759C18D0Ev,_ZThn184_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C25[] = {
  ABISELECT(-272,-184),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn256_N9S20759C17D1Ev,_ZThn168_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn256_N9S20759C17D0Ev,_ZThn168_N9S20759C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C17__9S20759C25[] = {
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17__9S20759C25[] = {
  ABISELECT(272,184),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn288_N9S20759C17D1Ev,_ZThn196_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn288_N9S20759C17D0Ev,_ZThn196_N9S20759C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C17__9S20759C25[] = {
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
static  VTT_ENTRY vtt_S20759C25[] = {
  {&(_ZTV9S20759C25[5]),  5,22},
  {&(_tg__ZTV9S20759C17__9S20759C25[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C25[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C25[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C17__9S20759C25[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C17__9S20759C25[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C17__9S20759C25[3]),  3,5},
  {&(_ZTV9S20759C25[15]),  15,22},
  {&(_ZTV9S20759C25[10]),  10,22},
  {&(_ZTV9S20759C25[20]),  20,22},
};
extern VTBL_ENTRY _ZTI9S20759C25[];
extern  VTBL_ENTRY _ZTV9S20759C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C25[];
static VTBL_ENTRY alt_thunk_names115[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20759C17D0Ev,_ZThn196_N9S20759C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20759C17D0Ev,_ZThn168_N9S20759C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20759C17D1Ev,_ZThn196_N9S20759C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20759C17D1Ev,_ZThn168_N9S20759C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20759C18D0Ev,_ZThn184_N9S20759C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20759C18D1Ev,_ZThn184_N9S20759C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20759C25D0Ev,_ZThn196_N9S20759C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20759C25D0Ev,_ZThn168_N9S20759C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20759C25D1Ev,_ZThn196_N9S20759C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20759C25D1Ev,_ZThn168_N9S20759C25D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C25 = {  "S20759C25", // class name
  bases_S20759C25, 6,
  &(vtc_S20759C25[0]), // expected_vtbl_contents
  &(vtt_S20759C25[0]), // expected_vtt_contents
  ABISELECT(320,212), // object size
  NSPAIRA(_ZTI9S20759C25),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20759C25),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C25),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names115,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C23  : S4228C37 , S20760C9 , virtual S4161C4_nt , S20759C24 , virtual S20759C25 {
  int s20759c23f0;
  virtual  ~S20759C23(); // _ZN9S20759C23D2Ev
  S20759C23(); // tgen
};
//SIG(-1 S20759C23) C1{ BC2{ m} BC3{ vd m FL} VBC4{ m Fp} BC5{ VBC4 VBC3 VBC6{ BC3 VBC7{ vd m Fi[6]} BC8{ VBC3 vd} FC7} BC9{ BC4 BC10{ VBC7 VBC6 FD} BC11{ vd m} VBC8 vd} VBC12{ vd m Fl}} VBC13{ VBC7 BC6 VBC4 FC5} vd Fi}


 S20759C23 ::~S20759C23(){ note_dtor("S20759C23", this);}
S20759C23 ::S20759C23(){ note_ctor("S20759C23", this);} // tgen

static void Test_S20759C23()
{
  extern Class_Descriptor cd_S20759C23;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,78)];
    init_test(&cd_S20759C23, buf);
    S20759C23 *dp, &lv = *(dp=new (buf) S20759C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S20759C23)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20759C23)");
    check_base_class_offset(lv, (S4228C37*), 0, "S20759C23");
    /*is_ambiguous_... S20759C23::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S20759C23");
    /*is_ambiguous_... S20759C23::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(72,40), "S20759C23");
    /*is_ambiguous_... S20759C24::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S20759C24*), ABISELECT(72,40), "S20759C23");
    check_base_class_offset(lv, (S4161C4_nt*)(S20759C25*), ABISELECT(72,40), "S20759C23");
    /*is_ambiguous_... S20759C24::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C24*), ABISELECT(80,44), "S20759C23");
    /*is_ambiguous_... S20759C23::S20759C17 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*), ABISELECT(80,44), "S20759C23");
    /*is_ambiguous_... S20759C23::S20759C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C18*), ABISELECT(80,44), "S20759C23");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*)(S20759C25*), ABISELECT(80,44), "S20759C23");
    /*is_ambiguous_... S20759C23::S20759C17 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*), ABISELECT(96,56), "S20759C23");
    /*is_ambiguous_... S20759C23::S20759C17 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20759C17*), ABISELECT(152,100), "S20759C23");
    check_base_class_offset(lv, (S20760C13*)(S20759C16*)(S20759C20*)(S20759C24*), ABISELECT(152,100), "S20759C23");
    check_base_class_offset(lv, (S20760C13*)(S20759C25*), ABISELECT(152,100), "S20759C23");
    check_base_class_offset(lv, (S20760C13*)(S20759C17*)(S20759C25*), ABISELECT(152,100), "S20759C23");
    /*is_ambiguous_... S20759C23::S20759C17 */ AMB_check_base_class_offset(lv, (S20759C18*)(S20759C17*), ABISELECT(112,68), "S20759C23");
    check_base_class_offset(lv, (S20759C17*)(S20759C24*), ABISELECT(96,56), "S20759C23");
    check_base_class_offset(lv, (S20759C17*)(S20759C16*)(S20759C20*)(S20759C24*), ABISELECT(96,56), "S20759C23");
    check_base_class_offset(lv, (S4161C4_nt*)(S20759C20*)(S20759C24*), ABISELECT(48,28), "S20759C23");
    check_base_class_offset(lv, (S20759C16*)(S20759C20*)(S20759C24*), ABISELECT(16,12), "S20759C23");
    check_base_class_offset(lv, (S20760C22_nt*)(S20759C20*)(S20759C24*), ABISELECT(56,32), "S20759C23");
    /*is_ambiguous_... S20759C20::S20759C18 */ AMB_check_base_class_offset(lv, (S20759C18*)(S20759C20*)(S20759C24*), ABISELECT(184,128), "S20759C23");
    check_base_class_offset(lv, (S20759C20*)(S20759C24*), ABISELECT(16,12), "S20759C23");
    check_base_class_offset(lv, (S20759C5_nt*)(S20759C24*), ABISELECT(192,132), "S20759C23");
    check_base_class_offset(lv, (S20759C24*), ABISELECT(16,12), "S20759C23");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*)(S20759C25*), ABISELECT(208,140), "S20759C23");
    check_base_class_offset(lv, (S20759C18*)(S20759C17*)(S20759C25*), ABISELECT(224,152), "S20759C23");
    check_base_class_offset(lv, (S20759C17*)(S20759C25*), ABISELECT(208,140), "S20759C23");
    check_base_class_offset(lv, (S20759C25*), ABISELECT(208,140), "S20759C23");
    check_field_offset(lv, s20759c23f0, ABISELECT(64,36), "S20759C23.s20759c23f0");
    test_class_info(&lv, &cd_S20759C23);
    dp->~S20759C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C23(Test_S20759C23, "S20759C23", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN9S20759C23C1Ev();
extern void _ZN9S20759C23D2Ev();
Name_Map name_map_S20759C23[] = {
  NSPAIR(_ZN9S20759C23C1Ev),
  NSPAIR(_ZN9S20759C23D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C20;
extern VTBL_ENTRY _ZTI9S20759C20[];
extern  VTBL_ENTRY _ZTV9S20759C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C20[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S20759C24;
extern VTBL_ENTRY _ZTI9S20759C24[];
extern  VTBL_ENTRY _ZTV9S20759C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C24[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S20759C25;
extern VTBL_ENTRY _ZTI9S20759C25[];
extern  VTBL_ENTRY _ZTV9S20759C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C25[];
static Base_Class bases_S20759C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,100), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20759C18,    ABISELECT(112,68), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(96,56), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20759C16,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20759C18,    ABISELECT(184,128), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20759C20,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20759C5_nt,    ABISELECT(192,132), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20759C24,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20759C18,    ABISELECT(224,152), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20759C25,    ABISELECT(208,140), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20759C23[];
extern void _ZN9S20759C23D1Ev();
extern void _ZN9S20759C23D0Ev();
extern void ABISELECT(_ZThn16_N9S20759C23D1Ev,_ZThn12_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C23D0Ev,_ZThn12_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C23D1Ev,_ZThn32_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C23D0Ev,_ZThn32_N9S20759C23D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C23D1Ev,_ZThn44_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C23D0Ev,_ZThn44_N9S20759C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C23D1Ev,_ZTv0_n20_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn96_N9S20759C23D1Ev,_ZThn56_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C23D0Ev,_ZTv0_n20_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn96_N9S20759C23D0Ev,_ZThn56_N9S20759C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20759C23D1Ev,_ZTvn12_n20_N9S20759C23D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C23D0Ev,_ZTvn12_n20_N9S20759C23D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn152_N9S20759C23D1Ev,_ZThn100_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn152_N9S20759C23D0Ev,_ZThn100_N9S20759C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C23D1Ev,_ZTv0_n16_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn184_N9S20759C23D1Ev,_ZThn128_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C23D0Ev,_ZTv0_n16_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn184_N9S20759C23D0Ev,_ZThn128_N9S20759C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn192_N9S20759C23D1Ev,_ZThn132_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn192_N9S20759C23D0Ev,_ZThn132_N9S20759C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20759C23D1Ev,_ZTv0_n24_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn208_N9S20759C23D1Ev,_ZThn140_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20759C23D0Ev,_ZTv0_n24_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn208_N9S20759C23D0Ev,_ZThn140_N9S20759C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N9S20759C23D1Ev,_ZTvn12_n24_N9S20759C23D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S20759C23D0Ev,_ZTvn12_n24_N9S20759C23D0Ev)();
static  VTBL_ENTRY vtc_S20759C23[] = {
  ABISELECT(208,140),
  ABISELECT(192,132),
  ABISELECT(184,128),
  ABISELECT(152,100),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&_ZN9S20759C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C23D0Ev,
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C23D1Ev,_ZThn12_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C23D0Ev,_ZThn12_N9S20759C23D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20759C23D1Ev,_ZThn32_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20759C23D0Ev,_ZThn32_N9S20759C23D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C23D1Ev,_ZTv0_n20_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C23D0Ev,_ZTv0_n20_N9S20759C23D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C23D1Ev,_ZTvn12_n20_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C23D0Ev,_ZTvn12_n20_N9S20759C23D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev),
  ABISELECT(-184,-128),
  ABISELECT(-104,-84),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C23D1Ev,_ZTv0_n16_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C23D0Ev,_ZTv0_n16_N9S20759C23D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev),
  ABISELECT(-208,-140),
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C23D1Ev,_ZTv0_n24_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C23D0Ev,_ZTv0_n24_N9S20759C23D0Ev),
  ABISELECT(-144,-108),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S20759C23D1Ev,_ZTvn12_n24_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S20759C23D0Ev,_ZTvn12_n24_N9S20759C23D0Ev),
};
extern VTBL_ENTRY _ZTV9S20759C23[];
extern void _ZN9S20759C24D1Ev();
extern void _ZN9S20759C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C24__9S20759C23[] = {
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&_ZN9S20759C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C24D0Ev,
};
extern void _ZN9S20759C20D1Ev();
extern void _ZN9S20759C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&_ZN9S20759C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C20D0Ev,
};
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C169S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn136_N9S20759C16D1Ev,_ZThn88_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn136_N9S20759C16D0Ev,_ZThn88_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C169S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C169S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn32_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn32_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn136_N9S20759C20D1Ev,_ZThn88_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn136_N9S20759C20D0Ev,_ZThn88_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C20D1Ev,_ZThn44_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C20D0Ev,_ZThn44_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S20759C20D1Ev,_ZThn32_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn64_N9S20759C20D0Ev,_ZThn32_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn168_N9S20759C20D1Ev,_ZThn116_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn168_N9S20759C20D0Ev,_ZThn116_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn64_N9S20759C24D1Ev,_ZThn32_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn64_N9S20759C24D0Ev,_ZThn32_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C24__9S20759C23[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C24D1Ev,_ZTv0_n20_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C24D1Ev,_ZThn44_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C24D0Ev,_ZTv0_n20_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C24D0Ev,_ZThn44_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C24__9S20759C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C24D1Ev,_ZTv0_n20_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C24D0Ev,_ZTv0_n20_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn136_N9S20759C24D1Ev,_ZThn88_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn136_N9S20759C24D0Ev,_ZThn88_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C24__9S20759C23[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C24D1Ev,_ZTvn12_n20_N9S20759C24D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C24D0Ev,_ZTvn12_n20_N9S20759C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C24__9S20759C23[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C24D1Ev,_ZTvn12_n20_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C24D0Ev,_ZTvn12_n20_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C24D1Ev,_ZTv0_n16_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn168_N9S20759C24D1Ev,_ZThn116_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C24D0Ev,_ZTv0_n16_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn168_N9S20759C24D0Ev,_ZThn116_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C24__9S20759C23[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C24D1Ev,_ZTv0_n16_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C24D0Ev,_ZTv0_n16_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn176_N9S20759C24D1Ev,_ZThn120_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn176_N9S20759C24D0Ev,_ZThn120_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S20759C24__9S20759C23[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev),
};
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C23[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C23[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C23[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C17__9S20759C23[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17__9S20759C23[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C17__9S20759C23[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C23[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C18__A1__9S20759C23[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void _ZN9S20759C25D1Ev();
extern void _ZN9S20759C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C25__9S20759C23[] = {
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&_ZN9S20759C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C25D0Ev,
};
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C179S20759C25__A1__9S20759C23[] = {
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C179S20759C25__A2__9S20759C23[] = {
  ABISELECT(-144,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C179S20759C25__A2__9S20759C23[] = {
  ABISELECT(144,108),
  ABISELECT(144,108),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C179S20759C25__A1__9S20759C23[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C179S20759C25__A1__9S20759C23[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C179S20759C25__A1__9S20759C23[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C25__9S20759C23[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C25D1Ev,_ZThn12_N9S20759C25D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C25D0Ev,_ZThn12_N9S20759C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C25__9S20759C23[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C25D1Ev,_ZThn12_N9S20759C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C25D0Ev,_ZThn12_N9S20759C25D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C25__9S20759C23[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev),
};
static  VTT_ENTRY vtt_S20759C23[] = {
  {&(_ZTV9S20759C23[9]),  9,71},
  {&(_tg__ZTV9S20759C24__9S20759C23[8]),  8,10},
  {&(_tg__ZTV9S20759C209S20759C24__9S20759C23[6]),  6,8},
  {&(_tg__ZTV9S20759C169S20759C209S20759C24__9S20759C23[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C169S20759C209S20759C24__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C169S20759C209S20759C24__9S20759C23[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C24__9S20759C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C24__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C209S20759C24__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C209S20759C24__9S20759C23[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C209S20759C24__9S20759C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C209S20759C24__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C209S20759C24__9S20759C23[4]),  4,6},
  {&(_tg__ZTV8S20760C9__9S20759C24__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C24__9S20759C23[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C24__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C24__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C24__9S20759C23[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__9S20759C24__9S20759C23[3]),  3,5},
  {&(_ZTV9S20759C23[19]),  19,71},
  {&(_ZTV9S20759C23[28]),  28,71},
  {&(_ZTV9S20759C23[35]),  35,71},
  {&(_ZTV9S20759C23[45]),  45,71},
  {&(_ZTV9S20759C23[40]),  40,71},
  {&(_ZTV9S20759C23[51]),  51,71},
  {&(_ZTV9S20759C23[56]),  56,71},
  {&(_ZTV9S20759C23[64]),  64,71},
  {&(_ZTV9S20759C23[69]),  69,71},
  {&(_tg__ZTV9S20759C17__9S20759C23[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C17__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C17__9S20759C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C17__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C18__A1__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C25__9S20759C23[5]),  5,7},
  {&(_tg__ZTV9S20759C179S20759C25__A1__9S20759C23[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C179S20759C25__A2__9S20759C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C179S20759C25__A2__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C179S20759C25__A1__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C179S20759C25__A1__9S20759C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C179S20759C25__A1__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C25__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C25__9S20759C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C25__9S20759C23[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20759C23[];
extern  VTBL_ENTRY _ZTV9S20759C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C23[];
static VTBL_ENTRY alt_thunk_names116[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C24D0Ev,_ZTv0_n16_N9S20759C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C24D0Ev,_ZThn116_N9S20759C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C24D1Ev,_ZTv0_n16_N9S20759C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C24D1Ev,_ZThn116_N9S20759C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C24D0Ev,_ZTv0_n20_N9S20759C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C24D0Ev,_ZThn44_N9S20759C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C24D1Ev,_ZTv0_n20_N9S20759C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C24D1Ev,_ZThn44_N9S20759C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20759C24D0Ev,_ZThn120_N9S20759C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C24D0Ev,_ZThn88_N9S20759C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C24D0Ev,_ZThn32_N9S20759C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20759C24D1Ev,_ZThn120_N9S20759C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C24D1Ev,_ZThn88_N9S20759C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C24D1Ev,_ZThn32_N9S20759C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C20D0Ev,_ZThn116_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C20D1Ev,_ZThn116_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C20D0Ev,_ZThn44_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C20D1Ev,_ZThn44_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C20D0Ev,_ZThn32_N9S20759C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C20D0Ev,_ZThn88_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C20D1Ev,_ZThn32_N9S20759C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C20D1Ev,_ZThn88_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn32_N9S20759C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C16D0Ev,_ZThn88_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn32_N9S20759C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C16D1Ev,_ZThn88_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C23D0Ev,_ZTv0_n24_N9S20759C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20759C23D0Ev,_ZThn140_N9S20759C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C23D1Ev,_ZTv0_n24_N9S20759C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20759C23D1Ev,_ZThn140_N9S20759C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C23D0Ev,_ZTv0_n16_N9S20759C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20759C23D0Ev,_ZThn128_N9S20759C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C23D1Ev,_ZTv0_n16_N9S20759C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20759C23D1Ev,_ZThn128_N9S20759C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C23D0Ev,_ZTv0_n20_N9S20759C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20759C23D0Ev,_ZThn56_N9S20759C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C23D1Ev,_ZTv0_n20_N9S20759C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20759C23D1Ev,_ZThn56_N9S20759C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20759C23D0Ev,_ZThn132_N9S20759C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C23D0Ev,_ZThn100_N9S20759C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C23D0Ev,_ZThn44_N9S20759C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20759C23D1Ev,_ZThn132_N9S20759C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C23D1Ev,_ZThn100_N9S20759C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C23D1Ev,_ZThn44_N9S20759C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C23 = {  "S20759C23", // class name
  bases_S20759C23, 19,
  &(vtc_S20759C23[0]), // expected_vtbl_contents
  &(vtt_S20759C23[0]), // expected_vtt_contents
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI9S20759C23),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20759C23),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C23),46, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names116,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C1  : virtual S20759C2 , S20759C4 , S20759C6 , S20759C23 {
  int s20759c1f0;
  ~S20759C1(); // tgen
  S20759C1(); // tgen
};
//SIG(1 S20759C1) C1{ VBC2{ VBC3{ m}} BC4{ VBC5{ vd m Fl} vd Fc[2]} BC6{ VBC4 BC7{ VBC8{ VBC9{ vd m FL} vd FC10{ m}} VBC11{ m} BC12{ BC13{ vd m Fi[6]} VBC14{ m} VBC10 Fs} vd Fi} BC15{ VBC16{ VBC13 VBC17{ BC9 VBC13 BC18{ VBC9 vd} FC13} FD} VBC19{ BC9 BC20{ BC21{ m Fp} BC16 BC22{ vd m} VBC18 vd} vd} BC10 VBC5 vd v1} BC9 vd} BC23{ BC3 BC9 VBC21 BC24{ VBC21 VBC9 VBC17 BC20 VBC5} VBC25{ VBC13 BC17 VBC21 FC24} vd Fi} Fi}


S20759C1 ::~S20759C1(){ note_dtor("S20759C1", this);} // tgen
S20759C1 ::S20759C1(){ note_ctor("S20759C1", this);} // tgen

static void Test_S20759C1()
{
  extern Class_Descriptor cd_S20759C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(44,111)];
    init_test(&cd_S20759C1, buf);
    S20759C1 *dp, &lv = *(dp=new (buf) S20759C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(688,440), "sizeof(S20759C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20759C1)");
    check_base_class_offset(lv, (S4228C37*)(S20759C2*), 0, "S20759C1");
    check_base_class_offset(lv, (S20759C2*), ABISELECT(152,104), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C4 */ AMB_check_base_class_offset(lv, (S20759C5_nt*)(S20759C4*), ABISELECT(160,108), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C4 */ AMB_check_base_class_offset(lv, (S20759C5_nt*)(S20759C4*), ABISELECT(160,108), "S20759C1");
    check_base_class_offset(lv, (S20759C5_nt*)(S20759C15*)(S20759C6*), ABISELECT(160,108), "S20759C1");
    check_base_class_offset(lv, (S20759C5_nt*)(S20759C24*)(S20759C23*), ABISELECT(160,108), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C4 */ AMB_check_base_class_offset(lv, (S20759C4*), 0, "S20759C1");
    check_base_class_offset(lv, (S20759C4*)(S20759C6*), ABISELECT(176,116), "S20759C1");
    check_base_class_offset(lv, (S20760C9*)(S20759C8*), ABISELECT(208,132), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C17 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*), ABISELECT(208,132), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C18*), ABISELECT(208,132), "S20759C1");
    /*is_ambiguous_... S20759C24::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C24*)(S20759C23*), ABISELECT(208,132), "S20759C1");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*)(S20759C25*), ABISELECT(208,132), "S20759C1");
    check_base_class_offset(lv, (S20759C8*)(S20759C7*)(S20759C6*), ABISELECT(192,124), "S20759C1");
    check_base_class_offset(lv, (S4228C23*)(S20759C7*)(S20759C6*), 0, "S20759C1");
    check_base_class_offset(lv, (S20760C13*)(S20759C12*)(S20759C7*)(S20759C6*), ABISELECT(16,8), "S20759C1");
    check_base_class_offset(lv, (S4228C20*)(S20759C12*)(S20759C7*)(S20759C6*), 0, "S20759C1");
    check_base_class_offset(lv, (S4228C27*)(S20759C12*)(S20759C7*)(S20759C6*), 0, "S20759C1");
    check_base_class_offset(lv, (S20759C12*)(S20759C7*)(S20759C6*), ABISELECT(16,8), "S20759C1");
    check_base_class_offset(lv, (S20759C7*)(S20759C6*), ABISELECT(16,8), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C16 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20759C16*), ABISELECT(256,160), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C17 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20759C17*), ABISELECT(256,160), "S20759C1");
    check_base_class_offset(lv, (S20760C13*)(S20759C16*)(S20759C20*)(S20759C19*), ABISELECT(256,160), "S20759C1");
    check_base_class_offset(lv, (S20760C13*)(S20759C16*)(S20759C20*)(S20759C24*)(S20759C23*), ABISELECT(256,160), "S20759C1");
    check_base_class_offset(lv, (S20760C13*)(S20759C25*), ABISELECT(256,160), "S20759C1");
    check_base_class_offset(lv, (S20760C13*)(S20759C17*)(S20759C25*), ABISELECT(256,160), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C17 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*), ABISELECT(288,188), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C17 */ AMB_check_base_class_offset(lv, (S20759C18*)(S20759C17*), ABISELECT(304,200), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C16 */ AMB_check_base_class_offset(lv, (S20759C17*)(S20759C16*), ABISELECT(288,188), "S20759C1");
    check_base_class_offset(lv, (S20759C17*)(S20759C16*)(S20759C20*)(S20759C19*), ABISELECT(288,188), "S20759C1");
    check_base_class_offset(lv, (S20759C17*)(S20759C24*)(S20759C23*), ABISELECT(288,188), "S20759C1");
    check_base_class_offset(lv, (S20759C17*)(S20759C16*)(S20759C20*)(S20759C24*)(S20759C23*), ABISELECT(288,188), "S20759C1");
    /*is_ambiguous_... S20759C15::S20759C16 */ AMB_check_base_class_offset(lv, (S20759C16*)(S20759C15*)(S20759C6*), ABISELECT(224,144), "S20759C1");
    /*is_ambiguous_... S20759C19::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C19*), ABISELECT(352,232), "S20759C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S20759C20*)(S20759C19*), ABISELECT(400,260), "S20759C1");
    check_base_class_offset(lv, (S20759C16*)(S20759C20*)(S20759C19*), ABISELECT(368,244), "S20759C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S20759C20*)(S20759C19*), ABISELECT(408,264), "S20759C1");
    /*is_ambiguous_... S20759C20::S20759C18 */ AMB_check_base_class_offset(lv, (S20759C18*)(S20759C20*)(S20759C19*), ABISELECT(56,44), "S20759C1");
    /*is_ambiguous_... S20759C20::S20759C18 */ AMB_check_base_class_offset(lv, (S20759C18*)(S20759C20*)(S20759C24*)(S20759C23*), ABISELECT(56,44), "S20759C1");
    check_base_class_offset(lv, (S20759C20*)(S20759C19*), ABISELECT(368,244), "S20759C1");
    check_base_class_offset(lv, (S20759C19*)(S20759C15*)(S20759C6*), ABISELECT(352,232), "S20759C1");
    check_base_class_offset(lv, (S4228C27*)(S20759C15*)(S20759C6*), ABISELECT(56,44), "S20759C1");
    check_base_class_offset(lv, (S20759C15*)(S20759C6*), ABISELECT(56,44), "S20759C1");
    /*is_ambiguous_... S20759C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C6*), ABISELECT(64,48), "S20759C1");
    check_base_class_offset(lv, (S20759C6*), ABISELECT(16,8), "S20759C1");
    check_base_class_offset(lv, (S4228C37*)(S20759C23*), ABISELECT(80,60), "S20759C1");
    /*is_ambiguous_... S20759C23::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C23*), ABISELECT(80,60), "S20759C1");
    /*is_ambiguous_... S20759C23::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S20759C23*), ABISELECT(416,268), "S20759C1");
    /*is_ambiguous_... S20759C24::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S20759C24*)(S20759C23*), ABISELECT(416,268), "S20759C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S20759C25*), ABISELECT(416,268), "S20759C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S20759C20*)(S20759C24*)(S20759C23*), ABISELECT(128,88), "S20759C1");
    check_base_class_offset(lv, (S20759C16*)(S20759C20*)(S20759C24*)(S20759C23*), ABISELECT(96,72), "S20759C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S20759C20*)(S20759C24*)(S20759C23*), ABISELECT(136,92), "S20759C1");
    check_base_class_offset(lv, (S20759C20*)(S20759C24*)(S20759C23*), ABISELECT(96,72), "S20759C1");
    check_base_class_offset(lv, (S20759C24*)(S20759C23*), ABISELECT(96,72), "S20759C1");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*)(S20759C25*), ABISELECT(432,272), "S20759C1");
    check_base_class_offset(lv, (S20759C18*)(S20759C17*)(S20759C25*), ABISELECT(448,284), "S20759C1");
    check_base_class_offset(lv, (S20759C17*)(S20759C25*), ABISELECT(432,272), "S20759C1");
    check_base_class_offset(lv, (S20759C25*)(S20759C23*), ABISELECT(432,272), "S20759C1");
    check_base_class_offset(lv, (S20759C23*), ABISELECT(80,60), "S20759C1");
    check_field_offset(lv, s20759c1f0, ABISELECT(148,100), "S20759C1.s20759c1f0");
    test_class_info(&lv, &cd_S20759C1);
    dp->~S20759C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C1(Test_S20759C1, "S20759C1", ABISELECT(688,440));

#else // __cplusplus

extern void _ZN8S20759C1C1Ev();
extern void _ZN8S20759C1D1Ev();
Name_Map name_map_S20759C1[] = {
  NSPAIR(_ZN8S20759C1C1Ev),
  NSPAIR(_ZN8S20759C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20759C2;
extern VTBL_ENTRY _ZTI8S20759C2[];
extern  VTBL_ENTRY _ZTV8S20759C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C2[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S20759C4;
extern VTBL_ENTRY _ZTI8S20759C4[];
extern  VTBL_ENTRY _ZTV8S20759C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C4[];
extern Class_Descriptor cd_S20759C4;
extern VTBL_ENTRY _ZTI8S20759C4[];
extern  VTBL_ENTRY _ZTV8S20759C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C8;
extern VTBL_ENTRY _ZTI8S20759C8[];
extern  VTBL_ENTRY _ZTV8S20759C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C8[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C20;
extern VTBL_ENTRY _ZTI8S4228C20[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20759C12;
extern VTBL_ENTRY _ZTI9S20759C12[];
extern  VTBL_ENTRY _ZTV9S20759C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C12[];
extern Class_Descriptor cd_S20759C7;
extern VTBL_ENTRY _ZTI8S20759C7[];
extern  VTBL_ENTRY _ZTV8S20759C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C7[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C20;
extern VTBL_ENTRY _ZTI9S20759C20[];
extern  VTBL_ENTRY _ZTV9S20759C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C20[];
extern Class_Descriptor cd_S20759C19;
extern VTBL_ENTRY _ZTI9S20759C19[];
extern  VTBL_ENTRY _ZTV9S20759C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C19[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20759C15;
extern VTBL_ENTRY _ZTI9S20759C15[];
extern  VTBL_ENTRY _ZTV9S20759C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C15[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C6;
extern VTBL_ENTRY _ZTI8S20759C6[];
extern  VTBL_ENTRY _ZTV8S20759C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C6[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20759C20;
extern VTBL_ENTRY _ZTI9S20759C20[];
extern  VTBL_ENTRY _ZTV9S20759C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C20[];
extern Class_Descriptor cd_S20759C24;
extern VTBL_ENTRY _ZTI9S20759C24[];
extern  VTBL_ENTRY _ZTV9S20759C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C24[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S20759C25;
extern VTBL_ENTRY _ZTI9S20759C25[];
extern  VTBL_ENTRY _ZTV9S20759C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C25[];
extern Class_Descriptor cd_S20759C23;
extern VTBL_ENTRY _ZTI9S20759C23[];
extern  VTBL_ENTRY _ZTV9S20759C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C23[];
static Base_Class bases_S20759C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20759C2,    ABISELECT(152,104), //bcp->offset
    78, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20759C5_nt,    ABISELECT(160,108), //bcp->offset
    81, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20759C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20759C4,    ABISELECT(176,116), //bcp->offset
    86, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(208,132), //bcp->offset
    98, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20759C8,    ABISELECT(192,124), //bcp->offset
    92, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20760C13,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4228C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20759C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20759C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(256,160), //bcp->offset
    111, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(288,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20759C18,    ABISELECT(304,200), //bcp->offset
    123, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(288,188), //bcp->offset
    116, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20759C16,    ABISELECT(224,144), //bcp->offset
    103, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(352,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(400,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20759C16,    ABISELECT(368,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(408,264), //bcp->offset
    145, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20759C18,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20759C20,    ABISELECT(368,244), //bcp->offset
    137, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20759C19,    ABISELECT(352,232), //bcp->offset
    128, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20759C15,    ABISELECT(56,44), //bcp->offset
    36, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(64,48), //bcp->offset
    49, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20759C6,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(416,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20759C16,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(136,92), //bcp->offset
    74, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20759C20,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20759C24,    ABISELECT(96,72), //bcp->offset
    64, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    77, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(432,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20759C18,    ABISELECT(448,284), //bcp->offset
    157, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(432,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20759C25,    ABISELECT(432,272), //bcp->offset
    149, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    78, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S20759C23,    ABISELECT(80,60), //bcp->offset
    53, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20759C1[];
extern void _ZN8S20759C1D1Ev();
extern void _ZN8S20759C1D0Ev();
extern void ABISELECT(_ZThn16_N8S20759C1D1Ev,_ZThn8_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20759C1D0Ev,_ZThn8_N8S20759C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20759C1D1Ev,_ZTv0_n16_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S20759C1D1Ev,_ZThn44_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C1D0Ev,_ZTv0_n16_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S20759C1D0Ev,_ZThn44_N8S20759C1D0Ev)() __attribute__((weak));
extern void _ZN9S20759C152v1Ev();
extern void ABISELECT(_ZThn64_N8S20759C1D1Ev,_ZThn48_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S20759C1D0Ev,_ZThn48_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S20759C1D1Ev,_ZThn60_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S20759C1D0Ev,_ZThn60_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S20759C1D1Ev,_ZThn72_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S20759C1D0Ev,_ZThn72_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn136_N8S20759C1D1Ev,_ZThn92_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn136_N8S20759C1D0Ev,_ZThn92_N8S20759C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20759C1D1Ev,_ZTv0_n12_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn160_N8S20759C1D1Ev,_ZThn108_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C1D0Ev,_ZTv0_n12_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn160_N8S20759C1D0Ev,_ZThn108_N8S20759C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C1D1Ev,_ZTv0_n16_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S20759C1D1Ev,_ZThn116_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C1D0Ev,_ZTv0_n16_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn176_N8S20759C1D0Ev,_ZThn116_N8S20759C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C1D1Ev,_ZTv0_n16_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S20759C1D1Ev,_ZThn124_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C1D0Ev,_ZTv0_n16_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S20759C1D0Ev,_ZThn124_N8S20759C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C1D1Ev,_ZTv0_n12_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S20759C1D1Ev,_ZThn132_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C1D0Ev,_ZTv0_n12_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S20759C1D0Ev,_ZThn132_N8S20759C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20759C1D1Ev,_ZTv0_n24_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S20759C1D1Ev,_ZThn144_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20759C1D0Ev,_ZTv0_n24_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S20759C1D0Ev,_ZThn144_N8S20759C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C1D1Ev,_ZTv0_n12_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn256_N8S20759C1D1Ev,_ZThn160_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C1D0Ev,_ZTv0_n12_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn256_N8S20759C1D0Ev,_ZThn160_N8S20759C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20759C1D1Ev,_ZTv0_n20_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn288_N8S20759C1D1Ev,_ZThn188_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20759C1D0Ev,_ZTv0_n20_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn288_N8S20759C1D0Ev,_ZThn188_N8S20759C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S20759C1D1Ev,_ZTvn12_n20_N8S20759C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S20759C1D0Ev,_ZTvn12_n20_N8S20759C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S20759C1D1Ev,_ZTv0_n28_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn352_N8S20759C1D1Ev,_ZThn232_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20759C1D0Ev,_ZTv0_n28_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn352_N8S20759C1D0Ev,_ZThn232_N8S20759C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S20759C1D1Ev,_ZTvn12_n28_N8S20759C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S20759C1D0Ev,_ZTvn12_n28_N8S20759C1D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20759C1D1Ev,_ZTvn32_n28_N8S20759C1D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20759C1D0Ev,_ZTvn32_n28_N8S20759C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20759C1D1Ev,_ZTv0_n24_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn432_N8S20759C1D1Ev,_ZThn272_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20759C1D0Ev,_ZTv0_n24_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn432_N8S20759C1D0Ev,_ZThn272_N8S20759C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S20759C1D1Ev,_ZTvn12_n24_N8S20759C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S20759C1D0Ev,_ZTvn12_n24_N8S20759C1D0Ev)();
static  VTBL_ENTRY vtc_S20759C1[] = {
  ABISELECT(432,272),
  ABISELECT(416,268),
  ABISELECT(56,44),
  ABISELECT(352,232),
  ABISELECT(288,188),
  ABISELECT(256,160),
  ABISELECT(224,144),
  0,
  0,
  0,
  ABISELECT(208,132),
  ABISELECT(192,124),
  ABISELECT(176,116),
  0,
  ABISELECT(152,104),
  ABISELECT(160,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&_ZN8S20759C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C1D0Ev,
  ABISELECT(40,36),
  ABISELECT(336,224),
  ABISELECT(272,180),
  ABISELECT(240,152),
  ABISELECT(208,136),
  ABISELECT(144,100),
  ABISELECT(160,108),
  ABISELECT(-16,-8),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20759C1D1Ev,_ZThn8_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20759C1D0Ev,_ZThn8_N8S20759C1D0Ev),
  ABISELECT(104,64),
  0,
  ABISELECT(296,188),
  ABISELECT(232,144),
  ABISELECT(200,116),
  ABISELECT(168,100),
  ABISELECT(-56,-44),
  ABISELECT(152,88),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C1D1Ev,_ZTv0_n16_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C1D0Ev,_ZTv0_n16_N8S20759C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20759C152v1Ev,
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20759C1D1Ev,_ZThn48_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20759C1D0Ev,_ZThn48_N8S20759C1D0Ev),
  ABISELECT(352,212),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(176,100),
  ABISELECT(208,128),
  ABISELECT(128,72),
  ABISELECT(336,208),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20759C1D1Ev,_ZThn60_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20759C1D0Ev,_ZThn60_N8S20759C1D0Ev),
  ABISELECT(64,36),
  ABISELECT(320,196),
  ABISELECT(-40,-28),
  ABISELECT(112,60),
  ABISELECT(192,116),
  ABISELECT(160,88),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20759C1D1Ev,_ZThn72_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20759C1D0Ev,_ZThn72_N8S20759C1D0Ev),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N8S20759C1D1Ev,_ZThn92_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N8S20759C1D0Ev,_ZThn92_N8S20759C1D0Ev),
  ABISELECT(-152,-104),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  ABISELECT(-160,-108),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C1D1Ev,_ZTv0_n12_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C1D0Ev,_ZTv0_n12_N8S20759C1D0Ev),
  ABISELECT(-176,-116),
  ABISELECT(-16,-8),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C1D1Ev,_ZTv0_n16_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C1D0Ev,_ZTv0_n16_N8S20759C1D0Ev),
  ABISELECT(-192,-124),
  ABISELECT(16,8),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C1D1Ev,_ZTv0_n16_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C1D0Ev,_ZTv0_n16_N8S20759C1D0Ev),
  ABISELECT(-208,-132),
  ABISELECT(-208,-132),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C1D1Ev,_ZTv0_n12_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C1D0Ev,_ZTv0_n12_N8S20759C1D0Ev),
  ABISELECT(-224,-144),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20759C1D1Ev,_ZTv0_n24_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20759C1D0Ev,_ZTv0_n24_N8S20759C1D0Ev),
  ABISELECT(-256,-160),
  ABISELECT(-256,-160),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C1D1Ev,_ZTv0_n12_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C1D0Ev,_ZTv0_n12_N8S20759C1D0Ev),
  ABISELECT(-288,-188),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20759C1D1Ev,_ZTv0_n20_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20759C1D0Ev,_ZTv0_n20_N8S20759C1D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(-304,-200),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20759C1D1Ev,_ZTvn12_n20_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20759C1D0Ev,_ZTvn12_n20_N8S20759C1D0Ev),
  ABISELECT(-352,-232),
  ABISELECT(-296,-188),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-352,-232),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20759C1D1Ev,_ZTv0_n28_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20759C1D0Ev,_ZTv0_n28_N8S20759C1D0Ev),
  ABISELECT(-312,-200),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-368,-244),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20759C1D1Ev,_ZTvn12_n28_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20759C1D0Ev,_ZTvn12_n28_N8S20759C1D0Ev),
  ABISELECT(-408,-264),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20759C1D1Ev,_ZTvn32_n28_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20759C1D0Ev,_ZTvn32_n28_N8S20759C1D0Ev),
  ABISELECT(-432,-272),
  ABISELECT(-16,-4),
  ABISELECT(-224,-140),
  ABISELECT(-176,-112),
  ABISELECT(-432,-272),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20759C1D1Ev,_ZTv0_n24_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20759C1D0Ev,_ZTv0_n24_N8S20759C1D0Ev),
  ABISELECT(-240,-152),
  ABISELECT(-448,-284),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S20759C1D1Ev,_ZTvn12_n24_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S20759C1D0Ev,_ZTvn12_n24_N8S20759C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20759C1[];
extern void _ZN8S20759C4D1Ev();
extern void _ZN8S20759C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20759C4__A__8S20759C1[] = {
  ABISELECT(160,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C4[0]),
  (VTBL_ENTRY)&_ZN8S20759C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev)();
extern void ABISELECT(_ZThn160_N8S20759C4D1Ev,_ZThn108_N8S20759C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev)();
extern void ABISELECT(_ZThn160_N8S20759C4D0Ev,_ZThn108_N8S20759C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S20759C4__A__8S20759C1[] = {
  ABISELECT(-160,-108),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S20759C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev),
};
extern void _ZN8S20759C6D1Ev();
extern void _ZN8S20759C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20759C6__8S20759C1[] = {
  ABISELECT(40,36),
  ABISELECT(336,224),
  ABISELECT(272,180),
  ABISELECT(240,152),
  ABISELECT(208,136),
  ABISELECT(144,100),
  ABISELECT(160,108),
  ABISELECT(-16,-8),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&_ZN8S20759C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C6D0Ev,
};
extern void _ZN8S20759C7D1Ev();
extern void _ZN8S20759C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20759C78S20759C6__8S20759C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C7[0]),
  (VTBL_ENTRY)&_ZN8S20759C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C7D0Ev,
};
extern void _ZN9S20759C12D1Ev();
extern void _ZN9S20759C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C128S20759C78S20759C6__8S20759C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C12[0]),
  (VTBL_ENTRY)&_ZN9S20759C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20759C7D1Ev,_ZTv0_n16_N8S20759C7D1Ev)();
extern void ABISELECT(_ZThn176_N8S20759C7D1Ev,_ZThn116_N8S20759C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C7D0Ev,_ZTv0_n16_N8S20759C7D0Ev)();
extern void ABISELECT(_ZThn176_N8S20759C7D0Ev,_ZThn116_N8S20759C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20759C8__8S20759C78S20759C6__8S20759C1[] = {
  ABISELECT(-176,-116),
  ABISELECT(16,8),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S20759C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C7D1Ev,_ZTv0_n16_N8S20759C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C7D0Ev,_ZTv0_n16_N8S20759C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20759C7D1Ev,_ZTv0_n12_N8S20759C7D1Ev)();
extern void ABISELECT(_ZThn192_N8S20759C7D1Ev,_ZThn124_N8S20759C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C7D0Ev,_ZTv0_n12_N8S20759C7D0Ev)();
extern void ABISELECT(_ZThn192_N8S20759C7D0Ev,_ZThn124_N8S20759C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20759C78S20759C6__8S20759C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S20759C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C7D1Ev,_ZTv0_n12_N8S20759C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C7D0Ev,_ZTv0_n12_N8S20759C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C15D1Ev,_ZTv0_n16_N9S20759C15D1Ev)();
extern void _ZN9S20759C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C15D0Ev,_ZTv0_n16_N9S20759C15D0Ev)();
extern void _ZN9S20759C15D0Ev() __attribute__((weak));
extern void _ZN9S20759C152v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(104,64),
  0,
  ABISELECT(296,188),
  ABISELECT(232,144),
  ABISELECT(200,116),
  ABISELECT(168,100),
  0,
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C15D1Ev,_ZTv0_n16_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C15D0Ev,_ZTv0_n16_N9S20759C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20759C152v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S20759C15D1Ev,_ZTv0_n24_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn168_N9S20759C15D1Ev,_ZThn100_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20759C15D0Ev,_ZTv0_n24_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn168_N9S20759C15D0Ev,_ZThn100_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C16__9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(-168,-100),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C15D1Ev,_ZTv0_n24_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C15D0Ev,_ZTv0_n24_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn200_N9S20759C15D1Ev,_ZThn116_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn200_N9S20759C15D0Ev,_ZThn116_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(-200,-116),
  ABISELECT(-200,-116),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C15D1Ev,_ZTv0_n20_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn232_N9S20759C15D1Ev,_ZThn144_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C15D0Ev,_ZTv0_n20_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn232_N9S20759C15D0Ev,_ZThn144_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(-232,-144),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C15D1Ev,_ZTv0_n20_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C15D0Ev,_ZTv0_n20_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C15D1Ev,_ZTvn12_n20_N9S20759C15D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C15D0Ev,_ZTvn12_n20_N9S20759C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-248,-156),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C15D1Ev,_ZTvn12_n20_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C15D0Ev,_ZTvn12_n20_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S20759C15D1Ev,_ZThn88_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S20759C15D0Ev,_ZThn88_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S20759C15D1Ev,_ZTv0_n28_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn296_N9S20759C15D1Ev,_ZThn188_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20759C15D0Ev,_ZTv0_n28_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn296_N9S20759C15D0Ev,_ZThn188_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C19__9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(-296,-188),
  ABISELECT(-296,-188),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-296,-188),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20759C15D1Ev,_ZTv0_n28_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20759C15D0Ev,_ZTv0_n28_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N9S20759C15D1Ev,_ZTvn12_n28_N9S20759C15D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S20759C15D0Ev,_ZTvn12_n28_N9S20759C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C209S20759C19__9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(-312,-200),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-312,-200),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20759C15D1Ev,_ZTvn12_n28_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20759C15D0Ev,_ZTvn12_n28_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N9S20759C15D1Ev,_ZTvn32_n28_N9S20759C15D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S20759C15D0Ev,_ZTvn32_n28_N9S20759C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S20759C209S20759C19__9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(-352,-220),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20759C15D1Ev,_ZTvn32_n28_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20759C15D0Ev,_ZTvn32_n28_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn104_N9S20759C15D1Ev,_ZThn64_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn104_N9S20759C15D0Ev,_ZThn64_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn160_N8S20759C6D1Ev,_ZThn108_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn160_N8S20759C6D0Ev,_ZThn108_N8S20759C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20759C4__8S20759C6__8S20759C1[] = {
  ABISELECT(-160,-108),
  ABISELECT(-16,-8),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn144_N8S20759C6D1Ev,_ZThn100_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn144_N8S20759C6D0Ev,_ZThn100_N8S20759C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S20759C6__8S20759C1[] = {
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn176_N8S20759C6D1Ev,_ZThn116_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn176_N8S20759C6D0Ev,_ZThn116_N8S20759C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20759C8__8S20759C6__8S20759C1[] = {
  ABISELECT(-176,-116),
  ABISELECT(16,8),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S20759C6D1Ev,_ZThn124_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S20759C6D0Ev,_ZThn124_N8S20759C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20759C6__8S20759C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S20759C6D1Ev,_ZThn36_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S20759C6D0Ev,_ZThn36_N8S20759C6D0Ev)() __attribute__((weak));
extern void _ZN9S20759C152v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C15__8S20759C6__8S20759C1[] = {
  ABISELECT(104,64),
  0,
  ABISELECT(296,188),
  ABISELECT(232,144),
  ABISELECT(200,116),
  ABISELECT(168,100),
  ABISELECT(-40,-36),
  ABISELECT(152,88),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20759C152v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20759C6D1Ev,_ZTv0_n24_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn208_N8S20759C6D1Ev,_ZThn136_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20759C6D0Ev,_ZTv0_n24_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn208_N8S20759C6D0Ev,_ZThn136_N8S20759C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C16__8S20759C6__8S20759C1[] = {
  ABISELECT(-208,-136),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20759C6D1Ev,_ZTv0_n24_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20759C6D0Ev,_ZTv0_n24_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn240_N8S20759C6D1Ev,_ZThn152_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn240_N8S20759C6D0Ev,_ZThn152_N8S20759C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__A1__8S20759C6__8S20759C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-240,-152),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20759C6D1Ev,_ZTv0_n20_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn272_N8S20759C6D1Ev,_ZThn180_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20759C6D0Ev,_ZTv0_n20_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn272_N8S20759C6D0Ev,_ZThn180_N8S20759C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__8S20759C6__8S20759C1[] = {
  ABISELECT(-272,-180),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20759C6D1Ev,_ZTv0_n20_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20759C6D0Ev,_ZTv0_n20_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S20759C6D1Ev,_ZTvn12_n20_N8S20759C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S20759C6D0Ev,_ZTvn12_n20_N8S20759C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__8S20759C6__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-288,-192),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20759C6D1Ev,_ZTvn12_n20_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20759C6D0Ev,_ZTvn12_n20_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S20759C6D1Ev,_ZTv0_n28_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn336_N8S20759C6D1Ev,_ZThn224_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20759C6D0Ev,_ZTv0_n28_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn336_N8S20759C6D0Ev,_ZThn224_N8S20759C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C19__8S20759C6__8S20759C1[] = {
  ABISELECT(-336,-224),
  ABISELECT(-296,-188),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-336,-224),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20759C6D1Ev,_ZTv0_n28_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20759C6D0Ev,_ZTv0_n28_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N8S20759C6D1Ev,_ZTvn12_n28_N8S20759C6D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S20759C6D0Ev,_ZTvn12_n28_N8S20759C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C209S20759C19__8S20759C6__8S20759C1[] = {
  ABISELECT(-312,-200),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-352,-236),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20759C6D1Ev,_ZTvn12_n28_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20759C6D0Ev,_ZTvn12_n28_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N8S20759C6D1Ev,_ZTvn32_n28_N8S20759C6D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20759C6D0Ev,_ZTvn32_n28_N8S20759C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S20759C209S20759C19__8S20759C6__8S20759C1[] = {
  ABISELECT(-392,-256),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20759C6D1Ev,_ZTvn32_n28_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20759C6D0Ev,_ZTvn32_n28_N8S20759C6D0Ev),
};
extern void _ZN9S20759C23D1Ev();
extern void _ZN9S20759C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C23__8S20759C1[] = {
  ABISELECT(352,212),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(176,100),
  ABISELECT(208,128),
  ABISELECT(128,72),
  ABISELECT(336,208),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&_ZN9S20759C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C23D0Ev,
};
extern void _ZN9S20759C24D1Ev();
extern void _ZN9S20759C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C249S20759C23__8S20759C1[] = {
  ABISELECT(64,36),
  ABISELECT(320,196),
  ABISELECT(-40,-28),
  ABISELECT(112,60),
  ABISELECT(192,116),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&_ZN9S20759C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C24D0Ev,
};
extern void _ZN9S20759C20D1Ev();
extern void _ZN9S20759C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C209S20759C249S20759C23__A1__8S20759C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(112,60),
  ABISELECT(192,116),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&_ZN9S20759C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C20D0Ev,
};
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[] = {
  ABISELECT(112,60),
  ABISELECT(192,116),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn160_N9S20759C16D1Ev,_ZThn88_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn160_N9S20759C16D0Ev,_ZThn88_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn192_N9S20759C16D1Ev,_ZThn116_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn192_N9S20759C16D0Ev,_ZThn116_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[] = {
  ABISELECT(-192,-116),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn112_N9S20759C16D1Ev,_ZThn60_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn112_N9S20759C16D0Ev,_ZThn60_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn160_N9S20759C20D1Ev,_ZThn88_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn160_N9S20759C20D0Ev,_ZThn88_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C209S20759C249S20759C23__A1__8S20759C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn192_N9S20759C20D1Ev,_ZThn116_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn192_N9S20759C20D0Ev,_ZThn116_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C209S20759C249S20759C23__A1__8S20759C1[] = {
  ABISELECT(-192,-116),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C209S20759C249S20759C23__A1__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn112_N9S20759C20D1Ev,_ZThn60_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn112_N9S20759C20D0Ev,_ZThn60_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C209S20759C249S20759C23__A1__8S20759C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C209S20759C249S20759C23__A1__8S20759C1[] = {
  ABISELECT(40,28),
  ABISELECT(152,88),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn112_N9S20759C24D1Ev,_ZThn60_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn112_N9S20759C24D0Ev,_ZThn60_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C249S20759C23__8S20759C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C24D1Ev,_ZTv0_n20_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn192_N9S20759C24D1Ev,_ZThn116_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C24D0Ev,_ZTv0_n20_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn192_N9S20759C24D0Ev,_ZThn116_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C249S20759C23__8S20759C1[] = {
  ABISELECT(-192,-116),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C24D1Ev,_ZTv0_n20_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C24D0Ev,_ZTv0_n20_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn160_N9S20759C24D1Ev,_ZThn88_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn160_N9S20759C24D0Ev,_ZThn88_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C249S20759C23__8S20759C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C24D1Ev,_ZTvn12_n20_N9S20759C24D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C24D0Ev,_ZTvn12_n20_N9S20759C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C249S20759C23__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C24D1Ev,_ZTvn12_n20_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C24D0Ev,_ZTvn12_n20_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C24D1Ev,_ZTv0_n16_N9S20759C24D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20759C24D0Ev,_ZTv0_n16_N9S20759C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C249S20759C23__8S20759C1[] = {
  ABISELECT(40,28),
  ABISELECT(152,88),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C24D1Ev,_ZTv0_n16_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C24D0Ev,_ZTv0_n16_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn64_N9S20759C24D1Ev,_ZThn36_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn64_N9S20759C24D0Ev,_ZThn36_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S20759C249S20759C23__8S20759C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C23D1Ev,_ZThn12_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C23D0Ev,_ZThn12_N9S20759C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C24__9S20759C23__8S20759C1[] = {
  ABISELECT(64,36),
  ABISELECT(320,196),
  ABISELECT(-40,-28),
  ABISELECT(112,60),
  ABISELECT(192,116),
  ABISELECT(160,88),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C23D1Ev,_ZThn12_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C23D0Ev,_ZThn12_N9S20759C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn128_N9S20759C23D1Ev,_ZThn72_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn128_N9S20759C23D0Ev,_ZThn72_N9S20759C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C23__8S20759C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C23D1Ev,_ZTv0_n20_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn208_N9S20759C23D1Ev,_ZThn128_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C23D0Ev,_ZTv0_n20_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn208_N9S20759C23D0Ev,_ZThn128_N9S20759C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C23__8S20759C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C23D1Ev,_ZTv0_n20_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C23D0Ev,_ZTv0_n20_N9S20759C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn176_N9S20759C23D1Ev,_ZThn100_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn176_N9S20759C23D0Ev,_ZThn100_N9S20759C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C23__8S20759C1[] = {
  ABISELECT(-176,-100),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C23D1Ev,_ZTvn12_n20_N9S20759C23D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C23D0Ev,_ZTvn12_n20_N9S20759C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C23__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C23D1Ev,_ZTvn12_n20_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C23D0Ev,_ZTvn12_n20_N9S20759C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C23D1Ev,_ZTv0_n16_N9S20759C23D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20759C23D0Ev,_ZTv0_n16_N9S20759C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C23__8S20759C1[] = {
  ABISELECT(24,16),
  ABISELECT(152,88),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C23D1Ev,_ZTv0_n16_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C23D0Ev,_ZTv0_n16_N9S20759C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C23D1Ev,_ZThn48_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C23D0Ev,_ZThn48_N9S20759C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S20759C23__8S20759C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20759C23D1Ev,_ZTv0_n24_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn352_N9S20759C23D1Ev,_ZThn212_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20759C23D0Ev,_ZTv0_n24_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn352_N9S20759C23D0Ev,_ZThn212_N9S20759C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C25__9S20759C23__8S20759C1[] = {
  ABISELECT(-352,-212),
  ABISELECT(-16,-4),
  ABISELECT(-224,-140),
  ABISELECT(-176,-112),
  ABISELECT(-352,-212),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C23D1Ev,_ZTv0_n24_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C23D0Ev,_ZTv0_n24_N9S20759C23D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N9S20759C23D1Ev,_ZTvn12_n24_N9S20759C23D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S20759C23D0Ev,_ZTvn12_n24_N9S20759C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C179S20759C25__A2__9S20759C23__8S20759C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-368,-224),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S20759C23D1Ev,_ZTvn12_n24_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S20759C23D0Ev,_ZTvn12_n24_N9S20759C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20759C2__8S20759C1[] = {
  ABISELECT(-152,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C2[0]),
};
extern void _ZN8S20759C4D1Ev();
extern void _ZN8S20759C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20759C4__A1__8S20759C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C4[0]),
  (VTBL_ENTRY)&_ZN8S20759C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S20759C4__A1__8S20759C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20759C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev),
};
extern void _ZN8S20759C8D1Ev();
extern void _ZN8S20759C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20759C8__8S20759C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C8[0]),
  (VTBL_ENTRY)&_ZN8S20759C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20759C8D1Ev,_ZThn8_N8S20759C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20759C8D0Ev,_ZThn8_N8S20759C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20759C8__8S20759C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20759C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev),
};
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C16__8S20759C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20759C16D1Ev,_ZThn16_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S20759C16D0Ev,_ZThn16_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C16__8S20759C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C16__8S20759C1[] = {
  ABISELECT(-64,-44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C16__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C16__8S20759C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C17__8S20759C1[] = {
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__8S20759C1[] = {
  ABISELECT(-96,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C17__8S20759C1[] = {
  ABISELECT(96,68),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C17__8S20759C1[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C17__8S20759C1[] = {
  ABISELECT(80,56),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void _ZN9S20759C19D1Ev();
extern void _ZN9S20759C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C19__8S20759C1[] = {
  ABISELECT(-296,-188),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&_ZN9S20759C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C19D0Ev,
};
extern void _ZN9S20759C20D1Ev();
extern void _ZN9S20759C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C209S20759C19__8S20759C1[] = {
  ABISELECT(-312,-200),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&_ZN9S20759C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C20D0Ev,
};
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C169S20759C209S20759C19__A1__8S20759C1[] = {
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C169S20759C209S20759C19__A1__8S20759C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C169S20759C209S20759C19__A1__8S20759C1[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C19__A1__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C19__A1__8S20759C1[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C209S20759C19__8S20759C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C209S20759C19__8S20759C1[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C209S20759C19__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C209S20759C19__8S20759C1[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C209S20759C19__8S20759C1[] = {
  ABISELECT(312,200),
  ABISELECT(152,88),
  ABISELECT(312,200),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C19D1Ev,_ZThn12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C19D0Ev,_ZThn12_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C20__9S20759C19__8S20759C1[] = {
  ABISELECT(-312,-200),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C19D1Ev,_ZThn12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C19D0Ev,_ZThn12_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C19__8S20759C1[] = {
  ABISELECT(96,72),
  ABISELECT(96,72),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C19D1Ev,_ZTv0_n20_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20759C19D0Ev,_ZTv0_n20_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C19__8S20759C1[] = {
  ABISELECT(64,44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C19D1Ev,_ZTv0_n20_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C19D0Ev,_ZTv0_n20_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C19D1Ev,_ZTvn12_n20_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C19D0Ev,_ZTvn12_n20_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C19__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C19D1Ev,_ZTvn12_n20_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C19D0Ev,_ZTvn12_n20_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__9S20759C19__8S20759C1[] = {
  ABISELECT(144,100),
  ABISELECT(144,100),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C19D1Ev,_ZTv0_n16_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20759C19D0Ev,_ZTv0_n16_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C19__8S20759C1[] = {
  ABISELECT(296,188),
  ABISELECT(152,88),
  ABISELECT(296,188),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C19D1Ev,_ZTv0_n16_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C19D0Ev,_ZTv0_n16_N9S20759C19D0Ev),
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__8S20759C1[] = {
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn152_N9S20759C18D1Ev,_ZThn88_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn152_N9S20759C18D0Ev,_ZThn88_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C18__A1__8S20759C1[] = {
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void _ZN9S20759C25D1Ev();
extern void _ZN9S20759C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C25__8S20759C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(-224,-140),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&_ZN9S20759C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C25D0Ev,
};
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C179S20759C25__A1__8S20759C1[] = {
  ABISELECT(-224,-140),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C179S20759C25__A2__8S20759C1[] = {
  ABISELECT(-240,-152),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C179S20759C25__A2__8S20759C1[] = {
  ABISELECT(240,152),
  ABISELECT(240,152),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C179S20759C25__A1__8S20759C1[] = {
  ABISELECT(176,112),
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C179S20759C25__A1__8S20759C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C179S20759C25__A1__8S20759C1[] = {
  ABISELECT(224,140),
  ABISELECT(224,140),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C25__8S20759C1[] = {
  ABISELECT(176,112),
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C25D1Ev,_ZThn12_N9S20759C25D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C25D0Ev,_ZThn12_N9S20759C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C25__8S20759C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C25D1Ev,_ZThn12_N9S20759C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C25D0Ev,_ZThn12_N9S20759C25D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C25__8S20759C1[] = {
  ABISELECT(224,140),
  ABISELECT(224,140),
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev),
};
static  VTT_ENTRY vtt_S20759C1[] = {
  {&(_ZTV8S20759C1[18]),  18,162},
  {&(_tg__ZTV8S20759C4__A__8S20759C1[3]),  3,5},
  {&(_tg__ZTV11S20759C5_nt__8S20759C4__A__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20759C6__8S20759C1[14]),  14,16},
  {&(_tg__ZTV8S20759C78S20759C6__8S20759C1[7]),  7,9},
  {&(_tg__ZTV9S20759C128S20759C78S20759C6__8S20759C1[4]),  4,6},
  {&(_tg__ZTV8S20759C8__8S20759C78S20759C6__8S20759C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S20759C78S20759C6__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C158S20759C6__8S20759C1[10]),  10,13},
  {&(_tg__ZTV9S20759C16__9S20759C158S20759C6__8S20759C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20759C158S20759C6__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C158S20759C6__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C158S20759C6__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C158S20759C6__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C19__9S20759C158S20759C6__8S20759C1[7]),  7,9},
  {&(_tg__ZTV9S20759C209S20759C19__9S20759C158S20759C6__8S20759C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S20759C209S20759C19__9S20759C158S20759C6__8S20759C1[2]),  2,4},
  {&(_tg__ZTV9S20759C158S20759C6__8S20759C1[10]),  10,13},
  {&(_tg__ZTV11S20759C5_nt__9S20759C158S20759C6__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20759C4__8S20759C6__8S20759C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__8S20759C6__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20759C8__8S20759C6__8S20759C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S20759C6__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C15__8S20759C6__8S20759C1[10]),  10,13},
  {&(_tg__ZTV9S20759C16__8S20759C6__8S20759C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__A1__8S20759C6__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__8S20759C6__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__8S20759C6__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C19__8S20759C6__8S20759C1[7]),  7,9},
  {&(_tg__ZTV9S20759C209S20759C19__8S20759C6__8S20759C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S20759C209S20759C19__8S20759C6__8S20759C1[2]),  2,4},
  {&(_tg__ZTV9S20759C15__8S20759C6__8S20759C1[10]),  10,13},
  {&(_tg__ZTV9S20759C23__8S20759C1[9]),  9,11},
  {&(_tg__ZTV9S20759C249S20759C23__8S20759C1[8]),  8,10},
  {&(_tg__ZTV9S20759C209S20759C249S20759C23__A1__8S20759C1[6]),  6,8},
  {&(_tg__ZTV9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C209S20759C249S20759C23__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C209S20759C249S20759C23__A1__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C209S20759C249S20759C23__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C209S20759C249S20759C23__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C209S20759C249S20759C23__A1__8S20759C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__9S20759C249S20759C23__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C249S20759C23__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C249S20759C23__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C249S20759C23__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C249S20759C23__8S20759C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__9S20759C249S20759C23__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C24__9S20759C23__8S20759C1[8]),  8,10},
  {&(_tg__ZTV8S20760C9__A1__9S20759C23__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C23__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C23__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C23__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C23__8S20759C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__9S20759C23__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C25__9S20759C23__8S20759C1[6]),  6,8},
  {&(_tg__ZTV9S20759C189S20759C179S20759C25__A2__9S20759C23__8S20759C1[3]),  3,5},
  {&(_ZTV8S20759C1[81]),  81,162},
  {&(_ZTV8S20759C1[84]),  84,162},
  {&(_ZTV8S20759C1[34]),  34,162},
  {&(_ZTV8S20759C1[90]),  90,162},
  {&(_ZTV8S20759C1[96]),  96,162},
  {&(_ZTV8S20759C1[101]),  101,162},
  {&(_ZTV8S20759C1[46]),  46,162},
  {&(_ZTV8S20759C1[109]),  109,162},
  {&(_ZTV8S20759C1[114]),  114,162},
  {&(_ZTV8S20759C1[121]),  121,162},
  {&(_ZTV8S20759C1[126]),  126,162},
  {&(_ZTV8S20759C1[135]),  135,162},
  {&(_ZTV8S20759C1[143]),  143,162},
  {&(_ZTV8S20759C1[147]),  147,162},
  {&(_ZTV8S20759C1[46]),  46,162},
  {&(_ZTV8S20759C1[62]),  62,162},
  {&(_ZTV8S20759C1[72]),  72,162},
  {&(_ZTV8S20759C1[155]),  155,162},
  {&(_ZTV8S20759C1[160]),  160,162},
  {&(_tg__ZTV8S20759C2__8S20759C1[3]),  3,3},
  {&(_tg__ZTV8S20759C4__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV11S20759C5_nt__8S20759C4__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20759C8__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S20759C8__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C16__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C16__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C16__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C16__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C16__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__8S20759C1[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C17__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C17__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C17__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C17__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C17__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C19__8S20759C1[6]),  6,8},
  {&(_tg__ZTV9S20759C209S20759C19__8S20759C1[6]),  6,8},
  {&(_tg__ZTV9S20759C169S20759C209S20759C19__A1__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C169S20759C209S20759C19__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C169S20759C209S20759C19__A1__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C19__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C19__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C209S20759C19__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C209S20759C19__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C209S20759C19__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C209S20759C19__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C209S20759C19__8S20759C1[4]),  4,6},
  {&(_tg__ZTV9S20759C20__9S20759C19__8S20759C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20759C19__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C19__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C19__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__9S20759C19__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C19__8S20759C1[4]),  4,6},
  {&(_tg__ZTV9S20759C18__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C18__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C25__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20759C179S20759C25__A1__8S20759C1[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C179S20759C25__A2__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C179S20759C25__A2__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C179S20759C25__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C179S20759C25__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C179S20759C25__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C25__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C25__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C25__8S20759C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20759C1[];
extern  VTBL_ENTRY _ZTV8S20759C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C1[];
static VTBL_ENTRY alt_thunk_names117[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C18D0Ev,_ZThn88_N9S20759C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C18D1Ev,_ZThn88_N9S20759C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C8D0Ev,_ZThn8_N8S20759C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C8D1Ev,_ZThn8_N8S20759C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C23D0Ev,_ZTv0_n24_N9S20759C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20759C23D0Ev,_ZThn212_N9S20759C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C23D1Ev,_ZTv0_n24_N9S20759C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20759C23D1Ev,_ZThn212_N9S20759C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C23D0Ev,_ZTv0_n20_N9S20759C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20759C23D0Ev,_ZThn128_N9S20759C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C23D1Ev,_ZTv0_n20_N9S20759C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20759C23D1Ev,_ZThn128_N9S20759C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C23D0Ev,_ZThn48_N9S20759C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20759C23D0Ev,_ZThn100_N9S20759C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20759C23D0Ev,_ZThn72_N9S20759C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C23D1Ev,_ZThn48_N9S20759C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20759C23D1Ev,_ZThn100_N9S20759C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20759C23D1Ev,_ZThn72_N9S20759C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C24D0Ev,_ZTv0_n20_N9S20759C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20759C24D0Ev,_ZThn116_N9S20759C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C24D1Ev,_ZTv0_n20_N9S20759C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20759C24D1Ev,_ZThn116_N9S20759C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C24D0Ev,_ZThn36_N9S20759C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C24D0Ev,_ZThn88_N9S20759C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20759C24D0Ev,_ZThn60_N9S20759C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C24D1Ev,_ZThn36_N9S20759C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C24D1Ev,_ZThn88_N9S20759C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20759C24D1Ev,_ZThn60_N9S20759C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20759C20D0Ev,_ZThn116_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20759C20D1Ev,_ZThn116_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20759C20D0Ev,_ZThn60_N9S20759C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C20D0Ev,_ZThn88_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20759C20D1Ev,_ZThn60_N9S20759C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C20D1Ev,_ZThn88_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20759C16D0Ev,_ZThn116_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20759C16D1Ev,_ZThn116_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20759C16D0Ev,_ZThn16_N9S20759C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20759C16D0Ev,_ZThn60_N9S20759C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C16D0Ev,_ZThn88_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20759C16D1Ev,_ZThn16_N9S20759C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20759C16D1Ev,_ZThn60_N9S20759C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C16D1Ev,_ZThn88_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20759C6D0Ev,_ZTv0_n28_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20759C6D0Ev,_ZThn224_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20759C6D1Ev,_ZTv0_n28_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20759C6D1Ev,_ZThn224_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20759C6D0Ev,_ZTv0_n20_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20759C6D0Ev,_ZThn180_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20759C6D1Ev,_ZTv0_n20_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20759C6D1Ev,_ZThn180_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20759C6D0Ev,_ZTv0_n24_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20759C6D0Ev,_ZThn136_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20759C6D1Ev,_ZTv0_n24_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20759C6D1Ev,_ZThn136_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20759C6D0Ev,_ZThn152_N8S20759C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20759C6D0Ev,_ZThn124_N8S20759C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20759C6D0Ev,_ZThn100_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20759C6D1Ev,_ZThn152_N8S20759C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20759C6D1Ev,_ZThn124_N8S20759C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20759C6D1Ev,_ZThn100_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20759C6D0Ev,_ZThn36_N8S20759C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20759C6D0Ev,_ZThn116_N8S20759C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20759C6D0Ev,_ZThn108_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20759C6D1Ev,_ZThn36_N8S20759C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20759C6D1Ev,_ZThn116_N8S20759C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20759C6D1Ev,_ZThn108_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20759C15D0Ev,_ZTv0_n28_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N9S20759C15D0Ev,_ZThn188_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20759C15D1Ev,_ZTv0_n28_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N9S20759C15D1Ev,_ZThn188_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C15D0Ev,_ZTv0_n20_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20759C15D0Ev,_ZThn144_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C15D1Ev,_ZTv0_n20_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20759C15D1Ev,_ZThn144_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20759C15D0Ev,_ZThn64_N9S20759C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C15D0Ev,_ZThn88_N9S20759C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20759C15D0Ev,_ZThn116_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20759C15D1Ev,_ZThn64_N9S20759C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C15D1Ev,_ZThn88_N9S20759C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20759C15D1Ev,_ZThn116_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C15D0Ev,_ZTv0_n24_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C15D0Ev,_ZThn100_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C15D1Ev,_ZTv0_n24_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C15D1Ev,_ZThn100_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C15D0Ev,_ZTv0_n16_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)_ZN9S20759C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C15D1Ev,_ZTv0_n16_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)_ZN9S20759C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C7D0Ev,_ZTv0_n12_N8S20759C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20759C7D0Ev,_ZThn124_N8S20759C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C7D1Ev,_ZTv0_n12_N8S20759C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20759C7D1Ev,_ZThn124_N8S20759C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C7D0Ev,_ZTv0_n16_N8S20759C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20759C7D0Ev,_ZThn116_N8S20759C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C7D1Ev,_ZTv0_n16_N8S20759C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20759C7D1Ev,_ZThn116_N8S20759C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20759C4D0Ev,_ZThn108_N8S20759C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20759C4D1Ev,_ZThn108_N8S20759C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20759C1D0Ev,_ZTv0_n28_N8S20759C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20759C1D0Ev,_ZThn232_N8S20759C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20759C1D1Ev,_ZTv0_n28_N8S20759C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20759C1D1Ev,_ZThn232_N8S20759C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20759C1D0Ev,_ZTv0_n20_N8S20759C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20759C1D0Ev,_ZThn188_N8S20759C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20759C1D1Ev,_ZTv0_n20_N8S20759C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20759C1D1Ev,_ZThn188_N8S20759C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20759C1D0Ev,_ZTv0_n24_N8S20759C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N8S20759C1D0Ev,_ZThn272_N8S20759C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20759C1D0Ev,_ZThn144_N8S20759C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20759C1D1Ev,_ZTv0_n24_N8S20759C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N8S20759C1D1Ev,_ZThn272_N8S20759C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20759C1D1Ev,_ZThn144_N8S20759C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C1D0Ev,_ZTv0_n12_N8S20759C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20759C1D0Ev,_ZThn160_N8S20759C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20759C1D0Ev,_ZThn132_N8S20759C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20759C1D0Ev,_ZThn108_N8S20759C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C1D1Ev,_ZTv0_n12_N8S20759C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20759C1D1Ev,_ZThn160_N8S20759C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20759C1D1Ev,_ZThn132_N8S20759C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20759C1D1Ev,_ZThn108_N8S20759C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C1D0Ev,_ZTv0_n16_N8S20759C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20759C1D0Ev,_ZThn124_N8S20759C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20759C1D0Ev,_ZThn116_N8S20759C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20759C1D0Ev,_ZThn44_N8S20759C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C1D1Ev,_ZTv0_n16_N8S20759C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20759C1D1Ev,_ZThn124_N8S20759C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20759C1D1Ev,_ZThn116_N8S20759C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20759C1D1Ev,_ZThn44_N8S20759C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C1 = {  "S20759C1", // class name
  bases_S20759C1, 42,
  &(vtc_S20759C1[0]), // expected_vtbl_contents
  &(vtt_S20759C1[0]), // expected_vtt_contents
  ABISELECT(688,440), // object size
  NSPAIRA(_ZTI8S20759C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20759C1),162, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20759C1),125, //virtual table table var
  33, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names117,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C5  : S4228C37 , virtual S4228C27 {
  ::S4228C37 s20469c5f0;
  ~S20469C5(); // tgen
  S20469C5(); // tgen
};
//SIG(-1 S20469C5) C1{ BC2{ m} VBC3{ m} FC2}


S20469C5 ::~S20469C5(){ note_dtor("S20469C5", this);} // tgen
S20469C5 ::S20469C5(){ note_ctor("S20469C5", this);} // tgen

static void Test_S20469C5()
{
  extern Class_Descriptor cd_S20469C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20469C5, buf);
    S20469C5 *dp, &lv = *(dp=new (buf) S20469C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20469C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C5)");
    check_base_class_offset(lv, (S4228C37*), 0, "S20469C5");
    check_base_class_offset(lv, (S4228C27*), 0, "S20469C5");
    check_field_offset(lv, s20469c5f0, ABISELECT(8,4), "S20469C5.s20469c5f0");
    test_class_info(&lv, &cd_S20469C5);
    dp->~S20469C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C5(Test_S20469C5, "S20469C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20469C5C1Ev();
extern void _ZN8S20469C5D1Ev();
Name_Map name_map_S20469C5[] = {
  NSPAIR(_ZN8S20469C5C1Ev),
  NSPAIR(_ZN8S20469C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S20469C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20469C5[];
static  VTBL_ENTRY vtc_S20469C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
extern VTBL_ENTRY _ZTV8S20469C5[];
static  VTT_ENTRY vtt_S20469C5[] = {
  {&(_ZTV8S20469C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
Class_Descriptor cd_S20469C5 = {  "S20469C5", // class name
  bases_S20469C5, 2,
  &(vtc_S20469C5[0]), // expected_vtbl_contents
  &(vtt_S20469C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20469C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20469C5),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20469C5),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C8  : S4228C27 , virtual S4228C37 , virtual S20469C5 {
  void *s20469c8f0;
  ~S20469C8(); // tgen
  S20469C8(); // tgen
};
//SIG(-1 S20469C8) C1{ BC2{ m} VBC3{ m} VBC4{ BC3 VBC2 FC3} Fp}


S20469C8 ::~S20469C8(){ note_dtor("S20469C8", this);} // tgen
S20469C8 ::S20469C8(){ note_ctor("S20469C8", this);} // tgen

static void Test_S20469C8()
{
  extern Class_Descriptor cd_S20469C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20469C8, buf);
    S20469C8 *dp, &lv = *(dp=new (buf) S20469C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20469C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C8)");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), 0, "S20469C8");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), 0, "S20469C8");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(16,8), "S20469C8");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(25,13), "S20469C8");
    check_base_class_offset(lv, (S20469C5*), ABISELECT(16,8), "S20469C8");
    check_field_offset(lv, s20469c8f0, ABISELECT(8,4), "S20469C8.s20469c8f0");
    test_class_info(&lv, &cd_S20469C8);
    dp->~S20469C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C8(Test_S20469C8, "S20469C8", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20469C8C1Ev();
extern void _ZN8S20469C8D1Ev();
Name_Map name_map_S20469C8[] = {
  NSPAIR(_ZN8S20469C8C1Ev),
  NSPAIR(_ZN8S20469C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
static Base_Class bases_S20469C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20469C8[];
static  VTBL_ENTRY vtc_S20469C8[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
extern VTBL_ENTRY _ZTV8S20469C8[];
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C8[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTT_ENTRY vtt_S20469C8[] = {
  {&(_ZTV8S20469C8[5]),  5,8},
  {&(_ZTV8S20469C8[8]),  8,8},
  {&(_tg__ZTV8S20469C5__8S20469C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
Class_Descriptor cd_S20469C8 = {  "S20469C8", // class name
  bases_S20469C8, 5,
  &(vtc_S20469C8[0]), // expected_vtbl_contents
  &(vtt_S20469C8[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20469C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20469C8),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20469C8),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C3  : S3423C8_nt , virtual S20469C5 , S20469C8 , S4228C27 {
  char s20469c3f0;
  virtual  ~S20469C3(); // _ZN8S20469C3D2Ev
  S20469C3(); // tgen
};
//SIG(-1 S20469C3) C1{ BC2{ m Fi} VBC3{ BC4{ m} VBC5{ m} FC4} BC6{ BC5 VBC4 VBC3 Fp} BC5 vd Fc}


 S20469C3 ::~S20469C3(){ note_dtor("S20469C3", this);}
S20469C3 ::S20469C3(){ note_ctor("S20469C3", this);} // tgen

static void Test_S20469C3()
{
  extern Class_Descriptor cd_S20469C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S20469C3, buf);
    S20469C3 *dp, &lv = *(dp=new (buf) S20469C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S20469C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C3)");
    check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(16,8), "S20469C3");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(24,16), "S20469C3");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(33,21), "S20469C3");
    check_base_class_offset(lv, (S20469C5*), ABISELECT(24,16), "S20469C3");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*), ABISELECT(24,16), "S20469C3");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*), 0, "S20469C3");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*), 0, "S20469C3");
    check_base_class_offset(lv, (S20469C8*), 0, "S20469C3");
    /*is_ambiguous_... S20469C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), ABISELECT(20,12), "S20469C3");
    check_field_offset(lv, s20469c3f0, ABISELECT(20,12), "S20469C3.s20469c3f0");
    test_class_info(&lv, &cd_S20469C3);
    dp->~S20469C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C3(Test_S20469C3, "S20469C3", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S20469C3C1Ev();
extern void _ZN8S20469C3D2Ev();
Name_Map name_map_S20469C3[] = {
  NSPAIR(_ZN8S20469C3C1Ev),
  NSPAIR(_ZN8S20469C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S20469C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(33,21), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(24,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20469C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20469C3[];
extern void _ZN8S20469C3D1Ev();
extern void _ZN8S20469C3D0Ev();
static  VTBL_ENTRY vtc_S20469C3[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
  (VTBL_ENTRY)&_ZN8S20469C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C3D0Ev,
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
};
extern VTBL_ENTRY _ZTV8S20469C3[];
static  VTBL_ENTRY _tg__ZTV8S20469C8__8S20469C3[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C8__8S20469C3[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C3[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTT_ENTRY vtt_S20469C3[] = {
  {&(_ZTV8S20469C3[5]),  5,10},
  {&(_tg__ZTV8S20469C8__8S20469C3[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C8__8S20469C3[3]),  3,3},
  {&(_ZTV8S20469C3[10]),  10,10},
  {&(_tg__ZTV8S20469C5__8S20469C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20469C3[];
extern  VTBL_ENTRY _ZTV8S20469C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C3[];
Class_Descriptor cd_S20469C3 = {  "S20469C3", // class name
  bases_S20469C3, 8,
  &(vtc_S20469C3[0]), // expected_vtbl_contents
  &(vtt_S20469C3[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S20469C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20469C3),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20469C3),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C2  : virtual S20469C3 {
  int s20469c2f0;
  virtual  ~S20469C2(); // _ZN8S20469C2D2Ev
  S20469C2(); // tgen
};
//SIG(-1 S20469C2) C1{ VBC2{ BC3{ m Fi} VBC4{ BC5{ m} VBC6{ m} FC5} BC7{ BC6 VBC5 VBC4 Fp} BC6 vd Fc} vd Fi}


 S20469C2 ::~S20469C2(){ note_dtor("S20469C2", this);}
S20469C2 ::S20469C2(){ note_ctor("S20469C2", this);} // tgen

static void Test_S20469C2()
{
  extern Class_Descriptor cd_S20469C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S20469C2, buf);
    S20469C2 *dp, &lv = *(dp=new (buf) S20469C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S20469C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C2)");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C3*), ABISELECT(32,16), "S20469C2");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(40,24), "S20469C2");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), 0, "S20469C2");
    check_base_class_offset(lv, (S20469C5*)(S20469C3*), ABISELECT(40,24), "S20469C2");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C3*), ABISELECT(40,24), "S20469C2");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C3*), ABISELECT(16,8), "S20469C2");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C3*), 0, "S20469C2");
    check_base_class_offset(lv, (S20469C8*)(S20469C3*), ABISELECT(16,8), "S20469C2");
    /*is_ambiguous_... S20469C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C3*), ABISELECT(36,20), "S20469C2");
    check_base_class_offset(lv, (S20469C3*), ABISELECT(16,8), "S20469C2");
    check_field_offset(lv, s20469c2f0, ABISELECT(8,4), "S20469C2.s20469c2f0");
    test_class_info(&lv, &cd_S20469C2);
    dp->~S20469C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C2(Test_S20469C2, "S20469C2", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S20469C2C1Ev();
extern void _ZN8S20469C2D2Ev();
Name_Map name_map_S20469C2[] = {
  NSPAIR(_ZN8S20469C2C1Ev),
  NSPAIR(_ZN8S20469C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C3;
extern VTBL_ENTRY _ZTI8S20469C3[];
extern  VTBL_ENTRY _ZTV8S20469C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C3[];
static Base_Class bases_S20469C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(40,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20469C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(36,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20469C3,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20469C2[];
extern void _ZN8S20469C2D1Ev();
extern void _ZN8S20469C2D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20469C2D1Ev,_ZThn8_N8S20469C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20469C2D0Ev,_ZThn8_N8S20469C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20469C2[] = {
  0,
  0,
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&_ZN8S20469C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C2D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
};
extern VTBL_ENTRY _ZTV8S20469C2[];
extern void _ZN8S20469C3D1Ev();
extern void _ZN8S20469C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
  (VTBL_ENTRY)&_ZN8S20469C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C88S20469C3__8S20469C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C88S20469C3__8S20469C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C3__8S20469C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C2[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTT_ENTRY vtt_S20469C2[] = {
  {&(_ZTV8S20469C2[6]),  6,19},
  {&(_ZTV8S20469C2[14]),  14,19},
  {&(_ZTV8S20469C2[19]),  19,19},
  {&(_tg__ZTV8S20469C3__8S20469C2[5]),  5,7},
  {&(_tg__ZTV8S20469C88S20469C3__8S20469C2[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C88S20469C3__8S20469C2[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C3__8S20469C2[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20469C2[];
extern  VTBL_ENTRY _ZTV8S20469C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C2[];
static VTBL_ENTRY alt_thunk_names118[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C2D0Ev,_ZThn8_N8S20469C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C2D1Ev,_ZThn8_N8S20469C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20469C2 = {  "S20469C2", // class name
  bases_S20469C2, 9,
  &(vtc_S20469C2[0]), // expected_vtbl_contents
  &(vtt_S20469C2[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S20469C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20469C2),19, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20469C2),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names118,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C11_nt  : virtual S4228C37 , S4228C27 {
  ~S20469C11_nt(); // tgen
  S20469C11_nt(); // tgen
};
//SIG(-1 S20469C11_nt) C1{ VBC2{ m} BC3{ m}}


S20469C11_nt ::~S20469C11_nt(){ note_dtor("S20469C11_nt", this);} // tgen
S20469C11_nt ::S20469C11_nt(){ note_ctor("S20469C11_nt", this);} // tgen

//skip512 S20469C11_nt

#else // __cplusplus

extern void _ZN12S20469C11_ntC1Ev();
extern void _ZN12S20469C11_ntD1Ev();
Name_Map name_map_S20469C11_nt[] = {
  NSPAIR(_ZN12S20469C11_ntC1Ev),
  NSPAIR(_ZN12S20469C11_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S20469C11_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
static  VTBL_ENTRY vtc_S20469C11_nt[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
extern VTBL_ENTRY _ZTV12S20469C11_nt[];
static  VTT_ENTRY vtt_S20469C11_nt[] = {
  {&(_ZTV12S20469C11_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
VTBL_ENTRY *P__ZTI12S20469C11_nt = _ZTI12S20469C11_nt; 
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
Class_Descriptor cd_S20469C11_nt = {  "S20469C11_nt", // class name
  bases_S20469C11_nt, 2,
  &(vtc_S20469C11_nt[0]), // expected_vtbl_contents
  &(vtt_S20469C11_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S20469C11_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV12S20469C11_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S20469C11_nt),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C12  : S20469C8 {
  __tsi64 s20469c12f0[10];
  virtual  ~S20469C12(); // _ZN9S20469C12D2Ev
  S20469C12(); // tgen
};
//SIG(-1 S20469C12) C1{ BC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} vd FL[10]}


 S20469C12 ::~S20469C12(){ note_dtor("S20469C12", this);}
S20469C12 ::S20469C12(){ note_ctor("S20469C12", this);} // tgen

static void Test_S20469C12()
{
  extern Class_Descriptor cd_S20469C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,25)];
    init_test(&cd_S20469C12, buf);
    S20469C12 *dp, &lv = *(dp=new (buf) S20469C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,96), "sizeof(S20469C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C12)");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*), 0, "S20469C12");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*), 0, "S20469C12");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(96,88), "S20469C12");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(105,93), "S20469C12");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*), ABISELECT(96,88), "S20469C12");
    check_base_class_offset(lv, (S20469C8*), 0, "S20469C12");
    check_field_offset(lv, s20469c12f0, ABISELECT(16,8), "S20469C12.s20469c12f0");
    test_class_info(&lv, &cd_S20469C12);
    dp->~S20469C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C12(Test_S20469C12, "S20469C12", ABISELECT(112,96));

#else // __cplusplus

extern void _ZN9S20469C12C1Ev();
extern void _ZN9S20469C12D2Ev();
Name_Map name_map_S20469C12[] = {
  NSPAIR(_ZN9S20469C12C1Ev),
  NSPAIR(_ZN9S20469C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
static Base_Class bases_S20469C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(96,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(105,93), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(96,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20469C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C12[];
extern void _ZN9S20469C12D1Ev();
extern void _ZN9S20469C12D0Ev();
static  VTBL_ENTRY vtc_S20469C12[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
  (VTBL_ENTRY)&_ZN9S20469C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C12D0Ev,
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
};
extern VTBL_ENTRY _ZTV9S20469C12[];
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C12[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C8__9S20469C12[] = {
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C12[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTT_ENTRY vtt_S20469C12[] = {
  {&(_ZTV9S20469C12[5]),  5,10},
  {&(_tg__ZTV8S20469C8__9S20469C12[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C8__9S20469C12[3]),  3,3},
  {&(_ZTV9S20469C12[10]),  10,10},
  {&(_tg__ZTV8S20469C5__9S20469C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C12[];
extern  VTBL_ENTRY _ZTV9S20469C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C12[];
Class_Descriptor cd_S20469C12 = {  "S20469C12", // class name
  bases_S20469C12, 6,
  &(vtc_S20469C12[0]), // expected_vtbl_contents
  &(vtt_S20469C12[0]), // expected_vtt_contents
  ABISELECT(112,96), // object size
  NSPAIRA(_ZTI9S20469C12),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20469C12),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C12),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C9  : virtual S4228C23 , virtual S20469C2 , virtual S20469C11_nt , virtual S20469C12 {
  virtual  ~S20469C9(); // _ZN8S20469C9D2Ev
  S20469C9(); // tgen
};
//SIG(-1 S20469C9) C1{ VBC2{ m} VBC3{ VBC4{ BC5{ m Fi} VBC6{ BC7{ m} VBC8{ m} FC7} BC9{ BC8 VBC7 VBC6 Fp} BC8 vd Fc} vd Fi} VBC10{ VBC7 BC8} VBC11{ BC9 vd FL[10]} vd}


 S20469C9 ::~S20469C9(){ note_dtor("S20469C9", this);}
S20469C9 ::S20469C9(){ note_ctor("S20469C9", this);} // tgen

static void Test_S20469C9()
{
  extern Class_Descriptor cd_S20469C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,32)];
    init_test(&cd_S20469C9, buf);
    S20469C9 *dp, &lv = *(dp=new (buf) S20469C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S20469C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C9)");
    check_base_class_offset(lv, (S4228C23*), 0, "S20469C9");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C3*), ABISELECT(40,20), "S20469C9");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(48,28), "S20469C9");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(57,33), "S20469C9");
    check_base_class_offset(lv, (S20469C5*)(S20469C3*), ABISELECT(48,28), "S20469C9");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C3*), ABISELECT(48,28), "S20469C9");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C12*), ABISELECT(48,28), "S20469C9");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C3*), ABISELECT(24,12), "S20469C9");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C3*), 0, "S20469C9");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*), 0, "S20469C9");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C12*), 0, "S20469C9");
    check_base_class_offset(lv, (S20469C8*)(S20469C3*), ABISELECT(24,12), "S20469C9");
    /*is_ambiguous_... S20469C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C3*), ABISELECT(44,24), "S20469C9");
    check_base_class_offset(lv, (S20469C3*)(S20469C2*), ABISELECT(24,12), "S20469C9");
    check_base_class_offset(lv, (S20469C2*), ABISELECT(8,4), "S20469C9");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*), 0, "S20469C9");
    check_base_class_offset(lv, (S20469C11_nt*), 0, "S20469C9");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C12*), ABISELECT(64,36), "S20469C9");
    check_base_class_offset(lv, (S20469C8*)(S20469C12*), ABISELECT(64,36), "S20469C9");
    check_base_class_offset(lv, (S20469C12*), ABISELECT(64,36), "S20469C9");
    test_class_info(&lv, &cd_S20469C9);
    dp->~S20469C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C9(Test_S20469C9, "S20469C9", ABISELECT(160,124));

#else // __cplusplus

extern void _ZN8S20469C9C1Ev();
extern void _ZN8S20469C9D2Ev();
Name_Map name_map_S20469C9[] = {
  NSPAIR(_ZN8S20469C9C1Ev),
  NSPAIR(_ZN8S20469C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C3;
extern VTBL_ENTRY _ZTI8S20469C3[];
extern  VTBL_ENTRY _ZTV8S20469C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C3[];
extern Class_Descriptor cd_S20469C2;
extern VTBL_ENTRY _ZTI8S20469C2[];
extern  VTBL_ENTRY _ZTV8S20469C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C2[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C12;
extern VTBL_ENTRY _ZTI9S20469C12[];
extern  VTBL_ENTRY _ZTV9S20469C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C12[];
static Base_Class bases_S20469C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3423C8_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(48,28), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20469C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(44,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20469C3,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20469C2,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20469C12,    ABISELECT(64,36), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20469C9[];
extern void _ZN8S20469C9D1Ev();
extern void _ZN8S20469C9D0Ev();
extern void ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S20469C9D1Ev,_ZThn4_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S20469C9D0Ev,_ZThn4_N8S20469C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S20469C9D1Ev,_ZThn12_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S20469C9D0Ev,_ZThn12_N8S20469C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S20469C9D1Ev,_ZThn36_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S20469C9D0Ev,_ZThn36_N8S20469C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20469C9[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(57,33),
  ABISELECT(48,28),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&_ZN8S20469C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C9D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  ABISELECT(-64,-36),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S20469C9[];
extern void _ZN8S20469C2D1Ev();
extern void _ZN8S20469C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C2__8S20469C9[] = {
  ABISELECT(-8,-4),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&_ZN8S20469C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C2D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20469C2D1Ev,_ZThn8_N8S20469C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20469C2D0Ev,_ZThn8_N8S20469C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C2__8S20469C9[] = {
  ABISELECT(-16,-8),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C2__8S20469C9[] = {
  ABISELECT(9,5),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
};
extern void _ZN8S20469C3D1Ev();
extern void _ZN8S20469C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C9[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
  (VTBL_ENTRY)&_ZN8S20469C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C88S20469C3__8S20469C9[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C88S20469C3__8S20469C9[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C3__8S20469C9[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C9[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__8S20469C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
extern void _ZN9S20469C12D1Ev();
extern void _ZN9S20469C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C12__8S20469C9[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
  (VTBL_ENTRY)&_ZN9S20469C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C89S20469C12__A1__8S20469C9[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C89S20469C12__A1__8S20469C9[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C12__8S20469C9[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
};
static  VTT_ENTRY vtt_S20469C9[] = {
  {&(_ZTV8S20469C9[10]),  10,40},
  {&(_ZTV8S20469C9[19]),  19,40},
  {&(_ZTV8S20469C9[27]),  27,40},
  {&(_ZTV8S20469C9[32]),  32,40},
  {&(_ZTV8S20469C9[10]),  10,40},
  {&(_ZTV8S20469C9[38]),  38,40},
  {&(_tg__ZTV8S20469C2__8S20469C9[6]),  6,8},
  {&(_tg__ZTV8S20469C3__8S20469C2__8S20469C9[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C2__8S20469C9[3]),  3,3},
  {&(_tg__ZTV8S20469C3__8S20469C9[5]),  5,7},
  {&(_tg__ZTV8S20469C88S20469C3__8S20469C9[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C88S20469C3__8S20469C9[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C3__8S20469C9[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C9[3]),  3,3},
  {&(_tg__ZTV12S20469C11_nt__8S20469C9[3]),  3,3},
  {&(_tg__ZTV9S20469C12__8S20469C9[5]),  5,7},
  {&(_tg__ZTV8S20469C89S20469C12__A1__8S20469C9[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C89S20469C12__A1__8S20469C9[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C12__8S20469C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20469C9[];
extern  VTBL_ENTRY _ZTV8S20469C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C9[];
static VTBL_ENTRY alt_thunk_names119[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C2D0Ev,_ZThn8_N8S20469C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C2D1Ev,_ZThn8_N8S20469C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20469C9D0Ev,_ZThn36_N8S20469C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20469C9D0Ev,_ZThn12_N8S20469C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20469C9D1Ev,_ZThn36_N8S20469C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20469C9D1Ev,_ZThn12_N8S20469C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20469C9D0Ev,_ZThn4_N8S20469C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20469C9D1Ev,_ZThn4_N8S20469C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20469C9 = {  "S20469C9", // class name
  bases_S20469C9, 16,
  &(vtc_S20469C9[0]), // expected_vtbl_contents
  &(vtt_S20469C9[0]), // expected_vtt_contents
  ABISELECT(160,124), // object size
  NSPAIRA(_ZTI8S20469C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20469C9),40, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20469C9),19, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names119,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C16  : S4228C27 , S20469C11_nt , S20469C5 {
  virtual  ~S20469C16(); // _ZN9S20469C16D2Ev
  S20469C16(); // tgen
};
//SIG(-1 S20469C16) C1{ BC2{ m} BC3{ VBC4{ m} BC2} BC5{ BC4 VBC2 FC4} vd}


 S20469C16 ::~S20469C16(){ note_dtor("S20469C16", this);}
S20469C16 ::S20469C16(){ note_ctor("S20469C16", this);} // tgen

static void Test_S20469C16()
{
  extern Class_Descriptor cd_S20469C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20469C16, buf);
    S20469C16 *dp, &lv = *(dp=new (buf) S20469C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20469C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C16)");
    /*is_ambiguous_... S20469C16::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), ABISELECT(8,4), "S20469C16");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*), 0, "S20469C16");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*), 0, "S20469C16");
    check_base_class_offset(lv, (S20469C11_nt*), 0, "S20469C16");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(8,4), "S20469C16");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(17,9), "S20469C16");
    check_base_class_offset(lv, (S20469C5*), ABISELECT(8,4), "S20469C16");
    test_class_info(&lv, &cd_S20469C16);
    dp->~S20469C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C16(Test_S20469C16, "S20469C16", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S20469C16C1Ev();
extern void _ZN9S20469C16D2Ev();
Name_Map name_map_S20469C16[] = {
  NSPAIR(_ZN9S20469C16C1Ev),
  NSPAIR(_ZN9S20469C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
static Base_Class bases_S20469C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C16[];
extern void _ZN9S20469C16D1Ev();
extern void _ZN9S20469C16D0Ev();
static  VTBL_ENTRY vtc_S20469C16[] = {
  ABISELECT(17,9),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
  (VTBL_ENTRY)&_ZN9S20469C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C16D0Ev,
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
};
extern VTBL_ENTRY _ZTV9S20469C16[];
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C16[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C16[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTT_ENTRY vtt_S20469C16[] = {
  {&(_ZTV9S20469C16[4]),  4,9},
  {&(_tg__ZTV12S20469C11_nt__9S20469C16[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C16[3]),  3,3},
  {&(_ZTV9S20469C16[9]),  9,9},
};
extern VTBL_ENTRY _ZTI9S20469C16[];
extern  VTBL_ENTRY _ZTV9S20469C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C16[];
Class_Descriptor cd_S20469C16 = {  "S20469C16", // class name
  bases_S20469C16, 7,
  &(vtc_S20469C16[0]), // expected_vtbl_contents
  &(vtt_S20469C16[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S20469C16),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20469C16),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C16),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C17  : virtual S20469C8 {
  char s20469c17f0:8;
  ~S20469C17(); // tgen
  S20469C17(); // tgen
};
//SIG(-1 S20469C17) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} Fc:8}


S20469C17 ::~S20469C17(){ note_dtor("S20469C17", this);} // tgen
S20469C17 ::S20469C17(){ note_ctor("S20469C17", this);} // tgen

static void Test_S20469C17()
{
  extern Class_Descriptor cd_S20469C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S20469C17, buf);
    S20469C17 *dp, &lv = *(dp=new (buf) S20469C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S20469C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C17)");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*), ABISELECT(16,8), "S20469C17");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*), 0, "S20469C17");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(32,16), "S20469C17");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), 0, "S20469C17");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*), ABISELECT(32,16), "S20469C17");
    check_base_class_offset(lv, (S20469C8*), ABISELECT(16,8), "S20469C17");
    set_bf_and_test(lv, s20469c17f0, ABISELECT(8,4), 0, 8, 1, "S20469C17");
    set_bf_and_test(lv, s20469c17f0, ABISELECT(8,4), 0, 8, hide_sll(1LL<<7), "S20469C17");
    test_class_info(&lv, &cd_S20469C17);
    dp->~S20469C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C17(Test_S20469C17, "S20469C17", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN9S20469C17C1Ev();
extern void _ZN9S20469C17D1Ev();
Name_Map name_map_S20469C17[] = {
  NSPAIR(_ZN9S20469C17C1Ev),
  NSPAIR(_ZN9S20469C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
static Base_Class bases_S20469C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20469C8,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C17[];
static  VTBL_ENTRY vtc_S20469C17[] = {
  0,
  ABISELECT(32,16),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
extern VTBL_ENTRY _ZTV9S20469C17[];
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C17[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C8__9S20469C17[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C17[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTT_ENTRY vtt_S20469C17[] = {
  {&(_ZTV9S20469C17[6]),  6,14},
  {&(_ZTV9S20469C17[11]),  11,14},
  {&(_ZTV9S20469C17[14]),  14,14},
  {&(_tg__ZTV8S20469C8__9S20469C17[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C8__9S20469C17[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C17[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C17[];
extern  VTBL_ENTRY _ZTV9S20469C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C17[];
Class_Descriptor cd_S20469C17 = {  "S20469C17", // class name
  bases_S20469C17, 6,
  &(vtc_S20469C17[0]), // expected_vtbl_contents
  &(vtt_S20469C17[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI9S20469C17),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20469C17),14, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C17),6, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C15  : virtual S20469C16 , virtual S20469C8 , S20469C17 , virtual S3423C8_nt , S20469C2 {
  ~S20469C15(); // tgen
  S20469C15(); // tgen
};
//SIG(-1 S20469C15) C1{ VBC2{ BC3{ m} BC4{ VBC5{ m} BC3} BC6{ BC5 VBC3 FC5} vd} VBC7{ BC3 VBC5 VBC6 Fp} BC8{ VBC7 Fc:8} VBC9{ m Fi} BC10{ VBC11{ BC9 VBC6 BC7 BC3 vd Fc} vd Fi}}


S20469C15 ::~S20469C15(){ note_dtor("S20469C15", this);} // tgen
S20469C15 ::S20469C15(){ note_ctor("S20469C15", this);} // tgen

static void Test_S20469C15()
{
  extern Class_Descriptor cd_S20469C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,17)];
    init_test(&cd_S20469C15, buf);
    S20469C15 *dp, &lv = *(dp=new (buf) S20469C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S20469C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C15)");
    /*is_ambiguous_... S20469C16::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C16*), ABISELECT(40,20), "S20469C15");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C16*), 0, "S20469C15");
    /*is_ambiguous_... S20469C15::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*), 0, "S20469C15");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C3*), 0, "S20469C15");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C16*), ABISELECT(32,16), "S20469C15");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C16*), ABISELECT(32,16), "S20469C15");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*)(S20469C16*), ABISELECT(40,20), "S20469C15");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*)(S20469C16*), 0, "S20469C15");
    /*is_ambiguous_... S20469C15::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C5*), 0, "S20469C15");
    check_base_class_offset(lv, (S20469C5*)(S20469C16*), ABISELECT(40,20), "S20469C15");
    check_base_class_offset(lv, (S20469C16*), ABISELECT(32,16), "S20469C15");
    /*is_ambiguous_... S20469C15::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*), ABISELECT(56,28), "S20469C15");
    /*is_ambiguous_... S20469C15::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(72,36), "S20469C15");
    /*is_ambiguous_... S20469C15::S20469C8 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C8*), ABISELECT(72,36), "S20469C15");
    check_base_class_offset(lv, (S20469C5*)(S20469C3*), ABISELECT(72,36), "S20469C15");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C3*), ABISELECT(72,36), "S20469C15");
    /*is_ambiguous_... S20469C15::S20469C8 */ AMB_check_base_class_offset(lv, (S20469C8*), ABISELECT(56,28), "S20469C15");
    check_base_class_offset(lv, (S20469C8*)(S20469C17*), ABISELECT(56,28), "S20469C15");
    check_base_class_offset(lv, (S20469C17*), 0, "S20469C15");
    /*is_ambiguous_... S20469C15::S3423C8_nt */ AMB_check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(84,44), "S20469C15");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C3*), ABISELECT(104,56), "S20469C15");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C3*), ABISELECT(88,48), "S20469C15");
    check_base_class_offset(lv, (S20469C8*)(S20469C3*), ABISELECT(88,48), "S20469C15");
    /*is_ambiguous_... S20469C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C3*), ABISELECT(108,60), "S20469C15");
    check_base_class_offset(lv, (S20469C3*)(S20469C2*), ABISELECT(88,48), "S20469C15");
    check_base_class_offset(lv, (S20469C2*), ABISELECT(16,8), "S20469C15");
    test_class_info(&lv, &cd_S20469C15);
    dp->~S20469C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C15(Test_S20469C15, "S20469C15", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN9S20469C15C1Ev();
extern void _ZN9S20469C15D1Ev();
Name_Map name_map_S20469C15[] = {
  NSPAIR(_ZN9S20469C15C1Ev),
  NSPAIR(_ZN9S20469C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C16;
extern VTBL_ENTRY _ZTI9S20469C16[];
extern  VTBL_ENTRY _ZTV9S20469C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C16[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C17;
extern VTBL_ENTRY _ZTI9S20469C17[];
extern  VTBL_ENTRY _ZTV9S20469C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C17[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C3;
extern VTBL_ENTRY _ZTI8S20469C3[];
extern  VTBL_ENTRY _ZTV8S20469C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C3[];
extern Class_Descriptor cd_S20469C2;
extern VTBL_ENTRY _ZTI8S20469C2[];
extern  VTBL_ENTRY _ZTV8S20469C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C2[];
static Base_Class bases_S20469C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20469C16,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20469C5,    ABISELECT(72,36), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20469C8,    ABISELECT(56,28), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20469C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3423C8_nt,    ABISELECT(84,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3423C8_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(108,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20469C3,    ABISELECT(88,48), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20469C2,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C15[];
extern void _ZN9S20469C15D1Ev();
extern void _ZN9S20469C15D0Ev();
extern void ABISELECT(_ZThn16_N9S20469C15D1Ev,_ZThn8_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C15D0Ev,_ZThn8_N9S20469C15D0Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn32_N9S20469C15D1Ev,_ZThn16_N9S20469C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev)();
extern void ABISELECT(_ZThn32_N9S20469C15D0Ev,_ZThn16_N9S20469C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S20469C15D1Ev,_ZThn48_N9S20469C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S20469C15D0Ev,_ZThn48_N9S20469C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20469C15[] = {
  ABISELECT(88,48),
  ABISELECT(84,44),
  ABISELECT(32,16),
  0,
  ABISELECT(72,36),
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&_ZN9S20469C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C15D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C15D1Ev,_ZThn8_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C15D0Ev,_ZThn8_N9S20469C15D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S20469C15[];
static  VTBL_ENTRY _tg__ZTV9S20469C17__9S20469C15[] = {
  0,
  ABISELECT(72,36),
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C17__9S20469C15[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C17__9S20469C15[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
extern void _ZN8S20469C2D1Ev();
extern void _ZN8S20469C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C2__9S20469C15[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&_ZN8S20469C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C2D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S20469C2D1Ev,_ZThn40_N8S20469C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S20469C2D0Ev,_ZThn40_N8S20469C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C2__9S20469C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C2__9S20469C15[] = {
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
};
extern void _ZN9S20469C16D1Ev();
extern void _ZN9S20469C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C15[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
  (VTBL_ENTRY)&_ZN9S20469C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C16__9S20469C15[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C15[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C16__9S20469C15[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C15[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C8__9S20469C15[] = {
  ABISELECT(-72,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C15[] = {
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
extern void _ZN8S20469C3D1Ev();
extern void _ZN8S20469C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C15[] = {
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
  (VTBL_ENTRY)&_ZN8S20469C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C88S20469C3__A1__9S20469C15[] = {
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C88S20469C3__A1__9S20469C15[] = {
  ABISELECT(-72,-36),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C3__9S20469C15[] = {
  ABISELECT(-72,-36),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
};
static  VTT_ENTRY vtt_S20469C15[] = {
  {&(_ZTV9S20469C15[9]),  9,45},
  {&(_tg__ZTV9S20469C17__9S20469C15[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C17__9S20469C15[5]),  5,5},
  {&(_tg__ZTV8S20469C5__9S20469C17__9S20469C15[3]),  3,3},
  {&(_tg__ZTV8S20469C2__9S20469C15[6]),  6,8},
  {&(_tg__ZTV8S20469C3__8S20469C2__9S20469C15[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C2__9S20469C15[3]),  3,3},
  {&(_ZTV9S20469C15[24]),  24,45},
  {&(_ZTV9S20469C15[29]),  29,45},
  {&(_ZTV9S20469C15[34]),  34,45},
  {&(_ZTV9S20469C15[37]),  37,45},
  {&(_ZTV9S20469C15[17]),  17,45},
  {&(_ZTV9S20469C15[43]),  43,45},
  {&(_tg__ZTV9S20469C16__9S20469C15[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt9S20469C16__9S20469C15[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C15[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C16__9S20469C15[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C15[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C8__9S20469C15[3]),  3,3},
  {&(_tg__ZTV8S20469C5__A1__9S20469C15[3]),  3,3},
  {&(_tg__ZTV8S20469C3__9S20469C15[5]),  5,7},
  {&(_tg__ZTV8S20469C88S20469C3__A1__9S20469C15[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C88S20469C3__A1__9S20469C15[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C3__9S20469C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C15[];
extern  VTBL_ENTRY _ZTV9S20469C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C15[];
static VTBL_ENTRY alt_thunk_names120[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C2D0Ev,_ZThn40_N8S20469C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C2D1Ev,_ZThn40_N8S20469C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C15D0Ev,_ZThn48_N9S20469C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C15D1Ev,_ZThn48_N9S20469C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C15D0Ev,_ZThn16_N9S20469C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C15D1Ev,_ZThn16_N9S20469C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20469C15 = {  "S20469C15", // class name
  bases_S20469C15, 20,
  &(vtc_S20469C15[0]), // expected_vtbl_contents
  &(vtt_S20469C15[0]), // expected_vtt_contents
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI9S20469C15),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20469C15),45, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C15),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names120,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C18  : S3423C8_nt , S4228C23 , S20469C16 , virtual S20469C17 , S20469C12 {
  virtual  ~S20469C18(); // _ZN9S20469C18D2Ev
  S20469C18(); // tgen
};
//SIG(-1 S20469C18) C1{ BC2{ m Fi} BC3{ m} BC4{ BC5{ m} BC6{ VBC7{ m} BC5} BC8{ BC7 VBC5 FC7} vd} VBC9{ VBC10{ BC5 VBC7 VBC8 Fp} Fc:8} BC11{ BC10 vd FL[10]} vd}


 S20469C18 ::~S20469C18(){ note_dtor("S20469C18", this);}
S20469C18 ::S20469C18(){ note_ctor("S20469C18", this);} // tgen

static void Test_S20469C18()
{
  extern Class_Descriptor cd_S20469C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,33)];
    init_test(&cd_S20469C18, buf);
    S20469C18 *dp, &lv = *(dp=new (buf) S20469C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,128), "sizeof(S20469C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C18)");
    check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(20,12), "S20469C18");
    check_base_class_offset(lv, (S4228C23*), 0, "S20469C18");
    /*is_ambiguous_... S20469C16::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C16*), ABISELECT(8,4), "S20469C18");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C16*), 0, "S20469C18");
    /*is_ambiguous_... S20469C18::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*), 0, "S20469C18");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C12*), 0, "S20469C18");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C16*), 0, "S20469C18");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C16*), 0, "S20469C18");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*)(S20469C16*), ABISELECT(8,4), "S20469C18");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*)(S20469C16*), ABISELECT(120,104), "S20469C18");
    /*is_ambiguous_... S20469C18::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(120,104), "S20469C18");
    check_base_class_offset(lv, (S20469C5*)(S20469C16*), ABISELECT(8,4), "S20469C18");
    check_base_class_offset(lv, (S20469C16*), 0, "S20469C18");
    /*is_ambiguous_... S20469C18::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*), ABISELECT(136,112), "S20469C18");
    /*is_ambiguous_... S20469C18::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(152,120), "S20469C18");
    /*is_ambiguous_... S20469C18::S20469C8 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C8*), ABISELECT(152,120), "S20469C18");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C12*), ABISELECT(152,120), "S20469C18");
    check_base_class_offset(lv, (S20469C8*)(S20469C17*), ABISELECT(136,112), "S20469C18");
    check_base_class_offset(lv, (S20469C17*), ABISELECT(120,104), "S20469C18");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C12*), ABISELECT(24,16), "S20469C18");
    check_base_class_offset(lv, (S20469C8*)(S20469C12*), ABISELECT(24,16), "S20469C18");
    check_base_class_offset(lv, (S20469C12*), ABISELECT(24,16), "S20469C18");
    test_class_info(&lv, &cd_S20469C18);
    dp->~S20469C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C18(Test_S20469C18, "S20469C18", ABISELECT(168,128));

#else // __cplusplus

extern void _ZN9S20469C18C1Ev();
extern void _ZN9S20469C18D2Ev();
Name_Map name_map_S20469C18[] = {
  NSPAIR(_ZN9S20469C18C1Ev),
  NSPAIR(_ZN9S20469C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C16;
extern VTBL_ENTRY _ZTI9S20469C16[];
extern  VTBL_ENTRY _ZTV9S20469C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C16[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C17;
extern VTBL_ENTRY _ZTI9S20469C17[];
extern  VTBL_ENTRY _ZTV9S20469C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C17[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C12;
extern VTBL_ENTRY _ZTI9S20469C12[];
extern  VTBL_ENTRY _ZTV9S20469C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C12[];
static Base_Class bases_S20469C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(120,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20469C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(136,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(152,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20469C5,    ABISELECT(152,120), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20469C8,    ABISELECT(136,112), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20469C17,    ABISELECT(120,104), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20469C12,    ABISELECT(24,16), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C18[];
extern void _ZN9S20469C18D1Ev();
extern void _ZN9S20469C18D0Ev();
extern void ABISELECT(_ZThn24_N9S20469C18D1Ev,_ZThn16_N9S20469C18D1Ev)();
extern void ABISELECT(_ZThn24_N9S20469C18D0Ev,_ZThn16_N9S20469C18D0Ev)();
static  VTBL_ENTRY vtc_S20469C18[] = {
  ABISELECT(152,120),
  ABISELECT(136,112),
  ABISELECT(120,104),
  ABISELECT(120,104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  (VTBL_ENTRY)&_ZN9S20469C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C18D0Ev,
  ABISELECT(112,100),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  ABISELECT(96,88),
  ABISELECT(128,104),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20469C18D1Ev,_ZThn16_N9S20469C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20469C18D0Ev,_ZThn16_N9S20469C18D0Ev),
  0,
  ABISELECT(32,16),
  ABISELECT(-120,-104),
  ABISELECT(16,8),
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-136,-112),
  ABISELECT(-136,-112),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  ABISELECT(-32,-16),
  ABISELECT(-152,-120),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
extern VTBL_ENTRY _ZTV9S20469C18[];
extern void _ZN9S20469C16D1Ev();
extern void _ZN9S20469C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C18[] = {
  ABISELECT(120,104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
  (VTBL_ENTRY)&_ZN9S20469C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C16__9S20469C18[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C18[] = {
  ABISELECT(112,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C16__9S20469C18[] = {
  ABISELECT(112,100),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
};
extern void _ZN9S20469C12D1Ev();
extern void _ZN9S20469C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C12__9S20469C18[] = {
  ABISELECT(96,88),
  ABISELECT(128,104),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
  (VTBL_ENTRY)&_ZN9S20469C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C89S20469C12__A1__9S20469C18[] = {
  ABISELECT(96,88),
  ABISELECT(128,104),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C89S20469C12__A1__9S20469C18[] = {
  ABISELECT(-32,-16),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C12__9S20469C18[] = {
  ABISELECT(-32,-16),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__9S20469C18[] = {
  0,
  ABISELECT(32,16),
  ABISELECT(-120,-104),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C17__9S20469C18[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-136,-112),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C17__9S20469C18[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C18[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-136,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C8__9S20469C18[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C18[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTT_ENTRY vtt_S20469C18[] = {
  {&(_ZTV9S20469C18[7]),  7,33},
  {&(_tg__ZTV9S20469C16__9S20469C18[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt9S20469C16__9S20469C18[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C18[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C16__9S20469C18[3]),  3,3},
  {&(_tg__ZTV9S20469C12__9S20469C18[5]),  5,7},
  {&(_tg__ZTV8S20469C89S20469C12__A1__9S20469C18[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C89S20469C12__A1__9S20469C18[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C12__9S20469C18[3]),  3,3},
  {&(_ZTV9S20469C18[12]),  12,33},
  {&(_ZTV9S20469C18[25]),  25,33},
  {&(_ZTV9S20469C18[30]),  30,33},
  {&(_ZTV9S20469C18[33]),  33,33},
  {&(_ZTV9S20469C18[17]),  17,33},
  {&(_tg__ZTV9S20469C17__9S20469C18[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C17__9S20469C18[5]),  5,5},
  {&(_tg__ZTV8S20469C5__9S20469C17__9S20469C18[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C18[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C8__9S20469C18[3]),  3,3},
  {&(_tg__ZTV8S20469C5__A1__9S20469C18[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C18[];
extern  VTBL_ENTRY _ZTV9S20469C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C18[];
Class_Descriptor cd_S20469C18 = {  "S20469C18", // class name
  bases_S20469C18, 18,
  &(vtc_S20469C18[0]), // expected_vtbl_contents
  &(vtt_S20469C18[0]), // expected_vtt_contents
  ABISELECT(168,128), // object size
  NSPAIRA(_ZTI9S20469C18),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20469C18),33, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C18),20, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C14  : S20469C15 , virtual S20469C18 {
  ~S20469C14(); // tgen
  S20469C14(); // tgen
};
//SIG(-1 S20469C14) C1{ BC2{ VBC3{ BC4{ m} BC5{ VBC6{ m} BC4} BC7{ BC6 VBC4 FC6} vd} VBC8{ BC4 VBC6 VBC7 Fp} BC9{ VBC8 Fc:8} VBC10{ m Fi} BC11{ VBC12{ BC10 VBC7 BC8 BC4 vd Fc} vd Fi}} VBC13{ BC10 BC14{ m} BC3 VBC9 BC15{ BC8 vd FL[10]} vd}}


S20469C14 ::~S20469C14(){ note_dtor("S20469C14", this);} // tgen
S20469C14 ::S20469C14(){ note_ctor("S20469C14", this);} // tgen

static void Test_S20469C14()
{
  extern Class_Descriptor cd_S20469C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(32,45)];
    init_test(&cd_S20469C14, buf);
    S20469C14 *dp, &lv = *(dp=new (buf) S20469C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(248,176), "sizeof(S20469C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C14)");
    /*is_ambiguous_... S20469C14::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C16*), ABISELECT(40,20), "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C16*), 0, "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*), 0, "S20469C14");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C3*), 0, "S20469C14");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C16*)(S20469C18*), 0, "S20469C14");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C12*)(S20469C18*), 0, "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C16*), ABISELECT(32,16), "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C16 */ AMB_check_base_class_offset(lv, (S20469C11_nt*)(S20469C16*), ABISELECT(32,16), "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C5*)(S20469C16*), ABISELECT(40,20), "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C5*)(S20469C16*), 0, "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C5*), 0, "S20469C14");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*)(S20469C16*)(S20469C18*), 0, "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C16 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C16*), ABISELECT(40,20), "S20469C14");
    check_base_class_offset(lv, (S20469C16*)(S20469C15*), ABISELECT(32,16), "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*), ABISELECT(56,28), "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(72,36), "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C8 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C8*), ABISELECT(72,36), "S20469C14");
    check_base_class_offset(lv, (S20469C5*)(S20469C3*), ABISELECT(72,36), "S20469C14");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C3*), ABISELECT(72,36), "S20469C14");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C12*)(S20469C18*), ABISELECT(72,36), "S20469C14");
    /*is_ambiguous_... S20469C15::S20469C8 */ AMB_check_base_class_offset(lv, (S20469C8*)(S20469C15*), ABISELECT(56,28), "S20469C14");
    check_base_class_offset(lv, (S20469C8*)(S20469C17*)(S20469C15*), ABISELECT(56,28), "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C17 */ AMB_check_base_class_offset(lv, (S20469C8*)(S20469C17*), ABISELECT(56,28), "S20469C14");
    check_base_class_offset(lv, (S20469C17*)(S20469C15*), 0, "S20469C14");
    /*is_ambiguous_... S20469C15::S3423C8_nt */ AMB_check_base_class_offset(lv, (S3423C8_nt*)(S20469C15*), ABISELECT(84,44), "S20469C14");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C3*), ABISELECT(104,56), "S20469C14");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C3*), ABISELECT(88,48), "S20469C14");
    check_base_class_offset(lv, (S20469C8*)(S20469C3*), ABISELECT(88,48), "S20469C14");
    /*is_ambiguous_... S20469C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C3*), ABISELECT(108,60), "S20469C14");
    check_base_class_offset(lv, (S20469C3*)(S20469C2*)(S20469C15*), ABISELECT(88,48), "S20469C14");
    check_base_class_offset(lv, (S20469C2*)(S20469C15*), ABISELECT(16,8), "S20469C14");
    check_base_class_offset(lv, (S20469C15*), 0, "S20469C14");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C18*), ABISELECT(132,76), "S20469C14");
    check_base_class_offset(lv, (S4228C23*)(S20469C18*), ABISELECT(112,64), "S20469C14");
    /*is_ambiguous_... S20469C16::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C16*)(S20469C18*), ABISELECT(120,68), "S20469C14");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C16*)(S20469C18*), ABISELECT(112,64), "S20469C14");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C16*)(S20469C18*), ABISELECT(112,64), "S20469C14");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*)(S20469C16*)(S20469C18*), ABISELECT(120,68), "S20469C14");
    check_base_class_offset(lv, (S20469C5*)(S20469C16*)(S20469C18*), ABISELECT(120,68), "S20469C14");
    check_base_class_offset(lv, (S20469C16*)(S20469C18*), ABISELECT(112,64), "S20469C14");
    check_base_class_offset(lv, (S20469C17*)(S20469C18*), ABISELECT(232,168), "S20469C14");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C12*)(S20469C18*), ABISELECT(136,80), "S20469C14");
    check_base_class_offset(lv, (S20469C8*)(S20469C12*)(S20469C18*), ABISELECT(136,80), "S20469C14");
    check_base_class_offset(lv, (S20469C12*)(S20469C18*), ABISELECT(136,80), "S20469C14");
    check_base_class_offset(lv, (S20469C18*), ABISELECT(112,64), "S20469C14");
    test_class_info(&lv, &cd_S20469C14);
    dp->~S20469C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C14(Test_S20469C14, "S20469C14", ABISELECT(248,176));

#else // __cplusplus

extern void _ZN9S20469C14C1Ev();
extern void _ZN9S20469C14D1Ev();
Name_Map name_map_S20469C14[] = {
  NSPAIR(_ZN9S20469C14C1Ev),
  NSPAIR(_ZN9S20469C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C16;
extern VTBL_ENTRY _ZTI9S20469C16[];
extern  VTBL_ENTRY _ZTV9S20469C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C16[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C17;
extern VTBL_ENTRY _ZTI9S20469C17[];
extern  VTBL_ENTRY _ZTV9S20469C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C17[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C3;
extern VTBL_ENTRY _ZTI8S20469C3[];
extern  VTBL_ENTRY _ZTV8S20469C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C3[];
extern Class_Descriptor cd_S20469C2;
extern VTBL_ENTRY _ZTI8S20469C2[];
extern  VTBL_ENTRY _ZTV8S20469C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C2[];
extern Class_Descriptor cd_S20469C15;
extern VTBL_ENTRY _ZTI9S20469C15[];
extern  VTBL_ENTRY _ZTV9S20469C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C15[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C16;
extern VTBL_ENTRY _ZTI9S20469C16[];
extern  VTBL_ENTRY _ZTV9S20469C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C16[];
extern Class_Descriptor cd_S20469C17;
extern VTBL_ENTRY _ZTI9S20469C17[];
extern  VTBL_ENTRY _ZTV9S20469C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C17[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C12;
extern VTBL_ENTRY _ZTI9S20469C12[];
extern  VTBL_ENTRY _ZTV9S20469C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C12[];
extern Class_Descriptor cd_S20469C18;
extern VTBL_ENTRY _ZTI9S20469C18[];
extern  VTBL_ENTRY _ZTV9S20469C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C18[];
static Base_Class bases_S20469C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(40,20), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20469C16,    ABISELECT(32,16), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20469C5,    ABISELECT(72,36), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20469C8,    ABISELECT(56,28), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20469C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(84,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S3423C8_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(108,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20469C3,    ABISELECT(88,48), //bcp->offset
    39, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20469C2,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20469C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3423C8_nt,    ABISELECT(132,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S4228C23,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20469C5,    ABISELECT(120,68), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20469C16,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20469C17,    ABISELECT(232,168), //bcp->offset
    67, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20469C12,    ABISELECT(136,80), //bcp->offset
    60, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20469C18,    ABISELECT(112,64), //bcp->offset
    47, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C14[];
extern void _ZN9S20469C14D1Ev();
extern void _ZN9S20469C14D0Ev();
extern void ABISELECT(_ZThn16_N9S20469C14D1Ev,_ZThn8_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C14D0Ev,_ZThn8_N9S20469C14D0Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20469C14D1Ev,_ZTv0_n20_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S20469C14D1Ev,_ZThn16_N9S20469C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20469C14D0Ev,_ZTv0_n20_N9S20469C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S20469C14D0Ev,_ZThn16_N9S20469C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C14D1Ev,_ZTv0_n24_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn88_N9S20469C14D1Ev,_ZThn48_N9S20469C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C14D0Ev,_ZTv0_n24_N9S20469C14D0Ev)();
extern void ABISELECT(_ZThn88_N9S20469C14D0Ev,_ZThn48_N9S20469C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20469C14D1Ev,_ZTv0_n32_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20469C14D1Ev,_ZThn64_N9S20469C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20469C14D0Ev,_ZTv0_n32_N9S20469C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20469C14D0Ev,_ZThn64_N9S20469C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n64_N9S20469C14D1Ev,_ZTvn16_n32_N9S20469C14D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N9S20469C14D0Ev,_ZTvn16_n32_N9S20469C14D0Ev)();
static  VTBL_ENTRY vtc_S20469C14[] = {
  ABISELECT(232,168),
  ABISELECT(112,64),
  ABISELECT(88,48),
  ABISELECT(84,44),
  ABISELECT(32,16),
  0,
  ABISELECT(72,36),
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&_ZN9S20469C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C14D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C14D1Ev,_ZThn8_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C14D0Ev,_ZThn8_N9S20469C14D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C14D1Ev,_ZTv0_n20_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C14D0Ev,_ZTv0_n20_N9S20469C14D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C14D1Ev,_ZTv0_n24_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C14D0Ev,_ZTv0_n24_N9S20469C14D0Ev),
  ABISELECT(-112,-64),
  ABISELECT(-40,-28),
  ABISELECT(-56,-36),
  ABISELECT(120,104),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C14D1Ev,_ZTv0_n32_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C14D0Ev,_ZTv0_n32_N9S20469C14D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  ABISELECT(-136,-80),
  ABISELECT(-64,-44),
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C14D1Ev,_ZTvn16_n32_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C14D0Ev,_ZTvn16_n32_N9S20469C14D0Ev),
  ABISELECT(-232,-168),
  ABISELECT(-160,-132),
  ABISELECT(-232,-168),
  ABISELECT(-176,-140),
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
extern VTBL_ENTRY _ZTV9S20469C14[];
extern void _ZN9S20469C15D1Ev();
extern void _ZN9S20469C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C15__9S20469C14[] = {
  ABISELECT(88,48),
  ABISELECT(84,44),
  ABISELECT(32,16),
  0,
  ABISELECT(72,36),
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&_ZN9S20469C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20469C179S20469C15__9S20469C14[] = {
  0,
  ABISELECT(72,36),
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C179S20469C15__9S20469C14[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C179S20469C15__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
extern void _ZN8S20469C2D1Ev();
extern void _ZN8S20469C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C29S20469C15__9S20469C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&_ZN8S20469C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C2D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S20469C2D1Ev,_ZThn40_N8S20469C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S20469C2D0Ev,_ZThn40_N8S20469C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C29S20469C15__9S20469C14[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C29S20469C15__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
};
extern void ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn32_N9S20469C15D1Ev,_ZThn16_N9S20469C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev)();
extern void ABISELECT(_ZThn32_N9S20469C15D0Ev,_ZThn16_N9S20469C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C15__9S20469C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C15__9S20469C14[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C15__9S20469C14[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C15__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
};
extern void ABISELECT(_ZThn16_N9S20469C15D1Ev,_ZThn8_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C15D0Ev,_ZThn8_N9S20469C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C2__9S20469C15__9S20469C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C15D1Ev,_ZThn8_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C15D0Ev,_ZThn8_N9S20469C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S20469C15D1Ev,_ZThn48_N9S20469C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S20469C15D0Ev,_ZThn48_N9S20469C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C15__9S20469C14[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev),
};
extern void _ZN9S20469C16D1Ev();
extern void _ZN9S20469C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
  (VTBL_ENTRY)&_ZN9S20469C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C16__9S20469C14[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C14[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C16__9S20469C14[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C14[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C8__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C14[] = {
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
extern void _ZN8S20469C3D1Ev();
extern void _ZN8S20469C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C14[] = {
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
  (VTBL_ENTRY)&_ZN8S20469C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C88S20469C3__A1__9S20469C14[] = {
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C88S20469C3__A1__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C3__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
};
extern void _ZN9S20469C18D1Ev();
extern void _ZN9S20469C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C18__9S20469C14[] = {
  ABISELECT(-40,-28),
  ABISELECT(-56,-36),
  ABISELECT(120,104),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  (VTBL_ENTRY)&_ZN9S20469C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C18D0Ev,
};
extern void _ZN9S20469C16D1Ev();
extern void _ZN9S20469C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C169S20469C18__A1__9S20469C14[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
  (VTBL_ENTRY)&_ZN9S20469C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C169S20469C18__A1__9S20469C14[] = {
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C14[] = {
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C169S20469C18__A1__9S20469C14[] = {
  ABISELECT(-120,-68),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
};
extern void _ZN9S20469C12D1Ev();
extern void _ZN9S20469C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C129S20469C18__9S20469C14[] = {
  ABISELECT(-136,-80),
  ABISELECT(-64,-44),
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
  (VTBL_ENTRY)&_ZN9S20469C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C89S20469C129S20469C18__A2__9S20469C14[] = {
  ABISELECT(-136,-80),
  ABISELECT(-64,-44),
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C89S20469C129S20469C18__A2__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C129S20469C18__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C18__9S20469C14[] = {
  ABISELECT(-120,-68),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__9S20469C18__9S20469C14[] = {
  ABISELECT(-232,-168),
  ABISELECT(-160,-132),
  ABISELECT(-232,-168),
  ABISELECT(-176,-140),
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C18__9S20469C14[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C18__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
extern void ABISELECT(_ZThn24_N9S20469C18D1Ev,_ZThn16_N9S20469C18D1Ev)();
extern void ABISELECT(_ZThn24_N9S20469C18D0Ev,_ZThn16_N9S20469C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20469C12__9S20469C18__9S20469C14[] = {
  ABISELECT(-136,-80),
  ABISELECT(-64,-44),
  ABISELECT(-136,-80),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20469C18D1Ev,_ZThn16_N9S20469C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20469C18D0Ev,_ZThn16_N9S20469C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__A1__9S20469C14[] = {
  ABISELECT(-232,-168),
  ABISELECT(-160,-132),
  ABISELECT(-232,-168),
  ABISELECT(-176,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C17__A1__9S20469C14[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C17__A1__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(160,132),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTT_ENTRY vtt_S20469C14[] = {
  {&(_ZTV9S20469C14[11]),  11,73},
  {&(_tg__ZTV9S20469C15__9S20469C14[9]),  9,11},
  {&(_tg__ZTV9S20469C179S20469C15__9S20469C14[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C179S20469C15__9S20469C14[5]),  5,5},
  {&(_tg__ZTV8S20469C5__9S20469C179S20469C15__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C29S20469C15__9S20469C14[6]),  6,8},
  {&(_tg__ZTV8S20469C3__8S20469C29S20469C15__9S20469C14[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C29S20469C15__9S20469C14[3]),  3,3},
  {&(_tg__ZTV9S20469C16__9S20469C15__9S20469C14[5]),  5,7},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C15__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C15__9S20469C14[5]),  5,5},
  {&(_tg__ZTV8S20469C5__A1__9S20469C15__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C2__9S20469C15__9S20469C14[6]),  6,8},
  {&(_tg__ZTV8S20469C3__9S20469C15__9S20469C14[6]),  6,8},
  {&(_ZTV9S20469C14[26]),  26,73},
  {&(_ZTV9S20469C14[31]),  31,73},
  {&(_ZTV9S20469C14[36]),  36,73},
  {&(_ZTV9S20469C14[39]),  39,73},
  {&(_ZTV9S20469C14[19]),  19,73},
  {&(_ZTV9S20469C14[45]),  45,73},
  {&(_ZTV9S20469C14[55]),  55,73},
  {&(_ZTV9S20469C14[60]),  60,73},
  {&(_ZTV9S20469C14[73]),  73,73},
  {&(_ZTV9S20469C14[65]),  65,73},
  {&(_tg__ZTV9S20469C16__9S20469C14[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt9S20469C16__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C16__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C14[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C8__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C5__A1__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C3__9S20469C14[5]),  5,7},
  {&(_tg__ZTV8S20469C88S20469C3__A1__9S20469C14[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C88S20469C3__A1__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C3__9S20469C14[3]),  3,3},
  {&(_tg__ZTV9S20469C18__9S20469C14[7]),  7,9},
  {&(_tg__ZTV9S20469C169S20469C18__A1__9S20469C14[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt9S20469C169S20469C18__A1__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C169S20469C18__A1__9S20469C14[3]),  3,3},
  {&(_tg__ZTV9S20469C129S20469C18__9S20469C14[5]),  5,7},
  {&(_tg__ZTV8S20469C89S20469C129S20469C18__A2__9S20469C14[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C89S20469C129S20469C18__A2__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C129S20469C18__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C18__9S20469C14[3]),  3,3},
  {&(_tg__ZTV9S20469C17__9S20469C18__9S20469C14[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C18__9S20469C14[5]),  5,5},
  {&(_tg__ZTV8S20469C5__A1__9S20469C18__9S20469C14[3]),  3,3},
  {&(_tg__ZTV9S20469C12__9S20469C18__9S20469C14[5]),  5,7},
  {&(_tg__ZTV9S20469C17__A1__9S20469C14[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C17__A1__9S20469C14[5]),  5,5},
  {&(_tg__ZTV8S20469C5__9S20469C17__A1__9S20469C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C14[];
extern  VTBL_ENTRY _ZTV9S20469C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C14[];
static VTBL_ENTRY alt_thunk_names121[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C15D0Ev,_ZThn48_N9S20469C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C15D1Ev,_ZThn48_N9S20469C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C15D0Ev,_ZThn16_N9S20469C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C15D1Ev,_ZThn16_N9S20469C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C2D0Ev,_ZThn40_N8S20469C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C2D1Ev,_ZThn40_N8S20469C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C14D0Ev,_ZTv0_n32_N9S20469C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20469C14D0Ev,_ZThn64_N9S20469C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C14D1Ev,_ZTv0_n32_N9S20469C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20469C14D1Ev,_ZThn64_N9S20469C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C14D0Ev,_ZTv0_n24_N9S20469C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C14D0Ev,_ZThn48_N9S20469C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C14D1Ev,_ZTv0_n24_N9S20469C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C14D1Ev,_ZThn48_N9S20469C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C14D0Ev,_ZTv0_n20_N9S20469C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C14D0Ev,_ZThn16_N9S20469C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C14D1Ev,_ZTv0_n20_N9S20469C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C14D1Ev,_ZThn16_N9S20469C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20469C14 = {  "S20469C14", // class name
  bases_S20469C14, 34,
  &(vtc_S20469C14[0]), // expected_vtbl_contents
  &(vtt_S20469C14[0]), // expected_vtt_contents
  ABISELECT(248,176), // object size
  NSPAIRA(_ZTI9S20469C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20469C14),73, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C14),52, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names121,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C20  : virtual S20469C5 , S20469C11_nt {
  void *s20469c20f0;
  ~S20469C20(); // tgen
  S20469C20(); // tgen
};
//SIG(-1 S20469C20) C1{ VBC2{ BC3{ m} VBC4{ m} FC3} BC5{ VBC3 BC4} Fp}


S20469C20 ::~S20469C20(){ note_dtor("S20469C20", this);} // tgen
S20469C20 ::S20469C20(){ note_ctor("S20469C20", this);} // tgen

static void Test_S20469C20()
{
  extern Class_Descriptor cd_S20469C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20469C20, buf);
    S20469C20 *dp, &lv = *(dp=new (buf) S20469C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20469C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C20)");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(16,8), "S20469C20");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(25,13), "S20469C20");
    check_base_class_offset(lv, (S20469C5*), ABISELECT(16,8), "S20469C20");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*), 0, "S20469C20");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*), 0, "S20469C20");
    check_base_class_offset(lv, (S20469C11_nt*), 0, "S20469C20");
    check_field_offset(lv, s20469c20f0, ABISELECT(8,4), "S20469C20.s20469c20f0");
    test_class_info(&lv, &cd_S20469C20);
    dp->~S20469C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C20(Test_S20469C20, "S20469C20", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S20469C20C1Ev();
extern void _ZN9S20469C20D1Ev();
Name_Map name_map_S20469C20[] = {
  NSPAIR(_ZN9S20469C20C1Ev),
  NSPAIR(_ZN9S20469C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
static Base_Class bases_S20469C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C20[];
static  VTBL_ENTRY vtc_S20469C20[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C20[0]),
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C20[0]),
};
extern VTBL_ENTRY _ZTV9S20469C20[];
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C20[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C20[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTT_ENTRY vtt_S20469C20[] = {
  {&(_ZTV9S20469C20[5]),  5,8},
  {&(_tg__ZTV12S20469C11_nt__9S20469C20[3]),  3,3},
  {&(_ZTV9S20469C20[8]),  8,8},
  {&(_tg__ZTV8S20469C5__9S20469C20[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C20[];
extern  VTBL_ENTRY _ZTV9S20469C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C20[];
Class_Descriptor cd_S20469C20 = {  "S20469C20", // class name
  bases_S20469C20, 6,
  &(vtc_S20469C20[0]), // expected_vtbl_contents
  &(vtt_S20469C20[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S20469C20),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20469C20),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C20),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C19  : virtual S20469C11_nt , virtual S4228C27 , S20469C20 {
  int s20469c19f0;
  virtual  ~S20469C19(); // _ZN9S20469C19D2Ev
  S20469C19(); // tgen
};
//SIG(-1 S20469C19) C1{ VBC2{ VBC3{ m} BC4{ m}} VBC4 BC5{ VBC6{ BC3 VBC4 FC3} BC2 Fp} vd Fi}


 S20469C19 ::~S20469C19(){ note_dtor("S20469C19", this);}
S20469C19 ::S20469C19(){ note_ctor("S20469C19", this);} // tgen

static void Test_S20469C19()
{
  extern Class_Descriptor cd_S20469C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S20469C19, buf);
    S20469C19 *dp, &lv = *(dp=new (buf) S20469C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S20469C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C19)");
    /*is_ambiguous_... S20469C19::S20469C11_nt */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*), 0, "S20469C19");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C20*), 0, "S20469C19");
    /*is_ambiguous_... S20469C19::S20469C11_nt */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*), ABISELECT(24,12), "S20469C19");
    /*is_ambiguous_... S20469C19::S20469C11_nt */ AMB_check_base_class_offset(lv, (S20469C11_nt*), ABISELECT(24,12), "S20469C19");
    /*is_ambiguous_... S20469C19::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), ABISELECT(32,16), "S20469C19");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(32,16), "S20469C19");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(32,16), "S20469C19");
    check_base_class_offset(lv, (S20469C5*)(S20469C20*), ABISELECT(32,16), "S20469C19");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C20*), 0, "S20469C19");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C20*), 0, "S20469C19");
    check_base_class_offset(lv, (S20469C20*), 0, "S20469C19");
    check_field_offset(lv, s20469c19f0, ABISELECT(16,8), "S20469C19.s20469c19f0");
    test_class_info(&lv, &cd_S20469C19);
    dp->~S20469C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C19(Test_S20469C19, "S20469C19", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN9S20469C19C1Ev();
extern void _ZN9S20469C19D2Ev();
Name_Map name_map_S20469C19[] = {
  NSPAIR(_ZN9S20469C19C1Ev),
  NSPAIR(_ZN9S20469C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S20469C20;
extern VTBL_ENTRY _ZTI9S20469C20[];
extern  VTBL_ENTRY _ZTV9S20469C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C20[];
static Base_Class bases_S20469C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    ABISELECT(24,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20469C5,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20469C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C19[];
extern void _ZN9S20469C19D1Ev();
extern void _ZN9S20469C19D0Ev();
static  VTBL_ENTRY vtc_S20469C19[] = {
  ABISELECT(24,12),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C19[0]),
  (VTBL_ENTRY)&_ZN9S20469C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C19D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20469C19[0]),
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C19[0]),
};
extern VTBL_ENTRY _ZTV9S20469C19[];
static  VTBL_ENTRY _tg__ZTV9S20469C20__9S20469C19[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C20[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C20__A1__9S20469C19[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C20__9S20469C19[] = {
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C20[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C19[] = {
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C19[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTT_ENTRY vtt_S20469C19[] = {
  {&(_ZTV9S20469C19[6]),  6,14},
  {&(_tg__ZTV9S20469C20__9S20469C19[5]),  5,5},
  {&(_tg__ZTV12S20469C11_nt9S20469C20__A1__9S20469C19[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C20__9S20469C19[3]),  3,3},
  {&(_ZTV9S20469C19[11]),  11,14},
  {&(_ZTV9S20469C19[14]),  14,14},
  {&(_tg__ZTV12S20469C11_nt__9S20469C19[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C19[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C19[];
extern  VTBL_ENTRY _ZTV9S20469C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C19[];
Class_Descriptor cd_S20469C19 = {  "S20469C19", // class name
  bases_S20469C19, 9,
  &(vtc_S20469C19[0]), // expected_vtbl_contents
  &(vtt_S20469C19[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI9S20469C19),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20469C19),14, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C19),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C22  : virtual S20469C11_nt {
  virtual  ~S20469C22(); // _ZN9S20469C22D2Ev
  S20469C22(); // tgen
};
//SIG(-1 S20469C22) C1{ VBC2{ VBC3{ m} BC4{ m}} vd}


 S20469C22 ::~S20469C22(){ note_dtor("S20469C22", this);}
S20469C22 ::S20469C22(){ note_ctor("S20469C22", this);} // tgen

static void Test_S20469C22()
{
  extern Class_Descriptor cd_S20469C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20469C22, buf);
    S20469C22 *dp, &lv = *(dp=new (buf) S20469C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20469C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C22)");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*), 0, "S20469C22");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*), 0, "S20469C22");
    check_base_class_offset(lv, (S20469C11_nt*), 0, "S20469C22");
    test_class_info(&lv, &cd_S20469C22);
    dp->~S20469C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C22(Test_S20469C22, "S20469C22", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S20469C22C1Ev();
extern void _ZN9S20469C22D2Ev();
Name_Map name_map_S20469C22[] = {
  NSPAIR(_ZN9S20469C22C1Ev),
  NSPAIR(_ZN9S20469C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
static Base_Class bases_S20469C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C22[];
extern void _ZN9S20469C22D1Ev();
extern void _ZN9S20469C22D0Ev();
static  VTBL_ENTRY vtc_S20469C22[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C22[0]),
  (VTBL_ENTRY)&_ZN9S20469C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C22D0Ev,
};
extern VTBL_ENTRY _ZTV9S20469C22[];
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C22[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTT_ENTRY vtt_S20469C22[] = {
  {&(_ZTV9S20469C22[4]),  4,6},
  {&(_ZTV9S20469C22[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt__9S20469C22[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C22[];
extern  VTBL_ENTRY _ZTV9S20469C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C22[];
Class_Descriptor cd_S20469C22 = {  "S20469C22", // class name
  bases_S20469C22, 3,
  &(vtc_S20469C22[0]), // expected_vtbl_contents
  &(vtt_S20469C22[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S20469C22),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20469C22),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C22),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C21  : virtual S20469C3 , virtual S20469C9 , S20469C22 {
  int s20469c21f0[2];
  ~S20469C21(); // tgen
  S20469C21(); // tgen
};
//SIG(-1 S20469C21) C1{ VBC2{ BC3{ m Fi} VBC4{ BC5{ m} VBC6{ m} FC5} BC7{ BC6 VBC5 VBC4 Fp} BC6 vd Fc} VBC8{ VBC9{ m} VBC10{ VBC2 vd Fi} VBC11{ VBC5 BC6} VBC12{ BC7 vd FL[10]} vd} BC13{ VBC11 vd} Fi[2]}


S20469C21 ::~S20469C21(){ note_dtor("S20469C21", this);} // tgen
S20469C21 ::S20469C21(){ note_ctor("S20469C21", this);} // tgen

static void Test_S20469C21()
{
  extern Class_Descriptor cd_S20469C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,35)];
    init_test(&cd_S20469C21, buf);
    S20469C21 *dp, &lv = *(dp=new (buf) S20469C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,136), "sizeof(S20469C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C21)");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C3*), ABISELECT(32,20), "S20469C21");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(40,28), "S20469C21");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), 0, "S20469C21");
    check_base_class_offset(lv, (S20469C5*)(S20469C3*), ABISELECT(40,28), "S20469C21");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C3*), ABISELECT(40,28), "S20469C21");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C12*), ABISELECT(40,28), "S20469C21");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C3*), ABISELECT(16,12), "S20469C21");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C3*), 0, "S20469C21");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*), 0, "S20469C21");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C12*), 0, "S20469C21");
    check_base_class_offset(lv, (S20469C8*)(S20469C3*), ABISELECT(16,12), "S20469C21");
    /*is_ambiguous_... S20469C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C3*), ABISELECT(36,24), "S20469C21");
    check_base_class_offset(lv, (S20469C3*), ABISELECT(16,12), "S20469C21");
    check_base_class_offset(lv, (S20469C3*)(S20469C2*), ABISELECT(16,12), "S20469C21");
    check_base_class_offset(lv, (S4228C23*)(S20469C9*), 0, "S20469C21");
    check_base_class_offset(lv, (S20469C2*)(S20469C9*), ABISELECT(64,40), "S20469C21");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*), ABISELECT(56,36), "S20469C21");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C9*), ABISELECT(56,36), "S20469C21");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C22*), ABISELECT(56,36), "S20469C21");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C12*), ABISELECT(80,48), "S20469C21");
    check_base_class_offset(lv, (S20469C8*)(S20469C12*), ABISELECT(80,48), "S20469C21");
    check_base_class_offset(lv, (S20469C12*)(S20469C9*), ABISELECT(80,48), "S20469C21");
    check_base_class_offset(lv, (S20469C9*), ABISELECT(56,36), "S20469C21");
    check_base_class_offset(lv, (S20469C22*), 0, "S20469C21");
    check_field_offset(lv, s20469c21f0, ABISELECT(8,4), "S20469C21.s20469c21f0");
    test_class_info(&lv, &cd_S20469C21);
    dp->~S20469C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C21(Test_S20469C21, "S20469C21", ABISELECT(176,136));

#else // __cplusplus

extern void _ZN9S20469C21C1Ev();
extern void _ZN9S20469C21D1Ev();
Name_Map name_map_S20469C21[] = {
  NSPAIR(_ZN9S20469C21C1Ev),
  NSPAIR(_ZN9S20469C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C3;
extern VTBL_ENTRY _ZTI8S20469C3[];
extern  VTBL_ENTRY _ZTV8S20469C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C3[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20469C2;
extern VTBL_ENTRY _ZTI8S20469C2[];
extern  VTBL_ENTRY _ZTV8S20469C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C2[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C12;
extern VTBL_ENTRY _ZTI9S20469C12[];
extern  VTBL_ENTRY _ZTV9S20469C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C12[];
extern Class_Descriptor cd_S20469C9;
extern VTBL_ENTRY _ZTI8S20469C9[];
extern  VTBL_ENTRY _ZTV8S20469C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C9[];
extern Class_Descriptor cd_S20469C22;
extern VTBL_ENTRY _ZTI9S20469C22[];
extern  VTBL_ENTRY _ZTV9S20469C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C22[];
static Base_Class bases_S20469C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(40,28), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20469C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(36,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20469C3,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20469C2,    ABISELECT(64,40), //bcp->offset
    37, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20469C12,    ABISELECT(80,48), //bcp->offset
    46, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20469C9,    ABISELECT(56,36), //bcp->offset
    24, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20469C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C21[];
extern void _ZN9S20469C21D1Ev();
extern void _ZN9S20469C21D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C21D1Ev,_ZThn12_N9S20469C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20469C21D0Ev,_ZThn12_N9S20469C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S20469C21D1Ev,_ZTv0_n44_N9S20469C21D1Ev)();
extern void ABISELECT(_ZThn56_N9S20469C21D1Ev,_ZThn36_N9S20469C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S20469C21D0Ev,_ZTv0_n44_N9S20469C21D0Ev)();
extern void ABISELECT(_ZThn56_N9S20469C21D0Ev,_ZThn36_N9S20469C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20469C21D1Ev,_ZTv0_n28_N9S20469C21D1Ev)();
extern void ABISELECT(_ZThn64_N9S20469C21D1Ev,_ZThn40_N9S20469C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20469C21D0Ev,_ZTv0_n28_N9S20469C21D0Ev)();
extern void ABISELECT(_ZThn64_N9S20469C21D0Ev,_ZThn40_N9S20469C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev)();
extern void ABISELECT(_ZThn80_N9S20469C21D1Ev,_ZThn48_N9S20469C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev)();
extern void ABISELECT(_ZThn80_N9S20469C21D0Ev,_ZThn48_N9S20469C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20469C21[] = {
  ABISELECT(80,48),
  ABISELECT(64,40),
  0,
  ABISELECT(56,36),
  0,
  ABISELECT(40,28),
  ABISELECT(16,12),
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&_ZN9S20469C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C21D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev),
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  ABISELECT(-56,-36),
  ABISELECT(24,12),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-16,-8),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20469C21D1Ev,_ZTv0_n44_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20469C21D0Ev,_ZTv0_n44_N9S20469C21D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C21D1Ev,_ZTv0_n28_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C21D0Ev,_ZTv0_n28_N9S20469C21D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev),
};
extern VTBL_ENTRY _ZTV9S20469C21[];
extern void _ZN9S20469C22D1Ev();
extern void _ZN9S20469C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C22__9S20469C21[] = {
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C22[0]),
  (VTBL_ENTRY)&_ZN9S20469C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C22__9S20469C21[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C22[0]),
};
extern void _ZN8S20469C3D1Ev();
extern void _ZN8S20469C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C21[] = {
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
  (VTBL_ENTRY)&_ZN8S20469C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C88S20469C3__9S20469C21[] = {
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C88S20469C3__9S20469C21[] = {
  ABISELECT(-40,-28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C3__9S20469C21[] = {
  ABISELECT(-40,-28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C21[] = {
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
extern void _ZN8S20469C9D1Ev();
extern void _ZN8S20469C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C9__9S20469C21[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-16,-8),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&_ZN8S20469C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C9D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S20469C9D1Ev,_ZThn4_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S20469C9D0Ev,_ZThn4_N8S20469C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C2__8S20469C9__9S20469C21[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C9__9S20469C21[] = {
  ABISELECT(40,24),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C9__9S20469C21[] = {
  ABISELECT(-40,-28),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
};
extern void ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S20469C9D1Ev,_ZThn12_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S20469C9D0Ev,_ZThn12_N8S20469C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C12__8S20469C9__9S20469C21[] = {
  ABISELECT(-24,-12),
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev),
};
extern void _ZN8S20469C2D1Ev();
extern void _ZN8S20469C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C2__9S20469C21[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&_ZN8S20469C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C2D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C2__9S20469C21[] = {
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C2__9S20469C21[] = {
  ABISELECT(-40,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C21[] = {
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
extern void _ZN9S20469C12D1Ev();
extern void _ZN9S20469C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C12__9S20469C21[] = {
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
  (VTBL_ENTRY)&_ZN9S20469C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C89S20469C12__A1__9S20469C21[] = {
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C89S20469C12__A1__9S20469C21[] = {
  ABISELECT(-40,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C12__9S20469C21[] = {
  ABISELECT(-40,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
};
static  VTT_ENTRY vtt_S20469C21[] = {
  {&(_ZTV9S20469C21[11]),  11,54},
  {&(_tg__ZTV9S20469C22__9S20469C21[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt__9S20469C22__9S20469C21[3]),  3,3},
  {&(_ZTV9S20469C21[19]),  19,54},
  {&(_ZTV9S20469C21[24]),  24,54},
  {&(_ZTV9S20469C21[35]),  35,54},
  {&(_ZTV9S20469C21[44]),  44,54},
  {&(_ZTV9S20469C21[35]),  35,54},
  {&(_ZTV9S20469C21[52]),  52,54},
  {&(_tg__ZTV8S20469C3__9S20469C21[5]),  5,7},
  {&(_tg__ZTV8S20469C88S20469C3__9S20469C21[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C88S20469C3__9S20469C21[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C3__9S20469C21[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C21[3]),  3,3},
  {&(_tg__ZTV8S20469C9__9S20469C21[10]),  10,12},
  {&(_tg__ZTV8S20469C2__8S20469C9__9S20469C21[7]),  7,9},
  {&(_tg__ZTV8S20469C3__8S20469C9__9S20469C21[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C9__9S20469C21[3]),  3,3},
  {&(_tg__ZTV8S20469C9__9S20469C21[10]),  10,12},
  {&(_tg__ZTV9S20469C12__8S20469C9__9S20469C21[6]),  6,8},
  {&(_tg__ZTV8S20469C2__9S20469C21[6]),  6,8},
  {&(_tg__ZTV8S20469C3__8S20469C2__9S20469C21[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C2__9S20469C21[3]),  3,3},
  {&(_tg__ZTV12S20469C11_nt__9S20469C21[3]),  3,3},
  {&(_tg__ZTV9S20469C12__9S20469C21[5]),  5,7},
  {&(_tg__ZTV8S20469C89S20469C12__A1__9S20469C21[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C89S20469C12__A1__9S20469C21[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C12__9S20469C21[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C21[];
extern  VTBL_ENTRY _ZTV9S20469C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C21[];
static VTBL_ENTRY alt_thunk_names122[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20469C9D0Ev,_ZThn12_N8S20469C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20469C9D1Ev,_ZThn12_N8S20469C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20469C9D0Ev,_ZThn4_N8S20469C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20469C9D1Ev,_ZThn4_N8S20469C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20469C21D0Ev,_ZTv0_n28_N9S20469C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20469C21D0Ev,_ZThn40_N9S20469C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20469C21D1Ev,_ZTv0_n28_N9S20469C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20469C21D1Ev,_ZThn40_N9S20469C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20469C21D0Ev,_ZTv0_n44_N9S20469C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20469C21D0Ev,_ZThn36_N9S20469C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20469C21D1Ev,_ZTv0_n44_N9S20469C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20469C21D1Ev,_ZThn36_N9S20469C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20469C21D0Ev,_ZThn48_N9S20469C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20469C21D0Ev,_ZThn12_N9S20469C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20469C21D1Ev,_ZThn48_N9S20469C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20469C21D1Ev,_ZThn12_N9S20469C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20469C21 = {  "S20469C21", // class name
  bases_S20469C21, 18,
  &(vtc_S20469C21[0]), // expected_vtbl_contents
  &(vtt_S20469C21[0]), // expected_vtt_contents
  ABISELECT(176,136), // object size
  NSPAIRA(_ZTI9S20469C21),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20469C21),54, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C21),28, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names122,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S20469C23_nt  {
  void  mf20469c23(); // _ZN12S20469C23_nt10mf20469c23Ev
};
//SIG(1 S20469C23_nt) U1{ m}

#endif // __cplusplus
#ifdef __cplusplus

struct  S20469C13  : virtual S20469C14 , virtual S4228C23 , virtual S20469C19 , virtual S20469C21 {
  ::S20469C23_nt s20469c13f0;
  virtual  ~S20469C13(); // _ZN9S20469C13D2Ev
  S20469C13(); // tgen
};
//SIG(-1 S20469C13) C1{ VBC2{ BC3{ VBC4{ BC5{ m} BC6{ VBC7{ m} BC5} BC8{ BC7 VBC5 FC7} vd} VBC9{ BC5 VBC7 VBC8 Fp} BC10{ VBC9 Fc:8} VBC11{ m Fi} BC12{ VBC13{ BC11 VBC8 BC9 BC5 vd Fc} vd Fi}} VBC14{ BC11 BC15{ m} BC4 VBC10 BC16{ BC9 vd FL[10]} vd}} VBC15 VBC17{ VBC6 VBC5 BC18{ VBC8 BC6 Fp} vd Fi} VBC19{ VBC13 VBC20{ VBC15 VBC12 VBC6 VBC16 vd} BC21{ VBC6 vd} Fi[2]} vd FU22{ m}}


 S20469C13 ::~S20469C13(){ note_dtor("S20469C13", this);}
S20469C13 ::S20469C13(){ note_ctor("S20469C13", this);} // tgen

static void Test_S20469C13()
{
  extern Class_Descriptor cd_S20469C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(53,77)];
    init_test(&cd_S20469C13, buf);
    S20469C13 *dp, &lv = *(dp=new (buf) S20469C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,304), "sizeof(S20469C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C13)");
    /*is_ambiguous_... S20469C13::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C16*), ABISELECT(56,28), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C16*), 0, "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*), 0, "S20469C13");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C3*), 0, "S20469C13");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C16*)(S20469C18*), 0, "S20469C13");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C12*)(S20469C18*), 0, "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C11_nt */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*), 0, "S20469C13");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C20*)(S20469C19*), 0, "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C12 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C12*), 0, "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C16*), ABISELECT(48,24), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C16 */ AMB_check_base_class_offset(lv, (S20469C11_nt*)(S20469C16*), ABISELECT(48,24), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C5*)(S20469C16*), ABISELECT(56,28), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C5*)(S20469C16*), ABISELECT(65,33), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(65,33), "S20469C13");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*)(S20469C16*)(S20469C18*), ABISELECT(65,33), "S20469C13");
    /*is_ambiguous_... S20469C19::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C19*), ABISELECT(65,33), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C16 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C16*), ABISELECT(56,28), "S20469C13");
    check_base_class_offset(lv, (S20469C16*)(S20469C15*)(S20469C14*), ABISELECT(48,24), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*), ABISELECT(72,36), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(88,44), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C8 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C8*), ABISELECT(88,44), "S20469C13");
    check_base_class_offset(lv, (S20469C5*)(S20469C3*), ABISELECT(88,44), "S20469C13");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C3*), ABISELECT(88,44), "S20469C13");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C12*)(S20469C18*), ABISELECT(88,44), "S20469C13");
    check_base_class_offset(lv, (S20469C5*)(S20469C20*)(S20469C19*), ABISELECT(88,44), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C12 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C12*), ABISELECT(88,44), "S20469C13");
    /*is_ambiguous_... S20469C15::S20469C8 */ AMB_check_base_class_offset(lv, (S20469C8*)(S20469C15*)(S20469C14*), ABISELECT(72,36), "S20469C13");
    check_base_class_offset(lv, (S20469C8*)(S20469C17*)(S20469C15*)(S20469C14*), ABISELECT(72,36), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C17 */ AMB_check_base_class_offset(lv, (S20469C8*)(S20469C17*), ABISELECT(72,36), "S20469C13");
    check_base_class_offset(lv, (S20469C17*)(S20469C15*)(S20469C14*), ABISELECT(16,8), "S20469C13");
    /*is_ambiguous_... S20469C15::S3423C8_nt */ AMB_check_base_class_offset(lv, (S3423C8_nt*)(S20469C15*)(S20469C14*), ABISELECT(100,52), "S20469C13");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C3*), ABISELECT(120,64), "S20469C13");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C3*), ABISELECT(104,56), "S20469C13");
    check_base_class_offset(lv, (S20469C8*)(S20469C3*), ABISELECT(104,56), "S20469C13");
    /*is_ambiguous_... S20469C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C3*), ABISELECT(124,68), "S20469C13");
    check_base_class_offset(lv, (S20469C3*)(S20469C2*)(S20469C15*)(S20469C14*), ABISELECT(104,56), "S20469C13");
    check_base_class_offset(lv, (S20469C3*)(S20469C21*), ABISELECT(104,56), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C2 */ AMB_check_base_class_offset(lv, (S20469C3*)(S20469C2*), ABISELECT(104,56), "S20469C13");
    check_base_class_offset(lv, (S20469C2*)(S20469C15*)(S20469C14*), ABISELECT(32,16), "S20469C13");
    check_base_class_offset(lv, (S20469C15*)(S20469C14*), ABISELECT(16,8), "S20469C13");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C18*), ABISELECT(148,84), "S20469C13");
    check_base_class_offset(lv, (S4228C23*)(S20469C18*), ABISELECT(128,72), "S20469C13");
    /*is_ambiguous_... S20469C16::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C16*)(S20469C18*), ABISELECT(136,76), "S20469C13");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C16*)(S20469C18*), ABISELECT(128,72), "S20469C13");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C16*)(S20469C18*), ABISELECT(128,72), "S20469C13");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*)(S20469C16*)(S20469C18*), ABISELECT(136,76), "S20469C13");
    check_base_class_offset(lv, (S20469C5*)(S20469C16*)(S20469C18*), ABISELECT(136,76), "S20469C13");
    check_base_class_offset(lv, (S20469C16*)(S20469C18*), ABISELECT(128,72), "S20469C13");
    check_base_class_offset(lv, (S20469C17*)(S20469C18*), ABISELECT(248,176), "S20469C13");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C12*)(S20469C18*), ABISELECT(152,88), "S20469C13");
    check_base_class_offset(lv, (S20469C8*)(S20469C12*)(S20469C18*), ABISELECT(152,88), "S20469C13");
    check_base_class_offset(lv, (S20469C12*)(S20469C18*), ABISELECT(152,88), "S20469C13");
    check_base_class_offset(lv, (S20469C18*)(S20469C14*), ABISELECT(128,72), "S20469C13");
    check_base_class_offset(lv, (S20469C14*), ABISELECT(16,8), "S20469C13");
    /*is_ambiguous_... S20469C13::S4228C23 */ AMB_check_base_class_offset(lv, (S4228C23*), 0, "S20469C13");
    check_base_class_offset(lv, (S4228C23*)(S20469C9*), 0, "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C11_nt */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*), 0, "S20469C13");
    /*is_ambiguous_... S20469C19::S20469C11_nt */ AMB_check_base_class_offset(lv, (S20469C11_nt*)(S20469C19*), 0, "S20469C13");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C9*), 0, "S20469C13");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C22*)(S20469C21*), 0, "S20469C13");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C20*)(S20469C19*), ABISELECT(264,184), "S20469C13");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C20*)(S20469C19*), ABISELECT(264,184), "S20469C13");
    check_base_class_offset(lv, (S20469C20*)(S20469C19*), ABISELECT(264,184), "S20469C13");
    check_base_class_offset(lv, (S20469C19*), ABISELECT(264,184), "S20469C13");
    check_base_class_offset(lv, (S20469C2*)(S20469C9*), ABISELECT(304,208), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C12 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C12*), ABISELECT(320,216), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C12 */ AMB_check_base_class_offset(lv, (S20469C8*)(S20469C12*), ABISELECT(320,216), "S20469C13");
    check_base_class_offset(lv, (S20469C12*)(S20469C9*), ABISELECT(320,216), "S20469C13");
    check_base_class_offset(lv, (S20469C9*)(S20469C21*), 0, "S20469C13");
    check_base_class_offset(lv, (S20469C22*)(S20469C21*), ABISELECT(288,196), "S20469C13");
    check_base_class_offset(lv, (S20469C21*), ABISELECT(288,196), "S20469C13");
    check_field_offset(lv, s20469c13f0, ABISELECT(8,4), "S20469C13.s20469c13f0");
    test_class_info(&lv, &cd_S20469C13);
    dp->~S20469C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C13(Test_S20469C13, "S20469C13", ABISELECT(416,304));

#else // __cplusplus

extern void _ZN9S20469C13C1Ev();
extern void _ZN9S20469C13D2Ev();
Name_Map name_map_S20469C13[] = {
  NSPAIR(_ZN9S20469C13C1Ev),
  NSPAIR(_ZN9S20469C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C16;
extern VTBL_ENTRY _ZTI9S20469C16[];
extern  VTBL_ENTRY _ZTV9S20469C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C16[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C17;
extern VTBL_ENTRY _ZTI9S20469C17[];
extern  VTBL_ENTRY _ZTV9S20469C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C17[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C3;
extern VTBL_ENTRY _ZTI8S20469C3[];
extern  VTBL_ENTRY _ZTV8S20469C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C3[];
extern Class_Descriptor cd_S20469C2;
extern VTBL_ENTRY _ZTI8S20469C2[];
extern  VTBL_ENTRY _ZTV8S20469C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C2[];
extern Class_Descriptor cd_S20469C15;
extern VTBL_ENTRY _ZTI9S20469C15[];
extern  VTBL_ENTRY _ZTV9S20469C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C15[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C16;
extern VTBL_ENTRY _ZTI9S20469C16[];
extern  VTBL_ENTRY _ZTV9S20469C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C16[];
extern Class_Descriptor cd_S20469C17;
extern VTBL_ENTRY _ZTI9S20469C17[];
extern  VTBL_ENTRY _ZTV9S20469C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C17[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C12;
extern VTBL_ENTRY _ZTI9S20469C12[];
extern  VTBL_ENTRY _ZTV9S20469C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C12[];
extern Class_Descriptor cd_S20469C18;
extern VTBL_ENTRY _ZTI9S20469C18[];
extern  VTBL_ENTRY _ZTV9S20469C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C18[];
extern Class_Descriptor cd_S20469C14;
extern VTBL_ENTRY _ZTI9S20469C14[];
extern  VTBL_ENTRY _ZTV9S20469C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C14[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S20469C20;
extern VTBL_ENTRY _ZTI9S20469C20[];
extern  VTBL_ENTRY _ZTV9S20469C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C20[];
extern Class_Descriptor cd_S20469C19;
extern VTBL_ENTRY _ZTI9S20469C19[];
extern  VTBL_ENTRY _ZTV9S20469C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C19[];
extern Class_Descriptor cd_S20469C2;
extern VTBL_ENTRY _ZTI8S20469C2[];
extern  VTBL_ENTRY _ZTV8S20469C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C2[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C12;
extern VTBL_ENTRY _ZTI9S20469C12[];
extern  VTBL_ENTRY _ZTV9S20469C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C12[];
extern Class_Descriptor cd_S20469C9;
extern VTBL_ENTRY _ZTI8S20469C9[];
extern  VTBL_ENTRY _ZTV8S20469C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C9[];
extern Class_Descriptor cd_S20469C22;
extern VTBL_ENTRY _ZTI9S20469C22[];
extern  VTBL_ENTRY _ZTV9S20469C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C22[];
extern Class_Descriptor cd_S20469C21;
extern VTBL_ENTRY _ZTI9S20469C21[];
extern  VTBL_ENTRY _ZTV9S20469C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C21[];
static Base_Class bases_S20469C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(65,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(56,28), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20469C16,    ABISELECT(48,24), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20469C5,    ABISELECT(88,44), //bcp->offset
    59, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20469C8,    ABISELECT(72,36), //bcp->offset
    54, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20469C17,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(100,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S3423C8_nt,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(124,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20469C3,    ABISELECT(104,56), //bcp->offset
    62, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20469C2,    ABISELECT(32,16), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20469C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(148,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S4228C23,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20469C5,    ABISELECT(136,76), //bcp->offset
    80, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20469C16,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20469C17,    ABISELECT(248,176), //bcp->offset
    90, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20469C12,    ABISELECT(152,88), //bcp->offset
    83, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20469C18,    ABISELECT(128,72), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    34, //immediately_derived
  0, 1},
  {&cd_S20469C14,    ABISELECT(16,8), //bcp->offset
    22, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(264,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    ABISELECT(264,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20469C20,    ABISELECT(264,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20469C19,    ABISELECT(264,184), //bcp->offset
    96, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20469C2,    ABISELECT(304,208), //bcp->offset
    119, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(320,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(320,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20469C12,    ABISELECT(320,216), //bcp->offset
    128, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S20469C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S20469C22,    ABISELECT(288,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20469C21,    ABISELECT(288,196), //bcp->offset
    105, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C13[];
extern void _ZN9S20469C13D1Ev();
extern void _ZN9S20469C13D0Ev();
extern void ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C13D1Ev,_ZThn8_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S20469C13D0Ev,_ZThn8_N9S20469C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n96_N9S20469C13D1Ev,_ZTvn8_n48_N9S20469C13D1Ev)();
extern void ABISELECT(_ZTvn16_n96_N9S20469C13D0Ev,_ZTvn8_n48_N9S20469C13D0Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20469C13D1Ev,_ZTv0_n20_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn48_N9S20469C13D1Ev,_ZThn24_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20469C13D0Ev,_ZTv0_n20_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn48_N9S20469C13D0Ev,_ZThn24_N9S20469C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn104_N9S20469C13D1Ev,_ZThn56_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn104_N9S20469C13D0Ev,_ZThn56_N9S20469C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20469C13D1Ev,_ZTv0_n32_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn128_N9S20469C13D1Ev,_ZThn72_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20469C13D0Ev,_ZTv0_n32_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn128_N9S20469C13D0Ev,_ZThn72_N9S20469C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n64_N9S20469C13D1Ev,_ZTvn16_n32_N9S20469C13D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N9S20469C13D0Ev,_ZTvn16_n32_N9S20469C13D0Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S20469C13D1Ev,_ZThn184_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn264_N9S20469C13D0Ev,_ZThn184_N9S20469C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn288_N9S20469C13D1Ev,_ZThn196_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn288_N9S20469C13D0Ev,_ZThn196_N9S20469C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn304_N9S20469C13D1Ev,_ZThn208_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn304_N9S20469C13D0Ev,_ZThn208_N9S20469C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn320_N9S20469C13D1Ev,_ZThn216_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn320_N9S20469C13D0Ev,_ZThn216_N9S20469C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20469C13[] = {
  0,
  ABISELECT(288,196),
  ABISELECT(264,184),
  ABISELECT(248,176),
  ABISELECT(128,72),
  ABISELECT(100,52),
  ABISELECT(72,36),
  ABISELECT(48,24),
  ABISELECT(16,8),
  0,
  ABISELECT(320,216),
  0,
  ABISELECT(65,33),
  ABISELECT(88,44),
  ABISELECT(104,56),
  ABISELECT(304,208),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&_ZN9S20469C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C13D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(232,168),
  ABISELECT(112,64),
  ABISELECT(88,48),
  ABISELECT(84,44),
  ABISELECT(32,16),
  ABISELECT(49,25),
  ABISELECT(72,36),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(33,17),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N9S20469C13D1Ev,_ZTvn8_n48_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N9S20469C13D0Ev,_ZTvn8_n48_N9S20469C13D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(17,9),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C13D1Ev,_ZTv0_n20_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C13D0Ev,_ZTv0_n20_N9S20469C13D0Ev),
  ABISELECT(9,5),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  ABISELECT(-23,-11),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  ABISELECT(-104,-56),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-40,-28),
  ABISELECT(-56,-36),
  ABISELECT(120,104),
  ABISELECT(-63,-39),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C13D1Ev,_ZTv0_n32_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C13D0Ev,_ZTv0_n32_N9S20469C13D0Ev),
  ABISELECT(-71,-43),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  ABISELECT(-87,-55),
  ABISELECT(-64,-44),
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C13D1Ev,_ZTvn16_n32_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C13D0Ev,_ZTvn16_n32_N9S20469C13D0Ev),
  ABISELECT(-183,-143),
  ABISELECT(-160,-132),
  ABISELECT(-248,-176),
  ABISELECT(-176,-140),
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  ABISELECT(-264,-184),
  ABISELECT(-264,-184),
  ABISELECT(-199,-151),
  ABISELECT(-176,-140),
  ABISELECT(-264,-184),
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev),
  ABISELECT(-288,-196),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  ABISELECT(-223,-163),
  ABISELECT(-200,-152),
  ABISELECT(-184,-140),
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev),
  ABISELECT(-304,-208),
  ABISELECT(-304,-208),
  ABISELECT(-239,-175),
  ABISELECT(-216,-164),
  ABISELECT(-200,-152),
  ABISELECT(-304,-208),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev),
  ABISELECT(-320,-216),
  ABISELECT(-255,-183),
  ABISELECT(-232,-172),
  ABISELECT(-320,-216),
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S20469C13[];
extern void _ZN9S20469C14D1Ev();
extern void _ZN9S20469C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C14__9S20469C13[] = {
  ABISELECT(232,168),
  ABISELECT(112,64),
  ABISELECT(88,48),
  ABISELECT(84,44),
  ABISELECT(32,16),
  ABISELECT(49,25),
  ABISELECT(72,36),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&_ZN9S20469C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C14D0Ev,
};
extern void _ZN9S20469C15D1Ev();
extern void _ZN9S20469C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(88,48),
  ABISELECT(84,44),
  ABISELECT(32,16),
  ABISELECT(49,25),
  ABISELECT(72,36),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&_ZN9S20469C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20469C179S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(49,25),
  ABISELECT(72,36),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C179S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C179S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
extern void _ZN8S20469C2D1Ev();
extern void _ZN8S20469C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C29S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(33,17),
  ABISELECT(56,28),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&_ZN8S20469C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C2D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S20469C2D1Ev,_ZThn40_N8S20469C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S20469C2D0Ev,_ZThn40_N8S20469C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C29S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-72,-40),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-104,-56),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C29S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
};
extern void ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn32_N9S20469C15D1Ev,_ZThn16_N9S20469C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev)();
extern void ABISELECT(_ZThn32_N9S20469C15D0Ev,_ZThn16_N9S20469C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(17,9),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(9,5),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
};
extern void ABISELECT(_ZThn16_N9S20469C15D1Ev,_ZThn8_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C15D0Ev,_ZThn8_N9S20469C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C2__9S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(33,17),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C15D1Ev,_ZThn8_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C15D0Ev,_ZThn8_N9S20469C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S20469C15D1Ev,_ZThn48_N9S20469C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S20469C15D0Ev,_ZThn48_N9S20469C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-88,-48),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-104,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20469C14D1Ev,_ZTv0_n20_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S20469C14D1Ev,_ZThn16_N9S20469C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20469C14D0Ev,_ZTv0_n20_N9S20469C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S20469C14D0Ev,_ZThn16_N9S20469C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C14__9S20469C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(17,9),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C14D1Ev,_ZTv0_n20_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C14D0Ev,_ZTv0_n20_N9S20469C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C14__9S20469C13[] = {
  ABISELECT(9,5),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C14__9S20469C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C14__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
extern void ABISELECT(_ZThn16_N9S20469C14D1Ev,_ZThn8_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C14D0Ev,_ZThn8_N9S20469C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C29S20469C15__9S20469C14__9S20469C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(33,17),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C14D1Ev,_ZThn8_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C14D0Ev,_ZThn8_N9S20469C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C14D1Ev,_ZTv0_n24_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn88_N9S20469C14D1Ev,_ZThn48_N9S20469C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C14D0Ev,_ZTv0_n24_N9S20469C14D0Ev)();
extern void ABISELECT(_ZThn88_N9S20469C14D0Ev,_ZThn48_N9S20469C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C14__9S20469C13[] = {
  ABISELECT(-88,-48),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-104,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C14D1Ev,_ZTv0_n24_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C14D0Ev,_ZTv0_n24_N9S20469C14D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S20469C14D1Ev,_ZTv0_n32_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20469C14D1Ev,_ZThn64_N9S20469C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20469C14D0Ev,_ZTv0_n32_N9S20469C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20469C14D0Ev,_ZThn64_N9S20469C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C18__9S20469C14__9S20469C13[] = {
  ABISELECT(-112,-64),
  ABISELECT(-40,-28),
  ABISELECT(-56,-36),
  ABISELECT(120,104),
  ABISELECT(-63,-39),
  ABISELECT(-128,-72),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C14D1Ev,_ZTv0_n32_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C14D0Ev,_ZTv0_n32_N9S20469C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C14__9S20469C13[] = {
  ABISELECT(-71,-43),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__A1__9S20469C14__9S20469C13[] = {
  ABISELECT(-183,-143),
  ABISELECT(-160,-132),
  ABISELECT(-248,-176),
  ABISELECT(-176,-140),
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
extern void ABISELECT(_ZTvn24_n64_N9S20469C14D1Ev,_ZTvn16_n32_N9S20469C14D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N9S20469C14D0Ev,_ZTvn16_n32_N9S20469C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20469C129S20469C18__9S20469C14__9S20469C13[] = {
  ABISELECT(-87,-55),
  ABISELECT(-64,-44),
  ABISELECT(-152,-88),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C14D1Ev,_ZTvn16_n32_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C14D0Ev,_ZTvn16_n32_N9S20469C14D0Ev),
};
extern void _ZN9S20469C16D1Ev();
extern void _ZN9S20469C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C13[] = {
  ABISELECT(17,9),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
  (VTBL_ENTRY)&_ZN9S20469C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C16__9S20469C13[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C13[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C16__9S20469C13[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C8__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C13[] = {
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
extern void _ZN8S20469C3D1Ev();
extern void _ZN8S20469C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C13[] = {
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
  (VTBL_ENTRY)&_ZN8S20469C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C88S20469C3__A1__9S20469C13[] = {
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C88S20469C3__A1__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C3__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
};
extern void _ZN9S20469C18D1Ev();
extern void _ZN9S20469C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C18__9S20469C13[] = {
  ABISELECT(-40,-28),
  ABISELECT(-56,-36),
  ABISELECT(120,104),
  ABISELECT(-63,-39),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  (VTBL_ENTRY)&_ZN9S20469C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C18D0Ev,
};
extern void _ZN9S20469C16D1Ev();
extern void _ZN9S20469C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C169S20469C18__A1__9S20469C13[] = {
  ABISELECT(-63,-39),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
  (VTBL_ENTRY)&_ZN9S20469C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C169S20469C18__A1__9S20469C13[] = {
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C13[] = {
  ABISELECT(-71,-43),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C169S20469C18__A1__9S20469C13[] = {
  ABISELECT(-71,-43),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
};
extern void _ZN9S20469C12D1Ev();
extern void _ZN9S20469C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C129S20469C18__9S20469C13[] = {
  ABISELECT(-87,-55),
  ABISELECT(-64,-44),
  ABISELECT(-152,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
  (VTBL_ENTRY)&_ZN9S20469C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C89S20469C129S20469C18__A2__9S20469C13[] = {
  ABISELECT(-87,-55),
  ABISELECT(-64,-44),
  ABISELECT(-152,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C89S20469C129S20469C18__A2__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C129S20469C18__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C18__9S20469C13[] = {
  ABISELECT(-71,-43),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__9S20469C18__9S20469C13[] = {
  ABISELECT(-183,-143),
  ABISELECT(-160,-132),
  ABISELECT(-248,-176),
  ABISELECT(-176,-140),
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C18__9S20469C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-72,-36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C18__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
extern void ABISELECT(_ZThn24_N9S20469C18D1Ev,_ZThn16_N9S20469C18D1Ev)();
extern void ABISELECT(_ZThn24_N9S20469C18D0Ev,_ZThn16_N9S20469C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20469C12__9S20469C18__9S20469C13[] = {
  ABISELECT(-87,-55),
  ABISELECT(-64,-44),
  ABISELECT(-152,-88),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20469C18D1Ev,_ZThn16_N9S20469C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20469C18D0Ev,_ZThn16_N9S20469C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__A1__9S20469C13[] = {
  ABISELECT(-183,-143),
  ABISELECT(-160,-132),
  ABISELECT(-248,-176),
  ABISELECT(-176,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C17__A1__9S20469C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-72,-36),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C17__A1__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(160,132),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
extern void _ZN9S20469C19D1Ev();
extern void _ZN9S20469C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C19__9S20469C13[] = {
  ABISELECT(-264,-184),
  ABISELECT(-199,-151),
  ABISELECT(-176,-140),
  ABISELECT(-264,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C19[0]),
  (VTBL_ENTRY)&_ZN9S20469C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20469C209S20469C19__9S20469C13[] = {
  ABISELECT(-199,-151),
  ABISELECT(-176,-140),
  ABISELECT(-264,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C20[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C209S20469C19__A3__9S20469C13[] = {
  ABISELECT(-264,-184),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C209S20469C19__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S20469C20[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C19__9S20469C13[] = {
  0,
  ABISELECT(264,184),
  (VTBL_ENTRY)&(_ZTI9S20469C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C19__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S20469C19[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__A2__9S20469C13[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
extern void _ZN9S20469C21D1Ev();
extern void _ZN9S20469C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C21__9S20469C13[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  ABISELECT(-223,-163),
  ABISELECT(-200,-152),
  ABISELECT(-184,-140),
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&_ZN9S20469C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C21D0Ev,
};
extern void _ZN9S20469C22D1Ev();
extern void _ZN9S20469C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C229S20469C21__9S20469C13[] = {
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C22[0]),
  (VTBL_ENTRY)&_ZN9S20469C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C229S20469C21__9S20469C13[] = {
  0,
  ABISELECT(288,196),
  (VTBL_ENTRY)&(_ZTI9S20469C22[0]),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C21__9S20469C13[] = {
  ABISELECT(184,140),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-104,-56),
  ABISELECT(184,140),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C21__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S20469C21D1Ev,_ZTv0_n44_N9S20469C21D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S20469C21D0Ev,_ZTv0_n44_N9S20469C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C9__9S20469C21__9S20469C13[] = {
  ABISELECT(288,196),
  ABISELECT(320,216),
  0,
  ABISELECT(65,33),
  ABISELECT(88,44),
  ABISELECT(104,56),
  ABISELECT(304,208),
  0,
  0,
  ABISELECT(288,196),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20469C21D1Ev,_ZTv0_n44_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20469C21D0Ev,_ZTv0_n44_N9S20469C21D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S20469C21D1Ev,_ZTv0_n28_N9S20469C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C21D1Ev,_ZThn12_N9S20469C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20469C21D0Ev,_ZTv0_n28_N9S20469C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20469C21D0Ev,_ZThn12_N9S20469C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C2__9S20469C21__9S20469C13[] = {
  ABISELECT(-16,-12),
  ABISELECT(-304,-208),
  ABISELECT(-239,-175),
  ABISELECT(-216,-164),
  ABISELECT(-200,-152),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C21D1Ev,_ZTv0_n28_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C21D0Ev,_ZTv0_n28_N9S20469C21D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev)();
extern void ABISELECT(_ZThn32_N9S20469C21D1Ev,_ZThn20_N9S20469C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev)();
extern void ABISELECT(_ZThn32_N9S20469C21D0Ev,_ZThn20_N9S20469C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C12__9S20469C21__9S20469C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(-255,-183),
  ABISELECT(-232,-172),
  ABISELECT(-320,-216),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev),
};
extern void _ZN8S20469C9D1Ev();
extern void _ZN8S20469C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C9__9S20469C13[] = {
  ABISELECT(320,216),
  0,
  ABISELECT(65,33),
  ABISELECT(88,44),
  ABISELECT(104,56),
  ABISELECT(304,208),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&_ZN8S20469C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C9D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn304_N8S20469C9D1Ev,_ZThn208_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn304_N8S20469C9D0Ev,_ZThn208_N8S20469C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C2__8S20469C9__9S20469C13[] = {
  ABISELECT(-304,-208),
  ABISELECT(-304,-208),
  ABISELECT(-239,-175),
  ABISELECT(-216,-164),
  ABISELECT(-200,-152),
  ABISELECT(-304,-208),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn104_N8S20469C9D1Ev,_ZThn56_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn104_N8S20469C9D0Ev,_ZThn56_N8S20469C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C9__9S20469C13[] = {
  ABISELECT(-104,-56),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C9__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
};
extern void ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn320_N8S20469C9D1Ev,_ZThn216_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn320_N8S20469C9D0Ev,_ZThn216_N8S20469C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C12__8S20469C9__9S20469C13[] = {
  ABISELECT(-320,-216),
  ABISELECT(-255,-183),
  ABISELECT(-232,-172),
  ABISELECT(-320,-216),
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev),
};
extern void _ZN8S20469C2D1Ev();
extern void _ZN8S20469C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C2__A1__9S20469C13[] = {
  ABISELECT(-304,-208),
  ABISELECT(-239,-175),
  ABISELECT(-216,-164),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&_ZN8S20469C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C2D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C2__A1__9S20469C13[] = {
  ABISELECT(200,152),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-104,-56),
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C2__A1__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(216,164),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
};
extern void _ZN9S20469C12D1Ev();
extern void _ZN9S20469C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C12__A1__9S20469C13[] = {
  ABISELECT(-255,-183),
  ABISELECT(-232,-172),
  ABISELECT(-320,-216),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
  (VTBL_ENTRY)&_ZN9S20469C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C89S20469C12__A3__9S20469C13[] = {
  ABISELECT(-255,-183),
  ABISELECT(-232,-172),
  ABISELECT(-320,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C89S20469C12__A3__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(232,172),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C12__A1__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(232,172),
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
};
static  VTT_ENTRY vtt_S20469C13[] = {
  {&(_ZTV9S20469C13[20]),  20,136},
  {&(_ZTV9S20469C13[34]),  34,136},
  {&(_ZTV9S20469C13[49]),  49,136},
  {&(_ZTV9S20469C13[54]),  54,136},
  {&(_ZTV9S20469C13[59]),  59,136},
  {&(_ZTV9S20469C13[62]),  62,136},
  {&(_ZTV9S20469C13[42]),  42,136},
  {&(_ZTV9S20469C13[68]),  68,136},
  {&(_ZTV9S20469C13[78]),  78,136},
  {&(_ZTV9S20469C13[83]),  83,136},
  {&(_ZTV9S20469C13[96]),  96,136},
  {&(_ZTV9S20469C13[88]),  88,136},
  {&(_ZTV9S20469C13[103]),  103,136},
  {&(_ZTV9S20469C13[20]),  20,136},
  {&(_ZTV9S20469C13[117]),  117,136},
  {&(_ZTV9S20469C13[20]),  20,136},
  {&(_ZTV9S20469C13[126]),  126,136},
  {&(_ZTV9S20469C13[134]),  134,136},
  {&(_tg__ZTV9S20469C14__9S20469C13[11]),  11,13},
  {&(_tg__ZTV9S20469C159S20469C14__9S20469C13[9]),  9,11},
  {&(_tg__ZTV9S20469C179S20469C159S20469C14__9S20469C13[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C179S20469C159S20469C14__9S20469C13[5]),  5,5},
  {&(_tg__ZTV8S20469C5__9S20469C179S20469C159S20469C14__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C29S20469C159S20469C14__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C3__8S20469C29S20469C159S20469C14__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C29S20469C159S20469C14__9S20469C13[3]),  3,3},
  {&(_tg__ZTV9S20469C16__9S20469C159S20469C14__9S20469C13[5]),  5,7},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C159S20469C14__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C159S20469C14__9S20469C13[5]),  5,5},
  {&(_tg__ZTV8S20469C5__A1__9S20469C159S20469C14__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C2__9S20469C159S20469C14__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C3__9S20469C159S20469C14__9S20469C13[6]),  6,8},
  {&(_tg__ZTV9S20469C16__9S20469C14__9S20469C13[5]),  5,7},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C14__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C14__9S20469C13[5]),  5,5},
  {&(_tg__ZTV8S20469C5__A1__9S20469C14__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C29S20469C15__9S20469C14__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C3__9S20469C14__9S20469C13[6]),  6,8},
  {&(_tg__ZTV9S20469C18__9S20469C14__9S20469C13[8]),  8,10},
  {&(_tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C14__9S20469C13[3]),  3,3},
  {&(_tg__ZTV9S20469C17__A1__9S20469C14__9S20469C13[6]),  6,6},
  {&(_tg__ZTV9S20469C129S20469C18__9S20469C14__9S20469C13[5]),  5,7},
  {&(_tg__ZTV9S20469C16__9S20469C13[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt9S20469C16__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C16__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C13[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C8__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C5__A1__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C3__9S20469C13[5]),  5,7},
  {&(_tg__ZTV8S20469C88S20469C3__A1__9S20469C13[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C88S20469C3__A1__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C3__9S20469C13[3]),  3,3},
  {&(_tg__ZTV9S20469C18__9S20469C13[7]),  7,9},
  {&(_tg__ZTV9S20469C169S20469C18__A1__9S20469C13[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt9S20469C169S20469C18__A1__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C169S20469C18__A1__9S20469C13[3]),  3,3},
  {&(_tg__ZTV9S20469C129S20469C18__9S20469C13[5]),  5,7},
  {&(_tg__ZTV8S20469C89S20469C129S20469C18__A2__9S20469C13[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C89S20469C129S20469C18__A2__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C129S20469C18__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C18__9S20469C13[3]),  3,3},
  {&(_tg__ZTV9S20469C17__9S20469C18__9S20469C13[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C18__9S20469C13[5]),  5,5},
  {&(_tg__ZTV8S20469C5__A1__9S20469C18__9S20469C13[3]),  3,3},
  {&(_tg__ZTV9S20469C12__9S20469C18__9S20469C13[5]),  5,7},
  {&(_tg__ZTV9S20469C17__A1__9S20469C13[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C17__A1__9S20469C13[5]),  5,5},
  {&(_tg__ZTV8S20469C5__9S20469C17__A1__9S20469C13[3]),  3,3},
  {&(_tg__ZTV9S20469C19__9S20469C13[6]),  6,8},
  {&(_tg__ZTV9S20469C209S20469C19__9S20469C13[5]),  5,5},
  {&(_tg__ZTV12S20469C11_nt9S20469C209S20469C19__A3__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C209S20469C19__9S20469C13[3]),  3,3},
  {&(_tg__ZTV12S20469C11_nt__9S20469C19__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C19__9S20469C13[3]),  3,3},
  {&(_tg__ZTV12S20469C11_nt__A2__9S20469C13[3]),  3,3},
  {&(_tg__ZTV9S20469C21__9S20469C13[11]),  11,13},
  {&(_tg__ZTV9S20469C229S20469C21__9S20469C13[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt__9S20469C229S20469C21__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C3__9S20469C21__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C5__9S20469C21__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C9__9S20469C21__9S20469C13[11]),  11,13},
  {&(_tg__ZTV8S20469C2__9S20469C21__9S20469C13[7]),  7,9},
  {&(_tg__ZTV8S20469C9__9S20469C21__9S20469C13[11]),  11,13},
  {&(_tg__ZTV9S20469C12__9S20469C21__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C9__9S20469C13[10]),  10,12},
  {&(_tg__ZTV8S20469C2__8S20469C9__9S20469C13[7]),  7,9},
  {&(_tg__ZTV8S20469C3__8S20469C9__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C9__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C9__9S20469C13[10]),  10,12},
  {&(_tg__ZTV9S20469C12__8S20469C9__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C2__A1__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C3__8S20469C2__A1__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C2__A1__9S20469C13[3]),  3,3},
  {&(_tg__ZTV9S20469C12__A1__9S20469C13[5]),  5,7},
  {&(_tg__ZTV8S20469C89S20469C12__A3__9S20469C13[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C89S20469C12__A3__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C12__A1__9S20469C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C13[];
extern  VTBL_ENTRY _ZTV9S20469C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C13[];
static VTBL_ENTRY alt_thunk_names123[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20469C9D0Ev,_ZThn216_N8S20469C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20469C9D0Ev,_ZThn56_N8S20469C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20469C9D1Ev,_ZThn216_N8S20469C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20469C9D1Ev,_ZThn56_N8S20469C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20469C9D0Ev,_ZThn208_N8S20469C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20469C9D1Ev,_ZThn208_N8S20469C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C21D0Ev,_ZThn20_N9S20469C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C21D1Ev,_ZThn20_N9S20469C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20469C21D0Ev,_ZTv0_n28_N9S20469C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20469C21D0Ev,_ZThn12_N9S20469C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20469C21D1Ev,_ZTv0_n28_N9S20469C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20469C21D1Ev,_ZThn12_N9S20469C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C14D0Ev,_ZTv0_n32_N9S20469C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20469C14D0Ev,_ZThn64_N9S20469C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C14D1Ev,_ZTv0_n32_N9S20469C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20469C14D1Ev,_ZThn64_N9S20469C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C14D0Ev,_ZTv0_n24_N9S20469C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C14D0Ev,_ZThn48_N9S20469C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C14D1Ev,_ZTv0_n24_N9S20469C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C14D1Ev,_ZThn48_N9S20469C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C14D0Ev,_ZTv0_n20_N9S20469C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C14D0Ev,_ZThn16_N9S20469C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C14D1Ev,_ZTv0_n20_N9S20469C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C14D1Ev,_ZThn16_N9S20469C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C15D0Ev,_ZThn48_N9S20469C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C15D1Ev,_ZThn48_N9S20469C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C15D0Ev,_ZThn16_N9S20469C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C15D1Ev,_ZThn16_N9S20469C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C2D0Ev,_ZThn40_N8S20469C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C2D1Ev,_ZThn40_N8S20469C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20469C13D0Ev,_ZThn208_N9S20469C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S20469C13D0Ev,_ZThn184_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20469C13D1Ev,_ZThn208_N9S20469C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S20469C13D1Ev,_ZThn184_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C13D0Ev,_ZTv0_n32_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20469C13D0Ev,_ZThn72_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C13D1Ev,_ZTv0_n32_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20469C13D1Ev,_ZThn72_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20469C13D0Ev,_ZThn216_N9S20469C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20469C13D0Ev,_ZThn56_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20469C13D1Ev,_ZThn216_N9S20469C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20469C13D1Ev,_ZThn56_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C13D0Ev,_ZTv0_n20_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20469C13D0Ev,_ZThn24_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C13D1Ev,_ZTv0_n20_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20469C13D1Ev,_ZThn24_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20469C13D0Ev,_ZThn196_N9S20469C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20469C13D0Ev,_ZThn8_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20469C13D1Ev,_ZThn196_N9S20469C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20469C13D1Ev,_ZThn8_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20469C13 = {  "S20469C13", // class name
  bases_S20469C13, 49,
  &(vtc_S20469C13[0]), // expected_vtbl_contents
  &(vtt_S20469C13[0]), // expected_vtt_contents
  ABISELECT(416,304), // object size
  NSPAIRA(_ZTI9S20469C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20469C13),136, //virtual function table var
  20, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C13),99, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names123,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C1  : virtual S20469C2 , virtual S20469C9 , S20469C13 {
  virtual  ~S20469C1(); // _ZN8S20469C1D2Ev
  virtual void  v1(); // _ZN8S20469C12v1Ev
  S20469C1(); // tgen
};
//SIG(1 S20469C1) C1{ VBC2{ VBC3{ BC4{ m Fi} VBC5{ BC6{ m} VBC7{ m} FC6} BC8{ BC7 VBC6 VBC5 Fp} BC7 vd Fc} vd Fi} VBC9{ VBC10{ m} VBC2 VBC11{ VBC6 BC7} VBC12{ BC8 vd FL[10]} vd} BC13{ VBC14{ BC15{ VBC16{ BC7 BC11 BC5 vd} VBC8 BC17{ VBC8 Fc:8} VBC4 BC2} VBC18{ BC4 BC10 BC16 VBC17 BC12 vd}} VBC10 VBC19{ VBC11 VBC7 BC20{ VBC5 BC11 Fp} vd Fi} VBC21{ VBC3 VBC9 BC22{ VBC11 vd} Fi[2]} vd FU23{ m}} vd v1}


 S20469C1 ::~S20469C1(){ note_dtor("S20469C1", this);}
void  S20469C1 ::v1(){vfunc_called(this, "_ZN8S20469C12v1Ev");}
S20469C1 ::S20469C1(){ note_ctor("S20469C1", this);} // tgen

static void Test_S20469C1()
{
  extern Class_Descriptor cd_S20469C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(54,77)];
    init_test(&cd_S20469C1, buf);
    S20469C1 *dp, &lv = *(dp=new (buf) S20469C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(424,304), "sizeof(S20469C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C1)");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C3*), ABISELECT(48,24), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(56,32), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(65,37), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C5*)(S20469C16*), ABISELECT(65,37), "S20469C1");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*)(S20469C16*)(S20469C18*), ABISELECT(65,37), "S20469C1");
    /*is_ambiguous_... S20469C19::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C19*), ABISELECT(65,37), "S20469C1");
    check_base_class_offset(lv, (S20469C5*)(S20469C3*), ABISELECT(56,32), "S20469C1");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C3*), ABISELECT(56,32), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C12 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C12*), ABISELECT(56,32), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C8 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C8*), ABISELECT(56,32), "S20469C1");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C12*)(S20469C18*), ABISELECT(56,32), "S20469C1");
    check_base_class_offset(lv, (S20469C5*)(S20469C20*)(S20469C19*), ABISELECT(56,32), "S20469C1");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C3*), ABISELECT(32,16), "S20469C1");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C3*), 0, "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C11_nt */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*), 0, "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C12 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C12*), 0, "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C16*), 0, "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*), 0, "S20469C1");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C16*)(S20469C18*), 0, "S20469C1");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C12*)(S20469C18*), 0, "S20469C1");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C20*)(S20469C19*), 0, "S20469C1");
    check_base_class_offset(lv, (S20469C8*)(S20469C3*), ABISELECT(32,16), "S20469C1");
    /*is_ambiguous_... S20469C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C3*), ABISELECT(52,28), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C2 */ AMB_check_base_class_offset(lv, (S20469C3*)(S20469C2*), ABISELECT(32,16), "S20469C1");
    check_base_class_offset(lv, (S20469C3*)(S20469C2*)(S20469C15*)(S20469C14*), ABISELECT(32,16), "S20469C1");
    check_base_class_offset(lv, (S20469C3*)(S20469C21*), ABISELECT(32,16), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C2 */ AMB_check_base_class_offset(lv, (S20469C2*), ABISELECT(16,8), "S20469C1");
    check_base_class_offset(lv, (S20469C2*)(S20469C9*), ABISELECT(16,8), "S20469C1");
    check_base_class_offset(lv, (S4228C23*)(S20469C9*), 0, "S20469C1");
    /*is_ambiguous_... S20469C13::S4228C23 */ AMB_check_base_class_offset(lv, (S4228C23*)(S20469C13*), 0, "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C11_nt */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*), 0, "S20469C1");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C9*), 0, "S20469C1");
    /*is_ambiguous_... S20469C19::S20469C11_nt */ AMB_check_base_class_offset(lv, (S20469C11_nt*)(S20469C19*), 0, "S20469C1");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C22*)(S20469C21*), 0, "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C12 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C12*), ABISELECT(72,40), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C12 */ AMB_check_base_class_offset(lv, (S20469C8*)(S20469C12*), ABISELECT(72,40), "S20469C1");
    check_base_class_offset(lv, (S20469C12*)(S20469C9*), ABISELECT(72,40), "S20469C1");
    check_base_class_offset(lv, (S20469C9*), 0, "S20469C1");
    check_base_class_offset(lv, (S20469C9*)(S20469C21*), 0, "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C16*), ABISELECT(208,148), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C16*), ABISELECT(200,144), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C16 */ AMB_check_base_class_offset(lv, (S20469C11_nt*)(S20469C16*), ABISELECT(200,144), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C5*)(S20469C16*), ABISELECT(208,148), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C16 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C16*), ABISELECT(208,148), "S20469C1");
    check_base_class_offset(lv, (S20469C16*)(S20469C15*)(S20469C14*), ABISELECT(200,144), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*), ABISELECT(224,156), "S20469C1");
    /*is_ambiguous_... S20469C15::S20469C8 */ AMB_check_base_class_offset(lv, (S20469C8*)(S20469C15*)(S20469C14*), ABISELECT(224,156), "S20469C1");
    check_base_class_offset(lv, (S20469C8*)(S20469C17*)(S20469C15*)(S20469C14*), ABISELECT(224,156), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C17 */ AMB_check_base_class_offset(lv, (S20469C8*)(S20469C17*), ABISELECT(224,156), "S20469C1");
    check_base_class_offset(lv, (S20469C17*)(S20469C15*)(S20469C14*), ABISELECT(168,128), "S20469C1");
    /*is_ambiguous_... S20469C15::S3423C8_nt */ AMB_check_base_class_offset(lv, (S3423C8_nt*)(S20469C15*)(S20469C14*), ABISELECT(240,164), "S20469C1");
    check_base_class_offset(lv, (S20469C2*)(S20469C15*)(S20469C14*), ABISELECT(184,136), "S20469C1");
    check_base_class_offset(lv, (S20469C15*)(S20469C14*), ABISELECT(168,128), "S20469C1");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C18*), ABISELECT(268,180), "S20469C1");
    check_base_class_offset(lv, (S4228C23*)(S20469C18*), ABISELECT(248,168), "S20469C1");
    /*is_ambiguous_... S20469C16::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C16*)(S20469C18*), ABISELECT(256,172), "S20469C1");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C16*)(S20469C18*), ABISELECT(248,168), "S20469C1");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C16*)(S20469C18*), ABISELECT(248,168), "S20469C1");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*)(S20469C16*)(S20469C18*), ABISELECT(256,172), "S20469C1");
    check_base_class_offset(lv, (S20469C5*)(S20469C16*)(S20469C18*), ABISELECT(256,172), "S20469C1");
    check_base_class_offset(lv, (S20469C16*)(S20469C18*), ABISELECT(248,168), "S20469C1");
    check_base_class_offset(lv, (S20469C17*)(S20469C18*), ABISELECT(368,272), "S20469C1");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C12*)(S20469C18*), ABISELECT(272,184), "S20469C1");
    check_base_class_offset(lv, (S20469C8*)(S20469C12*)(S20469C18*), ABISELECT(272,184), "S20469C1");
    check_base_class_offset(lv, (S20469C12*)(S20469C18*), ABISELECT(272,184), "S20469C1");
    check_base_class_offset(lv, (S20469C18*)(S20469C14*), ABISELECT(248,168), "S20469C1");
    check_base_class_offset(lv, (S20469C14*)(S20469C13*), ABISELECT(168,128), "S20469C1");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C20*)(S20469C19*), ABISELECT(384,280), "S20469C1");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C20*)(S20469C19*), ABISELECT(384,280), "S20469C1");
    check_base_class_offset(lv, (S20469C20*)(S20469C19*), ABISELECT(384,280), "S20469C1");
    check_base_class_offset(lv, (S20469C19*)(S20469C13*), ABISELECT(384,280), "S20469C1");
    check_base_class_offset(lv, (S20469C22*)(S20469C21*), ABISELECT(408,292), "S20469C1");
    check_base_class_offset(lv, (S20469C21*)(S20469C13*), ABISELECT(408,292), "S20469C1");
    check_base_class_offset(lv, (S20469C13*), 0, "S20469C1");
    test_class_info(&lv, &cd_S20469C1);
    dp->~S20469C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C1(Test_S20469C1, "S20469C1", ABISELECT(424,304));

#else // __cplusplus

extern void _ZN8S20469C1C1Ev();
extern void _ZN8S20469C1D2Ev();
Name_Map name_map_S20469C1[] = {
  NSPAIR(_ZN8S20469C1C1Ev),
  NSPAIR(_ZN8S20469C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C3;
extern VTBL_ENTRY _ZTI8S20469C3[];
extern  VTBL_ENTRY _ZTV8S20469C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C3[];
extern Class_Descriptor cd_S20469C2;
extern VTBL_ENTRY _ZTI8S20469C2[];
extern  VTBL_ENTRY _ZTV8S20469C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C2[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C12;
extern VTBL_ENTRY _ZTI9S20469C12[];
extern  VTBL_ENTRY _ZTV9S20469C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C12[];
extern Class_Descriptor cd_S20469C9;
extern VTBL_ENTRY _ZTI8S20469C9[];
extern  VTBL_ENTRY _ZTV8S20469C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C16;
extern VTBL_ENTRY _ZTI9S20469C16[];
extern  VTBL_ENTRY _ZTV9S20469C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C16[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C17;
extern VTBL_ENTRY _ZTI9S20469C17[];
extern  VTBL_ENTRY _ZTV9S20469C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C17[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S20469C2;
extern VTBL_ENTRY _ZTI8S20469C2[];
extern  VTBL_ENTRY _ZTV8S20469C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C2[];
extern Class_Descriptor cd_S20469C15;
extern VTBL_ENTRY _ZTI9S20469C15[];
extern  VTBL_ENTRY _ZTV9S20469C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C15[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C16;
extern VTBL_ENTRY _ZTI9S20469C16[];
extern  VTBL_ENTRY _ZTV9S20469C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C16[];
extern Class_Descriptor cd_S20469C17;
extern VTBL_ENTRY _ZTI9S20469C17[];
extern  VTBL_ENTRY _ZTV9S20469C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C17[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C12;
extern VTBL_ENTRY _ZTI9S20469C12[];
extern  VTBL_ENTRY _ZTV9S20469C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C12[];
extern Class_Descriptor cd_S20469C18;
extern VTBL_ENTRY _ZTI9S20469C18[];
extern  VTBL_ENTRY _ZTV9S20469C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C18[];
extern Class_Descriptor cd_S20469C14;
extern VTBL_ENTRY _ZTI9S20469C14[];
extern  VTBL_ENTRY _ZTV9S20469C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C14[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S20469C20;
extern VTBL_ENTRY _ZTI9S20469C20[];
extern  VTBL_ENTRY _ZTV9S20469C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C20[];
extern Class_Descriptor cd_S20469C19;
extern VTBL_ENTRY _ZTI9S20469C19[];
extern  VTBL_ENTRY _ZTV9S20469C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C19[];
extern Class_Descriptor cd_S20469C22;
extern VTBL_ENTRY _ZTI9S20469C22[];
extern  VTBL_ENTRY _ZTV9S20469C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C22[];
extern Class_Descriptor cd_S20469C21;
extern VTBL_ENTRY _ZTI9S20469C21[];
extern  VTBL_ENTRY _ZTV9S20469C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C21[];
extern Class_Descriptor cd_S20469C13;
extern VTBL_ENTRY _ZTI9S20469C13[];
extern  VTBL_ENTRY _ZTV9S20469C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C13[];
static Base_Class bases_S20469C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(65,37), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(56,32), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20469C8,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(52,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20469C3,    ABISELECT(32,16), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20469C2,    ABISELECT(16,8), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20469C12,    ABISELECT(72,40), //bcp->offset
    43, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20469C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    ABISELECT(208,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(200,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    ABISELECT(200,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(208,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20469C5,    ABISELECT(208,148), //bcp->offset
    80, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20469C16,    ABISELECT(200,144), //bcp->offset
    73, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(224,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(224,156), //bcp->offset
    83, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20469C17,    ABISELECT(168,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(240,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S20469C2,    ABISELECT(184,136), //bcp->offset
    65, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20469C15,    ABISELECT(168,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(268,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S4228C23,    ABISELECT(248,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(256,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(248,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    ABISELECT(248,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(256,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20469C5,    ABISELECT(256,172), //bcp->offset
    98, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20469C16,    ABISELECT(248,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20469C17,    ABISELECT(368,272), //bcp->offset
    108, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(272,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(272,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20469C12,    ABISELECT(272,184), //bcp->offset
    101, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20469C18,    ABISELECT(248,168), //bcp->offset
    88, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S20469C14,    ABISELECT(168,128), //bcp->offset
    51, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(384,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    ABISELECT(384,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20469C20,    ABISELECT(384,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S20469C19,    ABISELECT(384,280), //bcp->offset
    114, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S20469C22,    ABISELECT(408,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20469C21,    ABISELECT(408,292), //bcp->offset
    123, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S20469C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20469C1[];
extern void _ZN8S20469C1D1Ev();
extern void _ZN8S20469C1D0Ev();
extern void _ZN8S20469C12v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S20469C1D1Ev,_ZTv0_n28_N8S20469C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20469C1D1Ev,_ZThn8_N8S20469C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20469C1D0Ev,_ZTv0_n28_N8S20469C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20469C1D0Ev,_ZThn8_N8S20469C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C1D1Ev,_ZTv0_n24_N8S20469C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S20469C1D1Ev,_ZThn16_N8S20469C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C1D0Ev,_ZTv0_n24_N8S20469C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S20469C1D0Ev,_ZThn16_N8S20469C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C1D1Ev,_ZTv0_n24_N8S20469C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S20469C1D1Ev,_ZThn40_N8S20469C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C1D0Ev,_ZTv0_n24_N8S20469C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S20469C1D0Ev,_ZThn40_N8S20469C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20469C1D1Ev,_ZTv0_n48_N8S20469C1D1Ev)();
extern void ABISELECT(_ZThn168_N8S20469C1D1Ev,_ZThn128_N8S20469C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20469C1D0Ev,_ZTv0_n48_N8S20469C1D0Ev)();
extern void ABISELECT(_ZThn168_N8S20469C1D0Ev,_ZThn128_N8S20469C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n96_N8S20469C1D1Ev,_ZTvn8_n48_N8S20469C1D1Ev)();
extern void ABISELECT(_ZTvn16_n96_N8S20469C1D0Ev,_ZTvn8_n48_N8S20469C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S20469C1D1Ev,_ZTv0_n20_N8S20469C1D1Ev)();
extern void ABISELECT(_ZThn200_N8S20469C1D1Ev,_ZThn144_N8S20469C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20469C1D0Ev,_ZTv0_n20_N8S20469C1D0Ev)();
extern void ABISELECT(_ZThn200_N8S20469C1D0Ev,_ZThn144_N8S20469C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20469C1D1Ev,_ZTv0_n32_N8S20469C1D1Ev)();
extern void ABISELECT(_ZThn248_N8S20469C1D1Ev,_ZThn168_N8S20469C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20469C1D0Ev,_ZTv0_n32_N8S20469C1D0Ev)();
extern void ABISELECT(_ZThn248_N8S20469C1D0Ev,_ZThn168_N8S20469C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n64_N8S20469C1D1Ev,_ZTvn16_n32_N8S20469C1D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S20469C1D0Ev,_ZTvn16_n32_N8S20469C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S20469C1D1Ev,_ZTv0_n28_N8S20469C1D1Ev)();
extern void ABISELECT(_ZThn384_N8S20469C1D1Ev,_ZThn280_N8S20469C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20469C1D0Ev,_ZTv0_n28_N8S20469C1D0Ev)();
extern void ABISELECT(_ZThn384_N8S20469C1D0Ev,_ZThn280_N8S20469C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20469C1D1Ev,_ZTv0_n48_N8S20469C1D1Ev)();
extern void ABISELECT(_ZThn408_N8S20469C1D1Ev,_ZThn292_N8S20469C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20469C1D0Ev,_ZTv0_n48_N8S20469C1D0Ev)();
extern void ABISELECT(_ZThn408_N8S20469C1D0Ev,_ZThn292_N8S20469C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20469C1[] = {
  0,
  ABISELECT(408,292),
  ABISELECT(384,280),
  ABISELECT(368,272),
  ABISELECT(248,168),
  ABISELECT(240,164),
  ABISELECT(224,156),
  ABISELECT(200,144),
  ABISELECT(168,128),
  0,
  ABISELECT(72,40),
  0,
  ABISELECT(65,37),
  ABISELECT(56,32),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&_ZN8S20469C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20469C12v1Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C1D1Ev,_ZTv0_n28_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C1D0Ev,_ZTv0_n28_N8S20469C1D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C1D1Ev,_ZTv0_n24_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C1D0Ev,_ZTv0_n24_N8S20469C1D0Ev),
  ABISELECT(9,5),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  ABISELECT(-72,-40),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C1D1Ev,_ZTv0_n24_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C1D0Ev,_ZTv0_n24_N8S20469C1D0Ev),
  ABISELECT(-168,-128),
  ABISELECT(200,144),
  ABISELECT(80,40),
  ABISELECT(-136,-112),
  ABISELECT(72,36),
  ABISELECT(32,16),
  ABISELECT(-103,-91),
  ABISELECT(-112,-96),
  ABISELECT(-168,-128),
  ABISELECT(56,28),
  ABISELECT(-168,-128),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20469C1D1Ev,_ZTv0_n48_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20469C1D0Ev,_ZTv0_n48_N8S20469C1D0Ev),
  ABISELECT(-184,-136),
  ABISELECT(-119,-99),
  ABISELECT(-128,-104),
  ABISELECT(-152,-120),
  ABISELECT(-184,-136),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N8S20469C1D1Ev,_ZTvn8_n48_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N8S20469C1D0Ev,_ZTvn8_n48_N8S20469C1D0Ev),
  ABISELECT(-200,-144),
  ABISELECT(-135,-107),
  ABISELECT(-200,-144),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20469C1D1Ev,_ZTv0_n20_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20469C1D0Ev,_ZTv0_n20_N8S20469C1D0Ev),
  ABISELECT(-143,-111),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  ABISELECT(-159,-119),
  ABISELECT(-168,-124),
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  ABISELECT(-248,-168),
  ABISELECT(-192,-136),
  ABISELECT(-24,-12),
  ABISELECT(120,104),
  ABISELECT(-183,-131),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20469C1D1Ev,_ZTv0_n32_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20469C1D0Ev,_ZTv0_n32_N8S20469C1D0Ev),
  ABISELECT(-191,-135),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  ABISELECT(-207,-147),
  ABISELECT(-216,-152),
  ABISELECT(-272,-184),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20469C1D1Ev,_ZTvn16_n32_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20469C1D0Ev,_ZTvn16_n32_N8S20469C1D0Ev),
  ABISELECT(-303,-235),
  ABISELECT(-312,-240),
  ABISELECT(-368,-272),
  ABISELECT(-144,-116),
  ABISELECT(-368,-272),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  ABISELECT(-384,-280),
  ABISELECT(-384,-280),
  ABISELECT(-319,-243),
  ABISELECT(-328,-248),
  ABISELECT(-384,-280),
  ABISELECT(-384,-280),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C1D1Ev,_ZTv0_n28_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C1D0Ev,_ZTv0_n28_N8S20469C1D0Ev),
  ABISELECT(-408,-292),
  ABISELECT(-336,-252),
  ABISELECT(-392,-284),
  ABISELECT(-408,-292),
  ABISELECT(-408,-292),
  ABISELECT(-343,-255),
  ABISELECT(-352,-260),
  ABISELECT(-376,-276),
  ABISELECT(-408,-292),
  ABISELECT(-408,-292),
  ABISELECT(-408,-292),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20469C1D1Ev,_ZTv0_n48_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20469C1D0Ev,_ZTv0_n48_N8S20469C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20469C1[];
extern void ABISELECT(_ZTv0_n88_N9S20469C13D1Ev,_ZTv0_n44_N9S20469C13D1Ev)();
extern void _ZN9S20469C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S20469C13D0Ev,_ZTv0_n44_N9S20469C13D0Ev)();
extern void _ZN9S20469C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C13__8S20469C1[] = {
  0,
  ABISELECT(408,292),
  ABISELECT(384,280),
  ABISELECT(368,272),
  ABISELECT(248,168),
  ABISELECT(240,164),
  ABISELECT(224,156),
  ABISELECT(200,144),
  ABISELECT(168,128),
  0,
  ABISELECT(72,40),
  0,
  ABISELECT(65,37),
  ABISELECT(56,32),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20469C13D1Ev,_ZTv0_n44_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20469C13D0Ev,_ZTv0_n44_N9S20469C13D0Ev),
};
extern void ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn168_N9S20469C13D1Ev,_ZThn128_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn168_N9S20469C13D0Ev,_ZThn128_N9S20469C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C14__9S20469C13__8S20469C1[] = {
  ABISELECT(-168,-128),
  ABISELECT(200,144),
  ABISELECT(80,40),
  ABISELECT(-136,-112),
  ABISELECT(72,36),
  ABISELECT(32,16),
  ABISELECT(-103,-91),
  ABISELECT(-112,-96),
  ABISELECT(-168,-128),
  ABISELECT(56,28),
  ABISELECT(-168,-128),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20469C13D1Ev,_ZTv0_n20_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn200_N9S20469C13D1Ev,_ZThn144_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20469C13D0Ev,_ZTv0_n20_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn200_N9S20469C13D0Ev,_ZThn144_N9S20469C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C13__8S20469C1[] = {
  ABISELECT(-200,-144),
  ABISELECT(-135,-107),
  ABISELECT(-200,-144),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C13D1Ev,_ZTv0_n20_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C13D0Ev,_ZTv0_n20_N9S20469C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C13__8S20469C1[] = {
  ABISELECT(-143,-111),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C13__8S20469C1[] = {
  ABISELECT(-159,-119),
  ABISELECT(-168,-124),
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C13__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
};
extern void ABISELECT(_ZTvn16_n96_N9S20469C13D1Ev,_ZTvn8_n48_N9S20469C13D1Ev)();
extern void ABISELECT(_ZTvn16_n96_N9S20469C13D0Ev,_ZTvn8_n48_N9S20469C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C29S20469C159S20469C14__9S20469C13__8S20469C1[] = {
  ABISELECT(-184,-136),
  ABISELECT(-119,-99),
  ABISELECT(-128,-104),
  ABISELECT(-152,-120),
  ABISELECT(-184,-136),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N9S20469C13D1Ev,_ZTvn8_n48_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N9S20469C13D0Ev,_ZTvn8_n48_N9S20469C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn32_N9S20469C13D1Ev,_ZThn16_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn32_N9S20469C13D0Ev,_ZThn16_N9S20469C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C13__8S20469C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S20469C13D1Ev,_ZTv0_n32_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn248_N9S20469C13D1Ev,_ZThn168_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20469C13D0Ev,_ZTv0_n32_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn248_N9S20469C13D0Ev,_ZThn168_N9S20469C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C18__9S20469C13__8S20469C1[] = {
  ABISELECT(-248,-168),
  ABISELECT(-192,-136),
  ABISELECT(-24,-12),
  ABISELECT(120,104),
  ABISELECT(-183,-131),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C13D1Ev,_ZTv0_n32_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C13D0Ev,_ZTv0_n32_N9S20469C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C13__8S20469C1[] = {
  ABISELECT(-191,-135),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__A1__9S20469C13__8S20469C1[] = {
  ABISELECT(-303,-235),
  ABISELECT(-312,-240),
  ABISELECT(-368,-272),
  ABISELECT(-144,-116),
  ABISELECT(-368,-272),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
};
extern void ABISELECT(_ZTvn24_n64_N9S20469C13D1Ev,_ZTvn16_n32_N9S20469C13D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N9S20469C13D0Ev,_ZTvn16_n32_N9S20469C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20469C129S20469C18__9S20469C13__8S20469C1[] = {
  ABISELECT(-207,-147),
  ABISELECT(-216,-152),
  ABISELECT(-272,-184),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C13D1Ev,_ZTvn16_n32_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C13D0Ev,_ZTvn16_n32_N9S20469C13D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn384_N9S20469C13D1Ev,_ZThn280_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn384_N9S20469C13D0Ev,_ZThn280_N9S20469C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C19__9S20469C13__8S20469C1[] = {
  ABISELECT(-384,-280),
  ABISELECT(-384,-280),
  ABISELECT(-319,-243),
  ABISELECT(-328,-248),
  ABISELECT(-384,-280),
  ABISELECT(-384,-280),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev),
};
extern void ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn408_N9S20469C13D1Ev,_ZThn292_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn408_N9S20469C13D0Ev,_ZThn292_N9S20469C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C21__9S20469C13__8S20469C1[] = {
  ABISELECT(-408,-292),
  ABISELECT(-336,-252),
  ABISELECT(-392,-284),
  ABISELECT(-408,-292),
  ABISELECT(-408,-292),
  ABISELECT(-343,-255),
  ABISELECT(-352,-260),
  ABISELECT(-376,-276),
  ABISELECT(-408,-292),
  ABISELECT(-408,-292),
  ABISELECT(-408,-292),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C13D1Ev,_ZThn8_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S20469C13D0Ev,_ZThn8_N9S20469C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C2__A1__9S20469C13__8S20469C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S20469C13D1Ev,_ZThn40_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn72_N9S20469C13D0Ev,_ZThn40_N9S20469C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C12__A1__9S20469C13__8S20469C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev),
};
extern void _ZN8S20469C2D1Ev();
extern void _ZN8S20469C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C2__8S20469C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&_ZN8S20469C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C2D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20469C2D1Ev,_ZThn8_N8S20469C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20469C2D0Ev,_ZThn8_N8S20469C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C2__8S20469C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C2__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
};
extern void _ZN8S20469C3D1Ev();
extern void _ZN8S20469C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C1[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
  (VTBL_ENTRY)&_ZN8S20469C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C88S20469C3__8S20469C1[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C88S20469C3__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C3__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C1[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
extern void _ZN8S20469C9D1Ev();
extern void _ZN8S20469C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C9__8S20469C1[] = {
  ABISELECT(72,40),
  0,
  ABISELECT(65,37),
  ABISELECT(56,32),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&_ZN8S20469C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C9D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S20469C9D1Ev,_ZThn8_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S20469C9D0Ev,_ZThn8_N8S20469C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C2__8S20469C9__8S20469C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S20469C9D1Ev,_ZThn16_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S20469C9D0Ev,_ZThn16_N8S20469C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C9__8S20469C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C9__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
};
extern void ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn72_N8S20469C9D1Ev,_ZThn40_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn72_N8S20469C9D0Ev,_ZThn40_N8S20469C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C12__8S20469C9__8S20469C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__8S20469C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
extern void _ZN9S20469C12D1Ev();
extern void _ZN9S20469C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C12__8S20469C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
  (VTBL_ENTRY)&_ZN9S20469C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C89S20469C12__A1__8S20469C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C89S20469C12__A1__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C12__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
};
extern void _ZN9S20469C14D1Ev();
extern void _ZN9S20469C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C14__8S20469C1[] = {
  ABISELECT(200,144),
  ABISELECT(80,40),
  ABISELECT(-136,-112),
  ABISELECT(72,36),
  ABISELECT(32,16),
  ABISELECT(-103,-91),
  ABISELECT(-112,-96),
  ABISELECT(-168,-128),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&_ZN9S20469C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C14D0Ev,
};
extern void _ZN9S20469C15D1Ev();
extern void _ZN9S20469C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(-136,-112),
  ABISELECT(72,36),
  ABISELECT(32,16),
  ABISELECT(-103,-91),
  ABISELECT(-112,-96),
  ABISELECT(-168,-128),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&_ZN9S20469C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20469C179S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(-103,-91),
  ABISELECT(-112,-96),
  ABISELECT(-168,-128),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C179S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(-159,-119),
  ABISELECT(-168,-124),
  ABISELECT(-224,-156),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C179S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(112,96),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
extern void _ZN8S20469C2D1Ev();
extern void _ZN8S20469C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C29S20469C159S20469C14__A1__8S20469C1[] = {
  ABISELECT(-184,-136),
  ABISELECT(-119,-99),
  ABISELECT(-128,-104),
  ABISELECT(-152,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&_ZN8S20469C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C2D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C29S20469C159S20469C14__A1__8S20469C1[] = {
  ABISELECT(152,120),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  ABISELECT(152,120),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C29S20469C159S20469C14__A1__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(128,104),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
};
extern void ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn32_N9S20469C15D1Ev,_ZThn16_N9S20469C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev)();
extern void ABISELECT(_ZThn32_N9S20469C15D0Ev,_ZThn16_N9S20469C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-135,-107),
  ABISELECT(-200,-144),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(-143,-111),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(-159,-119),
  ABISELECT(-168,-124),
  ABISELECT(-224,-156),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(112,96),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
};
extern void ABISELECT(_ZThn16_N9S20469C15D1Ev,_ZThn8_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C15D0Ev,_ZThn8_N9S20469C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C2__9S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(-184,-136),
  ABISELECT(-119,-99),
  ABISELECT(-128,-104),
  ABISELECT(-152,-120),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C15D1Ev,_ZThn8_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C15D0Ev,_ZThn8_N9S20469C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(136,112),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  ABISELECT(136,112),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20469C14D1Ev,_ZTv0_n20_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S20469C14D1Ev,_ZThn16_N9S20469C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20469C14D0Ev,_ZTv0_n20_N9S20469C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S20469C14D0Ev,_ZThn16_N9S20469C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C14__8S20469C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-135,-107),
  ABISELECT(-200,-144),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C14D1Ev,_ZTv0_n20_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C14D0Ev,_ZTv0_n20_N9S20469C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C14__8S20469C1[] = {
  ABISELECT(-143,-111),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C14__8S20469C1[] = {
  ABISELECT(-159,-119),
  ABISELECT(-168,-124),
  ABISELECT(-224,-156),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C14__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(112,96),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
extern void ABISELECT(_ZThn16_N9S20469C14D1Ev,_ZThn8_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C14D0Ev,_ZThn8_N9S20469C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C29S20469C15__9S20469C14__8S20469C1[] = {
  ABISELECT(-184,-136),
  ABISELECT(-119,-99),
  ABISELECT(-128,-104),
  ABISELECT(-152,-120),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C14D1Ev,_ZThn8_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C14D0Ev,_ZThn8_N9S20469C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C14D1Ev,_ZTv0_n24_N9S20469C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20469C14D0Ev,_ZTv0_n24_N9S20469C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C14__8S20469C1[] = {
  ABISELECT(136,112),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  ABISELECT(136,112),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C14D1Ev,_ZTv0_n24_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C14D0Ev,_ZTv0_n24_N9S20469C14D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S20469C14D1Ev,_ZTv0_n32_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S20469C14D1Ev,_ZThn40_N9S20469C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20469C14D0Ev,_ZTv0_n32_N9S20469C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S20469C14D0Ev,_ZThn40_N9S20469C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C18__9S20469C14__8S20469C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-192,-136),
  ABISELECT(-24,-12),
  ABISELECT(120,104),
  ABISELECT(-183,-131),
  ABISELECT(-248,-168),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C14D1Ev,_ZTv0_n32_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C14D0Ev,_ZTv0_n32_N9S20469C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C14__8S20469C1[] = {
  ABISELECT(-191,-135),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__A1__9S20469C14__8S20469C1[] = {
  ABISELECT(-303,-235),
  ABISELECT(-312,-240),
  ABISELECT(-368,-272),
  ABISELECT(-144,-116),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
extern void ABISELECT(_ZTvn24_n64_N9S20469C14D1Ev,_ZTvn16_n32_N9S20469C14D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N9S20469C14D0Ev,_ZTvn16_n32_N9S20469C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20469C129S20469C18__9S20469C14__8S20469C1[] = {
  ABISELECT(-207,-147),
  ABISELECT(-216,-152),
  ABISELECT(-272,-184),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C14D1Ev,_ZTvn16_n32_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C14D0Ev,_ZTvn16_n32_N9S20469C14D0Ev),
};
extern void _ZN9S20469C16D1Ev();
extern void _ZN9S20469C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C16__8S20469C1[] = {
  ABISELECT(-135,-107),
  ABISELECT(-200,-144),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
  (VTBL_ENTRY)&_ZN9S20469C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C16__A1__8S20469C1[] = {
  ABISELECT(-200,-144),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__A1__8S20469C1[] = {
  ABISELECT(-143,-111),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C16__8S20469C1[] = {
  ABISELECT(-143,-111),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__A2__8S20469C1[] = {
  ABISELECT(-159,-119),
  ABISELECT(-168,-124),
  ABISELECT(-224,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C8__A2__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(168,124),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
extern void _ZN9S20469C18D1Ev();
extern void _ZN9S20469C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C18__8S20469C1[] = {
  ABISELECT(-192,-136),
  ABISELECT(-24,-12),
  ABISELECT(120,104),
  ABISELECT(-183,-131),
  ABISELECT(-248,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  (VTBL_ENTRY)&_ZN9S20469C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C18D0Ev,
};
extern void _ZN9S20469C16D1Ev();
extern void _ZN9S20469C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C169S20469C18__A1__8S20469C1[] = {
  ABISELECT(-183,-131),
  ABISELECT(-248,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
  (VTBL_ENTRY)&_ZN9S20469C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C169S20469C18__A2__8S20469C1[] = {
  ABISELECT(-248,-168),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C169S20469C18__A2__8S20469C1[] = {
  ABISELECT(-191,-135),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C169S20469C18__A1__8S20469C1[] = {
  ABISELECT(-191,-135),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
};
extern void _ZN9S20469C12D1Ev();
extern void _ZN9S20469C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C129S20469C18__A1__8S20469C1[] = {
  ABISELECT(-207,-147),
  ABISELECT(-216,-152),
  ABISELECT(-272,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
  (VTBL_ENTRY)&_ZN9S20469C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C89S20469C129S20469C18__A3__8S20469C1[] = {
  ABISELECT(-207,-147),
  ABISELECT(-216,-152),
  ABISELECT(-272,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C89S20469C129S20469C18__A3__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(216,152),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C129S20469C18__A1__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(216,152),
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C18__8S20469C1[] = {
  ABISELECT(-191,-135),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__9S20469C18__8S20469C1[] = {
  ABISELECT(-303,-235),
  ABISELECT(-312,-240),
  ABISELECT(-368,-272),
  ABISELECT(-144,-116),
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C18__8S20469C1[] = {
  ABISELECT(-159,-119),
  ABISELECT(-168,-124),
  ABISELECT(-224,-156),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C18__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(192,136),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
extern void ABISELECT(_ZThn24_N9S20469C18D1Ev,_ZThn16_N9S20469C18D1Ev)();
extern void ABISELECT(_ZThn24_N9S20469C18D0Ev,_ZThn16_N9S20469C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20469C12__9S20469C18__8S20469C1[] = {
  ABISELECT(-207,-147),
  ABISELECT(-216,-152),
  ABISELECT(-272,-184),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20469C18D1Ev,_ZThn16_N9S20469C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20469C18D0Ev,_ZThn16_N9S20469C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__A1__8S20469C1[] = {
  ABISELECT(-303,-235),
  ABISELECT(-312,-240),
  ABISELECT(-368,-272),
  ABISELECT(-144,-116),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C17__A1__8S20469C1[] = {
  ABISELECT(-159,-119),
  ABISELECT(-168,-124),
  ABISELECT(-224,-156),
  ABISELECT(144,116),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C17__A1__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(312,240),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
extern void _ZN9S20469C19D1Ev();
extern void _ZN9S20469C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C19__8S20469C1[] = {
  ABISELECT(-384,-280),
  ABISELECT(-319,-243),
  ABISELECT(-328,-248),
  ABISELECT(-384,-280),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C19[0]),
  (VTBL_ENTRY)&_ZN9S20469C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20469C209S20469C19__8S20469C1[] = {
  ABISELECT(-319,-243),
  ABISELECT(-328,-248),
  ABISELECT(-384,-280),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C20[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C209S20469C19__A3__8S20469C1[] = {
  ABISELECT(-384,-280),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C209S20469C19__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(328,248),
  (VTBL_ENTRY)&(_ZTI9S20469C20[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C19__8S20469C1[] = {
  0,
  ABISELECT(384,280),
  (VTBL_ENTRY)&(_ZTI9S20469C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C19__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(328,248),
  (VTBL_ENTRY)&(_ZTI9S20469C19[0]),
};
extern void _ZN9S20469C21D1Ev();
extern void _ZN9S20469C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C21__8S20469C1[] = {
  ABISELECT(-336,-252),
  ABISELECT(-392,-284),
  ABISELECT(-408,-292),
  ABISELECT(-408,-292),
  ABISELECT(-343,-255),
  ABISELECT(-352,-260),
  ABISELECT(-376,-276),
  ABISELECT(-408,-292),
  ABISELECT(-408,-292),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&_ZN9S20469C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C21D0Ev,
};
extern void _ZN9S20469C22D1Ev();
extern void _ZN9S20469C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C229S20469C21__8S20469C1[] = {
  ABISELECT(-408,-292),
  ABISELECT(-408,-292),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C22[0]),
  (VTBL_ENTRY)&_ZN9S20469C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C229S20469C21__8S20469C1[] = {
  0,
  ABISELECT(408,292),
  (VTBL_ENTRY)&(_ZTI9S20469C22[0]),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C21__8S20469C1[] = {
  ABISELECT(376,276),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  ABISELECT(376,276),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C21__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(352,260),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S20469C21D1Ev,_ZTv0_n44_N9S20469C21D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S20469C21D0Ev,_ZTv0_n44_N9S20469C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C9__9S20469C21__8S20469C1[] = {
  ABISELECT(408,292),
  ABISELECT(72,40),
  0,
  ABISELECT(65,37),
  ABISELECT(56,32),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  0,
  ABISELECT(408,292),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20469C21D1Ev,_ZTv0_n44_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20469C21D0Ev,_ZTv0_n44_N9S20469C21D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S20469C21D1Ev,_ZTv0_n28_N9S20469C21D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20469C21D0Ev,_ZTv0_n28_N9S20469C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C2__9S20469C21__8S20469C1[] = {
  ABISELECT(392,284),
  ABISELECT(-16,-8),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(392,284),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C21D1Ev,_ZTv0_n28_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C21D0Ev,_ZTv0_n28_N9S20469C21D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20469C12__9S20469C21__8S20469C1[] = {
  ABISELECT(336,252),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-40),
  ABISELECT(336,252),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev),
};
static  VTT_ENTRY vtt_S20469C1[] = {
  {&(_ZTV8S20469C1[20]),  20,137},
  {&(_tg__ZTV9S20469C13__8S20469C1[20]),  20,22},
  {&(_tg__ZTV9S20469C14__9S20469C13__8S20469C1[12]),  12,14},
  {&(_tg__ZTV9S20469C16__9S20469C13__8S20469C1[5]),  5,7},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C13__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C13__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__A1__9S20469C13__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C29S20469C159S20469C14__9S20469C13__8S20469C1[6]),  6,8},
  {&(_tg__ZTV8S20469C3__9S20469C13__8S20469C1[6]),  6,8},
  {&(_tg__ZTV9S20469C18__9S20469C13__8S20469C1[8]),  8,10},
  {&(_tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C13__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C17__A1__9S20469C13__8S20469C1[6]),  6,6},
  {&(_tg__ZTV9S20469C129S20469C18__9S20469C13__8S20469C1[5]),  5,7},
  {&(_tg__ZTV9S20469C19__9S20469C13__8S20469C1[7]),  7,9},
  {&(_tg__ZTV9S20469C13__8S20469C1[20]),  20,22},
  {&(_tg__ZTV9S20469C21__9S20469C13__8S20469C1[12]),  12,14},
  {&(_tg__ZTV9S20469C13__8S20469C1[20]),  20,22},
  {&(_tg__ZTV8S20469C2__A1__9S20469C13__8S20469C1[7]),  7,9},
  {&(_tg__ZTV9S20469C12__A1__9S20469C13__8S20469C1[6]),  6,8},
  {&(_ZTV8S20469C1[30]),  30,137},
  {&(_ZTV8S20469C1[38]),  38,137},
  {&(_ZTV8S20469C1[43]),  43,137},
  {&(_ZTV8S20469C1[20]),  20,137},
  {&(_ZTV8S20469C1[20]),  20,137},
  {&(_ZTV8S20469C1[49]),  49,137},
  {&(_ZTV8S20469C1[63]),  63,137},
  {&(_ZTV8S20469C1[78]),  78,137},
  {&(_ZTV8S20469C1[83]),  83,137},
  {&(_ZTV8S20469C1[88]),  88,137},
  {&(_ZTV8S20469C1[71]),  71,137},
  {&(_ZTV8S20469C1[96]),  96,137},
  {&(_ZTV8S20469C1[101]),  101,137},
  {&(_ZTV8S20469C1[114]),  114,137},
  {&(_ZTV8S20469C1[106]),  106,137},
  {&(_ZTV8S20469C1[121]),  121,137},
  {&(_ZTV8S20469C1[135]),  135,137},
  {&(_tg__ZTV8S20469C2__8S20469C1[6]),  6,8},
  {&(_tg__ZTV8S20469C3__8S20469C2__8S20469C1[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C2__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C3__8S20469C1[5]),  5,7},
  {&(_tg__ZTV8S20469C88S20469C3__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C88S20469C3__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C3__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C9__8S20469C1[10]),  10,12},
  {&(_tg__ZTV8S20469C2__8S20469C9__8S20469C1[7]),  7,9},
  {&(_tg__ZTV8S20469C3__8S20469C9__8S20469C1[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C9__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C9__8S20469C1[10]),  10,12},
  {&(_tg__ZTV9S20469C12__8S20469C9__8S20469C1[6]),  6,8},
  {&(_tg__ZTV12S20469C11_nt__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C12__8S20469C1[5]),  5,7},
  {&(_tg__ZTV8S20469C89S20469C12__A1__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C89S20469C12__A1__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C12__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C14__8S20469C1[11]),  11,13},
  {&(_tg__ZTV9S20469C159S20469C14__8S20469C1[9]),  9,11},
  {&(_tg__ZTV9S20469C179S20469C159S20469C14__8S20469C1[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C179S20469C159S20469C14__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__9S20469C179S20469C159S20469C14__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C29S20469C159S20469C14__A1__8S20469C1[6]),  6,8},
  {&(_tg__ZTV8S20469C3__8S20469C29S20469C159S20469C14__A1__8S20469C1[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C29S20469C159S20469C14__A1__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C16__9S20469C159S20469C14__8S20469C1[5]),  5,7},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C159S20469C14__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C159S20469C14__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__A1__9S20469C159S20469C14__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C2__9S20469C159S20469C14__8S20469C1[6]),  6,8},
  {&(_tg__ZTV8S20469C3__9S20469C159S20469C14__8S20469C1[6]),  6,8},
  {&(_tg__ZTV9S20469C16__9S20469C14__8S20469C1[5]),  5,7},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C14__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C14__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__A1__9S20469C14__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C29S20469C15__9S20469C14__8S20469C1[6]),  6,8},
  {&(_tg__ZTV8S20469C3__9S20469C14__8S20469C1[6]),  6,8},
  {&(_tg__ZTV9S20469C18__9S20469C14__8S20469C1[8]),  8,10},
  {&(_tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C14__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C17__A1__9S20469C14__8S20469C1[6]),  6,6},
  {&(_tg__ZTV9S20469C129S20469C18__9S20469C14__8S20469C1[5]),  5,7},
  {&(_tg__ZTV9S20469C16__8S20469C1[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt9S20469C16__A1__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C16__A1__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C16__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C8__A2__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C8__A2__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C18__8S20469C1[7]),  7,9},
  {&(_tg__ZTV9S20469C169S20469C18__A1__8S20469C1[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt9S20469C169S20469C18__A2__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C169S20469C18__A2__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C169S20469C18__A1__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C129S20469C18__A1__8S20469C1[5]),  5,7},
  {&(_tg__ZTV8S20469C89S20469C129S20469C18__A3__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C89S20469C129S20469C18__A3__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C129S20469C18__A1__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C18__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C17__9S20469C18__8S20469C1[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C18__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__A1__9S20469C18__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C12__9S20469C18__8S20469C1[5]),  5,7},
  {&(_tg__ZTV9S20469C17__A1__8S20469C1[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C17__A1__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__9S20469C17__A1__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C19__8S20469C1[6]),  6,8},
  {&(_tg__ZTV9S20469C209S20469C19__8S20469C1[5]),  5,5},
  {&(_tg__ZTV12S20469C11_nt9S20469C209S20469C19__A3__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C209S20469C19__8S20469C1[3]),  3,3},
  {&(_tg__ZTV12S20469C11_nt__9S20469C19__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C19__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C21__8S20469C1[11]),  11,13},
  {&(_tg__ZTV9S20469C229S20469C21__8S20469C1[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt__9S20469C229S20469C21__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C3__9S20469C21__8S20469C1[6]),  6,8},
  {&(_tg__ZTV8S20469C5__9S20469C21__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C9__9S20469C21__8S20469C1[11]),  11,13},
  {&(_tg__ZTV8S20469C2__9S20469C21__8S20469C1[7]),  7,9},
  {&(_tg__ZTV8S20469C9__9S20469C21__8S20469C1[11]),  11,13},
  {&(_tg__ZTV9S20469C12__9S20469C21__8S20469C1[6]),  6,8},
};
extern VTBL_ENTRY _ZTI8S20469C1[];
extern  VTBL_ENTRY _ZTV8S20469C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C1[];
static VTBL_ENTRY alt_thunk_names124[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C14D0Ev,_ZTv0_n32_N9S20469C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20469C14D0Ev,_ZThn40_N9S20469C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C14D1Ev,_ZTv0_n32_N9S20469C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20469C14D1Ev,_ZThn40_N9S20469C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C14D0Ev,_ZTv0_n20_N9S20469C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C14D0Ev,_ZThn16_N9S20469C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C14D1Ev,_ZTv0_n20_N9S20469C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C14D1Ev,_ZThn16_N9S20469C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C15D0Ev,_ZThn16_N9S20469C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C15D1Ev,_ZThn16_N9S20469C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C9D0Ev,_ZThn40_N8S20469C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20469C9D0Ev,_ZThn16_N8S20469C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C9D1Ev,_ZThn40_N8S20469C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20469C9D1Ev,_ZThn16_N8S20469C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C9D0Ev,_ZThn8_N8S20469C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C9D1Ev,_ZThn8_N8S20469C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C2D0Ev,_ZThn8_N8S20469C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C2D1Ev,_ZThn8_N8S20469C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20469C13D0Ev,_ZThn8_N9S20469C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20469C13D0Ev,_ZThn280_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20469C13D1Ev,_ZThn8_N9S20469C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20469C13D1Ev,_ZThn280_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C13D0Ev,_ZTv0_n32_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20469C13D0Ev,_ZThn168_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C13D1Ev,_ZTv0_n32_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20469C13D1Ev,_ZThn168_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20469C13D0Ev,_ZThn40_N9S20469C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C13D0Ev,_ZThn16_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20469C13D1Ev,_ZThn40_N9S20469C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C13D1Ev,_ZThn16_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C13D0Ev,_ZTv0_n20_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20469C13D0Ev,_ZThn144_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C13D1Ev,_ZTv0_n20_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20469C13D1Ev,_ZThn144_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S20469C13D0Ev,_ZThn292_N9S20469C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20469C13D0Ev,_ZThn128_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S20469C13D1Ev,_ZThn292_N9S20469C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20469C13D1Ev,_ZThn128_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20469C13D0Ev,_ZTv0_n44_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20469C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20469C13D1Ev,_ZTv0_n44_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20469C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20469C1D0Ev,_ZTv0_n32_N8S20469C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S20469C1D0Ev,_ZThn168_N8S20469C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20469C1D1Ev,_ZTv0_n32_N8S20469C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S20469C1D1Ev,_ZThn168_N8S20469C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20469C1D0Ev,_ZTv0_n20_N8S20469C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20469C1D0Ev,_ZThn144_N8S20469C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20469C1D1Ev,_ZTv0_n20_N8S20469C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20469C1D1Ev,_ZThn144_N8S20469C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20469C1D0Ev,_ZTv0_n48_N8S20469C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S20469C1D0Ev,_ZThn292_N8S20469C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20469C1D0Ev,_ZThn128_N8S20469C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20469C1D1Ev,_ZTv0_n48_N8S20469C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S20469C1D1Ev,_ZThn292_N8S20469C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20469C1D1Ev,_ZThn128_N8S20469C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C1D0Ev,_ZTv0_n24_N8S20469C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C1D0Ev,_ZThn40_N8S20469C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20469C1D0Ev,_ZThn16_N8S20469C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C1D1Ev,_ZTv0_n24_N8S20469C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C1D1Ev,_ZThn40_N8S20469C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20469C1D1Ev,_ZThn16_N8S20469C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C1D0Ev,_ZTv0_n28_N8S20469C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S20469C1D0Ev,_ZThn280_N8S20469C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C1D0Ev,_ZThn8_N8S20469C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C1D1Ev,_ZTv0_n28_N8S20469C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S20469C1D1Ev,_ZThn280_N8S20469C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C1D1Ev,_ZThn8_N8S20469C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20469C1 = {  "S20469C1", // class name
  bases_S20469C1, 50,
  &(vtc_S20469C1[0]), // expected_vtbl_contents
  &(vtt_S20469C1[0]), // expected_vtt_contents
  ABISELECT(424,304), // object size
  NSPAIRA(_ZTI8S20469C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20469C1),137, //virtual function table var
  20, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20469C1),117, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names124,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C3  : virtual S19676C9 {
  virtual  ~S7864C3(); // _ZN7S7864C3D2Ev
  S7864C3(); // tgen
};
//SIG(-1 S7864C3) C1{ VBC2{ vd m Fp Fi Fc FD} vd}


 S7864C3 ::~S7864C3(){ note_dtor("S7864C3", this);}
S7864C3 ::S7864C3(){ note_ctor("S7864C3", this);} // tgen

static void Test_S7864C3()
{
  extern Class_Descriptor cd_S7864C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S7864C3, buf);
    S7864C3 *dp, &lv = *(dp=new (buf) S7864C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S7864C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C3)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(16,4), "S7864C3");
    test_class_info(&lv, &cd_S7864C3);
    dp->~S7864C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C3(Test_S7864C3, "S7864C3", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S7864C3C1Ev();
extern void _ZN7S7864C3D2Ev();
Name_Map name_map_S7864C3[] = {
  NSPAIR(_ZN7S7864C3C1Ev),
  NSPAIR(_ZN7S7864C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
static Base_Class bases_S7864C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7864C3[];
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7864C3D1Ev,_ZThn4_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7864C3D0Ev,_ZThn4_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C3[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S7864C3[];
static  VTT_ENTRY vtt_S7864C3[] = {
  {&(_ZTV7S7864C3[3]),  3,10},
  {&(_ZTV7S7864C3[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
static VTBL_ENTRY alt_thunk_names125[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C3D0Ev,_ZThn4_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C3D1Ev,_ZThn4_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C3 = {  "S7864C3", // class name
  bases_S7864C3, 1,
  &(vtc_S7864C3[0]), // expected_vtbl_contents
  &(vtt_S7864C3[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S7864C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7864C3),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7864C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names125,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C6  : virtual S19676C9 , S7864C3 {
  void *s7864c6f0[10];
  int s7864c6f1;
  __tsi64 s7864c6f2;
  ~S7864C6(); // tgen
  S7864C6(); // tgen
};
//SIG(-1 S7864C6) C1{ VBC2{ vd m Fp Fi Fc FD} BC3{ VBC2 vd} Fp[10] Fi FL}


S7864C6 ::~S7864C6(){ note_dtor("S7864C6", this);} // tgen
S7864C6 ::S7864C6(){ note_ctor("S7864C6", this);} // tgen

static void Test_S7864C6()
{
  extern Class_Descriptor cd_S7864C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,22)];
    init_test(&cd_S7864C6, buf);
    S7864C6 *dp, &lv = *(dp=new (buf) S7864C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,84), "sizeof(S7864C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C6)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(112,56), "S7864C6");
    check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(112,56), "S7864C6");
    check_base_class_offset(lv, (S7864C3*), 0, "S7864C6");
    check_field_offset(lv, s7864c6f0, ABISELECT(8,4), "S7864C6.s7864c6f0");
    check_field_offset(lv, s7864c6f1, ABISELECT(88,44), "S7864C6.s7864c6f1");
    check_field_offset(lv, s7864c6f2, ABISELECT(96,48), "S7864C6.s7864c6f2");
    test_class_info(&lv, &cd_S7864C6);
    dp->~S7864C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C6(Test_S7864C6, "S7864C6", ABISELECT(160,84));

#else // __cplusplus

extern void _ZN7S7864C6C1Ev();
extern void _ZN7S7864C6D1Ev();
Name_Map name_map_S7864C6[] = {
  NSPAIR(_ZN7S7864C6C1Ev),
  NSPAIR(_ZN7S7864C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
static Base_Class bases_S7864C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(112,56), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7864C6[];
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C6D1Ev,_ZThn56_N7S7864C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S7864C6D0Ev,_ZThn56_N7S7864C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C6[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S7864C6[];
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__7S7864C6[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn56_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn56_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__7S7864C6[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
static  VTT_ENTRY vtt_S7864C6[] = {
  {&(_ZTV7S7864C6[3]),  3,10},
  {&(_tg__ZTV7S7864C3__7S7864C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__7S7864C6[3]),  3,5},
  {&(_ZTV7S7864C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
static VTBL_ENTRY alt_thunk_names126[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn56_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn56_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C6D0Ev,_ZThn56_N7S7864C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C6D1Ev,_ZThn56_N7S7864C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C6 = {  "S7864C6", // class name
  bases_S7864C6, 2,
  &(vtc_S7864C6[0]), // expected_vtbl_contents
  &(vtt_S7864C6[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI7S7864C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7864C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7864C6),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names126,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C8  : virtual S7864C6 , S7864C3 {
  int s7864c8f0;
  virtual  ~S7864C8(); // _ZN7S7864C8D2Ev
  S7864C8(); // tgen
};
//SIG(-1 S7864C8) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} BC4 vd Fi}


 S7864C8 ::~S7864C8(){ note_dtor("S7864C8", this);}
S7864C8 ::S7864C8(){ note_ctor("S7864C8", this);} // tgen

static void Test_S7864C8()
{
  extern Class_Descriptor cd_S7864C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,24)];
    init_test(&cd_S7864C8, buf);
    S7864C8 *dp, &lv = *(dp=new (buf) S7864C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S7864C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C8)");
    check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(128,64), "S7864C8");
    check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(128,64), "S7864C8");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(128,64), "S7864C8");
    check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(16,8), "S7864C8");
    check_base_class_offset(lv, (S7864C6*), ABISELECT(16,8), "S7864C8");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*), 0, "S7864C8");
    check_field_offset(lv, s7864c8f0, ABISELECT(8,4), "S7864C8.s7864c8f0");
    test_class_info(&lv, &cd_S7864C8);
    dp->~S7864C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C8(Test_S7864C8, "S7864C8", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN7S7864C8C1Ev();
extern void _ZN7S7864C8D2Ev();
Name_Map name_map_S7864C8[] = {
  NSPAIR(_ZN7S7864C8C1Ev),
  NSPAIR(_ZN7S7864C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
static Base_Class bases_S7864C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(128,64), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7864C8[];
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn8_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn8_N7S7864C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn128_N7S7864C8D1Ev,_ZThn64_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn128_N7S7864C8D0Ev,_ZThn64_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C8[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern VTBL_ENTRY _ZTV7S7864C8[];
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C8[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn128_N7S7864C3D1Ev,_ZThn64_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn128_N7S7864C3D0Ev,_ZThn64_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__A1__7S7864C8[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C8[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__7S7864C8[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn56_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn56_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__7S7864C8[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C6D1Ev,_ZThn56_N7S7864C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S7864C6D0Ev,_ZThn56_N7S7864C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__7S7864C8[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
static  VTT_ENTRY vtt_S7864C8[] = {
  {&(_ZTV7S7864C8[4]),  4,17},
  {&(_tg__ZTV7S7864C3__A1__7S7864C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__A1__7S7864C8[3]),  3,5},
  {&(_ZTV7S7864C8[10]),  10,17},
  {&(_ZTV7S7864C8[15]),  15,17},
  {&(_tg__ZTV7S7864C6__7S7864C8[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__7S7864C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__7S7864C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__7S7864C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
static VTBL_ENTRY alt_thunk_names127[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C6D0Ev,_ZThn56_N7S7864C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C6D1Ev,_ZThn56_N7S7864C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn56_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7864C3D0Ev,_ZThn64_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn56_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7864C3D1Ev,_ZThn64_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7864C8D0Ev,_ZThn64_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7864C8D1Ev,_ZThn64_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn8_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn8_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C8 = {  "S7864C8", // class name
  bases_S7864C8, 4,
  &(vtc_S7864C8[0]), // expected_vtbl_contents
  &(vtt_S7864C8[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI7S7864C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7864C8),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7864C8),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names127,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C10  : S19676C9 , virtual S7864C3 , virtual S7864C6 , S7864C8 {
  int s7864c10f0;
  virtual  ~S7864C10(); // _ZN8S7864C10D2Ev
  S7864C10(); // tgen
};
//SIG(-1 S7864C10) C1{ BC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 vd} VBC4{ VBC2 BC3 Fp[10] Fi FL} BC5{ VBC4 BC3 vd Fi} vd Fi}


 S7864C10 ::~S7864C10(){ note_dtor("S7864C10", this);}
S7864C10 ::S7864C10(){ note_ctor("S7864C10", this);} // tgen

static void Test_S7864C10()
{
  extern Class_Descriptor cd_S7864C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,33)];
    init_test(&cd_S7864C10, buf);
    S7864C10 *dp, &lv = *(dp=new (buf) S7864C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,128), "sizeof(S7864C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C10)");
    /*is_ambiguous_... S7864C10::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), 0, "S7864C10");
    /*is_ambiguous_... S7864C10::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(80,44), "S7864C10");
    check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(80,44), "S7864C10");
    check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(80,44), "S7864C10");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*), ABISELECT(80,44), "S7864C10");
    /*is_ambiguous_... S7864C10::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*), ABISELECT(64,40), "S7864C10");
    check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(128,72), "S7864C10");
    check_base_class_offset(lv, (S7864C6*), ABISELECT(128,72), "S7864C10");
    check_base_class_offset(lv, (S7864C6*)(S7864C8*), ABISELECT(128,72), "S7864C10");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*), ABISELECT(48,28), "S7864C10");
    check_base_class_offset(lv, (S7864C8*), ABISELECT(48,28), "S7864C10");
    check_field_offset(lv, s7864c10f0, ABISELECT(60,36), "S7864C10.s7864c10f0");
    test_class_info(&lv, &cd_S7864C10);
    dp->~S7864C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C10(Test_S7864C10, "S7864C10", ABISELECT(240,128));

#else // __cplusplus

extern void _ZN8S7864C10C1Ev();
extern void _ZN8S7864C10D2Ev();
Name_Map name_map_S7864C10[] = {
  NSPAIR(_ZN8S7864C10C1Ev),
  NSPAIR(_ZN8S7864C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
static Base_Class bases_S7864C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(80,44), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(64,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(128,72), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(48,28), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7864C10[];
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S7864C10D1Ev,_ZThn44_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S7864C10D0Ev,_ZThn44_N8S7864C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S7864C10D1Ev,_ZThn72_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S7864C10D0Ev,_ZThn72_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C10[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(16,4),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S7864C10[];
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C8__A2__8S7864C10[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn32_N7S7864C3D1Ev,_ZThn16_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn32_N7S7864C3D0Ev,_ZThn16_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C8__A2__8S7864C10[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn80_N7S7864C8D1Ev,_ZThn44_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn80_N7S7864C8D0Ev,_ZThn44_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C8__8S7864C10[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn32_N7S7864C8D1Ev,_ZThn16_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn32_N7S7864C8D0Ev,_ZThn16_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C8__8S7864C10[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7864C3D1Ev,_ZThn4_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7864C3D0Ev,_ZThn4_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__8S7864C10[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__A1__8S7864C10[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__A1__8S7864C10[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__8S7864C10[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
static  VTT_ENTRY vtt_S7864C10[] = {
  {&(_ZTV8S7864C10[5]),  5,30},
  {&(_tg__ZTV7S7864C8__8S7864C10[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C8__A2__8S7864C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C8__A2__8S7864C10[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C8__8S7864C10[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C8__8S7864C10[3]),  3,5},
  {&(_ZTV8S7864C10[17]),  17,30},
  {&(_ZTV8S7864C10[22]),  22,30},
  {&(_ZTV8S7864C10[28]),  28,30},
  {&(_ZTV8S7864C10[11]),  11,30},
  {&(_tg__ZTV7S7864C3__8S7864C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__8S7864C10[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__A1__8S7864C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__A1__8S7864C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__8S7864C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
static VTBL_ENTRY alt_thunk_names128[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7864C8D0Ev,_ZThn16_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7864C8D1Ev,_ZThn16_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7864C8D0Ev,_ZThn44_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7864C8D1Ev,_ZThn44_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C3D0Ev,_ZThn4_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7864C3D0Ev,_ZThn16_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C3D1Ev,_ZThn4_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7864C3D1Ev,_ZThn16_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7864C10D0Ev,_ZThn44_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7864C10D1Ev,_ZThn44_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7864C10D0Ev,_ZThn72_N8S7864C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7864C10D1Ev,_ZThn72_N8S7864C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C10 = {  "S7864C10", // class name
  bases_S7864C10, 7,
  &(vtc_S7864C10[0]), // expected_vtbl_contents
  &(vtt_S7864C10[0]), // expected_vtt_contents
  ABISELECT(240,128), // object size
  NSPAIRA(_ZTI8S7864C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7864C10),30, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7864C10),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names128,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C11  : virtual S19676C9 , virtual S7864C6 , S7864C3 {
  void *s7864c11f0;
  int s7864c11f1;
  ::S19676C9 s7864c11f2[3];
  int s7864c11f3[7];
  virtual  ~S7864C11(); // _ZN8S7864C11D2Ev
  S7864C11(); // tgen
};
//SIG(-1 S7864C11) C1{ VBC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 BC4{ VBC2 vd} Fp[10] Fi FL} BC4 vd Fp Fi FC2[3] Fi[7]}


 S7864C11 ::~S7864C11(){ note_dtor("S7864C11", this);}
S7864C11 ::S7864C11(){ note_ctor("S7864C11", this);} // tgen

static void Test_S7864C11()
{
  extern Class_Descriptor cd_S7864C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,53)];
    init_test(&cd_S7864C11, buf);
    S7864C11 *dp, &lv = *(dp=new (buf) S7864C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,208), "sizeof(S7864C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C11)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S7864C11");
    check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(208,124), "S7864C11");
    check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(208,124), "S7864C11");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(208,124), "S7864C11");
    check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(256,152), "S7864C11");
    check_base_class_offset(lv, (S7864C6*), ABISELECT(256,152), "S7864C11");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*), 0, "S7864C11");
    check_field_offset(lv, s7864c11f0, ABISELECT(8,4), "S7864C11.s7864c11f0");
    check_field_offset(lv, s7864c11f1, ABISELECT(16,8), "S7864C11.s7864c11f1");
    check_field_offset(lv, s7864c11f2, ABISELECT(32,12), "S7864C11.s7864c11f2");
    check_field_offset(lv, s7864c11f3, ABISELECT(176,96), "S7864C11.s7864c11f3");
    test_class_info(&lv, &cd_S7864C11);
    dp->~S7864C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C11(Test_S7864C11, "S7864C11", ABISELECT(368,208));

#else // __cplusplus

extern void _ZN8S7864C11C1Ev();
extern void _ZN8S7864C11D2Ev();
Name_Map name_map_S7864C11[] = {
  NSPAIR(_ZN8S7864C11C1Ev),
  NSPAIR(_ZN8S7864C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
static Base_Class bases_S7864C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(208,124), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    ABISELECT(256,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(256,152), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7864C11[];
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn208_N8S7864C11D1Ev,_ZThn124_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn208_N8S7864C11D0Ev,_ZThn124_N8S7864C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn256_N8S7864C11D1Ev,_ZThn152_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn256_N8S7864C11D0Ev,_ZThn152_N8S7864C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C11[] = {
  ABISELECT(256,152),
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
  ABISELECT(-256,-152),
  ABISELECT(-48,-28),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S7864C11[];
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__8S7864C11[] = {
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn208_N7S7864C3D1Ev,_ZThn124_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn208_N7S7864C3D0Ev,_ZThn124_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__A1__8S7864C11[] = {
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C11[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__8S7864C11[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__8S7864C11[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__8S7864C11[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
static  VTT_ENTRY vtt_S7864C11[] = {
  {&(_ZTV8S7864C11[4]),  4,17},
  {&(_tg__ZTV7S7864C3__A1__8S7864C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__A1__8S7864C11[3]),  3,5},
  {&(_ZTV8S7864C11[9]),  9,17},
  {&(_ZTV8S7864C11[15]),  15,17},
  {&(_tg__ZTV7S7864C6__8S7864C11[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__8S7864C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__8S7864C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__8S7864C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
static VTBL_ENTRY alt_thunk_names129[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7864C3D0Ev,_ZThn124_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7864C3D1Ev,_ZThn124_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S7864C11D0Ev,_ZThn152_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S7864C11D1Ev,_ZThn152_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7864C11D0Ev,_ZThn124_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7864C11D1Ev,_ZThn124_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C11 = {  "S7864C11", // class name
  bases_S7864C11, 4,
  &(vtc_S7864C11[0]), // expected_vtbl_contents
  &(vtt_S7864C11[0]), // expected_vtt_contents
  ABISELECT(368,208), // object size
  NSPAIRA(_ZTI8S7864C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7864C11),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7864C11),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names129,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C9  : virtual S7864C6 , virtual S7864C10 , S7864C11 , S19676C9 , S7864C3 {
  virtual  ~S7864C9(); // _ZN7S7864C9D2Ev
  S7864C9(); // tgen
};
//SIG(-1 S7864C9) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC2 BC4 vd Fi} vd Fi} BC7{ VBC3 VBC2 BC4 vd Fp Fi FC3[3] Fi[7]} BC3 BC4 vd}


 S7864C9 ::~S7864C9(){ note_dtor("S7864C9", this);}
S7864C9 ::S7864C9(){ note_ctor("S7864C9", this);} // tgen

static void Test_S7864C9()
{
  extern Class_Descriptor cd_S7864C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(32,72)];
    init_test(&cd_S7864C9, buf);
    S7864C9 *dp, &lv = *(dp=new (buf) S7864C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,284), "sizeof(S7864C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C9)");
    check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(368,212), "S7864C9");
    check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(368,212), "S7864C9");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(368,212), "S7864C9");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(368,212), "S7864C9");
    check_base_class_offset(lv, (S19676C9*)(S7864C11*), ABISELECT(368,212), "S7864C9");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*), ABISELECT(368,212), "S7864C9");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(368,212), "S7864C9");
    check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(264,156), "S7864C9");
    check_base_class_offset(lv, (S7864C6*), ABISELECT(264,156), "S7864C9");
    check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(264,156), "S7864C9");
    check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(264,156), "S7864C9");
    check_base_class_offset(lv, (S7864C6*)(S7864C11*), ABISELECT(264,156), "S7864C9");
    /*is_ambiguous_... S7864C10::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), ABISELECT(416,240), "S7864C9");
    /*is_ambiguous_... S7864C10::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), ABISELECT(480,280), "S7864C9");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(464,268), "S7864C9");
    check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(464,268), "S7864C9");
    check_base_class_offset(lv, (S7864C10*), ABISELECT(416,240), "S7864C9");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*), 0, "S7864C9");
    check_base_class_offset(lv, (S7864C11*), 0, "S7864C9");
    /*is_ambiguous_... S7864C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S7864C9");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*), ABISELECT(256,152), "S7864C9");
    test_class_info(&lv, &cd_S7864C9);
    dp->~S7864C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C9(Test_S7864C9, "S7864C9", ABISELECT(496,284));

#else // __cplusplus

extern void _ZN7S7864C9C1Ev();
extern void _ZN7S7864C9D2Ev();
Name_Map name_map_S7864C9[] = {
  NSPAIR(_ZN7S7864C9C1Ev),
  NSPAIR(_ZN7S7864C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
static Base_Class bases_S7864C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(368,212), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(264,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(264,156), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    ABISELECT(416,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(480,280), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(464,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(464,268), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(416,240), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7864C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(208,124), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7864C3,    ABISELECT(256,152), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7864C9[];
extern void _ZN7S7864C9D1Ev();
extern void _ZN7S7864C9D0Ev();
extern void ABISELECT(_ZThn208_N7S7864C9D1Ev,_ZThn124_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn208_N7S7864C9D0Ev,_ZThn124_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn264_N7S7864C9D1Ev,_ZThn156_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn264_N7S7864C9D0Ev,_ZThn156_N7S7864C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C9D1Ev,_ZThn212_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn368_N7S7864C9D0Ev,_ZThn212_N7S7864C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn416_N7S7864C9D1Ev,_ZThn240_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn416_N7S7864C9D0Ev,_ZThn240_N7S7864C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn480_N7S7864C9D1Ev,_ZThn280_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn480_N7S7864C9D0Ev,_ZThn280_N7S7864C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C9[] = {
  ABISELECT(480,280),
  ABISELECT(416,240),
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&_ZN7S7864C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C9D0Ev,
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N7S7864C9D1Ev,_ZThn124_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N7S7864C9D0Ev,_ZThn124_N7S7864C9D0Ev),
  ABISELECT(112,60),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev),
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev),
  ABISELECT(-416,-240),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev),
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-464,-268),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev),
  ABISELECT(-480,-280),
  ABISELECT(-112,-68),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S7864C9[];
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C11__7S7864C9[] = {
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C11__A3__7S7864C9[] = {
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C3D1Ev,_ZThn212_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn368_N7S7864C3D0Ev,_ZThn212_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C11__A3__7S7864C9[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn368_N8S7864C11D1Ev,_ZThn212_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn368_N8S7864C11D0Ev,_ZThn212_N8S7864C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C11__7S7864C9[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn264_N8S7864C11D1Ev,_ZThn156_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn264_N8S7864C11D0Ev,_ZThn156_N8S7864C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C11__7S7864C9[] = {
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A__7S7864C9[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn60_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn60_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__A__7S7864C9[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C9[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__7S7864C9[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7864C3D1Ev,_ZThn56_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7864C3D0Ev,_ZThn56_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__7S7864C9[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZThn104_N7S7864C6D1Ev,_ZThn56_N7S7864C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
extern void ABISELECT(_ZThn104_N7S7864C6D0Ev,_ZThn56_N7S7864C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__7S7864C9[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C9[] = {
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__7S7864C9[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A2__7S7864C9[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A2__7S7864C9[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__7S7864C9[] = {
  ABISELECT(200,112),
  ABISELECT(104,56),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__7S7864C9[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__7S7864C9[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__7S7864C9[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__7S7864C9[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__7S7864C9[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C9[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__A1__7S7864C9[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
static  VTT_ENTRY vtt_S7864C9[] = {
  {&(_ZTV7S7864C9[6]),  6,48},
  {&(_tg__ZTV8S7864C11__7S7864C9[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C11__A3__7S7864C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C11__A3__7S7864C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C11__7S7864C9[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C11__7S7864C9[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A__7S7864C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__A__7S7864C9[3]),  3,5},
  {&(_ZTV7S7864C9[21]),  21,48},
  {&(_ZTV7S7864C9[26]),  26,48},
  {&(_ZTV7S7864C9[34]),  34,48},
  {&(_ZTV7S7864C9[46]),  46,48},
  {&(_ZTV7S7864C9[40]),  40,48},
  {&(_ZTV7S7864C9[15]),  15,48},
  {&(_tg__ZTV7S7864C6__7S7864C9[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__7S7864C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__7S7864C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__7S7864C9[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C9[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__7S7864C9[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A2__7S7864C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A2__7S7864C9[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__7S7864C9[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__7S7864C9[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__7S7864C9[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__7S7864C9[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__7S7864C9[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__7S7864C9[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A1__7S7864C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__A1__7S7864C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7864C9[];
extern  VTBL_ENTRY _ZTV7S7864C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C9[];
static VTBL_ENTRY alt_thunk_names130[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7864C6D0Ev,_ZThn56_N7S7864C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7864C6D1Ev,_ZThn56_N7S7864C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7864C11D0Ev,_ZThn156_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7864C11D1Ev,_ZThn156_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S7864C11D0Ev,_ZThn212_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S7864C11D1Ev,_ZThn212_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7864C3D0Ev,_ZThn56_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn60_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C3D0Ev,_ZThn212_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7864C3D1Ev,_ZThn56_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn60_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C3D1Ev,_ZThn212_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7864C9D0Ev,_ZThn240_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7864C9D1Ev,_ZThn240_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C9D0Ev,_ZThn212_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C9D1Ev,_ZThn212_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7864C9D0Ev,_ZThn280_N7S7864C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7864C9D0Ev,_ZThn156_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7864C9D1Ev,_ZThn280_N7S7864C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7864C9D1Ev,_ZThn156_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C9 = {  "S7864C9", // class name
  bases_S7864C9, 12,
  &(vtc_S7864C9[0]), // expected_vtbl_contents
  &(vtt_S7864C9[0]), // expected_vtt_contents
  ABISELECT(496,284), // object size
  NSPAIRA(_ZTI7S7864C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7864C9),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7864C9),30, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names130,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C7  : virtual S7864C3 , virtual S7864C8 , S7864C6 , S7864C9 , S7864C10 {
  short s7864c7f0;
  virtual  ~S7864C7(); // _ZN7S7864C7D2Ev
  S7864C7(); // tgen
};
//SIG(-1 S7864C7) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ VBC5{ VBC3 BC2 Fp[10] Fi FL} BC2 vd Fi} BC5 BC6{ VBC5 VBC7{ BC3 VBC2 VBC5 BC4 vd Fi} BC8{ VBC3 VBC5 BC2 vd Fp Fi FC3[3] Fi[7]} BC3 BC2 vd} BC7 vd Fs}


 S7864C7 ::~S7864C7(){ note_dtor("S7864C7", this);}
S7864C7 ::S7864C7(){ note_ctor("S7864C7", this);} // tgen

static void Test_S7864C7()
{
  extern Class_Descriptor cd_S7864C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,99)];
    init_test(&cd_S7864C7, buf);
    S7864C7 *dp, &lv = *(dp=new (buf) S7864C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,392), "sizeof(S7864C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C7)");
    /*is_ambiguous_... S7864C7::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(464,260), "S7864C7");
    check_base_class_offset(lv, (S19676C9*)(S7864C11*)(S7864C9*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*)(S7864C9*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C9*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*), ABISELECT(456,256), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), ABISELECT(456,256), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), ABISELECT(456,256), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(528,296), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*), ABISELECT(528,296), "S7864C7");
    check_base_class_offset(lv, (S7864C6*)(S7864C9*), ABISELECT(528,296), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(528,296), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(528,296), "S7864C7");
    check_base_class_offset(lv, (S7864C6*)(S7864C11*)(S7864C9*), ABISELECT(528,296), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(528,296), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(528,296), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*), ABISELECT(512,288), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C8*), ABISELECT(512,288), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C6*), 0, "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C6*), 0, "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), ABISELECT(640,352), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(688,380), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(688,380), "S7864C7");
    check_base_class_offset(lv, (S7864C10*)(S7864C9*), ABISELECT(640,352), "S7864C7");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*)(S7864C9*), ABISELECT(112,56), "S7864C7");
    check_base_class_offset(lv, (S7864C11*)(S7864C9*), ABISELECT(112,56), "S7864C7");
    /*is_ambiguous_... S7864C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C9*), ABISELECT(320,180), "S7864C7");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C9*), ABISELECT(368,208), "S7864C7");
    check_base_class_offset(lv, (S7864C9*), ABISELECT(112,56), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), ABISELECT(384,212), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(432,240), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(432,240), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C10*), ABISELECT(384,212), "S7864C7");
    check_field_offset(lv, s7864c7f0, ABISELECT(448,252), "S7864C7.s7864c7f0");
    test_class_info(&lv, &cd_S7864C7);
    dp->~S7864C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C7(Test_S7864C7, "S7864C7", ABISELECT(704,392));

#else // __cplusplus

extern void _ZN7S7864C7C1Ev();
extern void _ZN7S7864C7D2Ev();
Name_Map name_map_S7864C7[] = {
  NSPAIR(_ZN7S7864C7C1Ev),
  NSPAIR(_ZN7S7864C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C9;
extern VTBL_ENTRY _ZTI7S7864C9[];
extern  VTBL_ENTRY _ZTV7S7864C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
static Base_Class bases_S7864C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(464,260), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(456,256), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    ABISELECT(528,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(528,296), //bcp->offset
    57, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(512,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(512,288), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(640,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(688,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(688,380), //bcp->offset
    71, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(640,352), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7864C11,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(320,180), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(368,208), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7864C9,    ABISELECT(112,56), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(384,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(432,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(432,240), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(384,212), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7864C7[];
extern void _ZN7S7864C7D1Ev();
extern void _ZN7S7864C7D0Ev();
extern void ABISELECT(_ZThn112_N7S7864C7D1Ev,_ZThn56_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C7D0Ev,_ZThn56_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn320_N7S7864C7D1Ev,_ZThn180_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn320_N7S7864C7D0Ev,_ZThn180_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn368_N7S7864C7D1Ev,_ZThn208_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C7D0Ev,_ZThn208_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn384_N7S7864C7D1Ev,_ZThn212_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn384_N7S7864C7D0Ev,_ZThn212_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn432_N7S7864C7D1Ev,_ZThn240_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn432_N7S7864C7D0Ev,_ZThn240_N7S7864C7D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn456_N7S7864C7D1Ev,_ZThn256_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn456_N7S7864C7D0Ev,_ZThn256_N7S7864C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C7D1Ev,_ZTv0_n12_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn464_N7S7864C7D1Ev,_ZThn260_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C7D0Ev,_ZTv0_n12_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn464_N7S7864C7D0Ev,_ZThn260_N7S7864C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn512_N7S7864C7D1Ev,_ZThn288_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn512_N7S7864C7D0Ev,_ZThn288_N7S7864C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn528_N7S7864C7D1Ev,_ZThn296_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn528_N7S7864C7D0Ev,_ZThn296_N7S7864C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn640_N7S7864C7D1Ev,_ZThn352_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn640_N7S7864C7D0Ev,_ZThn352_N7S7864C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S7864C7D1Ev,_ZTvn28_n24_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C7D0Ev,_ZTvn28_n24_N7S7864C7D0Ev)();
static  VTBL_ENTRY vtc_S7864C7[] = {
  ABISELECT(640,352),
  ABISELECT(528,296),
  ABISELECT(512,288),
  ABISELECT(456,256),
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&_ZN7S7864C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C7D0Ev,
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C7D1Ev,_ZThn56_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C7D0Ev,_ZThn56_N7S7864C7D0Ev),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N7S7864C7D1Ev,_ZThn180_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N7S7864C7D0Ev,_ZThn180_N7S7864C7D0Ev),
  ABISELECT(96,52),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7864C7D1Ev,_ZThn208_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7864C7D0Ev,_ZThn208_N7S7864C7D0Ev),
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7864C7D1Ev,_ZThn212_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7864C7D0Ev,_ZThn212_N7S7864C7D0Ev),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7864C7D1Ev,_ZThn240_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7864C7D0Ev,_ZThn240_N7S7864C7D0Ev),
  ABISELECT(-456,-256),
  ABISELECT(8,4),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev),
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C7D1Ev,_ZTv0_n12_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C7D0Ev,_ZTv0_n12_N7S7864C7D0Ev),
  ABISELECT(-512,-288),
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  ABISELECT(-512,-288),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev),
  ABISELECT(-528,-296),
  ABISELECT(-64,-36),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev),
  ABISELECT(-640,-352),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-640,-352),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev),
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C7D1Ev,_ZTvn28_n24_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C7D0Ev,_ZTvn28_n24_N7S7864C7D0Ev),
};
extern VTBL_ENTRY _ZTV7S7864C7[];
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__A__7S7864C7[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__A3__7S7864C7[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn464_N7S7864C3D1Ev,_ZThn260_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn464_N7S7864C3D0Ev,_ZThn260_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__A3__7S7864C7[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZThn464_N7S7864C6D1Ev,_ZThn260_N7S7864C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
extern void ABISELECT(_ZThn464_N7S7864C6D0Ev,_ZThn260_N7S7864C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__A__7S7864C7[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern void _ZN7S7864C9D1Ev();
extern void _ZN7S7864C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C9__7S7864C7[] = {
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&_ZN7S7864C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C9D0Ev,
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C117S7864C9__7S7864C7[] = {
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C117S7864C9__A5__7S7864C7[] = {
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn352_N7S7864C3D1Ev,_ZThn204_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn352_N7S7864C3D0Ev,_ZThn204_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C117S7864C9__A5__7S7864C7[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn352_N8S7864C11D1Ev,_ZThn204_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn352_N8S7864C11D0Ev,_ZThn204_N8S7864C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C117S7864C9__7S7864C7[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn416_N8S7864C11D1Ev,_ZThn240_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn416_N8S7864C11D0Ev,_ZThn240_N8S7864C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C117S7864C9__7S7864C7[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A6__7S7864C7[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn96_N7S7864C3D1Ev,_ZThn52_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn96_N7S7864C3D0Ev,_ZThn52_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C9__A6__7S7864C7[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn416_N7S7864C9D1Ev,_ZThn240_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn416_N7S7864C9D0Ev,_ZThn240_N7S7864C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C9__7S7864C7[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn352_N7S7864C9D1Ev,_ZThn204_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn352_N7S7864C9D0Ev,_ZThn204_N7S7864C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C9__7S7864C7[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn528_N7S7864C9D1Ev,_ZThn296_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn528_N7S7864C9D0Ev,_ZThn296_N7S7864C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C9__7S7864C7[] = {
  ABISELECT(-528,-296),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn344_N7S7864C9D1Ev,_ZThn200_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn344_N7S7864C9D0Ev,_ZThn200_N7S7864C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C9__7S7864C7[] = {
  ABISELECT(-344,-200),
  ABISELECT(8,4),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__7S7864C9__7S7864C7[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A__7S7864C9__7S7864C7[] = {
  ABISELECT(96,52),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__A__7S7864C7[] = {
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A2__7S7864C7[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A7__7S7864C7[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn32_N7S7864C3D1Ev,_ZThn20_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn32_N7S7864C3D0Ev,_ZThn20_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A7__7S7864C7[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn96_N7S7864C8D1Ev,_ZThn56_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn96_N7S7864C8D0Ev,_ZThn56_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__A2__7S7864C7[] = {
  ABISELECT(-96,-56),
  ABISELECT(-64,-36),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn32_N7S7864C8D1Ev,_ZThn20_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn32_N7S7864C8D0Ev,_ZThn20_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__A2__7S7864C7[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn72_N8S7864C10D1Ev,_ZThn44_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn72_N8S7864C10D0Ev,_ZThn44_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__A__7S7864C7[] = {
  ABISELECT(-72,-44),
  ABISELECT(8,4),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S7864C10D1Ev,_ZThn48_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S7864C10D0Ev,_ZThn48_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__A__7S7864C7[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn144_N8S7864C10D1Ev,_ZThn84_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn144_N8S7864C10D0Ev,_ZThn84_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__A__7S7864C7[] = {
  ABISELECT(-144,-84),
  ABISELECT(-64,-36),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__A__7S7864C7[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__7S7864C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S7864C3D1Ev,_ZThn4_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn8_N7S7864C3D0Ev,_ZThn4_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__7S7864C7[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C7[] = {
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C8__A2__7S7864C7[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C8__A2__7S7864C7[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn8_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn8_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C8__7S7864C7[] = {
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C8__7S7864C7[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C7[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__A1__7S7864C7[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__A1__7S7864C7[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__7S7864C7[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C7[] = {
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C7[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A4__7S7864C7[] = {
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A4__7S7864C7[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__A1__7S7864C7[] = {
  ABISELECT(160,84),
  ABISELECT(-64,-36),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__A1__7S7864C7[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__7S7864C7[] = {
  ABISELECT(184,96),
  ABISELECT(8,4),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__7S7864C7[] = {
  ABISELECT(176,92),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__7S7864C7[] = {
  ABISELECT(112,56),
  ABISELECT(-64,-36),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__7S7864C7[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
static  VTT_ENTRY vtt_S7864C7[] = {
  {&(_ZTV7S7864C7[7]),  7,77},
  {&(_tg__ZTV7S7864C6__A__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__A3__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__A3__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__A__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C9__7S7864C7[6]),  6,8},
  {&(_tg__ZTV8S7864C117S7864C9__7S7864C7[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C117S7864C9__A5__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C117S7864C9__A5__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C117S7864C9__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C117S7864C9__7S7864C7[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C9__A6__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C9__A6__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C9__7S7864C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C9__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C9__7S7864C7[6]),  6,8},
  {&(_tg__ZTV7S7864C3__A1__7S7864C9__7S7864C7[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__7S7864C9__7S7864C7[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A__7S7864C9__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S7864C10__A__7S7864C7[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__A2__7S7864C7[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A7__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A7__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__A2__7S7864C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__A2__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__A__7S7864C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__A__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__A__7S7864C7[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__A__7S7864C7[4]),  4,6},
  {&(_ZTV7S7864C7[43]),  43,77},
  {&(_ZTV7S7864C7[48]),  48,77},
  {&(_ZTV7S7864C7[55]),  55,77},
  {&(_ZTV7S7864C7[61]),  61,77},
  {&(_ZTV7S7864C7[15]),  15,77},
  {&(_ZTV7S7864C7[69]),  69,77},
  {&(_ZTV7S7864C7[75]),  75,77},
  {&(_ZTV7S7864C7[24]),  24,77},
  {&(_ZTV7S7864C7[31]),  31,77},
  {&(_ZTV7S7864C7[37]),  37,77},
  {&(_tg__ZTV7S7864C3__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C8__7S7864C7[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C8__A2__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C8__A2__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C8__7S7864C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C8__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__A1__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__A1__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C7[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C7[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A4__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A4__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__A1__7S7864C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__A1__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__7S7864C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__7S7864C7[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__7S7864C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7864C7[];
extern  VTBL_ENTRY _ZTV7S7864C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C7[];
static VTBL_ENTRY alt_thunk_names131[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7864C10D0Ev,_ZThn48_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7864C10D1Ev,_ZThn48_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7864C10D0Ev,_ZThn84_N8S7864C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7864C10D0Ev,_ZThn44_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7864C10D1Ev,_ZThn84_N8S7864C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7864C10D1Ev,_ZThn44_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7864C8D0Ev,_ZThn20_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7864C8D1Ev,_ZThn20_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn8_N7S7864C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7864C8D0Ev,_ZThn56_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn8_N7S7864C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7864C8D1Ev,_ZThn56_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7864C9D0Ev,_ZThn296_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7864C9D1Ev,_ZThn296_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7864C9D0Ev,_ZThn204_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7864C9D1Ev,_ZThn204_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7864C9D0Ev,_ZThn200_N7S7864C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7864C9D0Ev,_ZThn240_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7864C9D1Ev,_ZThn200_N7S7864C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7864C9D1Ev,_ZThn240_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S7864C11D0Ev,_ZThn240_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S7864C11D1Ev,_ZThn240_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S7864C11D0Ev,_ZThn204_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S7864C11D1Ev,_ZThn204_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7864C6D0Ev,_ZThn260_N7S7864C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7864C6D1Ev,_ZThn260_N7S7864C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7864C3D0Ev,_ZThn4_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7864C3D0Ev,_ZThn20_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7864C3D0Ev,_ZThn52_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7864C3D0Ev,_ZThn204_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7864C3D0Ev,_ZThn260_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7864C3D1Ev,_ZThn4_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7864C3D1Ev,_ZThn20_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7864C3D1Ev,_ZThn52_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7864C3D1Ev,_ZThn204_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7864C3D1Ev,_ZThn260_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S7864C7D0Ev,_ZThn352_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S7864C7D1Ev,_ZThn352_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N7S7864C7D0Ev,_ZThn288_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N7S7864C7D1Ev,_ZThn288_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C7D0Ev,_ZTv0_n12_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7864C7D0Ev,_ZThn260_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C7D1Ev,_ZTv0_n12_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7864C7D1Ev,_ZThn260_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7864C7D0Ev,_ZThn296_N7S7864C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C7D0Ev,_ZThn256_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7864C7D1Ev,_ZThn296_N7S7864C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C7D1Ev,_ZThn256_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C7 = {  "S7864C7", // class name
  bases_S7864C7, 21,
  &(vtc_S7864C7[0]), // expected_vtbl_contents
  &(vtt_S7864C7[0]), // expected_vtt_contents
  ABISELECT(704,392), // object size
  NSPAIRA(_ZTI7S7864C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7864C7),77, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7864C7),60, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names131,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C5  : virtual S7864C6 , virtual S7864C7 , virtual S7864C9 , virtual S19676C2 , S7864C10 {
  short s7864c5f0;
  void *s7864c5f1[2];
  ~S7864C5(); // tgen
  S7864C5(); // tgen
};
//SIG(-1 S7864C5) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} VBC5{ VBC4 VBC6{ VBC2 BC4 vd Fi} BC2 BC7{ VBC2 VBC8{ BC3 VBC4 VBC2 BC6 vd Fi} BC9{ VBC3 VBC2 BC4 vd Fp Fi FC3[3] Fi[7]} BC3 BC4 vd} BC8 vd Fs} VBC7 VBC10{ m FC11{} Fi[3]} BC8 Fs Fp[2]}


S7864C5 ::~S7864C5(){ note_dtor("S7864C5", this);} // tgen
S7864C5 ::S7864C5(){ note_ctor("S7864C5", this);} // tgen

static void Test_S7864C5()
{
  extern Class_Descriptor cd_S7864C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(68,155)];
    init_test(&cd_S7864C5, buf);
    S7864C5 *dp, &lv = *(dp=new (buf) S7864C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1072,616), "sizeof(S7864C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C5)");
    /*is_ambiguous_... S7864C5::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C6*)(S7864C7*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*)(S7864C7*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(192,108), "S7864C5");
    check_base_class_offset(lv, (S19676C9*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C9*)(S7864C7*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C11*)(S7864C9*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*)(S7864C9*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C9*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C6*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*), ABISELECT(88,52), "S7864C5");
    check_base_class_offset(lv, (S7864C6*)(S7864C9*)(S7864C7*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(88,52), "S7864C5");
    check_base_class_offset(lv, (S7864C6*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*)(S7864C7*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C9*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C11*)(S7864C9*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C7*), ABISELECT(696,392), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), ABISELECT(696,392), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*)(S7864C7*), ABISELECT(696,392), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), ABISELECT(696,392), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*), ABISELECT(704,396), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C7*), ABISELECT(704,396), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C6*)(S7864C7*), ABISELECT(240,136), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C7*), ABISELECT(240,136), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), ABISELECT(720,404), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(768,432), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(768,432), "S7864C5");
    check_base_class_offset(lv, (S7864C10*)(S7864C9*)(S7864C7*), ABISELECT(720,404), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C10*)(S7864C9*), ABISELECT(720,404), "S7864C5");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(352,192), "S7864C5");
    check_base_class_offset(lv, (S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(352,192), "S7864C5");
    /*is_ambiguous_... S7864C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C9*)(S7864C7*), ABISELECT(560,316), "S7864C5");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C9*)(S7864C7*), ABISELECT(608,344), "S7864C5");
    check_base_class_offset(lv, (S7864C9*)(S7864C7*), ABISELECT(352,192), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*)(S7864C7*), ABISELECT(624,348), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(672,376), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(672,376), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C10*)(S7864C7*), ABISELECT(624,348), "S7864C5");
    check_base_class_offset(lv, (S7864C7*), ABISELECT(240,136), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*)(S7864C9*), ABISELECT(784,444), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C11*)(S7864C9*), ABISELECT(784,444), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C9*), ABISELECT(992,568), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C9*), ABISELECT(1040,596), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C9*), ABISELECT(784,444), "S7864C5");
    check_base_class_offset(lv, (S19676C2*), ABISELECT(1048,600), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), 0, "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(48,28), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(48,28), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C10*), 0, "S7864C5");
    check_field_offset(lv, s7864c5f0, ABISELECT(64,40), "S7864C5.s7864c5f0");
    check_field_offset(lv, s7864c5f1, ABISELECT(72,44), "S7864C5.s7864c5f1");
    test_class_info(&lv, &cd_S7864C5);
    dp->~S7864C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C5(Test_S7864C5, "S7864C5", ABISELECT(1072,616));

#else // __cplusplus

extern void _ZN7S7864C5C1Ev();
extern void _ZN7S7864C5D1Ev();
Name_Map name_map_S7864C5[] = {
  NSPAIR(_ZN7S7864C5C1Ev),
  NSPAIR(_ZN7S7864C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C9;
extern VTBL_ENTRY _ZTI7S7864C9[];
extern  VTBL_ENTRY _ZTV7S7864C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C7;
extern VTBL_ENTRY _ZTI7S7864C7[];
extern  VTBL_ENTRY _ZTV7S7864C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C7[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C9;
extern VTBL_ENTRY _ZTI7S7864C9[];
extern  VTBL_ENTRY _ZTV7S7864C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C9[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
static Base_Class bases_S7864C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(192,108), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(88,52), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    ABISELECT(696,392), //bcp->offset
    69, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(704,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(704,396), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(720,404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(768,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(768,432), //bcp->offset
    90, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(720,404), //bcp->offset
    82, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7864C11,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(560,316), //bcp->offset
    47, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(608,344), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7864C9,    ABISELECT(352,192), //bcp->offset
    39, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(624,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(672,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(672,376), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(624,348), //bcp->offset
    56, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7864C7,    ABISELECT(240,136), //bcp->offset
    29, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    ABISELECT(784,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7864C11,    ABISELECT(784,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(992,568), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(1040,596), //bcp->offset
    109, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7864C9,    ABISELECT(784,444), //bcp->offset
    96, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    ABISELECT(1048,600), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(48,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7864C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7864C5[];
extern void _ZN7S7864C5D1Ev();
extern void _ZN7S7864C5D0Ev();
extern void ABISELECT(_ZThn48_N7S7864C5D1Ev,_ZThn28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7864C5D0Ev,_ZThn28_N7S7864C5D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn88_N7S7864C5D1Ev,_ZThn52_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn88_N7S7864C5D0Ev,_ZThn52_N7S7864C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C5D1Ev,_ZTv0_n12_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn192_N7S7864C5D1Ev,_ZThn108_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C5D0Ev,_ZTv0_n12_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn192_N7S7864C5D0Ev,_ZThn108_N7S7864C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7864C5D1Ev,_ZTv0_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn240_N7S7864C5D1Ev,_ZThn136_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7864C5D0Ev,_ZTv0_n32_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn240_N7S7864C5D0Ev,_ZThn136_N7S7864C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N7S7864C5D1Ev,_ZTvn56_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S7864C5D0Ev,_ZTvn56_n32_N7S7864C5D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7864C5D1Ev,_ZTvn180_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7864C5D0Ev,_ZTvn180_n32_N7S7864C5D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7864C5D1Ev,_ZTvn208_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7864C5D0Ev,_ZTvn208_n32_N7S7864C5D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7864C5D1Ev,_ZTvn212_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7864C5D0Ev,_ZTvn212_n32_N7S7864C5D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7864C5D1Ev,_ZTvn240_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7864C5D0Ev,_ZTvn240_n32_N7S7864C5D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn696_N7S7864C5D1Ev,_ZThn392_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn696_N7S7864C5D0Ev,_ZThn392_N7S7864C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C5D1Ev,_ZTv0_n20_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn704_N7S7864C5D1Ev,_ZThn396_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C5D0Ev,_ZTv0_n20_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn704_N7S7864C5D0Ev,_ZThn396_N7S7864C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C5D1Ev,_ZTv0_n24_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn720_N7S7864C5D1Ev,_ZThn404_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C5D0Ev,_ZTv0_n24_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn720_N7S7864C5D0Ev,_ZThn404_N7S7864C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S7864C5D1Ev,_ZTvn28_n24_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C5D0Ev,_ZTvn28_n24_N7S7864C5D0Ev)();
extern void ABISELECT(_ZTv0_n56_N7S7864C5D1Ev,_ZTv0_n28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn784_N7S7864C5D1Ev,_ZThn444_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7864C5D0Ev,_ZTv0_n28_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn784_N7S7864C5D0Ev,_ZThn444_N7S7864C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N7S7864C5D1Ev,_ZTvn124_n28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S7864C5D0Ev,_ZTvn124_n28_N7S7864C5D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7864C5D1Ev,_ZTvn152_n28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7864C5D0Ev,_ZTvn152_n28_N7S7864C5D0Ev)();
static  VTBL_ENTRY vtc_S7864C5[] = {
  ABISELECT(1048,600),
  ABISELECT(784,444),
  ABISELECT(720,404),
  ABISELECT(704,396),
  ABISELECT(240,136),
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(696,392),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&_ZN7S7864C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C5D0Ev,
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7864C5D1Ev,_ZThn28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7864C5D0Ev,_ZThn28_N7S7864C5D0Ev),
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C5D1Ev,_ZTv0_n12_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C5D0Ev,_ZTv0_n12_N7S7864C5D0Ev),
  ABISELECT(-240,-136),
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C5D1Ev,_ZTv0_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C5D0Ev,_ZTv0_n32_N7S7864C5D0Ev),
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C5D1Ev,_ZTvn56_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C5D0Ev,_ZTvn56_n32_N7S7864C5D0Ev),
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C5D1Ev,_ZTvn180_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C5D0Ev,_ZTvn180_n32_N7S7864C5D0Ev),
  ABISELECT(-416,-236),
  ABISELECT(-608,-344),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C5D1Ev,_ZTvn208_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C5D0Ev,_ZTvn208_n32_N7S7864C5D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C5D1Ev,_ZTvn212_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C5D0Ev,_ZTvn212_n32_N7S7864C5D0Ev),
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C5D1Ev,_ZTvn240_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C5D0Ev,_ZTvn240_n32_N7S7864C5D0Ev),
  ABISELECT(-696,-392),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev),
  ABISELECT(-704,-396),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-704,-396),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C5D1Ev,_ZTv0_n20_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C5D0Ev,_ZTv0_n20_N7S7864C5D0Ev),
  ABISELECT(-720,-404),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-720,-404),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C5D1Ev,_ZTv0_n24_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C5D0Ev,_ZTv0_n24_N7S7864C5D0Ev),
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-768,-432),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C5D1Ev,_ZTvn28_n24_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C5D0Ev,_ZTvn28_n24_N7S7864C5D0Ev),
  ABISELECT(-784,-444),
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  ABISELECT(-784,-444),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C5D1Ev,_ZTv0_n28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C5D0Ev,_ZTv0_n28_N7S7864C5D0Ev),
  ABISELECT(-992,-568),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C5D1Ev,_ZTvn124_n28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C5D0Ev,_ZTvn124_n28_N7S7864C5D0Ev),
  ABISELECT(-848,-488),
  ABISELECT(-1040,-596),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C5D1Ev,_ZTvn152_n28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C5D0Ev,_ZTvn152_n28_N7S7864C5D0Ev),
};
extern VTBL_ENTRY _ZTV7S7864C5[];
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__A__7S7864C5[] = {
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(696,392),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A3__7S7864C5[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A10__7S7864C5[] = {
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn144_N7S7864C3D1Ev,_ZThn80_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn144_N7S7864C3D0Ev,_ZThn80_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A10__7S7864C5[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn40_N7S7864C8D1Ev,_ZThn24_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn40_N7S7864C8D0Ev,_ZThn24_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__A3__7S7864C5[] = {
  ABISELECT(-40,-24),
  ABISELECT(104,56),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn144_N7S7864C8D1Ev,_ZThn80_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn144_N7S7864C8D0Ev,_ZThn80_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__A3__7S7864C5[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn696_N8S7864C10D1Ev,_ZThn392_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn696_N8S7864C10D0Ev,_ZThn392_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__A__7S7864C5[] = {
  ABISELECT(-696,-392),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn192_N8S7864C10D1Ev,_ZThn108_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn192_N8S7864C10D0Ev,_ZThn108_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__A__7S7864C5[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn88_N8S7864C10D1Ev,_ZThn52_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn88_N8S7864C10D0Ev,_ZThn52_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__A__7S7864C5[] = {
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__A__7S7864C5[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C5[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__7S7864C5[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7864C3D1Ev,_ZThn56_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7864C3D0Ev,_ZThn56_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__7S7864C5[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZThn104_N7S7864C6D1Ev,_ZThn56_N7S7864C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
extern void ABISELECT(_ZThn104_N7S7864C6D0Ev,_ZThn56_N7S7864C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__7S7864C5[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern void _ZN7S7864C7D1Ev();
extern void _ZN7S7864C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C7__7S7864C5[] = {
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&_ZN7S7864C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C7D0Ev,
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C67S7864C7__A1__7S7864C5[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C67S7864C7__A3__7S7864C5[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C67S7864C7__A3__7S7864C5[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C67S7864C7__A1__7S7864C5[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern void _ZN7S7864C9D1Ev();
extern void _ZN7S7864C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&_ZN7S7864C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C9D0Ev,
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C117S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C5[] = {
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C5[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C117S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C117S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C5[] = {
  ABISELECT(-416,-236),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C97S7864C7__A6__7S7864C5[] = {
  ABISELECT(416,236),
  ABISELECT(416,236),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C9D1Ev,_ZThn212_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn368_N7S7864C9D0Ev,_ZThn212_N7S7864C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(-368,-212),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn344_N7S7864C9D1Ev,_ZThn200_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn344_N7S7864C9D0Ev,_ZThn200_N7S7864C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(-344,-200),
  ABISELECT(-504,-284),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__7S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A__7S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(-416,-236),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C107S7864C7__A1__7S7864C5[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C5[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C5[] = {
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C5[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C107S7864C7__A2__7S7864C5[] = {
  ABISELECT(584,324),
  ABISELECT(104,56),
  ABISELECT(584,324),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C107S7864C7__A2__7S7864C5[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn72_N8S7864C10D1Ev,_ZThn44_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn72_N8S7864C10D0Ev,_ZThn44_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C107S7864C7__A1__7S7864C5[] = {
  ABISELECT(-72,-44),
  ABISELECT(-504,-284),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C107S7864C7__A1__7S7864C5[] = {
  ABISELECT(432,240),
  ABISELECT(432,240),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C107S7864C7__A1__7S7864C5[] = {
  ABISELECT(536,296),
  ABISELECT(104,56),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C107S7864C7__A1__7S7864C5[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn456_N7S7864C7D1Ev,_ZThn256_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn456_N7S7864C7D0Ev,_ZThn256_N7S7864C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C3__7S7864C7__7S7864C5[] = {
  ABISELECT(-456,-256),
  ABISELECT(-504,-284),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C7D1Ev,_ZTv0_n12_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C7D0Ev,_ZTv0_n12_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C7__7S7864C5[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C7D1Ev,_ZTv0_n12_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C7D0Ev,_ZTv0_n12_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn464_N7S7864C7D1Ev,_ZThn260_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn464_N7S7864C7D0Ev,_ZThn260_N7S7864C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C7__7S7864C5[] = {
  ABISELECT(-464,-260),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C7__7S7864C5[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn112_N7S7864C7D1Ev,_ZThn56_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C7D0Ev,_ZThn56_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C9__7S7864C7__7S7864C5[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C7D1Ev,_ZThn56_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C7D0Ev,_ZThn56_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn480_N7S7864C7D1Ev,_ZThn268_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn480_N7S7864C7D0Ev,_ZThn268_N7S7864C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C7__7S7864C5[] = {
  ABISELECT(-480,-268),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-480,-268),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C7D1Ev,_ZTvn28_n24_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C7D0Ev,_ZTvn28_n24_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C7__7S7864C5[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C7D1Ev,_ZTvn28_n24_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C7D0Ev,_ZTvn28_n24_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn368_N7S7864C7D1Ev,_ZThn208_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C7D0Ev,_ZThn208_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A6__7S7864C7__7S7864C5[] = {
  ABISELECT(-416,-236),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7864C7D1Ev,_ZThn208_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7864C7D0Ev,_ZThn208_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn384_N7S7864C7D1Ev,_ZThn212_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn384_N7S7864C7D0Ev,_ZThn212_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C10__A__7S7864C7__7S7864C5[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7864C7D1Ev,_ZThn212_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7864C7D0Ev,_ZThn212_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn432_N7S7864C7D1Ev,_ZThn240_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn432_N7S7864C7D0Ev,_ZThn240_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A2__7S7864C7__7S7864C5[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7864C7D1Ev,_ZThn240_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7864C7D0Ev,_ZThn240_N7S7864C7D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C5[] = {
  ABISELECT(-504,-284),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__A1__7S7864C5[] = {
  ABISELECT(504,284),
  ABISELECT(504,284),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C5[] = {
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C8__A2__7S7864C5[] = {
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C8__A2__7S7864C5[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C8__7S7864C5[] = {
  ABISELECT(616,344),
  ABISELECT(104,56),
  ABISELECT(616,344),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C8__7S7864C5[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C5[] = {
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C5[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A4__7S7864C5[] = {
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A4__7S7864C5[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__A1__7S7864C5[] = {
  ABISELECT(680,380),
  ABISELECT(104,56),
  ABISELECT(680,380),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__A1__7S7864C5[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__7S7864C5[] = {
  ABISELECT(24,12),
  ABISELECT(-504,-284),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__7S7864C5[] = {
  ABISELECT(528,296),
  ABISELECT(528,296),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__7S7864C5[] = {
  ABISELECT(632,352),
  ABISELECT(104,56),
  ABISELECT(632,352),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__7S7864C5[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void _ZN7S7864C9D1Ev();
extern void _ZN7S7864C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C9__A1__7S7864C5[] = {
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&_ZN7S7864C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C9D0Ev,
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C117S7864C9__A1__7S7864C5[] = {
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C117S7864C9__A8__7S7864C5[] = {
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C117S7864C9__A8__7S7864C5[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C117S7864C9__A1__7S7864C5[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C117S7864C9__A1__7S7864C5[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A9__7S7864C5[] = {
  ABISELECT(-848,-488),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C9__A9__7S7864C5[] = {
  ABISELECT(848,488),
  ABISELECT(848,488),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C9__A1__7S7864C5[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C9__A1__7S7864C5[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C9__A1__7S7864C5[] = {
  ABISELECT(64,40),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C9__A1__7S7864C5[] = {
  ABISELECT(88,52),
  ABISELECT(-504,-284),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__7S7864C9__A1__7S7864C5[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A__7S7864C9__A1__7S7864C5[] = {
  ABISELECT(-848,-488),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev),
};
static  VTT_ENTRY vtt_S7864C5[] = {
  {&(_ZTV7S7864C5[10]),  10,114},
  {&(_tg__ZTV8S7864C10__A__7S7864C5[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__A3__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A10__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A10__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__A3__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__A3__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__A__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__A__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__A__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__A__7S7864C5[4]),  4,6},
  {&(_ZTV7S7864C5[22]),  22,114},
  {&(_ZTV7S7864C5[27]),  27,114},
  {&(_ZTV7S7864C5[37]),  37,114},
  {&(_ZTV7S7864C5[73]),  73,114},
  {&(_ZTV7S7864C5[80]),  80,114},
  {&(_ZTV7S7864C5[45]),  45,114},
  {&(_ZTV7S7864C5[88]),  88,114},
  {&(_ZTV7S7864C5[94]),  94,114},
  {&(_ZTV7S7864C5[49]),  49,114},
  {&(_ZTV7S7864C5[54]),  54,114},
  {&(_ZTV7S7864C5[61]),  61,114},
  {&(_ZTV7S7864C5[67]),  67,114},
  {&(_ZTV7S7864C5[103]),  103,114},
  {&(_ZTV7S7864C5[107]),  107,114},
  {&(_ZTV7S7864C5[112]),  112,114},
  {&(_ZTV7S7864C5[16]),  16,114},
  {&(_tg__ZTV7S7864C6__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C7__7S7864C5[7]),  7,9},
  {&(_tg__ZTV7S7864C67S7864C7__A1__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C67S7864C7__A3__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C67S7864C7__A3__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C67S7864C7__A1__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C97S7864C7__7S7864C5[6]),  6,8},
  {&(_tg__ZTV8S7864C117S7864C97S7864C7__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C117S7864C97S7864C7__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C117S7864C97S7864C7__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C97S7864C7__A6__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C97S7864C7__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C97S7864C7__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C97S7864C7__7S7864C5[6]),  6,8},
  {&(_tg__ZTV7S7864C3__A1__7S7864C97S7864C7__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__7S7864C97S7864C7__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A__7S7864C97S7864C7__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S7864C107S7864C7__A1__7S7864C5[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C107S7864C7__A2__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C107S7864C7__A2__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C107S7864C7__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C107S7864C7__A1__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C107S7864C7__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C107S7864C7__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C3__7S7864C7__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C7__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C8__7S7864C7__7S7864C5[5]),  5,7},
  {&(_tg__ZTV7S7864C6__7S7864C7__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C9__7S7864C7__7S7864C5[6]),  6,8},
  {&(_tg__ZTV8S7864C10__7S7864C7__7S7864C5[6]),  6,8},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C7__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C9__A6__7S7864C7__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S7864C10__A__7S7864C7__7S7864C5[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__A2__7S7864C7__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A1__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__A1__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C8__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C8__A2__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C8__A2__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C8__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C8__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C5[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A4__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A4__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__A1__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C9__A1__7S7864C5[6]),  6,8},
  {&(_tg__ZTV8S7864C117S7864C9__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C117S7864C9__A8__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C117S7864C9__A8__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C117S7864C9__A1__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C117S7864C9__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C9__A9__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C9__A9__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C9__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C9__A1__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C9__A1__7S7864C5[6]),  6,8},
  {&(_tg__ZTV7S7864C3__A1__7S7864C9__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__7S7864C9__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A__7S7864C9__A1__7S7864C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7864C5[];
extern  VTBL_ENTRY _ZTV7S7864C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C5[];
static VTBL_ENTRY alt_thunk_names132[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7864C7D0Ev,_ZThn268_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7864C7D1Ev,_ZThn268_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7864C7D0Ev,_ZThn260_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7864C7D1Ev,_ZThn260_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C7D0Ev,_ZThn256_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C7D1Ev,_ZThn256_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7864C9D0Ev,_ZThn200_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7864C9D1Ev,_ZThn200_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C9D0Ev,_ZThn212_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C9D1Ev,_ZThn212_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7864C6D0Ev,_ZThn56_N7S7864C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7864C6D1Ev,_ZThn56_N7S7864C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7864C10D0Ev,_ZThn108_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7864C10D1Ev,_ZThn108_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7864C10D0Ev,_ZThn44_N8S7864C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7864C10D0Ev,_ZThn52_N8S7864C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S7864C10D0Ev,_ZThn392_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7864C10D1Ev,_ZThn44_N8S7864C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7864C10D1Ev,_ZThn52_N8S7864C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S7864C10D1Ev,_ZThn392_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7864C8D0Ev,_ZThn80_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7864C8D1Ev,_ZThn80_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7864C8D0Ev,_ZThn24_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7864C8D1Ev,_ZThn24_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7864C3D0Ev,_ZThn56_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7864C3D0Ev,_ZThn80_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7864C3D1Ev,_ZThn56_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7864C3D1Ev,_ZThn80_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C5D0Ev,_ZTv0_n28_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N7S7864C5D0Ev,_ZThn444_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C5D1Ev,_ZTv0_n28_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N7S7864C5D1Ev,_ZThn444_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C5D0Ev,_ZTv0_n24_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N7S7864C5D0Ev,_ZThn404_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C5D1Ev,_ZTv0_n24_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N7S7864C5D1Ev,_ZThn404_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C5D0Ev,_ZTv0_n20_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N7S7864C5D0Ev,_ZThn396_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C5D1Ev,_ZTv0_n20_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N7S7864C5D1Ev,_ZThn396_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C5D0Ev,_ZTv0_n32_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7864C5D0Ev,_ZThn136_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C5D1Ev,_ZTv0_n32_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7864C5D1Ev,_ZThn136_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C5D0Ev,_ZTv0_n12_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7864C5D0Ev,_ZThn108_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C5D1Ev,_ZTv0_n12_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7864C5D1Ev,_ZThn108_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N7S7864C5D0Ev,_ZThn392_N7S7864C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7864C5D0Ev,_ZThn52_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N7S7864C5D1Ev,_ZThn392_N7S7864C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7864C5D1Ev,_ZThn52_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C5 = {  "S7864C5", // class name
  bases_S7864C5, 32,
  &(vtc_S7864C5[0]), // expected_vtbl_contents
  &(vtt_S7864C5[0]), // expected_vtt_contents
  ABISELECT(1072,616), // object size
  NSPAIRA(_ZTI7S7864C5),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7864C5),114, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7864C5),101, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names132,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C15  : virtual S7864C3 , virtual S7864C10 , virtual S19676C2 {
  int s7864c15f0;
  virtual  ~S7864C15(); // _ZN8S7864C15D2Ev
  S7864C15(); // tgen
};
//SIG(-1 S7864C15) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ BC3 VBC2 VBC5{ VBC3 BC2 Fp[10] Fi FL} BC6{ VBC5 BC2 vd Fi} vd Fi} VBC7{ m FC8{} Fi[3]} vd Fi}


 S7864C15 ::~S7864C15(){ note_dtor("S7864C15", this);}
S7864C15 ::S7864C15(){ note_ctor("S7864C15", this);} // tgen

static void Test_S7864C15()
{
  extern Class_Descriptor cd_S7864C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,38)];
    init_test(&cd_S7864C15, buf);
    S7864C15 *dp, &lv = *(dp=new (buf) S7864C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,148), "sizeof(S7864C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C15)");
    /*is_ambiguous_... S7864C15::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(16,8), "S7864C15");
    check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(16,8), "S7864C15");
    check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(16,8), "S7864C15");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(16,8), "S7864C15");
    /*is_ambiguous_... S7864C15::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*), 0, "S7864C15");
    /*is_ambiguous_... S7864C10::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), 0, "S7864C15");
    /*is_ambiguous_... S7864C10::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), ABISELECT(64,36), "S7864C15");
    check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(128,76), "S7864C15");
    check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(128,76), "S7864C15");
    check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(128,76), "S7864C15");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(112,64), "S7864C15");
    check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(112,64), "S7864C15");
    check_base_class_offset(lv, (S7864C10*), ABISELECT(64,36), "S7864C15");
    check_base_class_offset(lv, (S19676C2*), ABISELECT(232,132), "S7864C15");
    check_field_offset(lv, s7864c15f0, ABISELECT(8,4), "S7864C15.s7864c15f0");
    test_class_info(&lv, &cd_S7864C15);
    dp->~S7864C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C15(Test_S7864C15, "S7864C15", ABISELECT(256,148));

#else // __cplusplus

extern void _ZN8S7864C15C1Ev();
extern void _ZN8S7864C15D2Ev();
Name_Map name_map_S7864C15[] = {
  NSPAIR(_ZN8S7864C15C1Ev),
  NSPAIR(_ZN8S7864C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
static Base_Class bases_S7864C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7864C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(128,76), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(112,64), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(64,36), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    ABISELECT(232,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7864C15[];
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void _ZN8S7864C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void _ZN8S7864C15D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn16_N8S7864C15D1Ev,_ZThn8_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn16_N8S7864C15D0Ev,_ZThn8_N8S7864C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn64_N8S7864C15D1Ev,_ZThn36_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn64_N8S7864C15D0Ev,_ZThn36_N8S7864C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn128_N8S7864C15D1Ev,_ZThn76_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn128_N8S7864C15D0Ev,_ZThn76_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C15[] = {
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(64,36),
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev),
  ABISELECT(-128,-76),
  ABISELECT(-112,-68),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern VTBL_ENTRY _ZTV8S7864C15[];
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C15[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7864C3D1Ev,_ZThn8_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7864C3D0Ev,_ZThn8_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__8S7864C15[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C15[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C15[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A2__8S7864C15[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A2__8S7864C15[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn12_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn12_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__8S7864C15[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__8S7864C15[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__8S7864C15[] = {
  ABISELECT(64,36),
  ABISELECT(16,8),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__8S7864C15[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__8S7864C15[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__8S7864C15[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C15[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__A1__8S7864C15[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__A1__8S7864C15[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__8S7864C15[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
static  VTT_ENTRY vtt_S7864C15[] = {
  {&(_ZTV8S7864C15[8]),  8,35},
  {&(_ZTV8S7864C15[8]),  8,35},
  {&(_ZTV8S7864C15[13]),  13,35},
  {&(_ZTV8S7864C15[21]),  21,35},
  {&(_ZTV8S7864C15[33]),  33,35},
  {&(_ZTV8S7864C15[27]),  27,35},
  {&(_tg__ZTV7S7864C3__8S7864C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__8S7864C15[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C15[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C15[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A2__8S7864C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A2__8S7864C15[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__8S7864C15[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__8S7864C15[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__8S7864C15[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__8S7864C15[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__8S7864C15[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__8S7864C15[4]),  4,6},
  {&(_tg__ZTV7S7864C6__8S7864C15[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__A1__8S7864C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__A1__8S7864C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__8S7864C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7864C15[];
extern  VTBL_ENTRY _ZTV8S7864C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C15[];
static VTBL_ENTRY alt_thunk_names133[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn12_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn12_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C3D0Ev,_ZThn8_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C3D1Ev,_ZThn8_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C15D0Ev,_ZThn36_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C15D1Ev,_ZThn36_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7864C15D0Ev,_ZThn8_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7864C15D1Ev,_ZThn8_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7864C15D0Ev,_ZThn76_N8S7864C15D0Ev),
  (VTBL_ENTRY)_ZN8S7864C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7864C15D1Ev,_ZThn76_N8S7864C15D1Ev),
  (VTBL_ENTRY)_ZN8S7864C15D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C15 = {  "S7864C15", // class name
  bases_S7864C15, 9,
  &(vtc_S7864C15[0]), // expected_vtbl_contents
  &(vtt_S7864C15[0]), // expected_vtt_contents
  ABISELECT(256,148), // object size
  NSPAIRA(_ZTI8S7864C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7864C15),35, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7864C15),22, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names133,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C14  : S19676C2 , S7864C15 {
  ::S7864C3 s7864c14f0;
  int s7864c14f1;
  ~S7864C14(); // tgen
  S7864C14(); // tgen
};
//SIG(-1 S7864C14) C1{ BC2{ m FC3{} Fi[3]} BC4{ VBC5{ VBC6{ vd m Fp Fi Fc FD} vd} VBC7{ BC6 VBC5 VBC8{ VBC6 BC5 Fp[10] Fi FL} BC9{ VBC8 BC5 vd Fi} vd Fi} VBC2 vd Fi} FC5 Fi}


S7864C14 ::~S7864C14(){ note_dtor("S7864C14", this);} // tgen
S7864C14 ::S7864C14(){ note_ctor("S7864C14", this);} // tgen

static void Test_S7864C14()
{
  extern Class_Descriptor cd_S7864C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,51)];
    init_test(&cd_S7864C14, buf);
    S7864C14 *dp, &lv = *(dp=new (buf) S7864C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,200), "sizeof(S7864C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C14)");
    /*is_ambiguous_... S7864C14::S19676C2 */ AMB_check_base_class_offset(lv, (S19676C2*), ABISELECT(12,8), "S7864C14");
    /*is_ambiguous_... S7864C14::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(112,60), "S7864C14");
    check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(112,60), "S7864C14");
    check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(112,60), "S7864C14");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(112,60), "S7864C14");
    /*is_ambiguous_... S7864C15::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C15*), 0, "S7864C14");
    /*is_ambiguous_... S7864C10::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), 0, "S7864C14");
    /*is_ambiguous_... S7864C10::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), ABISELECT(160,88), "S7864C14");
    check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(224,128), "S7864C14");
    check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(224,128), "S7864C14");
    check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(224,128), "S7864C14");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(208,116), "S7864C14");
    check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(208,116), "S7864C14");
    check_base_class_offset(lv, (S7864C10*)(S7864C15*), ABISELECT(160,88), "S7864C14");
    check_base_class_offset(lv, (S19676C2*)(S7864C15*), ABISELECT(328,184), "S7864C14");
    check_base_class_offset(lv, (S7864C15*), 0, "S7864C14");
    check_field_offset(lv, s7864c14f0, ABISELECT(32,24), "S7864C14.s7864c14f0");
    check_field_offset(lv, s7864c14f1, ABISELECT(96,56), "S7864C14.s7864c14f1");
    test_class_info(&lv, &cd_S7864C14);
    dp->~S7864C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C14(Test_S7864C14, "S7864C14", ABISELECT(352,200));

#else // __cplusplus

extern void _ZN8S7864C14C1Ev();
extern void _ZN8S7864C14D1Ev();
Name_Map name_map_S7864C14[] = {
  NSPAIR(_ZN8S7864C14C1Ev),
  NSPAIR(_ZN8S7864C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S7864C15;
extern VTBL_ENTRY _ZTI8S7864C15[];
extern  VTBL_ENTRY _ZTV8S7864C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C15[];
static Base_Class bases_S7864C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C2,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(112,60), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7864C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19676C9,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(224,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(224,128), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(208,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(208,116), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(160,88), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(328,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7864C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7864C14[];
extern void ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev)();
extern void _ZN8S7864C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev)();
extern void _ZN8S7864C14D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C14D1Ev,_ZTv0_n12_N8S7864C14D1Ev)();
extern void ABISELECT(_ZThn112_N8S7864C14D1Ev,_ZThn60_N8S7864C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C14D0Ev,_ZTv0_n12_N8S7864C14D0Ev)();
extern void ABISELECT(_ZThn112_N8S7864C14D0Ev,_ZThn60_N8S7864C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C14D1Ev,_ZTv0_n24_N8S7864C14D1Ev)();
extern void ABISELECT(_ZThn160_N8S7864C14D1Ev,_ZThn88_N8S7864C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C14D0Ev,_ZTv0_n24_N8S7864C14D0Ev)();
extern void ABISELECT(_ZThn160_N8S7864C14D0Ev,_ZThn88_N8S7864C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S7864C14D1Ev,_ZTvn28_n24_N8S7864C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C14D0Ev,_ZTvn28_n24_N8S7864C14D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev)();
extern void ABISELECT(_ZThn224_N8S7864C14D1Ev,_ZThn128_N8S7864C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev)();
extern void ABISELECT(_ZThn224_N8S7864C14D0Ev,_ZThn128_N8S7864C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C14[] = {
  ABISELECT(328,184),
  ABISELECT(224,128),
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C14D1Ev,_ZTv0_n12_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C14D0Ev,_ZTv0_n12_N8S7864C14D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C14D1Ev,_ZTv0_n24_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C14D0Ev,_ZTv0_n24_N8S7864C14D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C14D1Ev,_ZTvn28_n24_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C14D0Ev,_ZTvn28_n24_N8S7864C14D0Ev),
  ABISELECT(-224,-128),
  ABISELECT(-112,-68),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S7864C14[];
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void _ZN8S7864C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void _ZN8S7864C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C15__8S7864C14[] = {
  ABISELECT(328,184),
  ABISELECT(224,128),
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn112_N8S7864C15D1Ev,_ZThn60_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn112_N8S7864C15D0Ev,_ZThn60_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C15__8S7864C14[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn160_N8S7864C15D1Ev,_ZThn88_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn160_N8S7864C15D0Ev,_ZThn88_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C15__8S7864C14[] = {
  ABISELECT(-160,-88),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn224_N8S7864C15D1Ev,_ZThn128_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn224_N8S7864C15D0Ev,_ZThn128_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C15__8S7864C14[] = {
  ABISELECT(-224,-128),
  ABISELECT(-112,-68),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C15__8S7864C14[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C14[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn60_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn60_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__8S7864C14[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C14[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C14[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A2__8S7864C14[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A2__8S7864C14[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn12_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn12_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__8S7864C14[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__8S7864C14[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__8S7864C14[] = {
  ABISELECT(160,88),
  ABISELECT(112,60),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__8S7864C14[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__8S7864C14[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__8S7864C14[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C14[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__A1__8S7864C14[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__A1__8S7864C14[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__8S7864C14[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
static  VTT_ENTRY vtt_S7864C14[] = {
  {&(_ZTV8S7864C14[8]),  8,35},
  {&(_tg__ZTV8S7864C15__8S7864C14[8]),  8,10},
  {&(_tg__ZTV8S7864C15__8S7864C14[8]),  8,10},
  {&(_tg__ZTV8S19676C9__8S7864C15__8S7864C14[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C15__8S7864C14[6]),  6,8},
  {&(_tg__ZTV7S7864C6__8S7864C15__8S7864C14[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C15__8S7864C14[4]),  4,6},
  {&(_ZTV8S7864C14[8]),  8,35},
  {&(_ZTV8S7864C14[13]),  13,35},
  {&(_ZTV8S7864C14[21]),  21,35},
  {&(_ZTV8S7864C14[33]),  33,35},
  {&(_ZTV8S7864C14[27]),  27,35},
  {&(_tg__ZTV7S7864C3__8S7864C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__8S7864C14[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C14[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C14[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A2__8S7864C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A2__8S7864C14[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__8S7864C14[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__8S7864C14[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__8S7864C14[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__8S7864C14[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__8S7864C14[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__8S7864C14[4]),  4,6},
  {&(_tg__ZTV7S7864C6__8S7864C14[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__A1__8S7864C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__A1__8S7864C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__8S7864C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7864C14[];
extern  VTBL_ENTRY _ZTV8S7864C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C14[];
static VTBL_ENTRY alt_thunk_names134[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn12_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn12_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn60_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn60_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7864C15D0Ev,_ZThn88_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7864C15D1Ev,_ZThn88_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7864C15D0Ev,_ZThn60_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7864C15D1Ev,_ZThn60_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7864C15D0Ev,_ZThn128_N8S7864C15D0Ev),
  (VTBL_ENTRY)_ZN8S7864C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7864C15D1Ev,_ZThn128_N8S7864C15D1Ev),
  (VTBL_ENTRY)_ZN8S7864C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C14D0Ev,_ZTv0_n24_N8S7864C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7864C14D0Ev,_ZThn88_N8S7864C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C14D1Ev,_ZTv0_n24_N8S7864C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7864C14D1Ev,_ZThn88_N8S7864C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C14D0Ev,_ZTv0_n12_N8S7864C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7864C14D0Ev,_ZThn60_N8S7864C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C14D1Ev,_ZTv0_n12_N8S7864C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7864C14D1Ev,_ZThn60_N8S7864C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7864C14D0Ev,_ZThn128_N8S7864C14D0Ev),
  (VTBL_ENTRY)_ZN8S7864C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7864C14D1Ev,_ZThn128_N8S7864C14D1Ev),
  (VTBL_ENTRY)_ZN8S7864C14D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C14 = {  "S7864C14", // class name
  bases_S7864C14, 11,
  &(vtc_S7864C14[0]), // expected_vtbl_contents
  &(vtt_S7864C14[0]), // expected_vtt_contents
  ABISELECT(352,200), // object size
  NSPAIRA(_ZTI8S7864C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7864C14),35, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7864C14),28, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names134,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C2  : virtual S7864C3 , virtual S7864C5 , virtual S7864C11 , S7864C14 {
  virtual  ~S7864C2(); // _ZN7S7864C2D2Ev
  S7864C2(); // tgen
};
//SIG(-1 S7864C2) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ VBC5{ VBC3 BC2 Fp[10] Fi FL} VBC6{ VBC2 VBC7{ VBC5 BC2 vd Fi} BC5 BC8{ VBC5 VBC9{ BC3 VBC2 VBC5 BC7 vd Fi} BC10{ VBC3 VBC5 BC2 vd Fp Fi FC3[3] Fi[7]} BC3 BC2 vd} BC9 vd Fs} VBC8 VBC11{ m FC12{} Fi[3]} BC9 Fs Fp[2]} VBC10 BC13{ BC11 BC14{ VBC2 VBC9 VBC11 vd Fi} FC2 Fi} vd}


 S7864C2 ::~S7864C2(){ note_dtor("S7864C2", this);}
S7864C2 ::S7864C2(){ note_ctor("S7864C2", this);} // tgen

static void Test_S7864C2()
{
  extern Class_Descriptor cd_S7864C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(88,200)];
    init_test(&cd_S7864C2, buf);
    S7864C2 *dp, &lv = *(dp=new (buf) S7864C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1392,796), "sizeof(S7864C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C2)");
    /*is_ambiguous_... S7864C2::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C6*)(S7864C7*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*)(S7864C7*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(112,60), "S7864C2");
    check_base_class_offset(lv, (S19676C9*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C9*)(S7864C7*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C11*)(S7864C9*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*)(S7864C9*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C9*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*)(S7864C5*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C11*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*), 0, "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C7*), 0, "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), 0, "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*)(S7864C7*), 0, "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*)(S7864C5*), 0, "S7864C2");
    /*is_ambiguous_... S7864C15::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C15*)(S7864C14*), 0, "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C5*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*), ABISELECT(248,140), "S7864C2");
    check_base_class_offset(lv, (S7864C6*)(S7864C9*)(S7864C7*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(248,140), "S7864C2");
    check_base_class_offset(lv, (S7864C6*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*)(S7864C7*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C9*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C11*)(S7864C9*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*)(S7864C5*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*)(S7864C5*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C11 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C11*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*), ABISELECT(808,452), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C7*), ABISELECT(808,452), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C6*)(S7864C7*), ABISELECT(352,196), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C7*), ABISELECT(352,196), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), ABISELECT(832,460), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(880,488), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(880,488), "S7864C2");
    check_base_class_offset(lv, (S7864C10*)(S7864C9*)(S7864C7*), ABISELECT(832,460), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C10*)(S7864C9*), ABISELECT(832,460), "S7864C2");
    check_base_class_offset(lv, (S7864C10*)(S7864C15*)(S7864C14*), ABISELECT(832,460), "S7864C2");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(464,252), "S7864C2");
    check_base_class_offset(lv, (S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(464,252), "S7864C2");
    /*is_ambiguous_... S7864C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C9*)(S7864C7*), ABISELECT(672,376), "S7864C2");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C9*)(S7864C7*), ABISELECT(720,404), "S7864C2");
    check_base_class_offset(lv, (S7864C9*)(S7864C7*), ABISELECT(464,252), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*)(S7864C7*), ABISELECT(736,408), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(784,436), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(784,436), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C10*)(S7864C7*), ABISELECT(736,408), "S7864C2");
    check_base_class_offset(lv, (S7864C7*)(S7864C5*), ABISELECT(352,196), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*)(S7864C9*), ABISELECT(896,500), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C11*)(S7864C9*), ABISELECT(896,500), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C9*), ABISELECT(1104,624), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C9*), ABISELECT(1152,652), "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C9*)(S7864C5*), ABISELECT(896,500), "S7864C2");
    check_base_class_offset(lv, (S19676C2*)(S7864C5*), ABISELECT(1160,656), "S7864C2");
    check_base_class_offset(lv, (S19676C2*)(S7864C15*)(S7864C14*), ABISELECT(1160,656), "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*)(S7864C5*), ABISELECT(160,88), "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*)(S7864C5*), ABISELECT(208,116), "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*)(S7864C5*), ABISELECT(208,116), "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C10*)(S7864C5*), ABISELECT(160,88), "S7864C2");
    check_base_class_offset(lv, (S7864C5*), ABISELECT(160,88), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C11 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*), ABISELECT(1184,672), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C11 */ AMB_check_base_class_offset(lv, (S7864C11*), ABISELECT(1184,672), "S7864C2");
    /*is_ambiguous_... S7864C14::S19676C2 */ AMB_check_base_class_offset(lv, (S19676C2*)(S7864C14*), ABISELECT(12,8), "S7864C2");
    check_base_class_offset(lv, (S7864C15*)(S7864C14*), 0, "S7864C2");
    check_base_class_offset(lv, (S7864C14*), 0, "S7864C2");
    test_class_info(&lv, &cd_S7864C2);
    dp->~S7864C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C2(Test_S7864C2, "S7864C2", ABISELECT(1392,796));

#else // __cplusplus

extern void _ZN7S7864C2C1Ev();
extern void _ZN7S7864C2D2Ev();
Name_Map name_map_S7864C2[] = {
  NSPAIR(_ZN7S7864C2C1Ev),
  NSPAIR(_ZN7S7864C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C9;
extern VTBL_ENTRY _ZTI7S7864C9[];
extern  VTBL_ENTRY _ZTV7S7864C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C7;
extern VTBL_ENTRY _ZTI7S7864C7[];
extern  VTBL_ENTRY _ZTV7S7864C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C7[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C9;
extern VTBL_ENTRY _ZTI7S7864C9[];
extern  VTBL_ENTRY _ZTV7S7864C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C9[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C5;
extern VTBL_ENTRY _ZTI7S7864C5[];
extern  VTBL_ENTRY _ZTV7S7864C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C5[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S7864C15;
extern VTBL_ENTRY _ZTI8S7864C15[];
extern  VTBL_ENTRY _ZTV8S7864C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C15[];
extern Class_Descriptor cd_S7864C14;
extern VTBL_ENTRY _ZTI8S7864C14[];
extern  VTBL_ENTRY _ZTV8S7864C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C14[];
static Base_Class bases_S7864C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(112,60), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7864C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    ABISELECT(248,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(248,140), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(808,452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(808,452), //bcp->offset
    85, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(352,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(352,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(832,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(880,488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(880,488), //bcp->offset
    100, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(832,460), //bcp->offset
    92, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(464,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7864C11,    ABISELECT(464,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(672,376), //bcp->offset
    63, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(720,404), //bcp->offset
    67, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7864C9,    ABISELECT(464,252), //bcp->offset
    55, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(736,408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(784,436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(784,436), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(736,408), //bcp->offset
    72, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7864C7,    ABISELECT(352,196), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(896,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7864C11,    ABISELECT(896,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1104,624), //bcp->offset
    115, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(1152,652), //bcp->offset
    119, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7864C9,    ABISELECT(896,500), //bcp->offset
    106, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(1160,656), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19676C9,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(208,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(208,116), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7864C5,    ABISELECT(160,88), //bcp->offset
    20, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    ABISELECT(1184,672), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7864C11,    ABISELECT(1184,672), //bcp->offset
    124, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7864C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7864C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7864C2[];
extern void ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev)();
extern void _ZN7S7864C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev)();
extern void _ZN7S7864C2D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C2D1Ev,_ZTv0_n12_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C2D1Ev,_ZThn60_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C2D0Ev,_ZTv0_n12_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S7864C2D0Ev,_ZThn60_N7S7864C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7864C2D1Ev,_ZTv0_n44_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn160_N7S7864C2D1Ev,_ZThn88_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7864C2D0Ev,_ZTv0_n44_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn160_N7S7864C2D0Ev,_ZThn88_N7S7864C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n88_N7S7864C2D1Ev,_ZTvn28_n44_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N7S7864C2D0Ev,_ZTvn28_n44_N7S7864C2D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn248_N7S7864C2D1Ev,_ZThn140_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn248_N7S7864C2D0Ev,_ZThn140_N7S7864C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7864C2D1Ev,_ZTv0_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn352_N7S7864C2D1Ev,_ZThn196_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7864C2D0Ev,_ZTv0_n32_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn352_N7S7864C2D0Ev,_ZThn196_N7S7864C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N7S7864C2D1Ev,_ZTvn56_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S7864C2D0Ev,_ZTvn56_n32_N7S7864C2D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7864C2D1Ev,_ZTvn180_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7864C2D0Ev,_ZTvn180_n32_N7S7864C2D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7864C2D1Ev,_ZTvn208_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7864C2D0Ev,_ZTvn208_n32_N7S7864C2D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7864C2D1Ev,_ZTvn212_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7864C2D0Ev,_ZTvn212_n32_N7S7864C2D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7864C2D1Ev,_ZTvn240_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7864C2D0Ev,_ZTvn240_n32_N7S7864C2D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn808_N7S7864C2D1Ev,_ZThn452_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn808_N7S7864C2D0Ev,_ZThn452_N7S7864C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C2D1Ev,_ZTv0_n24_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn832_N7S7864C2D1Ev,_ZThn460_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C2D0Ev,_ZTv0_n24_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn832_N7S7864C2D0Ev,_ZThn460_N7S7864C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S7864C2D1Ev,_ZTvn28_n24_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C2D0Ev,_ZTvn28_n24_N7S7864C2D0Ev)();
extern void ABISELECT(_ZTv0_n56_N7S7864C2D1Ev,_ZTv0_n28_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn896_N7S7864C2D1Ev,_ZThn500_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7864C2D0Ev,_ZTv0_n28_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn896_N7S7864C2D0Ev,_ZThn500_N7S7864C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N7S7864C2D1Ev,_ZTvn124_n28_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S7864C2D0Ev,_ZTvn124_n28_N7S7864C2D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7864C2D1Ev,_ZTvn152_n28_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7864C2D0Ev,_ZTvn152_n28_N7S7864C2D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn1184_N7S7864C2D1Ev,_ZThn672_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn1184_N7S7864C2D0Ev,_ZThn672_N7S7864C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C2[] = {
  ABISELECT(1184,672),
  ABISELECT(896,500),
  ABISELECT(808,452),
  ABISELECT(352,196),
  ABISELECT(160,88),
  ABISELECT(1160,656),
  ABISELECT(248,140),
  ABISELECT(832,460),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C2D1Ev,_ZTv0_n12_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C2D0Ev,_ZTv0_n12_N7S7864C2D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(1000,568),
  ABISELECT(736,412),
  ABISELECT(672,372),
  ABISELECT(648,364),
  ABISELECT(192,108),
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7864C2D1Ev,_ZTv0_n44_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7864C2D0Ev,_ZTv0_n44_N7S7864C2D0Ev),
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N7S7864C2D1Ev,_ZTvn28_n44_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N7S7864C2D0Ev,_ZTvn28_n44_N7S7864C2D0Ev),
  ABISELECT(-248,-140),
  ABISELECT(-136,-80),
  ABISELECT(-248,-140),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev),
  ABISELECT(-352,-196),
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-352,-196),
  ABISELECT(-240,-136),
  ABISELECT(-352,-196),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C2D1Ev,_ZTv0_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C2D0Ev,_ZTv0_n32_N7S7864C2D0Ev),
  ABISELECT(-464,-252),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-464,-252),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C2D1Ev,_ZTvn56_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C2D0Ev,_ZTvn56_n32_N7S7864C2D0Ev),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C2D1Ev,_ZTvn180_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C2D0Ev,_ZTvn180_n32_N7S7864C2D0Ev),
  ABISELECT(-608,-344),
  ABISELECT(-720,-404),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C2D1Ev,_ZTvn208_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C2D0Ev,_ZTvn208_n32_N7S7864C2D0Ev),
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-736,-408),
  ABISELECT(-736,-408),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C2D1Ev,_ZTvn212_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C2D0Ev,_ZTvn212_n32_N7S7864C2D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-784,-436),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C2D1Ev,_ZTvn240_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C2D0Ev,_ZTvn240_n32_N7S7864C2D0Ev),
  ABISELECT(-808,-452),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-808,-452),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev),
  ABISELECT(-832,-460),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-832,-460),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C2D1Ev,_ZTv0_n24_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C2D0Ev,_ZTv0_n24_N7S7864C2D0Ev),
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-880,-488),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C2D1Ev,_ZTvn28_n24_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C2D0Ev,_ZTvn28_n24_N7S7864C2D0Ev),
  ABISELECT(-896,-500),
  ABISELECT(-896,-500),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  ABISELECT(-896,-500),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C2D1Ev,_ZTv0_n28_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C2D0Ev,_ZTv0_n28_N7S7864C2D0Ev),
  ABISELECT(-1104,-624),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C2D1Ev,_ZTvn124_n28_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C2D0Ev,_ZTvn124_n28_N7S7864C2D0Ev),
  ABISELECT(-1040,-592),
  ABISELECT(-1152,-652),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C2D1Ev,_ZTvn152_n28_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C2D0Ev,_ZTvn152_n28_N7S7864C2D0Ev),
  ABISELECT(-1184,-672),
  ABISELECT(-936,-532),
  ABISELECT(-1072,-612),
  ABISELECT(-1184,-672),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7864C2[];
extern void ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev)();
extern void _ZN8S7864C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev)();
extern void _ZN8S7864C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C14__7S7864C2[] = {
  ABISELECT(1160,656),
  ABISELECT(248,140),
  ABISELECT(832,460),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void _ZN8S7864C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void _ZN8S7864C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C158S7864C14__7S7864C2[] = {
  ABISELECT(1160,656),
  ABISELECT(248,140),
  ABISELECT(832,460),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn112_N8S7864C15D1Ev,_ZThn60_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn112_N8S7864C15D0Ev,_ZThn60_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C158S7864C14__7S7864C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn832_N8S7864C15D1Ev,_ZThn460_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn832_N8S7864C15D0Ev,_ZThn460_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C158S7864C14__7S7864C2[] = {
  ABISELECT(-832,-460),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-832,-460),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn248_N8S7864C15D1Ev,_ZThn140_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn248_N8S7864C15D0Ev,_ZThn140_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C158S7864C14__7S7864C2[] = {
  ABISELECT(-248,-140),
  ABISELECT(-136,-80),
  ABISELECT(-248,-140),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C158S7864C14__7S7864C2[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-880,-488),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C14D1Ev,_ZTv0_n12_N8S7864C14D1Ev)();
extern void ABISELECT(_ZThn112_N8S7864C14D1Ev,_ZThn60_N8S7864C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C14D0Ev,_ZTv0_n12_N8S7864C14D0Ev)();
extern void ABISELECT(_ZThn112_N8S7864C14D0Ev,_ZThn60_N8S7864C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C14__7S7864C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C14D1Ev,_ZTv0_n12_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C14D0Ev,_ZTv0_n12_N8S7864C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7864C14D1Ev,_ZTv0_n24_N8S7864C14D1Ev)();
extern void ABISELECT(_ZThn832_N8S7864C14D1Ev,_ZThn460_N8S7864C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C14D0Ev,_ZTv0_n24_N8S7864C14D0Ev)();
extern void ABISELECT(_ZThn832_N8S7864C14D0Ev,_ZThn460_N8S7864C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C14__7S7864C2[] = {
  ABISELECT(-832,-460),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-832,-460),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C14D1Ev,_ZTv0_n24_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C14D0Ev,_ZTv0_n24_N8S7864C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev)();
extern void ABISELECT(_ZThn248_N8S7864C14D1Ev,_ZThn140_N8S7864C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev)();
extern void ABISELECT(_ZThn248_N8S7864C14D0Ev,_ZThn140_N8S7864C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C14__7S7864C2[] = {
  ABISELECT(-248,-140),
  ABISELECT(-136,-80),
  ABISELECT(-248,-140),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S7864C14D1Ev,_ZTvn28_n24_N8S7864C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C14D0Ev,_ZTvn28_n24_N8S7864C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C14__7S7864C2[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-880,-488),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C14D1Ev,_ZTvn28_n24_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C14D0Ev,_ZTvn28_n24_N8S7864C14D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__7S7864C2[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn60_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn60_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__7S7864C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN7S7864C5D1Ev();
extern void _ZN7S7864C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C5__7S7864C2[] = {
  ABISELECT(1000,568),
  ABISELECT(736,412),
  ABISELECT(672,372),
  ABISELECT(648,364),
  ABISELECT(192,108),
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&_ZN7S7864C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C5D0Ev,
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C107S7864C5__A2__7S7864C2[] = {
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C107S7864C5__A3__7S7864C2[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C107S7864C5__A10__7S7864C2[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C5__A10__7S7864C2[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn40_N7S7864C8D1Ev,_ZThn24_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn40_N7S7864C8D0Ev,_ZThn24_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C107S7864C5__A3__7S7864C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(-136,-80),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C107S7864C5__A3__7S7864C2[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C107S7864C5__A2__7S7864C2[] = {
  ABISELECT(160,88),
  ABISELECT(112,60),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C107S7864C5__A2__7S7864C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn88_N8S7864C10D1Ev,_ZThn52_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn88_N8S7864C10D0Ev,_ZThn52_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C107S7864C5__A2__7S7864C2[] = {
  ABISELECT(-88,-52),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C107S7864C5__A2__7S7864C2[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn88_N7S7864C5D1Ev,_ZThn52_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn88_N7S7864C5D0Ev,_ZThn52_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C5__7S7864C2[] = {
  ABISELECT(-88,-52),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C5D1Ev,_ZTv0_n12_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C5D0Ev,_ZTv0_n12_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C5__7S7864C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C5D1Ev,_ZTv0_n12_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C5D0Ev,_ZTv0_n12_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7864C5D1Ev,_ZTv0_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn192_N7S7864C5D1Ev,_ZThn108_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7864C5D0Ev,_ZTv0_n32_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn192_N7S7864C5D0Ev,_ZThn108_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C7__7S7864C5__7S7864C2[] = {
  ABISELECT(-192,-108),
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-352,-196),
  ABISELECT(-240,-136),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C5D1Ev,_ZTv0_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C5D0Ev,_ZTv0_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C5__7S7864C2[] = {
  ABISELECT(160,88),
  ABISELECT(112,60),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7864C5D1Ev,_ZTv0_n20_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn648_N7S7864C5D1Ev,_ZThn364_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C5D0Ev,_ZTv0_n20_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn648_N7S7864C5D0Ev,_ZThn364_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C5__7S7864C2[] = {
  ABISELECT(-648,-364),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-648,-364),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C5D1Ev,_ZTv0_n20_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C5D0Ev,_ZTv0_n20_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N7S7864C5D1Ev,_ZTvn56_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S7864C5D0Ev,_ZTvn56_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C97S7864C7__7S7864C5__7S7864C2[] = {
  ABISELECT(-464,-252),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-304,-164),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C5D1Ev,_ZTvn56_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C5D0Ev,_ZTvn56_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C5D1Ev,_ZTv0_n24_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn672_N7S7864C5D1Ev,_ZThn372_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C5D0Ev,_ZTv0_n24_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn672_N7S7864C5D0Ev,_ZThn372_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C5__7S7864C2[] = {
  ABISELECT(-672,-372),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-672,-372),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C5D1Ev,_ZTv0_n24_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C5D0Ev,_ZTv0_n24_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C5D1Ev,_ZTvn28_n24_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C5D0Ev,_ZTvn28_n24_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C5__7S7864C2[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-720,-400),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C5D1Ev,_ZTvn28_n24_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C5D0Ev,_ZTvn28_n24_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N7S7864C5D1Ev,_ZTvn180_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7864C5D0Ev,_ZTvn180_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C97S7864C97S7864C7__A2__7S7864C5__7S7864C2[] = {
  ABISELECT(-512,-288),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C5D1Ev,_ZTvn180_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C5D0Ev,_ZTvn180_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N7S7864C5D1Ev,_ZTvn208_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7864C5D0Ev,_ZTvn208_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C5__7S7864C2[] = {
  ABISELECT(-608,-344),
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C5D1Ev,_ZTvn208_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C5D0Ev,_ZTvn208_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N7S7864C5D1Ev,_ZTvn212_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7864C5D0Ev,_ZTvn212_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C107S7864C7__A1__7S7864C5__7S7864C2[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-736,-408),
  ABISELECT(-576,-320),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C5D1Ev,_ZTvn212_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C5D0Ev,_ZTvn212_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N7S7864C5D1Ev,_ZTvn240_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7864C5D0Ev,_ZTvn240_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C5__7S7864C2[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C5D1Ev,_ZTvn240_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C5D0Ev,_ZTvn240_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N7S7864C5D1Ev,_ZTv0_n28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn736_N7S7864C5D1Ev,_ZThn412_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7864C5D0Ev,_ZTv0_n28_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn736_N7S7864C5D0Ev,_ZThn412_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C9__A1__7S7864C5__7S7864C2[] = {
  ABISELECT(-736,-412),
  ABISELECT(-896,-500),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  ABISELECT(-736,-412),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C5D1Ev,_ZTv0_n28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C5D0Ev,_ZTv0_n28_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N7S7864C5D1Ev,_ZTvn124_n28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S7864C5D0Ev,_ZTvn124_n28_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C97S7864C9__A4__7S7864C5__7S7864C2[] = {
  ABISELECT(-944,-536),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C5D1Ev,_ZTvn124_n28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C5D0Ev,_ZTvn124_n28_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N7S7864C5D1Ev,_ZTvn152_n28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7864C5D0Ev,_ZTvn152_n28_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A9__7S7864C5__7S7864C2[] = {
  ABISELECT(-1040,-592),
  ABISELECT(-992,-564),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C5D1Ev,_ZTvn152_n28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C5D0Ev,_ZTvn152_n28_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7864C5D1Ev,_ZThn28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7864C5D0Ev,_ZThn28_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A3__7S7864C5__7S7864C2[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7864C5D1Ev,_ZThn28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7864C5D0Ev,_ZThn28_N7S7864C5D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C2[] = {
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__A1__7S7864C2[] = {
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__A1__7S7864C2[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__7S7864C2[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern void _ZN7S7864C7D1Ev();
extern void _ZN7S7864C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C7__7S7864C2[] = {
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-352,-196),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&_ZN7S7864C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C7D0Ev,
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C67S7864C7__A1__7S7864C2[] = {
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C67S7864C7__A3__7S7864C2[] = {
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C67S7864C7__A3__7S7864C2[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C67S7864C7__A1__7S7864C2[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern void _ZN7S7864C9D1Ev();
extern void _ZN7S7864C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(-464,-252),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&_ZN7S7864C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C9D0Ev,
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C117S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C2[] = {
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C2[] = {
  ABISELECT(352,192),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C117S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(352,192),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C117S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(216,112),
  ABISELECT(-136,-80),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C2[] = {
  ABISELECT(-608,-344),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C97S7864C7__A6__7S7864C2[] = {
  ABISELECT(608,344),
  ABISELECT(608,344),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(216,112),
  ABISELECT(-136,-80),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(352,192),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C9D1Ev,_ZThn208_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn368_N7S7864C9D0Ev,_ZThn208_N7S7864C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(-368,-208),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(464,252),
  ABISELECT(112,60),
  ABISELECT(464,252),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__7S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-416,-236),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A__7S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(-608,-344),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C107S7864C7__A1__7S7864C2[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-736,-408),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C2[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C2[] = {
  ABISELECT(-672,-376),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C2[] = {
  ABISELECT(672,376),
  ABISELECT(672,376),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C107S7864C7__A2__7S7864C2[] = {
  ABISELECT(536,296),
  ABISELECT(-136,-80),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C107S7864C7__A2__7S7864C2[] = {
  ABISELECT(672,376),
  ABISELECT(672,376),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C107S7864C7__A1__7S7864C2[] = {
  ABISELECT(736,408),
  ABISELECT(112,60),
  ABISELECT(736,408),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C107S7864C7__A1__7S7864C2[] = {
  ABISELECT(624,348),
  ABISELECT(624,348),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C107S7864C7__A1__7S7864C2[] = {
  ABISELECT(488,268),
  ABISELECT(-136,-80),
  ABISELECT(488,268),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C107S7864C7__A1__7S7864C2[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__7S7864C7__7S7864C2[] = {
  ABISELECT(352,196),
  ABISELECT(112,60),
  ABISELECT(352,196),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C7D1Ev,_ZTv0_n12_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C7D0Ev,_ZTv0_n12_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C7__7S7864C2[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C7D1Ev,_ZTv0_n12_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C7D0Ev,_ZTv0_n12_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn456_N7S7864C7D1Ev,_ZThn256_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn456_N7S7864C7D0Ev,_ZThn256_N7S7864C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C7__7S7864C2[] = {
  ABISELECT(-456,-256),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C7__7S7864C2[] = {
  ABISELECT(104,56),
  ABISELECT(-136,-80),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn112_N7S7864C7D1Ev,_ZThn56_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C7D0Ev,_ZThn56_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C9__7S7864C7__7S7864C2[] = {
  ABISELECT(-464,-252),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C7D1Ev,_ZThn56_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C7D0Ev,_ZThn56_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn480_N7S7864C7D1Ev,_ZThn264_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn480_N7S7864C7D0Ev,_ZThn264_N7S7864C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C7__7S7864C2[] = {
  ABISELECT(-480,-264),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-480,-264),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C7D1Ev,_ZTvn28_n24_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C7D0Ev,_ZTvn28_n24_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C7__7S7864C2[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-528,-292),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C7D1Ev,_ZTvn28_n24_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C7D0Ev,_ZTvn28_n24_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn368_N7S7864C7D1Ev,_ZThn208_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C7D0Ev,_ZThn208_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A6__7S7864C7__7S7864C2[] = {
  ABISELECT(-608,-344),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7864C7D1Ev,_ZThn208_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7864C7D0Ev,_ZThn208_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn384_N7S7864C7D1Ev,_ZThn212_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn384_N7S7864C7D0Ev,_ZThn212_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C10__A__7S7864C7__7S7864C2[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-736,-408),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7864C7D1Ev,_ZThn212_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7864C7D0Ev,_ZThn212_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn432_N7S7864C7D1Ev,_ZThn240_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn432_N7S7864C7D0Ev,_ZThn240_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A2__7S7864C7__7S7864C2[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7864C7D1Ev,_ZThn240_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7864C7D0Ev,_ZThn240_N7S7864C7D0Ev),
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C2[] = {
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C8__A2__7S7864C2[] = {
  ABISELECT(-696,-392),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C8__A2__7S7864C2[] = {
  ABISELECT(696,392),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C8__7S7864C2[] = {
  ABISELECT(560,312),
  ABISELECT(-136,-80),
  ABISELECT(560,312),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C8__7S7864C2[] = {
  ABISELECT(696,392),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C2[] = {
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C2[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A4__7S7864C2[] = {
  ABISELECT(-768,-428),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A4__7S7864C2[] = {
  ABISELECT(768,428),
  ABISELECT(768,428),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__A1__7S7864C2[] = {
  ABISELECT(632,348),
  ABISELECT(-136,-80),
  ABISELECT(632,348),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__A1__7S7864C2[] = {
  ABISELECT(768,428),
  ABISELECT(768,428),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__7S7864C2[] = {
  ABISELECT(832,460),
  ABISELECT(112,60),
  ABISELECT(832,460),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__7S7864C2[] = {
  ABISELECT(720,400),
  ABISELECT(720,400),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__7S7864C2[] = {
  ABISELECT(584,320),
  ABISELECT(-136,-80),
  ABISELECT(584,320),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__7S7864C2[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void _ZN7S7864C9D1Ev();
extern void _ZN7S7864C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C9__A1__7S7864C2[] = {
  ABISELECT(-896,-500),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&_ZN7S7864C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C9D0Ev,
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C117S7864C9__A1__7S7864C2[] = {
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C117S7864C9__A8__7S7864C2[] = {
  ABISELECT(-784,-440),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C117S7864C9__A8__7S7864C2[] = {
  ABISELECT(784,440),
  ABISELECT(784,440),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C117S7864C9__A1__7S7864C2[] = {
  ABISELECT(784,440),
  ABISELECT(784,440),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C117S7864C9__A1__7S7864C2[] = {
  ABISELECT(648,360),
  ABISELECT(-136,-80),
  ABISELECT(648,360),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A9__7S7864C2[] = {
  ABISELECT(-1040,-592),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C9__A9__7S7864C2[] = {
  ABISELECT(1040,592),
  ABISELECT(1040,592),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C9__A1__7S7864C2[] = {
  ABISELECT(648,360),
  ABISELECT(-136,-80),
  ABISELECT(648,360),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C9__A1__7S7864C2[] = {
  ABISELECT(784,440),
  ABISELECT(784,440),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C9__A1__7S7864C2[] = {
  ABISELECT(64,40),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C9__A1__7S7864C2[] = {
  ABISELECT(896,500),
  ABISELECT(112,60),
  ABISELECT(896,500),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__7S7864C9__A1__7S7864C2[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A__7S7864C9__A1__7S7864C2[] = {
  ABISELECT(-1040,-592),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev),
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C11__A2__7S7864C2[] = {
  ABISELECT(-936,-532),
  ABISELECT(-1072,-612),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C11__A11__7S7864C2[] = {
  ABISELECT(-1072,-612),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C11__A11__7S7864C2[] = {
  ABISELECT(1072,612),
  ABISELECT(1072,612),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C11__A2__7S7864C2[] = {
  ABISELECT(1072,612),
  ABISELECT(1072,612),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C11__A2__7S7864C2[] = {
  ABISELECT(936,532),
  ABISELECT(-136,-80),
  ABISELECT(936,532),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
static  VTT_ENTRY vtt_S7864C2[] = {
  {&(_ZTV7S7864C2[13]),  13,131},
  {&(_tg__ZTV8S7864C14__7S7864C2[8]),  8,10},
  {&(_tg__ZTV8S7864C158S7864C14__7S7864C2[8]),  8,10},
  {&(_tg__ZTV8S7864C158S7864C14__7S7864C2[8]),  8,10},
  {&(_tg__ZTV8S19676C9__8S7864C158S7864C14__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C158S7864C14__7S7864C2[6]),  6,8},
  {&(_tg__ZTV7S7864C6__8S7864C158S7864C14__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C158S7864C14__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S7864C14__7S7864C2[8]),  8,10},
  {&(_tg__ZTV8S19676C9__8S7864C14__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C14__7S7864C2[6]),  6,8},
  {&(_tg__ZTV7S7864C6__8S7864C14__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C14__7S7864C2[4]),  4,6},
  {&(_ZTV7S7864C2[13]),  13,131},
  {&(_ZTV7S7864C2[18]),  18,131},
  {&(_ZTV7S7864C2[31]),  31,131},
  {&(_ZTV7S7864C2[43]),  43,131},
  {&(_ZTV7S7864C2[53]),  53,131},
  {&(_ZTV7S7864C2[90]),  90,131},
  {&(_ZTV7S7864C2[61]),  61,131},
  {&(_ZTV7S7864C2[98]),  98,131},
  {&(_ZTV7S7864C2[104]),  104,131},
  {&(_ZTV7S7864C2[65]),  65,131},
  {&(_ZTV7S7864C2[70]),  70,131},
  {&(_ZTV7S7864C2[77]),  77,131},
  {&(_ZTV7S7864C2[83]),  83,131},
  {&(_ZTV7S7864C2[113]),  113,131},
  {&(_ZTV7S7864C2[117]),  117,131},
  {&(_ZTV7S7864C2[122]),  122,131},
  {&(_ZTV7S7864C2[37]),  37,131},
  {&(_ZTV7S7864C2[129]),  129,131},
  {&(_tg__ZTV7S7864C3__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C5__7S7864C2[10]),  10,12},
  {&(_tg__ZTV8S7864C107S7864C5__A2__7S7864C2[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C107S7864C5__A3__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C107S7864C5__A10__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C5__A10__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C107S7864C5__A3__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C107S7864C5__A3__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C107S7864C5__A2__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C107S7864C5__A2__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C107S7864C5__A2__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C107S7864C5__A2__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C6__7S7864C5__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C5__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C7__7S7864C5__7S7864C2[8]),  8,10},
  {&(_tg__ZTV7S7864C3__A1__7S7864C5__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C8__7S7864C5__7S7864C2[5]),  5,7},
  {&(_tg__ZTV7S7864C97S7864C7__7S7864C5__7S7864C2[6]),  6,8},
  {&(_tg__ZTV8S7864C10__7S7864C5__7S7864C2[6]),  6,8},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C5__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C97S7864C97S7864C7__A2__7S7864C5__7S7864C2[2]),  2,4},
  {&(_tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C5__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S7864C107S7864C7__A1__7S7864C5__7S7864C2[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C5__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C9__A1__7S7864C5__7S7864C2[7]),  7,9},
  {&(_tg__ZTV8S19676C97S7864C9__A4__7S7864C5__7S7864C2[2]),  2,4},
  {&(_tg__ZTV7S7864C37S7864C9__A9__7S7864C5__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C88S7864C10__A3__7S7864C5__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C6__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__A1__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__A1__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C7__7S7864C2[7]),  7,9},
  {&(_tg__ZTV7S7864C67S7864C7__A1__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C67S7864C7__A3__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C67S7864C7__A3__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C67S7864C7__A1__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C97S7864C7__7S7864C2[6]),  6,8},
  {&(_tg__ZTV8S7864C117S7864C97S7864C7__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C117S7864C97S7864C7__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C117S7864C97S7864C7__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C97S7864C7__A6__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C97S7864C7__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C97S7864C7__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C97S7864C7__7S7864C2[6]),  6,8},
  {&(_tg__ZTV7S7864C3__A1__7S7864C97S7864C7__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__7S7864C97S7864C7__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A__7S7864C97S7864C7__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S7864C107S7864C7__A1__7S7864C2[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C107S7864C7__A2__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C107S7864C7__A2__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C107S7864C7__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C107S7864C7__A1__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C107S7864C7__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C107S7864C7__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C3__7S7864C7__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C7__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C8__7S7864C7__7S7864C2[5]),  5,7},
  {&(_tg__ZTV7S7864C6__7S7864C7__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C9__7S7864C7__7S7864C2[6]),  6,8},
  {&(_tg__ZTV8S7864C10__7S7864C7__7S7864C2[6]),  6,8},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C7__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C9__A6__7S7864C7__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S7864C10__A__7S7864C7__7S7864C2[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__A2__7S7864C7__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C8__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C8__A2__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C8__A2__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C8__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C8__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C2[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A4__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A4__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__A1__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C9__A1__7S7864C2[6]),  6,8},
  {&(_tg__ZTV8S7864C117S7864C9__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C117S7864C9__A8__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C117S7864C9__A8__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C117S7864C9__A1__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C117S7864C9__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C9__A9__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C9__A9__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C9__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C9__A1__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C9__A1__7S7864C2[6]),  6,8},
  {&(_tg__ZTV7S7864C3__A1__7S7864C9__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__7S7864C9__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A__7S7864C9__A1__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S7864C11__A2__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C11__A11__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C11__A11__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C11__A2__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C11__A2__7S7864C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7864C2[];
extern  VTBL_ENTRY _ZTV7S7864C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C2[];
static VTBL_ENTRY alt_thunk_names135[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7864C7D0Ev,_ZThn264_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7864C7D1Ev,_ZThn264_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C7D0Ev,_ZThn256_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C7D1Ev,_ZThn256_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C9D0Ev,_ZThn208_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C9D1Ev,_ZThn208_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C5D0Ev,_ZTv0_n28_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N7S7864C5D0Ev,_ZThn412_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C5D1Ev,_ZTv0_n28_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N7S7864C5D1Ev,_ZThn412_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C5D0Ev,_ZTv0_n24_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N7S7864C5D0Ev,_ZThn372_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C5D1Ev,_ZTv0_n24_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N7S7864C5D1Ev,_ZThn372_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C5D0Ev,_ZTv0_n20_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N7S7864C5D0Ev,_ZThn364_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C5D1Ev,_ZTv0_n20_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N7S7864C5D1Ev,_ZThn364_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C5D0Ev,_ZTv0_n32_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7864C5D0Ev,_ZThn108_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C5D1Ev,_ZTv0_n32_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7864C5D1Ev,_ZThn108_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7864C5D0Ev,_ZThn52_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7864C5D1Ev,_ZThn52_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7864C10D0Ev,_ZThn52_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7864C10D1Ev,_ZThn52_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7864C8D0Ev,_ZThn24_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7864C8D1Ev,_ZThn24_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn60_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn60_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C14D0Ev,_ZTv0_n24_N8S7864C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S7864C14D0Ev,_ZThn460_N8S7864C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C14D1Ev,_ZTv0_n24_N8S7864C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S7864C14D1Ev,_ZThn460_N8S7864C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C14D0Ev,_ZTv0_n12_N8S7864C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7864C14D0Ev,_ZThn60_N8S7864C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C14D1Ev,_ZTv0_n12_N8S7864C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7864C14D1Ev,_ZThn60_N8S7864C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S7864C15D0Ev,_ZThn460_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S7864C15D1Ev,_ZThn460_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7864C15D0Ev,_ZThn60_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7864C15D1Ev,_ZThn60_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7864C15D0Ev,_ZThn140_N8S7864C15D0Ev),
  (VTBL_ENTRY)_ZN8S7864C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7864C15D1Ev,_ZThn140_N8S7864C15D1Ev),
  (VTBL_ENTRY)_ZN8S7864C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7864C14D0Ev,_ZThn140_N8S7864C14D0Ev),
  (VTBL_ENTRY)_ZN8S7864C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7864C14D1Ev,_ZThn140_N8S7864C14D1Ev),
  (VTBL_ENTRY)_ZN8S7864C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C2D0Ev,_ZTv0_n28_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn896_N7S7864C2D0Ev,_ZThn500_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C2D1Ev,_ZTv0_n28_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn896_N7S7864C2D1Ev,_ZThn500_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C2D0Ev,_ZTv0_n24_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N7S7864C2D0Ev,_ZThn460_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C2D1Ev,_ZTv0_n24_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N7S7864C2D1Ev,_ZThn460_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N7S7864C2D0Ev,_ZThn672_N7S7864C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn808_N7S7864C2D0Ev,_ZThn452_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N7S7864C2D1Ev,_ZThn672_N7S7864C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn808_N7S7864C2D1Ev,_ZThn452_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C2D0Ev,_ZTv0_n32_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7864C2D0Ev,_ZThn196_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C2D1Ev,_ZTv0_n32_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7864C2D1Ev,_ZThn196_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7864C2D0Ev,_ZTv0_n44_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7864C2D0Ev,_ZThn88_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7864C2D1Ev,_ZTv0_n44_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7864C2D1Ev,_ZThn88_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C2D0Ev,_ZTv0_n12_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C2D0Ev,_ZThn60_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C2D1Ev,_ZTv0_n12_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C2D1Ev,_ZThn60_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7864C2D0Ev,_ZThn140_N7S7864C2D0Ev),
  (VTBL_ENTRY)_ZN7S7864C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7864C2D1Ev,_ZThn140_N7S7864C2D1Ev),
  (VTBL_ENTRY)_ZN7S7864C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C2 = {  "S7864C2", // class name
  bases_S7864C2, 38,
  &(vtc_S7864C2[0]), // expected_vtbl_contents
  &(vtt_S7864C2[0]), // expected_vtt_contents
  ABISELECT(1392,796), // object size
  NSPAIRA(_ZTI7S7864C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7864C2),131, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7864C2),137, //virtual table table var
  36, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names135,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C16  : virtual S7864C15 , S7864C11 {
  virtual  ~S7864C16(); // _ZN8S7864C16D2Ev
  S7864C16(); // tgen
};
//SIG(-1 S7864C16) C1{ VBC2{ VBC3{ VBC4{ vd m Fp Fi Fc FD} vd} VBC5{ BC4 VBC3 VBC6{ VBC4 BC3 Fp[10] Fi FL} BC7{ VBC6 BC3 vd Fi} vd Fi} VBC8{ m FC9{} Fi[3]} vd Fi} BC10{ VBC4 VBC6 BC3 vd Fp Fi FC4[3] Fi[7]} vd}


 S7864C16 ::~S7864C16(){ note_dtor("S7864C16", this);}
S7864C16 ::S7864C16(){ note_ctor("S7864C16", this);} // tgen

static void Test_S7864C16()
{
  extern Class_Descriptor cd_S7864C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,69)];
    init_test(&cd_S7864C16, buf);
    S7864C16 *dp, &lv = *(dp=new (buf) S7864C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,272), "sizeof(S7864C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C16)");
    /*is_ambiguous_... S7864C16::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(224,132), "S7864C16");
    check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(224,132), "S7864C16");
    check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(224,132), "S7864C16");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(224,132), "S7864C16");
    check_base_class_offset(lv, (S19676C9*)(S7864C11*), ABISELECT(224,132), "S7864C16");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*), ABISELECT(224,132), "S7864C16");
    /*is_ambiguous_... S7864C15::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C15*), ABISELECT(208,124), "S7864C16");
    /*is_ambiguous_... S7864C10::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), ABISELECT(208,124), "S7864C16");
    /*is_ambiguous_... S7864C10::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), ABISELECT(272,160), "S7864C16");
    check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(336,200), "S7864C16");
    check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(336,200), "S7864C16");
    check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(336,200), "S7864C16");
    check_base_class_offset(lv, (S7864C6*)(S7864C11*), ABISELECT(336,200), "S7864C16");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(320,188), "S7864C16");
    check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(320,188), "S7864C16");
    check_base_class_offset(lv, (S7864C10*)(S7864C15*), ABISELECT(272,160), "S7864C16");
    check_base_class_offset(lv, (S19676C2*)(S7864C15*), ABISELECT(440,256), "S7864C16");
    check_base_class_offset(lv, (S7864C15*), ABISELECT(208,124), "S7864C16");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*), 0, "S7864C16");
    check_base_class_offset(lv, (S7864C11*), 0, "S7864C16");
    test_class_info(&lv, &cd_S7864C16);
    dp->~S7864C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C16(Test_S7864C16, "S7864C16", ABISELECT(464,272));

#else // __cplusplus

extern void _ZN8S7864C16C1Ev();
extern void _ZN8S7864C16D2Ev();
Name_Map name_map_S7864C16[] = {
  NSPAIR(_ZN8S7864C16C1Ev),
  NSPAIR(_ZN8S7864C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S7864C15;
extern VTBL_ENTRY _ZTI8S7864C15[];
extern  VTBL_ENTRY _ZTV8S7864C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C15[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
static Base_Class bases_S7864C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(224,132), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(208,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19676C9,    ABISELECT(272,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(336,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(336,200), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(320,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(320,188), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(272,160), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(440,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7864C15,    ABISELECT(208,124), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7864C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7864C16[];
extern void _ZN8S7864C16D1Ev();
extern void _ZN8S7864C16D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev)();
extern void ABISELECT(_ZThn208_N8S7864C16D1Ev,_ZThn124_N8S7864C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev)();
extern void ABISELECT(_ZThn208_N8S7864C16D0Ev,_ZThn124_N8S7864C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C16D1Ev,_ZTv0_n12_N8S7864C16D1Ev)();
extern void ABISELECT(_ZThn224_N8S7864C16D1Ev,_ZThn132_N8S7864C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C16D0Ev,_ZTv0_n12_N8S7864C16D0Ev)();
extern void ABISELECT(_ZThn224_N8S7864C16D0Ev,_ZThn132_N8S7864C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C16D1Ev,_ZTv0_n24_N8S7864C16D1Ev)();
extern void ABISELECT(_ZThn272_N8S7864C16D1Ev,_ZThn160_N8S7864C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C16D0Ev,_ZTv0_n24_N8S7864C16D0Ev)();
extern void ABISELECT(_ZThn272_N8S7864C16D0Ev,_ZThn160_N8S7864C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S7864C16D1Ev,_ZTvn28_n24_N8S7864C16D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C16D0Ev,_ZTvn28_n24_N8S7864C16D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev)();
extern void ABISELECT(_ZThn336_N8S7864C16D1Ev,_ZThn200_N8S7864C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev)();
extern void ABISELECT(_ZThn336_N8S7864C16D0Ev,_ZThn200_N8S7864C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C16[] = {
  ABISELECT(440,256),
  ABISELECT(272,160),
  ABISELECT(208,124),
  ABISELECT(208,124),
  ABISELECT(336,200),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&_ZN8S7864C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C16D0Ev,
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(64,36),
  0,
  ABISELECT(-208,-124),
  ABISELECT(16,8),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev),
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C16D1Ev,_ZTv0_n12_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C16D0Ev,_ZTv0_n12_N8S7864C16D0Ev),
  ABISELECT(-272,-160),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-272,-160),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C16D1Ev,_ZTv0_n24_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C16D0Ev,_ZTv0_n24_N8S7864C16D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C16D1Ev,_ZTvn28_n24_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C16D0Ev,_ZTvn28_n24_N8S7864C16D0Ev),
  ABISELECT(-336,-200),
  ABISELECT(-112,-68),
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev),
};
extern VTBL_ENTRY _ZTV8S7864C16[];
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C11__8S7864C16[] = {
  ABISELECT(336,200),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C11__A3__8S7864C16[] = {
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn224_N7S7864C3D1Ev,_ZThn132_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn224_N7S7864C3D0Ev,_ZThn132_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C11__A3__8S7864C16[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn224_N8S7864C11D1Ev,_ZThn132_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn224_N8S7864C11D0Ev,_ZThn132_N8S7864C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C11__8S7864C16[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn336_N8S7864C11D1Ev,_ZThn200_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn336_N8S7864C11D0Ev,_ZThn200_N8S7864C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C11__8S7864C16[] = {
  ABISELECT(-336,-200),
  ABISELECT(-112,-68),
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void _ZN8S7864C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void _ZN8S7864C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C15__8S7864C16[] = {
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(64,36),
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn16_N8S7864C15D1Ev,_ZThn8_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn16_N8S7864C15D0Ev,_ZThn8_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C15__8S7864C16[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn64_N8S7864C15D1Ev,_ZThn36_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn64_N8S7864C15D0Ev,_ZThn36_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C15__8S7864C16[] = {
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn128_N8S7864C15D1Ev,_ZThn76_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn128_N8S7864C15D0Ev,_ZThn76_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C15__8S7864C16[] = {
  ABISELECT(-128,-76),
  ABISELECT(-112,-68),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C15__8S7864C16[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C16[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7864C3D1Ev,_ZThn8_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7864C3D0Ev,_ZThn8_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__8S7864C16[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C16[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C16[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A2__8S7864C16[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A2__8S7864C16[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn12_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn12_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__8S7864C16[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__8S7864C16[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__8S7864C16[] = {
  ABISELECT(64,36),
  ABISELECT(16,8),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__8S7864C16[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__8S7864C16[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__8S7864C16[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C16[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__A1__8S7864C16[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__A1__8S7864C16[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__8S7864C16[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
static  VTT_ENTRY vtt_S7864C16[] = {
  {&(_ZTV8S7864C16[8]),  8,45},
  {&(_tg__ZTV8S7864C11__8S7864C16[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C11__A3__8S7864C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C11__A3__8S7864C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C11__8S7864C16[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C11__8S7864C16[4]),  4,6},
  {&(_ZTV8S7864C16[18]),  18,45},
  {&(_ZTV8S7864C16[18]),  18,45},
  {&(_ZTV8S7864C16[23]),  23,45},
  {&(_ZTV8S7864C16[31]),  31,45},
  {&(_ZTV8S7864C16[43]),  43,45},
  {&(_ZTV8S7864C16[37]),  37,45},
  {&(_tg__ZTV8S7864C15__8S7864C16[8]),  8,10},
  {&(_tg__ZTV8S7864C15__8S7864C16[8]),  8,10},
  {&(_tg__ZTV8S19676C9__8S7864C15__8S7864C16[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C15__8S7864C16[6]),  6,8},
  {&(_tg__ZTV7S7864C6__8S7864C15__8S7864C16[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C15__8S7864C16[4]),  4,6},
  {&(_tg__ZTV7S7864C3__8S7864C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__8S7864C16[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C16[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C16[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A2__8S7864C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A2__8S7864C16[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__8S7864C16[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__8S7864C16[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__8S7864C16[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__8S7864C16[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__8S7864C16[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__8S7864C16[4]),  4,6},
  {&(_tg__ZTV7S7864C6__8S7864C16[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__A1__8S7864C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__A1__8S7864C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__8S7864C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7864C16[];
extern  VTBL_ENTRY _ZTV8S7864C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C16[];
static VTBL_ENTRY alt_thunk_names136[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn12_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn12_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C15D0Ev,_ZThn36_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C15D1Ev,_ZThn36_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7864C15D0Ev,_ZThn8_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7864C15D1Ev,_ZThn8_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7864C15D0Ev,_ZThn76_N8S7864C15D0Ev),
  (VTBL_ENTRY)_ZN8S7864C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7864C15D1Ev,_ZThn76_N8S7864C15D1Ev),
  (VTBL_ENTRY)_ZN8S7864C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7864C11D0Ev,_ZThn200_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7864C11D1Ev,_ZThn200_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7864C11D0Ev,_ZThn132_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7864C11D1Ev,_ZThn132_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C3D0Ev,_ZThn8_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7864C3D0Ev,_ZThn132_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C3D1Ev,_ZThn8_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7864C3D1Ev,_ZThn132_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C16D0Ev,_ZTv0_n24_N8S7864C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7864C16D0Ev,_ZThn160_N8S7864C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C16D1Ev,_ZTv0_n24_N8S7864C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7864C16D1Ev,_ZThn160_N8S7864C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C16D0Ev,_ZTv0_n12_N8S7864C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7864C16D0Ev,_ZThn132_N8S7864C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C16D1Ev,_ZTv0_n12_N8S7864C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7864C16D1Ev,_ZThn132_N8S7864C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7864C16D0Ev,_ZThn200_N8S7864C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7864C16D0Ev,_ZThn124_N8S7864C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7864C16D1Ev,_ZThn200_N8S7864C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7864C16D1Ev,_ZThn124_N8S7864C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C16 = {  "S7864C16", // class name
  bases_S7864C16, 12,
  &(vtc_S7864C16[0]), // expected_vtbl_contents
  &(vtt_S7864C16[0]), // expected_vtt_contents
  ABISELECT(464,272), // object size
  NSPAIRA(_ZTI8S7864C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7864C16),45, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7864C16),34, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names136,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C1  : S7864C2 , S7864C16 , S4228C37 {
  short s7864c1f0:16;
  ~S7864C1(); // tgen
  S7864C1(); // tgen
};
//SIG(1 S7864C1) C1{ BC2{ VBC3{ VBC4{ vd m Fp Fi Fc FD} vd} VBC5{ VBC6{ VBC4 BC3 Fp[10] Fi FL} VBC7{ VBC3 VBC8{ VBC6 BC3 vd Fi} BC6 BC9{ VBC6 VBC10{ BC4 VBC3 VBC6 BC8 vd Fi} BC11{ VBC4 VBC6 BC3 vd Fp Fi FC4[3] Fi[7]} BC4 BC3 vd} BC10 vd Fs} VBC9 VBC12{ m FC13{} Fi[3]} BC10 Fs Fp[2]} VBC11 BC14{ BC12 BC15{ VBC3 VBC10 VBC12 vd Fi} FC3 Fi} vd} BC16{ VBC15 BC11 vd} BC17{ m} Fs:16}


S7864C1 ::~S7864C1(){ note_dtor("S7864C1", this);} // tgen
S7864C1 ::S7864C1(){ note_ctor("S7864C1", this);} // tgen

static void Test_S7864C1()
{
  extern Class_Descriptor cd_S7864C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(102,234)];
    init_test(&cd_S7864C1, buf);
    S7864C1 *dp, &lv = *(dp=new (buf) S7864C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1616,932), "sizeof(S7864C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C1)");
    /*is_ambiguous_... S7864C1::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C6*)(S7864C7*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*)(S7864C7*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(320,188), "S7864C1");
    check_base_class_offset(lv, (S19676C9*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C9*)(S7864C7*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C11*)(S7864C9*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*)(S7864C9*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C9*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*)(S7864C5*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C11*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*), ABISELECT(320,188), "S7864C1");
    check_base_class_offset(lv, (S19676C9*)(S7864C11*)(S7864C16*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*)(S7864C16*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C2::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C2*), 0, "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C7*), 0, "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), 0, "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*)(S7864C7*), 0, "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*)(S7864C5*), 0, "S7864C1");
    /*is_ambiguous_... S7864C15::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C15*)(S7864C14*)(S7864C2*), 0, "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C15 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C15*), 0, "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C5*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*), ABISELECT(456,268), "S7864C1");
    check_base_class_offset(lv, (S7864C6*)(S7864C9*)(S7864C7*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(456,268), "S7864C1");
    check_base_class_offset(lv, (S7864C6*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*)(S7864C7*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C9*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C11*)(S7864C9*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*)(S7864C5*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*)(S7864C5*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C11 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C11*), ABISELECT(456,268), "S7864C1");
    check_base_class_offset(lv, (S7864C6*)(S7864C11*)(S7864C16*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*), ABISELECT(1016,580), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C7*), ABISELECT(1016,580), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C6*)(S7864C7*), ABISELECT(560,324), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C7*), ABISELECT(560,324), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), ABISELECT(1040,588), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(1088,616), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(1088,616), "S7864C1");
    check_base_class_offset(lv, (S7864C10*)(S7864C9*)(S7864C7*), ABISELECT(1040,588), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C10*)(S7864C9*), ABISELECT(1040,588), "S7864C1");
    check_base_class_offset(lv, (S7864C10*)(S7864C15*)(S7864C14*)(S7864C2*), ABISELECT(1040,588), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C15 */ AMB_check_base_class_offset(lv, (S7864C10*)(S7864C15*), ABISELECT(1040,588), "S7864C1");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(672,380), "S7864C1");
    check_base_class_offset(lv, (S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(672,380), "S7864C1");
    /*is_ambiguous_... S7864C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C9*)(S7864C7*), ABISELECT(880,504), "S7864C1");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C9*)(S7864C7*), ABISELECT(928,532), "S7864C1");
    check_base_class_offset(lv, (S7864C9*)(S7864C7*), ABISELECT(672,380), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*)(S7864C7*), ABISELECT(944,536), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(992,564), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(992,564), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C10*)(S7864C7*), ABISELECT(944,536), "S7864C1");
    check_base_class_offset(lv, (S7864C7*)(S7864C5*), ABISELECT(560,324), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*)(S7864C9*), ABISELECT(1104,628), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C11*)(S7864C9*), ABISELECT(1104,628), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C9*), ABISELECT(1312,752), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C9*), ABISELECT(1360,780), "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C9*)(S7864C5*), ABISELECT(1104,628), "S7864C1");
    check_base_class_offset(lv, (S19676C2*)(S7864C5*), ABISELECT(1368,784), "S7864C1");
    check_base_class_offset(lv, (S19676C2*)(S7864C15*)(S7864C14*)(S7864C2*), ABISELECT(1368,784), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C15 */ AMB_check_base_class_offset(lv, (S19676C2*)(S7864C15*), ABISELECT(1368,784), "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*)(S7864C5*), ABISELECT(368,216), "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*)(S7864C5*), ABISELECT(416,244), "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*)(S7864C5*), ABISELECT(416,244), "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C10*)(S7864C5*), ABISELECT(368,216), "S7864C1");
    check_base_class_offset(lv, (S7864C5*)(S7864C2*), ABISELECT(368,216), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C11 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*), ABISELECT(1392,800), "S7864C1");
    /*is_ambiguous_... S7864C2::S7864C11 */ AMB_check_base_class_offset(lv, (S7864C11*)(S7864C2*), ABISELECT(1392,800), "S7864C1");
    /*is_ambiguous_... S7864C14::S19676C2 */ AMB_check_base_class_offset(lv, (S19676C2*)(S7864C14*)(S7864C2*), ABISELECT(12,8), "S7864C1");
    check_base_class_offset(lv, (S7864C15*)(S7864C14*)(S7864C2*), 0, "S7864C1");
    check_base_class_offset(lv, (S7864C14*)(S7864C2*), 0, "S7864C1");
    check_base_class_offset(lv, (S7864C2*), 0, "S7864C1");
    check_base_class_offset(lv, (S7864C15*)(S7864C16*), ABISELECT(1600,924), "S7864C1");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*)(S7864C16*), ABISELECT(112,60), "S7864C1");
    check_base_class_offset(lv, (S7864C11*)(S7864C16*), ABISELECT(112,60), "S7864C1");
    check_base_class_offset(lv, (S7864C16*), ABISELECT(112,60), "S7864C1");
    check_base_class_offset(lv, (S4228C37*), 0, "S7864C1");
    set_bf_and_test(lv, s7864c1f0, ABISELECT(316,184), 0, 16, 1, "S7864C1");
    set_bf_and_test(lv, s7864c1f0, ABISELECT(316,184), 0, 16, hide_sll(1LL<<15), "S7864C1");
    test_class_info(&lv, &cd_S7864C1);
    dp->~S7864C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C1(Test_S7864C1, "S7864C1", ABISELECT(1616,932));

#else // __cplusplus

extern void _ZN7S7864C1C1Ev();
extern void _ZN7S7864C1D1Ev();
Name_Map name_map_S7864C1[] = {
  NSPAIR(_ZN7S7864C1C1Ev),
  NSPAIR(_ZN7S7864C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C9;
extern VTBL_ENTRY _ZTI7S7864C9[];
extern  VTBL_ENTRY _ZTV7S7864C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C7;
extern VTBL_ENTRY _ZTI7S7864C7[];
extern  VTBL_ENTRY _ZTV7S7864C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C7[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C9;
extern VTBL_ENTRY _ZTI7S7864C9[];
extern  VTBL_ENTRY _ZTV7S7864C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C9[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C5;
extern VTBL_ENTRY _ZTI7S7864C5[];
extern  VTBL_ENTRY _ZTV7S7864C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C5[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S7864C15;
extern VTBL_ENTRY _ZTI8S7864C15[];
extern  VTBL_ENTRY _ZTV8S7864C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C15[];
extern Class_Descriptor cd_S7864C14;
extern VTBL_ENTRY _ZTI8S7864C14[];
extern  VTBL_ENTRY _ZTV8S7864C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C14[];
extern Class_Descriptor cd_S7864C2;
extern VTBL_ENTRY _ZTI7S7864C2[];
extern  VTBL_ENTRY _ZTV7S7864C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C2[];
extern Class_Descriptor cd_S7864C15;
extern VTBL_ENTRY _ZTI8S7864C15[];
extern  VTBL_ENTRY _ZTV8S7864C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C15[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S7864C16;
extern VTBL_ENTRY _ZTI8S7864C16[];
extern  VTBL_ENTRY _ZTV8S7864C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C16[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S7864C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(320,188), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7864C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(456,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(456,268), //bcp->offset
    50, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(1016,580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    138, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(1016,580), //bcp->offset
    96, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    137, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(560,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(560,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1040,588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(1088,616), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    144, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(1088,616), //bcp->offset
    111, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(1040,588), //bcp->offset
    103, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(672,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7864C11,    ABISELECT(672,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(880,504), //bcp->offset
    74, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(928,532), //bcp->offset
    78, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7864C9,    ABISELECT(672,380), //bcp->offset
    66, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(944,536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(992,564), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(992,564), //bcp->offset
    90, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(944,536), //bcp->offset
    83, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7864C7,    ABISELECT(560,324), //bcp->offset
    56, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(1104,628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    154, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7864C11,    ABISELECT(1104,628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    153, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1312,752), //bcp->offset
    126, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(1360,780), //bcp->offset
    130, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    158, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7864C9,    ABISELECT(1104,628), //bcp->offset
    117, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    152, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(1368,784), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19676C9,    ABISELECT(368,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(416,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(416,244), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(368,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7864C5,    ABISELECT(368,216), //bcp->offset
    31, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(1392,800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    167, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7864C11,    ABISELECT(1392,800), //bcp->offset
    135, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    166, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7864C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7864C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7864C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7864C15,    ABISELECT(1600,924), //bcp->offset
    142, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    171, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7864C11,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7864C16,    ABISELECT(112,60), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7864C1[];
extern void ABISELECT(_ZTv0_n32_N7S7864C1D1Ev,_ZTv0_n16_N7S7864C1D1Ev)();
extern void _ZN7S7864C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C1D0Ev,_ZTv0_n16_N7S7864C1D0Ev)();
extern void _ZN7S7864C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZThn112_N7S7864C1D1Ev,_ZThn60_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C1D0Ev,_ZThn60_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C1D1Ev,_ZTv0_n12_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn320_N7S7864C1D1Ev,_ZThn188_N7S7864C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C1D0Ev,_ZTv0_n12_N7S7864C1D0Ev)();
extern void ABISELECT(_ZThn320_N7S7864C1D0Ev,_ZThn188_N7S7864C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7864C1D1Ev,_ZTv0_n44_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C1D1Ev,_ZThn216_N7S7864C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7864C1D0Ev,_ZTv0_n44_N7S7864C1D0Ev)();
extern void ABISELECT(_ZThn368_N7S7864C1D0Ev,_ZThn216_N7S7864C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n88_N7S7864C1D1Ev,_ZTvn28_n44_N7S7864C1D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N7S7864C1D0Ev,_ZTvn28_n44_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C1D1Ev,_ZTv0_n16_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn456_N7S7864C1D1Ev,_ZThn268_N7S7864C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C1D0Ev,_ZTv0_n16_N7S7864C1D0Ev)();
extern void ABISELECT(_ZThn456_N7S7864C1D0Ev,_ZThn268_N7S7864C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7864C1D1Ev,_ZTv0_n32_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn560_N7S7864C1D1Ev,_ZThn324_N7S7864C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7864C1D0Ev,_ZTv0_n32_N7S7864C1D0Ev)();
extern void ABISELECT(_ZThn560_N7S7864C1D0Ev,_ZThn324_N7S7864C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N7S7864C1D1Ev,_ZTvn56_n32_N7S7864C1D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S7864C1D0Ev,_ZTvn56_n32_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7864C1D1Ev,_ZTvn180_n32_N7S7864C1D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7864C1D0Ev,_ZTvn180_n32_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7864C1D1Ev,_ZTvn208_n32_N7S7864C1D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7864C1D0Ev,_ZTvn208_n32_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7864C1D1Ev,_ZTvn212_n32_N7S7864C1D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7864C1D0Ev,_ZTvn212_n32_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7864C1D1Ev,_ZTvn240_n32_N7S7864C1D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7864C1D0Ev,_ZTvn240_n32_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7864C1D1Ev,_ZTv0_n20_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn1016_N7S7864C1D1Ev,_ZThn580_N7S7864C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C1D0Ev,_ZTv0_n20_N7S7864C1D0Ev)();
extern void ABISELECT(_ZThn1016_N7S7864C1D0Ev,_ZThn580_N7S7864C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C1D1Ev,_ZTv0_n24_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn1040_N7S7864C1D1Ev,_ZThn588_N7S7864C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C1D0Ev,_ZTv0_n24_N7S7864C1D0Ev)();
extern void ABISELECT(_ZThn1040_N7S7864C1D0Ev,_ZThn588_N7S7864C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S7864C1D1Ev,_ZTvn28_n24_N7S7864C1D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C1D0Ev,_ZTvn28_n24_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N7S7864C1D1Ev,_ZTv0_n28_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn1104_N7S7864C1D1Ev,_ZThn628_N7S7864C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7864C1D0Ev,_ZTv0_n28_N7S7864C1D0Ev)();
extern void ABISELECT(_ZThn1104_N7S7864C1D0Ev,_ZThn628_N7S7864C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N7S7864C1D1Ev,_ZTvn124_n28_N7S7864C1D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S7864C1D0Ev,_ZTvn124_n28_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7864C1D1Ev,_ZTvn152_n28_N7S7864C1D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7864C1D0Ev,_ZTvn152_n28_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7864C1D1Ev,_ZTv0_n20_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn1392_N7S7864C1D1Ev,_ZThn800_N7S7864C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C1D0Ev,_ZTv0_n20_N7S7864C1D0Ev)();
extern void ABISELECT(_ZThn1392_N7S7864C1D0Ev,_ZThn800_N7S7864C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C1D1Ev,_ZTv0_n16_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn1600_N7S7864C1D1Ev,_ZThn924_N7S7864C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C1D0Ev,_ZTv0_n16_N7S7864C1D0Ev)();
extern void ABISELECT(_ZThn1600_N7S7864C1D0Ev,_ZThn924_N7S7864C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C1[] = {
  ABISELECT(1600,924),
  ABISELECT(1392,800),
  ABISELECT(1104,628),
  ABISELECT(1016,580),
  ABISELECT(560,324),
  ABISELECT(368,216),
  ABISELECT(1368,784),
  ABISELECT(456,268),
  ABISELECT(1040,588),
  0,
  0,
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C1D1Ev,_ZTv0_n16_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C1D0Ev,_ZTv0_n16_N7S7864C1D0Ev),
  ABISELECT(1256,724),
  ABISELECT(928,528),
  ABISELECT(-112,-60),
  ABISELECT(1488,864),
  ABISELECT(344,208),
  ABISELECT(208,128),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C1D1Ev,_ZThn60_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C1D0Ev,_ZThn60_N7S7864C1D0Ev),
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C1D1Ev,_ZTv0_n12_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C1D0Ev,_ZTv0_n12_N7S7864C1D0Ev),
  ABISELECT(-368,-216),
  ABISELECT(1000,568),
  ABISELECT(736,412),
  ABISELECT(672,372),
  ABISELECT(648,364),
  ABISELECT(192,108),
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-368,-216),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7864C1D1Ev,_ZTv0_n44_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7864C1D0Ev,_ZTv0_n44_N7S7864C1D0Ev),
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-416,-244),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N7S7864C1D1Ev,_ZTvn28_n44_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N7S7864C1D0Ev,_ZTvn28_n44_N7S7864C1D0Ev),
  ABISELECT(-456,-268),
  ABISELECT(-136,-80),
  ABISELECT(-456,-268),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C1D1Ev,_ZTv0_n16_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C1D0Ev,_ZTv0_n16_N7S7864C1D0Ev),
  ABISELECT(-560,-324),
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-560,-324),
  ABISELECT(-240,-136),
  ABISELECT(-560,-324),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C1D1Ev,_ZTv0_n32_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C1D0Ev,_ZTv0_n32_N7S7864C1D0Ev),
  ABISELECT(-672,-380),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C1D1Ev,_ZTvn56_n32_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C1D0Ev,_ZTvn56_n32_N7S7864C1D0Ev),
  ABISELECT(-880,-504),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C1D1Ev,_ZTvn180_n32_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C1D0Ev,_ZTvn180_n32_N7S7864C1D0Ev),
  ABISELECT(-608,-344),
  ABISELECT(-928,-532),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C1D1Ev,_ZTvn208_n32_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C1D0Ev,_ZTvn208_n32_N7S7864C1D0Ev),
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-944,-536),
  ABISELECT(-944,-536),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C1D1Ev,_ZTvn212_n32_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C1D0Ev,_ZTvn212_n32_N7S7864C1D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-992,-564),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C1D1Ev,_ZTvn240_n32_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C1D0Ev,_ZTvn240_n32_N7S7864C1D0Ev),
  ABISELECT(-1016,-580),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-1016,-580),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C1D1Ev,_ZTv0_n20_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C1D0Ev,_ZTv0_n20_N7S7864C1D0Ev),
  ABISELECT(-1040,-588),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(-1040,-588),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C1D1Ev,_ZTv0_n24_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C1D0Ev,_ZTv0_n24_N7S7864C1D0Ev),
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-1088,-616),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C1D1Ev,_ZTvn28_n24_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C1D0Ev,_ZTvn28_n24_N7S7864C1D0Ev),
  ABISELECT(-1104,-628),
  ABISELECT(-1104,-628),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  ABISELECT(-1104,-628),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C1D1Ev,_ZTv0_n28_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C1D0Ev,_ZTv0_n28_N7S7864C1D0Ev),
  ABISELECT(-1312,-752),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C1D1Ev,_ZTvn124_n28_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C1D0Ev,_ZTvn124_n28_N7S7864C1D0Ev),
  ABISELECT(-1040,-592),
  ABISELECT(-1360,-780),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C1D1Ev,_ZTvn152_n28_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C1D0Ev,_ZTvn152_n28_N7S7864C1D0Ev),
  ABISELECT(-1392,-800),
  ABISELECT(-936,-532),
  ABISELECT(-1072,-612),
  ABISELECT(-1392,-800),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C1D1Ev,_ZTv0_n20_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C1D0Ev,_ZTv0_n20_N7S7864C1D0Ev),
  ABISELECT(-232,-140),
  ABISELECT(-1144,-656),
  ABISELECT(-560,-336),
  ABISELECT(-1600,-924),
  ABISELECT(-1600,-924),
  ABISELECT(-1280,-736),
  ABISELECT(-1600,-924),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C1D1Ev,_ZTv0_n16_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C1D0Ev,_ZTv0_n16_N7S7864C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7864C1[];
extern void ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev)();
extern void _ZN7S7864C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev)();
extern void _ZN7S7864C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C2__7S7864C1[] = {
  ABISELECT(1392,800),
  ABISELECT(1104,628),
  ABISELECT(1016,580),
  ABISELECT(560,324),
  ABISELECT(368,216),
  ABISELECT(1368,784),
  ABISELECT(456,268),
  ABISELECT(1040,588),
  0,
  0,
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev)();
extern void _ZN8S7864C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev)();
extern void _ZN8S7864C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(1368,784),
  ABISELECT(456,268),
  ABISELECT(1040,588),
  0,
  0,
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void _ZN8S7864C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void _ZN8S7864C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C158S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(1368,784),
  ABISELECT(456,268),
  ABISELECT(1040,588),
  0,
  0,
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn320_N8S7864C15D1Ev,_ZThn188_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn320_N8S7864C15D0Ev,_ZThn188_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C158S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn1040_N8S7864C15D1Ev,_ZThn588_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn1040_N8S7864C15D0Ev,_ZThn588_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C158S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(-1040,-588),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(-1040,-588),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn456_N8S7864C15D1Ev,_ZThn268_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn456_N8S7864C15D0Ev,_ZThn268_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C158S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(-456,-268),
  ABISELECT(-136,-80),
  ABISELECT(-456,-268),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C158S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-1088,-616),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C14D1Ev,_ZTv0_n12_N8S7864C14D1Ev)();
extern void ABISELECT(_ZThn320_N8S7864C14D1Ev,_ZThn188_N8S7864C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C14D0Ev,_ZTv0_n12_N8S7864C14D0Ev)();
extern void ABISELECT(_ZThn320_N8S7864C14D0Ev,_ZThn188_N8S7864C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C14D1Ev,_ZTv0_n12_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C14D0Ev,_ZTv0_n12_N8S7864C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7864C14D1Ev,_ZTv0_n24_N8S7864C14D1Ev)();
extern void ABISELECT(_ZThn1040_N8S7864C14D1Ev,_ZThn588_N8S7864C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C14D0Ev,_ZTv0_n24_N8S7864C14D0Ev)();
extern void ABISELECT(_ZThn1040_N8S7864C14D0Ev,_ZThn588_N8S7864C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(-1040,-588),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(-1040,-588),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C14D1Ev,_ZTv0_n24_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C14D0Ev,_ZTv0_n24_N8S7864C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev)();
extern void ABISELECT(_ZThn456_N8S7864C14D1Ev,_ZThn268_N8S7864C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev)();
extern void ABISELECT(_ZThn456_N8S7864C14D0Ev,_ZThn268_N8S7864C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(-456,-268),
  ABISELECT(-136,-80),
  ABISELECT(-456,-268),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S7864C14D1Ev,_ZTvn28_n24_N8S7864C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C14D0Ev,_ZTvn28_n24_N8S7864C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-1088,-616),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C14D1Ev,_ZTvn28_n24_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C14D0Ev,_ZTvn28_n24_N8S7864C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C2D1Ev,_ZTv0_n12_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn320_N7S7864C2D1Ev,_ZThn188_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C2D0Ev,_ZTv0_n12_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn320_N7S7864C2D0Ev,_ZThn188_N7S7864C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C2__7S7864C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C2D1Ev,_ZTv0_n12_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C2D0Ev,_ZTv0_n12_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7864C2D1Ev,_ZTv0_n44_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C2D1Ev,_ZThn216_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7864C2D0Ev,_ZTv0_n44_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn368_N7S7864C2D0Ev,_ZThn216_N7S7864C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C5__7S7864C2__7S7864C1[] = {
  ABISELECT(-368,-216),
  ABISELECT(1000,568),
  ABISELECT(736,412),
  ABISELECT(672,372),
  ABISELECT(648,364),
  ABISELECT(192,108),
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-368,-216),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7864C2D1Ev,_ZTv0_n44_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7864C2D0Ev,_ZTv0_n44_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn456_N7S7864C2D1Ev,_ZThn268_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn456_N7S7864C2D0Ev,_ZThn268_N7S7864C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C2__7S7864C1[] = {
  ABISELECT(-456,-268),
  ABISELECT(-136,-80),
  ABISELECT(-456,-268),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7864C2D1Ev,_ZTv0_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn560_N7S7864C2D1Ev,_ZThn324_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7864C2D0Ev,_ZTv0_n32_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn560_N7S7864C2D0Ev,_ZThn324_N7S7864C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C7__7S7864C2__7S7864C1[] = {
  ABISELECT(-560,-324),
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-560,-324),
  ABISELECT(-240,-136),
  ABISELECT(-560,-324),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C2D1Ev,_ZTv0_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C2D0Ev,_ZTv0_n32_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn1016_N7S7864C2D1Ev,_ZThn580_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn1016_N7S7864C2D0Ev,_ZThn580_N7S7864C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C2__7S7864C1[] = {
  ABISELECT(-1016,-580),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-1016,-580),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N7S7864C2D1Ev,_ZTvn56_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S7864C2D0Ev,_ZTvn56_n32_N7S7864C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C97S7864C7__7S7864C2__7S7864C1[] = {
  ABISELECT(-672,-380),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C2D1Ev,_ZTvn56_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C2D0Ev,_ZTvn56_n32_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C2D1Ev,_ZTv0_n24_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn1040_N7S7864C2D1Ev,_ZThn588_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C2D0Ev,_ZTv0_n24_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn1040_N7S7864C2D0Ev,_ZThn588_N7S7864C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C2__7S7864C1[] = {
  ABISELECT(-1040,-588),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(-1040,-588),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C2D1Ev,_ZTv0_n24_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C2D0Ev,_ZTv0_n24_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C2D1Ev,_ZTvn28_n24_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C2D0Ev,_ZTvn28_n24_N7S7864C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C2__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-1088,-616),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C2D1Ev,_ZTvn28_n24_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C2D0Ev,_ZTvn28_n24_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N7S7864C2D1Ev,_ZTvn180_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7864C2D0Ev,_ZTvn180_n32_N7S7864C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C97S7864C97S7864C7__A2__7S7864C2__7S7864C1[] = {
  ABISELECT(-880,-504),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C2D1Ev,_ZTvn180_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C2D0Ev,_ZTvn180_n32_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N7S7864C2D1Ev,_ZTvn208_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7864C2D0Ev,_ZTvn208_n32_N7S7864C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C2__7S7864C1[] = {
  ABISELECT(-608,-344),
  ABISELECT(-928,-532),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C2D1Ev,_ZTvn208_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C2D0Ev,_ZTvn208_n32_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N7S7864C2D1Ev,_ZTvn212_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7864C2D0Ev,_ZTvn212_n32_N7S7864C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C107S7864C7__A1__7S7864C2__7S7864C1[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-944,-536),
  ABISELECT(-944,-536),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C2D1Ev,_ZTvn212_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C2D0Ev,_ZTvn212_n32_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N7S7864C2D1Ev,_ZTvn240_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7864C2D0Ev,_ZTvn240_n32_N7S7864C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C2__7S7864C1[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-992,-564),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C2D1Ev,_ZTvn240_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C2D0Ev,_ZTvn240_n32_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N7S7864C2D1Ev,_ZTv0_n28_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn1104_N7S7864C2D1Ev,_ZThn628_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7864C2D0Ev,_ZTv0_n28_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn1104_N7S7864C2D0Ev,_ZThn628_N7S7864C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C9__A1__7S7864C2__7S7864C1[] = {
  ABISELECT(-1104,-628),
  ABISELECT(-1104,-628),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  ABISELECT(-1104,-628),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C2D1Ev,_ZTv0_n28_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C2D0Ev,_ZTv0_n28_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N7S7864C2D1Ev,_ZTvn124_n28_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S7864C2D0Ev,_ZTvn124_n28_N7S7864C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C97S7864C9__A4__7S7864C2__7S7864C1[] = {
  ABISELECT(-1312,-752),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C2D1Ev,_ZTvn124_n28_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C2D0Ev,_ZTvn124_n28_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N7S7864C2D1Ev,_ZTvn152_n28_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7864C2D0Ev,_ZTvn152_n28_N7S7864C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A9__7S7864C2__7S7864C1[] = {
  ABISELECT(-1040,-592),
  ABISELECT(-1360,-780),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C2D1Ev,_ZTvn152_n28_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C2D0Ev,_ZTvn152_n28_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTvn48_n88_N7S7864C2D1Ev,_ZTvn28_n44_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N7S7864C2D0Ev,_ZTvn28_n44_N7S7864C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C107S7864C5__A3__7S7864C2__7S7864C1[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-416,-244),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N7S7864C2D1Ev,_ZTvn28_n44_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N7S7864C2D0Ev,_ZTvn28_n44_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn1392_N7S7864C2D1Ev,_ZThn800_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn1392_N7S7864C2D0Ev,_ZThn800_N7S7864C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C11__A2__7S7864C2__7S7864C1[] = {
  ABISELECT(-1392,-800),
  ABISELECT(-936,-532),
  ABISELECT(-1072,-612),
  ABISELECT(-1392,-800),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev),
};
extern void _ZN8S7864C16D1Ev();
extern void _ZN8S7864C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C16__7S7864C1[] = {
  ABISELECT(1256,724),
  ABISELECT(928,528),
  ABISELECT(-112,-60),
  ABISELECT(1488,864),
  ABISELECT(344,208),
  ABISELECT(208,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&_ZN8S7864C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C16D0Ev,
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C118S7864C16__A3__7S7864C1[] = {
  ABISELECT(344,208),
  ABISELECT(208,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C118S7864C16__A12__7S7864C1[] = {
  ABISELECT(208,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn208_N7S7864C3D1Ev,_ZThn128_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn208_N7S7864C3D0Ev,_ZThn128_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C118S7864C16__A12__7S7864C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn208_N8S7864C11D1Ev,_ZThn128_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn208_N8S7864C11D0Ev,_ZThn128_N8S7864C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C118S7864C16__A3__7S7864C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn344_N8S7864C11D1Ev,_ZThn208_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn344_N8S7864C11D0Ev,_ZThn208_N8S7864C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C118S7864C16__A3__7S7864C1[] = {
  ABISELECT(-344,-208),
  ABISELECT(-136,-80),
  ABISELECT(-344,-208),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev)();
extern void ABISELECT(_ZThn1488_N8S7864C16D1Ev,_ZThn864_N8S7864C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev)();
extern void ABISELECT(_ZThn1488_N8S7864C16D0Ev,_ZThn864_N8S7864C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C15__8S7864C16__7S7864C1[] = {
  ABISELECT(-232,-140),
  ABISELECT(-1144,-656),
  ABISELECT(-560,-336),
  ABISELECT(-1600,-924),
  ABISELECT(-1488,-864),
  ABISELECT(-1280,-736),
  ABISELECT(-1488,-864),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C16__7S7864C1[] = {
  ABISELECT(112,60),
  ABISELECT(320,188),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C16D1Ev,_ZTv0_n12_N8S7864C16D1Ev)();
extern void ABISELECT(_ZThn208_N8S7864C16D1Ev,_ZThn128_N8S7864C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C16D0Ev,_ZTv0_n12_N8S7864C16D0Ev)();
extern void ABISELECT(_ZThn208_N8S7864C16D0Ev,_ZThn128_N8S7864C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C16__7S7864C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C16D1Ev,_ZTv0_n12_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C16D0Ev,_ZTv0_n12_N8S7864C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7864C16D1Ev,_ZTv0_n24_N8S7864C16D1Ev)();
extern void ABISELECT(_ZThn928_N8S7864C16D1Ev,_ZThn528_N8S7864C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C16D0Ev,_ZTv0_n24_N8S7864C16D0Ev)();
extern void ABISELECT(_ZThn928_N8S7864C16D0Ev,_ZThn528_N8S7864C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C16__7S7864C1[] = {
  ABISELECT(-928,-528),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(-928,-528),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C16D1Ev,_ZTv0_n24_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C16D0Ev,_ZTv0_n24_N8S7864C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev)();
extern void ABISELECT(_ZThn344_N8S7864C16D1Ev,_ZThn208_N8S7864C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev)();
extern void ABISELECT(_ZThn344_N8S7864C16D0Ev,_ZThn208_N8S7864C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C16__7S7864C1[] = {
  ABISELECT(-344,-208),
  ABISELECT(-136,-80),
  ABISELECT(-344,-208),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S7864C16D1Ev,_ZTvn28_n24_N8S7864C16D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C16D0Ev,_ZTvn28_n24_N8S7864C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C16__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-976,-556),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C16D1Ev,_ZTvn28_n24_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C16D0Ev,_ZTvn28_n24_N8S7864C16D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__7S7864C1[] = {
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn320_N7S7864C3D1Ev,_ZThn188_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn320_N7S7864C3D0Ev,_ZThn188_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__7S7864C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN7S7864C5D1Ev();
extern void _ZN7S7864C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C5__7S7864C1[] = {
  ABISELECT(1000,568),
  ABISELECT(736,412),
  ABISELECT(672,372),
  ABISELECT(648,364),
  ABISELECT(192,108),
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-368,-216),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&_ZN7S7864C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C5D0Ev,
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C107S7864C5__A2__7S7864C1[] = {
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-368,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C107S7864C5__A3__7S7864C1[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C107S7864C5__A10__7S7864C1[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C5__A10__7S7864C1[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn40_N7S7864C8D1Ev,_ZThn24_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn40_N7S7864C8D0Ev,_ZThn24_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C107S7864C5__A3__7S7864C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-136,-80),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C107S7864C5__A3__7S7864C1[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C107S7864C5__A2__7S7864C1[] = {
  ABISELECT(368,216),
  ABISELECT(320,188),
  ABISELECT(368,216),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C107S7864C5__A2__7S7864C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn88_N8S7864C10D1Ev,_ZThn52_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn88_N8S7864C10D0Ev,_ZThn52_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C107S7864C5__A2__7S7864C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C107S7864C5__A2__7S7864C1[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn88_N7S7864C5D1Ev,_ZThn52_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn88_N7S7864C5D0Ev,_ZThn52_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C5__7S7864C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C5D1Ev,_ZTv0_n12_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C5D0Ev,_ZTv0_n12_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C5__7S7864C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C5D1Ev,_ZTv0_n12_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C5D0Ev,_ZTv0_n12_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7864C5D1Ev,_ZTv0_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn192_N7S7864C5D1Ev,_ZThn108_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7864C5D0Ev,_ZTv0_n32_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn192_N7S7864C5D0Ev,_ZThn108_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C7__7S7864C5__7S7864C1[] = {
  ABISELECT(-192,-108),
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-560,-324),
  ABISELECT(-240,-136),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C5D1Ev,_ZTv0_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C5D0Ev,_ZTv0_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C5__7S7864C1[] = {
  ABISELECT(368,216),
  ABISELECT(320,188),
  ABISELECT(368,216),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7864C5D1Ev,_ZTv0_n20_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn648_N7S7864C5D1Ev,_ZThn364_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C5D0Ev,_ZTv0_n20_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn648_N7S7864C5D0Ev,_ZThn364_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C5__7S7864C1[] = {
  ABISELECT(-648,-364),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-648,-364),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C5D1Ev,_ZTv0_n20_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C5D0Ev,_ZTv0_n20_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N7S7864C5D1Ev,_ZTvn56_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S7864C5D0Ev,_ZTvn56_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C97S7864C7__7S7864C5__7S7864C1[] = {
  ABISELECT(-672,-380),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-304,-164),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C5D1Ev,_ZTvn56_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C5D0Ev,_ZTvn56_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C5D1Ev,_ZTv0_n24_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn672_N7S7864C5D1Ev,_ZThn372_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C5D0Ev,_ZTv0_n24_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn672_N7S7864C5D0Ev,_ZThn372_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C5__7S7864C1[] = {
  ABISELECT(-672,-372),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(-672,-372),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C5D1Ev,_ZTv0_n24_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C5D0Ev,_ZTv0_n24_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C5D1Ev,_ZTvn28_n24_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C5D0Ev,_ZTvn28_n24_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C5__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-720,-400),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C5D1Ev,_ZTvn28_n24_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C5D0Ev,_ZTvn28_n24_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N7S7864C5D1Ev,_ZTvn180_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7864C5D0Ev,_ZTvn180_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C97S7864C97S7864C7__A2__7S7864C5__7S7864C1[] = {
  ABISELECT(-512,-288),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C5D1Ev,_ZTvn180_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C5D0Ev,_ZTvn180_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N7S7864C5D1Ev,_ZTvn208_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7864C5D0Ev,_ZTvn208_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C5__7S7864C1[] = {
  ABISELECT(-608,-344),
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C5D1Ev,_ZTvn208_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C5D0Ev,_ZTvn208_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N7S7864C5D1Ev,_ZTvn212_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7864C5D0Ev,_ZTvn212_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C107S7864C7__A1__7S7864C5__7S7864C1[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-944,-536),
  ABISELECT(-576,-320),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C5D1Ev,_ZTvn212_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C5D0Ev,_ZTvn212_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N7S7864C5D1Ev,_ZTvn240_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7864C5D0Ev,_ZTvn240_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C5__7S7864C1[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C5D1Ev,_ZTvn240_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C5D0Ev,_ZTvn240_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N7S7864C5D1Ev,_ZTv0_n28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn736_N7S7864C5D1Ev,_ZThn412_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7864C5D0Ev,_ZTv0_n28_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn736_N7S7864C5D0Ev,_ZThn412_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C9__A1__7S7864C5__7S7864C1[] = {
  ABISELECT(-736,-412),
  ABISELECT(-1104,-628),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  ABISELECT(-736,-412),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C5D1Ev,_ZTv0_n28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C5D0Ev,_ZTv0_n28_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N7S7864C5D1Ev,_ZTvn124_n28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S7864C5D0Ev,_ZTvn124_n28_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C97S7864C9__A4__7S7864C5__7S7864C1[] = {
  ABISELECT(-944,-536),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C5D1Ev,_ZTvn124_n28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C5D0Ev,_ZTvn124_n28_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N7S7864C5D1Ev,_ZTvn152_n28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7864C5D0Ev,_ZTvn152_n28_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A9__7S7864C5__7S7864C1[] = {
  ABISELECT(-1040,-592),
  ABISELECT(-992,-564),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C5D1Ev,_ZTvn152_n28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C5D0Ev,_ZTvn152_n28_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7864C5D1Ev,_ZThn28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7864C5D0Ev,_ZThn28_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A3__7S7864C5__7S7864C1[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7864C5D1Ev,_ZThn28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7864C5D0Ev,_ZThn28_N7S7864C5D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C1[] = {
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__A1__7S7864C1[] = {
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__A1__7S7864C1[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__7S7864C1[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern void _ZN7S7864C7D1Ev();
extern void _ZN7S7864C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C7__7S7864C1[] = {
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-560,-324),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&_ZN7S7864C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C7D0Ev,
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C67S7864C7__A1__7S7864C1[] = {
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C67S7864C7__A3__7S7864C1[] = {
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C67S7864C7__A3__7S7864C1[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C67S7864C7__A1__7S7864C1[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern void _ZN7S7864C9D1Ev();
extern void _ZN7S7864C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(-672,-380),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&_ZN7S7864C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C9D0Ev,
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C117S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C1[] = {
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C1[] = {
  ABISELECT(352,192),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C117S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(352,192),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C117S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(216,112),
  ABISELECT(-136,-80),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C1[] = {
  ABISELECT(-608,-344),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C97S7864C7__A6__7S7864C1[] = {
  ABISELECT(608,344),
  ABISELECT(608,344),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(216,112),
  ABISELECT(-136,-80),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(352,192),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C9D1Ev,_ZThn208_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn368_N7S7864C9D0Ev,_ZThn208_N7S7864C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(-368,-208),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(672,380),
  ABISELECT(320,188),
  ABISELECT(672,380),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__7S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-416,-236),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A__7S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(-608,-344),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C107S7864C7__A1__7S7864C1[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-944,-536),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C1[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C1[] = {
  ABISELECT(-672,-376),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C1[] = {
  ABISELECT(672,376),
  ABISELECT(672,376),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C107S7864C7__A2__7S7864C1[] = {
  ABISELECT(536,296),
  ABISELECT(-136,-80),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C107S7864C7__A2__7S7864C1[] = {
  ABISELECT(672,376),
  ABISELECT(672,376),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C107S7864C7__A1__7S7864C1[] = {
  ABISELECT(944,536),
  ABISELECT(320,188),
  ABISELECT(944,536),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C107S7864C7__A1__7S7864C1[] = {
  ABISELECT(624,348),
  ABISELECT(624,348),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C107S7864C7__A1__7S7864C1[] = {
  ABISELECT(488,268),
  ABISELECT(-136,-80),
  ABISELECT(488,268),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C107S7864C7__A1__7S7864C1[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__7S7864C7__7S7864C1[] = {
  ABISELECT(560,324),
  ABISELECT(320,188),
  ABISELECT(560,324),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C7D1Ev,_ZTv0_n12_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C7D0Ev,_ZTv0_n12_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C7__7S7864C1[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C7D1Ev,_ZTv0_n12_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C7D0Ev,_ZTv0_n12_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn456_N7S7864C7D1Ev,_ZThn256_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn456_N7S7864C7D0Ev,_ZThn256_N7S7864C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C7__7S7864C1[] = {
  ABISELECT(-456,-256),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C7__7S7864C1[] = {
  ABISELECT(104,56),
  ABISELECT(-136,-80),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn112_N7S7864C7D1Ev,_ZThn56_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C7D0Ev,_ZThn56_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C9__7S7864C7__7S7864C1[] = {
  ABISELECT(-672,-380),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C7D1Ev,_ZThn56_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C7D0Ev,_ZThn56_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn480_N7S7864C7D1Ev,_ZThn264_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn480_N7S7864C7D0Ev,_ZThn264_N7S7864C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C7__7S7864C1[] = {
  ABISELECT(-480,-264),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(-480,-264),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C7D1Ev,_ZTvn28_n24_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C7D0Ev,_ZTvn28_n24_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C7__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-528,-292),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C7D1Ev,_ZTvn28_n24_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C7D0Ev,_ZTvn28_n24_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn368_N7S7864C7D1Ev,_ZThn208_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C7D0Ev,_ZThn208_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A6__7S7864C7__7S7864C1[] = {
  ABISELECT(-608,-344),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7864C7D1Ev,_ZThn208_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7864C7D0Ev,_ZThn208_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn384_N7S7864C7D1Ev,_ZThn212_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn384_N7S7864C7D0Ev,_ZThn212_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C10__A__7S7864C7__7S7864C1[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-944,-536),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7864C7D1Ev,_ZThn212_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7864C7D0Ev,_ZThn212_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn432_N7S7864C7D1Ev,_ZThn240_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn432_N7S7864C7D0Ev,_ZThn240_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A2__7S7864C7__7S7864C1[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7864C7D1Ev,_ZThn240_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7864C7D0Ev,_ZThn240_N7S7864C7D0Ev),
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C1[] = {
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C8__A2__7S7864C1[] = {
  ABISELECT(-696,-392),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C8__A2__7S7864C1[] = {
  ABISELECT(696,392),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C8__7S7864C1[] = {
  ABISELECT(560,312),
  ABISELECT(-136,-80),
  ABISELECT(560,312),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C8__7S7864C1[] = {
  ABISELECT(696,392),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C1[] = {
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A4__7S7864C1[] = {
  ABISELECT(-768,-428),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A4__7S7864C1[] = {
  ABISELECT(768,428),
  ABISELECT(768,428),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__A1__7S7864C1[] = {
  ABISELECT(632,348),
  ABISELECT(-136,-80),
  ABISELECT(632,348),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__A1__7S7864C1[] = {
  ABISELECT(768,428),
  ABISELECT(768,428),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__7S7864C1[] = {
  ABISELECT(1040,588),
  ABISELECT(320,188),
  ABISELECT(1040,588),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__7S7864C1[] = {
  ABISELECT(720,400),
  ABISELECT(720,400),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__7S7864C1[] = {
  ABISELECT(584,320),
  ABISELECT(-136,-80),
  ABISELECT(584,320),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void _ZN7S7864C9D1Ev();
extern void _ZN7S7864C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C9__A1__7S7864C1[] = {
  ABISELECT(-1104,-628),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&_ZN7S7864C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C9D0Ev,
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C117S7864C9__A1__7S7864C1[] = {
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C117S7864C9__A8__7S7864C1[] = {
  ABISELECT(-784,-440),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C117S7864C9__A8__7S7864C1[] = {
  ABISELECT(784,440),
  ABISELECT(784,440),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C117S7864C9__A1__7S7864C1[] = {
  ABISELECT(784,440),
  ABISELECT(784,440),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C117S7864C9__A1__7S7864C1[] = {
  ABISELECT(648,360),
  ABISELECT(-136,-80),
  ABISELECT(648,360),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A9__7S7864C1[] = {
  ABISELECT(-1040,-592),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C9__A9__7S7864C1[] = {
  ABISELECT(1040,592),
  ABISELECT(1040,592),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C9__A1__7S7864C1[] = {
  ABISELECT(648,360),
  ABISELECT(-136,-80),
  ABISELECT(648,360),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C9__A1__7S7864C1[] = {
  ABISELECT(784,440),
  ABISELECT(784,440),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C9__A1__7S7864C1[] = {
  ABISELECT(64,40),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C9__A1__7S7864C1[] = {
  ABISELECT(1104,628),
  ABISELECT(320,188),
  ABISELECT(1104,628),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__7S7864C9__A1__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A__7S7864C9__A1__7S7864C1[] = {
  ABISELECT(-1040,-592),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev),
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C11__A2__7S7864C1[] = {
  ABISELECT(-936,-532),
  ABISELECT(-1072,-612),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C11__A11__7S7864C1[] = {
  ABISELECT(-1072,-612),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C11__A11__7S7864C1[] = {
  ABISELECT(1072,612),
  ABISELECT(1072,612),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C11__A2__7S7864C1[] = {
  ABISELECT(1072,612),
  ABISELECT(1072,612),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C11__A2__7S7864C1[] = {
  ABISELECT(936,532),
  ABISELECT(-136,-80),
  ABISELECT(936,532),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void _ZN8S7864C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void _ZN8S7864C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C15__A1__7S7864C1[] = {
  ABISELECT(-232,-140),
  ABISELECT(-1144,-656),
  ABISELECT(-560,-336),
  ABISELECT(-1600,-924),
  0,
  ABISELECT(-1280,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C15__A1__7S7864C1[] = {
  ABISELECT(1600,924),
  ABISELECT(320,188),
  ABISELECT(1600,924),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C15__A1__7S7864C1[] = {
  ABISELECT(1280,736),
  ABISELECT(1280,736),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C15__A1__7S7864C1[] = {
  ABISELECT(560,336),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(560,336),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C15__A1__7S7864C1[] = {
  ABISELECT(1144,656),
  ABISELECT(-136,-80),
  ABISELECT(1144,656),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C15__A1__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(512,308),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev),
};
static  VTT_ENTRY vtt_S7864C1[] = {
  {&(_ZTV7S7864C1[14]),  14,152},
  {&(_tg__ZTV7S7864C2__7S7864C1[13]),  13,15},
  {&(_tg__ZTV8S7864C147S7864C2__7S7864C1[8]),  8,10},
  {&(_tg__ZTV8S7864C158S7864C147S7864C2__7S7864C1[8]),  8,10},
  {&(_tg__ZTV8S7864C158S7864C147S7864C2__7S7864C1[8]),  8,10},
  {&(_tg__ZTV8S19676C9__8S7864C158S7864C147S7864C2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C158S7864C147S7864C2__7S7864C1[6]),  6,8},
  {&(_tg__ZTV7S7864C6__8S7864C158S7864C147S7864C2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C158S7864C147S7864C2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S7864C147S7864C2__7S7864C1[8]),  8,10},
  {&(_tg__ZTV8S19676C9__8S7864C147S7864C2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C147S7864C2__7S7864C1[6]),  6,8},
  {&(_tg__ZTV7S7864C6__8S7864C147S7864C2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C147S7864C2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C2__7S7864C1[13]),  13,15},
  {&(_tg__ZTV8S19676C9__7S7864C2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C5__7S7864C2__7S7864C1[11]),  11,13},
  {&(_tg__ZTV7S7864C6__7S7864C2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C7__7S7864C2__7S7864C1[8]),  8,10},
  {&(_tg__ZTV7S7864C8__7S7864C2__7S7864C1[5]),  5,7},
  {&(_tg__ZTV7S7864C97S7864C7__7S7864C2__7S7864C1[6]),  6,8},
  {&(_tg__ZTV8S7864C10__7S7864C2__7S7864C1[6]),  6,8},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C97S7864C97S7864C7__A2__7S7864C2__7S7864C1[2]),  2,4},
  {&(_tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C107S7864C7__A1__7S7864C2__7S7864C1[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C9__A1__7S7864C2__7S7864C1[7]),  7,9},
  {&(_tg__ZTV8S19676C97S7864C9__A4__7S7864C2__7S7864C1[2]),  2,4},
  {&(_tg__ZTV7S7864C37S7864C9__A9__7S7864C2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C88S7864C107S7864C5__A3__7S7864C2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S7864C11__A2__7S7864C2__7S7864C1[5]),  5,7},
  {&(_tg__ZTV8S7864C16__7S7864C1[8]),  8,10},
  {&(_tg__ZTV8S7864C118S7864C16__A3__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C118S7864C16__A12__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C118S7864C16__A12__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C118S7864C16__A3__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C118S7864C16__A3__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S7864C15__8S7864C16__7S7864C1[8]),  8,10},
  {&(_tg__ZTV7S7864C3__8S7864C16__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S7864C16__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C16__7S7864C1[6]),  6,8},
  {&(_tg__ZTV7S7864C6__8S7864C16__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C16__7S7864C1[4]),  4,6},
  {&(_ZTV7S7864C1[14]),  14,152},
  {&(_ZTV7S7864C1[29]),  29,152},
  {&(_ZTV7S7864C1[42]),  42,152},
  {&(_ZTV7S7864C1[54]),  54,152},
  {&(_ZTV7S7864C1[64]),  64,152},
  {&(_ZTV7S7864C1[101]),  101,152},
  {&(_ZTV7S7864C1[72]),  72,152},
  {&(_ZTV7S7864C1[109]),  109,152},
  {&(_ZTV7S7864C1[115]),  115,152},
  {&(_ZTV7S7864C1[76]),  76,152},
  {&(_ZTV7S7864C1[81]),  81,152},
  {&(_ZTV7S7864C1[88]),  88,152},
  {&(_ZTV7S7864C1[94]),  94,152},
  {&(_ZTV7S7864C1[124]),  124,152},
  {&(_ZTV7S7864C1[128]),  128,152},
  {&(_ZTV7S7864C1[133]),  133,152},
  {&(_ZTV7S7864C1[48]),  48,152},
  {&(_ZTV7S7864C1[140]),  140,152},
  {&(_ZTV7S7864C1[24]),  24,152},
  {&(_ZTV7S7864C1[150]),  150,152},
  {&(_tg__ZTV7S7864C3__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C5__7S7864C1[10]),  10,12},
  {&(_tg__ZTV8S7864C107S7864C5__A2__7S7864C1[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C107S7864C5__A3__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C107S7864C5__A10__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C5__A10__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C107S7864C5__A3__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C107S7864C5__A3__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C107S7864C5__A2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C107S7864C5__A2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C107S7864C5__A2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C107S7864C5__A2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C6__7S7864C5__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C5__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C7__7S7864C5__7S7864C1[8]),  8,10},
  {&(_tg__ZTV7S7864C3__A1__7S7864C5__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C8__7S7864C5__7S7864C1[5]),  5,7},
  {&(_tg__ZTV7S7864C97S7864C7__7S7864C5__7S7864C1[6]),  6,8},
  {&(_tg__ZTV8S7864C10__7S7864C5__7S7864C1[6]),  6,8},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C5__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C97S7864C97S7864C7__A2__7S7864C5__7S7864C1[2]),  2,4},
  {&(_tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C5__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C107S7864C7__A1__7S7864C5__7S7864C1[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C5__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C9__A1__7S7864C5__7S7864C1[7]),  7,9},
  {&(_tg__ZTV8S19676C97S7864C9__A4__7S7864C5__7S7864C1[2]),  2,4},
  {&(_tg__ZTV7S7864C37S7864C9__A9__7S7864C5__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C88S7864C10__A3__7S7864C5__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C6__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C7__7S7864C1[7]),  7,9},
  {&(_tg__ZTV7S7864C67S7864C7__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C67S7864C7__A3__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C67S7864C7__A3__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C67S7864C7__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C97S7864C7__7S7864C1[6]),  6,8},
  {&(_tg__ZTV8S7864C117S7864C97S7864C7__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C117S7864C97S7864C7__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C117S7864C97S7864C7__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C97S7864C7__A6__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C97S7864C7__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C97S7864C7__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C97S7864C7__7S7864C1[6]),  6,8},
  {&(_tg__ZTV7S7864C3__A1__7S7864C97S7864C7__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__7S7864C97S7864C7__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A__7S7864C97S7864C7__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C107S7864C7__A1__7S7864C1[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C107S7864C7__A2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C107S7864C7__A2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C107S7864C7__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C107S7864C7__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C107S7864C7__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C107S7864C7__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C3__7S7864C7__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C7__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C8__7S7864C7__7S7864C1[5]),  5,7},
  {&(_tg__ZTV7S7864C6__7S7864C7__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C9__7S7864C7__7S7864C1[6]),  6,8},
  {&(_tg__ZTV8S7864C10__7S7864C7__7S7864C1[6]),  6,8},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C7__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C9__A6__7S7864C7__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C10__A__7S7864C7__7S7864C1[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__A2__7S7864C7__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C8__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C8__A2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C8__A2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C8__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C8__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C1[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A4__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A4__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C9__A1__7S7864C1[6]),  6,8},
  {&(_tg__ZTV8S7864C117S7864C9__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C117S7864C9__A8__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C117S7864C9__A8__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C117S7864C9__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C117S7864C9__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C9__A9__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C9__A9__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C9__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C9__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C9__A1__7S7864C1[6]),  6,8},
  {&(_tg__ZTV7S7864C3__A1__7S7864C9__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__7S7864C9__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A__7S7864C9__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C11__A2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C11__A11__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C11__A11__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C11__A2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C11__A2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S7864C15__A1__7S7864C1[8]),  8,10},
  {&(_tg__ZTV7S7864C3__8S7864C15__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S7864C15__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C15__A1__7S7864C1[6]),  6,8},
  {&(_tg__ZTV7S7864C6__8S7864C15__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C15__A1__7S7864C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7864C1[];
extern  VTBL_ENTRY _ZTV7S7864C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C1[];
static VTBL_ENTRY alt_thunk_names137[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7864C7D0Ev,_ZThn264_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7864C7D1Ev,_ZThn264_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C7D0Ev,_ZThn256_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C7D1Ev,_ZThn256_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C9D0Ev,_ZThn208_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C9D1Ev,_ZThn208_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C5D0Ev,_ZTv0_n28_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N7S7864C5D0Ev,_ZThn412_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C5D1Ev,_ZTv0_n28_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N7S7864C5D1Ev,_ZThn412_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C5D0Ev,_ZTv0_n24_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N7S7864C5D0Ev,_ZThn372_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C5D1Ev,_ZTv0_n24_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N7S7864C5D1Ev,_ZThn372_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C5D0Ev,_ZTv0_n20_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N7S7864C5D0Ev,_ZThn364_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C5D1Ev,_ZTv0_n20_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N7S7864C5D1Ev,_ZThn364_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C5D0Ev,_ZTv0_n32_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7864C5D0Ev,_ZThn108_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C5D1Ev,_ZTv0_n32_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7864C5D1Ev,_ZThn108_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7864C5D0Ev,_ZThn52_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7864C5D1Ev,_ZThn52_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7864C10D0Ev,_ZThn52_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7864C10D1Ev,_ZThn52_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7864C8D0Ev,_ZThn24_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7864C8D1Ev,_ZThn24_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C16D0Ev,_ZTv0_n24_N8S7864C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn928_N8S7864C16D0Ev,_ZThn528_N8S7864C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C16D1Ev,_ZTv0_n24_N8S7864C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn928_N8S7864C16D1Ev,_ZThn528_N8S7864C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C16D0Ev,_ZTv0_n12_N8S7864C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7864C16D0Ev,_ZThn128_N8S7864C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C16D1Ev,_ZTv0_n12_N8S7864C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7864C16D1Ev,_ZThn128_N8S7864C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S7864C16D0Ev,_ZThn208_N8S7864C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S7864C16D0Ev,_ZThn864_N8S7864C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S7864C16D1Ev,_ZThn208_N8S7864C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S7864C16D1Ev,_ZThn864_N8S7864C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S7864C11D0Ev,_ZThn208_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S7864C11D1Ev,_ZThn208_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7864C11D0Ev,_ZThn128_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7864C11D1Ev,_ZThn128_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7864C3D0Ev,_ZThn188_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7864C3D0Ev,_ZThn128_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7864C3D1Ev,_ZThn188_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7864C3D1Ev,_ZThn128_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C2D0Ev,_ZTv0_n28_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N7S7864C2D0Ev,_ZThn628_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C2D1Ev,_ZTv0_n28_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N7S7864C2D1Ev,_ZThn628_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C2D0Ev,_ZTv0_n24_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N7S7864C2D0Ev,_ZThn588_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C2D1Ev,_ZTv0_n24_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N7S7864C2D1Ev,_ZThn588_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N7S7864C2D0Ev,_ZThn800_N7S7864C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1016_N7S7864C2D0Ev,_ZThn580_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N7S7864C2D1Ev,_ZThn800_N7S7864C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1016_N7S7864C2D1Ev,_ZThn580_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C2D0Ev,_ZTv0_n32_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S7864C2D0Ev,_ZThn324_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C2D1Ev,_ZTv0_n32_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S7864C2D1Ev,_ZThn324_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7864C2D0Ev,_ZTv0_n44_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C2D0Ev,_ZThn216_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7864C2D1Ev,_ZTv0_n44_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C2D1Ev,_ZThn216_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C2D0Ev,_ZTv0_n12_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7864C2D0Ev,_ZThn188_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C2D1Ev,_ZTv0_n12_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7864C2D1Ev,_ZThn188_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C14D0Ev,_ZTv0_n24_N8S7864C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N8S7864C14D0Ev,_ZThn588_N8S7864C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C14D1Ev,_ZTv0_n24_N8S7864C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N8S7864C14D1Ev,_ZThn588_N8S7864C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C14D0Ev,_ZTv0_n12_N8S7864C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S7864C14D0Ev,_ZThn188_N8S7864C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C14D1Ev,_ZTv0_n12_N8S7864C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S7864C14D1Ev,_ZThn188_N8S7864C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N8S7864C15D0Ev,_ZThn588_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N8S7864C15D1Ev,_ZThn588_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S7864C15D0Ev,_ZThn188_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S7864C15D1Ev,_ZThn188_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)_ZN8S7864C15D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S7864C15D0Ev,_ZThn268_N8S7864C15D0Ev),
  (VTBL_ENTRY)_ZN8S7864C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)_ZN8S7864C15D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S7864C15D1Ev,_ZThn268_N8S7864C15D1Ev),
  (VTBL_ENTRY)_ZN8S7864C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S7864C14D0Ev,_ZThn268_N8S7864C14D0Ev),
  (VTBL_ENTRY)_ZN8S7864C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S7864C14D1Ev,_ZThn268_N8S7864C14D1Ev),
  (VTBL_ENTRY)_ZN8S7864C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C2D0Ev,_ZThn268_N7S7864C2D0Ev),
  (VTBL_ENTRY)_ZN7S7864C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C2D1Ev,_ZThn268_N7S7864C2D1Ev),
  (VTBL_ENTRY)_ZN7S7864C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C1D0Ev,_ZTv0_n28_N7S7864C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N7S7864C1D0Ev,_ZThn628_N7S7864C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C1D1Ev,_ZTv0_n28_N7S7864C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N7S7864C1D1Ev,_ZThn628_N7S7864C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C1D0Ev,_ZTv0_n24_N7S7864C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N7S7864C1D0Ev,_ZThn588_N7S7864C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C1D1Ev,_ZTv0_n24_N7S7864C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N7S7864C1D1Ev,_ZThn588_N7S7864C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C1D0Ev,_ZTv0_n20_N7S7864C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N7S7864C1D0Ev,_ZThn800_N7S7864C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1016_N7S7864C1D0Ev,_ZThn580_N7S7864C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C1D1Ev,_ZTv0_n20_N7S7864C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N7S7864C1D1Ev,_ZThn800_N7S7864C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1016_N7S7864C1D1Ev,_ZThn580_N7S7864C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C1D0Ev,_ZTv0_n32_N7S7864C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S7864C1D0Ev,_ZThn324_N7S7864C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C1D1Ev,_ZTv0_n32_N7S7864C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S7864C1D1Ev,_ZThn324_N7S7864C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7864C1D0Ev,_ZTv0_n44_N7S7864C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C1D0Ev,_ZThn216_N7S7864C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7864C1D1Ev,_ZTv0_n44_N7S7864C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C1D1Ev,_ZThn216_N7S7864C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C1D0Ev,_ZTv0_n12_N7S7864C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7864C1D0Ev,_ZThn188_N7S7864C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C1D1Ev,_ZTv0_n12_N7S7864C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7864C1D1Ev,_ZThn188_N7S7864C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C1D0Ev,_ZTv0_n16_N7S7864C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1600_N7S7864C1D0Ev,_ZThn924_N7S7864C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C1D0Ev,_ZThn268_N7S7864C1D0Ev),
  (VTBL_ENTRY)_ZN7S7864C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C1D1Ev,_ZTv0_n16_N7S7864C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1600_N7S7864C1D1Ev,_ZThn924_N7S7864C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C1D1Ev,_ZThn268_N7S7864C1D1Ev),
  (VTBL_ENTRY)_ZN7S7864C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C1 = {  "S7864C1", // class name
  bases_S7864C1, 44,
  &(vtc_S7864C1[0]), // expected_vtbl_contents
  &(vtt_S7864C1[0]), // expected_vtt_contents
  ABISELECT(1616,932), // object size
  NSPAIRA(_ZTI7S7864C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7864C1),152, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7864C1),176, //virtual table table var
  41, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names137,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1022C3_nt  : S3423C8_nt {
};
//SIG(-1 S1022C3_nt) C1{ BC2{ m Fi}}



//skip512 S1022C3_nt

#else // __cplusplus

extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
static Base_Class bases_S1022C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1022C3_nt[];
VTBL_ENTRY *P__ZTI10S1022C3_nt = _ZTI10S1022C3_nt; 
Class_Descriptor cd_S1022C3_nt = {  "S1022C3_nt", // class name
  bases_S1022C3_nt, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI10S1022C3_nt),ABISELECT(24,12), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1022C2  : S1022C3_nt {
  ::S4161C4_nt s1022c2f0;
  void *s1022c2f1;
  virtual  ~S1022C2(); // _ZN7S1022C2D1Ev
  virtual void  v17(); // _ZN7S1022C23v17Ev
  virtual void  v18(); // _ZN7S1022C23v18Ev
  virtual void  v19(); // _ZN7S1022C23v19Ev
  virtual void  v20(); // _ZN7S1022C23v20Ev
  virtual void  v21(); // _ZN7S1022C23v21Ev
  virtual void  v22(); // _ZN7S1022C23v22Ev
  virtual void  v23(); // _ZN7S1022C23v23Ev
  virtual void  v24(); // _ZN7S1022C23v24Ev
  virtual void  v25(); // _ZN7S1022C23v25Ev
  virtual void  v26(); // _ZN7S1022C23v26Ev
  virtual void  v27(); // _ZN7S1022C23v27Ev
  virtual void  v28(); // _ZN7S1022C23v28Ev
  virtual void  v29(); // _ZN7S1022C23v29Ev
  virtual void  v30(); // _ZN7S1022C23v30Ev
  virtual void  v31(); // _ZN7S1022C23v31Ev
  virtual void  v32(); // _ZN7S1022C23v32Ev
  virtual void  v33(); // _ZN7S1022C23v33Ev
  virtual void  v34(); // _ZN7S1022C23v34Ev
  virtual void  v35(); // _ZN7S1022C23v35Ev
  virtual void  v36(); // _ZN7S1022C23v36Ev
  virtual void  v37(); // _ZN7S1022C23v37Ev
  virtual void  v38(); // _ZN7S1022C23v38Ev
  virtual void  v39(); // _ZN7S1022C23v39Ev
  S1022C2(); // tgen
};
//SIG(-1 S1022C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 FC4{ m Fp} Fp}


 S1022C2 ::~S1022C2(){ note_dtor("S1022C2", this);}
void  S1022C2 ::v17(){vfunc_called(this, "_ZN7S1022C23v17Ev");}
void  S1022C2 ::v18(){vfunc_called(this, "_ZN7S1022C23v18Ev");}
void  S1022C2 ::v19(){vfunc_called(this, "_ZN7S1022C23v19Ev");}
void  S1022C2 ::v20(){vfunc_called(this, "_ZN7S1022C23v20Ev");}
void  S1022C2 ::v21(){vfunc_called(this, "_ZN7S1022C23v21Ev");}
void  S1022C2 ::v22(){vfunc_called(this, "_ZN7S1022C23v22Ev");}
void  S1022C2 ::v23(){vfunc_called(this, "_ZN7S1022C23v23Ev");}
void  S1022C2 ::v24(){vfunc_called(this, "_ZN7S1022C23v24Ev");}
void  S1022C2 ::v25(){vfunc_called(this, "_ZN7S1022C23v25Ev");}
void  S1022C2 ::v26(){vfunc_called(this, "_ZN7S1022C23v26Ev");}
void  S1022C2 ::v27(){vfunc_called(this, "_ZN7S1022C23v27Ev");}
void  S1022C2 ::v28(){vfunc_called(this, "_ZN7S1022C23v28Ev");}
void  S1022C2 ::v29(){vfunc_called(this, "_ZN7S1022C23v29Ev");}
void  S1022C2 ::v30(){vfunc_called(this, "_ZN7S1022C23v30Ev");}
void  S1022C2 ::v31(){vfunc_called(this, "_ZN7S1022C23v31Ev");}
void  S1022C2 ::v32(){vfunc_called(this, "_ZN7S1022C23v32Ev");}
void  S1022C2 ::v33(){vfunc_called(this, "_ZN7S1022C23v33Ev");}
void  S1022C2 ::v34(){vfunc_called(this, "_ZN7S1022C23v34Ev");}
void  S1022C2 ::v35(){vfunc_called(this, "_ZN7S1022C23v35Ev");}
void  S1022C2 ::v36(){vfunc_called(this, "_ZN7S1022C23v36Ev");}
void  S1022C2 ::v37(){vfunc_called(this, "_ZN7S1022C23v37Ev");}
void  S1022C2 ::v38(){vfunc_called(this, "_ZN7S1022C23v38Ev");}
void  S1022C2 ::v39(){vfunc_called(this, "_ZN7S1022C23v39Ev");}
S1022C2 ::S1022C2(){ note_ctor("S1022C2", this);} // tgen

static void Test_S1022C2()
{
  extern Class_Descriptor cd_S1022C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S1022C2, buf);
    S1022C2 *dp, &lv = *(dp=new (buf) S1022C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1022C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1022C2)");
    check_base_class_offset(lv, (S3423C8_nt*)(S1022C3_nt*), ABISELECT(8,4), "S1022C2");
    check_base_class_offset(lv, (S1022C3_nt*), ABISELECT(8,4), "S1022C2");
    check_field_offset(lv, s1022c2f0, ABISELECT(16,8), "S1022C2.s1022c2f0");
    check_field_offset(lv, s1022c2f1, ABISELECT(24,12), "S1022C2.s1022c2f1");
    test_class_info(&lv, &cd_S1022C2);
    dp->~S1022C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1022C2(Test_S1022C2, "S1022C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S1022C2C1Ev();
extern void _ZN7S1022C2D1Ev();
Name_Map name_map_S1022C2[] = {
  NSPAIR(_ZN7S1022C2C1Ev),
  NSPAIR(_ZN7S1022C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S1022C3_nt;
extern VTBL_ENTRY _ZTI10S1022C3_nt[];
static Base_Class bases_S1022C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1022C3_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1022C2[];
extern void _ZN7S1022C2D1Ev();
extern void _ZN7S1022C2D0Ev();
extern void _ZN7S1022C23v17Ev();
extern void _ZN7S1022C23v18Ev();
extern void _ZN7S1022C23v19Ev();
extern void _ZN7S1022C23v20Ev();
extern void _ZN7S1022C23v21Ev();
extern void _ZN7S1022C23v22Ev();
extern void _ZN7S1022C23v23Ev();
extern void _ZN7S1022C23v24Ev();
extern void _ZN7S1022C23v25Ev();
extern void _ZN7S1022C23v26Ev();
extern void _ZN7S1022C23v27Ev();
extern void _ZN7S1022C23v28Ev();
extern void _ZN7S1022C23v29Ev();
extern void _ZN7S1022C23v30Ev();
extern void _ZN7S1022C23v31Ev();
extern void _ZN7S1022C23v32Ev();
extern void _ZN7S1022C23v33Ev();
extern void _ZN7S1022C23v34Ev();
extern void _ZN7S1022C23v35Ev();
extern void _ZN7S1022C23v36Ev();
extern void _ZN7S1022C23v37Ev();
extern void _ZN7S1022C23v38Ev();
extern void _ZN7S1022C23v39Ev();
static  VTBL_ENTRY vtc_S1022C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1022C2[0]),
  (VTBL_ENTRY)&_ZN7S1022C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1022C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v28Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v29Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v30Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v31Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v32Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v33Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v34Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v35Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v36Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v37Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v38Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v39Ev,
};
extern VTBL_ENTRY _ZTI7S1022C2[];
extern  VTBL_ENTRY _ZTV7S1022C2[];
Class_Descriptor cd_S1022C2 = {  "S1022C2", // class name
  bases_S1022C2, 2,
  &(vtc_S1022C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S1022C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1022C2),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1022C10_nt  {
  void *s1022c10f0;
  int s1022c10f1;
  void  mf1022c10(); // _ZN11S1022C10_nt9mf1022c10Ev
};
//SIG(-1 S1022C10_nt) C1{ m Fp Fi}


void  S1022C10_nt ::mf1022c10(){}

//skip512 S1022C10_nt

#else // __cplusplus

Class_Descriptor cd_S1022C10_nt = {  "S1022C10_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(16,8), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1022C9_nt  : S1022C10_nt {
};
//SIG(-1 S1022C9_nt) C1{ BC2{ m Fp Fi}}



//skip512 S1022C9_nt

#else // __cplusplus

extern Class_Descriptor cd_S1022C10_nt;
static Base_Class bases_S1022C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1022C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1022C8_nt  {
  int s1022c8f0;
  ::S1022C9_nt s1022c8f1;
  void  mf1022c8(); // _ZN10S1022C8_nt8mf1022c8Ev
};
//SIG(-1 S1022C8_nt) C1{ m Fi FC2{ BC3{ m Fp Fi}}}


void  S1022C8_nt ::mf1022c8(){}

//skip512 S1022C8_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1022C1  : S1022C2 {
  ::S3423C7_nt s1022c1f0;
  ::S3423C4_nt s1022c1f1;
  ::S3423C4_nt s1022c1f2;
  int s1022c1f3;
  ::S1022C8_nt s1022c1f4;
  void *s1022c1f5;
  int s1022c1f6[3];
  __tsi64 s1022c1f7;
  ::S1532C12_nt s1022c1f8;
  int s1022c1f9[3];
  unsigned char s1022c1f10:1;
  unsigned char s1022c1f11:1;
  unsigned char s1022c1f12:1;
  unsigned char s1022c1f13:1;
  unsigned char s1022c1f14:1;
  unsigned char s1022c1f15:1;
  unsigned char s1022c1f16:1;
  unsigned char s1022c1f17:1;
  virtual  ~S1022C1(); // _ZN7S1022C1D1Ev
  virtual void  v1(); // _ZN7S1022C12v1Ev
  virtual void  v2(); // _ZN7S1022C12v2Ev
  virtual void  v3(); // _ZN7S1022C12v3Ev
  virtual void  v4(); // _ZN7S1022C12v4Ev
  virtual void  v5(); // _ZN7S1022C12v5Ev
  virtual void  v6(); // _ZN7S1022C12v6Ev
  virtual void  v7(); // _ZN7S1022C12v7Ev
  virtual void  v8(); // _ZN7S1022C12v8Ev
  virtual void  v9(); // _ZN7S1022C12v9Ev
  virtual void  v10(); // _ZN7S1022C13v10Ev
  virtual void  v11(); // _ZN7S1022C13v11Ev
  virtual void  v12(); // _ZN7S1022C13v12Ev
  virtual void  v13(); // _ZN7S1022C13v13Ev
  virtual void  v14(); // _ZN7S1022C13v14Ev
  virtual void  v15(); // _ZN7S1022C13v15Ev
  virtual void  v16(); // _ZN7S1022C13v16Ev
  S1022C1(); // tgen
};
//SIG(1 S1022C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 FC5{ m Fp} Fp} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 FC6{ m Fp Fi[2]} FC7{ m Fi[2]} FC7 Fi FC8{ m Fi FC9{ BC10{ m Fp Fi}}} Fp Fi[3] FL FC11{ m Fi Fc} Fi[3] Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1}


 S1022C1 ::~S1022C1(){ note_dtor("S1022C1", this);}
void  S1022C1 ::v1(){vfunc_called(this, "_ZN7S1022C12v1Ev");}
void  S1022C1 ::v2(){vfunc_called(this, "_ZN7S1022C12v2Ev");}
void  S1022C1 ::v3(){vfunc_called(this, "_ZN7S1022C12v3Ev");}
void  S1022C1 ::v4(){vfunc_called(this, "_ZN7S1022C12v4Ev");}
void  S1022C1 ::v5(){vfunc_called(this, "_ZN7S1022C12v5Ev");}
void  S1022C1 ::v6(){vfunc_called(this, "_ZN7S1022C12v6Ev");}
void  S1022C1 ::v7(){vfunc_called(this, "_ZN7S1022C12v7Ev");}
void  S1022C1 ::v8(){vfunc_called(this, "_ZN7S1022C12v8Ev");}
void  S1022C1 ::v9(){vfunc_called(this, "_ZN7S1022C12v9Ev");}
void  S1022C1 ::v10(){vfunc_called(this, "_ZN7S1022C13v10Ev");}
void  S1022C1 ::v11(){vfunc_called(this, "_ZN7S1022C13v11Ev");}
void  S1022C1 ::v12(){vfunc_called(this, "_ZN7S1022C13v12Ev");}
void  S1022C1 ::v13(){vfunc_called(this, "_ZN7S1022C13v13Ev");}
void  S1022C1 ::v14(){vfunc_called(this, "_ZN7S1022C13v14Ev");}
void  S1022C1 ::v15(){vfunc_called(this, "_ZN7S1022C13v15Ev");}
void  S1022C1 ::v16(){vfunc_called(this, "_ZN7S1022C13v16Ev");}
S1022C1 ::S1022C1(){ note_ctor("S1022C1", this);} // tgen

static void Test_S1022C1()
{
  extern Class_Descriptor cd_S1022C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,28)];
    init_test(&cd_S1022C1, buf);
    S1022C1 *dp, &lv = *(dp=new (buf) S1022C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,108), "sizeof(S1022C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1022C1)");
    check_base_class_offset(lv, (S3423C8_nt*)(S1022C3_nt*)(S1022C2*), ABISELECT(8,4), "S1022C1");
    check_base_class_offset(lv, (S1022C3_nt*)(S1022C2*), ABISELECT(8,4), "S1022C1");
    check_base_class_offset(lv, (S1022C2*), 0, "S1022C1");
    check_field_offset(lv, s1022c1f0, ABISELECT(32,16), "S1022C1.s1022c1f0");
    check_field_offset(lv, s1022c1f1, ABISELECT(48,28), "S1022C1.s1022c1f1");
    check_field_offset(lv, s1022c1f2, ABISELECT(56,36), "S1022C1.s1022c1f2");
    check_field_offset(lv, s1022c1f3, ABISELECT(64,44), "S1022C1.s1022c1f3");
    check_field_offset(lv, s1022c1f4, ABISELECT(72,48), "S1022C1.s1022c1f4");
    check_field_offset(lv, s1022c1f5, ABISELECT(96,60), "S1022C1.s1022c1f5");
    check_field_offset(lv, s1022c1f6, ABISELECT(104,64), "S1022C1.s1022c1f6");
    check_field_offset(lv, s1022c1f7, ABISELECT(120,76), "S1022C1.s1022c1f7");
    check_field_offset(lv, s1022c1f8, ABISELECT(128,84), "S1022C1.s1022c1f8");
    check_field_offset(lv, s1022c1f9, ABISELECT(136,92), "S1022C1.s1022c1f9");
    set_bf_and_test(lv, s1022c1f10, ABISELECT(148,104), 0, 1, 1, "S1022C1");
    set_bf_and_test(lv, s1022c1f11, ABISELECT(148,104), 1, 1, 1, "S1022C1");
    set_bf_and_test(lv, s1022c1f12, ABISELECT(148,104), 2, 1, 1, "S1022C1");
    set_bf_and_test(lv, s1022c1f13, ABISELECT(148,104), 3, 1, 1, "S1022C1");
    set_bf_and_test(lv, s1022c1f14, ABISELECT(148,104), 4, 1, 1, "S1022C1");
    set_bf_and_test(lv, s1022c1f15, ABISELECT(148,104), 5, 1, 1, "S1022C1");
    set_bf_and_test(lv, s1022c1f16, ABISELECT(148,104), 6, 1, 1, "S1022C1");
    set_bf_and_test(lv, s1022c1f17, ABISELECT(148,104), 7, 1, 1, "S1022C1");
    test_class_info(&lv, &cd_S1022C1);
    dp->~S1022C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1022C1(Test_S1022C1, "S1022C1", ABISELECT(152,108));

#else // __cplusplus

extern void _ZN7S1022C1C1Ev();
extern void _ZN7S1022C1D1Ev();
Name_Map name_map_S1022C1[] = {
  NSPAIR(_ZN7S1022C1C1Ev),
  NSPAIR(_ZN7S1022C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S1022C3_nt;
extern VTBL_ENTRY _ZTI10S1022C3_nt[];
extern Class_Descriptor cd_S1022C2;
extern VTBL_ENTRY _ZTI7S1022C2[];
extern  VTBL_ENTRY _ZTV7S1022C2[];
static Base_Class bases_S1022C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1022C3_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1022C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1022C1[];
extern void _ZN7S1022C1D1Ev();
extern void _ZN7S1022C1D0Ev();
extern void _ZN7S1022C23v17Ev();
extern void _ZN7S1022C23v18Ev();
extern void _ZN7S1022C23v19Ev();
extern void _ZN7S1022C23v20Ev();
extern void _ZN7S1022C23v21Ev();
extern void _ZN7S1022C23v22Ev();
extern void _ZN7S1022C23v23Ev();
extern void _ZN7S1022C23v24Ev();
extern void _ZN7S1022C23v25Ev();
extern void _ZN7S1022C23v26Ev();
extern void _ZN7S1022C23v27Ev();
extern void _ZN7S1022C23v28Ev();
extern void _ZN7S1022C23v29Ev();
extern void _ZN7S1022C23v30Ev();
extern void _ZN7S1022C23v31Ev();
extern void _ZN7S1022C23v32Ev();
extern void _ZN7S1022C23v33Ev();
extern void _ZN7S1022C23v34Ev();
extern void _ZN7S1022C23v35Ev();
extern void _ZN7S1022C23v36Ev();
extern void _ZN7S1022C23v37Ev();
extern void _ZN7S1022C23v38Ev();
extern void _ZN7S1022C23v39Ev();
extern void _ZN7S1022C12v1Ev();
extern void _ZN7S1022C12v2Ev();
extern void _ZN7S1022C12v3Ev();
extern void _ZN7S1022C12v4Ev();
extern void _ZN7S1022C12v5Ev();
extern void _ZN7S1022C12v6Ev();
extern void _ZN7S1022C12v7Ev();
extern void _ZN7S1022C12v8Ev();
extern void _ZN7S1022C12v9Ev();
extern void _ZN7S1022C13v10Ev();
extern void _ZN7S1022C13v11Ev();
extern void _ZN7S1022C13v12Ev();
extern void _ZN7S1022C13v13Ev();
extern void _ZN7S1022C13v14Ev();
extern void _ZN7S1022C13v15Ev();
extern void _ZN7S1022C13v16Ev();
static  VTBL_ENTRY vtc_S1022C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1022C1[0]),
  (VTBL_ENTRY)&_ZN7S1022C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1022C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v28Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v29Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v30Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v31Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v32Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v33Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v34Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v35Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v36Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v37Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v38Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v39Ev,
  (VTBL_ENTRY)&_ZN7S1022C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1022C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1022C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1022C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1022C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1022C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1022C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1022C12v8Ev,
  (VTBL_ENTRY)&_ZN7S1022C12v9Ev,
  (VTBL_ENTRY)&_ZN7S1022C13v10Ev,
  (VTBL_ENTRY)&_ZN7S1022C13v11Ev,
  (VTBL_ENTRY)&_ZN7S1022C13v12Ev,
  (VTBL_ENTRY)&_ZN7S1022C13v13Ev,
  (VTBL_ENTRY)&_ZN7S1022C13v14Ev,
  (VTBL_ENTRY)&_ZN7S1022C13v15Ev,
  (VTBL_ENTRY)&_ZN7S1022C13v16Ev,
};
extern VTBL_ENTRY _ZTI7S1022C1[];
extern  VTBL_ENTRY _ZTV7S1022C1[];
Class_Descriptor cd_S1022C1 = {  "S1022C1", // class name
  bases_S1022C1, 3,
  &(vtc_S1022C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,108), // object size
  NSPAIRA(_ZTI7S1022C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1022C1),43, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6730C2  {
  int s6730c2f0;
  __tsi64 s6730c2f1;
  void *s6730c2f2[4];
  int s6730c2f3[2];
  void *s6730c2f4;
  ::S3423C4_nt s6730c2f5;
  void *s6730c2f6[2];
  virtual  ~S6730C2(); // _ZN7S6730C2D1Ev
  virtual void  v3(); // _ZN7S6730C22v3Ev
  virtual void  v4(); // _ZN7S6730C22v4Ev
  virtual void  v5(); // _ZN7S6730C22v5Ev
  virtual void  v6(); // _ZN7S6730C22v6Ev
  virtual void  v7(); // _ZN7S6730C22v7Ev
  virtual void  v8(); // _ZN7S6730C22v8Ev
  virtual void  v9(); // _ZN7S6730C22v9Ev
  virtual void  v10(); // _ZN7S6730C23v10Ev
  virtual void  v11(); // _ZN7S6730C23v11Ev
  virtual void  v12(); // _ZN7S6730C23v12Ev
  virtual void  v13(); // _ZN7S6730C23v13Ev
  virtual void  v14(); // _ZN7S6730C23v14Ev
  virtual void  v15(); // _ZN7S6730C23v15Ev
  virtual void  v16(); // _ZN7S6730C23v16Ev
  virtual void  v17(); // _ZN7S6730C23v17Ev
  virtual void  v18(); // _ZN7S6730C23v18Ev
  virtual void  v19(); // _ZN7S6730C23v19Ev
  virtual void  v20(); // _ZN7S6730C23v20Ev
  virtual void  v21(); // _ZN7S6730C23v21Ev
  virtual void  v22(); // _ZN7S6730C23v22Ev
  virtual void  v23(); // _ZN7S6730C23v23Ev
  virtual void  v24(); // _ZN7S6730C23v24Ev
  virtual void  v25(); // _ZN7S6730C23v25Ev
  virtual void  v26(); // _ZN7S6730C23v26Ev
  virtual void  v27(); // _ZN7S6730C23v27Ev
  virtual void  v28(); // _ZN7S6730C23v28Ev
  virtual void  v29(); // _ZN7S6730C23v29Ev
  virtual void  v30(); // _ZN7S6730C23v30Ev
  virtual void  v31(); // _ZN7S6730C23v31Ev
  virtual void  v32(); // _ZN7S6730C23v32Ev
  virtual void  v33(); // _ZN7S6730C23v33Ev
  virtual void  v34(); // _ZN7S6730C23v34Ev
  virtual void  v35(); // _ZN7S6730C23v35Ev
  virtual void  v36(); // _ZN7S6730C23v36Ev
  virtual void  v37(); // _ZN7S6730C23v37Ev
  virtual void  v38(); // _ZN7S6730C23v38Ev
  virtual void  v39(); // _ZN7S6730C23v39Ev
  virtual void  v40(); // _ZN7S6730C23v40Ev
  virtual void  v41(); // _ZN7S6730C23v41Ev
  virtual void  v42(); // _ZN7S6730C23v42Ev
  virtual void  v43(); // _ZN7S6730C23v43Ev
  virtual void  v44(); // _ZN7S6730C23v44Ev
  virtual void  v45(); // _ZN7S6730C23v45Ev
  virtual void  v46(); // _ZN7S6730C23v46Ev
  virtual void  v47(); // _ZN7S6730C23v47Ev
  virtual void  v48(); // _ZN7S6730C23v48Ev
  virtual void  v49(); // _ZN7S6730C23v49Ev
  virtual void  v50(); // _ZN7S6730C23v50Ev
  virtual void  v51(); // _ZN7S6730C23v51Ev
  virtual void  v52(); // _ZN7S6730C23v52Ev
  virtual void  v53(); // _ZN7S6730C23v53Ev
  virtual void  v54(); // _ZN7S6730C23v54Ev
  virtual void  v55(); // _ZN7S6730C23v55Ev
  virtual void  v56(); // _ZN7S6730C23v56Ev
  virtual void  v57(); // _ZN7S6730C23v57Ev
  virtual void  v58(); // _ZN7S6730C23v58Ev
  virtual void  v59(); // _ZN7S6730C23v59Ev
  virtual void  v60(); // _ZN7S6730C23v60Ev
  virtual void  v61(); // _ZN7S6730C23v61Ev
  virtual void  v62(); // _ZN7S6730C23v62Ev
  virtual void  v63(); // _ZN7S6730C23v63Ev
  virtual void  v64(); // _ZN7S6730C23v64Ev
  virtual void  v65(); // _ZN7S6730C23v65Ev
  virtual void  v66(); // _ZN7S6730C23v66Ev
  S6730C2(); // tgen
};
//SIG(-1 S6730C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S6730C2 ::~S6730C2(){ note_dtor("S6730C2", this);}
void  S6730C2 ::v3(){vfunc_called(this, "_ZN7S6730C22v3Ev");}
void  S6730C2 ::v4(){vfunc_called(this, "_ZN7S6730C22v4Ev");}
void  S6730C2 ::v5(){vfunc_called(this, "_ZN7S6730C22v5Ev");}
void  S6730C2 ::v6(){vfunc_called(this, "_ZN7S6730C22v6Ev");}
void  S6730C2 ::v7(){vfunc_called(this, "_ZN7S6730C22v7Ev");}
void  S6730C2 ::v8(){vfunc_called(this, "_ZN7S6730C22v8Ev");}
void  S6730C2 ::v9(){vfunc_called(this, "_ZN7S6730C22v9Ev");}
void  S6730C2 ::v10(){vfunc_called(this, "_ZN7S6730C23v10Ev");}
void  S6730C2 ::v11(){vfunc_called(this, "_ZN7S6730C23v11Ev");}
void  S6730C2 ::v12(){vfunc_called(this, "_ZN7S6730C23v12Ev");}
void  S6730C2 ::v13(){vfunc_called(this, "_ZN7S6730C23v13Ev");}
void  S6730C2 ::v14(){vfunc_called(this, "_ZN7S6730C23v14Ev");}
void  S6730C2 ::v15(){vfunc_called(this, "_ZN7S6730C23v15Ev");}
void  S6730C2 ::v16(){vfunc_called(this, "_ZN7S6730C23v16Ev");}
void  S6730C2 ::v17(){vfunc_called(this, "_ZN7S6730C23v17Ev");}
void  S6730C2 ::v18(){vfunc_called(this, "_ZN7S6730C23v18Ev");}
void  S6730C2 ::v19(){vfunc_called(this, "_ZN7S6730C23v19Ev");}
void  S6730C2 ::v20(){vfunc_called(this, "_ZN7S6730C23v20Ev");}
void  S6730C2 ::v21(){vfunc_called(this, "_ZN7S6730C23v21Ev");}
void  S6730C2 ::v22(){vfunc_called(this, "_ZN7S6730C23v22Ev");}
void  S6730C2 ::v23(){vfunc_called(this, "_ZN7S6730C23v23Ev");}
void  S6730C2 ::v24(){vfunc_called(this, "_ZN7S6730C23v24Ev");}
void  S6730C2 ::v25(){vfunc_called(this, "_ZN7S6730C23v25Ev");}
void  S6730C2 ::v26(){vfunc_called(this, "_ZN7S6730C23v26Ev");}
void  S6730C2 ::v27(){vfunc_called(this, "_ZN7S6730C23v27Ev");}
void  S6730C2 ::v28(){vfunc_called(this, "_ZN7S6730C23v28Ev");}
void  S6730C2 ::v29(){vfunc_called(this, "_ZN7S6730C23v29Ev");}
void  S6730C2 ::v30(){vfunc_called(this, "_ZN7S6730C23v30Ev");}
void  S6730C2 ::v31(){vfunc_called(this, "_ZN7S6730C23v31Ev");}
void  S6730C2 ::v32(){vfunc_called(this, "_ZN7S6730C23v32Ev");}
void  S6730C2 ::v33(){vfunc_called(this, "_ZN7S6730C23v33Ev");}
void  S6730C2 ::v34(){vfunc_called(this, "_ZN7S6730C23v34Ev");}
void  S6730C2 ::v35(){vfunc_called(this, "_ZN7S6730C23v35Ev");}
void  S6730C2 ::v36(){vfunc_called(this, "_ZN7S6730C23v36Ev");}
void  S6730C2 ::v37(){vfunc_called(this, "_ZN7S6730C23v37Ev");}
void  S6730C2 ::v38(){vfunc_called(this, "_ZN7S6730C23v38Ev");}
void  S6730C2 ::v39(){vfunc_called(this, "_ZN7S6730C23v39Ev");}
void  S6730C2 ::v40(){vfunc_called(this, "_ZN7S6730C23v40Ev");}
void  S6730C2 ::v41(){vfunc_called(this, "_ZN7S6730C23v41Ev");}
void  S6730C2 ::v42(){vfunc_called(this, "_ZN7S6730C23v42Ev");}
void  S6730C2 ::v43(){vfunc_called(this, "_ZN7S6730C23v43Ev");}
void  S6730C2 ::v44(){vfunc_called(this, "_ZN7S6730C23v44Ev");}
void  S6730C2 ::v45(){vfunc_called(this, "_ZN7S6730C23v45Ev");}
void  S6730C2 ::v46(){vfunc_called(this, "_ZN7S6730C23v46Ev");}
void  S6730C2 ::v47(){vfunc_called(this, "_ZN7S6730C23v47Ev");}
void  S6730C2 ::v48(){vfunc_called(this, "_ZN7S6730C23v48Ev");}
void  S6730C2 ::v49(){vfunc_called(this, "_ZN7S6730C23v49Ev");}
void  S6730C2 ::v50(){vfunc_called(this, "_ZN7S6730C23v50Ev");}
void  S6730C2 ::v51(){vfunc_called(this, "_ZN7S6730C23v51Ev");}
void  S6730C2 ::v52(){vfunc_called(this, "_ZN7S6730C23v52Ev");}
void  S6730C2 ::v53(){vfunc_called(this, "_ZN7S6730C23v53Ev");}
void  S6730C2 ::v54(){vfunc_called(this, "_ZN7S6730C23v54Ev");}
void  S6730C2 ::v55(){vfunc_called(this, "_ZN7S6730C23v55Ev");}
void  S6730C2 ::v56(){vfunc_called(this, "_ZN7S6730C23v56Ev");}
void  S6730C2 ::v57(){vfunc_called(this, "_ZN7S6730C23v57Ev");}
void  S6730C2 ::v58(){vfunc_called(this, "_ZN7S6730C23v58Ev");}
void  S6730C2 ::v59(){vfunc_called(this, "_ZN7S6730C23v59Ev");}
void  S6730C2 ::v60(){vfunc_called(this, "_ZN7S6730C23v60Ev");}
void  S6730C2 ::v61(){vfunc_called(this, "_ZN7S6730C23v61Ev");}
void  S6730C2 ::v62(){vfunc_called(this, "_ZN7S6730C23v62Ev");}
void  S6730C2 ::v63(){vfunc_called(this, "_ZN7S6730C23v63Ev");}
void  S6730C2 ::v64(){vfunc_called(this, "_ZN7S6730C23v64Ev");}
void  S6730C2 ::v65(){vfunc_called(this, "_ZN7S6730C23v65Ev");}
void  S6730C2 ::v66(){vfunc_called(this, "_ZN7S6730C23v66Ev");}
S6730C2 ::S6730C2(){ note_ctor("S6730C2", this);} // tgen

static void Test_S6730C2()
{
  extern Class_Descriptor cd_S6730C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S6730C2, buf);
    S6730C2 *dp, &lv = *(dp=new (buf) S6730C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S6730C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6730C2)");
    check_field_offset(lv, s6730c2f0, ABISELECT(8,4), "S6730C2.s6730c2f0");
    check_field_offset(lv, s6730c2f1, ABISELECT(16,8), "S6730C2.s6730c2f1");
    check_field_offset(lv, s6730c2f2, ABISELECT(24,16), "S6730C2.s6730c2f2");
    check_field_offset(lv, s6730c2f3, ABISELECT(56,32), "S6730C2.s6730c2f3");
    check_field_offset(lv, s6730c2f4, ABISELECT(64,40), "S6730C2.s6730c2f4");
    check_field_offset(lv, s6730c2f5, ABISELECT(72,44), "S6730C2.s6730c2f5");
    check_field_offset(lv, s6730c2f6, ABISELECT(80,52), "S6730C2.s6730c2f6");
    test_class_info(&lv, &cd_S6730C2);
    dp->~S6730C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6730C2(Test_S6730C2, "S6730C2", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S6730C2C1Ev();
extern void _ZN7S6730C2D1Ev();
Name_Map name_map_S6730C2[] = {
  NSPAIR(_ZN7S6730C2C1Ev),
  NSPAIR(_ZN7S6730C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6730C2[];
extern void _ZN7S6730C2D1Ev();
extern void _ZN7S6730C2D0Ev();
extern void _ZN7S6730C22v3Ev();
extern void _ZN7S6730C22v4Ev();
extern void _ZN7S6730C22v5Ev();
extern void _ZN7S6730C22v6Ev();
extern void _ZN7S6730C22v7Ev();
extern void _ZN7S6730C22v8Ev();
extern void _ZN7S6730C22v9Ev();
extern void _ZN7S6730C23v10Ev();
extern void _ZN7S6730C23v11Ev();
extern void _ZN7S6730C23v12Ev();
extern void _ZN7S6730C23v13Ev();
extern void _ZN7S6730C23v14Ev();
extern void _ZN7S6730C23v15Ev();
extern void _ZN7S6730C23v16Ev();
extern void _ZN7S6730C23v17Ev();
extern void _ZN7S6730C23v18Ev();
extern void _ZN7S6730C23v19Ev();
extern void _ZN7S6730C23v20Ev();
extern void _ZN7S6730C23v21Ev();
extern void _ZN7S6730C23v22Ev();
extern void _ZN7S6730C23v23Ev();
extern void _ZN7S6730C23v24Ev();
extern void _ZN7S6730C23v25Ev();
extern void _ZN7S6730C23v26Ev();
extern void _ZN7S6730C23v27Ev();
extern void _ZN7S6730C23v28Ev();
extern void _ZN7S6730C23v29Ev();
extern void _ZN7S6730C23v30Ev();
extern void _ZN7S6730C23v31Ev();
extern void _ZN7S6730C23v32Ev();
extern void _ZN7S6730C23v33Ev();
extern void _ZN7S6730C23v34Ev();
extern void _ZN7S6730C23v35Ev();
extern void _ZN7S6730C23v36Ev();
extern void _ZN7S6730C23v37Ev();
extern void _ZN7S6730C23v38Ev();
extern void _ZN7S6730C23v39Ev();
extern void _ZN7S6730C23v40Ev();
extern void _ZN7S6730C23v41Ev();
extern void _ZN7S6730C23v42Ev();
extern void _ZN7S6730C23v43Ev();
extern void _ZN7S6730C23v44Ev();
extern void _ZN7S6730C23v45Ev();
extern void _ZN7S6730C23v46Ev();
extern void _ZN7S6730C23v47Ev();
extern void _ZN7S6730C23v48Ev();
extern void _ZN7S6730C23v49Ev();
extern void _ZN7S6730C23v50Ev();
extern void _ZN7S6730C23v51Ev();
extern void _ZN7S6730C23v52Ev();
extern void _ZN7S6730C23v53Ev();
extern void _ZN7S6730C23v54Ev();
extern void _ZN7S6730C23v55Ev();
extern void _ZN7S6730C23v56Ev();
extern void _ZN7S6730C23v57Ev();
extern void _ZN7S6730C23v58Ev();
extern void _ZN7S6730C23v59Ev();
extern void _ZN7S6730C23v60Ev();
extern void _ZN7S6730C23v61Ev();
extern void _ZN7S6730C23v62Ev();
extern void _ZN7S6730C23v63Ev();
extern void _ZN7S6730C23v64Ev();
extern void _ZN7S6730C23v65Ev();
extern void _ZN7S6730C23v66Ev();
static  VTBL_ENTRY vtc_S6730C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6730C2[0]),
  (VTBL_ENTRY)&_ZN7S6730C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6730C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v66Ev,
};
extern VTBL_ENTRY _ZTI7S6730C2[];
extern  VTBL_ENTRY _ZTV7S6730C2[];
Class_Descriptor cd_S6730C2 = {  "S6730C2", // class name
  0,0,//no base classes
  &(vtc_S6730C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S6730C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6730C2),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6730C1  : S6730C2 {
  void *s6730c1f0;
  int s6730c1f1;
  virtual  ~S6730C1(); // _ZN7S6730C1D1Ev
  virtual void  v1(); // _ZN7S6730C12v1Ev
  virtual void  v2(); // _ZN7S6730C12v2Ev
  S6730C1(); // tgen
};
//SIG(1 S6730C1) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 Fp Fi}


 S6730C1 ::~S6730C1(){ note_dtor("S6730C1", this);}
void  S6730C1 ::v1(){vfunc_called(this, "_ZN7S6730C12v1Ev");}
void  S6730C1 ::v2(){vfunc_called(this, "_ZN7S6730C12v2Ev");}
S6730C1 ::S6730C1(){ note_ctor("S6730C1", this);} // tgen

static void Test_S6730C1()
{
  extern Class_Descriptor cd_S6730C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,18)];
    init_test(&cd_S6730C1, buf);
    S6730C1 *dp, &lv = *(dp=new (buf) S6730C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S6730C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6730C1)");
    check_base_class_offset(lv, (S6730C2*), 0, "S6730C1");
    check_field_offset(lv, s6730c1f0, ABISELECT(96,60), "S6730C1.s6730c1f0");
    check_field_offset(lv, s6730c1f1, ABISELECT(104,64), "S6730C1.s6730c1f1");
    test_class_info(&lv, &cd_S6730C1);
    dp->~S6730C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6730C1(Test_S6730C1, "S6730C1", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN7S6730C1C1Ev();
extern void _ZN7S6730C1D1Ev();
Name_Map name_map_S6730C1[] = {
  NSPAIR(_ZN7S6730C1C1Ev),
  NSPAIR(_ZN7S6730C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6730C2;
extern VTBL_ENTRY _ZTI7S6730C2[];
extern  VTBL_ENTRY _ZTV7S6730C2[];
static Base_Class bases_S6730C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6730C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6730C1[];
extern void _ZN7S6730C1D1Ev();
extern void _ZN7S6730C1D0Ev();
extern void _ZN7S6730C22v3Ev();
extern void _ZN7S6730C22v4Ev();
extern void _ZN7S6730C22v5Ev();
extern void _ZN7S6730C22v6Ev();
extern void _ZN7S6730C22v7Ev();
extern void _ZN7S6730C22v8Ev();
extern void _ZN7S6730C22v9Ev();
extern void _ZN7S6730C23v10Ev();
extern void _ZN7S6730C23v11Ev();
extern void _ZN7S6730C23v12Ev();
extern void _ZN7S6730C23v13Ev();
extern void _ZN7S6730C23v14Ev();
extern void _ZN7S6730C23v15Ev();
extern void _ZN7S6730C23v16Ev();
extern void _ZN7S6730C23v17Ev();
extern void _ZN7S6730C23v18Ev();
extern void _ZN7S6730C23v19Ev();
extern void _ZN7S6730C23v20Ev();
extern void _ZN7S6730C23v21Ev();
extern void _ZN7S6730C23v22Ev();
extern void _ZN7S6730C23v23Ev();
extern void _ZN7S6730C23v24Ev();
extern void _ZN7S6730C23v25Ev();
extern void _ZN7S6730C23v26Ev();
extern void _ZN7S6730C23v27Ev();
extern void _ZN7S6730C23v28Ev();
extern void _ZN7S6730C23v29Ev();
extern void _ZN7S6730C23v30Ev();
extern void _ZN7S6730C23v31Ev();
extern void _ZN7S6730C23v32Ev();
extern void _ZN7S6730C23v33Ev();
extern void _ZN7S6730C23v34Ev();
extern void _ZN7S6730C23v35Ev();
extern void _ZN7S6730C23v36Ev();
extern void _ZN7S6730C23v37Ev();
extern void _ZN7S6730C23v38Ev();
extern void _ZN7S6730C23v39Ev();
extern void _ZN7S6730C23v40Ev();
extern void _ZN7S6730C23v41Ev();
extern void _ZN7S6730C23v42Ev();
extern void _ZN7S6730C23v43Ev();
extern void _ZN7S6730C23v44Ev();
extern void _ZN7S6730C23v45Ev();
extern void _ZN7S6730C23v46Ev();
extern void _ZN7S6730C23v47Ev();
extern void _ZN7S6730C23v48Ev();
extern void _ZN7S6730C23v49Ev();
extern void _ZN7S6730C23v50Ev();
extern void _ZN7S6730C23v51Ev();
extern void _ZN7S6730C23v52Ev();
extern void _ZN7S6730C23v53Ev();
extern void _ZN7S6730C23v54Ev();
extern void _ZN7S6730C23v55Ev();
extern void _ZN7S6730C23v56Ev();
extern void _ZN7S6730C23v57Ev();
extern void _ZN7S6730C23v58Ev();
extern void _ZN7S6730C23v59Ev();
extern void _ZN7S6730C23v60Ev();
extern void _ZN7S6730C23v61Ev();
extern void _ZN7S6730C23v62Ev();
extern void _ZN7S6730C23v63Ev();
extern void _ZN7S6730C23v64Ev();
extern void _ZN7S6730C23v65Ev();
extern void _ZN7S6730C23v66Ev();
extern void _ZN7S6730C12v1Ev();
extern void _ZN7S6730C12v2Ev();
static  VTBL_ENTRY vtc_S6730C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6730C1[0]),
  (VTBL_ENTRY)&_ZN7S6730C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6730C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6730C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6730C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S6730C1[];
extern  VTBL_ENTRY _ZTV7S6730C1[];
Class_Descriptor cd_S6730C1 = {  "S6730C1", // class name
  bases_S6730C1, 1,
  &(vtc_S6730C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI7S6730C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6730C1),70, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C6  : virtual S19676C9 {
  virtual  ~S2509C6(); // _ZN7S2509C6D2Ev
  S2509C6(); // tgen
};
//SIG(-1 S2509C6) C1{ VBC2{ vd m Fp Fi Fc FD} vd}


 S2509C6 ::~S2509C6(){ note_dtor("S2509C6", this);}
S2509C6 ::S2509C6(){ note_ctor("S2509C6", this);} // tgen

static void Test_S2509C6()
{
  extern Class_Descriptor cd_S2509C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S2509C6, buf);
    S2509C6 *dp, &lv = *(dp=new (buf) S2509C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S2509C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C6)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(16,4), "S2509C6");
    test_class_info(&lv, &cd_S2509C6);
    dp->~S2509C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C6(Test_S2509C6, "S2509C6", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S2509C6C1Ev();
extern void _ZN7S2509C6D2Ev();
Name_Map name_map_S2509C6[] = {
  NSPAIR(_ZN7S2509C6C1Ev),
  NSPAIR(_ZN7S2509C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
static Base_Class bases_S2509C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2509C6[];
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S2509C6D1Ev,_ZThn4_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S2509C6D0Ev,_ZThn4_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C6[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S2509C6[];
static  VTT_ENTRY vtt_S2509C6[] = {
  {&(_ZTV7S2509C6[3]),  3,10},
  {&(_ZTV7S2509C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
static VTBL_ENTRY alt_thunk_names138[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S2509C6D0Ev,_ZThn4_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S2509C6D1Ev,_ZThn4_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C6 = {  "S2509C6", // class name
  bases_S2509C6, 1,
  &(vtc_S2509C6[0]), // expected_vtbl_contents
  &(vtt_S2509C6[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S2509C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2509C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2509C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names138,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C9  : virtual S19676C9 , S2509C6 {
  void *s2509c9f0[10];
  int s2509c9f1;
  __tsi64 s2509c9f2;
  ~S2509C9(); // tgen
  S2509C9(); // tgen
};
//SIG(-1 S2509C9) C1{ VBC2{ vd m Fp Fi Fc FD} BC3{ VBC2 vd} Fp[10] Fi FL}


S2509C9 ::~S2509C9(){ note_dtor("S2509C9", this);} // tgen
S2509C9 ::S2509C9(){ note_ctor("S2509C9", this);} // tgen

static void Test_S2509C9()
{
  extern Class_Descriptor cd_S2509C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,22)];
    init_test(&cd_S2509C9, buf);
    S2509C9 *dp, &lv = *(dp=new (buf) S2509C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,84), "sizeof(S2509C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C9)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(112,56), "S2509C9");
    check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(112,56), "S2509C9");
    check_base_class_offset(lv, (S2509C6*), 0, "S2509C9");
    check_field_offset(lv, s2509c9f0, ABISELECT(8,4), "S2509C9.s2509c9f0");
    check_field_offset(lv, s2509c9f1, ABISELECT(88,44), "S2509C9.s2509c9f1");
    check_field_offset(lv, s2509c9f2, ABISELECT(96,48), "S2509C9.s2509c9f2");
    test_class_info(&lv, &cd_S2509C9);
    dp->~S2509C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C9(Test_S2509C9, "S2509C9", ABISELECT(160,84));

#else // __cplusplus

extern void _ZN7S2509C9C1Ev();
extern void _ZN7S2509C9D1Ev();
Name_Map name_map_S2509C9[] = {
  NSPAIR(_ZN7S2509C9C1Ev),
  NSPAIR(_ZN7S2509C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
static Base_Class bases_S2509C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(112,56), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2509C9[];
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C9D1Ev,_ZThn56_N7S2509C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C9D0Ev,_ZThn56_N7S2509C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C9[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S2509C9[];
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C9[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn56_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn56_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__7S2509C9[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
static  VTT_ENTRY vtt_S2509C9[] = {
  {&(_ZTV7S2509C9[3]),  3,10},
  {&(_tg__ZTV7S2509C6__7S2509C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__7S2509C9[3]),  3,5},
  {&(_ZTV7S2509C9[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
static VTBL_ENTRY alt_thunk_names139[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn56_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn56_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C9D0Ev,_ZThn56_N7S2509C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C9D1Ev,_ZThn56_N7S2509C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C9 = {  "S2509C9", // class name
  bases_S2509C9, 2,
  &(vtc_S2509C9[0]), // expected_vtbl_contents
  &(vtt_S2509C9[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI7S2509C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2509C9),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2509C9),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names139,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C10  : virtual S2509C9 , S2509C6 {
  int s2509c10f0;
  virtual  ~S2509C10(); // _ZN8S2509C10D2Ev
  S2509C10(); // tgen
};
//SIG(-1 S2509C10) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} BC4 vd Fi}


 S2509C10 ::~S2509C10(){ note_dtor("S2509C10", this);}
S2509C10 ::S2509C10(){ note_ctor("S2509C10", this);} // tgen

static void Test_S2509C10()
{
  extern Class_Descriptor cd_S2509C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,24)];
    init_test(&cd_S2509C10, buf);
    S2509C10 *dp, &lv = *(dp=new (buf) S2509C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S2509C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C10)");
    check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(128,64), "S2509C10");
    check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(128,64), "S2509C10");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(128,64), "S2509C10");
    check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(16,8), "S2509C10");
    check_base_class_offset(lv, (S2509C9*), ABISELECT(16,8), "S2509C10");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*), 0, "S2509C10");
    check_field_offset(lv, s2509c10f0, ABISELECT(8,4), "S2509C10.s2509c10f0");
    test_class_info(&lv, &cd_S2509C10);
    dp->~S2509C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C10(Test_S2509C10, "S2509C10", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN8S2509C10C1Ev();
extern void _ZN8S2509C10D2Ev();
Name_Map name_map_S2509C10[] = {
  NSPAIR(_ZN8S2509C10C1Ev),
  NSPAIR(_ZN8S2509C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
static Base_Class bases_S2509C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(128,64), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2509C10[];
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn8_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn8_N8S2509C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S2509C10D1Ev,_ZThn64_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S2509C10D0Ev,_ZThn64_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C10[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S2509C10[];
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C10[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn128_N7S2509C6D1Ev,_ZThn64_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn128_N7S2509C6D0Ev,_ZThn64_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__A1__8S2509C10[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C10[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__8S2509C10[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn56_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn56_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__8S2509C10[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C9D1Ev,_ZThn56_N7S2509C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C9D0Ev,_ZThn56_N7S2509C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__8S2509C10[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
static  VTT_ENTRY vtt_S2509C10[] = {
  {&(_ZTV8S2509C10[4]),  4,17},
  {&(_tg__ZTV7S2509C6__A1__8S2509C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__A1__8S2509C10[3]),  3,5},
  {&(_ZTV8S2509C10[10]),  10,17},
  {&(_ZTV8S2509C10[15]),  15,17},
  {&(_tg__ZTV7S2509C9__8S2509C10[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__8S2509C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__8S2509C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__8S2509C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
static VTBL_ENTRY alt_thunk_names140[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C9D0Ev,_ZThn56_N7S2509C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C9D1Ev,_ZThn56_N7S2509C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn56_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2509C6D0Ev,_ZThn64_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn56_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2509C6D1Ev,_ZThn64_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2509C10D0Ev,_ZThn64_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2509C10D1Ev,_ZThn64_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn8_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn8_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C10 = {  "S2509C10", // class name
  bases_S2509C10, 4,
  &(vtc_S2509C10[0]), // expected_vtbl_contents
  &(vtt_S2509C10[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI8S2509C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S2509C10),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2509C10),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names140,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C8  : S19676C9 , virtual S2509C6 , virtual S2509C9 , S2509C10 {
  int s2509c8f0;
  virtual  ~S2509C8(); // _ZN7S2509C8D2Ev
  S2509C8(); // tgen
};
//SIG(-1 S2509C8) C1{ BC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 vd} VBC4{ VBC2 BC3 Fp[10] Fi FL} BC5{ VBC4 BC3 vd Fi} vd Fi}


 S2509C8 ::~S2509C8(){ note_dtor("S2509C8", this);}
S2509C8 ::S2509C8(){ note_ctor("S2509C8", this);} // tgen

static void Test_S2509C8()
{
  extern Class_Descriptor cd_S2509C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,33)];
    init_test(&cd_S2509C8, buf);
    S2509C8 *dp, &lv = *(dp=new (buf) S2509C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,128), "sizeof(S2509C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C8)");
    /*is_ambiguous_... S2509C8::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), 0, "S2509C8");
    /*is_ambiguous_... S2509C8::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(80,44), "S2509C8");
    check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(80,44), "S2509C8");
    check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(80,44), "S2509C8");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*), ABISELECT(80,44), "S2509C8");
    /*is_ambiguous_... S2509C8::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*), ABISELECT(64,40), "S2509C8");
    check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(128,72), "S2509C8");
    check_base_class_offset(lv, (S2509C9*), ABISELECT(128,72), "S2509C8");
    check_base_class_offset(lv, (S2509C9*)(S2509C10*), ABISELECT(128,72), "S2509C8");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*), ABISELECT(48,28), "S2509C8");
    check_base_class_offset(lv, (S2509C10*), ABISELECT(48,28), "S2509C8");
    check_field_offset(lv, s2509c8f0, ABISELECT(60,36), "S2509C8.s2509c8f0");
    test_class_info(&lv, &cd_S2509C8);
    dp->~S2509C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C8(Test_S2509C8, "S2509C8", ABISELECT(240,128));

#else // __cplusplus

extern void _ZN7S2509C8C1Ev();
extern void _ZN7S2509C8D2Ev();
Name_Map name_map_S2509C8[] = {
  NSPAIR(_ZN7S2509C8C1Ev),
  NSPAIR(_ZN7S2509C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
static Base_Class bases_S2509C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(80,44), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(64,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(128,72), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(48,28), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2509C8[];
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn80_N7S2509C8D1Ev,_ZThn44_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn80_N7S2509C8D0Ev,_ZThn44_N7S2509C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn128_N7S2509C8D1Ev,_ZThn72_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn128_N7S2509C8D0Ev,_ZThn72_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C8[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(16,4),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern VTBL_ENTRY _ZTV7S2509C8[];
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C10__A2__7S2509C8[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn32_N7S2509C6D1Ev,_ZThn16_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn32_N7S2509C6D0Ev,_ZThn16_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C10__A2__7S2509C8[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S2509C10D1Ev,_ZThn44_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S2509C10D0Ev,_ZThn44_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C10__7S2509C8[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn32_N8S2509C10D1Ev,_ZThn16_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn32_N8S2509C10D0Ev,_ZThn16_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C10__7S2509C8[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S2509C6D1Ev,_ZThn4_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S2509C6D0Ev,_ZThn4_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__7S2509C8[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__A1__7S2509C8[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__A1__7S2509C8[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__7S2509C8[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
static  VTT_ENTRY vtt_S2509C8[] = {
  {&(_ZTV7S2509C8[5]),  5,30},
  {&(_tg__ZTV8S2509C10__7S2509C8[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C10__A2__7S2509C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C10__A2__7S2509C8[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C10__7S2509C8[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C10__7S2509C8[3]),  3,5},
  {&(_ZTV7S2509C8[17]),  17,30},
  {&(_ZTV7S2509C8[22]),  22,30},
  {&(_ZTV7S2509C8[28]),  28,30},
  {&(_ZTV7S2509C8[11]),  11,30},
  {&(_tg__ZTV7S2509C6__7S2509C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__7S2509C8[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__A1__7S2509C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__A1__7S2509C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__7S2509C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
static VTBL_ENTRY alt_thunk_names141[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S2509C10D0Ev,_ZThn16_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S2509C10D1Ev,_ZThn16_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2509C10D0Ev,_ZThn44_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2509C10D1Ev,_ZThn44_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S2509C6D0Ev,_ZThn4_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S2509C6D0Ev,_ZThn16_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S2509C6D1Ev,_ZThn4_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S2509C6D1Ev,_ZThn16_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2509C8D0Ev,_ZThn44_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2509C8D1Ev,_ZThn44_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2509C8D0Ev,_ZThn72_N7S2509C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2509C8D1Ev,_ZThn72_N7S2509C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C8 = {  "S2509C8", // class name
  bases_S2509C8, 7,
  &(vtc_S2509C8[0]), // expected_vtbl_contents
  &(vtt_S2509C8[0]), // expected_vtt_contents
  ABISELECT(240,128), // object size
  NSPAIRA(_ZTI7S2509C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S2509C8),30, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2509C8),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names141,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C5  : virtual S2509C6 , virtual S2509C8 , virtual S19676C2 {
  int s2509c5f0;
  virtual  ~S2509C5(); // _ZN7S2509C5D2Ev
  S2509C5(); // tgen
};
//SIG(-1 S2509C5) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ BC3 VBC2 VBC5{ VBC3 BC2 Fp[10] Fi FL} BC6{ VBC5 BC2 vd Fi} vd Fi} VBC7{ m FC8{} Fi[3]} vd Fi}


 S2509C5 ::~S2509C5(){ note_dtor("S2509C5", this);}
S2509C5 ::S2509C5(){ note_ctor("S2509C5", this);} // tgen

static void Test_S2509C5()
{
  extern Class_Descriptor cd_S2509C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,38)];
    init_test(&cd_S2509C5, buf);
    S2509C5 *dp, &lv = *(dp=new (buf) S2509C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,148), "sizeof(S2509C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C5)");
    /*is_ambiguous_... S2509C5::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(16,8), "S2509C5");
    check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(16,8), "S2509C5");
    check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(16,8), "S2509C5");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(16,8), "S2509C5");
    /*is_ambiguous_... S2509C5::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*), 0, "S2509C5");
    /*is_ambiguous_... S2509C8::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*), 0, "S2509C5");
    /*is_ambiguous_... S2509C8::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*), ABISELECT(64,36), "S2509C5");
    check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(128,76), "S2509C5");
    check_base_class_offset(lv, (S2509C9*)(S2509C8*), ABISELECT(128,76), "S2509C5");
    check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*), ABISELECT(128,76), "S2509C5");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(112,64), "S2509C5");
    check_base_class_offset(lv, (S2509C10*)(S2509C8*), ABISELECT(112,64), "S2509C5");
    check_base_class_offset(lv, (S2509C8*), ABISELECT(64,36), "S2509C5");
    check_base_class_offset(lv, (S19676C2*), ABISELECT(232,132), "S2509C5");
    check_field_offset(lv, s2509c5f0, ABISELECT(8,4), "S2509C5.s2509c5f0");
    test_class_info(&lv, &cd_S2509C5);
    dp->~S2509C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C5(Test_S2509C5, "S2509C5", ABISELECT(256,148));

#else // __cplusplus

extern void _ZN7S2509C5C1Ev();
extern void _ZN7S2509C5D2Ev();
Name_Map name_map_S2509C5[] = {
  NSPAIR(_ZN7S2509C5C1Ev),
  NSPAIR(_ZN7S2509C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
static Base_Class bases_S2509C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S2509C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(128,76), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(112,64), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(64,36), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    ABISELECT(232,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2509C5[];
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void _ZN7S2509C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void _ZN7S2509C5D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S2509C5D1Ev,_ZThn8_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S2509C5D0Ev,_ZThn8_N7S2509C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S2509C5D1Ev,_ZThn36_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S2509C5D0Ev,_ZThn36_N7S2509C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn128_N7S2509C5D1Ev,_ZThn76_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn128_N7S2509C5D0Ev,_ZThn76_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C5[] = {
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(64,36),
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev),
  ABISELECT(-128,-76),
  ABISELECT(-112,-68),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern VTBL_ENTRY _ZTV7S2509C5[];
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C5[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S2509C6D1Ev,_ZThn8_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S2509C6D0Ev,_ZThn8_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__7S2509C5[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C5[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C5[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C8__A2__7S2509C5[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A2__7S2509C5[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn12_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn12_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C8__7S2509C5[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C8__7S2509C5[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8__7S2509C5[] = {
  ABISELECT(64,36),
  ABISELECT(16,8),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C8__7S2509C5[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8__7S2509C5[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8__7S2509C5[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C5[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__A1__7S2509C5[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__A1__7S2509C5[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__7S2509C5[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
static  VTT_ENTRY vtt_S2509C5[] = {
  {&(_ZTV7S2509C5[8]),  8,35},
  {&(_ZTV7S2509C5[8]),  8,35},
  {&(_ZTV7S2509C5[13]),  13,35},
  {&(_ZTV7S2509C5[21]),  21,35},
  {&(_ZTV7S2509C5[33]),  33,35},
  {&(_ZTV7S2509C5[27]),  27,35},
  {&(_tg__ZTV7S2509C6__7S2509C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__7S2509C5[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C5[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C5[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C8__A2__7S2509C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A2__7S2509C5[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C8__7S2509C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C8__7S2509C5[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C8__7S2509C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C8__7S2509C5[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8__7S2509C5[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C8__7S2509C5[4]),  4,6},
  {&(_tg__ZTV7S2509C9__7S2509C5[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__A1__7S2509C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__A1__7S2509C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__7S2509C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2509C5[];
extern  VTBL_ENTRY _ZTV7S2509C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C5[];
static VTBL_ENTRY alt_thunk_names142[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn12_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn12_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S2509C6D0Ev,_ZThn8_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S2509C6D1Ev,_ZThn8_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C5D0Ev,_ZThn36_N7S2509C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C5D1Ev,_ZThn36_N7S2509C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S2509C5D0Ev,_ZThn8_N7S2509C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S2509C5D1Ev,_ZThn8_N7S2509C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2509C5D0Ev,_ZThn76_N7S2509C5D0Ev),
  (VTBL_ENTRY)_ZN7S2509C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2509C5D1Ev,_ZThn76_N7S2509C5D1Ev),
  (VTBL_ENTRY)_ZN7S2509C5D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C5 = {  "S2509C5", // class name
  bases_S2509C5, 9,
  &(vtc_S2509C5[0]), // expected_vtbl_contents
  &(vtt_S2509C5[0]), // expected_vtt_contents
  ABISELECT(256,148), // object size
  NSPAIRA(_ZTI7S2509C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S2509C5),35, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2509C5),22, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names142,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C2  : S19676C2 , S2509C5 {
  ::S2509C6 s2509c2f0;
  int s2509c2f1;
  ~S2509C2(); // tgen
  S2509C2(); // tgen
};
//SIG(-1 S2509C2) C1{ BC2{ m FC3{} Fi[3]} BC4{ VBC5{ VBC6{ vd m Fp Fi Fc FD} vd} VBC7{ BC6 VBC5 VBC8{ VBC6 BC5 Fp[10] Fi FL} BC9{ VBC8 BC5 vd Fi} vd Fi} VBC2 vd Fi} FC5 Fi}


S2509C2 ::~S2509C2(){ note_dtor("S2509C2", this);} // tgen
S2509C2 ::S2509C2(){ note_ctor("S2509C2", this);} // tgen

static void Test_S2509C2()
{
  extern Class_Descriptor cd_S2509C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,51)];
    init_test(&cd_S2509C2, buf);
    S2509C2 *dp, &lv = *(dp=new (buf) S2509C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,200), "sizeof(S2509C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C2)");
    /*is_ambiguous_... S2509C2::S19676C2 */ AMB_check_base_class_offset(lv, (S19676C2*), ABISELECT(12,8), "S2509C2");
    /*is_ambiguous_... S2509C2::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(112,60), "S2509C2");
    check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(112,60), "S2509C2");
    check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(112,60), "S2509C2");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(112,60), "S2509C2");
    /*is_ambiguous_... S2509C5::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C5*), 0, "S2509C2");
    /*is_ambiguous_... S2509C8::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*), 0, "S2509C2");
    /*is_ambiguous_... S2509C8::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*), ABISELECT(160,88), "S2509C2");
    check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(224,128), "S2509C2");
    check_base_class_offset(lv, (S2509C9*)(S2509C8*), ABISELECT(224,128), "S2509C2");
    check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*), ABISELECT(224,128), "S2509C2");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(208,116), "S2509C2");
    check_base_class_offset(lv, (S2509C10*)(S2509C8*), ABISELECT(208,116), "S2509C2");
    check_base_class_offset(lv, (S2509C8*)(S2509C5*), ABISELECT(160,88), "S2509C2");
    check_base_class_offset(lv, (S19676C2*)(S2509C5*), ABISELECT(328,184), "S2509C2");
    check_base_class_offset(lv, (S2509C5*), 0, "S2509C2");
    check_field_offset(lv, s2509c2f0, ABISELECT(32,24), "S2509C2.s2509c2f0");
    check_field_offset(lv, s2509c2f1, ABISELECT(96,56), "S2509C2.s2509c2f1");
    test_class_info(&lv, &cd_S2509C2);
    dp->~S2509C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C2(Test_S2509C2, "S2509C2", ABISELECT(352,200));

#else // __cplusplus

extern void _ZN7S2509C2C1Ev();
extern void _ZN7S2509C2D1Ev();
Name_Map name_map_S2509C2[] = {
  NSPAIR(_ZN7S2509C2C1Ev),
  NSPAIR(_ZN7S2509C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S2509C5;
extern VTBL_ENTRY _ZTI7S2509C5[];
extern  VTBL_ENTRY _ZTV7S2509C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C5[];
static Base_Class bases_S2509C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C2,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(112,60), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S2509C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19676C9,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(224,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(224,128), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(208,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(208,116), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(160,88), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(328,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S2509C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2509C2[];
extern void ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev)();
extern void _ZN7S2509C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev)();
extern void _ZN7S2509C2D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C2D1Ev,_ZThn60_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C2D0Ev,_ZThn60_N7S2509C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn160_N7S2509C2D1Ev,_ZThn88_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn160_N7S2509C2D0Ev,_ZThn88_N7S2509C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S2509C2D1Ev,_ZTvn28_n24_N7S2509C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C2D0Ev,_ZTvn28_n24_N7S2509C2D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn224_N7S2509C2D1Ev,_ZThn128_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn224_N7S2509C2D0Ev,_ZThn128_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C2[] = {
  ABISELECT(328,184),
  ABISELECT(224,128),
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C2D1Ev,_ZTvn28_n24_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C2D0Ev,_ZTvn28_n24_N7S2509C2D0Ev),
  ABISELECT(-224,-128),
  ABISELECT(-112,-68),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S2509C2[];
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void _ZN7S2509C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void _ZN7S2509C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C5__7S2509C2[] = {
  ABISELECT(328,184),
  ABISELECT(224,128),
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C5D1Ev,_ZThn60_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C5D0Ev,_ZThn60_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C5__7S2509C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn160_N7S2509C5D1Ev,_ZThn88_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn160_N7S2509C5D0Ev,_ZThn88_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C5__7S2509C2[] = {
  ABISELECT(-160,-88),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn224_N7S2509C5D1Ev,_ZThn128_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn224_N7S2509C5D0Ev,_ZThn128_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C5__7S2509C2[] = {
  ABISELECT(-224,-128),
  ABISELECT(-112,-68),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C5__7S2509C2[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C2[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn60_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn60_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__7S2509C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C2[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C2[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C8__A2__7S2509C2[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A2__7S2509C2[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn12_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn12_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C8__7S2509C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C8__7S2509C2[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8__7S2509C2[] = {
  ABISELECT(160,88),
  ABISELECT(112,60),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C8__7S2509C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8__7S2509C2[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8__7S2509C2[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C2[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__A1__7S2509C2[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__A1__7S2509C2[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__7S2509C2[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
static  VTT_ENTRY vtt_S2509C2[] = {
  {&(_ZTV7S2509C2[8]),  8,35},
  {&(_tg__ZTV7S2509C5__7S2509C2[8]),  8,10},
  {&(_tg__ZTV7S2509C5__7S2509C2[8]),  8,10},
  {&(_tg__ZTV8S19676C9__7S2509C5__7S2509C2[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C5__7S2509C2[6]),  6,8},
  {&(_tg__ZTV7S2509C9__7S2509C5__7S2509C2[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C5__7S2509C2[4]),  4,6},
  {&(_ZTV7S2509C2[8]),  8,35},
  {&(_ZTV7S2509C2[13]),  13,35},
  {&(_ZTV7S2509C2[21]),  21,35},
  {&(_ZTV7S2509C2[33]),  33,35},
  {&(_ZTV7S2509C2[27]),  27,35},
  {&(_tg__ZTV7S2509C6__7S2509C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__7S2509C2[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C2[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C2[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C8__A2__7S2509C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A2__7S2509C2[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C8__7S2509C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C8__7S2509C2[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C8__7S2509C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C8__7S2509C2[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8__7S2509C2[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C8__7S2509C2[4]),  4,6},
  {&(_tg__ZTV7S2509C9__7S2509C2[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__A1__7S2509C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__A1__7S2509C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__7S2509C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2509C2[];
extern  VTBL_ENTRY _ZTV7S2509C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C2[];
static VTBL_ENTRY alt_thunk_names143[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn12_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn12_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn60_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn60_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2509C5D0Ev,_ZThn88_N7S2509C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2509C5D1Ev,_ZThn88_N7S2509C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C5D0Ev,_ZThn60_N7S2509C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C5D1Ev,_ZThn60_N7S2509C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S2509C5D0Ev,_ZThn128_N7S2509C5D0Ev),
  (VTBL_ENTRY)_ZN7S2509C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S2509C5D1Ev,_ZThn128_N7S2509C5D1Ev),
  (VTBL_ENTRY)_ZN7S2509C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2509C2D0Ev,_ZThn88_N7S2509C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2509C2D1Ev,_ZThn88_N7S2509C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C2D0Ev,_ZThn60_N7S2509C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C2D1Ev,_ZThn60_N7S2509C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S2509C2D0Ev,_ZThn128_N7S2509C2D0Ev),
  (VTBL_ENTRY)_ZN7S2509C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S2509C2D1Ev,_ZThn128_N7S2509C2D1Ev),
  (VTBL_ENTRY)_ZN7S2509C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C2 = {  "S2509C2", // class name
  bases_S2509C2, 11,
  &(vtc_S2509C2[0]), // expected_vtbl_contents
  &(vtt_S2509C2[0]), // expected_vtt_contents
  ABISELECT(352,200), // object size
  NSPAIRA(_ZTI7S2509C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2509C2),35, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2509C2),28, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names143,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C15  : virtual S19676C9 , virtual S2509C9 , S2509C6 {
  void *s2509c15f0;
  int s2509c15f1;
  ::S19676C9 s2509c15f2[3];
  int s2509c15f3[7];
  virtual  ~S2509C15(); // _ZN8S2509C15D2Ev
  S2509C15(); // tgen
};
//SIG(-1 S2509C15) C1{ VBC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 BC4{ VBC2 vd} Fp[10] Fi FL} BC4 vd Fp Fi FC2[3] Fi[7]}


 S2509C15 ::~S2509C15(){ note_dtor("S2509C15", this);}
S2509C15 ::S2509C15(){ note_ctor("S2509C15", this);} // tgen

static void Test_S2509C15()
{
  extern Class_Descriptor cd_S2509C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,53)];
    init_test(&cd_S2509C15, buf);
    S2509C15 *dp, &lv = *(dp=new (buf) S2509C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,208), "sizeof(S2509C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C15)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S2509C15");
    check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(208,124), "S2509C15");
    check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(208,124), "S2509C15");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(208,124), "S2509C15");
    check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(256,152), "S2509C15");
    check_base_class_offset(lv, (S2509C9*), ABISELECT(256,152), "S2509C15");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*), 0, "S2509C15");
    check_field_offset(lv, s2509c15f0, ABISELECT(8,4), "S2509C15.s2509c15f0");
    check_field_offset(lv, s2509c15f1, ABISELECT(16,8), "S2509C15.s2509c15f1");
    check_field_offset(lv, s2509c15f2, ABISELECT(32,12), "S2509C15.s2509c15f2");
    check_field_offset(lv, s2509c15f3, ABISELECT(176,96), "S2509C15.s2509c15f3");
    test_class_info(&lv, &cd_S2509C15);
    dp->~S2509C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C15(Test_S2509C15, "S2509C15", ABISELECT(368,208));

#else // __cplusplus

extern void _ZN8S2509C15C1Ev();
extern void _ZN8S2509C15D2Ev();
Name_Map name_map_S2509C15[] = {
  NSPAIR(_ZN8S2509C15C1Ev),
  NSPAIR(_ZN8S2509C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
static Base_Class bases_S2509C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(208,124), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    ABISELECT(256,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(256,152), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2509C15[];
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZThn208_N8S2509C15D1Ev,_ZThn124_N8S2509C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
extern void ABISELECT(_ZThn208_N8S2509C15D0Ev,_ZThn124_N8S2509C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZThn256_N8S2509C15D1Ev,_ZThn152_N8S2509C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
extern void ABISELECT(_ZThn256_N8S2509C15D0Ev,_ZThn152_N8S2509C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C15[] = {
  ABISELECT(256,152),
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
  ABISELECT(-256,-152),
  ABISELECT(-48,-28),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern VTBL_ENTRY _ZTV8S2509C15[];
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C15[] = {
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn208_N7S2509C6D1Ev,_ZThn124_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn208_N7S2509C6D0Ev,_ZThn124_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__A1__8S2509C15[] = {
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C15[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__8S2509C15[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__8S2509C15[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__8S2509C15[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
static  VTT_ENTRY vtt_S2509C15[] = {
  {&(_ZTV8S2509C15[4]),  4,17},
  {&(_tg__ZTV7S2509C6__A1__8S2509C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__A1__8S2509C15[3]),  3,5},
  {&(_ZTV8S2509C15[9]),  9,17},
  {&(_ZTV8S2509C15[15]),  15,17},
  {&(_tg__ZTV7S2509C9__8S2509C15[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__8S2509C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__8S2509C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__8S2509C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
static VTBL_ENTRY alt_thunk_names144[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2509C6D0Ev,_ZThn124_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2509C6D1Ev,_ZThn124_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S2509C15D0Ev,_ZThn152_N8S2509C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S2509C15D1Ev,_ZThn152_N8S2509C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S2509C15D0Ev,_ZThn124_N8S2509C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S2509C15D1Ev,_ZThn124_N8S2509C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C15 = {  "S2509C15", // class name
  bases_S2509C15, 4,
  &(vtc_S2509C15[0]), // expected_vtbl_contents
  &(vtt_S2509C15[0]), // expected_vtt_contents
  ABISELECT(368,208), // object size
  NSPAIRA(_ZTI8S2509C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S2509C15),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2509C15),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names144,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C14  : virtual S2509C9 , virtual S2509C8 , S2509C15 , S19676C9 , S2509C6 {
  virtual  ~S2509C14(); // _ZN8S2509C14D2Ev
  S2509C14(); // tgen
};
//SIG(-1 S2509C14) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC2 BC4 vd Fi} vd Fi} BC7{ VBC3 VBC2 BC4 vd Fp Fi FC3[3] Fi[7]} BC3 BC4 vd}


 S2509C14 ::~S2509C14(){ note_dtor("S2509C14", this);}
S2509C14 ::S2509C14(){ note_ctor("S2509C14", this);} // tgen

static void Test_S2509C14()
{
  extern Class_Descriptor cd_S2509C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(32,72)];
    init_test(&cd_S2509C14, buf);
    S2509C14 *dp, &lv = *(dp=new (buf) S2509C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,284), "sizeof(S2509C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C14)");
    check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(368,212), "S2509C14");
    check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(368,212), "S2509C14");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(368,212), "S2509C14");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(368,212), "S2509C14");
    check_base_class_offset(lv, (S19676C9*)(S2509C15*), ABISELECT(368,212), "S2509C14");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*), ABISELECT(368,212), "S2509C14");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(368,212), "S2509C14");
    check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(264,156), "S2509C14");
    check_base_class_offset(lv, (S2509C9*), ABISELECT(264,156), "S2509C14");
    check_base_class_offset(lv, (S2509C9*)(S2509C8*), ABISELECT(264,156), "S2509C14");
    check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*), ABISELECT(264,156), "S2509C14");
    check_base_class_offset(lv, (S2509C9*)(S2509C15*), ABISELECT(264,156), "S2509C14");
    /*is_ambiguous_... S2509C8::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*), ABISELECT(416,240), "S2509C14");
    /*is_ambiguous_... S2509C8::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*), ABISELECT(480,280), "S2509C14");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(464,268), "S2509C14");
    check_base_class_offset(lv, (S2509C10*)(S2509C8*), ABISELECT(464,268), "S2509C14");
    check_base_class_offset(lv, (S2509C8*), ABISELECT(416,240), "S2509C14");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*), 0, "S2509C14");
    check_base_class_offset(lv, (S2509C15*), 0, "S2509C14");
    /*is_ambiguous_... S2509C14::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S2509C14");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*), ABISELECT(256,152), "S2509C14");
    test_class_info(&lv, &cd_S2509C14);
    dp->~S2509C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C14(Test_S2509C14, "S2509C14", ABISELECT(496,284));

#else // __cplusplus

extern void _ZN8S2509C14C1Ev();
extern void _ZN8S2509C14D2Ev();
Name_Map name_map_S2509C14[] = {
  NSPAIR(_ZN8S2509C14C1Ev),
  NSPAIR(_ZN8S2509C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
static Base_Class bases_S2509C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(368,212), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(264,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(264,156), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    ABISELECT(416,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(480,280), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(464,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(464,268), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(416,240), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S2509C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(208,124), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2509C6,    ABISELECT(256,152), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2509C14[];
extern void _ZN8S2509C14D1Ev();
extern void _ZN8S2509C14D0Ev();
extern void ABISELECT(_ZThn208_N8S2509C14D1Ev,_ZThn124_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn208_N8S2509C14D0Ev,_ZThn124_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn264_N8S2509C14D1Ev,_ZThn156_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn264_N8S2509C14D0Ev,_ZThn156_N8S2509C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn368_N8S2509C14D1Ev,_ZThn212_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn368_N8S2509C14D0Ev,_ZThn212_N8S2509C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn416_N8S2509C14D1Ev,_ZThn240_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn416_N8S2509C14D0Ev,_ZThn240_N8S2509C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn480_N8S2509C14D1Ev,_ZThn280_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn480_N8S2509C14D0Ev,_ZThn280_N8S2509C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C14[] = {
  ABISELECT(480,280),
  ABISELECT(416,240),
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&_ZN8S2509C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C14D0Ev,
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S2509C14D1Ev,_ZThn124_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S2509C14D0Ev,_ZThn124_N8S2509C14D0Ev),
  ABISELECT(112,60),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev),
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev),
  ABISELECT(-416,-240),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev),
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-464,-268),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev),
  ABISELECT(-480,-280),
  ABISELECT(-112,-68),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S2509C14[];
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C15__8S2509C14[] = {
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C15__A3__8S2509C14[] = {
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn368_N7S2509C6D1Ev,_ZThn212_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn368_N7S2509C6D0Ev,_ZThn212_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C15__A3__8S2509C14[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZThn368_N8S2509C15D1Ev,_ZThn212_N8S2509C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
extern void ABISELECT(_ZThn368_N8S2509C15D0Ev,_ZThn212_N8S2509C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C15__8S2509C14[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZThn264_N8S2509C15D1Ev,_ZThn156_N8S2509C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
extern void ABISELECT(_ZThn264_N8S2509C15D0Ev,_ZThn156_N8S2509C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C15__8S2509C14[] = {
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A__8S2509C14[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn60_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn60_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__A__8S2509C14[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C14[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__8S2509C14[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn104_N7S2509C6D1Ev,_ZThn56_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn104_N7S2509C6D0Ev,_ZThn56_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__8S2509C14[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZThn104_N7S2509C9D1Ev,_ZThn56_N7S2509C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
extern void ABISELECT(_ZThn104_N7S2509C9D0Ev,_ZThn56_N7S2509C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__8S2509C14[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C14[] = {
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__8S2509C14[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C8__A2__8S2509C14[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A2__8S2509C14[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C8__8S2509C14[] = {
  ABISELECT(200,112),
  ABISELECT(104,56),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C8__8S2509C14[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8__8S2509C14[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C8__8S2509C14[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8__8S2509C14[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8__8S2509C14[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C14[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__A1__8S2509C14[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
static  VTT_ENTRY vtt_S2509C14[] = {
  {&(_ZTV8S2509C14[6]),  6,48},
  {&(_tg__ZTV8S2509C15__8S2509C14[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C15__A3__8S2509C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C15__A3__8S2509C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C15__8S2509C14[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C15__8S2509C14[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A__8S2509C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__A__8S2509C14[3]),  3,5},
  {&(_ZTV8S2509C14[21]),  21,48},
  {&(_ZTV8S2509C14[26]),  26,48},
  {&(_ZTV8S2509C14[34]),  34,48},
  {&(_ZTV8S2509C14[46]),  46,48},
  {&(_ZTV8S2509C14[40]),  40,48},
  {&(_ZTV8S2509C14[15]),  15,48},
  {&(_tg__ZTV7S2509C9__8S2509C14[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__8S2509C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__8S2509C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__8S2509C14[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C14[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__8S2509C14[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C8__A2__8S2509C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A2__8S2509C14[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C8__8S2509C14[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C8__8S2509C14[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C8__8S2509C14[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C8__8S2509C14[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8__8S2509C14[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C8__8S2509C14[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A1__8S2509C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__A1__8S2509C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S2509C14[];
extern  VTBL_ENTRY _ZTV8S2509C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C14[];
static VTBL_ENTRY alt_thunk_names145[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2509C9D0Ev,_ZThn56_N7S2509C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2509C9D1Ev,_ZThn56_N7S2509C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S2509C15D0Ev,_ZThn156_N8S2509C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S2509C15D1Ev,_ZThn156_N8S2509C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S2509C15D0Ev,_ZThn212_N8S2509C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S2509C15D1Ev,_ZThn212_N8S2509C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2509C6D0Ev,_ZThn56_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn60_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S2509C6D0Ev,_ZThn212_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2509C6D1Ev,_ZThn56_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn60_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S2509C6D1Ev,_ZThn212_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S2509C14D0Ev,_ZThn240_N8S2509C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S2509C14D1Ev,_ZThn240_N8S2509C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S2509C14D0Ev,_ZThn212_N8S2509C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S2509C14D1Ev,_ZThn212_N8S2509C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S2509C14D0Ev,_ZThn280_N8S2509C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S2509C14D0Ev,_ZThn156_N8S2509C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S2509C14D1Ev,_ZThn280_N8S2509C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S2509C14D1Ev,_ZThn156_N8S2509C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C14 = {  "S2509C14", // class name
  bases_S2509C14, 12,
  &(vtc_S2509C14[0]), // expected_vtbl_contents
  &(vtt_S2509C14[0]), // expected_vtt_contents
  ABISELECT(496,284), // object size
  NSPAIRA(_ZTI8S2509C14),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S2509C14),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2509C14),30, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names145,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C13  : virtual S2509C6 , virtual S2509C10 , S2509C9 , S2509C14 , S2509C8 {
  short s2509c13f0;
  virtual  ~S2509C13(); // _ZN8S2509C13D2Ev
  S2509C13(); // tgen
};
//SIG(-1 S2509C13) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ VBC5{ VBC3 BC2 Fp[10] Fi FL} BC2 vd Fi} BC5 BC6{ VBC5 VBC7{ BC3 VBC2 VBC5 BC4 vd Fi} BC8{ VBC3 VBC5 BC2 vd Fp Fi FC3[3] Fi[7]} BC3 BC2 vd} BC7 vd Fs}


 S2509C13 ::~S2509C13(){ note_dtor("S2509C13", this);}
S2509C13 ::S2509C13(){ note_ctor("S2509C13", this);} // tgen

static void Test_S2509C13()
{
  extern Class_Descriptor cd_S2509C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,99)];
    init_test(&cd_S2509C13, buf);
    S2509C13 *dp, &lv = *(dp=new (buf) S2509C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,392), "sizeof(S2509C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C13)");
    /*is_ambiguous_... S2509C13::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(464,260), "S2509C13");
    check_base_class_offset(lv, (S19676C9*)(S2509C15*)(S2509C14*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*)(S2509C14*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C14*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*), ABISELECT(456,256), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*), ABISELECT(456,256), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*), ABISELECT(456,256), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(528,296), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*), ABISELECT(528,296), "S2509C13");
    check_base_class_offset(lv, (S2509C9*)(S2509C14*), ABISELECT(528,296), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*), ABISELECT(528,296), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*), ABISELECT(528,296), "S2509C13");
    check_base_class_offset(lv, (S2509C9*)(S2509C15*)(S2509C14*), ABISELECT(528,296), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*), ABISELECT(528,296), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*), ABISELECT(528,296), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*), ABISELECT(512,288), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C10*), ABISELECT(512,288), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C9*), 0, "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C9*), 0, "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*), ABISELECT(640,352), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(688,380), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*), ABISELECT(688,380), "S2509C13");
    check_base_class_offset(lv, (S2509C8*)(S2509C14*), ABISELECT(640,352), "S2509C13");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*)(S2509C14*), ABISELECT(112,56), "S2509C13");
    check_base_class_offset(lv, (S2509C15*)(S2509C14*), ABISELECT(112,56), "S2509C13");
    /*is_ambiguous_... S2509C14::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C14*), ABISELECT(320,180), "S2509C13");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C14*), ABISELECT(368,208), "S2509C13");
    check_base_class_offset(lv, (S2509C14*), ABISELECT(112,56), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*), ABISELECT(384,212), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(432,240), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*), ABISELECT(432,240), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C8*), ABISELECT(384,212), "S2509C13");
    check_field_offset(lv, s2509c13f0, ABISELECT(448,252), "S2509C13.s2509c13f0");
    test_class_info(&lv, &cd_S2509C13);
    dp->~S2509C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C13(Test_S2509C13, "S2509C13", ABISELECT(704,392));

#else // __cplusplus

extern void _ZN8S2509C13C1Ev();
extern void _ZN8S2509C13D2Ev();
Name_Map name_map_S2509C13[] = {
  NSPAIR(_ZN8S2509C13C1Ev),
  NSPAIR(_ZN8S2509C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C14;
extern VTBL_ENTRY _ZTI8S2509C14[];
extern  VTBL_ENTRY _ZTV8S2509C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C14[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
static Base_Class bases_S2509C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(464,260), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(456,256), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    ABISELECT(528,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(528,296), //bcp->offset
    57, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(512,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(512,288), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2509C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(640,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(688,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(688,380), //bcp->offset
    71, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(640,352), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S2509C15,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(320,180), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(368,208), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S2509C14,    ABISELECT(112,56), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(384,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(432,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(432,240), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(384,212), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2509C13[];
extern void _ZN8S2509C13D1Ev();
extern void _ZN8S2509C13D0Ev();
extern void ABISELECT(_ZThn112_N8S2509C13D1Ev,_ZThn56_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn112_N8S2509C13D0Ev,_ZThn56_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn320_N8S2509C13D1Ev,_ZThn180_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn320_N8S2509C13D0Ev,_ZThn180_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn368_N8S2509C13D1Ev,_ZThn208_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn368_N8S2509C13D0Ev,_ZThn208_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn384_N8S2509C13D1Ev,_ZThn212_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn384_N8S2509C13D0Ev,_ZThn212_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn432_N8S2509C13D1Ev,_ZThn240_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn432_N8S2509C13D0Ev,_ZThn240_N8S2509C13D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn456_N8S2509C13D1Ev,_ZThn256_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn456_N8S2509C13D0Ev,_ZThn256_N8S2509C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C13D1Ev,_ZTv0_n12_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn464_N8S2509C13D1Ev,_ZThn260_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C13D0Ev,_ZTv0_n12_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn464_N8S2509C13D0Ev,_ZThn260_N8S2509C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn512_N8S2509C13D1Ev,_ZThn288_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn512_N8S2509C13D0Ev,_ZThn288_N8S2509C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn528_N8S2509C13D1Ev,_ZThn296_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn528_N8S2509C13D0Ev,_ZThn296_N8S2509C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn640_N8S2509C13D1Ev,_ZThn352_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn640_N8S2509C13D0Ev,_ZThn352_N8S2509C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S2509C13D1Ev,_ZTvn28_n24_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C13D0Ev,_ZTvn28_n24_N8S2509C13D0Ev)();
static  VTBL_ENTRY vtc_S2509C13[] = {
  ABISELECT(640,352),
  ABISELECT(528,296),
  ABISELECT(512,288),
  ABISELECT(456,256),
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&_ZN8S2509C13D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C13D0Ev,
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S2509C13D1Ev,_ZThn56_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S2509C13D0Ev,_ZThn56_N8S2509C13D0Ev),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S2509C13D1Ev,_ZThn180_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S2509C13D0Ev,_ZThn180_N8S2509C13D0Ev),
  ABISELECT(96,52),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S2509C13D1Ev,_ZThn208_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S2509C13D0Ev,_ZThn208_N8S2509C13D0Ev),
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S2509C13D1Ev,_ZThn212_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S2509C13D0Ev,_ZThn212_N8S2509C13D0Ev),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S2509C13D1Ev,_ZThn240_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S2509C13D0Ev,_ZThn240_N8S2509C13D0Ev),
  ABISELECT(-456,-256),
  ABISELECT(8,4),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev),
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C13D1Ev,_ZTv0_n12_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C13D0Ev,_ZTv0_n12_N8S2509C13D0Ev),
  ABISELECT(-512,-288),
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  ABISELECT(-512,-288),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev),
  ABISELECT(-528,-296),
  ABISELECT(-64,-36),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev),
  ABISELECT(-640,-352),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-640,-352),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev),
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C13D1Ev,_ZTvn28_n24_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C13D0Ev,_ZTvn28_n24_N8S2509C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S2509C13[];
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__A__8S2509C13[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__A3__8S2509C13[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn464_N7S2509C6D1Ev,_ZThn260_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn464_N7S2509C6D0Ev,_ZThn260_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__A3__8S2509C13[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZThn464_N7S2509C9D1Ev,_ZThn260_N7S2509C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
extern void ABISELECT(_ZThn464_N7S2509C9D0Ev,_ZThn260_N7S2509C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__A__8S2509C13[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN8S2509C14D1Ev();
extern void _ZN8S2509C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C14__8S2509C13[] = {
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&_ZN8S2509C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C14D0Ev,
};
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C158S2509C14__8S2509C13[] = {
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C158S2509C14__A5__8S2509C13[] = {
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn352_N7S2509C6D1Ev,_ZThn204_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn352_N7S2509C6D0Ev,_ZThn204_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C158S2509C14__A5__8S2509C13[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZThn352_N8S2509C15D1Ev,_ZThn204_N8S2509C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
extern void ABISELECT(_ZThn352_N8S2509C15D0Ev,_ZThn204_N8S2509C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C158S2509C14__8S2509C13[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZThn416_N8S2509C15D1Ev,_ZThn240_N8S2509C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
extern void ABISELECT(_ZThn416_N8S2509C15D0Ev,_ZThn240_N8S2509C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C158S2509C14__8S2509C13[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A6__8S2509C13[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn96_N7S2509C6D1Ev,_ZThn52_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn96_N7S2509C6D0Ev,_ZThn52_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C14__A6__8S2509C13[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn416_N8S2509C14D1Ev,_ZThn240_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn416_N8S2509C14D0Ev,_ZThn240_N8S2509C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C14__8S2509C13[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn352_N8S2509C14D1Ev,_ZThn204_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn352_N8S2509C14D0Ev,_ZThn204_N8S2509C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C14__8S2509C13[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn528_N8S2509C14D1Ev,_ZThn296_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn528_N8S2509C14D0Ev,_ZThn296_N8S2509C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C14__8S2509C13[] = {
  ABISELECT(-528,-296),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn344_N8S2509C14D1Ev,_ZThn200_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn344_N8S2509C14D0Ev,_ZThn200_N8S2509C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C14__8S2509C13[] = {
  ABISELECT(-344,-200),
  ABISELECT(8,4),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__8S2509C14__8S2509C13[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A__8S2509C14__8S2509C13[] = {
  ABISELECT(96,52),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C8__A__8S2509C13[] = {
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A2__8S2509C13[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C8__A7__8S2509C13[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn32_N7S2509C6D1Ev,_ZThn20_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn32_N7S2509C6D0Ev,_ZThn20_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A7__8S2509C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn96_N8S2509C10D1Ev,_ZThn56_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn96_N8S2509C10D0Ev,_ZThn56_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C8__A2__8S2509C13[] = {
  ABISELECT(-96,-56),
  ABISELECT(-64,-36),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn32_N8S2509C10D1Ev,_ZThn20_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn32_N8S2509C10D0Ev,_ZThn20_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C8__A2__8S2509C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn72_N7S2509C8D1Ev,_ZThn44_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn72_N7S2509C8D0Ev,_ZThn44_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8__A__8S2509C13[] = {
  ABISELECT(-72,-44),
  ABISELECT(8,4),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn80_N7S2509C8D1Ev,_ZThn48_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn80_N7S2509C8D0Ev,_ZThn48_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C8__A__8S2509C13[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn144_N7S2509C8D1Ev,_ZThn84_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn144_N7S2509C8D0Ev,_ZThn84_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8__A__8S2509C13[] = {
  ABISELECT(-144,-84),
  ABISELECT(-64,-36),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8__A__8S2509C13[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__8S2509C13[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn8_N7S2509C6D1Ev,_ZThn4_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn8_N7S2509C6D0Ev,_ZThn4_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__8S2509C13[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C10__8S2509C13[] = {
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C10__A2__8S2509C13[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C10__A2__8S2509C13[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn8_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn8_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C10__8S2509C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C10__8S2509C13[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C13[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__A1__8S2509C13[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__A1__8S2509C13[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__8S2509C13[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C13[] = {
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A1__8S2509C13[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C8__A4__8S2509C13[] = {
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A4__8S2509C13[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C8__A1__8S2509C13[] = {
  ABISELECT(160,84),
  ABISELECT(-64,-36),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C8__A1__8S2509C13[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8__8S2509C13[] = {
  ABISELECT(184,96),
  ABISELECT(8,4),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C8__8S2509C13[] = {
  ABISELECT(176,92),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8__8S2509C13[] = {
  ABISELECT(112,56),
  ABISELECT(-64,-36),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8__8S2509C13[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
static  VTT_ENTRY vtt_S2509C13[] = {
  {&(_ZTV8S2509C13[7]),  7,77},
  {&(_tg__ZTV7S2509C9__A__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__A3__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__A3__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__A__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S2509C14__8S2509C13[6]),  6,8},
  {&(_tg__ZTV8S2509C158S2509C14__8S2509C13[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C158S2509C14__A5__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C158S2509C14__A5__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C158S2509C14__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C158S2509C14__8S2509C13[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C14__A6__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C14__A6__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C14__8S2509C13[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C14__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C14__8S2509C13[6]),  6,8},
  {&(_tg__ZTV7S2509C6__A1__8S2509C14__8S2509C13[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__8S2509C14__8S2509C13[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A__8S2509C14__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C8__A__8S2509C13[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__A2__8S2509C13[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C8__A7__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A7__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C8__A2__8S2509C13[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C8__A2__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C8__A__8S2509C13[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C8__A__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8__A__8S2509C13[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C8__A__8S2509C13[4]),  4,6},
  {&(_ZTV8S2509C13[43]),  43,77},
  {&(_ZTV8S2509C13[48]),  48,77},
  {&(_ZTV8S2509C13[55]),  55,77},
  {&(_ZTV8S2509C13[61]),  61,77},
  {&(_ZTV8S2509C13[15]),  15,77},
  {&(_ZTV8S2509C13[69]),  69,77},
  {&(_ZTV8S2509C13[75]),  75,77},
  {&(_ZTV8S2509C13[24]),  24,77},
  {&(_ZTV8S2509C13[31]),  31,77},
  {&(_ZTV8S2509C13[37]),  37,77},
  {&(_tg__ZTV7S2509C6__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S2509C10__8S2509C13[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C10__A2__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C10__A2__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C10__8S2509C13[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C10__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__A1__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__A1__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C13[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__A1__8S2509C13[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C8__A4__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A4__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C8__A1__8S2509C13[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C8__A1__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C8__8S2509C13[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C8__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8__8S2509C13[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C8__8S2509C13[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S2509C13[];
extern  VTBL_ENTRY _ZTV8S2509C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C13[];
static VTBL_ENTRY alt_thunk_names146[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2509C8D0Ev,_ZThn48_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2509C8D1Ev,_ZThn48_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S2509C8D0Ev,_ZThn84_N7S2509C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2509C8D0Ev,_ZThn44_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S2509C8D1Ev,_ZThn84_N7S2509C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2509C8D1Ev,_ZThn44_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S2509C10D0Ev,_ZThn20_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S2509C10D1Ev,_ZThn20_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn8_N8S2509C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S2509C10D0Ev,_ZThn56_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn8_N8S2509C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S2509C10D1Ev,_ZThn56_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S2509C14D0Ev,_ZThn296_N8S2509C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S2509C14D1Ev,_ZThn296_N8S2509C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S2509C14D0Ev,_ZThn204_N8S2509C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S2509C14D1Ev,_ZThn204_N8S2509C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S2509C14D0Ev,_ZThn200_N8S2509C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S2509C14D0Ev,_ZThn240_N8S2509C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S2509C14D1Ev,_ZThn200_N8S2509C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S2509C14D1Ev,_ZThn240_N8S2509C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S2509C15D0Ev,_ZThn240_N8S2509C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S2509C15D1Ev,_ZThn240_N8S2509C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S2509C15D0Ev,_ZThn204_N8S2509C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S2509C15D1Ev,_ZThn204_N8S2509C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S2509C9D0Ev,_ZThn260_N7S2509C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S2509C9D1Ev,_ZThn260_N7S2509C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2509C6D0Ev,_ZThn4_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S2509C6D0Ev,_ZThn20_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2509C6D0Ev,_ZThn52_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S2509C6D0Ev,_ZThn204_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S2509C6D0Ev,_ZThn260_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2509C6D1Ev,_ZThn4_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S2509C6D1Ev,_ZThn20_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2509C6D1Ev,_ZThn52_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S2509C6D1Ev,_ZThn204_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S2509C6D1Ev,_ZThn260_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S2509C13D0Ev,_ZThn352_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S2509C13D1Ev,_ZThn352_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S2509C13D0Ev,_ZThn288_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S2509C13D1Ev,_ZThn288_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C13D0Ev,_ZTv0_n12_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S2509C13D0Ev,_ZThn260_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C13D1Ev,_ZTv0_n12_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S2509C13D1Ev,_ZThn260_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S2509C13D0Ev,_ZThn296_N8S2509C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S2509C13D0Ev,_ZThn256_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S2509C13D1Ev,_ZThn296_N8S2509C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S2509C13D1Ev,_ZThn256_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C13 = {  "S2509C13", // class name
  bases_S2509C13, 21,
  &(vtc_S2509C13[0]), // expected_vtbl_contents
  &(vtt_S2509C13[0]), // expected_vtt_contents
  ABISELECT(704,392), // object size
  NSPAIRA(_ZTI8S2509C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S2509C13),77, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2509C13),60, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names146,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C12  : virtual S2509C9 , virtual S2509C13 , virtual S2509C14 , virtual S19676C2 , S2509C8 {
  short s2509c12f0;
  void *s2509c12f1[2];
  ~S2509C12(); // tgen
  S2509C12(); // tgen
};
//SIG(-1 S2509C12) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} VBC5{ VBC4 VBC6{ VBC2 BC4 vd Fi} BC2 BC7{ VBC2 VBC8{ BC3 VBC4 VBC2 BC6 vd Fi} BC9{ VBC3 VBC2 BC4 vd Fp Fi FC3[3] Fi[7]} BC3 BC4 vd} BC8 vd Fs} VBC7 VBC10{ m FC11{} Fi[3]} BC8 Fs Fp[2]}


S2509C12 ::~S2509C12(){ note_dtor("S2509C12", this);} // tgen
S2509C12 ::S2509C12(){ note_ctor("S2509C12", this);} // tgen

static void Test_S2509C12()
{
  extern Class_Descriptor cd_S2509C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(68,155)];
    init_test(&cd_S2509C12, buf);
    S2509C12 *dp, &lv = *(dp=new (buf) S2509C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1072,616), "sizeof(S2509C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C12)");
    /*is_ambiguous_... S2509C12::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C9*)(S2509C13*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*)(S2509C13*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(192,108), "S2509C12");
    check_base_class_offset(lv, (S19676C9*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C14*)(S2509C13*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C15*)(S2509C14*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*)(S2509C14*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C14*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C9*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*), ABISELECT(88,52), "S2509C12");
    check_base_class_offset(lv, (S2509C9*)(S2509C14*)(S2509C13*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*), ABISELECT(88,52), "S2509C12");
    check_base_class_offset(lv, (S2509C9*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*)(S2509C13*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C14*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C15*)(S2509C14*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C13*), ABISELECT(696,392), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*), ABISELECT(696,392), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*)(S2509C13*), ABISELECT(696,392), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*), ABISELECT(696,392), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*), ABISELECT(704,396), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C13*), ABISELECT(704,396), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C9*)(S2509C13*), ABISELECT(240,136), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C13*), ABISELECT(240,136), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*), ABISELECT(720,404), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(768,432), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*), ABISELECT(768,432), "S2509C12");
    check_base_class_offset(lv, (S2509C8*)(S2509C14*)(S2509C13*), ABISELECT(720,404), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C14*), ABISELECT(720,404), "S2509C12");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(352,192), "S2509C12");
    check_base_class_offset(lv, (S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(352,192), "S2509C12");
    /*is_ambiguous_... S2509C14::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C14*)(S2509C13*), ABISELECT(560,316), "S2509C12");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C14*)(S2509C13*), ABISELECT(608,344), "S2509C12");
    check_base_class_offset(lv, (S2509C14*)(S2509C13*), ABISELECT(352,192), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*)(S2509C13*), ABISELECT(624,348), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(672,376), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(672,376), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C13*), ABISELECT(624,348), "S2509C12");
    check_base_class_offset(lv, (S2509C13*), ABISELECT(240,136), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*)(S2509C14*), ABISELECT(784,444), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C15*)(S2509C14*), ABISELECT(784,444), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C14*), ABISELECT(992,568), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C14*), ABISELECT(1040,596), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C14*), ABISELECT(784,444), "S2509C12");
    check_base_class_offset(lv, (S19676C2*), ABISELECT(1048,600), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*), 0, "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(48,28), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*), ABISELECT(48,28), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C8*), 0, "S2509C12");
    check_field_offset(lv, s2509c12f0, ABISELECT(64,40), "S2509C12.s2509c12f0");
    check_field_offset(lv, s2509c12f1, ABISELECT(72,44), "S2509C12.s2509c12f1");
    test_class_info(&lv, &cd_S2509C12);
    dp->~S2509C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C12(Test_S2509C12, "S2509C12", ABISELECT(1072,616));

#else // __cplusplus

extern void _ZN8S2509C12C1Ev();
extern void _ZN8S2509C12D1Ev();
Name_Map name_map_S2509C12[] = {
  NSPAIR(_ZN8S2509C12C1Ev),
  NSPAIR(_ZN8S2509C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C14;
extern VTBL_ENTRY _ZTI8S2509C14[];
extern  VTBL_ENTRY _ZTV8S2509C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C14[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S2509C13;
extern VTBL_ENTRY _ZTI8S2509C13[];
extern  VTBL_ENTRY _ZTV8S2509C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C13[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C14;
extern VTBL_ENTRY _ZTI8S2509C14[];
extern  VTBL_ENTRY _ZTV8S2509C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C14[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
static Base_Class bases_S2509C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(192,108), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(88,52), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    ABISELECT(696,392), //bcp->offset
    69, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(704,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(704,396), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(720,404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(768,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(768,432), //bcp->offset
    90, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(720,404), //bcp->offset
    82, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S2509C15,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(560,316), //bcp->offset
    47, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(608,344), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S2509C14,    ABISELECT(352,192), //bcp->offset
    39, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(624,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(672,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(672,376), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(624,348), //bcp->offset
    56, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S2509C13,    ABISELECT(240,136), //bcp->offset
    29, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    ABISELECT(784,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S2509C15,    ABISELECT(784,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(992,568), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(1040,596), //bcp->offset
    109, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S2509C14,    ABISELECT(784,444), //bcp->offset
    96, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    ABISELECT(1048,600), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(48,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S2509C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2509C12[];
extern void _ZN8S2509C12D1Ev();
extern void _ZN8S2509C12D0Ev();
extern void ABISELECT(_ZThn48_N8S2509C12D1Ev,_ZThn28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn48_N8S2509C12D0Ev,_ZThn28_N8S2509C12D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn88_N8S2509C12D1Ev,_ZThn52_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn88_N8S2509C12D0Ev,_ZThn52_N8S2509C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C12D1Ev,_ZTv0_n12_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn192_N8S2509C12D1Ev,_ZThn108_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C12D0Ev,_ZTv0_n12_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn192_N8S2509C12D0Ev,_ZThn108_N8S2509C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S2509C12D1Ev,_ZTv0_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn240_N8S2509C12D1Ev,_ZThn136_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S2509C12D0Ev,_ZTv0_n32_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn240_N8S2509C12D0Ev,_ZThn136_N8S2509C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N8S2509C12D1Ev,_ZTvn56_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S2509C12D0Ev,_ZTvn56_n32_N8S2509C12D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S2509C12D1Ev,_ZTvn180_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S2509C12D0Ev,_ZTvn180_n32_N8S2509C12D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S2509C12D1Ev,_ZTvn208_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S2509C12D0Ev,_ZTvn208_n32_N8S2509C12D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S2509C12D1Ev,_ZTvn212_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S2509C12D0Ev,_ZTvn212_n32_N8S2509C12D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S2509C12D1Ev,_ZTvn240_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S2509C12D0Ev,_ZTvn240_n32_N8S2509C12D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn696_N8S2509C12D1Ev,_ZThn392_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn696_N8S2509C12D0Ev,_ZThn392_N8S2509C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C12D1Ev,_ZTv0_n20_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn704_N8S2509C12D1Ev,_ZThn396_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C12D0Ev,_ZTv0_n20_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn704_N8S2509C12D0Ev,_ZThn396_N8S2509C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C12D1Ev,_ZTv0_n24_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn720_N8S2509C12D1Ev,_ZThn404_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C12D0Ev,_ZTv0_n24_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn720_N8S2509C12D0Ev,_ZThn404_N8S2509C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S2509C12D1Ev,_ZTvn28_n24_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C12D0Ev,_ZTvn28_n24_N8S2509C12D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S2509C12D1Ev,_ZTv0_n28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn784_N8S2509C12D1Ev,_ZThn444_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S2509C12D0Ev,_ZTv0_n28_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn784_N8S2509C12D0Ev,_ZThn444_N8S2509C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N8S2509C12D1Ev,_ZTvn124_n28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S2509C12D0Ev,_ZTvn124_n28_N8S2509C12D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S2509C12D1Ev,_ZTvn152_n28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S2509C12D0Ev,_ZTvn152_n28_N8S2509C12D0Ev)();
static  VTBL_ENTRY vtc_S2509C12[] = {
  ABISELECT(1048,600),
  ABISELECT(784,444),
  ABISELECT(720,404),
  ABISELECT(704,396),
  ABISELECT(240,136),
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(696,392),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&_ZN8S2509C12D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C12D0Ev,
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S2509C12D1Ev,_ZThn28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S2509C12D0Ev,_ZThn28_N8S2509C12D0Ev),
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C12D1Ev,_ZTv0_n12_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C12D0Ev,_ZTv0_n12_N8S2509C12D0Ev),
  ABISELECT(-240,-136),
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C12D1Ev,_ZTv0_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C12D0Ev,_ZTv0_n32_N8S2509C12D0Ev),
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C12D1Ev,_ZTvn56_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C12D0Ev,_ZTvn56_n32_N8S2509C12D0Ev),
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C12D1Ev,_ZTvn180_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C12D0Ev,_ZTvn180_n32_N8S2509C12D0Ev),
  ABISELECT(-416,-236),
  ABISELECT(-608,-344),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C12D1Ev,_ZTvn208_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C12D0Ev,_ZTvn208_n32_N8S2509C12D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C12D1Ev,_ZTvn212_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C12D0Ev,_ZTvn212_n32_N8S2509C12D0Ev),
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C12D1Ev,_ZTvn240_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C12D0Ev,_ZTvn240_n32_N8S2509C12D0Ev),
  ABISELECT(-696,-392),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev),
  ABISELECT(-704,-396),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-704,-396),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C12D1Ev,_ZTv0_n20_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C12D0Ev,_ZTv0_n20_N8S2509C12D0Ev),
  ABISELECT(-720,-404),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-720,-404),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C12D1Ev,_ZTv0_n24_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C12D0Ev,_ZTv0_n24_N8S2509C12D0Ev),
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-768,-432),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C12D1Ev,_ZTvn28_n24_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C12D0Ev,_ZTvn28_n24_N8S2509C12D0Ev),
  ABISELECT(-784,-444),
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  ABISELECT(-784,-444),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C12D1Ev,_ZTv0_n28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C12D0Ev,_ZTv0_n28_N8S2509C12D0Ev),
  ABISELECT(-992,-568),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C12D1Ev,_ZTvn124_n28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C12D0Ev,_ZTvn124_n28_N8S2509C12D0Ev),
  ABISELECT(-848,-488),
  ABISELECT(-1040,-596),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C12D1Ev,_ZTvn152_n28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C12D0Ev,_ZTvn152_n28_N8S2509C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S2509C12[];
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C8__A__8S2509C12[] = {
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(696,392),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A3__8S2509C12[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C8__A10__8S2509C12[] = {
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn144_N7S2509C6D1Ev,_ZThn80_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn144_N7S2509C6D0Ev,_ZThn80_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A10__8S2509C12[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S2509C10D1Ev,_ZThn24_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn40_N8S2509C10D0Ev,_ZThn24_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C8__A3__8S2509C12[] = {
  ABISELECT(-40,-24),
  ABISELECT(104,56),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn144_N8S2509C10D1Ev,_ZThn80_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn144_N8S2509C10D0Ev,_ZThn80_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C8__A3__8S2509C12[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn696_N7S2509C8D1Ev,_ZThn392_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn696_N7S2509C8D0Ev,_ZThn392_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8__A__8S2509C12[] = {
  ABISELECT(-696,-392),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn192_N7S2509C8D1Ev,_ZThn108_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn192_N7S2509C8D0Ev,_ZThn108_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C8__A__8S2509C12[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn88_N7S2509C8D1Ev,_ZThn52_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn88_N7S2509C8D0Ev,_ZThn52_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8__A__8S2509C12[] = {
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8__A__8S2509C12[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C12[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__8S2509C12[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn104_N7S2509C6D1Ev,_ZThn56_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn104_N7S2509C6D0Ev,_ZThn56_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__8S2509C12[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZThn104_N7S2509C9D1Ev,_ZThn56_N7S2509C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
extern void ABISELECT(_ZThn104_N7S2509C9D0Ev,_ZThn56_N7S2509C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__8S2509C12[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN8S2509C13D1Ev();
extern void _ZN8S2509C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C13__8S2509C12[] = {
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&_ZN8S2509C13D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C13D0Ev,
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C98S2509C13__A1__8S2509C12[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C98S2509C13__A3__8S2509C12[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C98S2509C13__A3__8S2509C12[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C98S2509C13__A1__8S2509C12[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN8S2509C14D1Ev();
extern void _ZN8S2509C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&_ZN8S2509C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C14D0Ev,
};
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C158S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C158S2509C148S2509C13__A5__8S2509C12[] = {
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C158S2509C148S2509C13__A5__8S2509C12[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C158S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C158S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C12[] = {
  ABISELECT(-416,-236),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C148S2509C13__A6__8S2509C12[] = {
  ABISELECT(416,236),
  ABISELECT(416,236),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn368_N8S2509C14D1Ev,_ZThn212_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn368_N8S2509C14D0Ev,_ZThn212_N8S2509C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(-368,-212),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn344_N8S2509C14D1Ev,_ZThn200_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn344_N8S2509C14D0Ev,_ZThn200_N8S2509C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(-344,-200),
  ABISELECT(-504,-284),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__8S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A__8S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(-416,-236),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C88S2509C13__A1__8S2509C12[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C12[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C88S2509C13__A7__8S2509C12[] = {
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C13__A7__8S2509C12[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C88S2509C13__A2__8S2509C12[] = {
  ABISELECT(584,324),
  ABISELECT(104,56),
  ABISELECT(584,324),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C88S2509C13__A2__8S2509C12[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn72_N7S2509C8D1Ev,_ZThn44_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn72_N7S2509C8D0Ev,_ZThn44_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C88S2509C13__A1__8S2509C12[] = {
  ABISELECT(-72,-44),
  ABISELECT(-504,-284),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C88S2509C13__A1__8S2509C12[] = {
  ABISELECT(432,240),
  ABISELECT(432,240),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C88S2509C13__A1__8S2509C12[] = {
  ABISELECT(536,296),
  ABISELECT(104,56),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C88S2509C13__A1__8S2509C12[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn456_N8S2509C13D1Ev,_ZThn256_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn456_N8S2509C13D0Ev,_ZThn256_N8S2509C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C6__8S2509C13__8S2509C12[] = {
  ABISELECT(-456,-256),
  ABISELECT(-504,-284),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C13D1Ev,_ZTv0_n12_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C13D0Ev,_ZTv0_n12_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C13__8S2509C12[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C13D1Ev,_ZTv0_n12_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C13D0Ev,_ZTv0_n12_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn464_N8S2509C13D1Ev,_ZThn260_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn464_N8S2509C13D0Ev,_ZThn260_N8S2509C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C10__8S2509C13__8S2509C12[] = {
  ABISELECT(-464,-260),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C13__8S2509C12[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn112_N8S2509C13D1Ev,_ZThn56_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn112_N8S2509C13D0Ev,_ZThn56_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C14__8S2509C13__8S2509C12[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S2509C13D1Ev,_ZThn56_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S2509C13D0Ev,_ZThn56_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn480_N8S2509C13D1Ev,_ZThn268_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn480_N8S2509C13D0Ev,_ZThn268_N8S2509C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C13__8S2509C12[] = {
  ABISELECT(-480,-268),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-480,-268),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C13D1Ev,_ZTvn28_n24_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C13D0Ev,_ZTvn28_n24_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A1__8S2509C13__8S2509C12[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C13D1Ev,_ZTvn28_n24_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C13D0Ev,_ZTvn28_n24_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn368_N8S2509C13D1Ev,_ZThn208_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn368_N8S2509C13D0Ev,_ZThn208_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A6__8S2509C13__8S2509C12[] = {
  ABISELECT(-416,-236),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S2509C13D1Ev,_ZThn208_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S2509C13D0Ev,_ZThn208_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn384_N8S2509C13D1Ev,_ZThn212_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn384_N8S2509C13D0Ev,_ZThn212_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__A__8S2509C13__8S2509C12[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S2509C13D1Ev,_ZThn212_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S2509C13D0Ev,_ZThn212_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn432_N8S2509C13D1Ev,_ZThn240_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn432_N8S2509C13D0Ev,_ZThn240_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A2__8S2509C13__8S2509C12[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S2509C13D1Ev,_ZThn240_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S2509C13D0Ev,_ZThn240_N8S2509C13D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C12[] = {
  ABISELECT(-504,-284),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__A1__8S2509C12[] = {
  ABISELECT(504,284),
  ABISELECT(504,284),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C10__8S2509C12[] = {
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C10__A2__8S2509C12[] = {
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C10__A2__8S2509C12[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C10__8S2509C12[] = {
  ABISELECT(616,344),
  ABISELECT(104,56),
  ABISELECT(616,344),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C10__8S2509C12[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C12[] = {
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A1__8S2509C12[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C8__A4__8S2509C12[] = {
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A4__8S2509C12[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C8__A1__8S2509C12[] = {
  ABISELECT(680,380),
  ABISELECT(104,56),
  ABISELECT(680,380),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C8__A1__8S2509C12[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8__8S2509C12[] = {
  ABISELECT(24,12),
  ABISELECT(-504,-284),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C8__8S2509C12[] = {
  ABISELECT(528,296),
  ABISELECT(528,296),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8__8S2509C12[] = {
  ABISELECT(632,352),
  ABISELECT(104,56),
  ABISELECT(632,352),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8__8S2509C12[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void _ZN8S2509C14D1Ev();
extern void _ZN8S2509C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C14__A1__8S2509C12[] = {
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&_ZN8S2509C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C14D0Ev,
};
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C158S2509C14__A1__8S2509C12[] = {
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C158S2509C14__A8__8S2509C12[] = {
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C158S2509C14__A8__8S2509C12[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C158S2509C14__A1__8S2509C12[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C158S2509C14__A1__8S2509C12[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A9__8S2509C12[] = {
  ABISELECT(-848,-488),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C14__A9__8S2509C12[] = {
  ABISELECT(848,488),
  ABISELECT(848,488),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C14__A1__8S2509C12[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C14__A1__8S2509C12[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C14__A1__8S2509C12[] = {
  ABISELECT(64,40),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C14__A1__8S2509C12[] = {
  ABISELECT(88,52),
  ABISELECT(-504,-284),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__8S2509C14__A1__8S2509C12[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A__8S2509C14__A1__8S2509C12[] = {
  ABISELECT(-848,-488),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev),
};
static  VTT_ENTRY vtt_S2509C12[] = {
  {&(_ZTV8S2509C12[10]),  10,114},
  {&(_tg__ZTV7S2509C8__A__8S2509C12[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__A3__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C8__A10__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A10__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C8__A3__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C8__A3__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C8__A__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C8__A__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8__A__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C8__A__8S2509C12[4]),  4,6},
  {&(_ZTV8S2509C12[22]),  22,114},
  {&(_ZTV8S2509C12[27]),  27,114},
  {&(_ZTV8S2509C12[37]),  37,114},
  {&(_ZTV8S2509C12[73]),  73,114},
  {&(_ZTV8S2509C12[80]),  80,114},
  {&(_ZTV8S2509C12[45]),  45,114},
  {&(_ZTV8S2509C12[88]),  88,114},
  {&(_ZTV8S2509C12[94]),  94,114},
  {&(_ZTV8S2509C12[49]),  49,114},
  {&(_ZTV8S2509C12[54]),  54,114},
  {&(_ZTV8S2509C12[61]),  61,114},
  {&(_ZTV8S2509C12[67]),  67,114},
  {&(_ZTV8S2509C12[103]),  103,114},
  {&(_ZTV8S2509C12[107]),  107,114},
  {&(_ZTV8S2509C12[112]),  112,114},
  {&(_ZTV8S2509C12[16]),  16,114},
  {&(_tg__ZTV7S2509C9__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S2509C13__8S2509C12[7]),  7,9},
  {&(_tg__ZTV7S2509C98S2509C13__A1__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C98S2509C13__A3__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C98S2509C13__A3__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C98S2509C13__A1__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S2509C148S2509C13__8S2509C12[6]),  6,8},
  {&(_tg__ZTV8S2509C158S2509C148S2509C13__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C158S2509C148S2509C13__A5__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C158S2509C148S2509C13__A5__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C158S2509C148S2509C13__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C158S2509C148S2509C13__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C148S2509C13__A6__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C148S2509C13__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C148S2509C13__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C148S2509C13__8S2509C12[6]),  6,8},
  {&(_tg__ZTV7S2509C6__A1__8S2509C148S2509C13__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__8S2509C148S2509C13__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A__8S2509C148S2509C13__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C88S2509C13__A1__8S2509C12[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C88S2509C13__A7__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C13__A7__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C88S2509C13__A2__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C88S2509C13__A2__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C88S2509C13__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C88S2509C13__A1__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C88S2509C13__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C88S2509C13__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C6__8S2509C13__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C13__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S2509C10__8S2509C13__8S2509C12[5]),  5,7},
  {&(_tg__ZTV7S2509C9__8S2509C13__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S2509C14__8S2509C13__8S2509C12[6]),  6,8},
  {&(_tg__ZTV7S2509C8__8S2509C13__8S2509C12[6]),  6,8},
  {&(_tg__ZTV8S2509C107S2509C8__A1__8S2509C13__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C14__A6__8S2509C13__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C8__A__8S2509C13__8S2509C12[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__A2__8S2509C13__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A1__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__A1__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S2509C10__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C10__A2__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C10__A2__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C10__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C10__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C12[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C8__A4__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A4__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C8__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C8__A1__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C8__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C8__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C8__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S2509C14__A1__8S2509C12[6]),  6,8},
  {&(_tg__ZTV8S2509C158S2509C14__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C158S2509C14__A8__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C158S2509C14__A8__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C158S2509C14__A1__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C158S2509C14__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C14__A9__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C14__A9__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C14__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C14__A1__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C14__A1__8S2509C12[6]),  6,8},
  {&(_tg__ZTV7S2509C6__A1__8S2509C14__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__8S2509C14__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A__8S2509C14__A1__8S2509C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S2509C12[];
extern  VTBL_ENTRY _ZTV8S2509C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C12[];
static VTBL_ENTRY alt_thunk_names147[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S2509C13D0Ev,_ZThn268_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S2509C13D1Ev,_ZThn268_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S2509C13D0Ev,_ZThn260_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S2509C13D1Ev,_ZThn260_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S2509C13D0Ev,_ZThn256_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S2509C13D1Ev,_ZThn256_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S2509C14D0Ev,_ZThn200_N8S2509C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S2509C14D1Ev,_ZThn200_N8S2509C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S2509C14D0Ev,_ZThn212_N8S2509C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S2509C14D1Ev,_ZThn212_N8S2509C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2509C9D0Ev,_ZThn56_N7S2509C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2509C9D1Ev,_ZThn56_N7S2509C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2509C8D0Ev,_ZThn108_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2509C8D1Ev,_ZThn108_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2509C8D0Ev,_ZThn44_N7S2509C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S2509C8D0Ev,_ZThn52_N7S2509C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn696_N7S2509C8D0Ev,_ZThn392_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2509C8D1Ev,_ZThn44_N7S2509C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S2509C8D1Ev,_ZThn52_N7S2509C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn696_N7S2509C8D1Ev,_ZThn392_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S2509C10D0Ev,_ZThn80_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S2509C10D1Ev,_ZThn80_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S2509C10D0Ev,_ZThn24_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S2509C10D1Ev,_ZThn24_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2509C6D0Ev,_ZThn56_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S2509C6D0Ev,_ZThn80_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2509C6D1Ev,_ZThn56_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S2509C6D1Ev,_ZThn80_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C12D0Ev,_ZTv0_n28_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S2509C12D0Ev,_ZThn444_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C12D1Ev,_ZTv0_n28_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S2509C12D1Ev,_ZThn444_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C12D0Ev,_ZTv0_n24_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S2509C12D0Ev,_ZThn404_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C12D1Ev,_ZTv0_n24_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S2509C12D1Ev,_ZThn404_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C12D0Ev,_ZTv0_n20_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N8S2509C12D0Ev,_ZThn396_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C12D1Ev,_ZTv0_n20_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N8S2509C12D1Ev,_ZThn396_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C12D0Ev,_ZTv0_n32_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S2509C12D0Ev,_ZThn136_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C12D1Ev,_ZTv0_n32_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S2509C12D1Ev,_ZThn136_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C12D0Ev,_ZTv0_n12_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S2509C12D0Ev,_ZThn108_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C12D1Ev,_ZTv0_n12_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S2509C12D1Ev,_ZThn108_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S2509C12D0Ev,_ZThn392_N8S2509C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S2509C12D0Ev,_ZThn52_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S2509C12D1Ev,_ZThn392_N8S2509C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S2509C12D1Ev,_ZThn52_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C12 = {  "S2509C12", // class name
  bases_S2509C12, 32,
  &(vtc_S2509C12[0]), // expected_vtbl_contents
  &(vtt_S2509C12[0]), // expected_vtt_contents
  ABISELECT(1072,616), // object size
  NSPAIRA(_ZTI8S2509C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S2509C12),114, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2509C12),101, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names147,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C11  : virtual S2509C6 , virtual S2509C12 , virtual S2509C15 , S2509C2 {
  virtual  ~S2509C11(); // _ZN8S2509C11D2Ev
  S2509C11(); // tgen
};
//SIG(-1 S2509C11) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ VBC5{ VBC3 BC2 Fp[10] Fi FL} VBC6{ VBC2 VBC7{ VBC5 BC2 vd Fi} BC5 BC8{ VBC5 VBC9{ BC3 VBC2 VBC5 BC7 vd Fi} BC10{ VBC3 VBC5 BC2 vd Fp Fi FC3[3] Fi[7]} BC3 BC2 vd} BC9 vd Fs} VBC8 VBC11{ m FC12{} Fi[3]} BC9 Fs Fp[2]} VBC10 BC13{ BC11 BC14{ VBC2 VBC9 VBC11 vd Fi} FC2 Fi} vd}


 S2509C11 ::~S2509C11(){ note_dtor("S2509C11", this);}
S2509C11 ::S2509C11(){ note_ctor("S2509C11", this);} // tgen

static void Test_S2509C11()
{
  extern Class_Descriptor cd_S2509C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(88,200)];
    init_test(&cd_S2509C11, buf);
    S2509C11 *dp, &lv = *(dp=new (buf) S2509C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1392,796), "sizeof(S2509C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C11)");
    /*is_ambiguous_... S2509C11::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C9*)(S2509C13*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*)(S2509C13*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(112,60), "S2509C11");
    check_base_class_offset(lv, (S19676C9*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C14*)(S2509C13*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C15*)(S2509C14*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*)(S2509C14*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C14*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*)(S2509C12*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C15 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C15*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C15 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*), 0, "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C13*), 0, "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*), 0, "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*)(S2509C13*), 0, "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*)(S2509C12*), 0, "S2509C11");
    /*is_ambiguous_... S2509C5::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C5*)(S2509C2*), 0, "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C12*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*), ABISELECT(248,140), "S2509C11");
    check_base_class_offset(lv, (S2509C9*)(S2509C14*)(S2509C13*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*), ABISELECT(248,140), "S2509C11");
    check_base_class_offset(lv, (S2509C9*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*)(S2509C13*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C14*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C15*)(S2509C14*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*)(S2509C12*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*)(S2509C12*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C15 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C15*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*), ABISELECT(808,452), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C13*), ABISELECT(808,452), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C9*)(S2509C13*), ABISELECT(352,196), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C13*), ABISELECT(352,196), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*), ABISELECT(832,460), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(880,488), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*), ABISELECT(880,488), "S2509C11");
    check_base_class_offset(lv, (S2509C8*)(S2509C14*)(S2509C13*), ABISELECT(832,460), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C14*), ABISELECT(832,460), "S2509C11");
    check_base_class_offset(lv, (S2509C8*)(S2509C5*)(S2509C2*), ABISELECT(832,460), "S2509C11");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(464,252), "S2509C11");
    check_base_class_offset(lv, (S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(464,252), "S2509C11");
    /*is_ambiguous_... S2509C14::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C14*)(S2509C13*), ABISELECT(672,376), "S2509C11");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C14*)(S2509C13*), ABISELECT(720,404), "S2509C11");
    check_base_class_offset(lv, (S2509C14*)(S2509C13*), ABISELECT(464,252), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*)(S2509C13*), ABISELECT(736,408), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(784,436), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(784,436), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C13*), ABISELECT(736,408), "S2509C11");
    check_base_class_offset(lv, (S2509C13*)(S2509C12*), ABISELECT(352,196), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*)(S2509C14*), ABISELECT(896,500), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C15*)(S2509C14*), ABISELECT(896,500), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C14*), ABISELECT(1104,624), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C14*), ABISELECT(1152,652), "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C14*)(S2509C12*), ABISELECT(896,500), "S2509C11");
    check_base_class_offset(lv, (S19676C2*)(S2509C12*), ABISELECT(1160,656), "S2509C11");
    check_base_class_offset(lv, (S19676C2*)(S2509C5*)(S2509C2*), ABISELECT(1160,656), "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*)(S2509C12*), ABISELECT(160,88), "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*)(S2509C12*), ABISELECT(208,116), "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*)(S2509C12*), ABISELECT(208,116), "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C12*), ABISELECT(160,88), "S2509C11");
    check_base_class_offset(lv, (S2509C12*), ABISELECT(160,88), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C15 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*), ABISELECT(1184,672), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C15 */ AMB_check_base_class_offset(lv, (S2509C15*), ABISELECT(1184,672), "S2509C11");
    /*is_ambiguous_... S2509C2::S19676C2 */ AMB_check_base_class_offset(lv, (S19676C2*)(S2509C2*), ABISELECT(12,8), "S2509C11");
    check_base_class_offset(lv, (S2509C5*)(S2509C2*), 0, "S2509C11");
    check_base_class_offset(lv, (S2509C2*), 0, "S2509C11");
    test_class_info(&lv, &cd_S2509C11);
    dp->~S2509C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C11(Test_S2509C11, "S2509C11", ABISELECT(1392,796));

#else // __cplusplus

extern void _ZN8S2509C11C1Ev();
extern void _ZN8S2509C11D2Ev();
Name_Map name_map_S2509C11[] = {
  NSPAIR(_ZN8S2509C11C1Ev),
  NSPAIR(_ZN8S2509C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C14;
extern VTBL_ENTRY _ZTI8S2509C14[];
extern  VTBL_ENTRY _ZTV8S2509C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C14[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S2509C13;
extern VTBL_ENTRY _ZTI8S2509C13[];
extern  VTBL_ENTRY _ZTV8S2509C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C13[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C14;
extern VTBL_ENTRY _ZTI8S2509C14[];
extern  VTBL_ENTRY _ZTV8S2509C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C14[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S2509C12;
extern VTBL_ENTRY _ZTI8S2509C12[];
extern  VTBL_ENTRY _ZTV8S2509C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C12[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S2509C5;
extern VTBL_ENTRY _ZTI7S2509C5[];
extern  VTBL_ENTRY _ZTV7S2509C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C5[];
extern Class_Descriptor cd_S2509C2;
extern VTBL_ENTRY _ZTI7S2509C2[];
extern  VTBL_ENTRY _ZTV7S2509C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C2[];
static Base_Class bases_S2509C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(112,60), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S2509C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    ABISELECT(248,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(248,140), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(808,452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(808,452), //bcp->offset
    85, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(352,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(352,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(832,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(880,488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(880,488), //bcp->offset
    100, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(832,460), //bcp->offset
    92, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(464,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S2509C15,    ABISELECT(464,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(672,376), //bcp->offset
    63, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(720,404), //bcp->offset
    67, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S2509C14,    ABISELECT(464,252), //bcp->offset
    55, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(736,408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(784,436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(784,436), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(736,408), //bcp->offset
    72, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S2509C13,    ABISELECT(352,196), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(896,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S2509C15,    ABISELECT(896,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1104,624), //bcp->offset
    115, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(1152,652), //bcp->offset
    119, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S2509C14,    ABISELECT(896,500), //bcp->offset
    106, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(1160,656), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19676C9,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(208,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(208,116), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S2509C12,    ABISELECT(160,88), //bcp->offset
    20, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    ABISELECT(1184,672), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S2509C15,    ABISELECT(1184,672), //bcp->offset
    124, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S2509C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S2509C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2509C11[];
extern void ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev)();
extern void _ZN8S2509C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev)();
extern void _ZN8S2509C11D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C11D1Ev,_ZTv0_n12_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn112_N8S2509C11D1Ev,_ZThn60_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C11D0Ev,_ZTv0_n12_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn112_N8S2509C11D0Ev,_ZThn60_N8S2509C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S2509C11D1Ev,_ZTv0_n44_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn160_N8S2509C11D1Ev,_ZThn88_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S2509C11D0Ev,_ZTv0_n44_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn160_N8S2509C11D0Ev,_ZThn88_N8S2509C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n88_N8S2509C11D1Ev,_ZTvn28_n44_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N8S2509C11D0Ev,_ZTvn28_n44_N8S2509C11D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn248_N8S2509C11D1Ev,_ZThn140_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn248_N8S2509C11D0Ev,_ZThn140_N8S2509C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S2509C11D1Ev,_ZTv0_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn352_N8S2509C11D1Ev,_ZThn196_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S2509C11D0Ev,_ZTv0_n32_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn352_N8S2509C11D0Ev,_ZThn196_N8S2509C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N8S2509C11D1Ev,_ZTvn56_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S2509C11D0Ev,_ZTvn56_n32_N8S2509C11D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S2509C11D1Ev,_ZTvn180_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S2509C11D0Ev,_ZTvn180_n32_N8S2509C11D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S2509C11D1Ev,_ZTvn208_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S2509C11D0Ev,_ZTvn208_n32_N8S2509C11D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S2509C11D1Ev,_ZTvn212_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S2509C11D0Ev,_ZTvn212_n32_N8S2509C11D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S2509C11D1Ev,_ZTvn240_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S2509C11D0Ev,_ZTvn240_n32_N8S2509C11D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn808_N8S2509C11D1Ev,_ZThn452_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn808_N8S2509C11D0Ev,_ZThn452_N8S2509C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C11D1Ev,_ZTv0_n24_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn832_N8S2509C11D1Ev,_ZThn460_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C11D0Ev,_ZTv0_n24_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn832_N8S2509C11D0Ev,_ZThn460_N8S2509C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S2509C11D1Ev,_ZTvn28_n24_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C11D0Ev,_ZTvn28_n24_N8S2509C11D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S2509C11D1Ev,_ZTv0_n28_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn896_N8S2509C11D1Ev,_ZThn500_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S2509C11D0Ev,_ZTv0_n28_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn896_N8S2509C11D0Ev,_ZThn500_N8S2509C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N8S2509C11D1Ev,_ZTvn124_n28_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S2509C11D0Ev,_ZTvn124_n28_N8S2509C11D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S2509C11D1Ev,_ZTvn152_n28_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S2509C11D0Ev,_ZTvn152_n28_N8S2509C11D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn1184_N8S2509C11D1Ev,_ZThn672_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn1184_N8S2509C11D0Ev,_ZThn672_N8S2509C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C11[] = {
  ABISELECT(1184,672),
  ABISELECT(896,500),
  ABISELECT(808,452),
  ABISELECT(352,196),
  ABISELECT(160,88),
  ABISELECT(1160,656),
  ABISELECT(248,140),
  ABISELECT(832,460),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C11D1Ev,_ZTv0_n12_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C11D0Ev,_ZTv0_n12_N8S2509C11D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(1000,568),
  ABISELECT(736,412),
  ABISELECT(672,372),
  ABISELECT(648,364),
  ABISELECT(192,108),
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S2509C11D1Ev,_ZTv0_n44_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S2509C11D0Ev,_ZTv0_n44_N8S2509C11D0Ev),
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S2509C11D1Ev,_ZTvn28_n44_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S2509C11D0Ev,_ZTvn28_n44_N8S2509C11D0Ev),
  ABISELECT(-248,-140),
  ABISELECT(-136,-80),
  ABISELECT(-248,-140),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev),
  ABISELECT(-352,-196),
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-352,-196),
  ABISELECT(-240,-136),
  ABISELECT(-352,-196),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C11D1Ev,_ZTv0_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C11D0Ev,_ZTv0_n32_N8S2509C11D0Ev),
  ABISELECT(-464,-252),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-464,-252),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C11D1Ev,_ZTvn56_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C11D0Ev,_ZTvn56_n32_N8S2509C11D0Ev),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C11D1Ev,_ZTvn180_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C11D0Ev,_ZTvn180_n32_N8S2509C11D0Ev),
  ABISELECT(-608,-344),
  ABISELECT(-720,-404),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C11D1Ev,_ZTvn208_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C11D0Ev,_ZTvn208_n32_N8S2509C11D0Ev),
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-736,-408),
  ABISELECT(-736,-408),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C11D1Ev,_ZTvn212_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C11D0Ev,_ZTvn212_n32_N8S2509C11D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-784,-436),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C11D1Ev,_ZTvn240_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C11D0Ev,_ZTvn240_n32_N8S2509C11D0Ev),
  ABISELECT(-808,-452),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-808,-452),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev),
  ABISELECT(-832,-460),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-832,-460),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C11D1Ev,_ZTv0_n24_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C11D0Ev,_ZTv0_n24_N8S2509C11D0Ev),
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-880,-488),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C11D1Ev,_ZTvn28_n24_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C11D0Ev,_ZTvn28_n24_N8S2509C11D0Ev),
  ABISELECT(-896,-500),
  ABISELECT(-896,-500),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  ABISELECT(-896,-500),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C11D1Ev,_ZTv0_n28_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C11D0Ev,_ZTv0_n28_N8S2509C11D0Ev),
  ABISELECT(-1104,-624),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C11D1Ev,_ZTvn124_n28_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C11D0Ev,_ZTvn124_n28_N8S2509C11D0Ev),
  ABISELECT(-1040,-592),
  ABISELECT(-1152,-652),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C11D1Ev,_ZTvn152_n28_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C11D0Ev,_ZTvn152_n28_N8S2509C11D0Ev),
  ABISELECT(-1184,-672),
  ABISELECT(-936,-532),
  ABISELECT(-1072,-612),
  ABISELECT(-1184,-672),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S2509C11[];
extern void ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev)();
extern void _ZN7S2509C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev)();
extern void _ZN7S2509C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C2__8S2509C11[] = {
  ABISELECT(1160,656),
  ABISELECT(248,140),
  ABISELECT(832,460),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void _ZN7S2509C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void _ZN7S2509C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C57S2509C2__8S2509C11[] = {
  ABISELECT(1160,656),
  ABISELECT(248,140),
  ABISELECT(832,460),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C5D1Ev,_ZThn60_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C5D0Ev,_ZThn60_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C57S2509C2__8S2509C11[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn832_N7S2509C5D1Ev,_ZThn460_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn832_N7S2509C5D0Ev,_ZThn460_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C57S2509C2__8S2509C11[] = {
  ABISELECT(-832,-460),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-832,-460),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn248_N7S2509C5D1Ev,_ZThn140_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn248_N7S2509C5D0Ev,_ZThn140_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C57S2509C2__8S2509C11[] = {
  ABISELECT(-248,-140),
  ABISELECT(-136,-80),
  ABISELECT(-248,-140),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C57S2509C2__8S2509C11[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-880,-488),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C2D1Ev,_ZThn60_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C2D0Ev,_ZThn60_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C2__8S2509C11[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn832_N7S2509C2D1Ev,_ZThn460_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn832_N7S2509C2D0Ev,_ZThn460_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C2__8S2509C11[] = {
  ABISELECT(-832,-460),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-832,-460),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn248_N7S2509C2D1Ev,_ZThn140_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn248_N7S2509C2D0Ev,_ZThn140_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C2__8S2509C11[] = {
  ABISELECT(-248,-140),
  ABISELECT(-136,-80),
  ABISELECT(-248,-140),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S2509C2D1Ev,_ZTvn28_n24_N7S2509C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C2D0Ev,_ZTvn28_n24_N7S2509C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C2__8S2509C11[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-880,-488),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C2D1Ev,_ZTvn28_n24_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C2D0Ev,_ZTvn28_n24_N7S2509C2D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__8S2509C11[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn60_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn60_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__8S2509C11[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN8S2509C12D1Ev();
extern void _ZN8S2509C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C12__8S2509C11[] = {
  ABISELECT(1000,568),
  ABISELECT(736,412),
  ABISELECT(672,372),
  ABISELECT(648,364),
  ABISELECT(192,108),
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&_ZN8S2509C12D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C12D0Ev,
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C88S2509C12__A2__8S2509C11[] = {
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C88S2509C12__A3__8S2509C11[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C88S2509C12__A10__8S2509C11[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C12__A10__8S2509C11[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S2509C10D1Ev,_ZThn24_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn40_N8S2509C10D0Ev,_ZThn24_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C88S2509C12__A3__8S2509C11[] = {
  ABISELECT(-40,-24),
  ABISELECT(-136,-80),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C88S2509C12__A3__8S2509C11[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C88S2509C12__A2__8S2509C11[] = {
  ABISELECT(160,88),
  ABISELECT(112,60),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C88S2509C12__A2__8S2509C11[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn88_N7S2509C8D1Ev,_ZThn52_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn88_N7S2509C8D0Ev,_ZThn52_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C88S2509C12__A2__8S2509C11[] = {
  ABISELECT(-88,-52),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C88S2509C12__A2__8S2509C11[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn88_N8S2509C12D1Ev,_ZThn52_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn88_N8S2509C12D0Ev,_ZThn52_N8S2509C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C12__8S2509C11[] = {
  ABISELECT(-88,-52),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C12D1Ev,_ZTv0_n12_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C12D0Ev,_ZTv0_n12_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C12__8S2509C11[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C12D1Ev,_ZTv0_n12_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C12D0Ev,_ZTv0_n12_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S2509C12D1Ev,_ZTv0_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn192_N8S2509C12D1Ev,_ZThn108_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S2509C12D0Ev,_ZTv0_n32_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn192_N8S2509C12D0Ev,_ZThn108_N8S2509C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C13__8S2509C12__8S2509C11[] = {
  ABISELECT(-192,-108),
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-352,-196),
  ABISELECT(-240,-136),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C12D1Ev,_ZTv0_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C12D0Ev,_ZTv0_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C12__8S2509C11[] = {
  ABISELECT(160,88),
  ABISELECT(112,60),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2509C12D1Ev,_ZTv0_n20_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn648_N8S2509C12D1Ev,_ZThn364_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C12D0Ev,_ZTv0_n20_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn648_N8S2509C12D0Ev,_ZThn364_N8S2509C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C10__8S2509C12__8S2509C11[] = {
  ABISELECT(-648,-364),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-648,-364),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C12D1Ev,_ZTv0_n20_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C12D0Ev,_ZTv0_n20_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N8S2509C12D1Ev,_ZTvn56_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S2509C12D0Ev,_ZTvn56_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C148S2509C13__8S2509C12__8S2509C11[] = {
  ABISELECT(-464,-252),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-304,-164),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C12D1Ev,_ZTvn56_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C12D0Ev,_ZTvn56_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C12D1Ev,_ZTv0_n24_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn672_N8S2509C12D1Ev,_ZThn372_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C12D0Ev,_ZTv0_n24_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn672_N8S2509C12D0Ev,_ZThn372_N8S2509C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C12__8S2509C11[] = {
  ABISELECT(-672,-372),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-672,-372),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C12D1Ev,_ZTv0_n24_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C12D0Ev,_ZTv0_n24_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C12D1Ev,_ZTvn28_n24_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C12D0Ev,_ZTvn28_n24_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A1__8S2509C12__8S2509C11[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-720,-400),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C12D1Ev,_ZTvn28_n24_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C12D0Ev,_ZTvn28_n24_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N8S2509C12D1Ev,_ZTvn180_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S2509C12D0Ev,_ZTvn180_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C98S2509C148S2509C13__A2__8S2509C12__8S2509C11[] = {
  ABISELECT(-512,-288),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C12D1Ev,_ZTvn180_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C12D0Ev,_ZTvn180_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N8S2509C12D1Ev,_ZTvn208_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S2509C12D0Ev,_ZTvn208_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C12__8S2509C11[] = {
  ABISELECT(-608,-344),
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C12D1Ev,_ZTvn208_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C12D0Ev,_ZTvn208_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N8S2509C12D1Ev,_ZTvn212_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S2509C12D0Ev,_ZTvn212_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C88S2509C13__A1__8S2509C12__8S2509C11[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-736,-408),
  ABISELECT(-576,-320),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C12D1Ev,_ZTvn212_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C12D0Ev,_ZTvn212_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N8S2509C12D1Ev,_ZTvn240_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S2509C12D0Ev,_ZTvn240_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C12__8S2509C11[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C12D1Ev,_ZTvn240_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C12D0Ev,_ZTvn240_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S2509C12D1Ev,_ZTv0_n28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn736_N8S2509C12D1Ev,_ZThn412_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S2509C12D0Ev,_ZTv0_n28_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn736_N8S2509C12D0Ev,_ZThn412_N8S2509C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C14__A1__8S2509C12__8S2509C11[] = {
  ABISELECT(-736,-412),
  ABISELECT(-896,-500),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  ABISELECT(-736,-412),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C12D1Ev,_ZTv0_n28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C12D0Ev,_ZTv0_n28_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N8S2509C12D1Ev,_ZTvn124_n28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S2509C12D0Ev,_ZTvn124_n28_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C98S2509C14__A4__8S2509C12__8S2509C11[] = {
  ABISELECT(-944,-536),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C12D1Ev,_ZTvn124_n28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C12D0Ev,_ZTvn124_n28_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N8S2509C12D1Ev,_ZTvn152_n28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S2509C12D0Ev,_ZTvn152_n28_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A9__8S2509C12__8S2509C11[] = {
  ABISELECT(-1040,-592),
  ABISELECT(-992,-564),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C12D1Ev,_ZTvn152_n28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C12D0Ev,_ZTvn152_n28_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZThn48_N8S2509C12D1Ev,_ZThn28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn48_N8S2509C12D0Ev,_ZThn28_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A3__8S2509C12__8S2509C11[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S2509C12D1Ev,_ZThn28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S2509C12D0Ev,_ZThn28_N8S2509C12D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C11[] = {
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__A1__8S2509C11[] = {
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__A1__8S2509C11[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__8S2509C11[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN8S2509C13D1Ev();
extern void _ZN8S2509C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C13__8S2509C11[] = {
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-352,-196),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&_ZN8S2509C13D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C13D0Ev,
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C98S2509C13__A1__8S2509C11[] = {
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C98S2509C13__A3__8S2509C11[] = {
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C98S2509C13__A3__8S2509C11[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C98S2509C13__A1__8S2509C11[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN8S2509C14D1Ev();
extern void _ZN8S2509C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(-464,-252),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&_ZN8S2509C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C14D0Ev,
};
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C158S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C158S2509C148S2509C13__A5__8S2509C11[] = {
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C158S2509C148S2509C13__A5__8S2509C11[] = {
  ABISELECT(352,192),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C158S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(352,192),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C158S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(216,112),
  ABISELECT(-136,-80),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C11[] = {
  ABISELECT(-608,-344),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C148S2509C13__A6__8S2509C11[] = {
  ABISELECT(608,344),
  ABISELECT(608,344),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(216,112),
  ABISELECT(-136,-80),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(352,192),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn368_N8S2509C14D1Ev,_ZThn208_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn368_N8S2509C14D0Ev,_ZThn208_N8S2509C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(-368,-208),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(464,252),
  ABISELECT(112,60),
  ABISELECT(464,252),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__8S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-416,-236),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A__8S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(-608,-344),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C88S2509C13__A1__8S2509C11[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-736,-408),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C11[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C88S2509C13__A7__8S2509C11[] = {
  ABISELECT(-672,-376),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C13__A7__8S2509C11[] = {
  ABISELECT(672,376),
  ABISELECT(672,376),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C88S2509C13__A2__8S2509C11[] = {
  ABISELECT(536,296),
  ABISELECT(-136,-80),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C88S2509C13__A2__8S2509C11[] = {
  ABISELECT(672,376),
  ABISELECT(672,376),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C88S2509C13__A1__8S2509C11[] = {
  ABISELECT(736,408),
  ABISELECT(112,60),
  ABISELECT(736,408),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C88S2509C13__A1__8S2509C11[] = {
  ABISELECT(624,348),
  ABISELECT(624,348),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C88S2509C13__A1__8S2509C11[] = {
  ABISELECT(488,268),
  ABISELECT(-136,-80),
  ABISELECT(488,268),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C88S2509C13__A1__8S2509C11[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__8S2509C13__8S2509C11[] = {
  ABISELECT(352,196),
  ABISELECT(112,60),
  ABISELECT(352,196),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C13D1Ev,_ZTv0_n12_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C13D0Ev,_ZTv0_n12_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C13__8S2509C11[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C13D1Ev,_ZTv0_n12_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C13D0Ev,_ZTv0_n12_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn456_N8S2509C13D1Ev,_ZThn256_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn456_N8S2509C13D0Ev,_ZThn256_N8S2509C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C10__8S2509C13__8S2509C11[] = {
  ABISELECT(-456,-256),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C13__8S2509C11[] = {
  ABISELECT(104,56),
  ABISELECT(-136,-80),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn112_N8S2509C13D1Ev,_ZThn56_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn112_N8S2509C13D0Ev,_ZThn56_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C14__8S2509C13__8S2509C11[] = {
  ABISELECT(-464,-252),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S2509C13D1Ev,_ZThn56_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S2509C13D0Ev,_ZThn56_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn480_N8S2509C13D1Ev,_ZThn264_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn480_N8S2509C13D0Ev,_ZThn264_N8S2509C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C13__8S2509C11[] = {
  ABISELECT(-480,-264),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-480,-264),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C13D1Ev,_ZTvn28_n24_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C13D0Ev,_ZTvn28_n24_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A1__8S2509C13__8S2509C11[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-528,-292),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C13D1Ev,_ZTvn28_n24_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C13D0Ev,_ZTvn28_n24_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn368_N8S2509C13D1Ev,_ZThn208_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn368_N8S2509C13D0Ev,_ZThn208_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A6__8S2509C13__8S2509C11[] = {
  ABISELECT(-608,-344),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S2509C13D1Ev,_ZThn208_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S2509C13D0Ev,_ZThn208_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn384_N8S2509C13D1Ev,_ZThn212_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn384_N8S2509C13D0Ev,_ZThn212_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__A__8S2509C13__8S2509C11[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-736,-408),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S2509C13D1Ev,_ZThn212_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S2509C13D0Ev,_ZThn212_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn432_N8S2509C13D1Ev,_ZThn240_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn432_N8S2509C13D0Ev,_ZThn240_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A2__8S2509C13__8S2509C11[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S2509C13D1Ev,_ZThn240_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S2509C13D0Ev,_ZThn240_N8S2509C13D0Ev),
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C10__8S2509C11[] = {
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C10__A2__8S2509C11[] = {
  ABISELECT(-696,-392),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C10__A2__8S2509C11[] = {
  ABISELECT(696,392),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C10__8S2509C11[] = {
  ABISELECT(560,312),
  ABISELECT(-136,-80),
  ABISELECT(560,312),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C10__8S2509C11[] = {
  ABISELECT(696,392),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C11[] = {
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A1__8S2509C11[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C8__A4__8S2509C11[] = {
  ABISELECT(-768,-428),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A4__8S2509C11[] = {
  ABISELECT(768,428),
  ABISELECT(768,428),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C8__A1__8S2509C11[] = {
  ABISELECT(632,348),
  ABISELECT(-136,-80),
  ABISELECT(632,348),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C8__A1__8S2509C11[] = {
  ABISELECT(768,428),
  ABISELECT(768,428),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8__8S2509C11[] = {
  ABISELECT(832,460),
  ABISELECT(112,60),
  ABISELECT(832,460),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C8__8S2509C11[] = {
  ABISELECT(720,400),
  ABISELECT(720,400),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8__8S2509C11[] = {
  ABISELECT(584,320),
  ABISELECT(-136,-80),
  ABISELECT(584,320),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8__8S2509C11[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void _ZN8S2509C14D1Ev();
extern void _ZN8S2509C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C14__A1__8S2509C11[] = {
  ABISELECT(-896,-500),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&_ZN8S2509C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C14D0Ev,
};
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C158S2509C14__A1__8S2509C11[] = {
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C158S2509C14__A8__8S2509C11[] = {
  ABISELECT(-784,-440),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C158S2509C14__A8__8S2509C11[] = {
  ABISELECT(784,440),
  ABISELECT(784,440),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C158S2509C14__A1__8S2509C11[] = {
  ABISELECT(784,440),
  ABISELECT(784,440),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C158S2509C14__A1__8S2509C11[] = {
  ABISELECT(648,360),
  ABISELECT(-136,-80),
  ABISELECT(648,360),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A9__8S2509C11[] = {
  ABISELECT(-1040,-592),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C14__A9__8S2509C11[] = {
  ABISELECT(1040,592),
  ABISELECT(1040,592),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C14__A1__8S2509C11[] = {
  ABISELECT(648,360),
  ABISELECT(-136,-80),
  ABISELECT(648,360),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C14__A1__8S2509C11[] = {
  ABISELECT(784,440),
  ABISELECT(784,440),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C14__A1__8S2509C11[] = {
  ABISELECT(64,40),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C14__A1__8S2509C11[] = {
  ABISELECT(896,500),
  ABISELECT(112,60),
  ABISELECT(896,500),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__8S2509C14__A1__8S2509C11[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A__8S2509C14__A1__8S2509C11[] = {
  ABISELECT(-1040,-592),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev),
};
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C15__A2__8S2509C11[] = {
  ABISELECT(-936,-532),
  ABISELECT(-1072,-612),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C15__A11__8S2509C11[] = {
  ABISELECT(-1072,-612),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C15__A11__8S2509C11[] = {
  ABISELECT(1072,612),
  ABISELECT(1072,612),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C15__A2__8S2509C11[] = {
  ABISELECT(1072,612),
  ABISELECT(1072,612),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C15__A2__8S2509C11[] = {
  ABISELECT(936,532),
  ABISELECT(-136,-80),
  ABISELECT(936,532),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
static  VTT_ENTRY vtt_S2509C11[] = {
  {&(_ZTV8S2509C11[13]),  13,131},
  {&(_tg__ZTV7S2509C2__8S2509C11[8]),  8,10},
  {&(_tg__ZTV7S2509C57S2509C2__8S2509C11[8]),  8,10},
  {&(_tg__ZTV7S2509C57S2509C2__8S2509C11[8]),  8,10},
  {&(_tg__ZTV8S19676C9__7S2509C57S2509C2__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C57S2509C2__8S2509C11[6]),  6,8},
  {&(_tg__ZTV7S2509C9__7S2509C57S2509C2__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C57S2509C2__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C2__8S2509C11[8]),  8,10},
  {&(_tg__ZTV8S19676C9__7S2509C2__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C2__8S2509C11[6]),  6,8},
  {&(_tg__ZTV7S2509C9__7S2509C2__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C2__8S2509C11[4]),  4,6},
  {&(_ZTV8S2509C11[13]),  13,131},
  {&(_ZTV8S2509C11[18]),  18,131},
  {&(_ZTV8S2509C11[31]),  31,131},
  {&(_ZTV8S2509C11[43]),  43,131},
  {&(_ZTV8S2509C11[53]),  53,131},
  {&(_ZTV8S2509C11[90]),  90,131},
  {&(_ZTV8S2509C11[61]),  61,131},
  {&(_ZTV8S2509C11[98]),  98,131},
  {&(_ZTV8S2509C11[104]),  104,131},
  {&(_ZTV8S2509C11[65]),  65,131},
  {&(_ZTV8S2509C11[70]),  70,131},
  {&(_ZTV8S2509C11[77]),  77,131},
  {&(_ZTV8S2509C11[83]),  83,131},
  {&(_ZTV8S2509C11[113]),  113,131},
  {&(_ZTV8S2509C11[117]),  117,131},
  {&(_ZTV8S2509C11[122]),  122,131},
  {&(_ZTV8S2509C11[37]),  37,131},
  {&(_ZTV8S2509C11[129]),  129,131},
  {&(_tg__ZTV7S2509C6__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S2509C12__8S2509C11[10]),  10,12},
  {&(_tg__ZTV7S2509C88S2509C12__A2__8S2509C11[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C88S2509C12__A3__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C88S2509C12__A10__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C12__A10__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C88S2509C12__A3__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C88S2509C12__A3__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C88S2509C12__A2__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C88S2509C12__A2__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C88S2509C12__A2__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C88S2509C12__A2__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C9__8S2509C12__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C12__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S2509C13__8S2509C12__8S2509C11[8]),  8,10},
  {&(_tg__ZTV7S2509C6__A1__8S2509C12__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C10__8S2509C12__8S2509C11[5]),  5,7},
  {&(_tg__ZTV8S2509C148S2509C13__8S2509C12__8S2509C11[6]),  6,8},
  {&(_tg__ZTV7S2509C8__8S2509C12__8S2509C11[6]),  6,8},
  {&(_tg__ZTV8S2509C107S2509C8__A1__8S2509C12__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C98S2509C148S2509C13__A2__8S2509C12__8S2509C11[2]),  2,4},
  {&(_tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C12__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C88S2509C13__A1__8S2509C12__8S2509C11[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C12__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C14__A1__8S2509C12__8S2509C11[7]),  7,9},
  {&(_tg__ZTV8S19676C98S2509C14__A4__8S2509C12__8S2509C11[2]),  2,4},
  {&(_tg__ZTV7S2509C68S2509C14__A9__8S2509C12__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S2509C107S2509C8__A3__8S2509C12__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C9__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__A1__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__A1__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S2509C13__8S2509C11[7]),  7,9},
  {&(_tg__ZTV7S2509C98S2509C13__A1__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C98S2509C13__A3__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C98S2509C13__A3__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C98S2509C13__A1__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S2509C148S2509C13__8S2509C11[6]),  6,8},
  {&(_tg__ZTV8S2509C158S2509C148S2509C13__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C158S2509C148S2509C13__A5__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C158S2509C148S2509C13__A5__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C158S2509C148S2509C13__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C158S2509C148S2509C13__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C148S2509C13__A6__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C148S2509C13__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C148S2509C13__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C148S2509C13__8S2509C11[6]),  6,8},
  {&(_tg__ZTV7S2509C6__A1__8S2509C148S2509C13__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__8S2509C148S2509C13__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A__8S2509C148S2509C13__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C88S2509C13__A1__8S2509C11[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C88S2509C13__A7__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C13__A7__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C88S2509C13__A2__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C88S2509C13__A2__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C88S2509C13__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C88S2509C13__A1__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C88S2509C13__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C88S2509C13__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C6__8S2509C13__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C13__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S2509C10__8S2509C13__8S2509C11[5]),  5,7},
  {&(_tg__ZTV7S2509C9__8S2509C13__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C14__8S2509C13__8S2509C11[6]),  6,8},
  {&(_tg__ZTV7S2509C8__8S2509C13__8S2509C11[6]),  6,8},
  {&(_tg__ZTV8S2509C107S2509C8__A1__8S2509C13__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C14__A6__8S2509C13__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C8__A__8S2509C13__8S2509C11[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__A2__8S2509C13__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C10__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C10__A2__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C10__A2__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C10__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C10__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C11[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C8__A4__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A4__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C8__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C8__A1__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C8__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C8__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C8__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C14__A1__8S2509C11[6]),  6,8},
  {&(_tg__ZTV8S2509C158S2509C14__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C158S2509C14__A8__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C158S2509C14__A8__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C158S2509C14__A1__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C158S2509C14__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C14__A9__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C14__A9__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C14__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C14__A1__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C14__A1__8S2509C11[6]),  6,8},
  {&(_tg__ZTV7S2509C6__A1__8S2509C14__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__8S2509C14__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A__8S2509C14__A1__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S2509C15__A2__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C15__A11__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C15__A11__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C15__A2__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C15__A2__8S2509C11[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S2509C11[];
extern  VTBL_ENTRY _ZTV8S2509C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C11[];
static VTBL_ENTRY alt_thunk_names148[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S2509C13D0Ev,_ZThn264_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S2509C13D1Ev,_ZThn264_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S2509C13D0Ev,_ZThn256_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S2509C13D1Ev,_ZThn256_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S2509C14D0Ev,_ZThn208_N8S2509C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S2509C14D1Ev,_ZThn208_N8S2509C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C12D0Ev,_ZTv0_n28_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S2509C12D0Ev,_ZThn412_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C12D1Ev,_ZTv0_n28_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S2509C12D1Ev,_ZThn412_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C12D0Ev,_ZTv0_n24_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S2509C12D0Ev,_ZThn372_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C12D1Ev,_ZTv0_n24_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S2509C12D1Ev,_ZThn372_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C12D0Ev,_ZTv0_n20_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S2509C12D0Ev,_ZThn364_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C12D1Ev,_ZTv0_n20_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S2509C12D1Ev,_ZThn364_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C12D0Ev,_ZTv0_n32_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S2509C12D0Ev,_ZThn108_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C12D1Ev,_ZTv0_n32_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S2509C12D1Ev,_ZThn108_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S2509C12D0Ev,_ZThn52_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S2509C12D1Ev,_ZThn52_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S2509C8D0Ev,_ZThn52_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S2509C8D1Ev,_ZThn52_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S2509C10D0Ev,_ZThn24_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S2509C10D1Ev,_ZThn24_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn60_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn60_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N7S2509C2D0Ev,_ZThn460_N7S2509C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N7S2509C2D1Ev,_ZThn460_N7S2509C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C2D0Ev,_ZThn60_N7S2509C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C2D1Ev,_ZThn60_N7S2509C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N7S2509C5D0Ev,_ZThn460_N7S2509C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N7S2509C5D1Ev,_ZThn460_N7S2509C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C5D0Ev,_ZThn60_N7S2509C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C5D1Ev,_ZThn60_N7S2509C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S2509C5D0Ev,_ZThn140_N7S2509C5D0Ev),
  (VTBL_ENTRY)_ZN7S2509C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S2509C5D1Ev,_ZThn140_N7S2509C5D1Ev),
  (VTBL_ENTRY)_ZN7S2509C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S2509C2D0Ev,_ZThn140_N7S2509C2D0Ev),
  (VTBL_ENTRY)_ZN7S2509C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S2509C2D1Ev,_ZThn140_N7S2509C2D1Ev),
  (VTBL_ENTRY)_ZN7S2509C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C11D0Ev,_ZTv0_n28_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn896_N8S2509C11D0Ev,_ZThn500_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C11D1Ev,_ZTv0_n28_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn896_N8S2509C11D1Ev,_ZThn500_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C11D0Ev,_ZTv0_n24_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S2509C11D0Ev,_ZThn460_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C11D1Ev,_ZTv0_n24_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S2509C11D1Ev,_ZThn460_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N8S2509C11D0Ev,_ZThn672_N8S2509C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn808_N8S2509C11D0Ev,_ZThn452_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N8S2509C11D1Ev,_ZThn672_N8S2509C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn808_N8S2509C11D1Ev,_ZThn452_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C11D0Ev,_ZTv0_n32_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S2509C11D0Ev,_ZThn196_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C11D1Ev,_ZTv0_n32_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S2509C11D1Ev,_ZThn196_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S2509C11D0Ev,_ZTv0_n44_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S2509C11D0Ev,_ZThn88_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S2509C11D1Ev,_ZTv0_n44_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S2509C11D1Ev,_ZThn88_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C11D0Ev,_ZTv0_n12_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S2509C11D0Ev,_ZThn60_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C11D1Ev,_ZTv0_n12_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S2509C11D1Ev,_ZThn60_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S2509C11D0Ev,_ZThn140_N8S2509C11D0Ev),
  (VTBL_ENTRY)_ZN8S2509C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S2509C11D1Ev,_ZThn140_N8S2509C11D1Ev),
  (VTBL_ENTRY)_ZN8S2509C11D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C11 = {  "S2509C11", // class name
  bases_S2509C11, 38,
  &(vtc_S2509C11[0]), // expected_vtbl_contents
  &(vtt_S2509C11[0]), // expected_vtt_contents
  ABISELECT(1392,796), // object size
  NSPAIRA(_ZTI8S2509C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S2509C11),131, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2509C11),137, //virtual table table var
  36, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names148,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C1  : S2509C2 , S2509C11 , S2509C9 , virtual S2509C5 {
  __tsi64 s2509c1f0;
  ~S2509C1(); // tgen
  S2509C1(); // tgen
};
//SIG(1 S2509C1) C1{ BC2{ BC3{ m FC4{} Fi[3]} BC5{ VBC6{ VBC7{ vd m Fp Fi Fc FD} vd} VBC8{ BC7 VBC6 VBC9{ VBC7 BC6 Fp[10] Fi FL} BC10{ VBC9 BC6 vd Fi} vd Fi} VBC3 vd Fi} FC6 Fi} BC11{ VBC6 VBC12{ VBC9 VBC13{ VBC6 VBC10 BC9 BC14{ VBC9 VBC8 BC15{ VBC7 VBC9 BC6 vd Fp Fi FC7[3] Fi[7]} BC7 BC6 vd} BC8 vd Fs} VBC14 VBC3 BC8 Fs Fp[2]} VBC15 BC2 vd} BC9 VBC5 FL}


S2509C1 ::~S2509C1(){ note_dtor("S2509C1", this);} // tgen
S2509C1 ::S2509C1(){ note_ctor("S2509C1", this);} // tgen

static void Test_S2509C1()
{
  extern Class_Descriptor cd_S2509C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(104,233)];
    init_test(&cd_S2509C1, buf);
    S2509C1 *dp, &lv = *(dp=new (buf) S2509C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1648,928), "sizeof(S2509C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C1)");
    /*is_ambiguous_... S2509C1::S2509C2 */ AMB_check_base_class_offset(lv, (S19676C2*)(S2509C2*), ABISELECT(12,8), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C9*)(S2509C13*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*)(S2509C13*), ABISELECT(336,184), "S2509C1");
    check_base_class_offset(lv, (S19676C9*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C14*)(S2509C13*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C15*)(S2509C14*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*)(S2509C14*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C14*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*)(S2509C12*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C15 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C15*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C15 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C2 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C5*)(S2509C2*), 0, "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*), 0, "S2509C1");
    /*is_ambiguous_... S2509C11::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C11*), 0, "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C13*), 0, "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*)(S2509C13*), 0, "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*)(S2509C12*), 0, "S2509C1");
    /*is_ambiguous_... S2509C5::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C5*)(S2509C2*)(S2509C11*), 0, "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C5 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C5*), 0, "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*), ABISELECT(384,212), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C12*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*), ABISELECT(448,252), "S2509C1");
    check_base_class_offset(lv, (S2509C9*)(S2509C14*)(S2509C13*), ABISELECT(448,252), "S2509C1");
    check_base_class_offset(lv, (S2509C9*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*)(S2509C13*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C14*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C15*)(S2509C14*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*)(S2509C12*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*)(S2509C12*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C15 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C15*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(432,240), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*), ABISELECT(432,240), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C2 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C5*)(S2509C2*), ABISELECT(384,212), "S2509C1");
    check_base_class_offset(lv, (S2509C8*)(S2509C14*)(S2509C13*), ABISELECT(384,212), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C14*), ABISELECT(384,212), "S2509C1");
    check_base_class_offset(lv, (S2509C8*)(S2509C5*)(S2509C2*)(S2509C11*), ABISELECT(384,212), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C5 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C5*), ABISELECT(384,212), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C2 */ AMB_check_base_class_offset(lv, (S19676C2*)(S2509C5*)(S2509C2*), ABISELECT(552,308), "S2509C1");
    check_base_class_offset(lv, (S19676C2*)(S2509C12*), ABISELECT(552,308), "S2509C1");
    check_base_class_offset(lv, (S19676C2*)(S2509C5*)(S2509C2*)(S2509C11*), ABISELECT(552,308), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C5 */ AMB_check_base_class_offset(lv, (S19676C2*)(S2509C5*), ABISELECT(552,308), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C2 */ AMB_check_base_class_offset(lv, (S2509C5*)(S2509C2*), 0, "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C2 */ AMB_check_base_class_offset(lv, (S2509C2*), 0, "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*), ABISELECT(1128,632), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C13*), ABISELECT(1128,632), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C9*)(S2509C13*), ABISELECT(672,376), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C13*), ABISELECT(672,376), "S2509C1");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(784,432), "S2509C1");
    check_base_class_offset(lv, (S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(784,432), "S2509C1");
    /*is_ambiguous_... S2509C14::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C14*)(S2509C13*), ABISELECT(992,556), "S2509C1");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C14*)(S2509C13*), ABISELECT(1040,584), "S2509C1");
    check_base_class_offset(lv, (S2509C14*)(S2509C13*), ABISELECT(784,432), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*)(S2509C13*), ABISELECT(1056,588), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(1104,616), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(1104,616), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C13*), ABISELECT(1056,588), "S2509C1");
    check_base_class_offset(lv, (S2509C13*)(S2509C12*), ABISELECT(672,376), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*)(S2509C14*), ABISELECT(1152,640), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C15*)(S2509C14*), ABISELECT(1152,640), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C14*), ABISELECT(1360,764), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C14*), ABISELECT(1408,792), "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C14*)(S2509C12*), ABISELECT(1152,640), "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*)(S2509C12*), ABISELECT(576,324), "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*)(S2509C12*), ABISELECT(624,352), "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*)(S2509C12*), ABISELECT(624,352), "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C12*), ABISELECT(576,324), "S2509C1");
    check_base_class_offset(lv, (S2509C12*)(S2509C11*), ABISELECT(576,324), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C15 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*), ABISELECT(1424,796), "S2509C1");
    /*is_ambiguous_... S2509C11::S2509C15 */ AMB_check_base_class_offset(lv, (S2509C15*)(S2509C11*), ABISELECT(1424,796), "S2509C1");
    /*is_ambiguous_... S2509C2::S19676C2 */ AMB_check_base_class_offset(lv, (S19676C2*)(S2509C2*)(S2509C11*), ABISELECT(124,68), "S2509C1");
    check_base_class_offset(lv, (S2509C5*)(S2509C2*)(S2509C11*), ABISELECT(112,60), "S2509C1");
    check_base_class_offset(lv, (S2509C2*)(S2509C11*), ABISELECT(112,60), "S2509C1");
    check_base_class_offset(lv, (S2509C11*), ABISELECT(112,60), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(216,120), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C9*), ABISELECT(216,120), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C5 */ AMB_check_base_class_offset(lv, (S2509C5*), ABISELECT(1632,920), "S2509C1");
    check_field_offset(lv, s2509c1f0, ABISELECT(320,176), "S2509C1.s2509c1f0");
    test_class_info(&lv, &cd_S2509C1);
    dp->~S2509C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C1(Test_S2509C1, "S2509C1", ABISELECT(1648,928));

#else // __cplusplus

extern void _ZN7S2509C1C1Ev();
extern void _ZN7S2509C1D1Ev();
Name_Map name_map_S2509C1[] = {
  NSPAIR(_ZN7S2509C1C1Ev),
  NSPAIR(_ZN7S2509C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S2509C5;
extern VTBL_ENTRY _ZTI7S2509C5[];
extern  VTBL_ENTRY _ZTV7S2509C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C5[];
extern Class_Descriptor cd_S2509C2;
extern VTBL_ENTRY _ZTI7S2509C2[];
extern  VTBL_ENTRY _ZTV7S2509C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C2[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C14;
extern VTBL_ENTRY _ZTI8S2509C14[];
extern  VTBL_ENTRY _ZTV8S2509C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C14[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S2509C13;
extern VTBL_ENTRY _ZTI8S2509C13[];
extern  VTBL_ENTRY _ZTV8S2509C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C13[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C14;
extern VTBL_ENTRY _ZTI8S2509C14[];
extern  VTBL_ENTRY _ZTV8S2509C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C14[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S2509C12;
extern VTBL_ENTRY _ZTI8S2509C12[];
extern  VTBL_ENTRY _ZTV8S2509C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C12[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S2509C5;
extern VTBL_ENTRY _ZTI7S2509C5[];
extern  VTBL_ENTRY _ZTV7S2509C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C5[];
extern Class_Descriptor cd_S2509C2;
extern VTBL_ENTRY _ZTI7S2509C2[];
extern  VTBL_ENTRY _ZTV7S2509C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C2[];
extern Class_Descriptor cd_S2509C11;
extern VTBL_ENTRY _ZTI8S2509C11[];
extern  VTBL_ENTRY _ZTV8S2509C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C11[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C5;
extern VTBL_ENTRY _ZTI7S2509C5[];
extern  VTBL_ENTRY _ZTV7S2509C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C5[];
static Base_Class bases_S2509C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C2,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(336,184), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S2509C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19676C9,    ABISELECT(384,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(448,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(448,252), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(432,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(432,240), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(384,212), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(552,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S2509C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2509C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2509C6,    ABISELECT(1128,632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    153, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(1128,632), //bcp->offset
    120, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    152, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(672,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(672,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(784,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2509C15,    ABISELECT(784,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(992,556), //bcp->offset
    98, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(1040,584), //bcp->offset
    102, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2509C14,    ABISELECT(784,432), //bcp->offset
    90, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1056,588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(1104,616), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(1104,616), //bcp->offset
    114, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(1056,588), //bcp->offset
    107, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S2509C13,    ABISELECT(672,376), //bcp->offset
    80, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(1152,640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    159, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S2509C15,    ABISELECT(1152,640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    158, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1360,764), //bcp->offset
    136, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(1408,792), //bcp->offset
    140, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S2509C14,    ABISELECT(1152,640), //bcp->offset
    127, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    157, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S19676C9,    ABISELECT(576,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(624,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(624,352), //bcp->offset
    74, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(576,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S2509C12,    ABISELECT(576,324), //bcp->offset
    61, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(1424,796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    172, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S2509C15,    ABISELECT(1424,796), //bcp->offset
    145, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    171, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(124,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S2509C5,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S2509C2,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S2509C11,    ABISELECT(112,60), //bcp->offset
    16, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2509C6,    ABISELECT(216,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(216,120), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2509C5,    ABISELECT(1632,920), //bcp->offset
    152, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    176, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2509C1[];
extern void ABISELECT(_ZTv0_n32_N7S2509C1D1Ev,_ZTv0_n16_N7S2509C1D1Ev)();
extern void _ZN7S2509C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C1D0Ev,_ZTv0_n16_N7S2509C1D0Ev)();
extern void _ZN7S2509C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C1D1Ev,_ZTv0_n16_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C1D1Ev,_ZThn60_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C1D0Ev,_ZTv0_n16_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C1D0Ev,_ZThn60_N7S2509C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn216_N7S2509C1D1Ev,_ZThn120_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn216_N7S2509C1D0Ev,_ZThn120_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C1D1Ev,_ZTv0_n12_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn336_N7S2509C1D1Ev,_ZThn184_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C1D0Ev,_ZTv0_n12_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn336_N7S2509C1D0Ev,_ZThn184_N7S2509C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C1D1Ev,_ZTv0_n24_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn384_N7S2509C1D1Ev,_ZThn212_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C1D0Ev,_ZTv0_n24_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn384_N7S2509C1D0Ev,_ZThn212_N7S2509C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S2509C1D1Ev,_ZTvn28_n24_N7S2509C1D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C1D0Ev,_ZTvn28_n24_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C1D1Ev,_ZTv0_n16_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn448_N7S2509C1D1Ev,_ZThn252_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C1D0Ev,_ZTv0_n16_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn448_N7S2509C1D0Ev,_ZThn252_N7S2509C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S2509C1D1Ev,_ZTv0_n44_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn576_N7S2509C1D1Ev,_ZThn324_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S2509C1D0Ev,_ZTv0_n44_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn576_N7S2509C1D0Ev,_ZThn324_N7S2509C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n88_N7S2509C1D1Ev,_ZTvn28_n44_N7S2509C1D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N7S2509C1D0Ev,_ZTvn28_n44_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N7S2509C1D1Ev,_ZTv0_n32_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn672_N7S2509C1D1Ev,_ZThn376_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S2509C1D0Ev,_ZTv0_n32_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn672_N7S2509C1D0Ev,_ZThn376_N7S2509C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N7S2509C1D1Ev,_ZTvn56_n32_N7S2509C1D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S2509C1D0Ev,_ZTvn56_n32_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S2509C1D1Ev,_ZTvn180_n32_N7S2509C1D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S2509C1D0Ev,_ZTvn180_n32_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S2509C1D1Ev,_ZTvn208_n32_N7S2509C1D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S2509C1D0Ev,_ZTvn208_n32_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S2509C1D1Ev,_ZTvn212_n32_N7S2509C1D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S2509C1D0Ev,_ZTvn212_n32_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S2509C1D1Ev,_ZTvn240_n32_N7S2509C1D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S2509C1D0Ev,_ZTvn240_n32_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S2509C1D1Ev,_ZTv0_n20_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn1128_N7S2509C1D1Ev,_ZThn632_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2509C1D0Ev,_ZTv0_n20_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn1128_N7S2509C1D0Ev,_ZThn632_N7S2509C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S2509C1D1Ev,_ZTv0_n28_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn1152_N7S2509C1D1Ev,_ZThn640_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S2509C1D0Ev,_ZTv0_n28_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn1152_N7S2509C1D0Ev,_ZThn640_N7S2509C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N7S2509C1D1Ev,_ZTvn124_n28_N7S2509C1D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S2509C1D0Ev,_ZTvn124_n28_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S2509C1D1Ev,_ZTvn152_n28_N7S2509C1D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S2509C1D0Ev,_ZTvn152_n28_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S2509C1D1Ev,_ZTv0_n20_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn1424_N7S2509C1D1Ev,_ZThn796_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2509C1D0Ev,_ZTv0_n20_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn1424_N7S2509C1D0Ev,_ZThn796_N7S2509C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C1D1Ev,_ZTv0_n16_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn1632_N7S2509C1D1Ev,_ZThn920_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C1D0Ev,_ZTv0_n16_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn1632_N7S2509C1D0Ev,_ZThn920_N7S2509C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C1[] = {
  ABISELECT(1632,920),
  ABISELECT(1424,796),
  ABISELECT(1152,640),
  ABISELECT(1128,632),
  ABISELECT(672,376),
  ABISELECT(576,324),
  ABISELECT(552,308),
  ABISELECT(448,252),
  ABISELECT(384,212),
  0,
  0,
  ABISELECT(336,184),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C1D1Ev,_ZTv0_n16_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C1D0Ev,_ZTv0_n16_N7S2509C1D0Ev),
  ABISELECT(1312,736),
  ABISELECT(1040,580),
  ABISELECT(1016,572),
  ABISELECT(560,316),
  ABISELECT(464,264),
  ABISELECT(440,248),
  ABISELECT(336,192),
  ABISELECT(272,152),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(224,124),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C1D1Ev,_ZTv0_n16_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C1D0Ev,_ZTv0_n16_N7S2509C1D0Ev),
  ABISELECT(120,64),
  ABISELECT(-216,-120),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N7S2509C1D1Ev,_ZThn120_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N7S2509C1D0Ev,_ZThn120_N7S2509C1D0Ev),
  ABISELECT(-336,-184),
  ABISELECT(-336,-184),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C1D1Ev,_ZTv0_n12_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C1D0Ev,_ZTv0_n12_N7S2509C1D0Ev),
  ABISELECT(-384,-212),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C1D1Ev,_ZTv0_n24_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C1D0Ev,_ZTv0_n24_N7S2509C1D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C1D1Ev,_ZTvn28_n24_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C1D0Ev,_ZTvn28_n24_N7S2509C1D0Ev),
  ABISELECT(-448,-252),
  ABISELECT(-112,-68),
  ABISELECT(-448,-252),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C1D1Ev,_ZTv0_n16_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C1D0Ev,_ZTv0_n16_N7S2509C1D0Ev),
  ABISELECT(-576,-324),
  ABISELECT(-24,-16),
  ABISELECT(576,316),
  ABISELECT(-192,-112),
  ABISELECT(552,308),
  ABISELECT(96,52),
  ABISELECT(-128,-72),
  ABISELECT(-240,-140),
  ABISELECT(-576,-324),
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S2509C1D1Ev,_ZTv0_n44_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S2509C1D0Ev,_ZTv0_n44_N7S2509C1D0Ev),
  ABISELECT(-176,-100),
  ABISELECT(-288,-168),
  ABISELECT(-624,-352),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N7S2509C1D1Ev,_ZTvn28_n44_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N7S2509C1D0Ev,_ZTvn28_n44_N7S2509C1D0Ev),
  ABISELECT(-672,-376),
  ABISELECT(-288,-164),
  ABISELECT(-224,-124),
  ABISELECT(456,256),
  ABISELECT(-672,-376),
  ABISELECT(-336,-192),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S2509C1D1Ev,_ZTv0_n32_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S2509C1D0Ev,_ZTv0_n32_N7S2509C1D0Ev),
  ABISELECT(-784,-432),
  ABISELECT(-400,-220),
  ABISELECT(-336,-180),
  ABISELECT(-448,-248),
  ABISELECT(-784,-432),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S2509C1D1Ev,_ZTvn56_n32_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S2509C1D0Ev,_ZTvn56_n32_N7S2509C1D0Ev),
  ABISELECT(-992,-556),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S2509C1D1Ev,_ZTvn180_n32_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S2509C1D0Ev,_ZTvn180_n32_N7S2509C1D0Ev),
  ABISELECT(-704,-400),
  ABISELECT(-1040,-584),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S2509C1D1Ev,_ZTvn208_n32_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S2509C1D0Ev,_ZTvn208_n32_N7S2509C1D0Ev),
  ABISELECT(-608,-336),
  ABISELECT(-720,-404),
  ABISELECT(-1056,-588),
  ABISELECT(-1056,-588),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S2509C1D1Ev,_ZTvn212_n32_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S2509C1D0Ev,_ZTvn212_n32_N7S2509C1D0Ev),
  ABISELECT(-656,-364),
  ABISELECT(-768,-432),
  ABISELECT(-1104,-616),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S2509C1D1Ev,_ZTvn240_n32_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S2509C1D0Ev,_ZTvn240_n32_N7S2509C1D0Ev),
  ABISELECT(-1128,-632),
  ABISELECT(-680,-380),
  ABISELECT(-792,-448),
  ABISELECT(-1128,-632),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2509C1D1Ev,_ZTv0_n20_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2509C1D0Ev,_ZTv0_n20_N7S2509C1D0Ev),
  ABISELECT(-1152,-640),
  ABISELECT(-1152,-640),
  ABISELECT(-768,-428),
  ABISELECT(-704,-388),
  ABISELECT(-816,-456),
  ABISELECT(-1152,-640),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S2509C1D1Ev,_ZTv0_n28_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S2509C1D0Ev,_ZTv0_n28_N7S2509C1D0Ev),
  ABISELECT(-1360,-764),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S2509C1D1Ev,_ZTvn124_n28_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S2509C1D0Ev,_ZTvn124_n28_N7S2509C1D0Ev),
  ABISELECT(-1072,-608),
  ABISELECT(-1408,-792),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S2509C1D1Ev,_ZTvn152_n28_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S2509C1D0Ev,_ZTvn152_n28_N7S2509C1D0Ev),
  ABISELECT(-1424,-796),
  ABISELECT(-976,-544),
  ABISELECT(-1088,-612),
  ABISELECT(-1424,-796),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2509C1D1Ev,_ZTv0_n20_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2509C1D0Ev,_ZTv0_n20_N7S2509C1D0Ev),
  ABISELECT(-1080,-612),
  ABISELECT(-1184,-668),
  ABISELECT(-1248,-708),
  ABISELECT(-1632,-920),
  ABISELECT(-1632,-920),
  ABISELECT(-1296,-736),
  ABISELECT(-1632,-920),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C1D1Ev,_ZTv0_n16_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C1D0Ev,_ZTv0_n16_N7S2509C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S2509C1[];
extern void ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev)();
extern void _ZN7S2509C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev)();
extern void _ZN7S2509C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C2__7S2509C1[] = {
  ABISELECT(552,308),
  ABISELECT(448,252),
  ABISELECT(384,212),
  0,
  0,
  ABISELECT(336,184),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void _ZN7S2509C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void _ZN7S2509C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C57S2509C2__7S2509C1[] = {
  ABISELECT(552,308),
  ABISELECT(448,252),
  ABISELECT(384,212),
  0,
  0,
  ABISELECT(336,184),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn336_N7S2509C5D1Ev,_ZThn184_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn336_N7S2509C5D0Ev,_ZThn184_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C57S2509C2__7S2509C1[] = {
  ABISELECT(-336,-184),
  ABISELECT(-336,-184),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn384_N7S2509C5D1Ev,_ZThn212_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn384_N7S2509C5D0Ev,_ZThn212_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C57S2509C2__7S2509C1[] = {
  ABISELECT(-384,-212),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn448_N7S2509C5D1Ev,_ZThn252_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn448_N7S2509C5D0Ev,_ZThn252_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C57S2509C2__7S2509C1[] = {
  ABISELECT(-448,-252),
  ABISELECT(-112,-68),
  ABISELECT(-448,-252),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C57S2509C2__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn336_N7S2509C2D1Ev,_ZThn184_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn336_N7S2509C2D0Ev,_ZThn184_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C2__7S2509C1[] = {
  ABISELECT(-336,-184),
  ABISELECT(-336,-184),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn384_N7S2509C2D1Ev,_ZThn212_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn384_N7S2509C2D0Ev,_ZThn212_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C2__7S2509C1[] = {
  ABISELECT(-384,-212),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn448_N7S2509C2D1Ev,_ZThn252_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn448_N7S2509C2D0Ev,_ZThn252_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C2__7S2509C1[] = {
  ABISELECT(-448,-252),
  ABISELECT(-112,-68),
  ABISELECT(-448,-252),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S2509C2D1Ev,_ZTvn28_n24_N7S2509C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C2D0Ev,_ZTvn28_n24_N7S2509C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C2__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C2D1Ev,_ZTvn28_n24_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C2D0Ev,_ZTvn28_n24_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev)();
extern void _ZN8S2509C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev)();
extern void _ZN8S2509C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C11__7S2509C1[] = {
  ABISELECT(1312,736),
  ABISELECT(1040,580),
  ABISELECT(1016,572),
  ABISELECT(560,316),
  ABISELECT(464,264),
  ABISELECT(440,248),
  ABISELECT(336,192),
  ABISELECT(272,152),
  ABISELECT(-112,-60),
  0,
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev)();
extern void _ZN7S2509C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev)();
extern void _ZN7S2509C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(440,248),
  ABISELECT(336,192),
  ABISELECT(272,152),
  ABISELECT(-112,-60),
  0,
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void _ZN7S2509C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void _ZN7S2509C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C57S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(440,248),
  ABISELECT(336,192),
  ABISELECT(272,152),
  ABISELECT(-112,-60),
  0,
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C57S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(112,60),
  ABISELECT(336,184),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn224_N7S2509C5D1Ev,_ZThn124_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn224_N7S2509C5D0Ev,_ZThn124_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C57S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(-224,-124),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn272_N7S2509C5D1Ev,_ZThn152_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn272_N7S2509C5D0Ev,_ZThn152_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C57S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(-272,-152),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn336_N7S2509C5D1Ev,_ZThn192_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn336_N7S2509C5D0Ev,_ZThn192_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C57S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(-336,-192),
  ABISELECT(-112,-68),
  ABISELECT(-336,-192),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C57S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(112,60),
  ABISELECT(336,184),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn224_N7S2509C2D1Ev,_ZThn124_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn224_N7S2509C2D0Ev,_ZThn124_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(-224,-124),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn272_N7S2509C2D1Ev,_ZThn152_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn272_N7S2509C2D0Ev,_ZThn152_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(-272,-152),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn336_N7S2509C2D1Ev,_ZThn192_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn336_N7S2509C2D0Ev,_ZThn192_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(-336,-192),
  ABISELECT(-112,-68),
  ABISELECT(-336,-192),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S2509C2D1Ev,_ZTvn28_n24_N7S2509C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C2D0Ev,_ZTvn28_n24_N7S2509C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C2D1Ev,_ZTvn28_n24_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C2D0Ev,_ZTvn28_n24_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__8S2509C11__7S2509C1[] = {
  ABISELECT(112,60),
  ABISELECT(336,184),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C11D1Ev,_ZTv0_n12_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn224_N8S2509C11D1Ev,_ZThn124_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C11D0Ev,_ZTv0_n12_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn224_N8S2509C11D0Ev,_ZThn124_N8S2509C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C11__7S2509C1[] = {
  ABISELECT(-224,-124),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C11D1Ev,_ZTv0_n12_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C11D0Ev,_ZTv0_n12_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S2509C11D1Ev,_ZTv0_n44_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S2509C11D1Ev,_ZThn264_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S2509C11D0Ev,_ZTv0_n44_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn464_N8S2509C11D0Ev,_ZThn264_N8S2509C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C12__8S2509C11__7S2509C1[] = {
  ABISELECT(-464,-264),
  ABISELECT(-24,-16),
  ABISELECT(576,316),
  ABISELECT(-192,-112),
  ABISELECT(552,308),
  ABISELECT(96,52),
  ABISELECT(-128,-72),
  ABISELECT(-240,-140),
  ABISELECT(-576,-324),
  ABISELECT(-464,-264),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S2509C11D1Ev,_ZTv0_n44_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S2509C11D0Ev,_ZTv0_n44_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn336_N8S2509C11D1Ev,_ZThn192_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn336_N8S2509C11D0Ev,_ZThn192_N8S2509C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C11__7S2509C1[] = {
  ABISELECT(-336,-192),
  ABISELECT(-112,-68),
  ABISELECT(-336,-192),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S2509C11D1Ev,_ZTv0_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn560_N8S2509C11D1Ev,_ZThn316_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S2509C11D0Ev,_ZTv0_n32_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn560_N8S2509C11D0Ev,_ZThn316_N8S2509C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C13__8S2509C11__7S2509C1[] = {
  ABISELECT(-560,-316),
  ABISELECT(-288,-164),
  ABISELECT(-224,-124),
  ABISELECT(456,256),
  ABISELECT(-672,-376),
  ABISELECT(-336,-192),
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C11D1Ev,_ZTv0_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C11D0Ev,_ZTv0_n32_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn1016_N8S2509C11D1Ev,_ZThn572_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn1016_N8S2509C11D0Ev,_ZThn572_N8S2509C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C10__8S2509C11__7S2509C1[] = {
  ABISELECT(-1016,-572),
  ABISELECT(-680,-380),
  ABISELECT(-792,-448),
  ABISELECT(-1016,-572),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N8S2509C11D1Ev,_ZTvn56_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S2509C11D0Ev,_ZTvn56_n32_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C148S2509C13__8S2509C11__7S2509C1[] = {
  ABISELECT(-784,-432),
  ABISELECT(-400,-220),
  ABISELECT(-336,-180),
  ABISELECT(-448,-248),
  ABISELECT(-672,-372),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C11D1Ev,_ZTvn56_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C11D0Ev,_ZTvn56_n32_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C11D1Ev,_ZTv0_n24_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn272_N8S2509C11D1Ev,_ZThn152_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C11D0Ev,_ZTv0_n24_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn272_N8S2509C11D0Ev,_ZThn152_N8S2509C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C11__7S2509C1[] = {
  ABISELECT(-272,-152),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C11D1Ev,_ZTv0_n24_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C11D0Ev,_ZTv0_n24_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C11D1Ev,_ZTvn28_n24_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C11D0Ev,_ZTvn28_n24_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A1__8S2509C11__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C11D1Ev,_ZTvn28_n24_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C11D0Ev,_ZTvn28_n24_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N8S2509C11D1Ev,_ZTvn180_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S2509C11D0Ev,_ZTvn180_n32_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C98S2509C148S2509C13__A2__8S2509C11__7S2509C1[] = {
  ABISELECT(-880,-496),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C11D1Ev,_ZTvn180_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C11D0Ev,_ZTvn180_n32_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N8S2509C11D1Ev,_ZTvn208_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S2509C11D0Ev,_ZTvn208_n32_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C11__7S2509C1[] = {
  ABISELECT(-704,-400),
  ABISELECT(-928,-524),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C11D1Ev,_ZTvn208_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C11D0Ev,_ZTvn208_n32_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N8S2509C11D1Ev,_ZTvn212_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S2509C11D0Ev,_ZTvn212_n32_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C88S2509C13__A1__8S2509C11__7S2509C1[] = {
  ABISELECT(-608,-336),
  ABISELECT(-720,-404),
  ABISELECT(-1056,-588),
  ABISELECT(-944,-528),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C11D1Ev,_ZTvn212_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C11D0Ev,_ZTvn212_n32_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N8S2509C11D1Ev,_ZTvn240_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S2509C11D0Ev,_ZTvn240_n32_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C11__7S2509C1[] = {
  ABISELECT(-656,-364),
  ABISELECT(-768,-432),
  ABISELECT(-992,-556),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C11D1Ev,_ZTvn240_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C11D0Ev,_ZTvn240_n32_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S2509C11D1Ev,_ZTv0_n28_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn1040_N8S2509C11D1Ev,_ZThn580_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S2509C11D0Ev,_ZTv0_n28_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn1040_N8S2509C11D0Ev,_ZThn580_N8S2509C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C14__A1__8S2509C11__7S2509C1[] = {
  ABISELECT(-1040,-580),
  ABISELECT(-1152,-640),
  ABISELECT(-768,-428),
  ABISELECT(-704,-388),
  ABISELECT(-816,-456),
  ABISELECT(-1040,-580),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C11D1Ev,_ZTv0_n28_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C11D0Ev,_ZTv0_n28_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N8S2509C11D1Ev,_ZTvn124_n28_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S2509C11D0Ev,_ZTvn124_n28_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C98S2509C14__A4__8S2509C11__7S2509C1[] = {
  ABISELECT(-1248,-704),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C11D1Ev,_ZTvn124_n28_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C11D0Ev,_ZTvn124_n28_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N8S2509C11D1Ev,_ZTvn152_n28_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S2509C11D0Ev,_ZTvn152_n28_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A9__8S2509C11__7S2509C1[] = {
  ABISELECT(-1072,-608),
  ABISELECT(-1296,-732),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C11D1Ev,_ZTvn152_n28_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C11D0Ev,_ZTvn152_n28_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTvn48_n88_N8S2509C11D1Ev,_ZTvn28_n44_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N8S2509C11D0Ev,_ZTvn28_n44_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C88S2509C12__A3__8S2509C11__7S2509C1[] = {
  ABISELECT(-176,-100),
  ABISELECT(-288,-168),
  ABISELECT(-512,-292),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S2509C11D1Ev,_ZTvn28_n44_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S2509C11D0Ev,_ZTvn28_n44_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn1312_N8S2509C11D1Ev,_ZThn736_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn1312_N8S2509C11D0Ev,_ZThn736_N8S2509C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C15__A2__8S2509C11__7S2509C1[] = {
  ABISELECT(-1312,-736),
  ABISELECT(-976,-544),
  ABISELECT(-1088,-612),
  ABISELECT(-1312,-736),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__A__7S2509C1[] = {
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__A12__7S2509C1[] = {
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn120_N7S2509C6D1Ev,_ZThn64_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn120_N7S2509C6D0Ev,_ZThn64_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__A12__7S2509C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZThn120_N7S2509C9D1Ev,_ZThn64_N7S2509C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
extern void ABISELECT(_ZThn120_N7S2509C9D0Ev,_ZThn64_N7S2509C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__A__7S2509C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C1[] = {
  ABISELECT(336,184),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn336_N7S2509C6D1Ev,_ZThn184_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn336_N7S2509C6D0Ev,_ZThn184_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__7S2509C1[] = {
  ABISELECT(-336,-184),
  ABISELECT(-336,-184),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C1[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C8__A2__7S2509C1[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A2__7S2509C1[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn12_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn12_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C8__7S2509C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C8__7S2509C1[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8__7S2509C1[] = {
  ABISELECT(384,212),
  ABISELECT(336,184),
  ABISELECT(384,212),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C8__7S2509C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8__7S2509C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C1[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__A1__7S2509C1[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__A1__7S2509C1[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__7S2509C1[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN8S2509C12D1Ev();
extern void _ZN8S2509C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C12__7S2509C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(576,316),
  ABISELECT(-192,-112),
  ABISELECT(552,308),
  ABISELECT(96,52),
  ABISELECT(-128,-72),
  ABISELECT(-240,-140),
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&_ZN8S2509C12D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C12D0Ev,
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C88S2509C12__A2__7S2509C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-240,-140),
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C88S2509C12__A3__7S2509C1[] = {
  ABISELECT(-176,-100),
  ABISELECT(-288,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C88S2509C12__A10__7S2509C1[] = {
  ABISELECT(-288,-168),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C12__A10__7S2509C1[] = {
  ABISELECT(288,168),
  ABISELECT(288,168),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C88S2509C12__A3__7S2509C1[] = {
  ABISELECT(176,100),
  ABISELECT(-112,-68),
  ABISELECT(176,100),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C88S2509C12__A3__7S2509C1[] = {
  ABISELECT(288,168),
  ABISELECT(288,168),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C88S2509C12__A2__7S2509C1[] = {
  ABISELECT(576,324),
  ABISELECT(336,184),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C88S2509C12__A2__7S2509C1[] = {
  ABISELECT(240,140),
  ABISELECT(240,140),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C88S2509C12__A2__7S2509C1[] = {
  ABISELECT(128,72),
  ABISELECT(-112,-68),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C88S2509C12__A2__7S2509C1[] = {
  ABISELECT(-176,-100),
  ABISELECT(-288,-168),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C12__7S2509C1[] = {
  ABISELECT(128,72),
  ABISELECT(-112,-68),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C12D1Ev,_ZTv0_n12_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C12D0Ev,_ZTv0_n12_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C12__7S2509C1[] = {
  ABISELECT(240,140),
  ABISELECT(240,140),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C12D1Ev,_ZTv0_n12_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C12D0Ev,_ZTv0_n12_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S2509C12D1Ev,_ZTv0_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn96_N8S2509C12D1Ev,_ZThn52_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S2509C12D0Ev,_ZTv0_n32_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn96_N8S2509C12D0Ev,_ZThn52_N8S2509C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C13__8S2509C12__7S2509C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-288,-164),
  ABISELECT(-224,-124),
  ABISELECT(456,256),
  ABISELECT(-672,-376),
  ABISELECT(-336,-192),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C12D1Ev,_ZTv0_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C12D0Ev,_ZTv0_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C12__7S2509C1[] = {
  ABISELECT(576,324),
  ABISELECT(336,184),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2509C12D1Ev,_ZTv0_n20_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn552_N8S2509C12D1Ev,_ZThn308_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C12D0Ev,_ZTv0_n20_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn552_N8S2509C12D0Ev,_ZThn308_N8S2509C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C10__8S2509C12__7S2509C1[] = {
  ABISELECT(-552,-308),
  ABISELECT(-680,-380),
  ABISELECT(-792,-448),
  ABISELECT(-552,-308),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C12D1Ev,_ZTv0_n20_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C12D0Ev,_ZTv0_n20_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N8S2509C12D1Ev,_ZTvn56_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S2509C12D0Ev,_ZTvn56_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C148S2509C13__8S2509C12__7S2509C1[] = {
  ABISELECT(-784,-432),
  ABISELECT(-400,-220),
  ABISELECT(-336,-180),
  ABISELECT(-448,-248),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C12D1Ev,_ZTvn56_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C12D0Ev,_ZTvn56_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C12D1Ev,_ZTv0_n24_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S2509C12D0Ev,_ZTv0_n24_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C12__7S2509C1[] = {
  ABISELECT(192,112),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C12D1Ev,_ZTv0_n24_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C12D0Ev,_ZTv0_n24_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C12D1Ev,_ZTvn28_n24_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C12D0Ev,_ZTvn28_n24_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A1__8S2509C12__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C12D1Ev,_ZTvn28_n24_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C12D0Ev,_ZTvn28_n24_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N8S2509C12D1Ev,_ZTvn180_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S2509C12D0Ev,_ZTvn180_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C98S2509C148S2509C13__A2__8S2509C12__7S2509C1[] = {
  ABISELECT(-416,-232),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C12D1Ev,_ZTvn180_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C12D0Ev,_ZTvn180_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N8S2509C12D1Ev,_ZTvn208_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S2509C12D0Ev,_ZTvn208_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C12__7S2509C1[] = {
  ABISELECT(-704,-400),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C12D1Ev,_ZTvn208_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C12D0Ev,_ZTvn208_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N8S2509C12D1Ev,_ZTvn212_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S2509C12D0Ev,_ZTvn212_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C88S2509C13__A1__8S2509C12__7S2509C1[] = {
  ABISELECT(-608,-336),
  ABISELECT(-720,-404),
  ABISELECT(-1056,-588),
  ABISELECT(-480,-264),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C12D1Ev,_ZTvn212_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C12D0Ev,_ZTvn212_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N8S2509C12D1Ev,_ZTvn240_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S2509C12D0Ev,_ZTvn240_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C12__7S2509C1[] = {
  ABISELECT(-656,-364),
  ABISELECT(-768,-432),
  ABISELECT(-528,-292),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C12D1Ev,_ZTvn240_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C12D0Ev,_ZTvn240_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S2509C12D1Ev,_ZTv0_n28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn576_N8S2509C12D1Ev,_ZThn316_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S2509C12D0Ev,_ZTv0_n28_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn576_N8S2509C12D0Ev,_ZThn316_N8S2509C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C14__A1__8S2509C12__7S2509C1[] = {
  ABISELECT(-576,-316),
  ABISELECT(-1152,-640),
  ABISELECT(-768,-428),
  ABISELECT(-704,-388),
  ABISELECT(-816,-456),
  ABISELECT(-576,-316),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C12D1Ev,_ZTv0_n28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C12D0Ev,_ZTv0_n28_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N8S2509C12D1Ev,_ZTvn124_n28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S2509C12D0Ev,_ZTvn124_n28_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C98S2509C14__A4__8S2509C12__7S2509C1[] = {
  ABISELECT(-784,-440),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C12D1Ev,_ZTvn124_n28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C12D0Ev,_ZTvn124_n28_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N8S2509C12D1Ev,_ZTvn152_n28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S2509C12D0Ev,_ZTvn152_n28_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A9__8S2509C12__7S2509C1[] = {
  ABISELECT(-1072,-608),
  ABISELECT(-832,-468),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C12D1Ev,_ZTvn152_n28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C12D0Ev,_ZTvn152_n28_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZThn48_N8S2509C12D1Ev,_ZThn28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn48_N8S2509C12D0Ev,_ZThn28_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A3__8S2509C12__7S2509C1[] = {
  ABISELECT(-176,-100),
  ABISELECT(-288,-168),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S2509C12D1Ev,_ZThn28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S2509C12D0Ev,_ZThn28_N8S2509C12D0Ev),
};
extern void _ZN8S2509C13D1Ev();
extern void _ZN8S2509C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C13__7S2509C1[] = {
  ABISELECT(-288,-164),
  ABISELECT(-224,-124),
  ABISELECT(456,256),
  ABISELECT(-672,-376),
  ABISELECT(-336,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&_ZN8S2509C13D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C13D0Ev,
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C98S2509C13__A1__7S2509C1[] = {
  ABISELECT(-336,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C98S2509C13__A4__7S2509C1[] = {
  ABISELECT(-336,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C98S2509C13__A4__7S2509C1[] = {
  ABISELECT(336,192),
  ABISELECT(336,192),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C98S2509C13__A1__7S2509C1[] = {
  ABISELECT(336,192),
  ABISELECT(336,192),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN8S2509C14D1Ev();
extern void _ZN8S2509C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(-784,-432),
  ABISELECT(-400,-220),
  ABISELECT(-336,-180),
  ABISELECT(-448,-248),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&_ZN8S2509C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C14D0Ev,
};
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C158S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(-336,-180),
  ABISELECT(-448,-248),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C158S2509C148S2509C13__A5__7S2509C1[] = {
  ABISELECT(-448,-248),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C158S2509C148S2509C13__A5__7S2509C1[] = {
  ABISELECT(448,248),
  ABISELECT(448,248),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C158S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(448,248),
  ABISELECT(448,248),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C158S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(336,180),
  ABISELECT(-112,-68),
  ABISELECT(336,180),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C148S2509C13__A6__7S2509C1[] = {
  ABISELECT(-704,-400),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C148S2509C13__A6__7S2509C1[] = {
  ABISELECT(704,400),
  ABISELECT(704,400),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(336,180),
  ABISELECT(-112,-68),
  ABISELECT(336,180),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(448,248),
  ABISELECT(448,248),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(400,220),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(400,220),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(784,432),
  ABISELECT(336,184),
  ABISELECT(784,432),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__8S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A__8S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(-704,-400),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C88S2509C13__A1__7S2509C1[] = {
  ABISELECT(-608,-336),
  ABISELECT(-720,-404),
  ABISELECT(-1056,-588),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C88S2509C13__A2__7S2509C1[] = {
  ABISELECT(-656,-364),
  ABISELECT(-768,-432),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C88S2509C13__A7__7S2509C1[] = {
  ABISELECT(-768,-432),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C13__A7__7S2509C1[] = {
  ABISELECT(768,432),
  ABISELECT(768,432),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C88S2509C13__A2__7S2509C1[] = {
  ABISELECT(656,364),
  ABISELECT(-112,-68),
  ABISELECT(656,364),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C88S2509C13__A2__7S2509C1[] = {
  ABISELECT(768,432),
  ABISELECT(768,432),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C88S2509C13__A1__7S2509C1[] = {
  ABISELECT(1056,588),
  ABISELECT(336,184),
  ABISELECT(1056,588),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C88S2509C13__A1__7S2509C1[] = {
  ABISELECT(720,404),
  ABISELECT(720,404),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C88S2509C13__A1__7S2509C1[] = {
  ABISELECT(608,336),
  ABISELECT(-112,-68),
  ABISELECT(608,336),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C88S2509C13__A1__7S2509C1[] = {
  ABISELECT(-656,-364),
  ABISELECT(-768,-432),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__8S2509C13__7S2509C1[] = {
  ABISELECT(672,376),
  ABISELECT(336,184),
  ABISELECT(672,376),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C13D1Ev,_ZTv0_n12_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C13D0Ev,_ZTv0_n12_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C13__7S2509C1[] = {
  ABISELECT(336,192),
  ABISELECT(336,192),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C13D1Ev,_ZTv0_n12_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C13D0Ev,_ZTv0_n12_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn456_N8S2509C13D1Ev,_ZThn256_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn456_N8S2509C13D0Ev,_ZThn256_N8S2509C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C10__8S2509C13__7S2509C1[] = {
  ABISELECT(-456,-256),
  ABISELECT(-680,-380),
  ABISELECT(-792,-448),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C13__7S2509C1[] = {
  ABISELECT(224,124),
  ABISELECT(-112,-68),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn112_N8S2509C13D1Ev,_ZThn56_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn112_N8S2509C13D0Ev,_ZThn56_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C14__8S2509C13__7S2509C1[] = {
  ABISELECT(-784,-432),
  ABISELECT(-400,-220),
  ABISELECT(-336,-180),
  ABISELECT(-448,-248),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S2509C13D1Ev,_ZThn56_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S2509C13D0Ev,_ZThn56_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C13__7S2509C1[] = {
  ABISELECT(288,164),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(288,164),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C13D1Ev,_ZTvn28_n24_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C13D0Ev,_ZTvn28_n24_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A1__8S2509C13__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C13D1Ev,_ZTvn28_n24_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C13D0Ev,_ZTvn28_n24_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn368_N8S2509C13D1Ev,_ZThn208_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn368_N8S2509C13D0Ev,_ZThn208_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A6__8S2509C13__7S2509C1[] = {
  ABISELECT(-704,-400),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S2509C13D1Ev,_ZThn208_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S2509C13D0Ev,_ZThn208_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn384_N8S2509C13D1Ev,_ZThn212_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn384_N8S2509C13D0Ev,_ZThn212_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__A__8S2509C13__7S2509C1[] = {
  ABISELECT(-608,-336),
  ABISELECT(-720,-404),
  ABISELECT(-1056,-588),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S2509C13D1Ev,_ZThn212_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S2509C13D0Ev,_ZThn212_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn432_N8S2509C13D1Ev,_ZThn240_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn432_N8S2509C13D0Ev,_ZThn240_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A2__8S2509C13__7S2509C1[] = {
  ABISELECT(-656,-364),
  ABISELECT(-768,-432),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S2509C13D1Ev,_ZThn240_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S2509C13D0Ev,_ZThn240_N8S2509C13D0Ev),
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C10__A1__7S2509C1[] = {
  ABISELECT(-680,-380),
  ABISELECT(-792,-448),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C10__A3__7S2509C1[] = {
  ABISELECT(-792,-448),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C10__A3__7S2509C1[] = {
  ABISELECT(792,448),
  ABISELECT(792,448),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C10__A1__7S2509C1[] = {
  ABISELECT(680,380),
  ABISELECT(-112,-68),
  ABISELECT(680,380),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C10__A1__7S2509C1[] = {
  ABISELECT(792,448),
  ABISELECT(792,448),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void _ZN8S2509C14D1Ev();
extern void _ZN8S2509C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C14__A1__7S2509C1[] = {
  ABISELECT(-1152,-640),
  ABISELECT(-768,-428),
  ABISELECT(-704,-388),
  ABISELECT(-816,-456),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&_ZN8S2509C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C14D0Ev,
};
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C158S2509C14__A1__7S2509C1[] = {
  ABISELECT(-704,-388),
  ABISELECT(-816,-456),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C158S2509C14__A8__7S2509C1[] = {
  ABISELECT(-816,-456),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C158S2509C14__A8__7S2509C1[] = {
  ABISELECT(816,456),
  ABISELECT(816,456),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C158S2509C14__A1__7S2509C1[] = {
  ABISELECT(816,456),
  ABISELECT(816,456),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C158S2509C14__A1__7S2509C1[] = {
  ABISELECT(704,388),
  ABISELECT(-112,-68),
  ABISELECT(704,388),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A9__7S2509C1[] = {
  ABISELECT(-1072,-608),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C14__A9__7S2509C1[] = {
  ABISELECT(1072,608),
  ABISELECT(1072,608),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C14__A1__7S2509C1[] = {
  ABISELECT(704,388),
  ABISELECT(-112,-68),
  ABISELECT(704,388),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C14__A1__7S2509C1[] = {
  ABISELECT(816,456),
  ABISELECT(816,456),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C14__A1__7S2509C1[] = {
  ABISELECT(768,428),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(768,428),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C14__A1__7S2509C1[] = {
  ABISELECT(1152,640),
  ABISELECT(336,184),
  ABISELECT(1152,640),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__8S2509C14__A1__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(720,400),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A__8S2509C14__A1__7S2509C1[] = {
  ABISELECT(-1072,-608),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev),
};
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C15__A2__7S2509C1[] = {
  ABISELECT(-976,-544),
  ABISELECT(-1088,-612),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C15__A11__7S2509C1[] = {
  ABISELECT(-1088,-612),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C15__A11__7S2509C1[] = {
  ABISELECT(1088,612),
  ABISELECT(1088,612),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C15__A2__7S2509C1[] = {
  ABISELECT(1088,612),
  ABISELECT(1088,612),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C15__A2__7S2509C1[] = {
  ABISELECT(976,544),
  ABISELECT(-112,-68),
  ABISELECT(976,544),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void _ZN7S2509C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void _ZN7S2509C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C5__A2__7S2509C1[] = {
  ABISELECT(-1080,-612),
  ABISELECT(-1184,-668),
  ABISELECT(-1248,-708),
  ABISELECT(-1632,-920),
  0,
  ABISELECT(-1296,-736),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C5__A2__7S2509C1[] = {
  ABISELECT(1632,920),
  ABISELECT(336,184),
  ABISELECT(1632,920),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C5__A2__7S2509C1[] = {
  ABISELECT(1296,736),
  ABISELECT(1296,736),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C5__A2__7S2509C1[] = {
  ABISELECT(1248,708),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(1248,708),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C5__A2__7S2509C1[] = {
  ABISELECT(1184,668),
  ABISELECT(-112,-68),
  ABISELECT(1184,668),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C5__A2__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(1200,680),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev),
};
static  VTT_ENTRY vtt_S2509C1[] = {
  {&(_ZTV7S2509C1[14]),  14,162},
  {&(_tg__ZTV7S2509C2__7S2509C1[8]),  8,10},
  {&(_tg__ZTV7S2509C57S2509C2__7S2509C1[8]),  8,10},
  {&(_tg__ZTV7S2509C57S2509C2__7S2509C1[8]),  8,10},
  {&(_tg__ZTV8S19676C9__7S2509C57S2509C2__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C57S2509C2__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C9__7S2509C57S2509C2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C57S2509C2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C2__7S2509C1[8]),  8,10},
  {&(_tg__ZTV8S19676C9__7S2509C2__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C2__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C9__7S2509C2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C11__7S2509C1[13]),  13,15},
  {&(_tg__ZTV7S2509C28S2509C11__A1__7S2509C1[8]),  8,10},
  {&(_tg__ZTV7S2509C57S2509C28S2509C11__A1__7S2509C1[8]),  8,10},
  {&(_tg__ZTV7S2509C6__7S2509C57S2509C28S2509C11__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S2509C57S2509C28S2509C11__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C57S2509C28S2509C11__A1__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C9__7S2509C57S2509C28S2509C11__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C57S2509C28S2509C11__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C6__7S2509C28S2509C11__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S2509C28S2509C11__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C28S2509C11__A1__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C9__7S2509C28S2509C11__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C28S2509C11__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C6__8S2509C11__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C11__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S2509C12__8S2509C11__7S2509C1[11]),  11,13},
  {&(_tg__ZTV7S2509C9__8S2509C11__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C13__8S2509C11__7S2509C1[8]),  8,10},
  {&(_tg__ZTV8S2509C10__8S2509C11__7S2509C1[5]),  5,7},
  {&(_tg__ZTV8S2509C148S2509C13__8S2509C11__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C8__8S2509C11__7S2509C1[6]),  6,8},
  {&(_tg__ZTV8S2509C107S2509C8__A1__8S2509C11__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C98S2509C148S2509C13__A2__8S2509C11__7S2509C1[2]),  2,4},
  {&(_tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C11__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C88S2509C13__A1__8S2509C11__7S2509C1[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C11__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C14__A1__8S2509C11__7S2509C1[7]),  7,9},
  {&(_tg__ZTV8S19676C98S2509C14__A4__8S2509C11__7S2509C1[2]),  2,4},
  {&(_tg__ZTV7S2509C68S2509C14__A9__8S2509C11__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S2509C107S2509C88S2509C12__A3__8S2509C11__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C15__A2__8S2509C11__7S2509C1[5]),  5,7},
  {&(_tg__ZTV7S2509C9__A__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__A12__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__A12__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__A__7S2509C1[3]),  3,5},
  {&(_ZTV7S2509C1[14]),  14,162},
  {&(_ZTV7S2509C1[39]),  39,162},
  {&(_ZTV7S2509C1[47]),  47,162},
  {&(_ZTV7S2509C1[59]),  59,162},
  {&(_ZTV7S2509C1[53]),  53,162},
  {&(_ZTV7S2509C1[29]),  29,162},
  {&(_ZTV7S2509C1[72]),  72,162},
  {&(_ZTV7S2509C1[88]),  88,162},
  {&(_ZTV7S2509C1[125]),  125,162},
  {&(_ZTV7S2509C1[96]),  96,162},
  {&(_ZTV7S2509C1[100]),  100,162},
  {&(_ZTV7S2509C1[105]),  105,162},
  {&(_ZTV7S2509C1[112]),  112,162},
  {&(_ZTV7S2509C1[118]),  118,162},
  {&(_ZTV7S2509C1[134]),  134,162},
  {&(_ZTV7S2509C1[138]),  138,162},
  {&(_ZTV7S2509C1[143]),  143,162},
  {&(_ZTV7S2509C1[78]),  78,162},
  {&(_ZTV7S2509C1[150]),  150,162},
  {&(_ZTV7S2509C1[34]),  34,162},
  {&(_ZTV7S2509C1[160]),  160,162},
  {&(_tg__ZTV7S2509C6__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C1[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C8__A2__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A2__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C8__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C8__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C8__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C8__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C8__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C9__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S2509C12__7S2509C1[10]),  10,12},
  {&(_tg__ZTV7S2509C88S2509C12__A2__7S2509C1[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C88S2509C12__A3__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C88S2509C12__A10__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C12__A10__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C88S2509C12__A3__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C88S2509C12__A3__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C88S2509C12__A2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C88S2509C12__A2__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C88S2509C12__A2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C88S2509C12__A2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C9__8S2509C12__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C12__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S2509C13__8S2509C12__7S2509C1[8]),  8,10},
  {&(_tg__ZTV7S2509C6__A1__8S2509C12__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C10__8S2509C12__7S2509C1[5]),  5,7},
  {&(_tg__ZTV8S2509C148S2509C13__8S2509C12__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C8__8S2509C12__7S2509C1[6]),  6,8},
  {&(_tg__ZTV8S2509C107S2509C8__A1__8S2509C12__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C98S2509C148S2509C13__A2__8S2509C12__7S2509C1[2]),  2,4},
  {&(_tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C12__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C88S2509C13__A1__8S2509C12__7S2509C1[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C12__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C14__A1__8S2509C12__7S2509C1[7]),  7,9},
  {&(_tg__ZTV8S19676C98S2509C14__A4__8S2509C12__7S2509C1[2]),  2,4},
  {&(_tg__ZTV7S2509C68S2509C14__A9__8S2509C12__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S2509C107S2509C8__A3__8S2509C12__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C13__7S2509C1[7]),  7,9},
  {&(_tg__ZTV7S2509C98S2509C13__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C98S2509C13__A4__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C98S2509C13__A4__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C98S2509C13__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S2509C148S2509C13__7S2509C1[6]),  6,8},
  {&(_tg__ZTV8S2509C158S2509C148S2509C13__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C158S2509C148S2509C13__A5__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C158S2509C148S2509C13__A5__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C158S2509C148S2509C13__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C158S2509C148S2509C13__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C148S2509C13__A6__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C148S2509C13__A6__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C148S2509C13__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C148S2509C13__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C148S2509C13__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C6__A1__8S2509C148S2509C13__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__8S2509C148S2509C13__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A__8S2509C148S2509C13__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C88S2509C13__A1__7S2509C1[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C88S2509C13__A2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C88S2509C13__A7__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C13__A7__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C88S2509C13__A2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C88S2509C13__A2__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C88S2509C13__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C88S2509C13__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C88S2509C13__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C88S2509C13__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C6__8S2509C13__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C13__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S2509C10__8S2509C13__7S2509C1[5]),  5,7},
  {&(_tg__ZTV7S2509C9__8S2509C13__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C14__8S2509C13__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C8__8S2509C13__7S2509C1[6]),  6,8},
  {&(_tg__ZTV8S2509C107S2509C8__A1__8S2509C13__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C14__A6__8S2509C13__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C8__A__8S2509C13__7S2509C1[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__A2__8S2509C13__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C10__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C10__A3__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C10__A3__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C10__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C10__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S2509C14__A1__7S2509C1[6]),  6,8},
  {&(_tg__ZTV8S2509C158S2509C14__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C158S2509C14__A8__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C158S2509C14__A8__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C158S2509C14__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C158S2509C14__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C14__A9__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C14__A9__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C14__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C14__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C14__A1__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C6__A1__8S2509C14__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__8S2509C14__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A__8S2509C14__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S2509C15__A2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C15__A11__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C15__A11__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C15__A2__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C15__A2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C5__A2__7S2509C1[8]),  8,10},
  {&(_tg__ZTV7S2509C6__7S2509C5__A2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S2509C5__A2__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C5__A2__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C9__7S2509C5__A2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C5__A2__7S2509C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S2509C1[];
extern  VTBL_ENTRY _ZTV7S2509C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C1[];
static VTBL_ENTRY alt_thunk_names149[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S2509C13D0Ev,_ZThn256_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S2509C13D1Ev,_ZThn256_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C12D0Ev,_ZTv0_n28_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S2509C12D0Ev,_ZThn316_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C12D1Ev,_ZTv0_n28_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S2509C12D1Ev,_ZThn316_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C12D0Ev,_ZTv0_n20_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn552_N8S2509C12D0Ev,_ZThn308_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C12D1Ev,_ZTv0_n20_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn552_N8S2509C12D1Ev,_ZThn308_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C12D0Ev,_ZTv0_n32_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S2509C12D0Ev,_ZThn52_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C12D1Ev,_ZTv0_n32_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S2509C12D1Ev,_ZThn52_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn12_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn12_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S2509C9D0Ev,_ZThn64_N7S2509C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S2509C9D1Ev,_ZThn64_N7S2509C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C6D0Ev,_ZThn184_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S2509C6D0Ev,_ZThn64_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C6D1Ev,_ZThn184_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S2509C6D1Ev,_ZThn64_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C11D0Ev,_ZTv0_n28_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N8S2509C11D0Ev,_ZThn580_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C11D1Ev,_ZTv0_n28_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N8S2509C11D1Ev,_ZThn580_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C11D0Ev,_ZTv0_n24_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S2509C11D0Ev,_ZThn152_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C11D1Ev,_ZTv0_n24_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S2509C11D1Ev,_ZThn152_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S2509C11D0Ev,_ZThn736_N8S2509C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1016_N8S2509C11D0Ev,_ZThn572_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S2509C11D1Ev,_ZThn736_N8S2509C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1016_N8S2509C11D1Ev,_ZThn572_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C11D0Ev,_ZTv0_n32_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N8S2509C11D0Ev,_ZThn316_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C11D1Ev,_ZTv0_n32_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N8S2509C11D1Ev,_ZThn316_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S2509C11D0Ev,_ZTv0_n44_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S2509C11D0Ev,_ZThn264_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S2509C11D1Ev,_ZTv0_n44_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S2509C11D1Ev,_ZThn264_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C11D0Ev,_ZTv0_n12_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S2509C11D0Ev,_ZThn124_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C11D1Ev,_ZTv0_n12_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S2509C11D1Ev,_ZThn124_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S2509C11D0Ev,_ZThn192_N8S2509C11D0Ev),
  (VTBL_ENTRY)_ZN8S2509C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S2509C11D1Ev,_ZThn192_N8S2509C11D1Ev),
  (VTBL_ENTRY)_ZN8S2509C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S2509C2D0Ev,_ZThn152_N7S2509C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S2509C2D0Ev,_ZThn212_N7S2509C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S2509C2D1Ev,_ZThn152_N7S2509C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S2509C2D1Ev,_ZThn212_N7S2509C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S2509C2D0Ev,_ZThn124_N7S2509C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C2D0Ev,_ZThn184_N7S2509C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S2509C2D1Ev,_ZThn124_N7S2509C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C2D1Ev,_ZThn184_N7S2509C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S2509C5D0Ev,_ZThn152_N7S2509C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S2509C5D0Ev,_ZThn212_N7S2509C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S2509C5D1Ev,_ZThn152_N7S2509C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S2509C5D1Ev,_ZThn212_N7S2509C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S2509C5D0Ev,_ZThn124_N7S2509C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C5D0Ev,_ZThn184_N7S2509C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S2509C5D1Ev,_ZThn124_N7S2509C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C5D1Ev,_ZThn184_N7S2509C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)_ZN7S2509C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C5D0Ev,_ZThn192_N7S2509C5D0Ev),
  (VTBL_ENTRY)_ZN7S2509C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S2509C5D0Ev,_ZThn252_N7S2509C5D0Ev),
  (VTBL_ENTRY)_ZN7S2509C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)_ZN7S2509C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C5D1Ev,_ZThn192_N7S2509C5D1Ev),
  (VTBL_ENTRY)_ZN7S2509C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S2509C5D1Ev,_ZThn252_N7S2509C5D1Ev),
  (VTBL_ENTRY)_ZN7S2509C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C2D0Ev,_ZThn192_N7S2509C2D0Ev),
  (VTBL_ENTRY)_ZN7S2509C2D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S2509C2D0Ev,_ZThn252_N7S2509C2D0Ev),
  (VTBL_ENTRY)_ZN7S2509C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C2D1Ev,_ZThn192_N7S2509C2D1Ev),
  (VTBL_ENTRY)_ZN7S2509C2D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S2509C2D1Ev,_ZThn252_N7S2509C2D1Ev),
  (VTBL_ENTRY)_ZN7S2509C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S2509C1D0Ev,_ZTv0_n28_N7S2509C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N7S2509C1D0Ev,_ZThn640_N7S2509C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S2509C1D1Ev,_ZTv0_n28_N7S2509C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N7S2509C1D1Ev,_ZThn640_N7S2509C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2509C1D0Ev,_ZTv0_n20_N7S2509C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1424_N7S2509C1D0Ev,_ZThn796_N7S2509C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1128_N7S2509C1D0Ev,_ZThn632_N7S2509C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2509C1D1Ev,_ZTv0_n20_N7S2509C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1424_N7S2509C1D1Ev,_ZThn796_N7S2509C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1128_N7S2509C1D1Ev,_ZThn632_N7S2509C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S2509C1D0Ev,_ZTv0_n32_N7S2509C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N7S2509C1D0Ev,_ZThn376_N7S2509C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S2509C1D1Ev,_ZTv0_n32_N7S2509C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N7S2509C1D1Ev,_ZThn376_N7S2509C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S2509C1D0Ev,_ZTv0_n44_N7S2509C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N7S2509C1D0Ev,_ZThn324_N7S2509C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S2509C1D1Ev,_ZTv0_n44_N7S2509C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N7S2509C1D1Ev,_ZThn324_N7S2509C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C1D0Ev,_ZTv0_n24_N7S2509C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S2509C1D0Ev,_ZThn212_N7S2509C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C1D1Ev,_ZTv0_n24_N7S2509C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S2509C1D1Ev,_ZThn212_N7S2509C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C1D0Ev,_ZTv0_n12_N7S2509C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C1D0Ev,_ZThn184_N7S2509C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C1D1Ev,_ZTv0_n12_N7S2509C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C1D1Ev,_ZThn184_N7S2509C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C1D0Ev,_ZTv0_n16_N7S2509C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1632_N7S2509C1D0Ev,_ZThn920_N7S2509C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S2509C1D0Ev,_ZThn252_N7S2509C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C1D0Ev,_ZThn60_N7S2509C1D0Ev),
  (VTBL_ENTRY)_ZN7S2509C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C1D1Ev,_ZTv0_n16_N7S2509C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1632_N7S2509C1D1Ev,_ZThn920_N7S2509C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S2509C1D1Ev,_ZThn252_N7S2509C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C1D1Ev,_ZThn60_N7S2509C1D1Ev),
  (VTBL_ENTRY)_ZN7S2509C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C1 = {  "S2509C1", // class name
  bases_S2509C1, 45,
  &(vtc_S2509C1[0]), // expected_vtbl_contents
  &(vtt_S2509C1[0]), // expected_vtt_contents
  ABISELECT(1648,928), // object size
  NSPAIRA(_ZTI7S2509C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S2509C1),162, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2509C1),181, //virtual table table var
  42, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names149,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S381C6  {
  void *s381c6f0;
  char s381c6f1;
  int s381c6f2[4];
  void *s381c6f3;
  virtual  ~S381C6(); // _ZN6S381C6D1Ev
  virtual void  v9(); // _ZN6S381C62v9Ev
  virtual void  v10(); // _ZN6S381C63v10Ev
  virtual void  v11(); // _ZN6S381C63v11Ev
  virtual void  v12(); // _ZN6S381C63v12Ev
  S381C6(); // tgen
};
//SIG(-1 S381C6) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S381C6 ::~S381C6(){ note_dtor("S381C6", this);}
void  S381C6 ::v9(){vfunc_called(this, "_ZN6S381C62v9Ev");}
void  S381C6 ::v10(){vfunc_called(this, "_ZN6S381C63v10Ev");}
void  S381C6 ::v11(){vfunc_called(this, "_ZN6S381C63v11Ev");}
void  S381C6 ::v12(){vfunc_called(this, "_ZN6S381C63v12Ev");}
S381C6 ::S381C6(){ note_ctor("S381C6", this);} // tgen

static void Test_S381C6()
{
  extern Class_Descriptor cd_S381C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S381C6, buf);
    S381C6 *dp, &lv = *(dp=new (buf) S381C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S381C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S381C6)");
    check_field_offset(lv, s381c6f0, ABISELECT(8,4), "S381C6.s381c6f0");
    check_field_offset(lv, s381c6f1, ABISELECT(16,8), "S381C6.s381c6f1");
    check_field_offset(lv, s381c6f2, ABISELECT(20,12), "S381C6.s381c6f2");
    check_field_offset(lv, s381c6f3, ABISELECT(40,28), "S381C6.s381c6f3");
    test_class_info(&lv, &cd_S381C6);
    dp->~S381C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS381C6(Test_S381C6, "S381C6", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN6S381C6C1Ev();
extern void _ZN6S381C6D1Ev();
Name_Map name_map_S381C6[] = {
  NSPAIR(_ZN6S381C6C1Ev),
  NSPAIR(_ZN6S381C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S381C6[];
extern void _ZN6S381C6D1Ev();
extern void _ZN6S381C6D0Ev();
extern void _ZN6S381C62v9Ev();
extern void _ZN6S381C63v10Ev();
extern void _ZN6S381C63v11Ev();
extern void _ZN6S381C63v12Ev();
static  VTBL_ENTRY vtc_S381C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S381C6[0]),
  (VTBL_ENTRY)&_ZN6S381C6D1Ev,
  (VTBL_ENTRY)&_ZN6S381C6D0Ev,
  (VTBL_ENTRY)&_ZN6S381C62v9Ev,
  (VTBL_ENTRY)&_ZN6S381C63v10Ev,
  (VTBL_ENTRY)&_ZN6S381C63v11Ev,
  (VTBL_ENTRY)&_ZN6S381C63v12Ev,
};
extern VTBL_ENTRY _ZTI6S381C6[];
extern  VTBL_ENTRY _ZTV6S381C6[];
Class_Descriptor cd_S381C6 = {  "S381C6", // class name
  0,0,//no base classes
  &(vtc_S381C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI6S381C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S381C6),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S381C5  : S381C6 {
  int s381c5f0[3];
  virtual  ~S381C5(); // _ZN6S381C5D1Ev
  virtual void  v13(); // _ZN6S381C53v13Ev
  virtual void  v14(); // _ZN6S381C53v14Ev
  virtual void  v15(); // _ZN6S381C53v15Ev
  S381C5(); // tgen
};
//SIG(-1 S381C5) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S381C5 ::~S381C5(){ note_dtor("S381C5", this);}
void  S381C5 ::v13(){vfunc_called(this, "_ZN6S381C53v13Ev");}
void  S381C5 ::v14(){vfunc_called(this, "_ZN6S381C53v14Ev");}
void  S381C5 ::v15(){vfunc_called(this, "_ZN6S381C53v15Ev");}
S381C5 ::S381C5(){ note_ctor("S381C5", this);} // tgen

static void Test_S381C5()
{
  extern Class_Descriptor cd_S381C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S381C5, buf);
    S381C5 *dp, &lv = *(dp=new (buf) S381C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S381C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S381C5)");
    check_base_class_offset(lv, (S381C6*), 0, "S381C5");
    check_field_offset(lv, s381c5f0, ABISELECT(48,32), "S381C5.s381c5f0");
    test_class_info(&lv, &cd_S381C5);
    dp->~S381C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS381C5(Test_S381C5, "S381C5", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN6S381C5C1Ev();
extern void _ZN6S381C5D1Ev();
Name_Map name_map_S381C5[] = {
  NSPAIR(_ZN6S381C5C1Ev),
  NSPAIR(_ZN6S381C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S381C6;
extern VTBL_ENTRY _ZTI6S381C6[];
extern  VTBL_ENTRY _ZTV6S381C6[];
static Base_Class bases_S381C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S381C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S381C5[];
extern void _ZN6S381C5D1Ev();
extern void _ZN6S381C5D0Ev();
extern void _ZN6S381C62v9Ev();
extern void _ZN6S381C63v10Ev();
extern void _ZN6S381C63v11Ev();
extern void _ZN6S381C63v12Ev();
extern void _ZN6S381C53v13Ev();
extern void _ZN6S381C53v14Ev();
extern void _ZN6S381C53v15Ev();
static  VTBL_ENTRY vtc_S381C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S381C5[0]),
  (VTBL_ENTRY)&_ZN6S381C5D1Ev,
  (VTBL_ENTRY)&_ZN6S381C5D0Ev,
  (VTBL_ENTRY)&_ZN6S381C62v9Ev,
  (VTBL_ENTRY)&_ZN6S381C63v10Ev,
  (VTBL_ENTRY)&_ZN6S381C63v11Ev,
  (VTBL_ENTRY)&_ZN6S381C63v12Ev,
  (VTBL_ENTRY)&_ZN6S381C53v13Ev,
  (VTBL_ENTRY)&_ZN6S381C53v14Ev,
  (VTBL_ENTRY)&_ZN6S381C53v15Ev,
};
extern VTBL_ENTRY _ZTI6S381C5[];
extern  VTBL_ENTRY _ZTV6S381C5[];
Class_Descriptor cd_S381C5 = {  "S381C5", // class name
  bases_S381C5, 1,
  &(vtc_S381C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI6S381C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S381C5),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S381C4  : S381C5 {
  int s381c4f0[3];
  virtual  ~S381C4(); // _ZN6S381C4D1Ev
  virtual void  v16(); // _ZN6S381C43v16Ev
  virtual void  v17(); // _ZN6S381C43v17Ev
  virtual void  v18(); // _ZN6S381C43v18Ev
  S381C4(); // tgen
};
//SIG(-1 S381C4) C1{ BC2{ BC3{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v8 v9 v10 Fi[3]} vd v1 v2 v3 Fi[3]}


 S381C4 ::~S381C4(){ note_dtor("S381C4", this);}
void  S381C4 ::v16(){vfunc_called(this, "_ZN6S381C43v16Ev");}
void  S381C4 ::v17(){vfunc_called(this, "_ZN6S381C43v17Ev");}
void  S381C4 ::v18(){vfunc_called(this, "_ZN6S381C43v18Ev");}
S381C4 ::S381C4(){ note_ctor("S381C4", this);} // tgen

static void Test_S381C4()
{
  extern Class_Descriptor cd_S381C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S381C4, buf);
    S381C4 *dp, &lv = *(dp=new (buf) S381C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S381C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S381C4)");
    check_base_class_offset(lv, (S381C6*)(S381C5*), 0, "S381C4");
    check_base_class_offset(lv, (S381C5*), 0, "S381C4");
    check_field_offset(lv, s381c4f0, ABISELECT(60,44), "S381C4.s381c4f0");
    test_class_info(&lv, &cd_S381C4);
    dp->~S381C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS381C4(Test_S381C4, "S381C4", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN6S381C4C1Ev();
extern void _ZN6S381C4D1Ev();
Name_Map name_map_S381C4[] = {
  NSPAIR(_ZN6S381C4C1Ev),
  NSPAIR(_ZN6S381C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S381C6;
extern VTBL_ENTRY _ZTI6S381C6[];
extern  VTBL_ENTRY _ZTV6S381C6[];
extern Class_Descriptor cd_S381C5;
extern VTBL_ENTRY _ZTI6S381C5[];
extern  VTBL_ENTRY _ZTV6S381C5[];
static Base_Class bases_S381C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S381C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S381C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S381C4[];
extern void _ZN6S381C4D1Ev();
extern void _ZN6S381C4D0Ev();
extern void _ZN6S381C62v9Ev();
extern void _ZN6S381C63v10Ev();
extern void _ZN6S381C63v11Ev();
extern void _ZN6S381C63v12Ev();
extern void _ZN6S381C53v13Ev();
extern void _ZN6S381C53v14Ev();
extern void _ZN6S381C53v15Ev();
extern void _ZN6S381C43v16Ev();
extern void _ZN6S381C43v17Ev();
extern void _ZN6S381C43v18Ev();
static  VTBL_ENTRY vtc_S381C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S381C4[0]),
  (VTBL_ENTRY)&_ZN6S381C4D1Ev,
  (VTBL_ENTRY)&_ZN6S381C4D0Ev,
  (VTBL_ENTRY)&_ZN6S381C62v9Ev,
  (VTBL_ENTRY)&_ZN6S381C63v10Ev,
  (VTBL_ENTRY)&_ZN6S381C63v11Ev,
  (VTBL_ENTRY)&_ZN6S381C63v12Ev,
  (VTBL_ENTRY)&_ZN6S381C53v13Ev,
  (VTBL_ENTRY)&_ZN6S381C53v14Ev,
  (VTBL_ENTRY)&_ZN6S381C53v15Ev,
  (VTBL_ENTRY)&_ZN6S381C43v16Ev,
  (VTBL_ENTRY)&_ZN6S381C43v17Ev,
  (VTBL_ENTRY)&_ZN6S381C43v18Ev,
};
extern VTBL_ENTRY _ZTI6S381C4[];
extern  VTBL_ENTRY _ZTV6S381C4[];
Class_Descriptor cd_S381C4 = {  "S381C4", // class name
  bases_S381C4, 2,
  &(vtc_S381C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI6S381C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S381C4),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S381C3  : S381C4 {
  void *s381c3f0;
  virtual  ~S381C3(); // _ZN6S381C3D1Ev
  virtual void  v19(); // _ZN6S381C33v19Ev
  S381C3(); // tgen
};
//SIG(-1 S381C3) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fp Fc Fi[4] Fp} vd v6 v7 v8 Fi[3]} vd v9 v10 v11 Fi[3]} vd v1 Fp}


 S381C3 ::~S381C3(){ note_dtor("S381C3", this);}
void  S381C3 ::v19(){vfunc_called(this, "_ZN6S381C33v19Ev");}
S381C3 ::S381C3(){ note_ctor("S381C3", this);} // tgen

static void Test_S381C3()
{
  extern Class_Descriptor cd_S381C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,16)];
    init_test(&cd_S381C3, buf);
    S381C3 *dp, &lv = *(dp=new (buf) S381C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S381C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S381C3)");
    check_base_class_offset(lv, (S381C6*)(S381C5*)(S381C4*), 0, "S381C3");
    check_base_class_offset(lv, (S381C5*)(S381C4*), 0, "S381C3");
    check_base_class_offset(lv, (S381C4*), 0, "S381C3");
    check_field_offset(lv, s381c3f0, ABISELECT(72,56), "S381C3.s381c3f0");
    test_class_info(&lv, &cd_S381C3);
    dp->~S381C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS381C3(Test_S381C3, "S381C3", ABISELECT(80,60));

#else // __cplusplus

extern void _ZN6S381C3C1Ev();
extern void _ZN6S381C3D1Ev();
Name_Map name_map_S381C3[] = {
  NSPAIR(_ZN6S381C3C1Ev),
  NSPAIR(_ZN6S381C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S381C6;
extern VTBL_ENTRY _ZTI6S381C6[];
extern  VTBL_ENTRY _ZTV6S381C6[];
extern Class_Descriptor cd_S381C5;
extern VTBL_ENTRY _ZTI6S381C5[];
extern  VTBL_ENTRY _ZTV6S381C5[];
extern Class_Descriptor cd_S381C4;
extern VTBL_ENTRY _ZTI6S381C4[];
extern  VTBL_ENTRY _ZTV6S381C4[];
static Base_Class bases_S381C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S381C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S381C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S381C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S381C3[];
extern void _ZN6S381C3D1Ev();
extern void _ZN6S381C3D0Ev();
extern void _ZN6S381C62v9Ev();
extern void _ZN6S381C63v10Ev();
extern void _ZN6S381C63v11Ev();
extern void _ZN6S381C63v12Ev();
extern void _ZN6S381C53v13Ev();
extern void _ZN6S381C53v14Ev();
extern void _ZN6S381C53v15Ev();
extern void _ZN6S381C43v16Ev();
extern void _ZN6S381C43v17Ev();
extern void _ZN6S381C43v18Ev();
extern void _ZN6S381C33v19Ev();
static  VTBL_ENTRY vtc_S381C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S381C3[0]),
  (VTBL_ENTRY)&_ZN6S381C3D1Ev,
  (VTBL_ENTRY)&_ZN6S381C3D0Ev,
  (VTBL_ENTRY)&_ZN6S381C62v9Ev,
  (VTBL_ENTRY)&_ZN6S381C63v10Ev,
  (VTBL_ENTRY)&_ZN6S381C63v11Ev,
  (VTBL_ENTRY)&_ZN6S381C63v12Ev,
  (VTBL_ENTRY)&_ZN6S381C53v13Ev,
  (VTBL_ENTRY)&_ZN6S381C53v14Ev,
  (VTBL_ENTRY)&_ZN6S381C53v15Ev,
  (VTBL_ENTRY)&_ZN6S381C43v16Ev,
  (VTBL_ENTRY)&_ZN6S381C43v17Ev,
  (VTBL_ENTRY)&_ZN6S381C43v18Ev,
  (VTBL_ENTRY)&_ZN6S381C33v19Ev,
};
extern VTBL_ENTRY _ZTI6S381C3[];
extern  VTBL_ENTRY _ZTV6S381C3[];
Class_Descriptor cd_S381C3 = {  "S381C3", // class name
  bases_S381C3, 3,
  &(vtc_S381C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,60), // object size
  NSPAIRA(_ZTI6S381C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S381C3),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S381C8_nt  {
  virtual  ~S381C8_nt(); // _ZN9S381C8_ntD1Ev
  virtual void  v26(); // _ZN9S381C8_nt3v26Ev
  S381C8_nt(); // tgen
};
//SIG(-1 S381C8_nt) C1{ vd v1}


 S381C8_nt ::~S381C8_nt(){ note_dtor("S381C8_nt", this);}
void  S381C8_nt ::v26(){vfunc_called(this, "_ZN9S381C8_nt3v26Ev");}
S381C8_nt ::S381C8_nt(){ note_ctor("S381C8_nt", this);} // tgen

//skip512 S381C8_nt

#else // __cplusplus

extern void _ZN9S381C8_ntC1Ev();
extern void _ZN9S381C8_ntD1Ev();
Name_Map name_map_S381C8_nt[] = {
  NSPAIR(_ZN9S381C8_ntC1Ev),
  NSPAIR(_ZN9S381C8_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S381C8_nt[];
extern void _ZN9S381C8_ntD1Ev();
extern void _ZN9S381C8_ntD0Ev();
extern void _ZN9S381C8_nt3v26Ev();
static  VTBL_ENTRY vtc_S381C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S381C8_nt[0]),
  (VTBL_ENTRY)&_ZN9S381C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S381C8_ntD0Ev,
  (VTBL_ENTRY)&_ZN9S381C8_nt3v26Ev,
};
extern VTBL_ENTRY _ZTI9S381C8_nt[];
VTBL_ENTRY *P__ZTI9S381C8_nt = _ZTI9S381C8_nt; 
extern  VTBL_ENTRY _ZTV9S381C8_nt[];
Class_Descriptor cd_S381C8_nt = {  "S381C8_nt", // class name
  0,0,//no base classes
  &(vtc_S381C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S381C8_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S381C8_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S381C7  : S381C8_nt {
  int s381c7f0[2];
  ::S1532C10_nt s381c7f1;
  int s381c7f2[11];
  virtual  ~S381C7(); // _ZN6S381C7D1Ev
  virtual void  v25(); // _ZN6S381C73v25Ev
  S381C7(); // tgen
};
//SIG(-1 S381C7) C1{ BC2{ vd v2} vd v1 Fi[2] FC3{ m Fi[4]} Fi[11]}


 S381C7 ::~S381C7(){ note_dtor("S381C7", this);}
void  S381C7 ::v25(){vfunc_called(this, "_ZN6S381C73v25Ev");}
S381C7 ::S381C7(){ note_ctor("S381C7", this);} // tgen

static void Test_S381C7()
{
  extern Class_Descriptor cd_S381C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,19)];
    init_test(&cd_S381C7, buf);
    S381C7 *dp, &lv = *(dp=new (buf) S381C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,72), "sizeof(S381C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S381C7)");
    check_base_class_offset(lv, (S381C8_nt*), 0, "S381C7");
    check_field_offset(lv, s381c7f0, ABISELECT(8,4), "S381C7.s381c7f0");
    check_field_offset(lv, s381c7f1, ABISELECT(16,12), "S381C7.s381c7f1");
    check_field_offset(lv, s381c7f2, ABISELECT(32,28), "S381C7.s381c7f2");
    test_class_info(&lv, &cd_S381C7);
    dp->~S381C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS381C7(Test_S381C7, "S381C7", ABISELECT(80,72));

#else // __cplusplus

extern void _ZN6S381C7C1Ev();
extern void _ZN6S381C7D1Ev();
Name_Map name_map_S381C7[] = {
  NSPAIR(_ZN6S381C7C1Ev),
  NSPAIR(_ZN6S381C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S381C8_nt;
extern VTBL_ENTRY _ZTI9S381C8_nt[];
extern  VTBL_ENTRY _ZTV9S381C8_nt[];
static Base_Class bases_S381C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S381C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S381C7[];
extern void _ZN6S381C7D1Ev();
extern void _ZN6S381C7D0Ev();
extern void _ZN9S381C8_nt3v26Ev();
extern void _ZN6S381C73v25Ev();
static  VTBL_ENTRY vtc_S381C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S381C7[0]),
  (VTBL_ENTRY)&_ZN6S381C7D1Ev,
  (VTBL_ENTRY)&_ZN6S381C7D0Ev,
  (VTBL_ENTRY)&_ZN9S381C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN6S381C73v25Ev,
};
extern VTBL_ENTRY _ZTI6S381C7[];
extern  VTBL_ENTRY _ZTV6S381C7[];
Class_Descriptor cd_S381C7 = {  "S381C7", // class name
  bases_S381C7, 1,
  &(vtc_S381C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,72), // object size
  NSPAIRA(_ZTI6S381C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S381C7),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S381C11_nt  {
  __tsi64 s381c11f0;
  void  mf381c11(); // _ZN10S381C11_nt8mf381c11Ev
};
//SIG(-1 S381C11_nt) C1{ m FL}


void  S381C11_nt ::mf381c11(){}

//skip512 S381C11_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S381C2  : S381C3 {
  ::S381C7 s381c2f0;
  void *s381c2f1;
  ::S20760C13 s381c2f2;
  int s381c2f3[8];
  char s381c2f4;
  ::S381C11_nt s381c2f5;
  ::S381C11_nt s381c2f6;
  int s381c2f7[2];
  char s381c2f8[2];
  ::S381C11_nt s381c2f9;
  virtual  ~S381C2(); // _ZN6S381C2D1Ev
  virtual void  v20(); // _ZN6S381C23v20Ev
  virtual void  v21(); // _ZN6S381C23v21Ev
  virtual void  v22(); // _ZN6S381C23v22Ev
  virtual void  v23(); // _ZN6S381C23v23Ev
  virtual void  v24(); // _ZN6S381C23v24Ev
  S381C2(); // tgen
};
//SIG(-1 S381C2) C1{ BC2{ BC3{ BC4{ BC5{ vd v6 v7 v8 v9 Fp Fc Fi[4] Fp} vd v10 v11 v12 Fi[3]} vd v13 v14 v15 Fi[3]} vd v16 Fp} vd v1 v2 v3 v4 v5 FC6{ BC7{ vd v18} vd v17 Fi[2] FC8{ m Fi[4]} Fi[11]} Fp FC9{ vd m Fi[6]} Fi[8] Fc FC10{ m FL} FC10 Fi[2] Fc[2] FC10}


 S381C2 ::~S381C2(){ note_dtor("S381C2", this);}
void  S381C2 ::v20(){vfunc_called(this, "_ZN6S381C23v20Ev");}
void  S381C2 ::v21(){vfunc_called(this, "_ZN6S381C23v21Ev");}
void  S381C2 ::v22(){vfunc_called(this, "_ZN6S381C23v22Ev");}
void  S381C2 ::v23(){vfunc_called(this, "_ZN6S381C23v23Ev");}
void  S381C2 ::v24(){vfunc_called(this, "_ZN6S381C23v24Ev");}
S381C2 ::S381C2(){ note_ctor("S381C2", this);} // tgen

static void Test_S381C2()
{
  extern Class_Descriptor cd_S381C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,60)];
    init_test(&cd_S381C2, buf);
    S381C2 *dp, &lv = *(dp=new (buf) S381C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,236), "sizeof(S381C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S381C2)");
    check_base_class_offset(lv, (S381C6*)(S381C5*)(S381C4*)(S381C3*), 0, "S381C2");
    check_base_class_offset(lv, (S381C5*)(S381C4*)(S381C3*), 0, "S381C2");
    check_base_class_offset(lv, (S381C4*)(S381C3*), 0, "S381C2");
    check_base_class_offset(lv, (S381C3*), 0, "S381C2");
    check_field_offset(lv, s381c2f0, ABISELECT(80,60), "S381C2.s381c2f0");
    check_field_offset(lv, s381c2f1, ABISELECT(160,132), "S381C2.s381c2f1");
    check_field_offset(lv, s381c2f2, ABISELECT(168,136), "S381C2.s381c2f2");
    check_field_offset(lv, s381c2f3, ABISELECT(200,164), "S381C2.s381c2f3");
    check_field_offset(lv, s381c2f4, ABISELECT(232,196), "S381C2.s381c2f4");
    check_field_offset(lv, s381c2f5, ABISELECT(240,200), "S381C2.s381c2f5");
    check_field_offset(lv, s381c2f6, ABISELECT(248,208), "S381C2.s381c2f6");
    check_field_offset(lv, s381c2f7, ABISELECT(256,216), "S381C2.s381c2f7");
    check_field_offset(lv, s381c2f8, ABISELECT(264,224), "S381C2.s381c2f8");
    check_field_offset(lv, s381c2f9, ABISELECT(272,228), "S381C2.s381c2f9");
    test_class_info(&lv, &cd_S381C2);
    dp->~S381C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS381C2(Test_S381C2, "S381C2", ABISELECT(280,236));

#else // __cplusplus

extern void _ZN6S381C2C1Ev();
extern void _ZN6S381C2D1Ev();
Name_Map name_map_S381C2[] = {
  NSPAIR(_ZN6S381C2C1Ev),
  NSPAIR(_ZN6S381C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S381C6;
extern VTBL_ENTRY _ZTI6S381C6[];
extern  VTBL_ENTRY _ZTV6S381C6[];
extern Class_Descriptor cd_S381C5;
extern VTBL_ENTRY _ZTI6S381C5[];
extern  VTBL_ENTRY _ZTV6S381C5[];
extern Class_Descriptor cd_S381C4;
extern VTBL_ENTRY _ZTI6S381C4[];
extern  VTBL_ENTRY _ZTV6S381C4[];
extern Class_Descriptor cd_S381C3;
extern VTBL_ENTRY _ZTI6S381C3[];
extern  VTBL_ENTRY _ZTV6S381C3[];
static Base_Class bases_S381C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S381C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S381C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S381C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S381C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S381C2[];
extern void _ZN6S381C2D1Ev();
extern void _ZN6S381C2D0Ev();
extern void _ZN6S381C62v9Ev();
extern void _ZN6S381C63v10Ev();
extern void _ZN6S381C63v11Ev();
extern void _ZN6S381C63v12Ev();
extern void _ZN6S381C53v13Ev();
extern void _ZN6S381C53v14Ev();
extern void _ZN6S381C53v15Ev();
extern void _ZN6S381C43v16Ev();
extern void _ZN6S381C43v17Ev();
extern void _ZN6S381C43v18Ev();
extern void _ZN6S381C33v19Ev();
extern void _ZN6S381C23v20Ev();
extern void _ZN6S381C23v21Ev();
extern void _ZN6S381C23v22Ev();
extern void _ZN6S381C23v23Ev();
extern void _ZN6S381C23v24Ev();
static  VTBL_ENTRY vtc_S381C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S381C2[0]),
  (VTBL_ENTRY)&_ZN6S381C2D1Ev,
  (VTBL_ENTRY)&_ZN6S381C2D0Ev,
  (VTBL_ENTRY)&_ZN6S381C62v9Ev,
  (VTBL_ENTRY)&_ZN6S381C63v10Ev,
  (VTBL_ENTRY)&_ZN6S381C63v11Ev,
  (VTBL_ENTRY)&_ZN6S381C63v12Ev,
  (VTBL_ENTRY)&_ZN6S381C53v13Ev,
  (VTBL_ENTRY)&_ZN6S381C53v14Ev,
  (VTBL_ENTRY)&_ZN6S381C53v15Ev,
  (VTBL_ENTRY)&_ZN6S381C43v16Ev,
  (VTBL_ENTRY)&_ZN6S381C43v17Ev,
  (VTBL_ENTRY)&_ZN6S381C43v18Ev,
  (VTBL_ENTRY)&_ZN6S381C33v19Ev,
  (VTBL_ENTRY)&_ZN6S381C23v20Ev,
  (VTBL_ENTRY)&_ZN6S381C23v21Ev,
  (VTBL_ENTRY)&_ZN6S381C23v22Ev,
  (VTBL_ENTRY)&_ZN6S381C23v23Ev,
  (VTBL_ENTRY)&_ZN6S381C23v24Ev,
};
extern VTBL_ENTRY _ZTI6S381C2[];
extern  VTBL_ENTRY _ZTV6S381C2[];
Class_Descriptor cd_S381C2 = {  "S381C2", // class name
  bases_S381C2, 4,
  &(vtc_S381C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,236), // object size
  NSPAIRA(_ZTI6S381C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S381C2),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S381C1  : S381C2 {
  ::S381C7 s381c1f0;
  int s381c1f1[7];
  char s381c1f2;
  ::S381C11_nt s381c1f3[8];
  ::S381C11_nt s381c1f4[8];
  ::S381C11_nt s381c1f5;
  virtual  ~S381C1(); // _ZN6S381C1D1Ev
  virtual void  v1(); // _ZN6S381C12v1Ev
  virtual void  v2(); // _ZN6S381C12v2Ev
  virtual void  v3(); // _ZN6S381C12v3Ev
  virtual void  v4(); // _ZN6S381C12v4Ev
  virtual void  v5(); // _ZN6S381C12v5Ev
  virtual void  v6(); // _ZN6S381C12v6Ev
  virtual void  v7(); // _ZN6S381C12v7Ev
  virtual void  v8(); // _ZN6S381C12v8Ev
  S381C1(); // tgen
};
//SIG(1 S381C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ vd v9 v10 v11 v12 Fp Fc Fi[4] Fp} vd v13 v14 v15 Fi[3]} vd v16 v17 v18 Fi[3]} vd v19 Fp} vd v20 v21 v22 v23 v24 FC7{ BC8{ vd v26} vd v25 Fi[2] FC9{ m Fi[4]} Fi[11]} Fp FC10{ vd m Fi[6]} Fi[8] Fc FC11{ m FL} FC11 Fi[2] Fc[2] FC11} vd v1 v2 v3 v4 v5 v6 v7 v8 FC7 Fi[7] Fc FC11[8] FC11[8] FC11}


 S381C1 ::~S381C1(){ note_dtor("S381C1", this);}
void  S381C1 ::v1(){vfunc_called(this, "_ZN6S381C12v1Ev");}
void  S381C1 ::v2(){vfunc_called(this, "_ZN6S381C12v2Ev");}
void  S381C1 ::v3(){vfunc_called(this, "_ZN6S381C12v3Ev");}
void  S381C1 ::v4(){vfunc_called(this, "_ZN6S381C12v4Ev");}
void  S381C1 ::v5(){vfunc_called(this, "_ZN6S381C12v5Ev");}
void  S381C1 ::v6(){vfunc_called(this, "_ZN6S381C12v6Ev");}
void  S381C1 ::v7(){vfunc_called(this, "_ZN6S381C12v7Ev");}
void  S381C1 ::v8(){vfunc_called(this, "_ZN6S381C12v8Ev");}
S381C1 ::S381C1(){ note_ctor("S381C1", this);} // tgen

static void Test_S381C1()
{
  extern Class_Descriptor cd_S381C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(67,120)];
    init_test(&cd_S381C1, buf);
    S381C1 *dp, &lv = *(dp=new (buf) S381C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,476), "sizeof(S381C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S381C1)");
    check_base_class_offset(lv, (S381C6*)(S381C5*)(S381C4*)(S381C3*)(S381C2*), 0, "S381C1");
    check_base_class_offset(lv, (S381C5*)(S381C4*)(S381C3*)(S381C2*), 0, "S381C1");
    check_base_class_offset(lv, (S381C4*)(S381C3*)(S381C2*), 0, "S381C1");
    check_base_class_offset(lv, (S381C3*)(S381C2*), 0, "S381C1");
    check_base_class_offset(lv, (S381C2*), 0, "S381C1");
    check_field_offset(lv, s381c1f0, ABISELECT(280,236), "S381C1.s381c1f0");
    check_field_offset(lv, s381c1f1, ABISELECT(360,308), "S381C1.s381c1f1");
    check_field_offset(lv, s381c1f2, ABISELECT(388,336), "S381C1.s381c1f2");
    check_field_offset(lv, s381c1f3, ABISELECT(392,340), "S381C1.s381c1f3");
    check_field_offset(lv, s381c1f4, ABISELECT(456,404), "S381C1.s381c1f4");
    check_field_offset(lv, s381c1f5, ABISELECT(520,468), "S381C1.s381c1f5");
    test_class_info(&lv, &cd_S381C1);
    dp->~S381C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS381C1(Test_S381C1, "S381C1", ABISELECT(528,476));

#else // __cplusplus

extern void _ZN6S381C1C1Ev();
extern void _ZN6S381C1D1Ev();
Name_Map name_map_S381C1[] = {
  NSPAIR(_ZN6S381C1C1Ev),
  NSPAIR(_ZN6S381C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S381C6;
extern VTBL_ENTRY _ZTI6S381C6[];
extern  VTBL_ENTRY _ZTV6S381C6[];
extern Class_Descriptor cd_S381C5;
extern VTBL_ENTRY _ZTI6S381C5[];
extern  VTBL_ENTRY _ZTV6S381C5[];
extern Class_Descriptor cd_S381C4;
extern VTBL_ENTRY _ZTI6S381C4[];
extern  VTBL_ENTRY _ZTV6S381C4[];
extern Class_Descriptor cd_S381C3;
extern VTBL_ENTRY _ZTI6S381C3[];
extern  VTBL_ENTRY _ZTV6S381C3[];
extern Class_Descriptor cd_S381C2;
extern VTBL_ENTRY _ZTI6S381C2[];
extern  VTBL_ENTRY _ZTV6S381C2[];
static Base_Class bases_S381C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S381C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S381C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S381C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S381C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S381C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S381C1[];
extern void _ZN6S381C1D1Ev();
extern void _ZN6S381C1D0Ev();
extern void _ZN6S381C62v9Ev();
extern void _ZN6S381C63v10Ev();
extern void _ZN6S381C63v11Ev();
extern void _ZN6S381C63v12Ev();
extern void _ZN6S381C53v13Ev();
extern void _ZN6S381C53v14Ev();
extern void _ZN6S381C53v15Ev();
extern void _ZN6S381C43v16Ev();
extern void _ZN6S381C43v17Ev();
extern void _ZN6S381C43v18Ev();
extern void _ZN6S381C33v19Ev();
extern void _ZN6S381C23v20Ev();
extern void _ZN6S381C23v21Ev();
extern void _ZN6S381C23v22Ev();
extern void _ZN6S381C23v23Ev();
extern void _ZN6S381C23v24Ev();
extern void _ZN6S381C12v1Ev();
extern void _ZN6S381C12v2Ev();
extern void _ZN6S381C12v3Ev();
extern void _ZN6S381C12v4Ev();
extern void _ZN6S381C12v5Ev();
extern void _ZN6S381C12v6Ev();
extern void _ZN6S381C12v7Ev();
extern void _ZN6S381C12v8Ev();
static  VTBL_ENTRY vtc_S381C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S381C1[0]),
  (VTBL_ENTRY)&_ZN6S381C1D1Ev,
  (VTBL_ENTRY)&_ZN6S381C1D0Ev,
  (VTBL_ENTRY)&_ZN6S381C62v9Ev,
  (VTBL_ENTRY)&_ZN6S381C63v10Ev,
  (VTBL_ENTRY)&_ZN6S381C63v11Ev,
  (VTBL_ENTRY)&_ZN6S381C63v12Ev,
  (VTBL_ENTRY)&_ZN6S381C53v13Ev,
  (VTBL_ENTRY)&_ZN6S381C53v14Ev,
  (VTBL_ENTRY)&_ZN6S381C53v15Ev,
  (VTBL_ENTRY)&_ZN6S381C43v16Ev,
  (VTBL_ENTRY)&_ZN6S381C43v17Ev,
  (VTBL_ENTRY)&_ZN6S381C43v18Ev,
  (VTBL_ENTRY)&_ZN6S381C33v19Ev,
  (VTBL_ENTRY)&_ZN6S381C23v20Ev,
  (VTBL_ENTRY)&_ZN6S381C23v21Ev,
  (VTBL_ENTRY)&_ZN6S381C23v22Ev,
  (VTBL_ENTRY)&_ZN6S381C23v23Ev,
  (VTBL_ENTRY)&_ZN6S381C23v24Ev,
  (VTBL_ENTRY)&_ZN6S381C12v1Ev,
  (VTBL_ENTRY)&_ZN6S381C12v2Ev,
  (VTBL_ENTRY)&_ZN6S381C12v3Ev,
  (VTBL_ENTRY)&_ZN6S381C12v4Ev,
  (VTBL_ENTRY)&_ZN6S381C12v5Ev,
  (VTBL_ENTRY)&_ZN6S381C12v6Ev,
  (VTBL_ENTRY)&_ZN6S381C12v7Ev,
  (VTBL_ENTRY)&_ZN6S381C12v8Ev,
};
extern VTBL_ENTRY _ZTI6S381C1[];
extern  VTBL_ENTRY _ZTV6S381C1[];
Class_Descriptor cd_S381C1 = {  "S381C1", // class name
  bases_S381C1, 5,
  &(vtc_S381C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(528,476), // object size
  NSPAIRA(_ZTI6S381C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S381C1),28, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S380C6  {
  void *s380c6f0;
  char s380c6f1;
  int s380c6f2[4];
  void *s380c6f3;
  virtual  ~S380C6(); // _ZN6S380C6D1Ev
  virtual void  v9(); // _ZN6S380C62v9Ev
  virtual void  v10(); // _ZN6S380C63v10Ev
  virtual void  v11(); // _ZN6S380C63v11Ev
  virtual void  v12(); // _ZN6S380C63v12Ev
  S380C6(); // tgen
};
//SIG(-1 S380C6) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S380C6 ::~S380C6(){ note_dtor("S380C6", this);}
void  S380C6 ::v9(){vfunc_called(this, "_ZN6S380C62v9Ev");}
void  S380C6 ::v10(){vfunc_called(this, "_ZN6S380C63v10Ev");}
void  S380C6 ::v11(){vfunc_called(this, "_ZN6S380C63v11Ev");}
void  S380C6 ::v12(){vfunc_called(this, "_ZN6S380C63v12Ev");}
S380C6 ::S380C6(){ note_ctor("S380C6", this);} // tgen

static void Test_S380C6()
{
  extern Class_Descriptor cd_S380C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S380C6, buf);
    S380C6 *dp, &lv = *(dp=new (buf) S380C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S380C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S380C6)");
    check_field_offset(lv, s380c6f0, ABISELECT(8,4), "S380C6.s380c6f0");
    check_field_offset(lv, s380c6f1, ABISELECT(16,8), "S380C6.s380c6f1");
    check_field_offset(lv, s380c6f2, ABISELECT(20,12), "S380C6.s380c6f2");
    check_field_offset(lv, s380c6f3, ABISELECT(40,28), "S380C6.s380c6f3");
    test_class_info(&lv, &cd_S380C6);
    dp->~S380C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS380C6(Test_S380C6, "S380C6", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN6S380C6C1Ev();
extern void _ZN6S380C6D1Ev();
Name_Map name_map_S380C6[] = {
  NSPAIR(_ZN6S380C6C1Ev),
  NSPAIR(_ZN6S380C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S380C6[];
extern void _ZN6S380C6D1Ev();
extern void _ZN6S380C6D0Ev();
extern void _ZN6S380C62v9Ev();
extern void _ZN6S380C63v10Ev();
extern void _ZN6S380C63v11Ev();
extern void _ZN6S380C63v12Ev();
static  VTBL_ENTRY vtc_S380C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S380C6[0]),
  (VTBL_ENTRY)&_ZN6S380C6D1Ev,
  (VTBL_ENTRY)&_ZN6S380C6D0Ev,
  (VTBL_ENTRY)&_ZN6S380C62v9Ev,
  (VTBL_ENTRY)&_ZN6S380C63v10Ev,
  (VTBL_ENTRY)&_ZN6S380C63v11Ev,
  (VTBL_ENTRY)&_ZN6S380C63v12Ev,
};
extern VTBL_ENTRY _ZTI6S380C6[];
extern  VTBL_ENTRY _ZTV6S380C6[];
Class_Descriptor cd_S380C6 = {  "S380C6", // class name
  0,0,//no base classes
  &(vtc_S380C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI6S380C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S380C6),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S380C5  : S380C6 {
  int s380c5f0[3];
  virtual  ~S380C5(); // _ZN6S380C5D1Ev
  virtual void  v13(); // _ZN6S380C53v13Ev
  virtual void  v14(); // _ZN6S380C53v14Ev
  virtual void  v15(); // _ZN6S380C53v15Ev
  S380C5(); // tgen
};
//SIG(-1 S380C5) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S380C5 ::~S380C5(){ note_dtor("S380C5", this);}
void  S380C5 ::v13(){vfunc_called(this, "_ZN6S380C53v13Ev");}
void  S380C5 ::v14(){vfunc_called(this, "_ZN6S380C53v14Ev");}
void  S380C5 ::v15(){vfunc_called(this, "_ZN6S380C53v15Ev");}
S380C5 ::S380C5(){ note_ctor("S380C5", this);} // tgen

static void Test_S380C5()
{
  extern Class_Descriptor cd_S380C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S380C5, buf);
    S380C5 *dp, &lv = *(dp=new (buf) S380C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S380C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S380C5)");
    check_base_class_offset(lv, (S380C6*), 0, "S380C5");
    check_field_offset(lv, s380c5f0, ABISELECT(48,32), "S380C5.s380c5f0");
    test_class_info(&lv, &cd_S380C5);
    dp->~S380C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS380C5(Test_S380C5, "S380C5", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN6S380C5C1Ev();
extern void _ZN6S380C5D1Ev();
Name_Map name_map_S380C5[] = {
  NSPAIR(_ZN6S380C5C1Ev),
  NSPAIR(_ZN6S380C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S380C6;
extern VTBL_ENTRY _ZTI6S380C6[];
extern  VTBL_ENTRY _ZTV6S380C6[];
static Base_Class bases_S380C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S380C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S380C5[];
extern void _ZN6S380C5D1Ev();
extern void _ZN6S380C5D0Ev();
extern void _ZN6S380C62v9Ev();
extern void _ZN6S380C63v10Ev();
extern void _ZN6S380C63v11Ev();
extern void _ZN6S380C63v12Ev();
extern void _ZN6S380C53v13Ev();
extern void _ZN6S380C53v14Ev();
extern void _ZN6S380C53v15Ev();
static  VTBL_ENTRY vtc_S380C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S380C5[0]),
  (VTBL_ENTRY)&_ZN6S380C5D1Ev,
  (VTBL_ENTRY)&_ZN6S380C5D0Ev,
  (VTBL_ENTRY)&_ZN6S380C62v9Ev,
  (VTBL_ENTRY)&_ZN6S380C63v10Ev,
  (VTBL_ENTRY)&_ZN6S380C63v11Ev,
  (VTBL_ENTRY)&_ZN6S380C63v12Ev,
  (VTBL_ENTRY)&_ZN6S380C53v13Ev,
  (VTBL_ENTRY)&_ZN6S380C53v14Ev,
  (VTBL_ENTRY)&_ZN6S380C53v15Ev,
};
extern VTBL_ENTRY _ZTI6S380C5[];
extern  VTBL_ENTRY _ZTV6S380C5[];
Class_Descriptor cd_S380C5 = {  "S380C5", // class name
  bases_S380C5, 1,
  &(vtc_S380C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI6S380C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S380C5),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S380C4  : S380C5 {
  int s380c4f0[3];
  virtual  ~S380C4(); // _ZN6S380C4D1Ev
  virtual void  v16(); // _ZN6S380C43v16Ev
  virtual void  v17(); // _ZN6S380C43v17Ev
  virtual void  v18(); // _ZN6S380C43v18Ev
  S380C4(); // tgen
};
//SIG(-1 S380C4) C1{ BC2{ BC3{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v8 v9 v10 Fi[3]} vd v1 v2 v3 Fi[3]}


 S380C4 ::~S380C4(){ note_dtor("S380C4", this);}
void  S380C4 ::v16(){vfunc_called(this, "_ZN6S380C43v16Ev");}
void  S380C4 ::v17(){vfunc_called(this, "_ZN6S380C43v17Ev");}
void  S380C4 ::v18(){vfunc_called(this, "_ZN6S380C43v18Ev");}
S380C4 ::S380C4(){ note_ctor("S380C4", this);} // tgen

static void Test_S380C4()
{
  extern Class_Descriptor cd_S380C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S380C4, buf);
    S380C4 *dp, &lv = *(dp=new (buf) S380C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S380C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S380C4)");
    check_base_class_offset(lv, (S380C6*)(S380C5*), 0, "S380C4");
    check_base_class_offset(lv, (S380C5*), 0, "S380C4");
    check_field_offset(lv, s380c4f0, ABISELECT(60,44), "S380C4.s380c4f0");
    test_class_info(&lv, &cd_S380C4);
    dp->~S380C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS380C4(Test_S380C4, "S380C4", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN6S380C4C1Ev();
extern void _ZN6S380C4D1Ev();
Name_Map name_map_S380C4[] = {
  NSPAIR(_ZN6S380C4C1Ev),
  NSPAIR(_ZN6S380C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S380C6;
extern VTBL_ENTRY _ZTI6S380C6[];
extern  VTBL_ENTRY _ZTV6S380C6[];
extern Class_Descriptor cd_S380C5;
extern VTBL_ENTRY _ZTI6S380C5[];
extern  VTBL_ENTRY _ZTV6S380C5[];
static Base_Class bases_S380C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S380C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S380C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S380C4[];
extern void _ZN6S380C4D1Ev();
extern void _ZN6S380C4D0Ev();
extern void _ZN6S380C62v9Ev();
extern void _ZN6S380C63v10Ev();
extern void _ZN6S380C63v11Ev();
extern void _ZN6S380C63v12Ev();
extern void _ZN6S380C53v13Ev();
extern void _ZN6S380C53v14Ev();
extern void _ZN6S380C53v15Ev();
extern void _ZN6S380C43v16Ev();
extern void _ZN6S380C43v17Ev();
extern void _ZN6S380C43v18Ev();
static  VTBL_ENTRY vtc_S380C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S380C4[0]),
  (VTBL_ENTRY)&_ZN6S380C4D1Ev,
  (VTBL_ENTRY)&_ZN6S380C4D0Ev,
  (VTBL_ENTRY)&_ZN6S380C62v9Ev,
  (VTBL_ENTRY)&_ZN6S380C63v10Ev,
  (VTBL_ENTRY)&_ZN6S380C63v11Ev,
  (VTBL_ENTRY)&_ZN6S380C63v12Ev,
  (VTBL_ENTRY)&_ZN6S380C53v13Ev,
  (VTBL_ENTRY)&_ZN6S380C53v14Ev,
  (VTBL_ENTRY)&_ZN6S380C53v15Ev,
  (VTBL_ENTRY)&_ZN6S380C43v16Ev,
  (VTBL_ENTRY)&_ZN6S380C43v17Ev,
  (VTBL_ENTRY)&_ZN6S380C43v18Ev,
};
extern VTBL_ENTRY _ZTI6S380C4[];
extern  VTBL_ENTRY _ZTV6S380C4[];
Class_Descriptor cd_S380C4 = {  "S380C4", // class name
  bases_S380C4, 2,
  &(vtc_S380C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI6S380C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S380C4),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S380C3  : S380C4 {
  void *s380c3f0;
  virtual  ~S380C3(); // _ZN6S380C3D1Ev
  virtual void  v19(); // _ZN6S380C33v19Ev
  S380C3(); // tgen
};
//SIG(-1 S380C3) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fp Fc Fi[4] Fp} vd v6 v7 v8 Fi[3]} vd v9 v10 v11 Fi[3]} vd v1 Fp}


 S380C3 ::~S380C3(){ note_dtor("S380C3", this);}
void  S380C3 ::v19(){vfunc_called(this, "_ZN6S380C33v19Ev");}
S380C3 ::S380C3(){ note_ctor("S380C3", this);} // tgen

static void Test_S380C3()
{
  extern Class_Descriptor cd_S380C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,16)];
    init_test(&cd_S380C3, buf);
    S380C3 *dp, &lv = *(dp=new (buf) S380C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S380C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S380C3)");
    check_base_class_offset(lv, (S380C6*)(S380C5*)(S380C4*), 0, "S380C3");
    check_base_class_offset(lv, (S380C5*)(S380C4*), 0, "S380C3");
    check_base_class_offset(lv, (S380C4*), 0, "S380C3");
    check_field_offset(lv, s380c3f0, ABISELECT(72,56), "S380C3.s380c3f0");
    test_class_info(&lv, &cd_S380C3);
    dp->~S380C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS380C3(Test_S380C3, "S380C3", ABISELECT(80,60));

#else // __cplusplus

extern void _ZN6S380C3C1Ev();
extern void _ZN6S380C3D1Ev();
Name_Map name_map_S380C3[] = {
  NSPAIR(_ZN6S380C3C1Ev),
  NSPAIR(_ZN6S380C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S380C6;
extern VTBL_ENTRY _ZTI6S380C6[];
extern  VTBL_ENTRY _ZTV6S380C6[];
extern Class_Descriptor cd_S380C5;
extern VTBL_ENTRY _ZTI6S380C5[];
extern  VTBL_ENTRY _ZTV6S380C5[];
extern Class_Descriptor cd_S380C4;
extern VTBL_ENTRY _ZTI6S380C4[];
extern  VTBL_ENTRY _ZTV6S380C4[];
static Base_Class bases_S380C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S380C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S380C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S380C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S380C3[];
extern void _ZN6S380C3D1Ev();
extern void _ZN6S380C3D0Ev();
extern void _ZN6S380C62v9Ev();
extern void _ZN6S380C63v10Ev();
extern void _ZN6S380C63v11Ev();
extern void _ZN6S380C63v12Ev();
extern void _ZN6S380C53v13Ev();
extern void _ZN6S380C53v14Ev();
extern void _ZN6S380C53v15Ev();
extern void _ZN6S380C43v16Ev();
extern void _ZN6S380C43v17Ev();
extern void _ZN6S380C43v18Ev();
extern void _ZN6S380C33v19Ev();
static  VTBL_ENTRY vtc_S380C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S380C3[0]),
  (VTBL_ENTRY)&_ZN6S380C3D1Ev,
  (VTBL_ENTRY)&_ZN6S380C3D0Ev,
  (VTBL_ENTRY)&_ZN6S380C62v9Ev,
  (VTBL_ENTRY)&_ZN6S380C63v10Ev,
  (VTBL_ENTRY)&_ZN6S380C63v11Ev,
  (VTBL_ENTRY)&_ZN6S380C63v12Ev,
  (VTBL_ENTRY)&_ZN6S380C53v13Ev,
  (VTBL_ENTRY)&_ZN6S380C53v14Ev,
  (VTBL_ENTRY)&_ZN6S380C53v15Ev,
  (VTBL_ENTRY)&_ZN6S380C43v16Ev,
  (VTBL_ENTRY)&_ZN6S380C43v17Ev,
  (VTBL_ENTRY)&_ZN6S380C43v18Ev,
  (VTBL_ENTRY)&_ZN6S380C33v19Ev,
};
extern VTBL_ENTRY _ZTI6S380C3[];
extern  VTBL_ENTRY _ZTV6S380C3[];
Class_Descriptor cd_S380C3 = {  "S380C3", // class name
  bases_S380C3, 3,
  &(vtc_S380C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,60), // object size
  NSPAIRA(_ZTI6S380C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S380C3),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S380C11_nt  {
  long s380c11f0;
  void  mf380c11(); // _ZN10S380C11_nt8mf380c11Ev
};
//SIG(-1 S380C11_nt) C1{ m Fl}


void  S380C11_nt ::mf380c11(){}

//skip512 S380C11_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S380C2  : S380C3 {
  ::S381C7 s380c2f0;
  void *s380c2f1;
  ::S20760C13 s380c2f2;
  int s380c2f3[8];
  char s380c2f4;
  ::S380C11_nt s380c2f5;
  ::S380C11_nt s380c2f6;
  int s380c2f7[2];
  char s380c2f8[2];
  ::S380C11_nt s380c2f9;
  virtual  ~S380C2(); // _ZN6S380C2D1Ev
  virtual void  v20(); // _ZN6S380C23v20Ev
  virtual void  v21(); // _ZN6S380C23v21Ev
  virtual void  v22(); // _ZN6S380C23v22Ev
  virtual void  v23(); // _ZN6S380C23v23Ev
  virtual void  v24(); // _ZN6S380C23v24Ev
  S380C2(); // tgen
};
//SIG(-1 S380C2) C1{ BC2{ BC3{ BC4{ BC5{ vd v6 v7 v8 v9 Fp Fc Fi[4] Fp} vd v10 v11 v12 Fi[3]} vd v13 v14 v15 Fi[3]} vd v16 Fp} vd v1 v2 v3 v4 v5 FC6{ BC7{ vd v18} vd v17 Fi[2] FC8{ m Fi[4]} Fi[11]} Fp FC9{ vd m Fi[6]} Fi[8] Fc FC10{ m Fl} FC10 Fi[2] Fc[2] FC10}


 S380C2 ::~S380C2(){ note_dtor("S380C2", this);}
void  S380C2 ::v20(){vfunc_called(this, "_ZN6S380C23v20Ev");}
void  S380C2 ::v21(){vfunc_called(this, "_ZN6S380C23v21Ev");}
void  S380C2 ::v22(){vfunc_called(this, "_ZN6S380C23v22Ev");}
void  S380C2 ::v23(){vfunc_called(this, "_ZN6S380C23v23Ev");}
void  S380C2 ::v24(){vfunc_called(this, "_ZN6S380C23v24Ev");}
S380C2 ::S380C2(){ note_ctor("S380C2", this);} // tgen

static void Test_S380C2()
{
  extern Class_Descriptor cd_S380C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,57)];
    init_test(&cd_S380C2, buf);
    S380C2 *dp, &lv = *(dp=new (buf) S380C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,224), "sizeof(S380C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S380C2)");
    check_base_class_offset(lv, (S380C6*)(S380C5*)(S380C4*)(S380C3*), 0, "S380C2");
    check_base_class_offset(lv, (S380C5*)(S380C4*)(S380C3*), 0, "S380C2");
    check_base_class_offset(lv, (S380C4*)(S380C3*), 0, "S380C2");
    check_base_class_offset(lv, (S380C3*), 0, "S380C2");
    check_field_offset(lv, s380c2f0, ABISELECT(80,60), "S380C2.s380c2f0");
    check_field_offset(lv, s380c2f1, ABISELECT(160,132), "S380C2.s380c2f1");
    check_field_offset(lv, s380c2f2, ABISELECT(168,136), "S380C2.s380c2f2");
    check_field_offset(lv, s380c2f3, ABISELECT(200,164), "S380C2.s380c2f3");
    check_field_offset(lv, s380c2f4, ABISELECT(232,196), "S380C2.s380c2f4");
    check_field_offset(lv, s380c2f5, ABISELECT(240,200), "S380C2.s380c2f5");
    check_field_offset(lv, s380c2f6, ABISELECT(248,204), "S380C2.s380c2f6");
    check_field_offset(lv, s380c2f7, ABISELECT(256,208), "S380C2.s380c2f7");
    check_field_offset(lv, s380c2f8, ABISELECT(264,216), "S380C2.s380c2f8");
    check_field_offset(lv, s380c2f9, ABISELECT(272,220), "S380C2.s380c2f9");
    test_class_info(&lv, &cd_S380C2);
    dp->~S380C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS380C2(Test_S380C2, "S380C2", ABISELECT(280,224));

#else // __cplusplus

extern void _ZN6S380C2C1Ev();
extern void _ZN6S380C2D1Ev();
Name_Map name_map_S380C2[] = {
  NSPAIR(_ZN6S380C2C1Ev),
  NSPAIR(_ZN6S380C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S380C6;
extern VTBL_ENTRY _ZTI6S380C6[];
extern  VTBL_ENTRY _ZTV6S380C6[];
extern Class_Descriptor cd_S380C5;
extern VTBL_ENTRY _ZTI6S380C5[];
extern  VTBL_ENTRY _ZTV6S380C5[];
extern Class_Descriptor cd_S380C4;
extern VTBL_ENTRY _ZTI6S380C4[];
extern  VTBL_ENTRY _ZTV6S380C4[];
extern Class_Descriptor cd_S380C3;
extern VTBL_ENTRY _ZTI6S380C3[];
extern  VTBL_ENTRY _ZTV6S380C3[];
static Base_Class bases_S380C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S380C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S380C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S380C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S380C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S380C2[];
extern void _ZN6S380C2D1Ev();
extern void _ZN6S380C2D0Ev();
extern void _ZN6S380C62v9Ev();
extern void _ZN6S380C63v10Ev();
extern void _ZN6S380C63v11Ev();
extern void _ZN6S380C63v12Ev();
extern void _ZN6S380C53v13Ev();
extern void _ZN6S380C53v14Ev();
extern void _ZN6S380C53v15Ev();
extern void _ZN6S380C43v16Ev();
extern void _ZN6S380C43v17Ev();
extern void _ZN6S380C43v18Ev();
extern void _ZN6S380C33v19Ev();
extern void _ZN6S380C23v20Ev();
extern void _ZN6S380C23v21Ev();
extern void _ZN6S380C23v22Ev();
extern void _ZN6S380C23v23Ev();
extern void _ZN6S380C23v24Ev();
static  VTBL_ENTRY vtc_S380C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S380C2[0]),
  (VTBL_ENTRY)&_ZN6S380C2D1Ev,
  (VTBL_ENTRY)&_ZN6S380C2D0Ev,
  (VTBL_ENTRY)&_ZN6S380C62v9Ev,
  (VTBL_ENTRY)&_ZN6S380C63v10Ev,
  (VTBL_ENTRY)&_ZN6S380C63v11Ev,
  (VTBL_ENTRY)&_ZN6S380C63v12Ev,
  (VTBL_ENTRY)&_ZN6S380C53v13Ev,
  (VTBL_ENTRY)&_ZN6S380C53v14Ev,
  (VTBL_ENTRY)&_ZN6S380C53v15Ev,
  (VTBL_ENTRY)&_ZN6S380C43v16Ev,
  (VTBL_ENTRY)&_ZN6S380C43v17Ev,
  (VTBL_ENTRY)&_ZN6S380C43v18Ev,
  (VTBL_ENTRY)&_ZN6S380C33v19Ev,
  (VTBL_ENTRY)&_ZN6S380C23v20Ev,
  (VTBL_ENTRY)&_ZN6S380C23v21Ev,
  (VTBL_ENTRY)&_ZN6S380C23v22Ev,
  (VTBL_ENTRY)&_ZN6S380C23v23Ev,
  (VTBL_ENTRY)&_ZN6S380C23v24Ev,
};
extern VTBL_ENTRY _ZTI6S380C2[];
extern  VTBL_ENTRY _ZTV6S380C2[];
Class_Descriptor cd_S380C2 = {  "S380C2", // class name
  bases_S380C2, 4,
  &(vtc_S380C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,224), // object size
  NSPAIRA(_ZTI6S380C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S380C2),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S380C1  : S380C2 {
  ::S381C7 s380c1f0;
  int s380c1f1[7];
  char s380c1f2;
  ::S380C11_nt s380c1f3[8];
  ::S380C11_nt s380c1f4[8];
  ::S380C11_nt s380c1f5;
  virtual  ~S380C1(); // _ZN6S380C1D1Ev
  virtual void  v1(); // _ZN6S380C12v1Ev
  virtual void  v2(); // _ZN6S380C12v2Ev
  virtual void  v3(); // _ZN6S380C12v3Ev
  virtual void  v4(); // _ZN6S380C12v4Ev
  virtual void  v5(); // _ZN6S380C12v5Ev
  virtual void  v6(); // _ZN6S380C12v6Ev
  virtual void  v7(); // _ZN6S380C12v7Ev
  virtual void  v8(); // _ZN6S380C12v8Ev
  S380C1(); // tgen
};
//SIG(1 S380C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ vd v9 v10 v11 v12 Fp Fc Fi[4] Fp} vd v13 v14 v15 Fi[3]} vd v16 v17 v18 Fi[3]} vd v19 Fp} vd v20 v21 v22 v23 v24 FC7{ BC8{ vd v26} vd v25 Fi[2] FC9{ m Fi[4]} Fi[11]} Fp FC10{ vd m Fi[6]} Fi[8] Fc FC11{ m Fl} FC11 Fi[2] Fc[2] FC11} vd v1 v2 v3 v4 v5 v6 v7 v8 FC7 Fi[7] Fc FC11[8] FC11[8] FC11}


 S380C1 ::~S380C1(){ note_dtor("S380C1", this);}
void  S380C1 ::v1(){vfunc_called(this, "_ZN6S380C12v1Ev");}
void  S380C1 ::v2(){vfunc_called(this, "_ZN6S380C12v2Ev");}
void  S380C1 ::v3(){vfunc_called(this, "_ZN6S380C12v3Ev");}
void  S380C1 ::v4(){vfunc_called(this, "_ZN6S380C12v4Ev");}
void  S380C1 ::v5(){vfunc_called(this, "_ZN6S380C12v5Ev");}
void  S380C1 ::v6(){vfunc_called(this, "_ZN6S380C12v6Ev");}
void  S380C1 ::v7(){vfunc_called(this, "_ZN6S380C12v7Ev");}
void  S380C1 ::v8(){vfunc_called(this, "_ZN6S380C12v8Ev");}
S380C1 ::S380C1(){ note_ctor("S380C1", this);} // tgen

static void Test_S380C1()
{
  extern Class_Descriptor cd_S380C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(67,100)];
    init_test(&cd_S380C1, buf);
    S380C1 *dp, &lv = *(dp=new (buf) S380C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,396), "sizeof(S380C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S380C1)");
    check_base_class_offset(lv, (S380C6*)(S380C5*)(S380C4*)(S380C3*)(S380C2*), 0, "S380C1");
    check_base_class_offset(lv, (S380C5*)(S380C4*)(S380C3*)(S380C2*), 0, "S380C1");
    check_base_class_offset(lv, (S380C4*)(S380C3*)(S380C2*), 0, "S380C1");
    check_base_class_offset(lv, (S380C3*)(S380C2*), 0, "S380C1");
    check_base_class_offset(lv, (S380C2*), 0, "S380C1");
    check_field_offset(lv, s380c1f0, ABISELECT(280,224), "S380C1.s380c1f0");
    check_field_offset(lv, s380c1f1, ABISELECT(360,296), "S380C1.s380c1f1");
    check_field_offset(lv, s380c1f2, ABISELECT(388,324), "S380C1.s380c1f2");
    check_field_offset(lv, s380c1f3, ABISELECT(392,328), "S380C1.s380c1f3");
    check_field_offset(lv, s380c1f4, ABISELECT(456,360), "S380C1.s380c1f4");
    check_field_offset(lv, s380c1f5, ABISELECT(520,392), "S380C1.s380c1f5");
    test_class_info(&lv, &cd_S380C1);
    dp->~S380C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS380C1(Test_S380C1, "S380C1", ABISELECT(528,396));

#else // __cplusplus

extern void _ZN6S380C1C1Ev();
extern void _ZN6S380C1D1Ev();
Name_Map name_map_S380C1[] = {
  NSPAIR(_ZN6S380C1C1Ev),
  NSPAIR(_ZN6S380C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S380C6;
extern VTBL_ENTRY _ZTI6S380C6[];
extern  VTBL_ENTRY _ZTV6S380C6[];
extern Class_Descriptor cd_S380C5;
extern VTBL_ENTRY _ZTI6S380C5[];
extern  VTBL_ENTRY _ZTV6S380C5[];
extern Class_Descriptor cd_S380C4;
extern VTBL_ENTRY _ZTI6S380C4[];
extern  VTBL_ENTRY _ZTV6S380C4[];
extern Class_Descriptor cd_S380C3;
extern VTBL_ENTRY _ZTI6S380C3[];
extern  VTBL_ENTRY _ZTV6S380C3[];
extern Class_Descriptor cd_S380C2;
extern VTBL_ENTRY _ZTI6S380C2[];
extern  VTBL_ENTRY _ZTV6S380C2[];
static Base_Class bases_S380C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S380C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S380C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S380C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S380C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S380C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S380C1[];
extern void _ZN6S380C1D1Ev();
extern void _ZN6S380C1D0Ev();
extern void _ZN6S380C62v9Ev();
extern void _ZN6S380C63v10Ev();
extern void _ZN6S380C63v11Ev();
extern void _ZN6S380C63v12Ev();
extern void _ZN6S380C53v13Ev();
extern void _ZN6S380C53v14Ev();
extern void _ZN6S380C53v15Ev();
extern void _ZN6S380C43v16Ev();
extern void _ZN6S380C43v17Ev();
extern void _ZN6S380C43v18Ev();
extern void _ZN6S380C33v19Ev();
extern void _ZN6S380C23v20Ev();
extern void _ZN6S380C23v21Ev();
extern void _ZN6S380C23v22Ev();
extern void _ZN6S380C23v23Ev();
extern void _ZN6S380C23v24Ev();
extern void _ZN6S380C12v1Ev();
extern void _ZN6S380C12v2Ev();
extern void _ZN6S380C12v3Ev();
extern void _ZN6S380C12v4Ev();
extern void _ZN6S380C12v5Ev();
extern void _ZN6S380C12v6Ev();
extern void _ZN6S380C12v7Ev();
extern void _ZN6S380C12v8Ev();
static  VTBL_ENTRY vtc_S380C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S380C1[0]),
  (VTBL_ENTRY)&_ZN6S380C1D1Ev,
  (VTBL_ENTRY)&_ZN6S380C1D0Ev,
  (VTBL_ENTRY)&_ZN6S380C62v9Ev,
  (VTBL_ENTRY)&_ZN6S380C63v10Ev,
  (VTBL_ENTRY)&_ZN6S380C63v11Ev,
  (VTBL_ENTRY)&_ZN6S380C63v12Ev,
  (VTBL_ENTRY)&_ZN6S380C53v13Ev,
  (VTBL_ENTRY)&_ZN6S380C53v14Ev,
  (VTBL_ENTRY)&_ZN6S380C53v15Ev,
  (VTBL_ENTRY)&_ZN6S380C43v16Ev,
  (VTBL_ENTRY)&_ZN6S380C43v17Ev,
  (VTBL_ENTRY)&_ZN6S380C43v18Ev,
  (VTBL_ENTRY)&_ZN6S380C33v19Ev,
  (VTBL_ENTRY)&_ZN6S380C23v20Ev,
  (VTBL_ENTRY)&_ZN6S380C23v21Ev,
  (VTBL_ENTRY)&_ZN6S380C23v22Ev,
  (VTBL_ENTRY)&_ZN6S380C23v23Ev,
  (VTBL_ENTRY)&_ZN6S380C23v24Ev,
  (VTBL_ENTRY)&_ZN6S380C12v1Ev,
  (VTBL_ENTRY)&_ZN6S380C12v2Ev,
  (VTBL_ENTRY)&_ZN6S380C12v3Ev,
  (VTBL_ENTRY)&_ZN6S380C12v4Ev,
  (VTBL_ENTRY)&_ZN6S380C12v5Ev,
  (VTBL_ENTRY)&_ZN6S380C12v6Ev,
  (VTBL_ENTRY)&_ZN6S380C12v7Ev,
  (VTBL_ENTRY)&_ZN6S380C12v8Ev,
};
extern VTBL_ENTRY _ZTI6S380C1[];
extern  VTBL_ENTRY _ZTV6S380C1[];
Class_Descriptor cd_S380C1 = {  "S380C1", // class name
  bases_S380C1, 5,
  &(vtc_S380C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(528,396), // object size
  NSPAIRA(_ZTI6S380C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S380C1),28, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4203C3  {
  char s4203c3f0;
  int s4203c3f1;
  void *s4203c3f2[3];
  char s4203c3f3[3];
  ::S4228C19_nt s4203c3f4;
  char s4203c3f5;
  void *s4203c3f6;
  int s4203c3f7[2];
  virtual  ~S4203C3(); // _ZN7S4203C3D1Ev
  virtual void  v10(); // _ZN7S4203C33v10Ev
  virtual void  v11(); // _ZN7S4203C33v11Ev
  virtual void  v12(); // _ZN7S4203C33v12Ev
  virtual void  v13(); // _ZN7S4203C33v13Ev
  virtual void  v14(); // _ZN7S4203C33v14Ev
  virtual void  v15(); // _ZN7S4203C33v15Ev
  virtual void  v16(); // _ZN7S4203C33v16Ev
  virtual void  v17(); // _ZN7S4203C33v17Ev
  virtual void  v18(); // _ZN7S4203C33v18Ev
  virtual void  v19(); // _ZN7S4203C33v19Ev
  virtual void  v20(); // _ZN7S4203C33v20Ev
  virtual void  v21(); // _ZN7S4203C33v21Ev
  virtual void  v22(); // _ZN7S4203C33v22Ev
  virtual void  v23(); // _ZN7S4203C33v23Ev
  S4203C3(); // tgen
};
//SIG(-1 S4203C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fc Fi Fp[3] Fc[3] FC2{ m Fp Fi FC3{ m}} Fc Fp Fi[2]}


 S4203C3 ::~S4203C3(){ note_dtor("S4203C3", this);}
void  S4203C3 ::v10(){vfunc_called(this, "_ZN7S4203C33v10Ev");}
void  S4203C3 ::v11(){vfunc_called(this, "_ZN7S4203C33v11Ev");}
void  S4203C3 ::v12(){vfunc_called(this, "_ZN7S4203C33v12Ev");}
void  S4203C3 ::v13(){vfunc_called(this, "_ZN7S4203C33v13Ev");}
void  S4203C3 ::v14(){vfunc_called(this, "_ZN7S4203C33v14Ev");}
void  S4203C3 ::v15(){vfunc_called(this, "_ZN7S4203C33v15Ev");}
void  S4203C3 ::v16(){vfunc_called(this, "_ZN7S4203C33v16Ev");}
void  S4203C3 ::v17(){vfunc_called(this, "_ZN7S4203C33v17Ev");}
void  S4203C3 ::v18(){vfunc_called(this, "_ZN7S4203C33v18Ev");}
void  S4203C3 ::v19(){vfunc_called(this, "_ZN7S4203C33v19Ev");}
void  S4203C3 ::v20(){vfunc_called(this, "_ZN7S4203C33v20Ev");}
void  S4203C3 ::v21(){vfunc_called(this, "_ZN7S4203C33v21Ev");}
void  S4203C3 ::v22(){vfunc_called(this, "_ZN7S4203C33v22Ev");}
void  S4203C3 ::v23(){vfunc_called(this, "_ZN7S4203C33v23Ev");}
S4203C3 ::S4203C3(){ note_ctor("S4203C3", this);} // tgen

static void Test_S4203C3()
{
  extern Class_Descriptor cd_S4203C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S4203C3, buf);
    S4203C3 *dp, &lv = *(dp=new (buf) S4203C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S4203C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4203C3)");
    check_field_offset(lv, s4203c3f0, ABISELECT(8,4), "S4203C3.s4203c3f0");
    check_field_offset(lv, s4203c3f1, ABISELECT(12,8), "S4203C3.s4203c3f1");
    check_field_offset(lv, s4203c3f2, ABISELECT(16,12), "S4203C3.s4203c3f2");
    check_field_offset(lv, s4203c3f3, ABISELECT(40,24), "S4203C3.s4203c3f3");
    check_field_offset(lv, s4203c3f4, ABISELECT(48,28), "S4203C3.s4203c3f4");
    check_field_offset(lv, s4203c3f5, ABISELECT(64,40), "S4203C3.s4203c3f5");
    check_field_offset(lv, s4203c3f6, ABISELECT(72,44), "S4203C3.s4203c3f6");
    check_field_offset(lv, s4203c3f7, ABISELECT(80,48), "S4203C3.s4203c3f7");
    test_class_info(&lv, &cd_S4203C3);
    dp->~S4203C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4203C3(Test_S4203C3, "S4203C3", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S4203C3C1Ev();
extern void _ZN7S4203C3D1Ev();
Name_Map name_map_S4203C3[] = {
  NSPAIR(_ZN7S4203C3C1Ev),
  NSPAIR(_ZN7S4203C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4203C3[];
extern void _ZN7S4203C3D1Ev();
extern void _ZN7S4203C3D0Ev();
extern void _ZN7S4203C33v10Ev();
extern void _ZN7S4203C33v11Ev();
extern void _ZN7S4203C33v12Ev();
extern void _ZN7S4203C33v13Ev();
extern void _ZN7S4203C33v14Ev();
extern void _ZN7S4203C33v15Ev();
extern void _ZN7S4203C33v16Ev();
extern void _ZN7S4203C33v17Ev();
extern void _ZN7S4203C33v18Ev();
extern void _ZN7S4203C33v19Ev();
extern void _ZN7S4203C33v20Ev();
extern void _ZN7S4203C33v21Ev();
extern void _ZN7S4203C33v22Ev();
extern void _ZN7S4203C33v23Ev();
static  VTBL_ENTRY vtc_S4203C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4203C3[0]),
  (VTBL_ENTRY)&_ZN7S4203C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4203C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v10Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v23Ev,
};
extern VTBL_ENTRY _ZTI7S4203C3[];
extern  VTBL_ENTRY _ZTV7S4203C3[];
Class_Descriptor cd_S4203C3 = {  "S4203C3", // class name
  0,0,//no base classes
  &(vtc_S4203C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S4203C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4203C3),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4203C2  : S4203C3 {
  char s4203c2f0;
  void *s4203c2f1[2];
  virtual  ~S4203C2(); // _ZN7S4203C2D1Ev
  virtual void  v24(); // _ZN7S4203C23v24Ev
  S4203C2(); // tgen
};
//SIG(-1 S4203C2) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fc Fi Fp[3] Fc[3] FC3{ m Fp Fi FC4{ m}} Fc Fp Fi[2]} vd v1 Fc Fp[2]}


 S4203C2 ::~S4203C2(){ note_dtor("S4203C2", this);}
void  S4203C2 ::v24(){vfunc_called(this, "_ZN7S4203C23v24Ev");}
S4203C2 ::S4203C2(){ note_ctor("S4203C2", this);} // tgen

static void Test_S4203C2()
{
  extern Class_Descriptor cd_S4203C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,18)];
    init_test(&cd_S4203C2, buf);
    S4203C2 *dp, &lv = *(dp=new (buf) S4203C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S4203C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4203C2)");
    check_base_class_offset(lv, (S4203C3*), 0, "S4203C2");
    check_field_offset(lv, s4203c2f0, ABISELECT(88,56), "S4203C2.s4203c2f0");
    check_field_offset(lv, s4203c2f1, ABISELECT(96,60), "S4203C2.s4203c2f1");
    test_class_info(&lv, &cd_S4203C2);
    dp->~S4203C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4203C2(Test_S4203C2, "S4203C2", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN7S4203C2C1Ev();
extern void _ZN7S4203C2D1Ev();
Name_Map name_map_S4203C2[] = {
  NSPAIR(_ZN7S4203C2C1Ev),
  NSPAIR(_ZN7S4203C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4203C3;
extern VTBL_ENTRY _ZTI7S4203C3[];
extern  VTBL_ENTRY _ZTV7S4203C3[];
static Base_Class bases_S4203C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4203C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4203C2[];
extern void _ZN7S4203C2D1Ev();
extern void _ZN7S4203C2D0Ev();
extern void _ZN7S4203C33v10Ev();
extern void _ZN7S4203C33v11Ev();
extern void _ZN7S4203C33v12Ev();
extern void _ZN7S4203C33v13Ev();
extern void _ZN7S4203C33v14Ev();
extern void _ZN7S4203C33v15Ev();
extern void _ZN7S4203C33v16Ev();
extern void _ZN7S4203C33v17Ev();
extern void _ZN7S4203C33v18Ev();
extern void _ZN7S4203C33v19Ev();
extern void _ZN7S4203C33v20Ev();
extern void _ZN7S4203C33v21Ev();
extern void _ZN7S4203C33v22Ev();
extern void _ZN7S4203C33v23Ev();
extern void _ZN7S4203C23v24Ev();
static  VTBL_ENTRY vtc_S4203C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4203C2[0]),
  (VTBL_ENTRY)&_ZN7S4203C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4203C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v10Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4203C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S4203C2[];
extern  VTBL_ENTRY _ZTV7S4203C2[];
Class_Descriptor cd_S4203C2 = {  "S4203C2", // class name
  bases_S4203C2, 1,
  &(vtc_S4203C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI7S4203C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4203C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4203C1  : S4203C2 {
  void *s4203c1f0[10];
  int s4203c1f1;
  ::S4228C19_nt s4203c1f2;
  char s4203c1f3[2];
  ::S4228C19_nt s4203c1f4;
  ::S4228C19_nt s4203c1f5;
  ::S4228C44 s4203c1f6;
  char s4203c1f7[2];
  int s4203c1f8;
  ::S4228C19_nt s4203c1f9;
  char s4203c1f10;
  ::S4228C19_nt s4203c1f11;
  ::S4228C19_nt s4203c1f12;
  char s4203c1f13;
  ::S4228C19_nt s4203c1f14;
  ::S4228C19_nt s4203c1f15;
  ::S4228C19_nt s4203c1f16;
  ::S4228C19_nt s4203c1f17;
  ::S4228C19_nt s4203c1f18;
  ::S4228C19_nt s4203c1f19;
  char s4203c1f20;
  int s4203c1f21[2];
  char s4203c1f22[3];
  virtual  ~S4203C1(); // _ZN7S4203C1D1Ev
  virtual void  v1(); // _ZN7S4203C12v1Ev
  virtual void  v2(); // _ZN7S4203C12v2Ev
  virtual void  v3(); // _ZN7S4203C12v3Ev
  virtual void  v4(); // _ZN7S4203C12v4Ev
  virtual void  v5(); // _ZN7S4203C12v5Ev
  virtual void  v6(); // _ZN7S4203C12v6Ev
  virtual void  v7(); // _ZN7S4203C12v7Ev
  virtual void  v8(); // _ZN7S4203C12v8Ev
  virtual void  v9(); // _ZN7S4203C12v9Ev
  S4203C1(); // tgen
};
//SIG(1 S4203C1) C1{ BC2{ BC3{ vd v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fc Fi Fp[3] Fc[3] FC4{ m Fp Fi FC5{ m}} Fc Fp Fi[2]} vd v24 Fc Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[10] Fi FC4 Fc[2] FC4 FC4 FC6{ m Fp Fi[2] FC7{ m}} Fc[2] Fi FC4 Fc FC4 FC4 Fc FC4 FC4 FC4 FC4 FC4 FC4 Fc Fi[2] Fc[3]}


 S4203C1 ::~S4203C1(){ note_dtor("S4203C1", this);}
void  S4203C1 ::v1(){vfunc_called(this, "_ZN7S4203C12v1Ev");}
void  S4203C1 ::v2(){vfunc_called(this, "_ZN7S4203C12v2Ev");}
void  S4203C1 ::v3(){vfunc_called(this, "_ZN7S4203C12v3Ev");}
void  S4203C1 ::v4(){vfunc_called(this, "_ZN7S4203C12v4Ev");}
void  S4203C1 ::v5(){vfunc_called(this, "_ZN7S4203C12v5Ev");}
void  S4203C1 ::v6(){vfunc_called(this, "_ZN7S4203C12v6Ev");}
void  S4203C1 ::v7(){vfunc_called(this, "_ZN7S4203C12v7Ev");}
void  S4203C1 ::v8(){vfunc_called(this, "_ZN7S4203C12v8Ev");}
void  S4203C1 ::v9(){vfunc_called(this, "_ZN7S4203C12v9Ev");}
S4203C1 ::S4203C1(){ note_ctor("S4203C1", this);} // tgen

static void Test_S4203C1()
{
  extern Class_Descriptor cd_S4203C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,78)];
    init_test(&cd_S4203C1, buf);
    S4203C1 *dp, &lv = *(dp=new (buf) S4203C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S4203C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4203C1)");
    check_base_class_offset(lv, (S4203C3*)(S4203C2*), 0, "S4203C1");
    check_base_class_offset(lv, (S4203C2*), 0, "S4203C1");
    check_field_offset(lv, s4203c1f0, ABISELECT(112,68), "S4203C1.s4203c1f0");
    check_field_offset(lv, s4203c1f1, ABISELECT(192,108), "S4203C1.s4203c1f1");
    check_field_offset(lv, s4203c1f2, ABISELECT(200,112), "S4203C1.s4203c1f2");
    check_field_offset(lv, s4203c1f3, ABISELECT(216,124), "S4203C1.s4203c1f3");
    check_field_offset(lv, s4203c1f4, ABISELECT(224,128), "S4203C1.s4203c1f4");
    check_field_offset(lv, s4203c1f5, ABISELECT(240,140), "S4203C1.s4203c1f5");
    check_field_offset(lv, s4203c1f6, ABISELECT(256,152), "S4203C1.s4203c1f6");
    check_field_offset(lv, s4203c1f7, ABISELECT(280,168), "S4203C1.s4203c1f7");
    check_field_offset(lv, s4203c1f8, ABISELECT(284,172), "S4203C1.s4203c1f8");
    check_field_offset(lv, s4203c1f9, ABISELECT(288,176), "S4203C1.s4203c1f9");
    check_field_offset(lv, s4203c1f10, ABISELECT(304,188), "S4203C1.s4203c1f10");
    check_field_offset(lv, s4203c1f11, ABISELECT(312,192), "S4203C1.s4203c1f11");
    check_field_offset(lv, s4203c1f12, ABISELECT(328,204), "S4203C1.s4203c1f12");
    check_field_offset(lv, s4203c1f13, ABISELECT(344,216), "S4203C1.s4203c1f13");
    check_field_offset(lv, s4203c1f14, ABISELECT(352,220), "S4203C1.s4203c1f14");
    check_field_offset(lv, s4203c1f15, ABISELECT(368,232), "S4203C1.s4203c1f15");
    check_field_offset(lv, s4203c1f16, ABISELECT(384,244), "S4203C1.s4203c1f16");
    check_field_offset(lv, s4203c1f17, ABISELECT(400,256), "S4203C1.s4203c1f17");
    check_field_offset(lv, s4203c1f18, ABISELECT(416,268), "S4203C1.s4203c1f18");
    check_field_offset(lv, s4203c1f19, ABISELECT(432,280), "S4203C1.s4203c1f19");
    check_field_offset(lv, s4203c1f20, ABISELECT(448,292), "S4203C1.s4203c1f20");
    check_field_offset(lv, s4203c1f21, ABISELECT(452,296), "S4203C1.s4203c1f21");
    check_field_offset(lv, s4203c1f22, ABISELECT(460,304), "S4203C1.s4203c1f22");
    test_class_info(&lv, &cd_S4203C1);
    dp->~S4203C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4203C1(Test_S4203C1, "S4203C1", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN7S4203C1C1Ev();
extern void _ZN7S4203C1D1Ev();
Name_Map name_map_S4203C1[] = {
  NSPAIR(_ZN7S4203C1C1Ev),
  NSPAIR(_ZN7S4203C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4203C3;
extern VTBL_ENTRY _ZTI7S4203C3[];
extern  VTBL_ENTRY _ZTV7S4203C3[];
extern Class_Descriptor cd_S4203C2;
extern VTBL_ENTRY _ZTI7S4203C2[];
extern  VTBL_ENTRY _ZTV7S4203C2[];
static Base_Class bases_S4203C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4203C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4203C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4203C1[];
extern void _ZN7S4203C1D1Ev();
extern void _ZN7S4203C1D0Ev();
extern void _ZN7S4203C33v10Ev();
extern void _ZN7S4203C33v11Ev();
extern void _ZN7S4203C33v12Ev();
extern void _ZN7S4203C33v13Ev();
extern void _ZN7S4203C33v14Ev();
extern void _ZN7S4203C33v15Ev();
extern void _ZN7S4203C33v16Ev();
extern void _ZN7S4203C33v17Ev();
extern void _ZN7S4203C33v18Ev();
extern void _ZN7S4203C33v19Ev();
extern void _ZN7S4203C33v20Ev();
extern void _ZN7S4203C33v21Ev();
extern void _ZN7S4203C33v22Ev();
extern void _ZN7S4203C33v23Ev();
extern void _ZN7S4203C23v24Ev();
extern void _ZN7S4203C12v1Ev();
extern void _ZN7S4203C12v2Ev();
extern void _ZN7S4203C12v3Ev();
extern void _ZN7S4203C12v4Ev();
extern void _ZN7S4203C12v5Ev();
extern void _ZN7S4203C12v6Ev();
extern void _ZN7S4203C12v7Ev();
extern void _ZN7S4203C12v8Ev();
extern void _ZN7S4203C12v9Ev();
static  VTBL_ENTRY vtc_S4203C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4203C1[0]),
  (VTBL_ENTRY)&_ZN7S4203C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4203C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v10Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4203C23v24Ev,
  (VTBL_ENTRY)&_ZN7S4203C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4203C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4203C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4203C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4203C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4203C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4203C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4203C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4203C12v9Ev,
};
extern VTBL_ENTRY _ZTI7S4203C1[];
extern  VTBL_ENTRY _ZTV7S4203C1[];
Class_Descriptor cd_S4203C1 = {  "S4203C1", // class name
  bases_S4203C1, 2,
  &(vtc_S4203C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI7S4203C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4203C1),28, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7169C2_nt  {
  void *s7169c2f0;
  ::S4228C24 s7169c2f1;
  virtual  ~S7169C2_nt(); // _ZN10S7169C2_ntD1Ev
  virtual void  v8(); // _ZN10S7169C2_nt2v8Ev
  virtual void  v9(); // _ZN10S7169C2_nt2v9Ev
  virtual void  v10(); // _ZN10S7169C2_nt3v10Ev
  virtual void  v11(); // _ZN10S7169C2_nt3v11Ev
  virtual void  v12(); // _ZN10S7169C2_nt3v12Ev
  virtual void  v13(); // _ZN10S7169C2_nt3v13Ev
  virtual void  v14(); // _ZN10S7169C2_nt3v14Ev
  virtual void  v15(); // _ZN10S7169C2_nt3v15Ev
  virtual void  v16(); // _ZN10S7169C2_nt3v16Ev
  virtual void  v17(); // _ZN10S7169C2_nt3v17Ev
  virtual void  v18(); // _ZN10S7169C2_nt3v18Ev
  virtual void  v19(); // _ZN10S7169C2_nt3v19Ev
  virtual void  v20(); // _ZN10S7169C2_nt3v20Ev
  virtual void  v21(); // _ZN10S7169C2_nt3v21Ev
  virtual void  v22(); // _ZN10S7169C2_nt3v22Ev
  S7169C2_nt(); // tgen
};
//SIG(-1 S7169C2_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp FC2{ BC3{ m Fp Fi FC4{ m} FC5{ m}}}}


 S7169C2_nt ::~S7169C2_nt(){ note_dtor("S7169C2_nt", this);}
void  S7169C2_nt ::v8(){vfunc_called(this, "_ZN10S7169C2_nt2v8Ev");}
void  S7169C2_nt ::v9(){vfunc_called(this, "_ZN10S7169C2_nt2v9Ev");}
void  S7169C2_nt ::v10(){vfunc_called(this, "_ZN10S7169C2_nt3v10Ev");}
void  S7169C2_nt ::v11(){vfunc_called(this, "_ZN10S7169C2_nt3v11Ev");}
void  S7169C2_nt ::v12(){vfunc_called(this, "_ZN10S7169C2_nt3v12Ev");}
void  S7169C2_nt ::v13(){vfunc_called(this, "_ZN10S7169C2_nt3v13Ev");}
void  S7169C2_nt ::v14(){vfunc_called(this, "_ZN10S7169C2_nt3v14Ev");}
void  S7169C2_nt ::v15(){vfunc_called(this, "_ZN10S7169C2_nt3v15Ev");}
void  S7169C2_nt ::v16(){vfunc_called(this, "_ZN10S7169C2_nt3v16Ev");}
void  S7169C2_nt ::v17(){vfunc_called(this, "_ZN10S7169C2_nt3v17Ev");}
void  S7169C2_nt ::v18(){vfunc_called(this, "_ZN10S7169C2_nt3v18Ev");}
void  S7169C2_nt ::v19(){vfunc_called(this, "_ZN10S7169C2_nt3v19Ev");}
void  S7169C2_nt ::v20(){vfunc_called(this, "_ZN10S7169C2_nt3v20Ev");}
void  S7169C2_nt ::v21(){vfunc_called(this, "_ZN10S7169C2_nt3v21Ev");}
void  S7169C2_nt ::v22(){vfunc_called(this, "_ZN10S7169C2_nt3v22Ev");}
S7169C2_nt ::S7169C2_nt(){ note_ctor("S7169C2_nt", this);} // tgen

//skip512 S7169C2_nt

#else // __cplusplus

extern void _ZN10S7169C2_ntC1Ev();
extern void _ZN10S7169C2_ntD1Ev();
Name_Map name_map_S7169C2_nt[] = {
  NSPAIR(_ZN10S7169C2_ntC1Ev),
  NSPAIR(_ZN10S7169C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7169C2_nt[];
extern void _ZN10S7169C2_ntD1Ev();
extern void _ZN10S7169C2_ntD0Ev();
extern void _ZN10S7169C2_nt2v8Ev();
extern void _ZN10S7169C2_nt2v9Ev();
extern void _ZN10S7169C2_nt3v10Ev();
extern void _ZN10S7169C2_nt3v11Ev();
extern void _ZN10S7169C2_nt3v12Ev();
extern void _ZN10S7169C2_nt3v13Ev();
extern void _ZN10S7169C2_nt3v14Ev();
extern void _ZN10S7169C2_nt3v15Ev();
extern void _ZN10S7169C2_nt3v16Ev();
extern void _ZN10S7169C2_nt3v17Ev();
extern void _ZN10S7169C2_nt3v18Ev();
extern void _ZN10S7169C2_nt3v19Ev();
extern void _ZN10S7169C2_nt3v20Ev();
extern void _ZN10S7169C2_nt3v21Ev();
extern void _ZN10S7169C2_nt3v22Ev();
static  VTBL_ENTRY vtc_S7169C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7169C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S7169C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v22Ev,
};
extern VTBL_ENTRY _ZTI10S7169C2_nt[];
VTBL_ENTRY *P__ZTI10S7169C2_nt = _ZTI10S7169C2_nt; 
extern  VTBL_ENTRY _ZTV10S7169C2_nt[];
Class_Descriptor cd_S7169C2_nt = {  "S7169C2_nt", // class name
  0,0,//no base classes
  &(vtc_S7169C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI10S7169C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7169C2_nt),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7169C9_nt  {
  virtual  ~S7169C9_nt(); // _ZN10S7169C9_ntD1Ev
  virtual void  v23(); // _ZN10S7169C9_nt3v23Ev
  virtual void  v24(); // _ZN10S7169C9_nt3v24Ev
  virtual void  v25(); // _ZN10S7169C9_nt3v25Ev
  S7169C9_nt(); // tgen
};
//SIG(-1 S7169C9_nt) C1{ vd v1 v2 v3}


 S7169C9_nt ::~S7169C9_nt(){ note_dtor("S7169C9_nt", this);}
void  S7169C9_nt ::v23(){vfunc_called(this, "_ZN10S7169C9_nt3v23Ev");}
void  S7169C9_nt ::v24(){vfunc_called(this, "_ZN10S7169C9_nt3v24Ev");}
void  S7169C9_nt ::v25(){vfunc_called(this, "_ZN10S7169C9_nt3v25Ev");}
S7169C9_nt ::S7169C9_nt(){ note_ctor("S7169C9_nt", this);} // tgen

//skip512 S7169C9_nt

#else // __cplusplus

extern void _ZN10S7169C9_ntC1Ev();
extern void _ZN10S7169C9_ntD1Ev();
Name_Map name_map_S7169C9_nt[] = {
  NSPAIR(_ZN10S7169C9_ntC1Ev),
  NSPAIR(_ZN10S7169C9_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7169C9_nt[];
extern void _ZN10S7169C9_ntD1Ev();
extern void _ZN10S7169C9_ntD0Ev();
extern void _ZN10S7169C9_nt3v23Ev();
extern void _ZN10S7169C9_nt3v24Ev();
extern void _ZN10S7169C9_nt3v25Ev();
static  VTBL_ENTRY vtc_S7169C9_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7169C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S7169C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v25Ev,
};
extern VTBL_ENTRY _ZTI10S7169C9_nt[];
VTBL_ENTRY *P__ZTI10S7169C9_nt = _ZTI10S7169C9_nt; 
extern  VTBL_ENTRY _ZTV10S7169C9_nt[];
Class_Descriptor cd_S7169C9_nt = {  "S7169C9_nt", // class name
  0,0,//no base classes
  &(vtc_S7169C9_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7169C9_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7169C9_nt),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7169C8_nt  : S7169C9_nt {
  virtual  ~S7169C8_nt(); // _ZN10S7169C8_ntD1Ev
  virtual void  v26(); // _ZN10S7169C8_nt3v26Ev
  virtual void  v27(); // _ZN10S7169C8_nt3v27Ev
  virtual void  v28(); // _ZN10S7169C8_nt3v28Ev
  virtual void  v29(); // _ZN10S7169C8_nt3v29Ev
  virtual void  v30(); // _ZN10S7169C8_nt3v30Ev
  virtual void  v31(); // _ZN10S7169C8_nt3v31Ev
  S7169C8_nt(); // tgen
};
//SIG(-1 S7169C8_nt) C1{ BC2{ vd v7 v8 v9} vd v1 v2 v3 v4 v5 v6}


 S7169C8_nt ::~S7169C8_nt(){ note_dtor("S7169C8_nt", this);}
void  S7169C8_nt ::v26(){vfunc_called(this, "_ZN10S7169C8_nt3v26Ev");}
void  S7169C8_nt ::v27(){vfunc_called(this, "_ZN10S7169C8_nt3v27Ev");}
void  S7169C8_nt ::v28(){vfunc_called(this, "_ZN10S7169C8_nt3v28Ev");}
void  S7169C8_nt ::v29(){vfunc_called(this, "_ZN10S7169C8_nt3v29Ev");}
void  S7169C8_nt ::v30(){vfunc_called(this, "_ZN10S7169C8_nt3v30Ev");}
void  S7169C8_nt ::v31(){vfunc_called(this, "_ZN10S7169C8_nt3v31Ev");}
S7169C8_nt ::S7169C8_nt(){ note_ctor("S7169C8_nt", this);} // tgen

//skip512 S7169C8_nt

#else // __cplusplus

extern void _ZN10S7169C8_ntC1Ev();
extern void _ZN10S7169C8_ntD1Ev();
Name_Map name_map_S7169C8_nt[] = {
  NSPAIR(_ZN10S7169C8_ntC1Ev),
  NSPAIR(_ZN10S7169C8_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7169C9_nt;
extern VTBL_ENTRY _ZTI10S7169C9_nt[];
extern  VTBL_ENTRY _ZTV10S7169C9_nt[];
static Base_Class bases_S7169C8_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7169C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S7169C8_nt[];
extern void _ZN10S7169C8_ntD1Ev();
extern void _ZN10S7169C8_ntD0Ev();
extern void _ZN10S7169C9_nt3v23Ev();
extern void _ZN10S7169C9_nt3v24Ev();
extern void _ZN10S7169C9_nt3v25Ev();
extern void _ZN10S7169C8_nt3v26Ev();
extern void _ZN10S7169C8_nt3v27Ev();
extern void _ZN10S7169C8_nt3v28Ev();
extern void _ZN10S7169C8_nt3v29Ev();
extern void _ZN10S7169C8_nt3v30Ev();
extern void _ZN10S7169C8_nt3v31Ev();
static  VTBL_ENTRY vtc_S7169C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7169C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S7169C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v31Ev,
};
extern VTBL_ENTRY _ZTI10S7169C8_nt[];
VTBL_ENTRY *P__ZTI10S7169C8_nt = _ZTI10S7169C8_nt; 
extern  VTBL_ENTRY _ZTV10S7169C8_nt[];
Class_Descriptor cd_S7169C8_nt = {  "S7169C8_nt", // class name
  bases_S7169C8_nt, 1,
  &(vtc_S7169C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7169C8_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S7169C8_nt),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7169C12_nt  {
  ::S10007C29_nt s7169c12f0;
  void  mf7169c12(); // _ZN11S7169C12_nt9mf7169c12Ev
};
//SIG(-1 S7169C12_nt) C1{ m FC2{ FL[4]}}


void  S7169C12_nt ::mf7169c12(){}

//skip512 S7169C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7169C7_nt  : S7169C8_nt {
  ::S4228C44 s7169c7f0;
  ::S7169C12_nt s7169c7f1;
  char s7169c7f2;
  virtual  ~S7169C7_nt(); // _ZN10S7169C7_ntD1Ev
  virtual void  v32(); // _ZN10S7169C7_nt3v32Ev
  virtual void  v33(); // _ZN10S7169C7_nt3v33Ev
  virtual void  v34(); // _ZN10S7169C7_nt3v34Ev
  S7169C7_nt(); // tgen
};
//SIG(-1 S7169C7_nt) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ FL[4]}} Fc}


 S7169C7_nt ::~S7169C7_nt(){ note_dtor("S7169C7_nt", this);}
void  S7169C7_nt ::v32(){vfunc_called(this, "_ZN10S7169C7_nt3v32Ev");}
void  S7169C7_nt ::v33(){vfunc_called(this, "_ZN10S7169C7_nt3v33Ev");}
void  S7169C7_nt ::v34(){vfunc_called(this, "_ZN10S7169C7_nt3v34Ev");}
S7169C7_nt ::S7169C7_nt(){ note_ctor("S7169C7_nt", this);} // tgen

//skip512 S7169C7_nt

#else // __cplusplus

extern void _ZN10S7169C7_ntC1Ev();
extern void _ZN10S7169C7_ntD1Ev();
Name_Map name_map_S7169C7_nt[] = {
  NSPAIR(_ZN10S7169C7_ntC1Ev),
  NSPAIR(_ZN10S7169C7_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7169C9_nt;
extern VTBL_ENTRY _ZTI10S7169C9_nt[];
extern  VTBL_ENTRY _ZTV10S7169C9_nt[];
extern Class_Descriptor cd_S7169C8_nt;
extern VTBL_ENTRY _ZTI10S7169C8_nt[];
extern  VTBL_ENTRY _ZTV10S7169C8_nt[];
static Base_Class bases_S7169C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7169C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7169C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S7169C7_nt[];
extern void _ZN10S7169C7_ntD1Ev();
extern void _ZN10S7169C7_ntD0Ev();
extern void _ZN10S7169C9_nt3v23Ev();
extern void _ZN10S7169C9_nt3v24Ev();
extern void _ZN10S7169C9_nt3v25Ev();
extern void _ZN10S7169C8_nt3v26Ev();
extern void _ZN10S7169C8_nt3v27Ev();
extern void _ZN10S7169C8_nt3v28Ev();
extern void _ZN10S7169C8_nt3v29Ev();
extern void _ZN10S7169C8_nt3v30Ev();
extern void _ZN10S7169C8_nt3v31Ev();
extern void _ZN10S7169C7_nt3v32Ev();
extern void _ZN10S7169C7_nt3v33Ev();
extern void _ZN10S7169C7_nt3v34Ev();
static  VTBL_ENTRY vtc_S7169C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7169C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S7169C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7169C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S7169C7_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S7169C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S7169C7_nt3v34Ev,
};
extern VTBL_ENTRY _ZTI10S7169C7_nt[];
VTBL_ENTRY *P__ZTI10S7169C7_nt = _ZTI10S7169C7_nt; 
extern  VTBL_ENTRY _ZTV10S7169C7_nt[];
Class_Descriptor cd_S7169C7_nt = {  "S7169C7_nt", // class name
  bases_S7169C7_nt, 2,
  &(vtc_S7169C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI10S7169C7_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S7169C7_nt),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7169C14  {
  virtual  ~S7169C14(); // _ZN8S7169C14D1Ev
  virtual void  v35(); // _ZN8S7169C143v35Ev
  S7169C14(); // tgen
};
//SIG(-1 S7169C14) C1{ vd v1}


 S7169C14 ::~S7169C14(){ note_dtor("S7169C14", this);}
void  S7169C14 ::v35(){vfunc_called(this, "_ZN8S7169C143v35Ev");}
S7169C14 ::S7169C14(){ note_ctor("S7169C14", this);} // tgen

static void Test_S7169C14()
{
  extern Class_Descriptor cd_S7169C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7169C14, buf);
    S7169C14 *dp, &lv = *(dp=new (buf) S7169C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7169C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7169C14)");
    test_class_info(&lv, &cd_S7169C14);
    dp->~S7169C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7169C14(Test_S7169C14, "S7169C14", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7169C14C1Ev();
extern void _ZN8S7169C14D1Ev();
Name_Map name_map_S7169C14[] = {
  NSPAIR(_ZN8S7169C14C1Ev),
  NSPAIR(_ZN8S7169C14D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7169C14[];
extern void _ZN8S7169C14D1Ev();
extern void _ZN8S7169C14D0Ev();
extern void _ZN8S7169C143v35Ev();
static  VTBL_ENTRY vtc_S7169C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7169C14[0]),
  (VTBL_ENTRY)&_ZN8S7169C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7169C14D0Ev,
  (VTBL_ENTRY)&_ZN8S7169C143v35Ev,
};
extern VTBL_ENTRY _ZTI8S7169C14[];
extern  VTBL_ENTRY _ZTV8S7169C14[];
Class_Descriptor cd_S7169C14 = {  "S7169C14", // class name
  0,0,//no base classes
  &(vtc_S7169C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7169C14),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7169C14),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7169C15  : S19763C18_nt {
  int s7169c15f0[3];
  virtual  ~S7169C15(); // _ZN8S7169C15D1Ev
  S7169C15(); // tgen
};
//SIG(-1 S7169C15) C1{ BC2{} vd Fi[3]}


 S7169C15 ::~S7169C15(){ note_dtor("S7169C15", this);}
S7169C15 ::S7169C15(){ note_ctor("S7169C15", this);} // tgen

static void Test_S7169C15()
{
  extern Class_Descriptor cd_S7169C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7169C15, buf);
    S7169C15 *dp, &lv = *(dp=new (buf) S7169C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7169C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7169C15)");
    check_base_class_offset(lv, (S19763C18_nt*), 0, "S7169C15");
    check_field_offset(lv, s7169c15f0, ABISELECT(8,4), "S7169C15.s7169c15f0");
    test_class_info(&lv, &cd_S7169C15);
    dp->~S7169C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7169C15(Test_S7169C15, "S7169C15", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S7169C15C1Ev();
extern void _ZN8S7169C15D1Ev();
Name_Map name_map_S7169C15[] = {
  NSPAIR(_ZN8S7169C15C1Ev),
  NSPAIR(_ZN8S7169C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C18_nt;
extern VTBL_ENTRY _ZTI12S19763C18_nt[];
static Base_Class bases_S7169C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C18_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7169C15[];
extern void _ZN8S7169C15D1Ev();
extern void _ZN8S7169C15D0Ev();
static  VTBL_ENTRY vtc_S7169C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7169C15[0]),
  (VTBL_ENTRY)&_ZN8S7169C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7169C15D0Ev,
};
extern VTBL_ENTRY _ZTI8S7169C15[];
extern  VTBL_ENTRY _ZTV8S7169C15[];
Class_Descriptor cd_S7169C15 = {  "S7169C15", // class name
  bases_S7169C15, 1,
  &(vtc_S7169C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S7169C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7169C15),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7169C1  : S7169C2_nt , S7169C7_nt , S7169C14 {
  ::S7169C15 s7169c1f0;
  int s7169c1f1;
  virtual  ~S7169C1(); // _ZN7S7169C1D1Ev
  virtual void  v1(); // _ZN7S7169C12v1Ev
  virtual void  v2(); // _ZN7S7169C12v2Ev
  virtual void  v3(); // _ZN7S7169C12v3Ev
  virtual void  v4(); // _ZN7S7169C12v4Ev
  virtual void  v5(); // _ZN7S7169C12v5Ev
  virtual void  v6(); // _ZN7S7169C12v6Ev
  virtual void  v7(); // _ZN7S7169C12v7Ev
  S7169C1(); // tgen
};
//SIG(1 S7169C1) C1{ BC2{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}} BC7{ BC8{ BC9{ vd v23 v24 v25} vd v26 v27 v28 v29 v30 v31} vd v32 v33 v34 FC10{ m Fp Fi[2] FC11{ m}} FC12{ m FC13{ FL[4]}} Fc} BC14{ vd v35} vd v1 v2 v3 v4 v5 v6 v7 FC15{ BC16{} vd Fi[3]} Fi}


 S7169C1 ::~S7169C1(){ note_dtor("S7169C1", this);}
void  S7169C1 ::v1(){vfunc_called(this, "_ZN7S7169C12v1Ev");}
void  S7169C1 ::v2(){vfunc_called(this, "_ZN7S7169C12v2Ev");}
void  S7169C1 ::v3(){vfunc_called(this, "_ZN7S7169C12v3Ev");}
void  S7169C1 ::v4(){vfunc_called(this, "_ZN7S7169C12v4Ev");}
void  S7169C1 ::v5(){vfunc_called(this, "_ZN7S7169C12v5Ev");}
void  S7169C1 ::v6(){vfunc_called(this, "_ZN7S7169C12v6Ev");}
void  S7169C1 ::v7(){vfunc_called(this, "_ZN7S7169C12v7Ev");}
S7169C1 ::S7169C1(){ note_ctor("S7169C1", this);} // tgen

static void Test_S7169C1()
{
  extern Class_Descriptor cd_S7169C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,26)];
    init_test(&cd_S7169C1, buf);
    S7169C1 *dp, &lv = *(dp=new (buf) S7169C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S7169C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7169C1)");
    check_base_class_offset(lv, (S7169C2_nt*), 0, "S7169C1");
    check_base_class_offset(lv, (S7169C9_nt*)(S7169C8_nt*)(S7169C7_nt*), ABISELECT(32,20), "S7169C1");
    check_base_class_offset(lv, (S7169C8_nt*)(S7169C7_nt*), ABISELECT(32,20), "S7169C1");
    check_base_class_offset(lv, (S7169C7_nt*), ABISELECT(32,20), "S7169C1");
    check_base_class_offset(lv, (S7169C14*), ABISELECT(104,76), "S7169C1");
    check_field_offset(lv, s7169c1f0, ABISELECT(112,80), "S7169C1.s7169c1f0");
    check_field_offset(lv, s7169c1f1, ABISELECT(136,96), "S7169C1.s7169c1f1");
    test_class_info(&lv, &cd_S7169C1);
    dp->~S7169C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7169C1(Test_S7169C1, "S7169C1", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN7S7169C1C1Ev();
extern void _ZN7S7169C1D1Ev();
Name_Map name_map_S7169C1[] = {
  NSPAIR(_ZN7S7169C1C1Ev),
  NSPAIR(_ZN7S7169C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7169C2_nt;
extern VTBL_ENTRY _ZTI10S7169C2_nt[];
extern  VTBL_ENTRY _ZTV10S7169C2_nt[];
extern Class_Descriptor cd_S7169C9_nt;
extern VTBL_ENTRY _ZTI10S7169C9_nt[];
extern  VTBL_ENTRY _ZTV10S7169C9_nt[];
extern Class_Descriptor cd_S7169C8_nt;
extern VTBL_ENTRY _ZTI10S7169C8_nt[];
extern  VTBL_ENTRY _ZTV10S7169C8_nt[];
extern Class_Descriptor cd_S7169C7_nt;
extern VTBL_ENTRY _ZTI10S7169C7_nt[];
extern  VTBL_ENTRY _ZTV10S7169C7_nt[];
extern Class_Descriptor cd_S7169C14;
extern VTBL_ENTRY _ZTI8S7169C14[];
extern  VTBL_ENTRY _ZTV8S7169C14[];
static Base_Class bases_S7169C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7169C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7169C9_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7169C8_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7169C7_nt,    ABISELECT(32,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7169C14,    ABISELECT(104,76), //bcp->offset
    42, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7169C1[];
extern void _ZN7S7169C1D1Ev();
extern void _ZN7S7169C1D0Ev();
extern void _ZN10S7169C2_nt2v8Ev();
extern void _ZN10S7169C2_nt2v9Ev();
extern void _ZN10S7169C2_nt3v10Ev();
extern void _ZN10S7169C2_nt3v11Ev();
extern void _ZN10S7169C2_nt3v12Ev();
extern void _ZN10S7169C2_nt3v13Ev();
extern void _ZN10S7169C2_nt3v14Ev();
extern void _ZN10S7169C2_nt3v15Ev();
extern void _ZN10S7169C2_nt3v16Ev();
extern void _ZN10S7169C2_nt3v17Ev();
extern void _ZN10S7169C2_nt3v18Ev();
extern void _ZN10S7169C2_nt3v19Ev();
extern void _ZN10S7169C2_nt3v20Ev();
extern void _ZN10S7169C2_nt3v21Ev();
extern void _ZN10S7169C2_nt3v22Ev();
extern void _ZN7S7169C12v1Ev();
extern void _ZN7S7169C12v2Ev();
extern void _ZN7S7169C12v3Ev();
extern void _ZN7S7169C12v4Ev();
extern void _ZN7S7169C12v5Ev();
extern void _ZN7S7169C12v6Ev();
extern void _ZN7S7169C12v7Ev();
extern void ABISELECT(_ZThn32_N7S7169C1D1Ev,_ZThn20_N7S7169C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7169C1D0Ev,_ZThn20_N7S7169C1D0Ev)();
extern void _ZN10S7169C9_nt3v23Ev();
extern void _ZN10S7169C9_nt3v24Ev();
extern void _ZN10S7169C9_nt3v25Ev();
extern void _ZN10S7169C8_nt3v26Ev();
extern void _ZN10S7169C8_nt3v27Ev();
extern void _ZN10S7169C8_nt3v28Ev();
extern void _ZN10S7169C8_nt3v29Ev();
extern void _ZN10S7169C8_nt3v30Ev();
extern void _ZN10S7169C8_nt3v31Ev();
extern void _ZN10S7169C7_nt3v32Ev();
extern void _ZN10S7169C7_nt3v33Ev();
extern void _ZN10S7169C7_nt3v34Ev();
extern void ABISELECT(_ZThn104_N7S7169C1D1Ev,_ZThn76_N7S7169C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S7169C1D0Ev,_ZThn76_N7S7169C1D0Ev)();
extern void _ZN8S7169C143v35Ev();
static  VTBL_ENTRY vtc_S7169C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7169C1[0]),
  (VTBL_ENTRY)&_ZN7S7169C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7169C1D0Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN7S7169C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7169C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7169C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7169C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7169C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7169C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7169C12v7Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7169C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7169C1D1Ev,_ZThn20_N7S7169C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7169C1D0Ev,_ZThn20_N7S7169C1D0Ev),
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S7169C7_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S7169C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S7169C7_nt3v34Ev,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S7169C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S7169C1D1Ev,_ZThn76_N7S7169C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S7169C1D0Ev,_ZThn76_N7S7169C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7169C143v35Ev,
};
extern VTBL_ENTRY _ZTI7S7169C1[];
extern  VTBL_ENTRY _ZTV7S7169C1[];
Class_Descriptor cd_S7169C1 = {  "S7169C1", // class name
  bases_S7169C1, 5,
  &(vtc_S7169C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI7S7169C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7169C1),47, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5389C3_nt  {
  virtual  ~S5389C3_nt(); // _ZN10S5389C3_ntD1Ev
  virtual void  v7(); // _ZN10S5389C3_nt2v7Ev
  virtual void  v8(); // _ZN10S5389C3_nt2v8Ev
  virtual void  v9(); // _ZN10S5389C3_nt2v9Ev
  virtual void  v10(); // _ZN10S5389C3_nt3v10Ev
  virtual void  v11(); // _ZN10S5389C3_nt3v11Ev
  virtual void  v12(); // _ZN10S5389C3_nt3v12Ev
  virtual void  v13(); // _ZN10S5389C3_nt3v13Ev
  virtual void  v14(); // _ZN10S5389C3_nt3v14Ev
  virtual void  v15(); // _ZN10S5389C3_nt3v15Ev
  virtual void  v16(); // _ZN10S5389C3_nt3v16Ev
  S5389C3_nt(); // tgen
};
//SIG(-1 S5389C3_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10}


 S5389C3_nt ::~S5389C3_nt(){ note_dtor("S5389C3_nt", this);}
void  S5389C3_nt ::v7(){vfunc_called(this, "_ZN10S5389C3_nt2v7Ev");}
void  S5389C3_nt ::v8(){vfunc_called(this, "_ZN10S5389C3_nt2v8Ev");}
void  S5389C3_nt ::v9(){vfunc_called(this, "_ZN10S5389C3_nt2v9Ev");}
void  S5389C3_nt ::v10(){vfunc_called(this, "_ZN10S5389C3_nt3v10Ev");}
void  S5389C3_nt ::v11(){vfunc_called(this, "_ZN10S5389C3_nt3v11Ev");}
void  S5389C3_nt ::v12(){vfunc_called(this, "_ZN10S5389C3_nt3v12Ev");}
void  S5389C3_nt ::v13(){vfunc_called(this, "_ZN10S5389C3_nt3v13Ev");}
void  S5389C3_nt ::v14(){vfunc_called(this, "_ZN10S5389C3_nt3v14Ev");}
void  S5389C3_nt ::v15(){vfunc_called(this, "_ZN10S5389C3_nt3v15Ev");}
void  S5389C3_nt ::v16(){vfunc_called(this, "_ZN10S5389C3_nt3v16Ev");}
S5389C3_nt ::S5389C3_nt(){ note_ctor("S5389C3_nt", this);} // tgen

//skip512 S5389C3_nt

#else // __cplusplus

extern void _ZN10S5389C3_ntC1Ev();
extern void _ZN10S5389C3_ntD1Ev();
Name_Map name_map_S5389C3_nt[] = {
  NSPAIR(_ZN10S5389C3_ntC1Ev),
  NSPAIR(_ZN10S5389C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S5389C3_nt[];
extern void _ZN10S5389C3_ntD1Ev();
extern void _ZN10S5389C3_ntD0Ev();
extern void _ZN10S5389C3_nt2v7Ev();
extern void _ZN10S5389C3_nt2v8Ev();
extern void _ZN10S5389C3_nt2v9Ev();
extern void _ZN10S5389C3_nt3v10Ev();
extern void _ZN10S5389C3_nt3v11Ev();
extern void _ZN10S5389C3_nt3v12Ev();
extern void _ZN10S5389C3_nt3v13Ev();
extern void _ZN10S5389C3_nt3v14Ev();
extern void _ZN10S5389C3_nt3v15Ev();
extern void _ZN10S5389C3_nt3v16Ev();
static  VTBL_ENTRY vtc_S5389C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S5389C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S5389C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v16Ev,
};
extern VTBL_ENTRY _ZTI10S5389C3_nt[];
VTBL_ENTRY *P__ZTI10S5389C3_nt = _ZTI10S5389C3_nt; 
extern  VTBL_ENTRY _ZTV10S5389C3_nt[];
Class_Descriptor cd_S5389C3_nt = {  "S5389C3_nt", // class name
  0,0,//no base classes
  &(vtc_S5389C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S5389C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S5389C3_nt),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5389C4_nt  {
  virtual  ~S5389C4_nt(); // _ZN10S5389C4_ntD1Ev
  virtual void  v17(); // _ZN10S5389C4_nt3v17Ev
  virtual void  v18(); // _ZN10S5389C4_nt3v18Ev
  virtual void  v19(); // _ZN10S5389C4_nt3v19Ev
  virtual void  v20(); // _ZN10S5389C4_nt3v20Ev
  S5389C4_nt(); // tgen
};
//SIG(-1 S5389C4_nt) C1{ vd v1 v2 v3 v4}


 S5389C4_nt ::~S5389C4_nt(){ note_dtor("S5389C4_nt", this);}
void  S5389C4_nt ::v17(){vfunc_called(this, "_ZN10S5389C4_nt3v17Ev");}
void  S5389C4_nt ::v18(){vfunc_called(this, "_ZN10S5389C4_nt3v18Ev");}
void  S5389C4_nt ::v19(){vfunc_called(this, "_ZN10S5389C4_nt3v19Ev");}
void  S5389C4_nt ::v20(){vfunc_called(this, "_ZN10S5389C4_nt3v20Ev");}
S5389C4_nt ::S5389C4_nt(){ note_ctor("S5389C4_nt", this);} // tgen

//skip512 S5389C4_nt

#else // __cplusplus

extern void _ZN10S5389C4_ntC1Ev();
extern void _ZN10S5389C4_ntD1Ev();
Name_Map name_map_S5389C4_nt[] = {
  NSPAIR(_ZN10S5389C4_ntC1Ev),
  NSPAIR(_ZN10S5389C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S5389C4_nt[];
extern void _ZN10S5389C4_ntD1Ev();
extern void _ZN10S5389C4_ntD0Ev();
extern void _ZN10S5389C4_nt3v17Ev();
extern void _ZN10S5389C4_nt3v18Ev();
extern void _ZN10S5389C4_nt3v19Ev();
extern void _ZN10S5389C4_nt3v20Ev();
static  VTBL_ENTRY vtc_S5389C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S5389C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S5389C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v20Ev,
};
extern VTBL_ENTRY _ZTI10S5389C4_nt[];
VTBL_ENTRY *P__ZTI10S5389C4_nt = _ZTI10S5389C4_nt; 
extern  VTBL_ENTRY _ZTV10S5389C4_nt[];
Class_Descriptor cd_S5389C4_nt = {  "S5389C4_nt", // class name
  0,0,//no base classes
  &(vtc_S5389C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S5389C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S5389C4_nt),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5389C6_nt  {
  ::S3423C18 s5389c6f0;
  void *s5389c6f1;
  int s5389c6f2;
  void  mf5389c6(); // _ZN10S5389C6_nt8mf5389c6Ev
};
//SIG(-1 S5389C6_nt) C1{ m FC2{ BC3{ m Fp Fi[2]}} Fp Fi}


void  S5389C6_nt ::mf5389c6(){}

//skip512 S5389C6_nt

#else // __cplusplus

Class_Descriptor cd_S5389C6_nt = {  "S5389C6_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(32,20), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5389C5_nt  : S5389C6_nt {
};
//SIG(-1 S5389C5_nt) C1{ BC2{ m FC3{ BC4{ m Fp Fi[2]}} Fp Fi}}



//skip512 S5389C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S5389C6_nt;
static Base_Class bases_S5389C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5389C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5389C2  : S5389C3_nt , S5389C4_nt {
  void *s5389c2f0;
  ::S5389C5_nt s5389c2f1;
  ::S3423C12 s5389c2f2;
  void *s5389c2f3;
  ::S3423C8_nt s5389c2f4;
  ::S3423C8_nt s5389c2f5;
  __tsi64 s5389c2f6;
  ::S3423C8_nt s5389c2f7;
  int s5389c2f8;
  virtual void  v21(); // _ZN7S5389C23v21Ev
  virtual void  v22(); // _ZN7S5389C23v22Ev
  virtual void  v23(); // _ZN7S5389C23v23Ev
  virtual void  v24(); // _ZN7S5389C23v24Ev
  virtual void  v25(); // _ZN7S5389C23v25Ev
  virtual void  v26(); // _ZN7S5389C23v26Ev
  virtual void  v27(); // _ZN7S5389C23v27Ev
  virtual void  v28(); // _ZN7S5389C23v28Ev
  virtual void  v29(); // _ZN7S5389C23v29Ev
  virtual void  v30(); // _ZN7S5389C23v30Ev
  virtual void  v31(); // _ZN7S5389C23v31Ev
  virtual void  v32(); // _ZN7S5389C23v32Ev
  virtual void  v33(); // _ZN7S5389C23v33Ev
  virtual void  v34(); // _ZN7S5389C23v34Ev
  virtual void  v35(); // _ZN7S5389C23v35Ev
  virtual void  v36(); // _ZN7S5389C23v36Ev
  virtual void  v37(); // _ZN7S5389C23v37Ev
  virtual void  v38(); // _ZN7S5389C23v38Ev
  virtual void  v39(); // _ZN7S5389C23v39Ev
  virtual void  v40(); // _ZN7S5389C23v40Ev
  ~S5389C2(); // tgen
  S5389C2(); // tgen
};
//SIG(-1 S5389C2) C1{ BC2{ vd v21 v22 v23 v24 v25 v26 v27 v28 v29 v30} BC3{ vd v31 v32 v33 v34} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fp FC4{ BC5{ m FC6{ BC7{ m Fp Fi[2]}} Fp Fi}} FC8{ BC7} Fp FC9{ m Fi} FC9 FL FC9 Fi}


void  S5389C2 ::v21(){vfunc_called(this, "_ZN7S5389C23v21Ev");}
void  S5389C2 ::v22(){vfunc_called(this, "_ZN7S5389C23v22Ev");}
void  S5389C2 ::v23(){vfunc_called(this, "_ZN7S5389C23v23Ev");}
void  S5389C2 ::v24(){vfunc_called(this, "_ZN7S5389C23v24Ev");}
void  S5389C2 ::v25(){vfunc_called(this, "_ZN7S5389C23v25Ev");}
void  S5389C2 ::v26(){vfunc_called(this, "_ZN7S5389C23v26Ev");}
void  S5389C2 ::v27(){vfunc_called(this, "_ZN7S5389C23v27Ev");}
void  S5389C2 ::v28(){vfunc_called(this, "_ZN7S5389C23v28Ev");}
void  S5389C2 ::v29(){vfunc_called(this, "_ZN7S5389C23v29Ev");}
void  S5389C2 ::v30(){vfunc_called(this, "_ZN7S5389C23v30Ev");}
void  S5389C2 ::v31(){vfunc_called(this, "_ZN7S5389C23v31Ev");}
void  S5389C2 ::v32(){vfunc_called(this, "_ZN7S5389C23v32Ev");}
void  S5389C2 ::v33(){vfunc_called(this, "_ZN7S5389C23v33Ev");}
void  S5389C2 ::v34(){vfunc_called(this, "_ZN7S5389C23v34Ev");}
void  S5389C2 ::v35(){vfunc_called(this, "_ZN7S5389C23v35Ev");}
void  S5389C2 ::v36(){vfunc_called(this, "_ZN7S5389C23v36Ev");}
void  S5389C2 ::v37(){vfunc_called(this, "_ZN7S5389C23v37Ev");}
void  S5389C2 ::v38(){vfunc_called(this, "_ZN7S5389C23v38Ev");}
void  S5389C2 ::v39(){vfunc_called(this, "_ZN7S5389C23v39Ev");}
void  S5389C2 ::v40(){vfunc_called(this, "_ZN7S5389C23v40Ev");}
S5389C2 ::~S5389C2(){ note_dtor("S5389C2", this);} // tgen
S5389C2 ::S5389C2(){ note_ctor("S5389C2", this);} // tgen

static void Test_S5389C2()
{
  extern Class_Descriptor cd_S5389C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,19)];
    init_test(&cd_S5389C2, buf);
    S5389C2 *dp, &lv = *(dp=new (buf) S5389C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,72), "sizeof(S5389C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5389C2)");
    check_base_class_offset(lv, (S5389C3_nt*), 0, "S5389C2");
    check_base_class_offset(lv, (S5389C4_nt*), ABISELECT(8,4), "S5389C2");
    check_field_offset(lv, s5389c2f0, ABISELECT(16,8), "S5389C2.s5389c2f0");
    check_field_offset(lv, s5389c2f1, ABISELECT(24,12), "S5389C2.s5389c2f1");
    check_field_offset(lv, s5389c2f2, ABISELECT(56,32), "S5389C2.s5389c2f2");
    check_field_offset(lv, s5389c2f3, ABISELECT(72,44), "S5389C2.s5389c2f3");
    check_field_offset(lv, s5389c2f4, ABISELECT(80,48), "S5389C2.s5389c2f4");
    check_field_offset(lv, s5389c2f5, ABISELECT(84,52), "S5389C2.s5389c2f5");
    check_field_offset(lv, s5389c2f6, ABISELECT(88,56), "S5389C2.s5389c2f6");
    check_field_offset(lv, s5389c2f7, ABISELECT(96,64), "S5389C2.s5389c2f7");
    check_field_offset(lv, s5389c2f8, ABISELECT(100,68), "S5389C2.s5389c2f8");
    test_class_info(&lv, &cd_S5389C2);
    dp->~S5389C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5389C2(Test_S5389C2, "S5389C2", ABISELECT(104,72));

#else // __cplusplus

extern void _ZN7S5389C2C1Ev();
extern void _ZN7S5389C2D1Ev();
Name_Map name_map_S5389C2[] = {
  NSPAIR(_ZN7S5389C2C1Ev),
  NSPAIR(_ZN7S5389C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5389C3_nt;
extern VTBL_ENTRY _ZTI10S5389C3_nt[];
extern  VTBL_ENTRY _ZTV10S5389C3_nt[];
extern Class_Descriptor cd_S5389C4_nt;
extern VTBL_ENTRY _ZTI10S5389C4_nt[];
extern  VTBL_ENTRY _ZTV10S5389C4_nt[];
static Base_Class bases_S5389C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5389C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5389C4_nt,    ABISELECT(8,4), //bcp->offset
    34, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5389C2[];
extern void _ZN7S5389C2D1Ev();
extern void _ZN7S5389C2D0Ev();
extern void _ZN10S5389C3_nt2v7Ev();
extern void _ZN10S5389C3_nt2v8Ev();
extern void _ZN10S5389C3_nt2v9Ev();
extern void _ZN10S5389C3_nt3v10Ev();
extern void _ZN10S5389C3_nt3v11Ev();
extern void _ZN10S5389C3_nt3v12Ev();
extern void _ZN10S5389C3_nt3v13Ev();
extern void _ZN10S5389C3_nt3v14Ev();
extern void _ZN10S5389C3_nt3v15Ev();
extern void _ZN10S5389C3_nt3v16Ev();
extern void _ZN7S5389C23v21Ev();
extern void _ZN7S5389C23v22Ev();
extern void _ZN7S5389C23v23Ev();
extern void _ZN7S5389C23v24Ev();
extern void _ZN7S5389C23v25Ev();
extern void _ZN7S5389C23v26Ev();
extern void _ZN7S5389C23v27Ev();
extern void _ZN7S5389C23v28Ev();
extern void _ZN7S5389C23v29Ev();
extern void _ZN7S5389C23v30Ev();
extern void _ZN7S5389C23v31Ev();
extern void _ZN7S5389C23v32Ev();
extern void _ZN7S5389C23v33Ev();
extern void _ZN7S5389C23v34Ev();
extern void _ZN7S5389C23v35Ev();
extern void _ZN7S5389C23v36Ev();
extern void _ZN7S5389C23v37Ev();
extern void _ZN7S5389C23v38Ev();
extern void _ZN7S5389C23v39Ev();
extern void _ZN7S5389C23v40Ev();
extern void ABISELECT(_ZThn8_N7S5389C2D1Ev,_ZThn4_N7S5389C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S5389C2D0Ev,_ZThn4_N7S5389C2D0Ev)();
extern void _ZN10S5389C4_nt3v17Ev();
extern void _ZN10S5389C4_nt3v18Ev();
extern void _ZN10S5389C4_nt3v19Ev();
extern void _ZN10S5389C4_nt3v20Ev();
static  VTBL_ENTRY vtc_S5389C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5389C2[0]),
  (VTBL_ENTRY)&_ZN7S5389C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5389C2D0Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v21Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v22Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v23Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v24Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v25Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v26Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v27Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v28Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v29Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v30Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v31Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v32Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v33Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v34Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v35Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v36Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v37Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v38Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v39Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v40Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S5389C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5389C2D1Ev,_ZThn4_N7S5389C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5389C2D0Ev,_ZThn4_N7S5389C2D0Ev),
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v20Ev,
};
extern VTBL_ENTRY _ZTI7S5389C2[];
extern  VTBL_ENTRY _ZTV7S5389C2[];
Class_Descriptor cd_S5389C2 = {  "S5389C2", // class name
  bases_S5389C2, 2,
  &(vtc_S5389C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,72), // object size
  NSPAIRA(_ZTI7S5389C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5389C2),42, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5389C1  : S5389C2 {
  __tsi64 s5389c1f0;
  int s5389c1f1;
  void *s5389c1f2;
  int s5389c1f3[2];
  virtual  ~S5389C1(); // _ZN7S5389C1D1Ev
  virtual void  v1(); // _ZN7S5389C12v1Ev
  virtual void  v2(); // _ZN7S5389C12v2Ev
  virtual void  v3(); // _ZN7S5389C12v3Ev
  virtual void  v4(); // _ZN7S5389C12v4Ev
  virtual void  v5(); // _ZN7S5389C12v5Ev
  virtual void  v6(); // _ZN7S5389C12v6Ev
  S5389C1(); // tgen
};
//SIG(1 S5389C1) C1{ BC2{ BC3{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15 v16} BC4{ vd v17 v18 v19 v20} v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 Fp FC5{ BC6{ m FC7{ BC8{ m Fp Fi[2]}} Fp Fi}} FC9{ BC8} Fp FC10{ m Fi} FC10 FL FC10 Fi} vd v1 v2 v3 v4 v5 v6 FL Fi Fp Fi[2]}


 S5389C1 ::~S5389C1(){ note_dtor("S5389C1", this);}
void  S5389C1 ::v1(){vfunc_called(this, "_ZN7S5389C12v1Ev");}
void  S5389C1 ::v2(){vfunc_called(this, "_ZN7S5389C12v2Ev");}
void  S5389C1 ::v3(){vfunc_called(this, "_ZN7S5389C12v3Ev");}
void  S5389C1 ::v4(){vfunc_called(this, "_ZN7S5389C12v4Ev");}
void  S5389C1 ::v5(){vfunc_called(this, "_ZN7S5389C12v5Ev");}
void  S5389C1 ::v6(){vfunc_called(this, "_ZN7S5389C12v6Ev");}
S5389C1 ::S5389C1(){ note_ctor("S5389C1", this);} // tgen

static void Test_S5389C1()
{
  extern Class_Descriptor cd_S5389C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,25)];
    init_test(&cd_S5389C1, buf);
    S5389C1 *dp, &lv = *(dp=new (buf) S5389C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,96), "sizeof(S5389C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5389C1)");
    check_base_class_offset(lv, (S5389C3_nt*)(S5389C2*), 0, "S5389C1");
    check_base_class_offset(lv, (S5389C4_nt*)(S5389C2*), ABISELECT(8,4), "S5389C1");
    check_base_class_offset(lv, (S5389C2*), 0, "S5389C1");
    check_field_offset(lv, s5389c1f0, ABISELECT(104,72), "S5389C1.s5389c1f0");
    check_field_offset(lv, s5389c1f1, ABISELECT(112,80), "S5389C1.s5389c1f1");
    check_field_offset(lv, s5389c1f2, ABISELECT(120,84), "S5389C1.s5389c1f2");
    check_field_offset(lv, s5389c1f3, ABISELECT(128,88), "S5389C1.s5389c1f3");
    test_class_info(&lv, &cd_S5389C1);
    dp->~S5389C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5389C1(Test_S5389C1, "S5389C1", ABISELECT(136,96));

#else // __cplusplus

extern void _ZN7S5389C1C1Ev();
extern void _ZN7S5389C1D1Ev();
Name_Map name_map_S5389C1[] = {
  NSPAIR(_ZN7S5389C1C1Ev),
  NSPAIR(_ZN7S5389C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5389C3_nt;
extern VTBL_ENTRY _ZTI10S5389C3_nt[];
extern  VTBL_ENTRY _ZTV10S5389C3_nt[];
extern Class_Descriptor cd_S5389C4_nt;
extern VTBL_ENTRY _ZTI10S5389C4_nt[];
extern  VTBL_ENTRY _ZTV10S5389C4_nt[];
extern Class_Descriptor cd_S5389C2;
extern VTBL_ENTRY _ZTI7S5389C2[];
extern  VTBL_ENTRY _ZTV7S5389C2[];
static Base_Class bases_S5389C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5389C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5389C4_nt,    ABISELECT(8,4), //bcp->offset
    40, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5389C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5389C1[];
extern void _ZN7S5389C1D1Ev();
extern void _ZN7S5389C1D0Ev();
extern void _ZN10S5389C3_nt2v7Ev();
extern void _ZN10S5389C3_nt2v8Ev();
extern void _ZN10S5389C3_nt2v9Ev();
extern void _ZN10S5389C3_nt3v10Ev();
extern void _ZN10S5389C3_nt3v11Ev();
extern void _ZN10S5389C3_nt3v12Ev();
extern void _ZN10S5389C3_nt3v13Ev();
extern void _ZN10S5389C3_nt3v14Ev();
extern void _ZN10S5389C3_nt3v15Ev();
extern void _ZN10S5389C3_nt3v16Ev();
extern void _ZN7S5389C23v21Ev();
extern void _ZN7S5389C23v22Ev();
extern void _ZN7S5389C23v23Ev();
extern void _ZN7S5389C23v24Ev();
extern void _ZN7S5389C23v25Ev();
extern void _ZN7S5389C23v26Ev();
extern void _ZN7S5389C23v27Ev();
extern void _ZN7S5389C23v28Ev();
extern void _ZN7S5389C23v29Ev();
extern void _ZN7S5389C23v30Ev();
extern void _ZN7S5389C23v31Ev();
extern void _ZN7S5389C23v32Ev();
extern void _ZN7S5389C23v33Ev();
extern void _ZN7S5389C23v34Ev();
extern void _ZN7S5389C23v35Ev();
extern void _ZN7S5389C23v36Ev();
extern void _ZN7S5389C23v37Ev();
extern void _ZN7S5389C23v38Ev();
extern void _ZN7S5389C23v39Ev();
extern void _ZN7S5389C23v40Ev();
extern void _ZN7S5389C12v1Ev();
extern void _ZN7S5389C12v2Ev();
extern void _ZN7S5389C12v3Ev();
extern void _ZN7S5389C12v4Ev();
extern void _ZN7S5389C12v5Ev();
extern void _ZN7S5389C12v6Ev();
extern void ABISELECT(_ZThn8_N7S5389C1D1Ev,_ZThn4_N7S5389C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S5389C1D0Ev,_ZThn4_N7S5389C1D0Ev)();
extern void _ZN10S5389C4_nt3v17Ev();
extern void _ZN10S5389C4_nt3v18Ev();
extern void _ZN10S5389C4_nt3v19Ev();
extern void _ZN10S5389C4_nt3v20Ev();
static  VTBL_ENTRY vtc_S5389C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5389C1[0]),
  (VTBL_ENTRY)&_ZN7S5389C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5389C1D0Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v21Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v22Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v23Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v24Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v25Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v26Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v27Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v28Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v29Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v30Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v31Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v32Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v33Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v34Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v35Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v36Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v37Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v38Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v39Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v40Ev,
  (VTBL_ENTRY)&_ZN7S5389C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5389C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5389C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5389C12v4Ev,
  (VTBL_ENTRY)&_ZN7S5389C12v5Ev,
  (VTBL_ENTRY)&_ZN7S5389C12v6Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S5389C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5389C1D1Ev,_ZThn4_N7S5389C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5389C1D0Ev,_ZThn4_N7S5389C1D0Ev),
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v20Ev,
};
extern VTBL_ENTRY _ZTI7S5389C1[];
extern  VTBL_ENTRY _ZTV7S5389C1[];
Class_Descriptor cd_S5389C1 = {  "S5389C1", // class name
  bases_S5389C1, 3,
  &(vtc_S5389C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,96), // object size
  NSPAIRA(_ZTI7S5389C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5389C1),48, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7788C4  {
  void *s7788c4f0;
  int s7788c4f1[2];
  void *s7788c4f2;
  int s7788c4f3;
  virtual void  v3(); // _ZN7S7788C42v3Ev
  ~S7788C4(); // tgen
  S7788C4(); // tgen
};
//SIG(-1 S7788C4) C1{ v1 Fp Fi[2] Fp Fi}


void  S7788C4 ::v3(){vfunc_called(this, "_ZN7S7788C42v3Ev");}
S7788C4 ::~S7788C4(){ note_dtor("S7788C4", this);} // tgen
S7788C4 ::S7788C4(){ note_ctor("S7788C4", this);} // tgen

static void Test_S7788C4()
{
  extern Class_Descriptor cd_S7788C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7788C4, buf);
    S7788C4 *dp, &lv = *(dp=new (buf) S7788C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7788C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7788C4)");
    check_field_offset(lv, s7788c4f0, ABISELECT(8,4), "S7788C4.s7788c4f0");
    check_field_offset(lv, s7788c4f1, ABISELECT(16,8), "S7788C4.s7788c4f1");
    check_field_offset(lv, s7788c4f2, ABISELECT(24,16), "S7788C4.s7788c4f2");
    check_field_offset(lv, s7788c4f3, ABISELECT(32,20), "S7788C4.s7788c4f3");
    test_class_info(&lv, &cd_S7788C4);
    dp->~S7788C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7788C4(Test_S7788C4, "S7788C4", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7788C4C1Ev();
extern void _ZN7S7788C4D1Ev();
Name_Map name_map_S7788C4[] = {
  NSPAIR(_ZN7S7788C4C1Ev),
  NSPAIR(_ZN7S7788C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7788C4[];
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY vtc_S7788C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C4[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern VTBL_ENTRY _ZTI7S7788C4[];
extern  VTBL_ENTRY _ZTV7S7788C4[];
Class_Descriptor cd_S7788C4 = {  "S7788C4", // class name
  0,0,//no base classes
  &(vtc_S7788C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7788C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7788C4),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7788C5  {
  long double s7788c5f0[6];
  void *s7788c5f1[6];
  long s7788c5f2[6];
  short s7788c5f3;
  char s7788c5f4;
  void *s7788c5f5;
  virtual void  v4(); // _ZN7S7788C52v4Ev
  ~S7788C5(); // tgen
  S7788C5(); // tgen
};
//SIG(-1 S7788C5) C1{ v1 FD[6] Fp[6] Fl[6] Fs Fc Fp}


void  S7788C5 ::v4(){vfunc_called(this, "_ZN7S7788C52v4Ev");}
S7788C5 ::~S7788C5(){ note_dtor("S7788C5", this);} // tgen
S7788C5 ::S7788C5(){ note_ctor("S7788C5", this);} // tgen

static void Test_S7788C5()
{
  extern Class_Descriptor cd_S7788C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,34)];
    init_test(&cd_S7788C5, buf);
    S7788C5 *dp, &lv = *(dp=new (buf) S7788C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,132), "sizeof(S7788C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7788C5)");
    check_field_offset(lv, s7788c5f0, ABISELECT(16,4), "S7788C5.s7788c5f0");
    check_field_offset(lv, s7788c5f1, ABISELECT(112,76), "S7788C5.s7788c5f1");
    check_field_offset(lv, s7788c5f2, ABISELECT(160,100), "S7788C5.s7788c5f2");
    check_field_offset(lv, s7788c5f3, ABISELECT(208,124), "S7788C5.s7788c5f3");
    check_field_offset(lv, s7788c5f4, ABISELECT(210,126), "S7788C5.s7788c5f4");
    check_field_offset(lv, s7788c5f5, ABISELECT(216,128), "S7788C5.s7788c5f5");
    test_class_info(&lv, &cd_S7788C5);
    dp->~S7788C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7788C5(Test_S7788C5, "S7788C5", ABISELECT(224,132));

#else // __cplusplus

extern void _ZN7S7788C5C1Ev();
extern void _ZN7S7788C5D1Ev();
Name_Map name_map_S7788C5[] = {
  NSPAIR(_ZN7S7788C5C1Ev),
  NSPAIR(_ZN7S7788C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7788C5[];
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY vtc_S7788C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C5[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
Class_Descriptor cd_S7788C5 = {  "S7788C5", // class name
  0,0,//no base classes
  &(vtc_S7788C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,132), // object size
  NSPAIRA(_ZTI7S7788C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7788C5),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7788C6  {
  short s7788c6f0:12;
  int s7788c6f1;
  char s7788c6f2;
  virtual void  v5(); // _ZN7S7788C62v5Ev
  virtual void  v6(); // _ZN7S7788C62v6Ev
  ~S7788C6(); // tgen
  S7788C6(); // tgen
};
//SIG(-1 S7788C6) C1{ v1 v2 Fs:12 Fi Fc}


void  S7788C6 ::v5(){vfunc_called(this, "_ZN7S7788C62v5Ev");}
void  S7788C6 ::v6(){vfunc_called(this, "_ZN7S7788C62v6Ev");}
S7788C6 ::~S7788C6(){ note_dtor("S7788C6", this);} // tgen
S7788C6 ::S7788C6(){ note_ctor("S7788C6", this);} // tgen

static void Test_S7788C6()
{
  extern Class_Descriptor cd_S7788C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7788C6, buf);
    S7788C6 *dp, &lv = *(dp=new (buf) S7788C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7788C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7788C6)");
    set_bf_and_test(lv, s7788c6f0, ABISELECT(8,4), 0, 12, 1, "S7788C6");
    set_bf_and_test(lv, s7788c6f0, ABISELECT(8,4), 0, 12, hide_sll(1LL<<11), "S7788C6");
    check_field_offset(lv, s7788c6f1, ABISELECT(12,8), "S7788C6.s7788c6f1");
    check_field_offset(lv, s7788c6f2, ABISELECT(16,12), "S7788C6.s7788c6f2");
    test_class_info(&lv, &cd_S7788C6);
    dp->~S7788C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7788C6(Test_S7788C6, "S7788C6", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7788C6C1Ev();
extern void _ZN7S7788C6D1Ev();
Name_Map name_map_S7788C6[] = {
  NSPAIR(_ZN7S7788C6C1Ev),
  NSPAIR(_ZN7S7788C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7788C6[];
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY vtc_S7788C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C6[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
Class_Descriptor cd_S7788C6 = {  "S7788C6", // class name
  0,0,//no base classes
  &(vtc_S7788C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7788C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7788C6),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7788C8  : S7788C5 , S7788C6 {
  long double s7788c8f0;
  __tsi64 s7788c8f1;
  ::S7788C6 s7788c8f2;
  __tsi64 s7788c8f3[2];
  void *s7788c8f4[3];
  int s7788c8f5;
  virtual void  v7(); // _ZN7S7788C82v7Ev
  ~S7788C8(); // tgen
  S7788C8(); // tgen
};
//SIG(-1 S7788C8) C1{ BC2{ v2 FD[6] Fp[6] Fl[6] Fs Fc Fp} BC3{ v3 v4 Fs:12 Fi Fc} v1 FD FL FC3 FL[2] Fp[3] Fi}


void  S7788C8 ::v7(){vfunc_called(this, "_ZN7S7788C82v7Ev");}
S7788C8 ::~S7788C8(){ note_dtor("S7788C8", this);} // tgen
S7788C8 ::S7788C8(){ note_ctor("S7788C8", this);} // tgen

static void Test_S7788C8()
{
  extern Class_Descriptor cd_S7788C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,55)];
    init_test(&cd_S7788C8, buf);
    S7788C8 *dp, &lv = *(dp=new (buf) S7788C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,216), "sizeof(S7788C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7788C8)");
    check_base_class_offset(lv, (S7788C5*), 0, "S7788C8");
    check_base_class_offset(lv, (S7788C6*), ABISELECT(224,132), "S7788C8");
    check_field_offset(lv, s7788c8f0, ABISELECT(256,148), "S7788C8.s7788c8f0");
    check_field_offset(lv, s7788c8f1, ABISELECT(272,160), "S7788C8.s7788c8f1");
    check_field_offset(lv, s7788c8f2, ABISELECT(280,168), "S7788C8.s7788c8f2");
    check_field_offset(lv, s7788c8f3, ABISELECT(304,184), "S7788C8.s7788c8f3");
    check_field_offset(lv, s7788c8f4, ABISELECT(320,200), "S7788C8.s7788c8f4");
    check_field_offset(lv, s7788c8f5, ABISELECT(344,212), "S7788C8.s7788c8f5");
    test_class_info(&lv, &cd_S7788C8);
    dp->~S7788C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7788C8(Test_S7788C8, "S7788C8", ABISELECT(352,216));

#else // __cplusplus

extern void _ZN7S7788C8C1Ev();
extern void _ZN7S7788C8D1Ev();
Name_Map name_map_S7788C8[] = {
  NSPAIR(_ZN7S7788C8C1Ev),
  NSPAIR(_ZN7S7788C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
static Base_Class bases_S7788C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7788C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7788C6,    ABISELECT(224,132), //bcp->offset
    4, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7788C8[];
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY vtc_S7788C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C8[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI7S7788C8[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern VTBL_ENTRY _ZTI7S7788C8[];
extern  VTBL_ENTRY _ZTV7S7788C8[];
Class_Descriptor cd_S7788C8 = {  "S7788C8", // class name
  bases_S7788C8, 2,
  &(vtc_S7788C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,216), // object size
  NSPAIRA(_ZTI7S7788C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7788C8),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7788C7  : virtual S7788C4 , virtual S7788C5 , virtual S7788C6 , virtual S7788C8 {
  int s7788c7f0;
  ::S7788C5 s7788c7f1;
  int s7788c7f2;
  short s7788c7f3:2;
  void *s7788c7f4;
  int s7788c7f5;
  virtual  ~S7788C7(); // _ZN7S7788C7D2Ev
  S7788C7(); // tgen
};
//SIG(-1 S7788C7) C1{ VBC2{ v1 Fp Fi[2] Fp Fi} VBC3{ v2 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC4{ v3 v4 Fs:12 Fi Fc} VBC5{ BC3 BC4 v5 FD FL FC4 FL[2] Fp[3] Fi} vd Fi FC3 Fi Fs:2 Fp Fi}


 S7788C7 ::~S7788C7(){ note_dtor("S7788C7", this);}
S7788C7 ::S7788C7(){ note_ctor("S7788C7", this);} // tgen

static void Test_S7788C7()
{
  extern Class_Descriptor cd_S7788C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(58,137)];
    init_test(&cd_S7788C7, buf);
    S7788C7 *dp, &lv = *(dp=new (buf) S7788C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(912,544), "sizeof(S7788C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7788C7)");
    check_base_class_offset(lv, (S7788C4*), ABISELECT(264,156), "S7788C7");
    /*is_ambiguous_... S7788C7::S7788C5 */ AMB_check_base_class_offset(lv, (S7788C5*), ABISELECT(304,180), "S7788C7");
    /*is_ambiguous_... S7788C7::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*), ABISELECT(528,312), "S7788C7");
    check_base_class_offset(lv, (S7788C5*)(S7788C8*), ABISELECT(560,328), "S7788C7");
    check_base_class_offset(lv, (S7788C6*)(S7788C8*), ABISELECT(784,460), "S7788C7");
    check_base_class_offset(lv, (S7788C8*), ABISELECT(560,328), "S7788C7");
    check_field_offset(lv, s7788c7f0, ABISELECT(8,4), "S7788C7.s7788c7f0");
    check_field_offset(lv, s7788c7f1, ABISELECT(16,8), "S7788C7.s7788c7f1");
    check_field_offset(lv, s7788c7f2, ABISELECT(240,140), "S7788C7.s7788c7f2");
    set_bf_and_test(lv, s7788c7f3, ABISELECT(244,144), 0, 2, 1, "S7788C7");
    set_bf_and_test(lv, s7788c7f3, ABISELECT(244,144), 0, 2, hide_sll(1LL<<1), "S7788C7");
    check_field_offset(lv, s7788c7f4, ABISELECT(248,148), "S7788C7.s7788c7f4");
    check_field_offset(lv, s7788c7f5, ABISELECT(256,152), "S7788C7.s7788c7f5");
    test_class_info(&lv, &cd_S7788C7);
    dp->~S7788C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7788C7(Test_S7788C7, "S7788C7", ABISELECT(912,544));

#else // __cplusplus

extern void _ZN7S7788C7C1Ev();
extern void _ZN7S7788C7D2Ev();
Name_Map name_map_S7788C7[] = {
  NSPAIR(_ZN7S7788C7C1Ev),
  NSPAIR(_ZN7S7788C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7788C4;
extern VTBL_ENTRY _ZTI7S7788C4[];
extern  VTBL_ENTRY _ZTV7S7788C4[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C8;
extern VTBL_ENTRY _ZTI7S7788C8[];
extern  VTBL_ENTRY _ZTV7S7788C8[];
static Base_Class bases_S7788C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7788C4,    ABISELECT(264,156), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7788C5,    ABISELECT(304,180), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7788C6,    ABISELECT(528,312), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7788C5,    ABISELECT(560,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7788C6,    ABISELECT(784,460), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7788C8,    ABISELECT(560,328), //bcp->offset
    22, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7788C7[];
extern void _ZN7S7788C7D1Ev();
extern void _ZN7S7788C7D0Ev();
extern void _ZN7S7788C42v3Ev();
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY vtc_S7788C7[] = {
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C7D0Ev,
  0,
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  0,
  0,
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
  ABISELECT(-784,-460),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern VTBL_ENTRY _ZTV7S7788C7[];
static  VTT_ENTRY vtt_S7788C7[] = {
  {&(_ZTV7S7788C7[6]),  6,34},
  {&(_ZTV7S7788C7[11]),  11,34},
  {&(_ZTV7S7788C7[15]),  15,34},
  {&(_ZTV7S7788C7[20]),  20,34},
  {&(_ZTV7S7788C7[28]),  28,34},
  {&(_ZTV7S7788C7[32]),  32,34},
};
extern VTBL_ENTRY _ZTI7S7788C7[];
extern  VTBL_ENTRY _ZTV7S7788C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C7[];
Class_Descriptor cd_S7788C7 = {  "S7788C7", // class name
  bases_S7788C7, 6,
  &(vtc_S7788C7[0]), // expected_vtbl_contents
  &(vtt_S7788C7[0]), // expected_vtt_contents
  ABISELECT(912,544), // object size
  NSPAIRA(_ZTI7S7788C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7788C7),34, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7788C7),6, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7788C9  : virtual S7788C7 , S7788C6 {
  int s7788c9f0[6];
  __tsi64 s7788c9f1;
  int s7788c9f2;
  void *s7788c9f3;
  long double s7788c9f4;
  virtual  ~S7788C9(); // _ZN7S7788C9D2Ev
  virtual void  v8(); // _ZN7S7788C92v8Ev
  S7788C9(); // tgen
};
//SIG(-1 S7788C9) C1{ VBC2{ VBC3{ v2 Fp Fi[2] Fp Fi} VBC4{ v3 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC5{ v4 v5 Fs:12 Fi Fc} VBC6{ BC4 BC5 v6 FD FL FC5 FL[2] Fp[3] Fi} vd Fi FC4 Fi Fs:2 Fp Fi} BC5 vd v1 Fi[6] FL Fi Fp FD}


 S7788C9 ::~S7788C9(){ note_dtor("S7788C9", this);}
void  S7788C9 ::v8(){vfunc_called(this, "_ZN7S7788C92v8Ev");}
S7788C9 ::S7788C9(){ note_ctor("S7788C9", this);} // tgen

static void Test_S7788C9()
{
  extern Class_Descriptor cd_S7788C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(64,154)];
    init_test(&cd_S7788C9, buf);
    S7788C9 *dp, &lv = *(dp=new (buf) S7788C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1008,612), "sizeof(S7788C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7788C9)");
    check_base_class_offset(lv, (S7788C4*)(S7788C7*), ABISELECT(360,224), "S7788C9");
    /*is_ambiguous_... S7788C7::S7788C5 */ AMB_check_base_class_offset(lv, (S7788C5*)(S7788C7*), ABISELECT(400,248), "S7788C9");
    /*is_ambiguous_... S7788C7::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C7*), ABISELECT(624,380), "S7788C9");
    check_base_class_offset(lv, (S7788C5*)(S7788C8*), ABISELECT(656,396), "S7788C9");
    check_base_class_offset(lv, (S7788C6*)(S7788C8*), ABISELECT(880,528), "S7788C9");
    check_base_class_offset(lv, (S7788C8*)(S7788C7*), ABISELECT(656,396), "S7788C9");
    check_base_class_offset(lv, (S7788C7*), ABISELECT(96,68), "S7788C9");
    /*is_ambiguous_... S7788C9::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*), 0, "S7788C9");
    check_field_offset(lv, s7788c9f0, ABISELECT(20,16), "S7788C9.s7788c9f0");
    check_field_offset(lv, s7788c9f1, ABISELECT(48,40), "S7788C9.s7788c9f1");
    check_field_offset(lv, s7788c9f2, ABISELECT(56,48), "S7788C9.s7788c9f2");
    check_field_offset(lv, s7788c9f3, ABISELECT(64,52), "S7788C9.s7788c9f3");
    check_field_offset(lv, s7788c9f4, ABISELECT(80,56), "S7788C9.s7788c9f4");
    test_class_info(&lv, &cd_S7788C9);
    dp->~S7788C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7788C9(Test_S7788C9, "S7788C9", ABISELECT(1008,612));

#else // __cplusplus

extern void _ZN7S7788C9C1Ev();
extern void _ZN7S7788C9D2Ev();
Name_Map name_map_S7788C9[] = {
  NSPAIR(_ZN7S7788C9C1Ev),
  NSPAIR(_ZN7S7788C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7788C4;
extern VTBL_ENTRY _ZTI7S7788C4[];
extern  VTBL_ENTRY _ZTV7S7788C4[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C8;
extern VTBL_ENTRY _ZTI7S7788C8[];
extern  VTBL_ENTRY _ZTV7S7788C8[];
extern Class_Descriptor cd_S7788C7;
extern VTBL_ENTRY _ZTI7S7788C7[];
extern  VTBL_ENTRY _ZTV7S7788C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C7[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
static Base_Class bases_S7788C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7788C4,    ABISELECT(360,224), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C5,    ABISELECT(400,248), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C6,    ABISELECT(624,380), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C5,    ABISELECT(656,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7788C6,    ABISELECT(880,528), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7788C8,    ABISELECT(656,396), //bcp->offset
    35, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C7,    ABISELECT(96,68), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7788C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7788C9[];
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C9D1Ev();
extern void _ZN7S7788C9D0Ev();
extern void _ZN7S7788C92v8Ev();
extern void ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev)();
extern void ABISELECT(_ZThn96_N7S7788C9D1Ev,_ZThn68_N7S7788C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev)();
extern void ABISELECT(_ZThn96_N7S7788C9D0Ev,_ZThn68_N7S7788C9D0Ev)() __attribute__((weak));
extern void _ZN7S7788C42v3Ev();
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY vtc_S7788C9[] = {
  ABISELECT(656,396),
  ABISELECT(624,380),
  ABISELECT(400,248),
  ABISELECT(360,224),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
  ABISELECT(-96,-68),
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev),
  0,
  ABISELECT(-360,-224),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
  0,
  ABISELECT(-400,-248),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  0,
  0,
  ABISELECT(-624,-380),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-656,-396),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
  ABISELECT(-880,-528),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern VTBL_ENTRY _ZTV7S7788C9[];
extern void _ZN7S7788C7D1Ev();
extern void _ZN7S7788C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C9[] = {
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C7D0Ev,
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C7__7S7788C9[] = {
  0,
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C7__7S7788C9[] = {
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C7__7S7788C9[] = {
  0,
  0,
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C7__7S7788C9[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C7__7S7788C9[] = {
  ABISELECT(-784,-460),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
static  VTT_ENTRY vtt_S7788C9[] = {
  {&(_ZTV7S7788C9[7]),  7,47},
  {&(_ZTV7S7788C9[19]),  19,47},
  {&(_ZTV7S7788C9[24]),  24,47},
  {&(_ZTV7S7788C9[28]),  28,47},
  {&(_ZTV7S7788C9[33]),  33,47},
  {&(_ZTV7S7788C9[41]),  41,47},
  {&(_ZTV7S7788C9[45]),  45,47},
  {&(_tg__ZTV7S7788C7__7S7788C9[6]),  6,8},
  {&(_tg__ZTV7S7788C4__7S7788C7__7S7788C9[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C7__7S7788C9[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C7__7S7788C9[4]),  4,6},
  {&(_tg__ZTV7S7788C8__7S7788C7__7S7788C9[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C7__7S7788C9[2]),  2,4},
};
extern VTBL_ENTRY _ZTI7S7788C9[];
extern  VTBL_ENTRY _ZTV7S7788C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C9[];
static VTBL_ENTRY alt_thunk_names150[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7788C9D0Ev,_ZThn68_N7S7788C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7788C9D1Ev,_ZThn68_N7S7788C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7788C9 = {  "S7788C9", // class name
  bases_S7788C9, 8,
  &(vtc_S7788C9[0]), // expected_vtbl_contents
  &(vtt_S7788C9[0]), // expected_vtt_contents
  ABISELECT(1008,612), // object size
  NSPAIRA(_ZTI7S7788C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7788C9),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7788C9),13, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names150,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7788C3  : virtual S7788C4 , virtual S7788C5 , virtual S7788C6 , virtual S7788C7 , S7788C9 {
  virtual  ~S7788C3(); // _ZN7S7788C3D2Ev
  virtual void  v9(); // _ZN7S7788C32v9Ev
  virtual void  v10(); // _ZN7S7788C33v10Ev
  S7788C3(); // tgen
};
//SIG(-1 S7788C3) C1{ VBC2{ v3 Fp Fi[2] Fp Fi} VBC3{ v4 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC4{ v5 v6 Fs:12 Fi Fc} VBC5{ VBC2 VBC3 VBC4 VBC6{ BC3 BC4 v7 FD FL FC4 FL[2] Fp[3] Fi} vd Fi FC3 Fi Fs:2 Fp Fi} BC7{ VBC5 BC4 vd v8 Fi[6] FL Fi Fp FD} vd v1 v2}


 S7788C3 ::~S7788C3(){ note_dtor("S7788C3", this);}
void  S7788C3 ::v9(){vfunc_called(this, "_ZN7S7788C32v9Ev");}
void  S7788C3 ::v10(){vfunc_called(this, "_ZN7S7788C33v10Ev");}
S7788C3 ::S7788C3(){ note_ctor("S7788C3", this);} // tgen

static void Test_S7788C3()
{
  extern Class_Descriptor cd_S7788C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(65,154)];
    init_test(&cd_S7788C3, buf);
    S7788C3 *dp, &lv = *(dp=new (buf) S7788C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1024,612), "sizeof(S7788C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7788C3)");
    check_base_class_offset(lv, (S7788C4*), ABISELECT(96,68), "S7788C3");
    check_base_class_offset(lv, (S7788C4*)(S7788C7*), ABISELECT(96,68), "S7788C3");
    /*is_ambiguous_... S7788C3::S7788C5 */ AMB_check_base_class_offset(lv, (S7788C5*), ABISELECT(144,92), "S7788C3");
    /*is_ambiguous_... S7788C7::S7788C5 */ AMB_check_base_class_offset(lv, (S7788C5*)(S7788C7*), ABISELECT(144,92), "S7788C3");
    /*is_ambiguous_... S7788C3::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*), ABISELECT(368,224), "S7788C3");
    /*is_ambiguous_... S7788C7::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C7*), ABISELECT(368,224), "S7788C3");
    check_base_class_offset(lv, (S7788C5*)(S7788C8*), ABISELECT(672,396), "S7788C3");
    check_base_class_offset(lv, (S7788C6*)(S7788C8*), ABISELECT(896,528), "S7788C3");
    check_base_class_offset(lv, (S7788C8*)(S7788C7*), ABISELECT(672,396), "S7788C3");
    check_base_class_offset(lv, (S7788C7*), ABISELECT(400,240), "S7788C3");
    check_base_class_offset(lv, (S7788C7*)(S7788C9*), ABISELECT(400,240), "S7788C3");
    /*is_ambiguous_... S7788C9::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C9*), 0, "S7788C3");
    check_base_class_offset(lv, (S7788C9*), 0, "S7788C3");
    test_class_info(&lv, &cd_S7788C3);
    dp->~S7788C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7788C3(Test_S7788C3, "S7788C3", ABISELECT(1024,612));

#else // __cplusplus

extern void _ZN7S7788C3C1Ev();
extern void _ZN7S7788C3D2Ev();
Name_Map name_map_S7788C3[] = {
  NSPAIR(_ZN7S7788C3C1Ev),
  NSPAIR(_ZN7S7788C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7788C4;
extern VTBL_ENTRY _ZTI7S7788C4[];
extern  VTBL_ENTRY _ZTV7S7788C4[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C8;
extern VTBL_ENTRY _ZTI7S7788C8[];
extern  VTBL_ENTRY _ZTV7S7788C8[];
extern Class_Descriptor cd_S7788C7;
extern VTBL_ENTRY _ZTI7S7788C7[];
extern  VTBL_ENTRY _ZTV7S7788C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C7[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C9;
extern VTBL_ENTRY _ZTI7S7788C9[];
extern  VTBL_ENTRY _ZTV7S7788C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C9[];
static Base_Class bases_S7788C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7788C4,    ABISELECT(96,68), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7788C5,    ABISELECT(144,92), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7788C6,    ABISELECT(368,224), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7788C5,    ABISELECT(672,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7788C6,    ABISELECT(896,528), //bcp->offset
    45, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7788C8,    ABISELECT(672,396), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C7,    ABISELECT(400,240), //bcp->offset
    28, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7788C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7788C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7788C3[];
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C3D1Ev();
extern void _ZN7S7788C3D0Ev();
extern void _ZN7S7788C92v8Ev();
extern void _ZN7S7788C32v9Ev();
extern void _ZN7S7788C33v10Ev();
extern void _ZN7S7788C42v3Ev();
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void ABISELECT(_ZTv0_n56_N7S7788C3D1Ev,_ZTv0_n28_N7S7788C3D1Ev)();
extern void ABISELECT(_ZThn400_N7S7788C3D1Ev,_ZThn240_N7S7788C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C3D0Ev,_ZTv0_n28_N7S7788C3D0Ev)();
extern void ABISELECT(_ZThn400_N7S7788C3D0Ev,_ZThn240_N7S7788C3D0Ev)() __attribute__((weak));
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY vtc_S7788C3[] = {
  ABISELECT(672,396),
  ABISELECT(368,224),
  ABISELECT(144,92),
  ABISELECT(96,68),
  ABISELECT(400,240),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7788C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7788C33v10Ev,
  0,
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
  0,
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  0,
  0,
  ABISELECT(-368,-224),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  ABISELECT(-400,-240),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(-400,-240),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C3D1Ev,_ZTv0_n28_N7S7788C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C3D0Ev,_ZTv0_n28_N7S7788C3D0Ev),
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-672,-396),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
  ABISELECT(-896,-528),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern VTBL_ENTRY _ZTV7S7788C3[];
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C9D1Ev();
extern void _ZN7S7788C9D0Ev();
extern void _ZN7S7788C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C9__7S7788C3[] = {
  ABISELECT(672,396),
  ABISELECT(368,224),
  ABISELECT(144,92),
  ABISELECT(96,68),
  ABISELECT(400,240),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev)();
extern void ABISELECT(_ZThn400_N7S7788C9D1Ev,_ZThn240_N7S7788C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev)();
extern void ABISELECT(_ZThn400_N7S7788C9D0Ev,_ZThn240_N7S7788C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C9__7S7788C3[] = {
  ABISELECT(-400,-240),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(-400,-240),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev),
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C9__7S7788C3[] = {
  0,
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C9__7S7788C3[] = {
  0,
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C9__7S7788C3[] = {
  0,
  0,
  ABISELECT(-368,-224),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C9__7S7788C3[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-672,-396),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C9__7S7788C3[] = {
  ABISELECT(-896,-528),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C7D1Ev();
extern void _ZN7S7788C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C3[] = {
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C7D0Ev,
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C7__7S7788C3[] = {
  0,
  ABISELECT(304,172),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C7__7S7788C3[] = {
  0,
  ABISELECT(256,148),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C7__7S7788C3[] = {
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C7__7S7788C3[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C7__7S7788C3[] = {
  ABISELECT(-496,-288),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
static  VTT_ENTRY vtt_S7788C3[] = {
  {&(_ZTV7S7788C3[7]),  7,49},
  {&(_tg__ZTV7S7788C9__7S7788C3[7]),  7,12},
  {&(_tg__ZTV7S7788C7__7S7788C9__7S7788C3[7]),  7,9},
  {&(_tg__ZTV7S7788C4__7S7788C9__7S7788C3[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C9__7S7788C3[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C9__7S7788C3[4]),  4,6},
  {&(_tg__ZTV7S7788C8__7S7788C9__7S7788C3[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C9__7S7788C3[2]),  2,4},
  {&(_ZTV7S7788C3[17]),  17,49},
  {&(_ZTV7S7788C3[21]),  21,49},
  {&(_ZTV7S7788C3[26]),  26,49},
  {&(_ZTV7S7788C3[35]),  35,49},
  {&(_ZTV7S7788C3[43]),  43,49},
  {&(_ZTV7S7788C3[47]),  47,49},
  {&(_tg__ZTV7S7788C7__7S7788C3[6]),  6,8},
  {&(_tg__ZTV7S7788C4__7S7788C7__7S7788C3[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C7__7S7788C3[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C7__7S7788C3[4]),  4,6},
  {&(_tg__ZTV7S7788C8__7S7788C7__7S7788C3[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C7__7S7788C3[2]),  2,4},
};
extern VTBL_ENTRY _ZTI7S7788C3[];
extern  VTBL_ENTRY _ZTV7S7788C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C3[];
static VTBL_ENTRY alt_thunk_names151[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C9D0Ev,_ZThn240_N7S7788C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C9D1Ev,_ZThn240_N7S7788C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C3D0Ev,_ZTv0_n28_N7S7788C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C3D0Ev,_ZThn240_N7S7788C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C3D1Ev,_ZTv0_n28_N7S7788C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C3D1Ev,_ZThn240_N7S7788C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7788C3 = {  "S7788C3", // class name
  bases_S7788C3, 9,
  &(vtc_S7788C3[0]), // expected_vtbl_contents
  &(vtt_S7788C3[0]), // expected_vtt_contents
  ABISELECT(1024,612), // object size
  NSPAIRA(_ZTI7S7788C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7788C3),49, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7788C3),20, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names151,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7788C2  : virtual S7788C3 , virtual S7788C9 , S7788C6 {
  ::S7788C7 s7788c2f0;
  virtual void  v11(); // _ZN7S7788C23v11Ev
  virtual void  v12(); // _ZN7S7788C23v12Ev
  virtual void  v13(); // _ZN7S7788C23v13Ev
  ~S7788C2(); // tgen
  S7788C2(); // tgen
};
//SIG(-1 S7788C2) C1{ VBC2{ VBC3{ v4 Fp Fi[2] Fp Fi} VBC4{ v5 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC5{ v6 v7 Fs:12 Fi Fc} VBC6{ VBC3 VBC4 VBC5 VBC7{ BC4 BC5 v8 FD FL FC5 FL[2] Fp[3] Fi} vd Fi FC4 Fi Fs:2 Fp Fi} BC8{ VBC6 BC5 vd v9 Fi[6] FL Fi Fp FD} vd v10 v11} VBC8 BC5 v1 v2 v3 FC6}


void  S7788C2 ::v11(){vfunc_called(this, "_ZN7S7788C23v11Ev");}
void  S7788C2 ::v12(){vfunc_called(this, "_ZN7S7788C23v12Ev");}
void  S7788C2 ::v13(){vfunc_called(this, "_ZN7S7788C23v13Ev");}
S7788C2 ::~S7788C2(){ note_dtor("S7788C2", this);} // tgen
S7788C2 ::S7788C2(){ note_ctor("S7788C2", this);} // tgen

static void Test_S7788C2()
{
  extern Class_Descriptor cd_S7788C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(130,311)];
    init_test(&cd_S7788C2, buf);
    S7788C2 *dp, &lv = *(dp=new (buf) S7788C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2064,1240), "sizeof(S7788C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7788C2)");
    check_base_class_offset(lv, (S7788C4*)(S7788C3*), ABISELECT(1040,628), "S7788C2");
    check_base_class_offset(lv, (S7788C4*)(S7788C7*), ABISELECT(1040,628), "S7788C2");
    /*is_ambiguous_... S7788C3::S7788C5 */ AMB_check_base_class_offset(lv, (S7788C5*)(S7788C3*), ABISELECT(1088,652), "S7788C2");
    /*is_ambiguous_... S7788C7::S7788C5 */ AMB_check_base_class_offset(lv, (S7788C5*)(S7788C7*), ABISELECT(1088,652), "S7788C2");
    /*is_ambiguous_... S7788C3::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C3*), ABISELECT(1312,784), "S7788C2");
    /*is_ambiguous_... S7788C7::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C7*), ABISELECT(1312,784), "S7788C2");
    check_base_class_offset(lv, (S7788C5*)(S7788C8*), ABISELECT(1616,956), "S7788C2");
    check_base_class_offset(lv, (S7788C6*)(S7788C8*), ABISELECT(1840,1088), "S7788C2");
    check_base_class_offset(lv, (S7788C8*)(S7788C7*), ABISELECT(1616,956), "S7788C2");
    check_base_class_offset(lv, (S7788C7*)(S7788C3*), ABISELECT(1344,800), "S7788C2");
    check_base_class_offset(lv, (S7788C7*)(S7788C9*)(S7788C3*), ABISELECT(1344,800), "S7788C2");
    /*is_ambiguous_... S7788C2::S7788C9 */ AMB_check_base_class_offset(lv, (S7788C7*)(S7788C9*), ABISELECT(1344,800), "S7788C2");
    /*is_ambiguous_... S7788C9::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C9*)(S7788C3*), ABISELECT(944,560), "S7788C2");
    check_base_class_offset(lv, (S7788C9*)(S7788C3*), ABISELECT(944,560), "S7788C2");
    check_base_class_offset(lv, (S7788C3*), ABISELECT(944,560), "S7788C2");
    /*is_ambiguous_... S7788C2::S7788C9 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C9*), ABISELECT(1968,1172), "S7788C2");
    /*is_ambiguous_... S7788C2::S7788C9 */ AMB_check_base_class_offset(lv, (S7788C9*), ABISELECT(1968,1172), "S7788C2");
    /*is_ambiguous_... S7788C2::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*), 0, "S7788C2");
    check_field_offset(lv, s7788c2f0, ABISELECT(32,16), "S7788C2.s7788c2f0");
    test_class_info(&lv, &cd_S7788C2);
    dp->~S7788C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7788C2(Test_S7788C2, "S7788C2", ABISELECT(2064,1240));

#else // __cplusplus

extern void _ZN7S7788C2C1Ev();
extern void _ZN7S7788C2D1Ev();
Name_Map name_map_S7788C2[] = {
  NSPAIR(_ZN7S7788C2C1Ev),
  NSPAIR(_ZN7S7788C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7788C4;
extern VTBL_ENTRY _ZTI7S7788C4[];
extern  VTBL_ENTRY _ZTV7S7788C4[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C8;
extern VTBL_ENTRY _ZTI7S7788C8[];
extern  VTBL_ENTRY _ZTV7S7788C8[];
extern Class_Descriptor cd_S7788C7;
extern VTBL_ENTRY _ZTI7S7788C7[];
extern  VTBL_ENTRY _ZTV7S7788C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C7[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C9;
extern VTBL_ENTRY _ZTI7S7788C9[];
extern  VTBL_ENTRY _ZTV7S7788C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C9[];
extern Class_Descriptor cd_S7788C3;
extern VTBL_ENTRY _ZTI7S7788C3[];
extern  VTBL_ENTRY _ZTV7S7788C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C3[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C9;
extern VTBL_ENTRY _ZTI7S7788C9[];
extern  VTBL_ENTRY _ZTV7S7788C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C9[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
static Base_Class bases_S7788C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7788C4,    ABISELECT(1040,628), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C5,    ABISELECT(1088,652), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C6,    ABISELECT(1312,784), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C5,    ABISELECT(1616,956), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7788C6,    ABISELECT(1840,1088), //bcp->offset
    67, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7788C8,    ABISELECT(1616,956), //bcp->offset
    59, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C7,    ABISELECT(1344,800), //bcp->offset
    50, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7788C6,    ABISELECT(944,560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7788C9,    ABISELECT(944,560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7788C3,    ABISELECT(944,560), //bcp->offset
    16, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7788C6,    ABISELECT(1968,1172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7788C9,    ABISELECT(1968,1172), //bcp->offset
    71, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7788C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7788C2[];
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C23v11Ev();
extern void _ZN7S7788C23v12Ev();
extern void _ZN7S7788C23v13Ev();
extern void _ZN7S7788C2D1Ev();
extern void _ZN7S7788C2D0Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev)();
extern void ABISELECT(_ZThn944_N7S7788C2D1Ev,_ZThn560_N7S7788C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev)();
extern void ABISELECT(_ZThn944_N7S7788C2D0Ev,_ZThn560_N7S7788C2D0Ev)() __attribute__((weak));
extern void _ZN7S7788C92v8Ev();
extern void _ZN7S7788C32v9Ev();
extern void _ZN7S7788C33v10Ev();
extern void _ZN7S7788C42v3Ev();
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void ABISELECT(_ZTv0_n56_N7S7788C2D1Ev,_ZTv0_n28_N7S7788C2D1Ev)();
extern void ABISELECT(_ZThn1344_N7S7788C2D1Ev,_ZThn800_N7S7788C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C2D0Ev,_ZTv0_n28_N7S7788C2D0Ev)();
extern void ABISELECT(_ZThn1344_N7S7788C2D0Ev,_ZThn800_N7S7788C2D0Ev)() __attribute__((weak));
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev)();
extern void ABISELECT(_ZThn1968_N7S7788C2D1Ev,_ZThn1172_N7S7788C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev)();
extern void ABISELECT(_ZThn1968_N7S7788C2D0Ev,_ZThn1172_N7S7788C2D0Ev)() __attribute__((weak));
extern void _ZN7S7788C92v8Ev();
static  VTBL_ENTRY vtc_S7788C2[] = {
  ABISELECT(1968,1172),
  ABISELECT(1616,956),
  ABISELECT(1344,800),
  ABISELECT(1312,784),
  ABISELECT(1088,652),
  ABISELECT(1040,628),
  ABISELECT(944,560),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7788C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7788C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7788C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C2D0Ev,
  0,
  0,
  0,
  ABISELECT(-944,-560),
  0,
  0,
  ABISELECT(672,396),
  ABISELECT(368,224),
  ABISELECT(144,92),
  ABISELECT(96,68),
  ABISELECT(400,240),
  ABISELECT(-944,-560),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7788C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7788C33v10Ev,
  0,
  ABISELECT(-1040,-628),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
  0,
  ABISELECT(-1088,-652),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  0,
  0,
  ABISELECT(-1312,-784),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  ABISELECT(-1344,-800),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(-1344,-800),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C2D1Ev,_ZTv0_n28_N7S7788C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C2D0Ev,_ZTv0_n28_N7S7788C2D0Ev),
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-1616,-956),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
  ABISELECT(-1840,-1088),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  0,
  ABISELECT(-1968,-1172),
  0,
  0,
  ABISELECT(-352,-216),
  ABISELECT(-656,-388),
  ABISELECT(-880,-520),
  ABISELECT(-928,-544),
  ABISELECT(-624,-372),
  ABISELECT(-1968,-1172),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
};
extern VTBL_ENTRY _ZTV7S7788C2[];
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C3D1Ev();
extern void _ZN7S7788C3D0Ev();
extern void _ZN7S7788C92v8Ev();
extern void _ZN7S7788C32v9Ev();
extern void _ZN7S7788C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C3__7S7788C2[] = {
  ABISELECT(672,396),
  ABISELECT(368,224),
  ABISELECT(144,92),
  ABISELECT(96,68),
  ABISELECT(400,240),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7788C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7788C33v10Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C9D1Ev();
extern void _ZN7S7788C9D0Ev();
extern void _ZN7S7788C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C97S7788C3__7S7788C2[] = {
  ABISELECT(672,396),
  ABISELECT(368,224),
  ABISELECT(144,92),
  ABISELECT(96,68),
  ABISELECT(400,240),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev)();
extern void ABISELECT(_ZThn400_N7S7788C9D1Ev,_ZThn240_N7S7788C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev)();
extern void ABISELECT(_ZThn400_N7S7788C9D0Ev,_ZThn240_N7S7788C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C97S7788C3__7S7788C2[] = {
  ABISELECT(-400,-240),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(-400,-240),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev),
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C97S7788C3__7S7788C2[] = {
  0,
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C97S7788C3__7S7788C2[] = {
  0,
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C97S7788C3__7S7788C2[] = {
  0,
  0,
  ABISELECT(-368,-224),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C97S7788C3__7S7788C2[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-672,-396),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C97S7788C3__7S7788C2[] = {
  ABISELECT(-896,-528),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C3__7S7788C2[] = {
  0,
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C3__7S7788C2[] = {
  0,
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C3__7S7788C2[] = {
  0,
  0,
  ABISELECT(-368,-224),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7788C3D1Ev,_ZTv0_n28_N7S7788C3D1Ev)();
extern void ABISELECT(_ZThn400_N7S7788C3D1Ev,_ZThn240_N7S7788C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C3D0Ev,_ZTv0_n28_N7S7788C3D0Ev)();
extern void ABISELECT(_ZThn400_N7S7788C3D0Ev,_ZThn240_N7S7788C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C3__7S7788C2[] = {
  ABISELECT(-400,-240),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(-400,-240),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C3D1Ev,_ZTv0_n28_N7S7788C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C3D0Ev,_ZTv0_n28_N7S7788C3D0Ev),
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C3__7S7788C2[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-672,-396),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C3__7S7788C2[] = {
  ABISELECT(-896,-528),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C7D1Ev();
extern void _ZN7S7788C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C2[] = {
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C7D0Ev,
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C7__7S7788C2[] = {
  0,
  ABISELECT(304,172),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C7__7S7788C2[] = {
  0,
  ABISELECT(256,148),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C7__7S7788C2[] = {
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C7__7S7788C2[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C7__7S7788C2[] = {
  ABISELECT(-496,-288),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C9D1Ev();
extern void _ZN7S7788C9D0Ev();
extern void _ZN7S7788C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C9__A1__7S7788C2[] = {
  ABISELECT(-352,-216),
  ABISELECT(-656,-388),
  ABISELECT(-880,-520),
  ABISELECT(-928,-544),
  ABISELECT(-624,-372),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev)();
extern void ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C9__A1__7S7788C2[] = {
  ABISELECT(624,372),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(624,372),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev),
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C9__A1__7S7788C2[] = {
  0,
  ABISELECT(928,544),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C9__A1__7S7788C2[] = {
  0,
  ABISELECT(880,520),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C9__A1__7S7788C2[] = {
  0,
  0,
  ABISELECT(656,388),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C9__A1__7S7788C2[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(352,216),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C9__A1__7S7788C2[] = {
  ABISELECT(128,84),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
static  VTT_ENTRY vtt_S7788C2[] = {
  {&(_ZTV7S7788C2[9]),  9,87},
  {&(_ZTV7S7788C2[29]),  29,87},
  {&(_ZTV7S7788C2[39]),  39,87},
  {&(_ZTV7S7788C2[43]),  43,87},
  {&(_ZTV7S7788C2[48]),  48,87},
  {&(_ZTV7S7788C2[57]),  57,87},
  {&(_ZTV7S7788C2[65]),  65,87},
  {&(_ZTV7S7788C2[69]),  69,87},
  {&(_ZTV7S7788C2[82]),  82,87},
  {&(_tg__ZTV7S7788C3__7S7788C2[7]),  7,14},
  {&(_tg__ZTV7S7788C97S7788C3__7S7788C2[7]),  7,12},
  {&(_tg__ZTV7S7788C7__7S7788C97S7788C3__7S7788C2[7]),  7,9},
  {&(_tg__ZTV7S7788C4__7S7788C97S7788C3__7S7788C2[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C97S7788C3__7S7788C2[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C97S7788C3__7S7788C2[4]),  4,6},
  {&(_tg__ZTV7S7788C8__7S7788C97S7788C3__7S7788C2[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C97S7788C3__7S7788C2[2]),  2,4},
  {&(_tg__ZTV7S7788C4__7S7788C3__7S7788C2[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C3__7S7788C2[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C3__7S7788C2[4]),  4,6},
  {&(_tg__ZTV7S7788C7__7S7788C3__7S7788C2[7]),  7,9},
  {&(_tg__ZTV7S7788C8__7S7788C3__7S7788C2[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C3__7S7788C2[2]),  2,4},
  {&(_tg__ZTV7S7788C7__7S7788C2[6]),  6,8},
  {&(_tg__ZTV7S7788C4__7S7788C7__7S7788C2[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C7__7S7788C2[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C7__7S7788C2[4]),  4,6},
  {&(_tg__ZTV7S7788C8__7S7788C7__7S7788C2[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C7__7S7788C2[2]),  2,4},
  {&(_tg__ZTV7S7788C9__A1__7S7788C2[7]),  7,12},
  {&(_tg__ZTV7S7788C7__7S7788C9__A1__7S7788C2[7]),  7,9},
  {&(_tg__ZTV7S7788C4__7S7788C9__A1__7S7788C2[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C9__A1__7S7788C2[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C9__A1__7S7788C2[4]),  4,6},
  {&(_tg__ZTV7S7788C8__7S7788C9__A1__7S7788C2[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C9__A1__7S7788C2[2]),  2,4},
};
extern VTBL_ENTRY _ZTI7S7788C2[];
extern  VTBL_ENTRY _ZTV7S7788C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C2[];
static VTBL_ENTRY alt_thunk_names152[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C3D0Ev,_ZTv0_n28_N7S7788C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C3D0Ev,_ZThn240_N7S7788C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C3D1Ev,_ZTv0_n28_N7S7788C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C3D1Ev,_ZThn240_N7S7788C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C9D0Ev,_ZThn240_N7S7788C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C9D1Ev,_ZThn240_N7S7788C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C2D0Ev,_ZTv0_n28_N7S7788C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N7S7788C2D0Ev,_ZThn800_N7S7788C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C2D1Ev,_ZTv0_n28_N7S7788C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N7S7788C2D1Ev,_ZThn800_N7S7788C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1968_N7S7788C2D0Ev,_ZThn1172_N7S7788C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn944_N7S7788C2D0Ev,_ZThn560_N7S7788C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1968_N7S7788C2D1Ev,_ZThn1172_N7S7788C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn944_N7S7788C2D1Ev,_ZThn560_N7S7788C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7788C2 = {  "S7788C2", // class name
  bases_S7788C2, 13,
  &(vtc_S7788C2[0]), // expected_vtbl_contents
  &(vtt_S7788C2[0]), // expected_vtt_contents
  ABISELECT(2064,1240), // object size
  NSPAIRA(_ZTI7S7788C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7788C2),87, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7788C2),36, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names152,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7788C1  : S7788C2 {
  int  :0;
  virtual  ~S7788C1(); // _ZN7S7788C1D2Ev
  virtual void  v1(); // _ZN7S7788C12v1Ev
  virtual void  v2(); // _ZN7S7788C12v2Ev
  S7788C1(); // tgen
};
//SIG(1 S7788C1) C1{ BC2{ VBC3{ VBC4{ v3 Fp Fi[2] Fp Fi} VBC5{ v4 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC6{ v5 v6 Fs:12 Fi Fc} VBC7{ VBC4 VBC5 VBC6 VBC8{ BC5 BC6 v7 FD FL FC6 FL[2] Fp[3] Fi} vd Fi FC5 Fi Fs:2 Fp Fi} BC9{ VBC7 BC6 vd v8 Fi[6] FL Fi Fp FD} vd v9 v10} VBC9 BC6 v11 v12 v13 FC7} vd v1 v2 Fi:0}


 S7788C1 ::~S7788C1(){ note_dtor("S7788C1", this);}
void  S7788C1 ::v1(){vfunc_called(this, "_ZN7S7788C12v1Ev");}
void  S7788C1 ::v2(){vfunc_called(this, "_ZN7S7788C12v2Ev");}
S7788C1 ::S7788C1(){ note_ctor("S7788C1", this);} // tgen

static void Test_S7788C1()
{
  extern Class_Descriptor cd_S7788C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(130,311)];
    init_test(&cd_S7788C1, buf);
    S7788C1 *dp, &lv = *(dp=new (buf) S7788C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2064,1240), "sizeof(S7788C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7788C1)");
    check_base_class_offset(lv, (S7788C4*)(S7788C3*), ABISELECT(1040,628), "S7788C1");
    check_base_class_offset(lv, (S7788C4*)(S7788C7*), ABISELECT(1040,628), "S7788C1");
    /*is_ambiguous_... S7788C3::S7788C5 */ AMB_check_base_class_offset(lv, (S7788C5*)(S7788C3*), ABISELECT(1088,652), "S7788C1");
    /*is_ambiguous_... S7788C7::S7788C5 */ AMB_check_base_class_offset(lv, (S7788C5*)(S7788C7*), ABISELECT(1088,652), "S7788C1");
    /*is_ambiguous_... S7788C3::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C3*), ABISELECT(1312,784), "S7788C1");
    /*is_ambiguous_... S7788C7::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C7*), ABISELECT(1312,784), "S7788C1");
    check_base_class_offset(lv, (S7788C5*)(S7788C8*), ABISELECT(1616,956), "S7788C1");
    check_base_class_offset(lv, (S7788C6*)(S7788C8*), ABISELECT(1840,1088), "S7788C1");
    check_base_class_offset(lv, (S7788C8*)(S7788C7*), ABISELECT(1616,956), "S7788C1");
    check_base_class_offset(lv, (S7788C7*)(S7788C3*), ABISELECT(1344,800), "S7788C1");
    check_base_class_offset(lv, (S7788C7*)(S7788C9*)(S7788C3*), ABISELECT(1344,800), "S7788C1");
    /*is_ambiguous_... S7788C1::S7788C9 */ AMB_check_base_class_offset(lv, (S7788C7*)(S7788C9*), ABISELECT(1344,800), "S7788C1");
    /*is_ambiguous_... S7788C9::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C9*)(S7788C3*), ABISELECT(944,560), "S7788C1");
    check_base_class_offset(lv, (S7788C9*)(S7788C3*), ABISELECT(944,560), "S7788C1");
    check_base_class_offset(lv, (S7788C3*)(S7788C2*), ABISELECT(944,560), "S7788C1");
    /*is_ambiguous_... S7788C1::S7788C9 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C9*), ABISELECT(1968,1172), "S7788C1");
    /*is_ambiguous_... S7788C2::S7788C9 */ AMB_check_base_class_offset(lv, (S7788C9*)(S7788C2*), ABISELECT(1968,1172), "S7788C1");
    /*is_ambiguous_... S7788C2::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C2*), 0, "S7788C1");
    check_base_class_offset(lv, (S7788C2*), 0, "S7788C1");
    test_class_info(&lv, &cd_S7788C1);
    dp->~S7788C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7788C1(Test_S7788C1, "S7788C1", ABISELECT(2064,1240));

#else // __cplusplus

extern void _ZN7S7788C1C1Ev();
extern void _ZN7S7788C1D2Ev();
Name_Map name_map_S7788C1[] = {
  NSPAIR(_ZN7S7788C1C1Ev),
  NSPAIR(_ZN7S7788C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7788C4;
extern VTBL_ENTRY _ZTI7S7788C4[];
extern  VTBL_ENTRY _ZTV7S7788C4[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C8;
extern VTBL_ENTRY _ZTI7S7788C8[];
extern  VTBL_ENTRY _ZTV7S7788C8[];
extern Class_Descriptor cd_S7788C7;
extern VTBL_ENTRY _ZTI7S7788C7[];
extern  VTBL_ENTRY _ZTV7S7788C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C7[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C9;
extern VTBL_ENTRY _ZTI7S7788C9[];
extern  VTBL_ENTRY _ZTV7S7788C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C9[];
extern Class_Descriptor cd_S7788C3;
extern VTBL_ENTRY _ZTI7S7788C3[];
extern  VTBL_ENTRY _ZTV7S7788C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C3[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C9;
extern VTBL_ENTRY _ZTI7S7788C9[];
extern  VTBL_ENTRY _ZTV7S7788C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C9[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C2;
extern VTBL_ENTRY _ZTI7S7788C2[];
extern  VTBL_ENTRY _ZTV7S7788C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C2[];
static Base_Class bases_S7788C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7788C4,    ABISELECT(1040,628), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C5,    ABISELECT(1088,652), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C6,    ABISELECT(1312,784), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C5,    ABISELECT(1616,956), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7788C6,    ABISELECT(1840,1088), //bcp->offset
    69, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7788C8,    ABISELECT(1616,956), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C7,    ABISELECT(1344,800), //bcp->offset
    52, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7788C6,    ABISELECT(944,560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7788C9,    ABISELECT(944,560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7788C3,    ABISELECT(944,560), //bcp->offset
    18, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7788C6,    ABISELECT(1968,1172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7788C9,    ABISELECT(1968,1172), //bcp->offset
    73, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7788C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7788C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7788C1[];
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C23v11Ev();
extern void _ZN7S7788C23v12Ev();
extern void _ZN7S7788C23v13Ev();
extern void _ZN7S7788C1D1Ev();
extern void _ZN7S7788C1D0Ev();
extern void _ZN7S7788C12v1Ev();
extern void _ZN7S7788C12v2Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void ABISELECT(_ZTv0_n80_N7S7788C1D1Ev,_ZTv0_n40_N7S7788C1D1Ev)();
extern void ABISELECT(_ZThn944_N7S7788C1D1Ev,_ZThn560_N7S7788C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7788C1D0Ev,_ZTv0_n40_N7S7788C1D0Ev)();
extern void ABISELECT(_ZThn944_N7S7788C1D0Ev,_ZThn560_N7S7788C1D0Ev)() __attribute__((weak));
extern void _ZN7S7788C92v8Ev();
extern void _ZN7S7788C32v9Ev();
extern void _ZN7S7788C33v10Ev();
extern void _ZN7S7788C42v3Ev();
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void ABISELECT(_ZTv0_n56_N7S7788C1D1Ev,_ZTv0_n28_N7S7788C1D1Ev)();
extern void ABISELECT(_ZThn1344_N7S7788C1D1Ev,_ZThn800_N7S7788C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C1D0Ev,_ZTv0_n28_N7S7788C1D0Ev)();
extern void ABISELECT(_ZThn1344_N7S7788C1D0Ev,_ZThn800_N7S7788C1D0Ev)() __attribute__((weak));
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void ABISELECT(_ZTv0_n80_N7S7788C1D1Ev,_ZTv0_n40_N7S7788C1D1Ev)();
extern void ABISELECT(_ZThn1968_N7S7788C1D1Ev,_ZThn1172_N7S7788C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7788C1D0Ev,_ZTv0_n40_N7S7788C1D0Ev)();
extern void ABISELECT(_ZThn1968_N7S7788C1D0Ev,_ZThn1172_N7S7788C1D0Ev)() __attribute__((weak));
extern void _ZN7S7788C92v8Ev();
static  VTBL_ENTRY vtc_S7788C1[] = {
  ABISELECT(1968,1172),
  ABISELECT(1616,956),
  ABISELECT(1344,800),
  ABISELECT(1312,784),
  ABISELECT(1088,652),
  ABISELECT(1040,628),
  ABISELECT(944,560),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C1[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7788C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7788C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7788C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7788C12v2Ev,
  0,
  0,
  0,
  ABISELECT(-944,-560),
  0,
  0,
  ABISELECT(672,396),
  ABISELECT(368,224),
  ABISELECT(144,92),
  ABISELECT(96,68),
  ABISELECT(400,240),
  ABISELECT(-944,-560),
  (VTBL_ENTRY)&(_ZTI7S7788C1[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C1D1Ev,_ZTv0_n40_N7S7788C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C1D0Ev,_ZTv0_n40_N7S7788C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7788C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7788C33v10Ev,
  0,
  ABISELECT(-1040,-628),
  (VTBL_ENTRY)&(_ZTI7S7788C1[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
  0,
  ABISELECT(-1088,-652),
  (VTBL_ENTRY)&(_ZTI7S7788C1[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  0,
  0,
  ABISELECT(-1312,-784),
  (VTBL_ENTRY)&(_ZTI7S7788C1[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  ABISELECT(-1344,-800),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(-1344,-800),
  (VTBL_ENTRY)&(_ZTI7S7788C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C1D1Ev,_ZTv0_n28_N7S7788C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C1D0Ev,_ZTv0_n28_N7S7788C1D0Ev),
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-1616,-956),
  (VTBL_ENTRY)&(_ZTI7S7788C1[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
  ABISELECT(-1840,-1088),
  (VTBL_ENTRY)&(_ZTI7S7788C1[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  0,
  ABISELECT(-1968,-1172),
  0,
  0,
  ABISELECT(-352,-216),
  ABISELECT(-656,-388),
  ABISELECT(-880,-520),
  ABISELECT(-928,-544),
  ABISELECT(-624,-372),
  ABISELECT(-1968,-1172),
  (VTBL_ENTRY)&(_ZTI7S7788C1[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C1D1Ev,_ZTv0_n40_N7S7788C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C1D0Ev,_ZTv0_n40_N7S7788C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
};
extern VTBL_ENTRY _ZTV7S7788C1[];
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C23v11Ev();
extern void _ZN7S7788C23v12Ev();
extern void _ZN7S7788C23v13Ev();
extern void _ZN7S7788C2D1Ev();
extern void _ZN7S7788C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C2__7S7788C1[] = {
  ABISELECT(1968,1172),
  ABISELECT(1616,956),
  ABISELECT(1344,800),
  ABISELECT(1312,784),
  ABISELECT(1088,652),
  ABISELECT(1040,628),
  ABISELECT(944,560),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7788C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7788C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7788C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C2D0Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev)();
extern void ABISELECT(_ZThn944_N7S7788C2D1Ev,_ZThn560_N7S7788C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev)();
extern void ABISELECT(_ZThn944_N7S7788C2D0Ev,_ZThn560_N7S7788C2D0Ev)() __attribute__((weak));
extern void _ZN7S7788C92v8Ev();
extern void _ZN7S7788C32v9Ev();
extern void _ZN7S7788C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C3__7S7788C2__7S7788C1[] = {
  0,
  0,
  0,
  ABISELECT(-944,-560),
  0,
  0,
  ABISELECT(672,396),
  ABISELECT(368,224),
  ABISELECT(144,92),
  ABISELECT(96,68),
  ABISELECT(400,240),
  ABISELECT(-944,-560),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7788C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7788C33v10Ev,
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C2__7S7788C1[] = {
  0,
  ABISELECT(-1040,-628),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C2__7S7788C1[] = {
  0,
  ABISELECT(-1088,-652),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C2__7S7788C1[] = {
  0,
  0,
  ABISELECT(-1312,-784),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7788C2D1Ev,_ZTv0_n28_N7S7788C2D1Ev)();
extern void ABISELECT(_ZThn1344_N7S7788C2D1Ev,_ZThn800_N7S7788C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C2D0Ev,_ZTv0_n28_N7S7788C2D0Ev)();
extern void ABISELECT(_ZThn1344_N7S7788C2D0Ev,_ZThn800_N7S7788C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C2__7S7788C1[] = {
  ABISELECT(-1344,-800),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(-1344,-800),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C2D1Ev,_ZTv0_n28_N7S7788C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C2D0Ev,_ZTv0_n28_N7S7788C2D0Ev),
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C2__7S7788C1[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-1616,-956),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C2__7S7788C1[] = {
  ABISELECT(-1840,-1088),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev)();
extern void ABISELECT(_ZThn1968_N7S7788C2D1Ev,_ZThn1172_N7S7788C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev)();
extern void ABISELECT(_ZThn1968_N7S7788C2D0Ev,_ZThn1172_N7S7788C2D0Ev)() __attribute__((weak));
extern void _ZN7S7788C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C9__A1__7S7788C2__7S7788C1[] = {
  0,
  ABISELECT(-1968,-1172),
  0,
  0,
  ABISELECT(-352,-216),
  ABISELECT(-656,-388),
  ABISELECT(-880,-520),
  ABISELECT(-928,-544),
  ABISELECT(-624,-372),
  ABISELECT(-1968,-1172),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C3D1Ev();
extern void _ZN7S7788C3D0Ev();
extern void _ZN7S7788C92v8Ev();
extern void _ZN7S7788C32v9Ev();
extern void _ZN7S7788C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C3__7S7788C1[] = {
  ABISELECT(672,396),
  ABISELECT(368,224),
  ABISELECT(144,92),
  ABISELECT(96,68),
  ABISELECT(400,240),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7788C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7788C33v10Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C9D1Ev();
extern void _ZN7S7788C9D0Ev();
extern void _ZN7S7788C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C97S7788C3__7S7788C1[] = {
  ABISELECT(672,396),
  ABISELECT(368,224),
  ABISELECT(144,92),
  ABISELECT(96,68),
  ABISELECT(400,240),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev)();
extern void ABISELECT(_ZThn400_N7S7788C9D1Ev,_ZThn240_N7S7788C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev)();
extern void ABISELECT(_ZThn400_N7S7788C9D0Ev,_ZThn240_N7S7788C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C97S7788C3__7S7788C1[] = {
  ABISELECT(-400,-240),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(-400,-240),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev),
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C97S7788C3__7S7788C1[] = {
  0,
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C97S7788C3__7S7788C1[] = {
  0,
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C97S7788C3__7S7788C1[] = {
  0,
  0,
  ABISELECT(-368,-224),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C97S7788C3__7S7788C1[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-672,-396),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C97S7788C3__7S7788C1[] = {
  ABISELECT(-896,-528),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C3__7S7788C1[] = {
  0,
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C3__7S7788C1[] = {
  0,
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C3__7S7788C1[] = {
  0,
  0,
  ABISELECT(-368,-224),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7788C3D1Ev,_ZTv0_n28_N7S7788C3D1Ev)();
extern void ABISELECT(_ZThn400_N7S7788C3D1Ev,_ZThn240_N7S7788C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C3D0Ev,_ZTv0_n28_N7S7788C3D0Ev)();
extern void ABISELECT(_ZThn400_N7S7788C3D0Ev,_ZThn240_N7S7788C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C3__7S7788C1[] = {
  ABISELECT(-400,-240),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(-400,-240),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C3D1Ev,_ZTv0_n28_N7S7788C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C3D0Ev,_ZTv0_n28_N7S7788C3D0Ev),
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C3__7S7788C1[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-672,-396),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C3__7S7788C1[] = {
  ABISELECT(-896,-528),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C7D1Ev();
extern void _ZN7S7788C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C1[] = {
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C7D0Ev,
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C7__7S7788C1[] = {
  0,
  ABISELECT(304,172),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C7__7S7788C1[] = {
  0,
  ABISELECT(256,148),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C7__7S7788C1[] = {
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C7__7S7788C1[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C7__7S7788C1[] = {
  ABISELECT(-496,-288),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C9D1Ev();
extern void _ZN7S7788C9D0Ev();
extern void _ZN7S7788C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C9__A1__7S7788C1[] = {
  ABISELECT(-352,-216),
  ABISELECT(-656,-388),
  ABISELECT(-880,-520),
  ABISELECT(-928,-544),
  ABISELECT(-624,-372),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev)();
extern void ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C9__A1__7S7788C1[] = {
  ABISELECT(624,372),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(624,372),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev),
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C9__A1__7S7788C1[] = {
  0,
  ABISELECT(928,544),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C9__A1__7S7788C1[] = {
  0,
  ABISELECT(880,520),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C9__A1__7S7788C1[] = {
  0,
  0,
  ABISELECT(656,388),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C9__A1__7S7788C1[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(352,216),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C9__A1__7S7788C1[] = {
  ABISELECT(128,84),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
static  VTT_ENTRY vtt_S7788C1[] = {
  {&(_ZTV7S7788C1[9]),  9,89},
  {&(_tg__ZTV7S7788C2__7S7788C1[9]),  9,16},
  {&(_tg__ZTV7S7788C3__7S7788C2__7S7788C1[13]),  13,20},
  {&(_tg__ZTV7S7788C4__7S7788C2__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C2__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C2__7S7788C1[4]),  4,6},
  {&(_tg__ZTV7S7788C7__7S7788C2__7S7788C1[7]),  7,9},
  {&(_tg__ZTV7S7788C8__7S7788C2__7S7788C1[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C2__7S7788C1[2]),  2,4},
  {&(_tg__ZTV7S7788C9__A1__7S7788C2__7S7788C1[11]),  11,16},
  {&(_ZTV7S7788C1[31]),  31,89},
  {&(_ZTV7S7788C1[41]),  41,89},
  {&(_ZTV7S7788C1[45]),  45,89},
  {&(_ZTV7S7788C1[50]),  50,89},
  {&(_ZTV7S7788C1[59]),  59,89},
  {&(_ZTV7S7788C1[67]),  67,89},
  {&(_ZTV7S7788C1[71]),  71,89},
  {&(_ZTV7S7788C1[84]),  84,89},
  {&(_tg__ZTV7S7788C3__7S7788C1[7]),  7,14},
  {&(_tg__ZTV7S7788C97S7788C3__7S7788C1[7]),  7,12},
  {&(_tg__ZTV7S7788C7__7S7788C97S7788C3__7S7788C1[7]),  7,9},
  {&(_tg__ZTV7S7788C4__7S7788C97S7788C3__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C97S7788C3__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C97S7788C3__7S7788C1[4]),  4,6},
  {&(_tg__ZTV7S7788C8__7S7788C97S7788C3__7S7788C1[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C97S7788C3__7S7788C1[2]),  2,4},
  {&(_tg__ZTV7S7788C4__7S7788C3__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C3__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C3__7S7788C1[4]),  4,6},
  {&(_tg__ZTV7S7788C7__7S7788C3__7S7788C1[7]),  7,9},
  {&(_tg__ZTV7S7788C8__7S7788C3__7S7788C1[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C3__7S7788C1[2]),  2,4},
  {&(_tg__ZTV7S7788C7__7S7788C1[6]),  6,8},
  {&(_tg__ZTV7S7788C4__7S7788C7__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C7__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C7__7S7788C1[4]),  4,6},
  {&(_tg__ZTV7S7788C8__7S7788C7__7S7788C1[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C7__7S7788C1[2]),  2,4},
  {&(_tg__ZTV7S7788C9__A1__7S7788C1[7]),  7,12},
  {&(_tg__ZTV7S7788C7__7S7788C9__A1__7S7788C1[7]),  7,9},
  {&(_tg__ZTV7S7788C4__7S7788C9__A1__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C9__A1__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C9__A1__7S7788C1[4]),  4,6},
  {&(_tg__ZTV7S7788C8__7S7788C9__A1__7S7788C1[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C9__A1__7S7788C1[2]),  2,4},
};
extern VTBL_ENTRY _ZTI7S7788C1[];
extern  VTBL_ENTRY _ZTV7S7788C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C1[];
static VTBL_ENTRY alt_thunk_names153[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C3D0Ev,_ZTv0_n28_N7S7788C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C3D0Ev,_ZThn240_N7S7788C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C3D1Ev,_ZTv0_n28_N7S7788C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C3D1Ev,_ZThn240_N7S7788C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C9D0Ev,_ZThn240_N7S7788C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C9D1Ev,_ZThn240_N7S7788C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C2D0Ev,_ZTv0_n28_N7S7788C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N7S7788C2D0Ev,_ZThn800_N7S7788C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C2D1Ev,_ZTv0_n28_N7S7788C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N7S7788C2D1Ev,_ZThn800_N7S7788C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1968_N7S7788C2D0Ev,_ZThn1172_N7S7788C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn944_N7S7788C2D0Ev,_ZThn560_N7S7788C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1968_N7S7788C2D1Ev,_ZThn1172_N7S7788C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn944_N7S7788C2D1Ev,_ZThn560_N7S7788C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C1D0Ev,_ZTv0_n28_N7S7788C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N7S7788C1D0Ev,_ZThn800_N7S7788C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C1D1Ev,_ZTv0_n28_N7S7788C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N7S7788C1D1Ev,_ZThn800_N7S7788C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7788C1D0Ev,_ZTv0_n40_N7S7788C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1968_N7S7788C1D0Ev,_ZThn1172_N7S7788C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn944_N7S7788C1D0Ev,_ZThn560_N7S7788C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7788C1D1Ev,_ZTv0_n40_N7S7788C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1968_N7S7788C1D1Ev,_ZThn1172_N7S7788C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn944_N7S7788C1D1Ev,_ZThn560_N7S7788C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7788C1 = {  "S7788C1", // class name
  bases_S7788C1, 14,
  &(vtc_S7788C1[0]), // expected_vtbl_contents
  &(vtt_S7788C1[0]), // expected_vtt_contents
  ABISELECT(2064,1240), // object size
  NSPAIRA(_ZTI7S7788C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7788C1),89, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7788C1),45, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names153,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8016C2_nt  {
  ::S4228C44 s8016c2f0;
  void  mf8016c2(); // _ZN10S8016C2_nt8mf8016c2Ev
  virtual  ~S8016C2_nt(); // _ZN10S8016C2_ntD1Ev
  S8016C2_nt(); // tgen
};
//SIG(-1 S8016C2_nt) C1{ vd m FC2{ m Fp Fi[2] FC3{ m}}}


void  S8016C2_nt ::mf8016c2(){}
 S8016C2_nt ::~S8016C2_nt(){ note_dtor("S8016C2_nt", this);}
S8016C2_nt ::S8016C2_nt(){ note_ctor("S8016C2_nt", this);} // tgen

//skip512 S8016C2_nt

#else // __cplusplus

extern void _ZN10S8016C2_ntC1Ev();
extern void _ZN10S8016C2_ntD1Ev();
Name_Map name_map_S8016C2_nt[] = {
  NSPAIR(_ZN10S8016C2_ntC1Ev),
  NSPAIR(_ZN10S8016C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8016C2_nt[];
extern void _ZN10S8016C2_ntD1Ev();
extern void _ZN10S8016C2_ntD0Ev();
static  VTBL_ENTRY vtc_S8016C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8016C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S8016C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8016C2_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S8016C2_nt[];
VTBL_ENTRY *P__ZTI10S8016C2_nt = _ZTI10S8016C2_nt; 
extern  VTBL_ENTRY _ZTV10S8016C2_nt[];
Class_Descriptor cd_S8016C2_nt = {  "S8016C2_nt", // class name
  0,0,//no base classes
  &(vtc_S8016C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI10S8016C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8016C2_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8016C5_nt  {
  virtual  ~S8016C5_nt(); // _ZN10S8016C5_ntD1Ev
  virtual void  v24(); // _ZN10S8016C5_nt3v24Ev
  virtual void  v25(); // _ZN10S8016C5_nt3v25Ev
  virtual void  v26(); // _ZN10S8016C5_nt3v26Ev
  virtual void  v27(); // _ZN10S8016C5_nt3v27Ev
  virtual void  v28(); // _ZN10S8016C5_nt3v28Ev
  virtual void  v29(); // _ZN10S8016C5_nt3v29Ev
  virtual void  v30(); // _ZN10S8016C5_nt3v30Ev
  virtual void  v31(); // _ZN10S8016C5_nt3v31Ev
  virtual void  v32(); // _ZN10S8016C5_nt3v32Ev
  virtual void  v33(); // _ZN10S8016C5_nt3v33Ev
  virtual void  v34(); // _ZN10S8016C5_nt3v34Ev
  virtual void  v35(); // _ZN10S8016C5_nt3v35Ev
  virtual void  v36(); // _ZN10S8016C5_nt3v36Ev
  virtual void  v37(); // _ZN10S8016C5_nt3v37Ev
  virtual void  v38(); // _ZN10S8016C5_nt3v38Ev
  virtual void  v39(); // _ZN10S8016C5_nt3v39Ev
  S8016C5_nt(); // tgen
};
//SIG(-1 S8016C5_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


 S8016C5_nt ::~S8016C5_nt(){ note_dtor("S8016C5_nt", this);}
void  S8016C5_nt ::v24(){vfunc_called(this, "_ZN10S8016C5_nt3v24Ev");}
void  S8016C5_nt ::v25(){vfunc_called(this, "_ZN10S8016C5_nt3v25Ev");}
void  S8016C5_nt ::v26(){vfunc_called(this, "_ZN10S8016C5_nt3v26Ev");}
void  S8016C5_nt ::v27(){vfunc_called(this, "_ZN10S8016C5_nt3v27Ev");}
void  S8016C5_nt ::v28(){vfunc_called(this, "_ZN10S8016C5_nt3v28Ev");}
void  S8016C5_nt ::v29(){vfunc_called(this, "_ZN10S8016C5_nt3v29Ev");}
void  S8016C5_nt ::v30(){vfunc_called(this, "_ZN10S8016C5_nt3v30Ev");}
void  S8016C5_nt ::v31(){vfunc_called(this, "_ZN10S8016C5_nt3v31Ev");}
void  S8016C5_nt ::v32(){vfunc_called(this, "_ZN10S8016C5_nt3v32Ev");}
void  S8016C5_nt ::v33(){vfunc_called(this, "_ZN10S8016C5_nt3v33Ev");}
void  S8016C5_nt ::v34(){vfunc_called(this, "_ZN10S8016C5_nt3v34Ev");}
void  S8016C5_nt ::v35(){vfunc_called(this, "_ZN10S8016C5_nt3v35Ev");}
void  S8016C5_nt ::v36(){vfunc_called(this, "_ZN10S8016C5_nt3v36Ev");}
void  S8016C5_nt ::v37(){vfunc_called(this, "_ZN10S8016C5_nt3v37Ev");}
void  S8016C5_nt ::v38(){vfunc_called(this, "_ZN10S8016C5_nt3v38Ev");}
void  S8016C5_nt ::v39(){vfunc_called(this, "_ZN10S8016C5_nt3v39Ev");}
S8016C5_nt ::S8016C5_nt(){ note_ctor("S8016C5_nt", this);} // tgen

//skip512 S8016C5_nt

#else // __cplusplus

extern void _ZN10S8016C5_ntC1Ev();
extern void _ZN10S8016C5_ntD1Ev();
Name_Map name_map_S8016C5_nt[] = {
  NSPAIR(_ZN10S8016C5_ntC1Ev),
  NSPAIR(_ZN10S8016C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8016C5_nt[];
extern void _ZN10S8016C5_ntD1Ev();
extern void _ZN10S8016C5_ntD0Ev();
extern void _ZN10S8016C5_nt3v24Ev();
extern void _ZN10S8016C5_nt3v25Ev();
extern void _ZN10S8016C5_nt3v26Ev();
extern void _ZN10S8016C5_nt3v27Ev();
extern void _ZN10S8016C5_nt3v28Ev();
extern void _ZN10S8016C5_nt3v29Ev();
extern void _ZN10S8016C5_nt3v30Ev();
extern void _ZN10S8016C5_nt3v31Ev();
extern void _ZN10S8016C5_nt3v32Ev();
extern void _ZN10S8016C5_nt3v33Ev();
extern void _ZN10S8016C5_nt3v34Ev();
extern void _ZN10S8016C5_nt3v35Ev();
extern void _ZN10S8016C5_nt3v36Ev();
extern void _ZN10S8016C5_nt3v37Ev();
extern void _ZN10S8016C5_nt3v38Ev();
extern void _ZN10S8016C5_nt3v39Ev();
static  VTBL_ENTRY vtc_S8016C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8016C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S8016C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v39Ev,
};
extern VTBL_ENTRY _ZTI10S8016C5_nt[];
VTBL_ENTRY *P__ZTI10S8016C5_nt = _ZTI10S8016C5_nt; 
extern  VTBL_ENTRY _ZTV10S8016C5_nt[];
Class_Descriptor cd_S8016C5_nt = {  "S8016C5_nt", // class name
  0,0,//no base classes
  &(vtc_S8016C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S8016C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8016C5_nt),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8016C6_nt  {
  virtual  ~S8016C6_nt(); // _ZN10S8016C6_ntD1Ev
  virtual void  v40(); // _ZN10S8016C6_nt3v40Ev
  virtual void  v41(); // _ZN10S8016C6_nt3v41Ev
  virtual void  v42(); // _ZN10S8016C6_nt3v42Ev
  virtual void  v43(); // _ZN10S8016C6_nt3v43Ev
  virtual void  v44(); // _ZN10S8016C6_nt3v44Ev
  virtual void  v45(); // _ZN10S8016C6_nt3v45Ev
  virtual void  v46(); // _ZN10S8016C6_nt3v46Ev
  S8016C6_nt(); // tgen
};
//SIG(-1 S8016C6_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7}


 S8016C6_nt ::~S8016C6_nt(){ note_dtor("S8016C6_nt", this);}
void  S8016C6_nt ::v40(){vfunc_called(this, "_ZN10S8016C6_nt3v40Ev");}
void  S8016C6_nt ::v41(){vfunc_called(this, "_ZN10S8016C6_nt3v41Ev");}
void  S8016C6_nt ::v42(){vfunc_called(this, "_ZN10S8016C6_nt3v42Ev");}
void  S8016C6_nt ::v43(){vfunc_called(this, "_ZN10S8016C6_nt3v43Ev");}
void  S8016C6_nt ::v44(){vfunc_called(this, "_ZN10S8016C6_nt3v44Ev");}
void  S8016C6_nt ::v45(){vfunc_called(this, "_ZN10S8016C6_nt3v45Ev");}
void  S8016C6_nt ::v46(){vfunc_called(this, "_ZN10S8016C6_nt3v46Ev");}
S8016C6_nt ::S8016C6_nt(){ note_ctor("S8016C6_nt", this);} // tgen

//skip512 S8016C6_nt

#else // __cplusplus

extern void _ZN10S8016C6_ntC1Ev();
extern void _ZN10S8016C6_ntD1Ev();
Name_Map name_map_S8016C6_nt[] = {
  NSPAIR(_ZN10S8016C6_ntC1Ev),
  NSPAIR(_ZN10S8016C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8016C6_nt[];
extern void _ZN10S8016C6_ntD1Ev();
extern void _ZN10S8016C6_ntD0Ev();
extern void _ZN10S8016C6_nt3v40Ev();
extern void _ZN10S8016C6_nt3v41Ev();
extern void _ZN10S8016C6_nt3v42Ev();
extern void _ZN10S8016C6_nt3v43Ev();
extern void _ZN10S8016C6_nt3v44Ev();
extern void _ZN10S8016C6_nt3v45Ev();
extern void _ZN10S8016C6_nt3v46Ev();
static  VTBL_ENTRY vtc_S8016C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8016C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S8016C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v46Ev,
};
extern VTBL_ENTRY _ZTI10S8016C6_nt[];
VTBL_ENTRY *P__ZTI10S8016C6_nt = _ZTI10S8016C6_nt; 
extern  VTBL_ENTRY _ZTV10S8016C6_nt[];
Class_Descriptor cd_S8016C6_nt = {  "S8016C6_nt", // class name
  0,0,//no base classes
  &(vtc_S8016C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S8016C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8016C6_nt),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8016C1  : S8016C2_nt , S8016C5_nt , S8016C6_nt {
  void *s8016c1f0[2];
  char s8016c1f1;
  ::S4228C19_nt s8016c1f2;
  virtual  ~S8016C1(); // _ZN7S8016C1D1Ev
  virtual void  v1(); // _ZN7S8016C12v1Ev
  virtual void  v2(); // _ZN7S8016C12v2Ev
  virtual void  v3(); // _ZN7S8016C12v3Ev
  virtual void  v4(); // _ZN7S8016C12v4Ev
  virtual void  v5(); // _ZN7S8016C12v5Ev
  virtual void  v6(); // _ZN7S8016C12v6Ev
  virtual void  v7(); // _ZN7S8016C12v7Ev
  virtual void  v8(); // _ZN7S8016C12v8Ev
  virtual void  v9(); // _ZN7S8016C12v9Ev
  virtual void  v10(); // _ZN7S8016C13v10Ev
  virtual void  v11(); // _ZN7S8016C13v11Ev
  virtual void  v12(); // _ZN7S8016C13v12Ev
  virtual void  v13(); // _ZN7S8016C13v13Ev
  virtual void  v14(); // _ZN7S8016C13v14Ev
  virtual void  v15(); // _ZN7S8016C13v15Ev
  virtual void  v16(); // _ZN7S8016C13v16Ev
  virtual void  v17(); // _ZN7S8016C13v17Ev
  virtual void  v18(); // _ZN7S8016C13v18Ev
  virtual void  v19(); // _ZN7S8016C13v19Ev
  virtual void  v20(); // _ZN7S8016C13v20Ev
  virtual void  v21(); // _ZN7S8016C13v21Ev
  virtual void  v22(); // _ZN7S8016C13v22Ev
  virtual void  v23(); // _ZN7S8016C13v23Ev
  S8016C1(); // tgen
};
//SIG(1 S8016C1) C1{ BC2{ vd m FC3{ m Fp Fi[2] FC4{ m}}} BC5{ vd v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39} BC6{ vd v40 v41 v42 v43 v44 v45 v46} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fp[2] Fc FC7{ m Fp Fi FC8{ m}}}


 S8016C1 ::~S8016C1(){ note_dtor("S8016C1", this);}
void  S8016C1 ::v1(){vfunc_called(this, "_ZN7S8016C12v1Ev");}
void  S8016C1 ::v2(){vfunc_called(this, "_ZN7S8016C12v2Ev");}
void  S8016C1 ::v3(){vfunc_called(this, "_ZN7S8016C12v3Ev");}
void  S8016C1 ::v4(){vfunc_called(this, "_ZN7S8016C12v4Ev");}
void  S8016C1 ::v5(){vfunc_called(this, "_ZN7S8016C12v5Ev");}
void  S8016C1 ::v6(){vfunc_called(this, "_ZN7S8016C12v6Ev");}
void  S8016C1 ::v7(){vfunc_called(this, "_ZN7S8016C12v7Ev");}
void  S8016C1 ::v8(){vfunc_called(this, "_ZN7S8016C12v8Ev");}
void  S8016C1 ::v9(){vfunc_called(this, "_ZN7S8016C12v9Ev");}
void  S8016C1 ::v10(){vfunc_called(this, "_ZN7S8016C13v10Ev");}
void  S8016C1 ::v11(){vfunc_called(this, "_ZN7S8016C13v11Ev");}
void  S8016C1 ::v12(){vfunc_called(this, "_ZN7S8016C13v12Ev");}
void  S8016C1 ::v13(){vfunc_called(this, "_ZN7S8016C13v13Ev");}
void  S8016C1 ::v14(){vfunc_called(this, "_ZN7S8016C13v14Ev");}
void  S8016C1 ::v15(){vfunc_called(this, "_ZN7S8016C13v15Ev");}
void  S8016C1 ::v16(){vfunc_called(this, "_ZN7S8016C13v16Ev");}
void  S8016C1 ::v17(){vfunc_called(this, "_ZN7S8016C13v17Ev");}
void  S8016C1 ::v18(){vfunc_called(this, "_ZN7S8016C13v18Ev");}
void  S8016C1 ::v19(){vfunc_called(this, "_ZN7S8016C13v19Ev");}
void  S8016C1 ::v20(){vfunc_called(this, "_ZN7S8016C13v20Ev");}
void  S8016C1 ::v21(){vfunc_called(this, "_ZN7S8016C13v21Ev");}
void  S8016C1 ::v22(){vfunc_called(this, "_ZN7S8016C13v22Ev");}
void  S8016C1 ::v23(){vfunc_called(this, "_ZN7S8016C13v23Ev");}
S8016C1 ::S8016C1(){ note_ctor("S8016C1", this);} // tgen

static void Test_S8016C1()
{
  extern Class_Descriptor cd_S8016C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,14)];
    init_test(&cd_S8016C1, buf);
    S8016C1 *dp, &lv = *(dp=new (buf) S8016C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,52), "sizeof(S8016C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8016C1)");
    check_base_class_offset(lv, (S8016C2_nt*), 0, "S8016C1");
    check_base_class_offset(lv, (S8016C5_nt*), ABISELECT(32,20), "S8016C1");
    check_base_class_offset(lv, (S8016C6_nt*), ABISELECT(40,24), "S8016C1");
    check_field_offset(lv, s8016c1f0, ABISELECT(48,28), "S8016C1.s8016c1f0");
    check_field_offset(lv, s8016c1f1, ABISELECT(64,36), "S8016C1.s8016c1f1");
    check_field_offset(lv, s8016c1f2, ABISELECT(72,40), "S8016C1.s8016c1f2");
    test_class_info(&lv, &cd_S8016C1);
    dp->~S8016C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8016C1(Test_S8016C1, "S8016C1", ABISELECT(88,52));

#else // __cplusplus

extern void _ZN7S8016C1C1Ev();
extern void _ZN7S8016C1D1Ev();
Name_Map name_map_S8016C1[] = {
  NSPAIR(_ZN7S8016C1C1Ev),
  NSPAIR(_ZN7S8016C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8016C2_nt;
extern VTBL_ENTRY _ZTI10S8016C2_nt[];
extern  VTBL_ENTRY _ZTV10S8016C2_nt[];
extern Class_Descriptor cd_S8016C5_nt;
extern VTBL_ENTRY _ZTI10S8016C5_nt[];
extern  VTBL_ENTRY _ZTV10S8016C5_nt[];
extern Class_Descriptor cd_S8016C6_nt;
extern VTBL_ENTRY _ZTI10S8016C6_nt[];
extern  VTBL_ENTRY _ZTV10S8016C6_nt[];
static Base_Class bases_S8016C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8016C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8016C5_nt,    ABISELECT(32,20), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8016C6_nt,    ABISELECT(40,24), //bcp->offset
    47, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8016C1[];
extern void _ZN7S8016C1D1Ev();
extern void _ZN7S8016C1D0Ev();
extern void _ZN7S8016C12v1Ev();
extern void _ZN7S8016C12v2Ev();
extern void _ZN7S8016C12v3Ev();
extern void _ZN7S8016C12v4Ev();
extern void _ZN7S8016C12v5Ev();
extern void _ZN7S8016C12v6Ev();
extern void _ZN7S8016C12v7Ev();
extern void _ZN7S8016C12v8Ev();
extern void _ZN7S8016C12v9Ev();
extern void _ZN7S8016C13v10Ev();
extern void _ZN7S8016C13v11Ev();
extern void _ZN7S8016C13v12Ev();
extern void _ZN7S8016C13v13Ev();
extern void _ZN7S8016C13v14Ev();
extern void _ZN7S8016C13v15Ev();
extern void _ZN7S8016C13v16Ev();
extern void _ZN7S8016C13v17Ev();
extern void _ZN7S8016C13v18Ev();
extern void _ZN7S8016C13v19Ev();
extern void _ZN7S8016C13v20Ev();
extern void _ZN7S8016C13v21Ev();
extern void _ZN7S8016C13v22Ev();
extern void _ZN7S8016C13v23Ev();
extern void ABISELECT(_ZThn32_N7S8016C1D1Ev,_ZThn20_N7S8016C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S8016C1D0Ev,_ZThn20_N7S8016C1D0Ev)();
extern void _ZN10S8016C5_nt3v24Ev();
extern void _ZN10S8016C5_nt3v25Ev();
extern void _ZN10S8016C5_nt3v26Ev();
extern void _ZN10S8016C5_nt3v27Ev();
extern void _ZN10S8016C5_nt3v28Ev();
extern void _ZN10S8016C5_nt3v29Ev();
extern void _ZN10S8016C5_nt3v30Ev();
extern void _ZN10S8016C5_nt3v31Ev();
extern void _ZN10S8016C5_nt3v32Ev();
extern void _ZN10S8016C5_nt3v33Ev();
extern void _ZN10S8016C5_nt3v34Ev();
extern void _ZN10S8016C5_nt3v35Ev();
extern void _ZN10S8016C5_nt3v36Ev();
extern void _ZN10S8016C5_nt3v37Ev();
extern void _ZN10S8016C5_nt3v38Ev();
extern void _ZN10S8016C5_nt3v39Ev();
extern void ABISELECT(_ZThn40_N7S8016C1D1Ev,_ZThn24_N7S8016C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S8016C1D0Ev,_ZThn24_N7S8016C1D0Ev)();
extern void _ZN10S8016C6_nt3v40Ev();
extern void _ZN10S8016C6_nt3v41Ev();
extern void _ZN10S8016C6_nt3v42Ev();
extern void _ZN10S8016C6_nt3v43Ev();
extern void _ZN10S8016C6_nt3v44Ev();
extern void _ZN10S8016C6_nt3v45Ev();
extern void _ZN10S8016C6_nt3v46Ev();
static  VTBL_ENTRY vtc_S8016C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8016C1[0]),
  (VTBL_ENTRY)&_ZN7S8016C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8016C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8016C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8016C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8016C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8016C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8016C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8016C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8016C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8016C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8016C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v12Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v13Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v14Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v15Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v16Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v17Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v18Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v19Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v20Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v21Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v22Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v23Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S8016C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S8016C1D1Ev,_ZThn20_N7S8016C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S8016C1D0Ev,_ZThn20_N7S8016C1D0Ev),
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v39Ev,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S8016C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S8016C1D1Ev,_ZThn24_N7S8016C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S8016C1D0Ev,_ZThn24_N7S8016C1D0Ev),
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v46Ev,
};
extern VTBL_ENTRY _ZTI7S8016C1[];
extern  VTBL_ENTRY _ZTV7S8016C1[];
Class_Descriptor cd_S8016C1 = {  "S8016C1", // class name
  bases_S8016C1, 3,
  &(vtc_S8016C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,52), // object size
  NSPAIRA(_ZTI7S8016C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S8016C1),58, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19588C6  : virtual S19676C9 {
  virtual  ~S19588C6(); // _ZN8S19588C6D2Ev
  S19588C6(); // tgen
};
//SIG(-1 S19588C6) C1{ VBC2{ vd m Fp Fi Fc FD} vd}


 S19588C6 ::~S19588C6(){ note_dtor("S19588C6", this);}
S19588C6 ::S19588C6(){ note_ctor("S19588C6", this);} // tgen

static void Test_S19588C6()
{
  extern Class_Descriptor cd_S19588C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S19588C6, buf);
    S19588C6 *dp, &lv = *(dp=new (buf) S19588C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S19588C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C6)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(16,4), "S19588C6");
    test_class_info(&lv, &cd_S19588C6);
    dp->~S19588C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C6(Test_S19588C6, "S19588C6", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S19588C6C1Ev();
extern void _ZN8S19588C6D2Ev();
Name_Map name_map_S19588C6[] = {
  NSPAIR(_ZN8S19588C6C1Ev),
  NSPAIR(_ZN8S19588C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
static Base_Class bases_S19588C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19588C6[];
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19588C6D1Ev,_ZThn4_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S19588C6D0Ev,_ZThn4_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C6[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19588C6[];
static  VTT_ENTRY vtt_S19588C6[] = {
  {&(_ZTV8S19588C6[3]),  3,10},
  {&(_ZTV8S19588C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
static VTBL_ENTRY alt_thunk_names154[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C6D0Ev,_ZThn4_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C6D1Ev,_ZThn4_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C6 = {  "S19588C6", // class name
  bases_S19588C6, 1,
  &(vtc_S19588C6[0]), // expected_vtbl_contents
  &(vtt_S19588C6[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S19588C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19588C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19588C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names154,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19588C5  : virtual S19676C9 , S19588C6 {
  void *s19588c5f0[10];
  int s19588c5f1;
  __tsi64 s19588c5f2;
  ~S19588C5(); // tgen
  S19588C5(); // tgen
};
//SIG(-1 S19588C5) C1{ VBC2{ vd m Fp Fi Fc FD} BC3{ VBC2 vd} Fp[10] Fi FL}


S19588C5 ::~S19588C5(){ note_dtor("S19588C5", this);} // tgen
S19588C5 ::S19588C5(){ note_ctor("S19588C5", this);} // tgen

static void Test_S19588C5()
{
  extern Class_Descriptor cd_S19588C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,22)];
    init_test(&cd_S19588C5, buf);
    S19588C5 *dp, &lv = *(dp=new (buf) S19588C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,84), "sizeof(S19588C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C5)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(112,56), "S19588C5");
    check_base_class_offset(lv, (S19676C9*)(S19588C6*), ABISELECT(112,56), "S19588C5");
    check_base_class_offset(lv, (S19588C6*), 0, "S19588C5");
    check_field_offset(lv, s19588c5f0, ABISELECT(8,4), "S19588C5.s19588c5f0");
    check_field_offset(lv, s19588c5f1, ABISELECT(88,44), "S19588C5.s19588c5f1");
    check_field_offset(lv, s19588c5f2, ABISELECT(96,48), "S19588C5.s19588c5f2");
    test_class_info(&lv, &cd_S19588C5);
    dp->~S19588C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C5(Test_S19588C5, "S19588C5", ABISELECT(160,84));

#else // __cplusplus

extern void _ZN8S19588C5C1Ev();
extern void _ZN8S19588C5D1Ev();
Name_Map name_map_S19588C5[] = {
  NSPAIR(_ZN8S19588C5C1Ev),
  NSPAIR(_ZN8S19588C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
static Base_Class bases_S19588C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(112,56), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19588C5[];
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C5D1Ev,_ZThn56_N8S19588C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S19588C5D0Ev,_ZThn56_N8S19588C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C5[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S19588C5[];
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C6__8S19588C5[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C6D1Ev,_ZThn56_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19588C6D0Ev,_ZThn56_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C6__8S19588C5[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
static  VTT_ENTRY vtt_S19588C5[] = {
  {&(_ZTV8S19588C5[3]),  3,10},
  {&(_tg__ZTV8S19588C6__8S19588C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C6__8S19588C5[3]),  3,5},
  {&(_ZTV8S19588C5[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
static VTBL_ENTRY alt_thunk_names155[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C6D0Ev,_ZThn56_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C6D1Ev,_ZThn56_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C5D0Ev,_ZThn56_N8S19588C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C5D1Ev,_ZThn56_N8S19588C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C5 = {  "S19588C5", // class name
  bases_S19588C5, 2,
  &(vtc_S19588C5[0]), // expected_vtbl_contents
  &(vtt_S19588C5[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI8S19588C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19588C5),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19588C5),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names155,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19588C3  : virtual S19676C9 , virtual S19588C5 , S19588C6 {
  void *s19588c3f0;
  int s19588c3f1;
  ::S19676C9 s19588c3f2[3];
  int s19588c3f3[7];
  virtual  ~S19588C3(); // _ZN8S19588C3D2Ev
  S19588C3(); // tgen
};
//SIG(-1 S19588C3) C1{ VBC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 BC4{ VBC2 vd} Fp[10] Fi FL} BC4 vd Fp Fi FC2[3] Fi[7]}


 S19588C3 ::~S19588C3(){ note_dtor("S19588C3", this);}
S19588C3 ::S19588C3(){ note_ctor("S19588C3", this);} // tgen

static void Test_S19588C3()
{
  extern Class_Descriptor cd_S19588C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,53)];
    init_test(&cd_S19588C3, buf);
    S19588C3 *dp, &lv = *(dp=new (buf) S19588C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,208), "sizeof(S19588C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C3)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S19588C3");
    check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(208,124), "S19588C3");
    check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(208,124), "S19588C3");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*), ABISELECT(208,124), "S19588C3");
    check_base_class_offset(lv, (S19588C6*)(S19588C5*), ABISELECT(256,152), "S19588C3");
    check_base_class_offset(lv, (S19588C5*), ABISELECT(256,152), "S19588C3");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*), 0, "S19588C3");
    check_field_offset(lv, s19588c3f0, ABISELECT(8,4), "S19588C3.s19588c3f0");
    check_field_offset(lv, s19588c3f1, ABISELECT(16,8), "S19588C3.s19588c3f1");
    check_field_offset(lv, s19588c3f2, ABISELECT(32,12), "S19588C3.s19588c3f2");
    check_field_offset(lv, s19588c3f3, ABISELECT(176,96), "S19588C3.s19588c3f3");
    test_class_info(&lv, &cd_S19588C3);
    dp->~S19588C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C3(Test_S19588C3, "S19588C3", ABISELECT(368,208));

#else // __cplusplus

extern void _ZN8S19588C3C1Ev();
extern void _ZN8S19588C3D2Ev();
Name_Map name_map_S19588C3[] = {
  NSPAIR(_ZN8S19588C3C1Ev),
  NSPAIR(_ZN8S19588C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
static Base_Class bases_S19588C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(208,124), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    ABISELECT(256,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(256,152), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19588C3[];
extern void _ZN8S19588C3D1Ev();
extern void _ZN8S19588C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn208_N8S19588C3D1Ev,_ZThn124_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn208_N8S19588C3D0Ev,_ZThn124_N8S19588C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn256_N8S19588C3D1Ev,_ZThn152_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn256_N8S19588C3D0Ev,_ZThn152_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C3[] = {
  ABISELECT(256,152),
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&_ZN8S19588C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C3D0Ev,
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev),
  ABISELECT(-256,-152),
  ABISELECT(-48,-28),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19588C3[];
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C6__A1__8S19588C3[] = {
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn208_N8S19588C6D1Ev,_ZThn124_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn208_N8S19588C6D0Ev,_ZThn124_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C6__A1__8S19588C3[] = {
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C3[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__8S19588C3[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C3[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__8S19588C3[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
static  VTT_ENTRY vtt_S19588C3[] = {
  {&(_ZTV8S19588C3[4]),  4,17},
  {&(_tg__ZTV8S19588C6__A1__8S19588C3[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C6__A1__8S19588C3[3]),  3,5},
  {&(_ZTV8S19588C3[9]),  9,17},
  {&(_ZTV8S19588C3[15]),  15,17},
  {&(_tg__ZTV8S19588C5__8S19588C3[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__8S19588C3[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C3[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__8S19588C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19588C3[];
extern  VTBL_ENTRY _ZTV8S19588C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C3[];
static VTBL_ENTRY alt_thunk_names156[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19588C6D0Ev,_ZThn124_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19588C6D1Ev,_ZThn124_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19588C3D0Ev,_ZThn152_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19588C3D1Ev,_ZThn152_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19588C3D0Ev,_ZThn124_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19588C3D1Ev,_ZThn124_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C3 = {  "S19588C3", // class name
  bases_S19588C3, 4,
  &(vtc_S19588C3[0]), // expected_vtbl_contents
  &(vtt_S19588C3[0]), // expected_vtt_contents
  ABISELECT(368,208), // object size
  NSPAIRA(_ZTI8S19588C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19588C3),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19588C3),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names156,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19588C8  : virtual S19588C5 , S19588C6 {
  int s19588c8f0;
  virtual  ~S19588C8(); // _ZN8S19588C8D2Ev
  S19588C8(); // tgen
};
//SIG(-1 S19588C8) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} BC4 vd Fi}


 S19588C8 ::~S19588C8(){ note_dtor("S19588C8", this);}
S19588C8 ::S19588C8(){ note_ctor("S19588C8", this);} // tgen

static void Test_S19588C8()
{
  extern Class_Descriptor cd_S19588C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,24)];
    init_test(&cd_S19588C8, buf);
    S19588C8 *dp, &lv = *(dp=new (buf) S19588C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S19588C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C8)");
    check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(128,64), "S19588C8");
    check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(128,64), "S19588C8");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*), ABISELECT(128,64), "S19588C8");
    check_base_class_offset(lv, (S19588C6*)(S19588C5*), ABISELECT(16,8), "S19588C8");
    check_base_class_offset(lv, (S19588C5*), ABISELECT(16,8), "S19588C8");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*), 0, "S19588C8");
    check_field_offset(lv, s19588c8f0, ABISELECT(8,4), "S19588C8.s19588c8f0");
    test_class_info(&lv, &cd_S19588C8);
    dp->~S19588C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C8(Test_S19588C8, "S19588C8", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN8S19588C8C1Ev();
extern void _ZN8S19588C8D2Ev();
Name_Map name_map_S19588C8[] = {
  NSPAIR(_ZN8S19588C8C1Ev),
  NSPAIR(_ZN8S19588C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
static Base_Class bases_S19588C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(128,64), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19588C8[];
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19588C8D1Ev,_ZThn8_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19588C8D0Ev,_ZThn8_N8S19588C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19588C8D1Ev,_ZThn64_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19588C8D0Ev,_ZThn64_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C8[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19588C8[];
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C6__A1__8S19588C8[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S19588C6D1Ev,_ZThn64_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S19588C6D0Ev,_ZThn64_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C6__A1__8S19588C8[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C8[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__8S19588C8[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C6D1Ev,_ZThn56_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19588C6D0Ev,_ZThn56_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C8[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C5D1Ev,_ZThn56_N8S19588C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S19588C5D0Ev,_ZThn56_N8S19588C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__8S19588C8[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
static  VTT_ENTRY vtt_S19588C8[] = {
  {&(_ZTV8S19588C8[4]),  4,17},
  {&(_tg__ZTV8S19588C6__A1__8S19588C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C6__A1__8S19588C8[3]),  3,5},
  {&(_ZTV8S19588C8[10]),  10,17},
  {&(_ZTV8S19588C8[15]),  15,17},
  {&(_tg__ZTV8S19588C5__8S19588C8[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__8S19588C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__8S19588C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
static VTBL_ENTRY alt_thunk_names157[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C5D0Ev,_ZThn56_N8S19588C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C5D1Ev,_ZThn56_N8S19588C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C6D0Ev,_ZThn56_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19588C6D0Ev,_ZThn64_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C6D1Ev,_ZThn56_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19588C6D1Ev,_ZThn64_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19588C8D0Ev,_ZThn64_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19588C8D1Ev,_ZThn64_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C8D0Ev,_ZThn8_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C8D1Ev,_ZThn8_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C8 = {  "S19588C8", // class name
  bases_S19588C8, 4,
  &(vtc_S19588C8[0]), // expected_vtbl_contents
  &(vtt_S19588C8[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI8S19588C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19588C8),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19588C8),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names157,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19588C10  : S19676C9 , virtual S19588C6 , virtual S19588C5 , S19588C8 {
  int s19588c10f0;
  virtual  ~S19588C10(); // _ZN9S19588C10D2Ev
  S19588C10(); // tgen
};
//SIG(-1 S19588C10) C1{ BC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 vd} VBC4{ VBC2 BC3 Fp[10] Fi FL} BC5{ VBC4 BC3 vd Fi} vd Fi}


 S19588C10 ::~S19588C10(){ note_dtor("S19588C10", this);}
S19588C10 ::S19588C10(){ note_ctor("S19588C10", this);} // tgen

static void Test_S19588C10()
{
  extern Class_Descriptor cd_S19588C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,33)];
    init_test(&cd_S19588C10, buf);
    S19588C10 *dp, &lv = *(dp=new (buf) S19588C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,128), "sizeof(S19588C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C10)");
    /*is_ambiguous_... S19588C10::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), 0, "S19588C10");
    /*is_ambiguous_... S19588C10::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*), ABISELECT(80,44), "S19588C10");
    check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(80,44), "S19588C10");
    check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(80,44), "S19588C10");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*), ABISELECT(80,44), "S19588C10");
    /*is_ambiguous_... S19588C10::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*), ABISELECT(64,40), "S19588C10");
    check_base_class_offset(lv, (S19588C6*)(S19588C5*), ABISELECT(128,72), "S19588C10");
    check_base_class_offset(lv, (S19588C5*), ABISELECT(128,72), "S19588C10");
    check_base_class_offset(lv, (S19588C5*)(S19588C8*), ABISELECT(128,72), "S19588C10");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*), ABISELECT(48,28), "S19588C10");
    check_base_class_offset(lv, (S19588C8*), ABISELECT(48,28), "S19588C10");
    check_field_offset(lv, s19588c10f0, ABISELECT(60,36), "S19588C10.s19588c10f0");
    test_class_info(&lv, &cd_S19588C10);
    dp->~S19588C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C10(Test_S19588C10, "S19588C10", ABISELECT(240,128));

#else // __cplusplus

extern void _ZN9S19588C10C1Ev();
extern void _ZN9S19588C10D2Ev();
Name_Map name_map_S19588C10[] = {
  NSPAIR(_ZN9S19588C10C1Ev),
  NSPAIR(_ZN9S19588C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
static Base_Class bases_S19588C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(80,44), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(64,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(128,72), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(48,28), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19588C10[];
extern void _ZN9S19588C10D1Ev();
extern void _ZN9S19588C10D0Ev();
extern void ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S19588C10D1Ev,_ZThn40_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S19588C10D0Ev,_ZThn40_N9S19588C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S19588C10D1Ev,_ZThn44_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S19588C10D0Ev,_ZThn44_N9S19588C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S19588C10D1Ev,_ZThn72_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S19588C10D0Ev,_ZThn72_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C10[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&_ZN9S19588C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C10D0Ev,
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(16,4),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19588C10[];
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C10[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C8__A2__9S19588C10[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S19588C6D1Ev,_ZThn16_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S19588C6D0Ev,_ZThn16_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C8__A2__9S19588C10[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S19588C8D1Ev,_ZThn44_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S19588C8D0Ev,_ZThn44_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C8__9S19588C10[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S19588C8D1Ev,_ZThn16_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn32_N8S19588C8D0Ev,_ZThn16_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C8__9S19588C10[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C6__9S19588C10[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19588C6D1Ev,_ZThn4_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S19588C6D0Ev,_ZThn4_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C6__9S19588C10[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C10[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__A1__9S19588C10[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__A1__9S19588C10[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__9S19588C10[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
static  VTT_ENTRY vtt_S19588C10[] = {
  {&(_ZTV9S19588C10[5]),  5,30},
  {&(_tg__ZTV8S19588C8__9S19588C10[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C8__A2__9S19588C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C8__A2__9S19588C10[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C8__9S19588C10[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C8__9S19588C10[3]),  3,5},
  {&(_ZTV9S19588C10[17]),  17,30},
  {&(_ZTV9S19588C10[22]),  22,30},
  {&(_ZTV9S19588C10[28]),  28,30},
  {&(_ZTV9S19588C10[11]),  11,30},
  {&(_tg__ZTV8S19588C6__9S19588C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C6__9S19588C10[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C10[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__A1__9S19588C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__A1__9S19588C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__9S19588C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19588C10[];
extern  VTBL_ENTRY _ZTV9S19588C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C10[];
static VTBL_ENTRY alt_thunk_names158[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C8D0Ev,_ZThn16_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C8D1Ev,_ZThn16_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19588C8D0Ev,_ZThn44_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19588C8D1Ev,_ZThn44_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C6D0Ev,_ZThn4_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C6D0Ev,_ZThn16_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C6D1Ev,_ZThn4_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C6D1Ev,_ZThn16_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19588C10D0Ev,_ZThn44_N9S19588C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19588C10D1Ev,_ZThn44_N9S19588C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19588C10D0Ev,_ZThn72_N9S19588C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19588C10D0Ev,_ZThn40_N9S19588C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19588C10D1Ev,_ZThn72_N9S19588C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19588C10D1Ev,_ZThn40_N9S19588C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C10 = {  "S19588C10", // class name
  bases_S19588C10, 7,
  &(vtc_S19588C10[0]), // expected_vtbl_contents
  &(vtt_S19588C10[0]), // expected_vtt_contents
  ABISELECT(240,128), // object size
  NSPAIRA(_ZTI9S19588C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19588C10),30, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19588C10),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names158,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19588C9  : virtual S19588C5 , virtual S19588C10 , S19588C3 , S19676C9 , S19588C6 {
  virtual  ~S19588C9(); // _ZN8S19588C9D2Ev
  S19588C9(); // tgen
};
//SIG(-1 S19588C9) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC2 BC4 vd Fi} vd Fi} BC7{ VBC3 VBC2 BC4 vd Fp Fi FC3[3] Fi[7]} BC3 BC4 vd}


 S19588C9 ::~S19588C9(){ note_dtor("S19588C9", this);}
S19588C9 ::S19588C9(){ note_ctor("S19588C9", this);} // tgen

static void Test_S19588C9()
{
  extern Class_Descriptor cd_S19588C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(32,72)];
    init_test(&cd_S19588C9, buf);
    S19588C9 *dp, &lv = *(dp=new (buf) S19588C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,284), "sizeof(S19588C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C9)");
    check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(368,212), "S19588C9");
    check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(368,212), "S19588C9");
    /*is_ambiguous_... S19588C9::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*), ABISELECT(368,212), "S19588C9");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(368,212), "S19588C9");
    check_base_class_offset(lv, (S19676C9*)(S19588C3*), ABISELECT(368,212), "S19588C9");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C3*), ABISELECT(368,212), "S19588C9");
    /*is_ambiguous_... S19588C9::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*), ABISELECT(368,212), "S19588C9");
    check_base_class_offset(lv, (S19588C6*)(S19588C5*), ABISELECT(264,156), "S19588C9");
    check_base_class_offset(lv, (S19588C5*), ABISELECT(264,156), "S19588C9");
    check_base_class_offset(lv, (S19588C5*)(S19588C10*), ABISELECT(264,156), "S19588C9");
    check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C10*), ABISELECT(264,156), "S19588C9");
    check_base_class_offset(lv, (S19588C5*)(S19588C3*), ABISELECT(264,156), "S19588C9");
    /*is_ambiguous_... S19588C10::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C10*), ABISELECT(416,240), "S19588C9");
    /*is_ambiguous_... S19588C10::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C10*), ABISELECT(480,280), "S19588C9");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(464,268), "S19588C9");
    check_base_class_offset(lv, (S19588C8*)(S19588C10*), ABISELECT(464,268), "S19588C9");
    check_base_class_offset(lv, (S19588C10*), ABISELECT(416,240), "S19588C9");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C3*), 0, "S19588C9");
    check_base_class_offset(lv, (S19588C3*), 0, "S19588C9");
    /*is_ambiguous_... S19588C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S19588C9");
    /*is_ambiguous_... S19588C9::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*), ABISELECT(256,152), "S19588C9");
    test_class_info(&lv, &cd_S19588C9);
    dp->~S19588C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C9(Test_S19588C9, "S19588C9", ABISELECT(496,284));

#else // __cplusplus

extern void _ZN8S19588C9C1Ev();
extern void _ZN8S19588C9D2Ev();
Name_Map name_map_S19588C9[] = {
  NSPAIR(_ZN8S19588C9C1Ev),
  NSPAIR(_ZN8S19588C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C10;
extern VTBL_ENTRY _ZTI9S19588C10[];
extern  VTBL_ENTRY _ZTV9S19588C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C10[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C3;
extern VTBL_ENTRY _ZTI8S19588C3[];
extern  VTBL_ENTRY _ZTV8S19588C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
static Base_Class bases_S19588C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(368,212), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(264,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(264,156), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    ABISELECT(416,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(480,280), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(464,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(464,268), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19588C10,    ABISELECT(416,240), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19588C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(208,124), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19588C6,    ABISELECT(256,152), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19588C9[];
extern void _ZN8S19588C9D1Ev();
extern void _ZN8S19588C9D0Ev();
extern void ABISELECT(_ZThn208_N8S19588C9D1Ev,_ZThn124_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn208_N8S19588C9D0Ev,_ZThn124_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn256_N8S19588C9D1Ev,_ZThn152_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn256_N8S19588C9D0Ev,_ZThn152_N8S19588C9D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn264_N8S19588C9D1Ev,_ZThn156_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn264_N8S19588C9D0Ev,_ZThn156_N8S19588C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn368_N8S19588C9D1Ev,_ZThn212_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn368_N8S19588C9D0Ev,_ZThn212_N8S19588C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn416_N8S19588C9D1Ev,_ZThn240_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn416_N8S19588C9D0Ev,_ZThn240_N8S19588C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S19588C9D1Ev,_ZTvn28_n24_N8S19588C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C9D0Ev,_ZTvn28_n24_N8S19588C9D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn480_N8S19588C9D1Ev,_ZThn280_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn480_N8S19588C9D0Ev,_ZThn280_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C9[] = {
  ABISELECT(480,280),
  ABISELECT(416,240),
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&_ZN8S19588C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C9D0Ev,
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19588C9D1Ev,_ZThn124_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19588C9D0Ev,_ZThn124_N8S19588C9D0Ev),
  ABISELECT(112,60),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19588C9D1Ev,_ZThn152_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19588C9D0Ev,_ZThn152_N8S19588C9D0Ev),
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev),
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev),
  ABISELECT(-416,-240),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev),
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-464,-268),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C9D1Ev,_ZTvn28_n24_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C9D0Ev,_ZTvn28_n24_N8S19588C9D0Ev),
  ABISELECT(-480,-280),
  ABISELECT(-112,-68),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19588C9[];
extern void _ZN8S19588C3D1Ev();
extern void _ZN8S19588C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C3__8S19588C9[] = {
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&_ZN8S19588C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C3D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C3__A3__8S19588C9[] = {
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn368_N8S19588C6D1Ev,_ZThn212_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn368_N8S19588C6D0Ev,_ZThn212_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C3__A3__8S19588C9[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn368_N8S19588C3D1Ev,_ZThn212_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn368_N8S19588C3D0Ev,_ZThn212_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C3__8S19588C9[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn264_N8S19588C3D1Ev,_ZThn156_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn264_N8S19588C3D0Ev,_ZThn156_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C3__8S19588C9[] = {
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev),
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C6__A__8S19588C9[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C6D1Ev,_ZThn60_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19588C6D0Ev,_ZThn60_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C6__A__8S19588C9[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C9[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__8S19588C9[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn104_N8S19588C6D1Ev,_ZThn56_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn104_N8S19588C6D0Ev,_ZThn56_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C9[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZThn104_N8S19588C5D1Ev,_ZThn56_N8S19588C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
extern void ABISELECT(_ZThn104_N8S19588C5D0Ev,_ZThn56_N8S19588C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__8S19588C9[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
extern void _ZN9S19588C10D1Ev();
extern void _ZN9S19588C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C9[] = {
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&_ZN9S19588C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C10D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__8S19588C9[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C10__A2__8S19588C9[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A2__8S19588C9[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C10__8S19588C9[] = {
  ABISELECT(200,112),
  ABISELECT(104,56),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C10__8S19588C9[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S19588C10D1Ev,_ZThn40_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S19588C10D0Ev,_ZThn40_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__9S19588C10__8S19588C9[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19588C10__8S19588C9[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C10__8S19588C9[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C10__8S19588C9[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev),
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C6__A1__8S19588C9[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C6__A1__8S19588C9[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
static  VTT_ENTRY vtt_S19588C9[] = {
  {&(_ZTV8S19588C9[6]),  6,48},
  {&(_tg__ZTV8S19588C3__8S19588C9[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C3__A3__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C3__A3__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C3__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C3__8S19588C9[4]),  4,6},
  {&(_tg__ZTV8S19588C6__A__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C6__A__8S19588C9[3]),  3,5},
  {&(_ZTV8S19588C9[21]),  21,48},
  {&(_ZTV8S19588C9[26]),  26,48},
  {&(_ZTV8S19588C9[34]),  34,48},
  {&(_ZTV8S19588C9[46]),  46,48},
  {&(_ZTV8S19588C9[40]),  40,48},
  {&(_ZTV8S19588C9[15]),  15,48},
  {&(_tg__ZTV8S19588C5__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__8S19588C9[3]),  3,5},
  {&(_tg__ZTV9S19588C10__8S19588C9[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C10__8S19588C9[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C10__A2__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A2__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C10__8S19588C9[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C10__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19588C6__9S19588C10__8S19588C9[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19588C10__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C10__8S19588C9[4]),  4,6},
  {&(_tg__ZTV8S19588C8__9S19588C10__8S19588C9[4]),  4,6},
  {&(_tg__ZTV8S19588C6__A1__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C6__A1__8S19588C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19588C9[];
extern  VTBL_ENTRY _ZTV8S19588C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C9[];
static VTBL_ENTRY alt_thunk_names159[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19588C10D0Ev,_ZThn40_N9S19588C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19588C10D1Ev,_ZThn40_N9S19588C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19588C5D0Ev,_ZThn56_N8S19588C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19588C5D1Ev,_ZThn56_N8S19588C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19588C3D0Ev,_ZThn156_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19588C3D1Ev,_ZThn156_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19588C3D0Ev,_ZThn212_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19588C3D1Ev,_ZThn212_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19588C6D0Ev,_ZThn56_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C6D0Ev,_ZThn60_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19588C6D0Ev,_ZThn212_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19588C6D1Ev,_ZThn56_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C6D1Ev,_ZThn60_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19588C6D1Ev,_ZThn212_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S19588C9D0Ev,_ZThn240_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S19588C9D1Ev,_ZThn240_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19588C9D0Ev,_ZThn212_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19588C9D1Ev,_ZThn212_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S19588C9D0Ev,_ZThn280_N8S19588C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19588C9D0Ev,_ZThn156_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S19588C9D1Ev,_ZThn280_N8S19588C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19588C9D1Ev,_ZThn156_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C9 = {  "S19588C9", // class name
  bases_S19588C9, 12,
  &(vtc_S19588C9[0]), // expected_vtbl_contents
  &(vtt_S19588C9[0]), // expected_vtt_contents
  ABISELECT(496,284), // object size
  NSPAIRA(_ZTI8S19588C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19588C9),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19588C9),30, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names159,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19588C7  : virtual S19588C6 , virtual S19588C8 , S19588C5 , S19588C9 , S19588C10 {
  short s19588c7f0;
  virtual  ~S19588C7(); // _ZN8S19588C7D2Ev
  S19588C7(); // tgen
};
//SIG(-1 S19588C7) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ VBC5{ VBC3 BC2 Fp[10] Fi FL} BC2 vd Fi} BC5 BC6{ VBC5 VBC7{ BC3 VBC2 VBC5 BC4 vd Fi} BC8{ VBC3 VBC5 BC2 vd Fp Fi FC3[3] Fi[7]} BC3 BC2 vd} BC7 vd Fs}


 S19588C7 ::~S19588C7(){ note_dtor("S19588C7", this);}
S19588C7 ::S19588C7(){ note_ctor("S19588C7", this);} // tgen

static void Test_S19588C7()
{
  extern Class_Descriptor cd_S19588C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,99)];
    init_test(&cd_S19588C7, buf);
    S19588C7 *dp, &lv = *(dp=new (buf) S19588C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,392), "sizeof(S19588C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C7)");
    /*is_ambiguous_... S19588C7::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(464,260), "S19588C7");
    check_base_class_offset(lv, (S19676C9*)(S19588C3*)(S19588C9*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C3*)(S19588C9*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C9::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C9*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*), ABISELECT(456,256), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C10*), ABISELECT(456,256), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C10*), ABISELECT(456,256), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C5*), ABISELECT(528,296), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C8 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*), ABISELECT(528,296), "S19588C7");
    check_base_class_offset(lv, (S19588C5*)(S19588C9*), ABISELECT(528,296), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C10*), ABISELECT(528,296), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C10*), ABISELECT(528,296), "S19588C7");
    check_base_class_offset(lv, (S19588C5*)(S19588C3*)(S19588C9*), ABISELECT(528,296), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C10*), ABISELECT(528,296), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C10*), ABISELECT(528,296), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C8 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*), ABISELECT(512,288), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C8 */ AMB_check_base_class_offset(lv, (S19588C8*), ABISELECT(512,288), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C5*), 0, "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19588C5*), 0, "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C10*), ABISELECT(640,352), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(688,380), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C8*)(S19588C10*), ABISELECT(688,380), "S19588C7");
    check_base_class_offset(lv, (S19588C10*)(S19588C9*), ABISELECT(640,352), "S19588C7");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C3*)(S19588C9*), ABISELECT(112,56), "S19588C7");
    check_base_class_offset(lv, (S19588C3*)(S19588C9*), ABISELECT(112,56), "S19588C7");
    /*is_ambiguous_... S19588C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C9*), ABISELECT(320,180), "S19588C7");
    /*is_ambiguous_... S19588C9::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C9*), ABISELECT(368,208), "S19588C7");
    check_base_class_offset(lv, (S19588C9*), ABISELECT(112,56), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C10*), ABISELECT(384,212), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(432,240), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C8*)(S19588C10*), ABISELECT(432,240), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C10*), ABISELECT(384,212), "S19588C7");
    check_field_offset(lv, s19588c7f0, ABISELECT(448,252), "S19588C7.s19588c7f0");
    test_class_info(&lv, &cd_S19588C7);
    dp->~S19588C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C7(Test_S19588C7, "S19588C7", ABISELECT(704,392));

#else // __cplusplus

extern void _ZN8S19588C7C1Ev();
extern void _ZN8S19588C7D2Ev();
Name_Map name_map_S19588C7[] = {
  NSPAIR(_ZN8S19588C7C1Ev),
  NSPAIR(_ZN8S19588C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C10;
extern VTBL_ENTRY _ZTI9S19588C10[];
extern  VTBL_ENTRY _ZTV9S19588C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C10[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C3;
extern VTBL_ENTRY _ZTI8S19588C3[];
extern  VTBL_ENTRY _ZTV8S19588C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C9;
extern VTBL_ENTRY _ZTI8S19588C9[];
extern  VTBL_ENTRY _ZTV8S19588C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C10;
extern VTBL_ENTRY _ZTI9S19588C10[];
extern  VTBL_ENTRY _ZTV9S19588C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C10[];
static Base_Class bases_S19588C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(464,260), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(456,256), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    ABISELECT(528,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(528,296), //bcp->offset
    57, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(512,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(512,288), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19588C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(640,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(688,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(688,380), //bcp->offset
    71, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19588C10,    ABISELECT(640,352), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19588C3,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(320,180), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(368,208), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19588C9,    ABISELECT(112,56), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(384,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(432,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(432,240), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19588C10,    ABISELECT(384,212), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19588C7[];
extern void _ZN8S19588C7D1Ev();
extern void _ZN8S19588C7D0Ev();
extern void ABISELECT(_ZThn112_N8S19588C7D1Ev,_ZThn56_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C7D0Ev,_ZThn56_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn320_N8S19588C7D1Ev,_ZThn180_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn320_N8S19588C7D0Ev,_ZThn180_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn368_N8S19588C7D1Ev,_ZThn208_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn368_N8S19588C7D0Ev,_ZThn208_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn384_N8S19588C7D1Ev,_ZThn212_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn384_N8S19588C7D0Ev,_ZThn212_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn432_N8S19588C7D1Ev,_ZThn240_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn432_N8S19588C7D0Ev,_ZThn240_N8S19588C7D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn456_N8S19588C7D1Ev,_ZThn256_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn456_N8S19588C7D0Ev,_ZThn256_N8S19588C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C7D1Ev,_ZTv0_n12_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn464_N8S19588C7D1Ev,_ZThn260_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C7D0Ev,_ZTv0_n12_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn464_N8S19588C7D0Ev,_ZThn260_N8S19588C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C7D1Ev,_ZTv0_n20_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn512_N8S19588C7D1Ev,_ZThn288_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C7D0Ev,_ZTv0_n20_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn512_N8S19588C7D0Ev,_ZThn288_N8S19588C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn528_N8S19588C7D1Ev,_ZThn296_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn528_N8S19588C7D0Ev,_ZThn296_N8S19588C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C7D1Ev,_ZTv0_n24_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn640_N8S19588C7D1Ev,_ZThn352_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C7D0Ev,_ZTv0_n24_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn640_N8S19588C7D0Ev,_ZThn352_N8S19588C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S19588C7D1Ev,_ZTvn28_n24_N8S19588C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C7D0Ev,_ZTvn28_n24_N8S19588C7D0Ev)();
static  VTBL_ENTRY vtc_S19588C7[] = {
  ABISELECT(640,352),
  ABISELECT(528,296),
  ABISELECT(512,288),
  ABISELECT(456,256),
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&_ZN8S19588C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C7D0Ev,
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19588C7D1Ev,_ZThn56_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19588C7D0Ev,_ZThn56_N8S19588C7D0Ev),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S19588C7D1Ev,_ZThn180_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S19588C7D0Ev,_ZThn180_N8S19588C7D0Ev),
  ABISELECT(96,52),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S19588C7D1Ev,_ZThn208_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S19588C7D0Ev,_ZThn208_N8S19588C7D0Ev),
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S19588C7D1Ev,_ZThn212_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S19588C7D0Ev,_ZThn212_N8S19588C7D0Ev),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S19588C7D1Ev,_ZThn240_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S19588C7D0Ev,_ZThn240_N8S19588C7D0Ev),
  ABISELECT(-456,-256),
  ABISELECT(8,4),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev),
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C7D1Ev,_ZTv0_n12_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C7D0Ev,_ZTv0_n12_N8S19588C7D0Ev),
  ABISELECT(-512,-288),
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  ABISELECT(-512,-288),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C7D1Ev,_ZTv0_n20_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C7D0Ev,_ZTv0_n20_N8S19588C7D0Ev),
  ABISELECT(-528,-296),
  ABISELECT(-64,-36),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev),
  ABISELECT(-640,-352),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-640,-352),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C7D1Ev,_ZTv0_n24_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C7D0Ev,_ZTv0_n24_N8S19588C7D0Ev),
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C7D1Ev,_ZTvn28_n24_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C7D0Ev,_ZTvn28_n24_N8S19588C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19588C7[];
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__A__8S19588C7[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__A3__8S19588C7[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn464_N8S19588C6D1Ev,_ZThn260_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn464_N8S19588C6D0Ev,_ZThn260_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__A3__8S19588C7[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S19588C5D1Ev,_ZThn260_N8S19588C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
extern void ABISELECT(_ZThn464_N8S19588C5D0Ev,_ZThn260_N8S19588C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__A__8S19588C7[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
extern void _ZN8S19588C9D1Ev();
extern void _ZN8S19588C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C9__8S19588C7[] = {
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&_ZN8S19588C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C9D0Ev,
};
extern void _ZN8S19588C3D1Ev();
extern void _ZN8S19588C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C38S19588C9__8S19588C7[] = {
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&_ZN8S19588C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C3D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C38S19588C9__A5__8S19588C7[] = {
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn352_N8S19588C6D1Ev,_ZThn204_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn352_N8S19588C6D0Ev,_ZThn204_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C38S19588C9__A5__8S19588C7[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn352_N8S19588C3D1Ev,_ZThn204_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn352_N8S19588C3D0Ev,_ZThn204_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C38S19588C9__8S19588C7[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn416_N8S19588C3D1Ev,_ZThn240_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn416_N8S19588C3D0Ev,_ZThn240_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C38S19588C9__8S19588C7[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev),
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C9__A6__8S19588C7[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S19588C6D1Ev,_ZThn52_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S19588C6D0Ev,_ZThn52_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C9__A6__8S19588C7[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn416_N8S19588C9D1Ev,_ZThn240_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn416_N8S19588C9D0Ev,_ZThn240_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C9__8S19588C7[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn352_N8S19588C9D1Ev,_ZThn204_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn352_N8S19588C9D0Ev,_ZThn204_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C9__8S19588C7[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn528_N8S19588C9D1Ev,_ZThn296_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn528_N8S19588C9D0Ev,_ZThn296_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C9__8S19588C7[] = {
  ABISELECT(-528,-296),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn344_N8S19588C9D1Ev,_ZThn200_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn344_N8S19588C9D0Ev,_ZThn200_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__A1__8S19588C9__8S19588C7[] = {
  ABISELECT(-344,-200),
  ABISELECT(8,4),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19588C9D1Ev,_ZTvn28_n24_N8S19588C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C9D0Ev,_ZTvn28_n24_N8S19588C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__8S19588C9__8S19588C7[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C9D1Ev,_ZTvn28_n24_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C9D0Ev,_ZTvn28_n24_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZThn256_N8S19588C9D1Ev,_ZThn152_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn256_N8S19588C9D0Ev,_ZThn152_N8S19588C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C6__A__8S19588C9__8S19588C7[] = {
  ABISELECT(96,52),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19588C9D1Ev,_ZThn152_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19588C9D0Ev,_ZThn152_N8S19588C9D0Ev),
};
extern void _ZN9S19588C10D1Ev();
extern void _ZN9S19588C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C10__A__8S19588C7[] = {
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&_ZN9S19588C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C10D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A2__8S19588C7[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C10__A7__8S19588C7[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S19588C6D1Ev,_ZThn20_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S19588C6D0Ev,_ZThn20_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A7__8S19588C7[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19588C8D1Ev,_ZThn56_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19588C8D0Ev,_ZThn56_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C10__A2__8S19588C7[] = {
  ABISELECT(-96,-56),
  ABISELECT(-64,-36),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S19588C8D1Ev,_ZThn20_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn32_N8S19588C8D0Ev,_ZThn20_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C10__A2__8S19588C7[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn72_N9S19588C10D1Ev,_ZThn44_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn72_N9S19588C10D0Ev,_ZThn44_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__9S19588C10__A__8S19588C7[] = {
  ABISELECT(-72,-44),
  ABISELECT(8,4),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S19588C10D1Ev,_ZThn48_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S19588C10D0Ev,_ZThn48_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19588C10__A__8S19588C7[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn144_N9S19588C10D1Ev,_ZThn84_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn144_N9S19588C10D0Ev,_ZThn84_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C10__A__8S19588C7[] = {
  ABISELECT(-144,-84),
  ABISELECT(-64,-36),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C10__A__8S19588C7[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev),
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C6__8S19588C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S19588C6D1Ev,_ZThn4_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S19588C6D0Ev,_ZThn4_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C6__8S19588C7[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C8__8S19588C7[] = {
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C8__A2__8S19588C7[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C8__A2__8S19588C7[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19588C8D1Ev,_ZThn8_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19588C8D0Ev,_ZThn8_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C8__8S19588C7[] = {
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C8__8S19588C7[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C7[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__A1__8S19588C7[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__A1__8S19588C7[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__8S19588C7[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
extern void _ZN9S19588C10D1Ev();
extern void _ZN9S19588C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C7[] = {
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&_ZN9S19588C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C10D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A1__8S19588C7[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C10__A4__8S19588C7[] = {
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A4__8S19588C7[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C10__A1__8S19588C7[] = {
  ABISELECT(160,84),
  ABISELECT(-64,-36),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C10__A1__8S19588C7[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C6__9S19588C10__8S19588C7[] = {
  ABISELECT(184,96),
  ABISELECT(8,4),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19588C10__8S19588C7[] = {
  ABISELECT(176,92),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C10__8S19588C7[] = {
  ABISELECT(112,56),
  ABISELECT(-64,-36),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C10__8S19588C7[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev),
};
static  VTT_ENTRY vtt_S19588C7[] = {
  {&(_ZTV8S19588C7[7]),  7,77},
  {&(_tg__ZTV8S19588C5__A__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__A3__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__A3__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__A__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C9__8S19588C7[6]),  6,8},
  {&(_tg__ZTV8S19588C38S19588C9__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C38S19588C9__A5__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C38S19588C9__A5__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C38S19588C9__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C38S19588C9__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C9__A6__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C9__A6__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C9__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C9__8S19588C7[3]),  3,5},
  {&(_tg__ZTV9S19588C10__8S19588C9__8S19588C7[6]),  6,8},
  {&(_tg__ZTV8S19588C6__A1__8S19588C9__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19588C89S19588C10__8S19588C9__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19588C6__A__8S19588C9__8S19588C7[3]),  3,5},
  {&(_tg__ZTV9S19588C10__A__8S19588C7[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C10__A2__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C10__A7__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A7__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C10__A2__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C10__A2__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C6__9S19588C10__A__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19588C10__A__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C10__A__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19588C8__9S19588C10__A__8S19588C7[4]),  4,6},
  {&(_ZTV8S19588C7[43]),  43,77},
  {&(_ZTV8S19588C7[48]),  48,77},
  {&(_ZTV8S19588C7[55]),  55,77},
  {&(_ZTV8S19588C7[61]),  61,77},
  {&(_ZTV8S19588C7[15]),  15,77},
  {&(_ZTV8S19588C7[69]),  69,77},
  {&(_ZTV8S19588C7[75]),  75,77},
  {&(_ZTV8S19588C7[24]),  24,77},
  {&(_ZTV8S19588C7[31]),  31,77},
  {&(_ZTV8S19588C7[37]),  37,77},
  {&(_tg__ZTV8S19588C6__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C6__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C8__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C8__A2__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C8__A2__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C8__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C8__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__A1__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__A1__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__8S19588C7[3]),  3,5},
  {&(_tg__ZTV9S19588C10__8S19588C7[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C10__A1__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C10__A4__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A4__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C10__A1__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C10__A1__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C6__9S19588C10__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19588C10__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C10__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19588C8__9S19588C10__8S19588C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19588C7[];
extern  VTBL_ENTRY _ZTV8S19588C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C7[];
static VTBL_ENTRY alt_thunk_names160[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19588C10D0Ev,_ZThn48_N9S19588C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19588C10D1Ev,_ZThn48_N9S19588C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19588C10D0Ev,_ZThn84_N9S19588C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19588C10D0Ev,_ZThn44_N9S19588C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19588C10D1Ev,_ZThn84_N9S19588C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19588C10D1Ev,_ZThn44_N9S19588C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C8D0Ev,_ZThn20_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C8D1Ev,_ZThn20_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C8D0Ev,_ZThn8_N8S19588C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19588C8D0Ev,_ZThn56_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C8D1Ev,_ZThn8_N8S19588C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19588C8D1Ev,_ZThn56_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19588C9D0Ev,_ZThn296_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19588C9D1Ev,_ZThn296_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C9D0Ev,_ZThn204_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C9D1Ev,_ZThn204_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19588C9D0Ev,_ZThn200_N8S19588C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S19588C9D0Ev,_ZThn240_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19588C9D1Ev,_ZThn200_N8S19588C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S19588C9D1Ev,_ZThn240_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S19588C3D0Ev,_ZThn240_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S19588C3D1Ev,_ZThn240_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C3D0Ev,_ZThn204_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C3D1Ev,_ZThn204_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C5D0Ev,_ZThn260_N8S19588C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C5D1Ev,_ZThn260_N8S19588C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19588C6D0Ev,_ZThn4_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C6D0Ev,_ZThn20_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19588C6D0Ev,_ZThn52_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C6D0Ev,_ZThn204_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C6D0Ev,_ZThn260_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19588C6D1Ev,_ZThn4_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C6D1Ev,_ZThn20_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19588C6D1Ev,_ZThn52_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C6D1Ev,_ZThn204_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C6D1Ev,_ZThn260_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C7D0Ev,_ZTv0_n24_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19588C7D0Ev,_ZThn352_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C7D1Ev,_ZTv0_n24_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19588C7D1Ev,_ZThn352_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C7D0Ev,_ZTv0_n20_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S19588C7D0Ev,_ZThn288_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C7D1Ev,_ZTv0_n20_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S19588C7D1Ev,_ZThn288_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C7D0Ev,_ZTv0_n12_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C7D0Ev,_ZThn260_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C7D1Ev,_ZTv0_n12_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C7D1Ev,_ZThn260_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19588C7D0Ev,_ZThn296_N8S19588C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S19588C7D0Ev,_ZThn256_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19588C7D1Ev,_ZThn296_N8S19588C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S19588C7D1Ev,_ZThn256_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C7 = {  "S19588C7", // class name
  bases_S19588C7, 21,
  &(vtc_S19588C7[0]), // expected_vtbl_contents
  &(vtt_S19588C7[0]), // expected_vtt_contents
  ABISELECT(704,392), // object size
  NSPAIRA(_ZTI8S19588C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19588C7),77, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19588C7),60, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names160,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19588C11  : virtual S19588C5 , S19588C8 {
  short  :0;
  virtual  ~S19588C11(); // _ZN9S19588C11D2Ev
  S19588C11(); // tgen
};
//SIG(-1 S19588C11) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} BC5{ VBC2 BC4 vd Fi} vd Fs:0}


 S19588C11 ::~S19588C11(){ note_dtor("S19588C11", this);}
S19588C11 ::S19588C11(){ note_ctor("S19588C11", this);} // tgen

static void Test_S19588C11()
{
  extern Class_Descriptor cd_S19588C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,24)];
    init_test(&cd_S19588C11, buf);
    S19588C11 *dp, &lv = *(dp=new (buf) S19588C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S19588C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C11)");
    check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(128,64), "S19588C11");
    check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(128,64), "S19588C11");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*), ABISELECT(128,64), "S19588C11");
    check_base_class_offset(lv, (S19588C6*)(S19588C5*), ABISELECT(16,8), "S19588C11");
    check_base_class_offset(lv, (S19588C5*), ABISELECT(16,8), "S19588C11");
    check_base_class_offset(lv, (S19588C5*)(S19588C8*), ABISELECT(16,8), "S19588C11");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*), 0, "S19588C11");
    check_base_class_offset(lv, (S19588C8*), 0, "S19588C11");
    test_class_info(&lv, &cd_S19588C11);
    dp->~S19588C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C11(Test_S19588C11, "S19588C11", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN9S19588C11C1Ev();
extern void _ZN9S19588C11D2Ev();
Name_Map name_map_S19588C11[] = {
  NSPAIR(_ZN9S19588C11C1Ev),
  NSPAIR(_ZN9S19588C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
static Base_Class bases_S19588C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(128,64), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19588C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19588C11[];
extern void _ZN9S19588C11D1Ev();
extern void _ZN9S19588C11D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19588C11D1Ev,_ZTv0_n16_N9S19588C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S19588C11D1Ev,_ZThn8_N9S19588C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C11D0Ev,_ZTv0_n16_N9S19588C11D0Ev)();
extern void ABISELECT(_ZThn16_N9S19588C11D0Ev,_ZThn8_N9S19588C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C11D1Ev,_ZTv0_n12_N9S19588C11D1Ev)();
extern void ABISELECT(_ZThn128_N9S19588C11D1Ev,_ZThn64_N9S19588C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C11D0Ev,_ZTv0_n12_N9S19588C11D0Ev)();
extern void ABISELECT(_ZThn128_N9S19588C11D0Ev,_ZThn64_N9S19588C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C11[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C11[0]),
  (VTBL_ENTRY)&_ZN9S19588C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C11D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19588C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C11D1Ev,_ZTv0_n16_N9S19588C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C11D0Ev,_ZTv0_n16_N9S19588C11D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19588C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C11D1Ev,_ZTv0_n12_N9S19588C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C11D0Ev,_ZTv0_n12_N9S19588C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19588C11[];
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C11[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C8__A1__9S19588C11[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S19588C6D1Ev,_ZThn64_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S19588C6D0Ev,_ZThn64_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C8__A1__9S19588C11[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19588C8D1Ev,_ZThn8_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19588C8D0Ev,_ZThn8_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C8__9S19588C11[] = {
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19588C8D1Ev,_ZThn64_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19588C8D0Ev,_ZThn64_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C8__9S19588C11[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C11[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__9S19588C11[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C6D1Ev,_ZThn56_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19588C6D0Ev,_ZThn56_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__9S19588C11[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C5D1Ev,_ZThn56_N8S19588C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S19588C5D0Ev,_ZThn56_N8S19588C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__9S19588C11[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
static  VTT_ENTRY vtt_S19588C11[] = {
  {&(_ZTV9S19588C11[4]),  4,17},
  {&(_tg__ZTV8S19588C8__9S19588C11[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C8__A1__9S19588C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C8__A1__9S19588C11[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C8__9S19588C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C8__9S19588C11[3]),  3,5},
  {&(_ZTV9S19588C11[10]),  10,17},
  {&(_ZTV9S19588C11[15]),  15,17},
  {&(_tg__ZTV8S19588C5__9S19588C11[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__9S19588C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__9S19588C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__9S19588C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19588C11[];
extern  VTBL_ENTRY _ZTV9S19588C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C11[];
static VTBL_ENTRY alt_thunk_names161[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C5D0Ev,_ZThn56_N8S19588C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C5D1Ev,_ZThn56_N8S19588C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19588C8D0Ev,_ZThn64_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19588C8D1Ev,_ZThn64_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C8D0Ev,_ZThn8_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C8D1Ev,_ZThn8_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C6D0Ev,_ZThn56_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19588C6D0Ev,_ZThn64_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C6D1Ev,_ZThn56_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19588C6D1Ev,_ZThn64_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C11D0Ev,_ZTv0_n12_N9S19588C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19588C11D0Ev,_ZThn64_N9S19588C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C11D1Ev,_ZTv0_n12_N9S19588C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19588C11D1Ev,_ZThn64_N9S19588C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C11D0Ev,_ZTv0_n16_N9S19588C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19588C11D0Ev,_ZThn8_N9S19588C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C11D1Ev,_ZTv0_n16_N9S19588C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19588C11D1Ev,_ZThn8_N9S19588C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C11 = {  "S19588C11", // class name
  bases_S19588C11, 5,
  &(vtc_S19588C11[0]), // expected_vtbl_contents
  &(vtt_S19588C11[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI9S19588C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19588C11),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19588C11),12, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names161,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19588C2  : S19588C3 , S19588C7 , virtual S19588C11 {
  virtual  ~S19588C2(); // _ZN8S19588C2D2Ev
  S19588C2(); // tgen
};
//SIG(-1 S19588C2) C1{ BC2{ VBC3{ vd m Fp Fi Fc FD} VBC4{ VBC3 BC5{ VBC3 vd} Fp[10] Fi FL} BC5 vd Fp Fi FC3[3] Fi[7]} BC6{ VBC5 VBC7{ VBC4 BC5 vd Fi} BC4 BC8{ VBC4 VBC9{ BC3 VBC5 VBC4 BC7 vd Fi} BC2 BC3 BC5 vd} BC9 vd Fs} VBC10{ VBC4 BC7 vd Fs:0} vd}


 S19588C2 ::~S19588C2(){ note_dtor("S19588C2", this);}
S19588C2 ::S19588C2(){ note_ctor("S19588C2", this);} // tgen

static void Test_S19588C2()
{
  extern Class_Descriptor cd_S19588C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,132)];
    init_test(&cd_S19588C2, buf);
    S19588C2 *dp, &lv = *(dp=new (buf) S19588C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,524), "sizeof(S19588C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C2)");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C3*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C3*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C5*)(S19588C7*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*)(S19588C7*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(672,380), "S19588C2");
    check_base_class_offset(lv, (S19676C9*)(S19588C3*)(S19588C9*)(S19588C7*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C3*)(S19588C9*)(S19588C7*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C9::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C9*)(S19588C7*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C10*)(S19588C7*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C11*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C5 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C5*), ABISELECT(720,408), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C3*), ABISELECT(720,408), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C8 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*), ABISELECT(720,408), "S19588C2");
    check_base_class_offset(lv, (S19588C5*)(S19588C9*)(S19588C7*), ABISELECT(720,408), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C10*), ABISELECT(720,408), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C10*), ABISELECT(720,408), "S19588C2");
    check_base_class_offset(lv, (S19588C5*)(S19588C3*)(S19588C9*)(S19588C7*), ABISELECT(720,408), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C10*)(S19588C7*), ABISELECT(720,408), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C10*)(S19588C7*), ABISELECT(720,408), "S19588C2");
    check_base_class_offset(lv, (S19588C5*)(S19588C11*), ABISELECT(720,408), "S19588C2");
    check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C11*), ABISELECT(720,408), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C3*), 0, "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19588C3*), 0, "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C7*), ABISELECT(824,464), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C10*), ABISELECT(824,464), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C10*)(S19588C7*), ABISELECT(824,464), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C8 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*), ABISELECT(832,468), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C8 */ AMB_check_base_class_offset(lv, (S19588C8*)(S19588C7*), ABISELECT(832,468), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C5*)(S19588C7*), ABISELECT(208,124), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C7*), ABISELECT(208,124), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C10*), ABISELECT(848,476), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(896,504), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C8*)(S19588C10*), ABISELECT(896,504), "S19588C2");
    check_base_class_offset(lv, (S19588C10*)(S19588C9*)(S19588C7*), ABISELECT(848,476), "S19588C2");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C3*)(S19588C9*)(S19588C7*), ABISELECT(320,180), "S19588C2");
    check_base_class_offset(lv, (S19588C3*)(S19588C9*)(S19588C7*), ABISELECT(320,180), "S19588C2");
    /*is_ambiguous_... S19588C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C9*)(S19588C7*), ABISELECT(528,304), "S19588C2");
    /*is_ambiguous_... S19588C9::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C9*)(S19588C7*), ABISELECT(576,332), "S19588C2");
    check_base_class_offset(lv, (S19588C9*)(S19588C7*), ABISELECT(320,180), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C10*)(S19588C7*), ABISELECT(592,336), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C10*)(S19588C7*), ABISELECT(640,364), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C8*)(S19588C10*)(S19588C7*), ABISELECT(640,364), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C10*)(S19588C7*), ABISELECT(592,336), "S19588C2");
    check_base_class_offset(lv, (S19588C7*), ABISELECT(208,124), "S19588C2");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C11*), ABISELECT(912,516), "S19588C2");
    check_base_class_offset(lv, (S19588C8*)(S19588C11*), ABISELECT(912,516), "S19588C2");
    check_base_class_offset(lv, (S19588C11*), ABISELECT(912,516), "S19588C2");
    test_class_info(&lv, &cd_S19588C2);
    dp->~S19588C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C2(Test_S19588C2, "S19588C2", ABISELECT(928,524));

#else // __cplusplus

extern void _ZN8S19588C2C1Ev();
extern void _ZN8S19588C2D2Ev();
Name_Map name_map_S19588C2[] = {
  NSPAIR(_ZN8S19588C2C1Ev),
  NSPAIR(_ZN8S19588C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C3;
extern VTBL_ENTRY _ZTI8S19588C3[];
extern  VTBL_ENTRY _ZTV8S19588C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C3[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C10;
extern VTBL_ENTRY _ZTI9S19588C10[];
extern  VTBL_ENTRY _ZTV9S19588C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C10[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C3;
extern VTBL_ENTRY _ZTI8S19588C3[];
extern  VTBL_ENTRY _ZTV8S19588C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C9;
extern VTBL_ENTRY _ZTI8S19588C9[];
extern  VTBL_ENTRY _ZTV8S19588C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C10;
extern VTBL_ENTRY _ZTI9S19588C10[];
extern  VTBL_ENTRY _ZTV9S19588C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C10[];
extern Class_Descriptor cd_S19588C7;
extern VTBL_ENTRY _ZTI8S19588C7[];
extern  VTBL_ENTRY _ZTV8S19588C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C7[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C11;
extern VTBL_ENTRY _ZTI9S19588C11[];
extern  VTBL_ENTRY _ZTV9S19588C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C11[];
static Base_Class bases_S19588C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(672,380), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(720,408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(720,408), //bcp->offset
    54, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19588C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19588C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19588C6,    ABISELECT(824,464), //bcp->offset
    60, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(832,468), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(832,468), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(208,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(208,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(848,476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(896,504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(896,504), //bcp->offset
    81, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19588C10,    ABISELECT(848,476), //bcp->offset
    73, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(320,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19588C3,    ABISELECT(320,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(528,304), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(576,332), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19588C9,    ABISELECT(320,180), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(592,336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(640,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(640,364), //bcp->offset
    43, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19588C10,    ABISELECT(592,336), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19588C7,    ABISELECT(208,124), //bcp->offset
    10, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19588C6,    ABISELECT(912,516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(912,516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19588C11,    ABISELECT(912,516), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19588C2[];
extern void _ZN8S19588C2D1Ev();
extern void _ZN8S19588C2D0Ev();
extern void ABISELECT(_ZThn208_N8S19588C2D1Ev,_ZThn124_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn208_N8S19588C2D0Ev,_ZThn124_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn320_N8S19588C2D1Ev,_ZThn180_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn320_N8S19588C2D0Ev,_ZThn180_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn528_N8S19588C2D1Ev,_ZThn304_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn528_N8S19588C2D0Ev,_ZThn304_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn576_N8S19588C2D1Ev,_ZThn332_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn576_N8S19588C2D0Ev,_ZThn332_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn592_N8S19588C2D1Ev,_ZThn336_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn592_N8S19588C2D0Ev,_ZThn336_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn640_N8S19588C2D1Ev,_ZThn364_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn640_N8S19588C2D0Ev,_ZThn364_N8S19588C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C2D1Ev,_ZTv0_n12_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn672_N8S19588C2D1Ev,_ZThn380_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C2D0Ev,_ZTv0_n12_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn672_N8S19588C2D0Ev,_ZThn380_N8S19588C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn720_N8S19588C2D1Ev,_ZThn408_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn720_N8S19588C2D0Ev,_ZThn408_N8S19588C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn824_N8S19588C2D1Ev,_ZThn464_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn824_N8S19588C2D0Ev,_ZThn464_N8S19588C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn832_N8S19588C2D1Ev,_ZThn468_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn832_N8S19588C2D0Ev,_ZThn468_N8S19588C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C2D1Ev,_ZTv0_n24_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn848_N8S19588C2D1Ev,_ZThn476_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C2D0Ev,_ZTv0_n24_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn848_N8S19588C2D0Ev,_ZThn476_N8S19588C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S19588C2D1Ev,_ZTvn28_n24_N8S19588C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C2D0Ev,_ZTvn28_n24_N8S19588C2D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn912_N8S19588C2D1Ev,_ZThn516_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn912_N8S19588C2D0Ev,_ZThn516_N8S19588C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C2[] = {
  ABISELECT(912,516),
  ABISELECT(848,476),
  ABISELECT(832,468),
  ABISELECT(824,464),
  ABISELECT(720,408),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&_ZN8S19588C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C2D0Ev,
  ABISELECT(640,352),
  ABISELECT(512,284),
  ABISELECT(624,344),
  ABISELECT(616,340),
  ABISELECT(464,256),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19588C2D1Ev,_ZThn124_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19588C2D0Ev,_ZThn124_N8S19588C2D0Ev),
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S19588C2D1Ev,_ZThn180_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S19588C2D0Ev,_ZThn180_N8S19588C2D0Ev),
  ABISELECT(-528,-304),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn528_N8S19588C2D1Ev,_ZThn304_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn528_N8S19588C2D0Ev,_ZThn304_N8S19588C2D0Ev),
  ABISELECT(96,48),
  ABISELECT(-576,-332),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn576_N8S19588C2D1Ev,_ZThn332_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn576_N8S19588C2D0Ev,_ZThn332_N8S19588C2D0Ev),
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  ABISELECT(-592,-336),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn592_N8S19588C2D1Ev,_ZThn336_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn592_N8S19588C2D0Ev,_ZThn336_N8S19588C2D0Ev),
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-640,-364),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn640_N8S19588C2D1Ev,_ZThn364_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn640_N8S19588C2D0Ev,_ZThn364_N8S19588C2D0Ev),
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C2D1Ev,_ZTv0_n12_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C2D0Ev,_ZTv0_n12_N8S19588C2D0Ev),
  ABISELECT(-720,-408),
  ABISELECT(-48,-28),
  ABISELECT(-720,-408),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev),
  ABISELECT(-824,-464),
  ABISELECT(-152,-84),
  ABISELECT(-824,-464),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev),
  ABISELECT(-832,-468),
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  ABISELECT(-832,-468),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev),
  ABISELECT(-848,-476),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-848,-476),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C2D1Ev,_ZTv0_n24_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C2D0Ev,_ZTv0_n24_N8S19588C2D0Ev),
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-896,-504),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C2D1Ev,_ZTvn28_n24_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C2D0Ev,_ZTvn28_n24_N8S19588C2D0Ev),
  ABISELECT(-912,-516),
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  ABISELECT(-912,-516),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19588C2[];
extern void _ZN8S19588C3D1Ev();
extern void _ZN8S19588C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C3__8S19588C2[] = {
  ABISELECT(720,408),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&_ZN8S19588C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C3D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C3__A1__8S19588C2[] = {
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn672_N8S19588C6D1Ev,_ZThn380_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn672_N8S19588C6D0Ev,_ZThn380_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C3__A1__8S19588C2[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn672_N8S19588C3D1Ev,_ZThn380_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn672_N8S19588C3D0Ev,_ZThn380_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C3__8S19588C2[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn720_N8S19588C3D1Ev,_ZThn408_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn720_N8S19588C3D0Ev,_ZThn408_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C3__8S19588C2[] = {
  ABISELECT(-720,-408),
  ABISELECT(-48,-28),
  ABISELECT(-720,-408),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev),
};
extern void _ZN8S19588C7D1Ev();
extern void _ZN8S19588C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C7__8S19588C2[] = {
  ABISELECT(640,352),
  ABISELECT(512,284),
  ABISELECT(624,344),
  ABISELECT(616,340),
  ABISELECT(464,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&_ZN8S19588C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C7D0Ev,
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C58S19588C7__A1__8S19588C2[] = {
  ABISELECT(464,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C58S19588C7__A4__8S19588C2[] = {
  ABISELECT(464,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn464_N8S19588C6D1Ev,_ZThn256_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn464_N8S19588C6D0Ev,_ZThn256_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C58S19588C7__A4__8S19588C2[] = {
  ABISELECT(-464,-256),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S19588C5D1Ev,_ZThn256_N8S19588C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
extern void ABISELECT(_ZThn464_N8S19588C5D0Ev,_ZThn256_N8S19588C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C58S19588C7__A1__8S19588C2[] = {
  ABISELECT(-464,-256),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
extern void _ZN8S19588C9D1Ev();
extern void _ZN8S19588C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C98S19588C7__8S19588C2[] = {
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&_ZN8S19588C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C9D0Ev,
};
extern void _ZN8S19588C3D1Ev();
extern void _ZN8S19588C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C38S19588C98S19588C7__A1__8S19588C2[] = {
  ABISELECT(400,228),
  ABISELECT(352,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&_ZN8S19588C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C3D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C38S19588C98S19588C7__A6__8S19588C2[] = {
  ABISELECT(352,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn352_N8S19588C6D1Ev,_ZThn200_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn352_N8S19588C6D0Ev,_ZThn200_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C38S19588C98S19588C7__A6__8S19588C2[] = {
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn352_N8S19588C3D1Ev,_ZThn200_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn352_N8S19588C3D0Ev,_ZThn200_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C38S19588C98S19588C7__A1__8S19588C2[] = {
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn400_N8S19588C3D1Ev,_ZThn228_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn400_N8S19588C3D0Ev,_ZThn228_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C38S19588C98S19588C7__A1__8S19588C2[] = {
  ABISELECT(-400,-228),
  ABISELECT(-48,-28),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev),
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C98S19588C7__A7__8S19588C2[] = {
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S19588C6D1Ev,_ZThn48_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S19588C6D0Ev,_ZThn48_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C98S19588C7__A7__8S19588C2[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn400_N8S19588C9D1Ev,_ZThn228_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn400_N8S19588C9D0Ev,_ZThn228_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C98S19588C7__8S19588C2[] = {
  ABISELECT(-400,-228),
  ABISELECT(-48,-28),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn352_N8S19588C9D1Ev,_ZThn200_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn352_N8S19588C9D0Ev,_ZThn200_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C98S19588C7__8S19588C2[] = {
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn528_N8S19588C9D1Ev,_ZThn296_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn528_N8S19588C9D0Ev,_ZThn296_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C98S19588C7__8S19588C2[] = {
  ABISELECT(-528,-296),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn504_N8S19588C9D1Ev,_ZThn284_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn504_N8S19588C9D0Ev,_ZThn284_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__A1__8S19588C98S19588C7__8S19588C2[] = {
  ABISELECT(-504,-284),
  ABISELECT(-152,-84),
  ABISELECT(-504,-284),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19588C9D1Ev,_ZTvn28_n24_N8S19588C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C9D0Ev,_ZTvn28_n24_N8S19588C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__8S19588C98S19588C7__8S19588C2[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C9D1Ev,_ZTvn28_n24_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C9D0Ev,_ZTvn28_n24_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZThn256_N8S19588C9D1Ev,_ZThn152_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn256_N8S19588C9D0Ev,_ZThn152_N8S19588C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C6__A__8S19588C98S19588C7__8S19588C2[] = {
  ABISELECT(96,48),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19588C9D1Ev,_ZThn152_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19588C9D0Ev,_ZThn152_N8S19588C9D0Ev),
};
extern void _ZN9S19588C10D1Ev();
extern void _ZN9S19588C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C108S19588C7__A1__8S19588C2[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&_ZN9S19588C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C10D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C108S19588C7__A2__8S19588C2[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C108S19588C7__A8__8S19588C2[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S19588C6D1Ev,_ZThn16_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S19588C6D0Ev,_ZThn16_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C108S19588C7__A8__8S19588C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S19588C8D1Ev,_ZThn44_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S19588C8D0Ev,_ZThn44_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C108S19588C7__A2__8S19588C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S19588C8D1Ev,_ZThn16_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn32_N8S19588C8D0Ev,_ZThn16_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C108S19588C7__A2__8S19588C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn232_N9S19588C10D1Ev,_ZThn128_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn232_N9S19588C10D0Ev,_ZThn128_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__9S19588C108S19588C7__A1__8S19588C2[] = {
  ABISELECT(-232,-128),
  ABISELECT(-152,-84),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S19588C10D1Ev,_ZThn44_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S19588C10D0Ev,_ZThn44_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19588C108S19588C7__A1__8S19588C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S19588C10D1Ev,_ZThn72_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S19588C10D0Ev,_ZThn72_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C108S19588C7__A1__8S19588C2[] = {
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C108S19588C7__A1__8S19588C2[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn616_N8S19588C7D1Ev,_ZThn340_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn616_N8S19588C7D0Ev,_ZThn340_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__8S19588C7__8S19588C2[] = {
  ABISELECT(-616,-340),
  ABISELECT(-152,-84),
  ABISELECT(-616,-340),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C7D1Ev,_ZTv0_n12_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn464_N8S19588C7D1Ev,_ZThn256_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C7D0Ev,_ZTv0_n12_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn464_N8S19588C7D0Ev,_ZThn256_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C7__8S19588C2[] = {
  ABISELECT(-464,-256),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C7D1Ev,_ZTv0_n12_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C7D0Ev,_ZTv0_n12_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19588C7D1Ev,_ZTv0_n20_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn624_N8S19588C7D1Ev,_ZThn344_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C7D0Ev,_ZTv0_n20_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn624_N8S19588C7D0Ev,_ZThn344_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C8__8S19588C7__8S19588C2[] = {
  ABISELECT(-624,-344),
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  ABISELECT(-624,-344),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C7D1Ev,_ZTv0_n20_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C7D0Ev,_ZTv0_n20_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn512_N8S19588C7D1Ev,_ZThn284_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn512_N8S19588C7D0Ev,_ZThn284_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C7__8S19588C2[] = {
  ABISELECT(-512,-284),
  ABISELECT(-48,-28),
  ABISELECT(-512,-284),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZThn112_N8S19588C7D1Ev,_ZThn56_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C7D0Ev,_ZThn56_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C9__8S19588C7__8S19588C2[] = {
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19588C7D1Ev,_ZThn56_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19588C7D0Ev,_ZThn56_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19588C7D1Ev,_ZTv0_n24_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn640_N8S19588C7D1Ev,_ZThn352_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C7D0Ev,_ZTv0_n24_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn640_N8S19588C7D0Ev,_ZThn352_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C7__8S19588C2[] = {
  ABISELECT(-640,-352),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-640,-352),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C7D1Ev,_ZTv0_n24_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C7D0Ev,_ZTv0_n24_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19588C7D1Ev,_ZTvn28_n24_N8S19588C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C7D0Ev,_ZTvn28_n24_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A1__8S19588C7__8S19588C2[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C7D1Ev,_ZTvn28_n24_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C7D0Ev,_ZTvn28_n24_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZThn368_N8S19588C7D1Ev,_ZThn208_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn368_N8S19588C7D0Ev,_ZThn208_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C9__A6__8S19588C7__8S19588C2[] = {
  ABISELECT(96,48),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S19588C7D1Ev,_ZThn208_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S19588C7D0Ev,_ZThn208_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZThn384_N8S19588C7D1Ev,_ZThn212_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn384_N8S19588C7D0Ev,_ZThn212_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19588C10__A__8S19588C7__8S19588C2[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S19588C7D1Ev,_ZThn212_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S19588C7D0Ev,_ZThn212_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZThn432_N8S19588C7D1Ev,_ZThn240_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn432_N8S19588C7D0Ev,_ZThn240_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A2__8S19588C7__8S19588C2[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S19588C7D1Ev,_ZThn240_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S19588C7D0Ev,_ZThn240_N8S19588C7D0Ev),
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C2[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__8S19588C2[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__8S19588C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C6__A2__8S19588C2[] = {
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C6__A2__8S19588C2[] = {
  ABISELECT(152,84),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C8__8S19588C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C8__A3__8S19588C2[] = {
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C8__A3__8S19588C2[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C8__8S19588C2[] = {
  ABISELECT(112,60),
  ABISELECT(-48,-28),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C8__8S19588C2[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void _ZN9S19588C10D1Ev();
extern void _ZN9S19588C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&_ZN9S19588C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C10D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A1__8S19588C2[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C10__A5__8S19588C2[] = {
  ABISELECT(-224,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A5__8S19588C2[] = {
  ABISELECT(224,124),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C10__A1__8S19588C2[] = {
  ABISELECT(176,96),
  ABISELECT(-48,-28),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C10__A1__8S19588C2[] = {
  ABISELECT(224,124),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C6__9S19588C10__8S19588C2[] = {
  ABISELECT(24,12),
  ABISELECT(-152,-84),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19588C10__8S19588C2[] = {
  ABISELECT(176,96),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C10__8S19588C2[] = {
  ABISELECT(128,68),
  ABISELECT(-48,-28),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C10__8S19588C2[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev),
};
extern void _ZN9S19588C11D1Ev();
extern void _ZN9S19588C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C11__8S19588C2[] = {
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C11[0]),
  (VTBL_ENTRY)&_ZN9S19588C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C11D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C11__A3__8S19588C2[] = {
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C11__A9__8S19588C2[] = {
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C11__A9__8S19588C2[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C11__A3__8S19588C2[] = {
  ABISELECT(192,108),
  ABISELECT(-48,-28),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C11__A3__8S19588C2[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C11D1Ev,_ZTv0_n16_N9S19588C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C11D0Ev,_ZTv0_n16_N9S19588C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C11__8S19588C2[] = {
  ABISELECT(192,108),
  ABISELECT(-48,-28),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S19588C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C11D1Ev,_ZTv0_n16_N9S19588C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C11D0Ev,_ZTv0_n16_N9S19588C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C11D1Ev,_ZTv0_n12_N9S19588C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19588C11D0Ev,_ZTv0_n12_N9S19588C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19588C11__8S19588C2[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI9S19588C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C11D1Ev,_ZTv0_n12_N9S19588C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C11D0Ev,_ZTv0_n12_N9S19588C11D0Ev),
};
static  VTT_ENTRY vtt_S19588C2[] = {
  {&(_ZTV8S19588C2[8]),  8,94},
  {&(_tg__ZTV8S19588C3__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C3__A1__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C3__A1__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C3__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C3__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C7__8S19588C2[7]),  7,9},
  {&(_tg__ZTV8S19588C58S19588C7__A1__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C58S19588C7__A4__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C58S19588C7__A4__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C58S19588C7__A1__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C98S19588C7__8S19588C2[6]),  6,8},
  {&(_tg__ZTV8S19588C38S19588C98S19588C7__A1__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C38S19588C98S19588C7__A6__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C38S19588C98S19588C7__A6__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C38S19588C98S19588C7__A1__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C38S19588C98S19588C7__A1__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C98S19588C7__A7__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C98S19588C7__A7__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C98S19588C7__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C98S19588C7__8S19588C2[3]),  3,5},
  {&(_tg__ZTV9S19588C10__8S19588C98S19588C7__8S19588C2[6]),  6,8},
  {&(_tg__ZTV8S19588C6__A1__8S19588C98S19588C7__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C89S19588C10__8S19588C98S19588C7__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C6__A__8S19588C98S19588C7__8S19588C2[3]),  3,5},
  {&(_tg__ZTV9S19588C108S19588C7__A1__8S19588C2[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C108S19588C7__A2__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C108S19588C7__A8__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C108S19588C7__A8__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C108S19588C7__A2__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C108S19588C7__A2__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C6__9S19588C108S19588C7__A1__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19588C108S19588C7__A1__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C108S19588C7__A1__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C8__9S19588C108S19588C7__A1__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C6__8S19588C7__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C7__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C8__8S19588C7__8S19588C2[5]),  5,7},
  {&(_tg__ZTV8S19588C5__8S19588C7__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C9__8S19588C7__8S19588C2[6]),  6,8},
  {&(_tg__ZTV9S19588C10__8S19588C7__8S19588C2[6]),  6,8},
  {&(_tg__ZTV8S19588C89S19588C10__A1__8S19588C7__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C9__A6__8S19588C7__8S19588C2[3]),  3,5},
  {&(_tg__ZTV9S19588C10__A__8S19588C7__8S19588C2[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C10__A2__8S19588C7__8S19588C2[4]),  4,6},
  {&(_ZTV8S19588C2[52]),  52,94},
  {&(_ZTV8S19588C2[58]),  58,94},
  {&(_ZTV8S19588C2[17]),  17,94},
  {&(_ZTV8S19588C2[64]),  64,94},
  {&(_ZTV8S19588C2[71]),  71,94},
  {&(_ZTV8S19588C2[25]),  25,94},
  {&(_ZTV8S19588C2[79]),  79,94},
  {&(_ZTV8S19588C2[85]),  85,94},
  {&(_ZTV8S19588C2[34]),  34,94},
  {&(_ZTV8S19588C2[41]),  41,94},
  {&(_ZTV8S19588C2[47]),  47,94},
  {&(_ZTV8S19588C2[92]),  92,94},
  {&(_tg__ZTV8S19588C5__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C6__A2__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C6__A2__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C8__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C8__A3__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C8__A3__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C8__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C8__8S19588C2[3]),  3,5},
  {&(_tg__ZTV9S19588C10__8S19588C2[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C10__A1__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C10__A5__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A5__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C10__A1__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C10__A1__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C6__9S19588C10__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19588C10__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C10__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C8__9S19588C10__8S19588C2[4]),  4,6},
  {&(_tg__ZTV9S19588C11__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C89S19588C11__A3__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C11__A9__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C11__A9__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C11__A3__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C11__A3__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C11__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19588C11__8S19588C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19588C2[];
extern  VTBL_ENTRY _ZTV8S19588C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C2[];
static VTBL_ENTRY alt_thunk_names162[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C7D0Ev,_ZTv0_n24_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19588C7D0Ev,_ZThn352_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C7D1Ev,_ZTv0_n24_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19588C7D1Ev,_ZThn352_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C7D0Ev,_ZTv0_n20_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19588C7D0Ev,_ZThn344_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C7D1Ev,_ZTv0_n20_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19588C7D1Ev,_ZThn344_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C7D0Ev,_ZTv0_n12_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C7D0Ev,_ZThn256_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C7D1Ev,_ZTv0_n12_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C7D1Ev,_ZThn256_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S19588C7D0Ev,_ZThn284_N8S19588C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn616_N8S19588C7D0Ev,_ZThn340_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S19588C7D1Ev,_ZThn284_N8S19588C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn616_N8S19588C7D1Ev,_ZThn340_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19588C10D0Ev,_ZThn44_N9S19588C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19588C10D1Ev,_ZThn44_N9S19588C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19588C10D0Ev,_ZThn72_N9S19588C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19588C10D0Ev,_ZThn128_N9S19588C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19588C10D1Ev,_ZThn72_N9S19588C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19588C10D1Ev,_ZThn128_N9S19588C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C8D0Ev,_ZThn16_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C8D1Ev,_ZThn16_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19588C8D0Ev,_ZThn44_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19588C8D1Ev,_ZThn44_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19588C9D0Ev,_ZThn296_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19588C9D1Ev,_ZThn296_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C9D0Ev,_ZThn200_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C9D1Ev,_ZThn200_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S19588C9D0Ev,_ZThn284_N8S19588C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19588C9D0Ev,_ZThn228_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S19588C9D1Ev,_ZThn284_N8S19588C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19588C9D1Ev,_ZThn228_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C5D0Ev,_ZThn256_N8S19588C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C5D1Ev,_ZThn256_N8S19588C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19588C3D0Ev,_ZThn228_N8S19588C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19588C3D0Ev,_ZThn408_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19588C3D1Ev,_ZThn228_N8S19588C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19588C3D1Ev,_ZThn408_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C3D0Ev,_ZThn200_N8S19588C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C3D0Ev,_ZThn380_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C3D1Ev,_ZThn200_N8S19588C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C3D1Ev,_ZThn380_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C6D0Ev,_ZThn16_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19588C6D0Ev,_ZThn48_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C6D0Ev,_ZThn200_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C6D0Ev,_ZThn256_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C6D0Ev,_ZThn380_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C6D1Ev,_ZThn16_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19588C6D1Ev,_ZThn48_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C6D1Ev,_ZThn200_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C6D1Ev,_ZThn256_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C6D1Ev,_ZThn380_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C2D0Ev,_ZTv0_n24_N8S19588C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S19588C2D0Ev,_ZThn476_N8S19588C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C2D1Ev,_ZTv0_n24_N8S19588C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S19588C2D1Ev,_ZThn476_N8S19588C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N8S19588C2D0Ev,_ZThn516_N8S19588C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19588C2D0Ev,_ZThn468_N8S19588C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N8S19588C2D1Ev,_ZThn516_N8S19588C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19588C2D1Ev,_ZThn468_N8S19588C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N8S19588C2D0Ev,_ZThn464_N8S19588C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19588C2D0Ev,_ZThn408_N8S19588C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N8S19588C2D1Ev,_ZThn464_N8S19588C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19588C2D1Ev,_ZThn408_N8S19588C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C2D0Ev,_ZTv0_n12_N8S19588C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C2D0Ev,_ZThn380_N8S19588C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C2D1Ev,_ZTv0_n12_N8S19588C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C2D1Ev,_ZThn380_N8S19588C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C2 = {  "S19588C2", // class name
  bases_S19588C2, 27,
  &(vtc_S19588C2[0]), // expected_vtbl_contents
  &(vtt_S19588C2[0]), // expected_vtt_contents
  ABISELECT(928,524), // object size
  NSPAIRA(_ZTI8S19588C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19588C2),94, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19588C2),86, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names162,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19588C12  : virtual S19676C9 , virtual S19588C5 {
  int s19588c12f0;
  ::S19763C18_nt s19588c12f1;
  virtual  ~S19588C12(); // _ZN9S19588C12D2Ev
  S19588C12(); // tgen
};
//SIG(-1 S19588C12) C1{ VBC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 BC4{ VBC2 vd} Fp[10] Fi FL} vd Fi FC5{}}


 S19588C12 ::~S19588C12(){ note_dtor("S19588C12", this);}
S19588C12 ::S19588C12(){ note_ctor("S19588C12", this);} // tgen

static void Test_S19588C12()
{
  extern Class_Descriptor cd_S19588C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,25)];
    init_test(&cd_S19588C12, buf);
    S19588C12 *dp, &lv = *(dp=new (buf) S19588C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,96), "sizeof(S19588C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C12)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(16,12), "S19588C12");
    check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(16,12), "S19588C12");
    check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(16,12), "S19588C12");
    check_base_class_offset(lv, (S19588C6*)(S19588C5*), ABISELECT(64,40), "S19588C12");
    check_base_class_offset(lv, (S19588C5*), ABISELECT(64,40), "S19588C12");
    check_field_offset(lv, s19588c12f0, ABISELECT(8,4), "S19588C12.s19588c12f0");
    check_field_offset(lv, s19588c12f1, ABISELECT(12,8), "S19588C12.s19588c12f1");
    test_class_info(&lv, &cd_S19588C12);
    dp->~S19588C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C12(Test_S19588C12, "S19588C12", ABISELECT(176,96));

#else // __cplusplus

extern void _ZN9S19588C12C1Ev();
extern void _ZN9S19588C12D2Ev();
Name_Map name_map_S19588C12[] = {
  NSPAIR(_ZN9S19588C12C1Ev),
  NSPAIR(_ZN9S19588C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
static Base_Class bases_S19588C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(64,40), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19588C12[];
extern void _ZN9S19588C12D1Ev();
extern void _ZN9S19588C12D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19588C12D1Ev,_ZTv0_n12_N9S19588C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S19588C12D1Ev,_ZThn12_N9S19588C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C12D0Ev,_ZTv0_n12_N9S19588C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S19588C12D0Ev,_ZThn12_N9S19588C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C12D1Ev,_ZTv0_n16_N9S19588C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S19588C12D1Ev,_ZThn40_N9S19588C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C12D0Ev,_ZTv0_n16_N9S19588C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S19588C12D0Ev,_ZThn40_N9S19588C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C12[] = {
  ABISELECT(64,40),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C12[0]),
  (VTBL_ENTRY)&_ZN9S19588C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C12D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19588C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C12D1Ev,_ZTv0_n12_N9S19588C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C12D0Ev,_ZTv0_n12_N9S19588C12D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19588C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C12D1Ev,_ZTv0_n16_N9S19588C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C12D0Ev,_ZTv0_n16_N9S19588C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19588C12[];
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C12[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__9S19588C12[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__9S19588C12[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__9S19588C12[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
static  VTT_ENTRY vtt_S19588C12[] = {
  {&(_ZTV9S19588C12[4]),  4,17},
  {&(_ZTV9S19588C12[9]),  9,17},
  {&(_ZTV9S19588C12[15]),  15,17},
  {&(_tg__ZTV8S19588C5__9S19588C12[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__9S19588C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__9S19588C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__9S19588C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19588C12[];
extern  VTBL_ENTRY _ZTV9S19588C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C12[];
static VTBL_ENTRY alt_thunk_names163[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C12D0Ev,_ZTv0_n16_N9S19588C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19588C12D0Ev,_ZThn40_N9S19588C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C12D1Ev,_ZTv0_n16_N9S19588C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19588C12D1Ev,_ZThn40_N9S19588C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C12D0Ev,_ZTv0_n12_N9S19588C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19588C12D0Ev,_ZThn12_N9S19588C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C12D1Ev,_ZTv0_n12_N9S19588C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19588C12D1Ev,_ZThn12_N9S19588C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C12 = {  "S19588C12", // class name
  bases_S19588C12, 3,
  &(vtc_S19588C12[0]), // expected_vtbl_contents
  &(vtt_S19588C12[0]), // expected_vtt_contents
  ABISELECT(176,96), // object size
  NSPAIRA(_ZTI9S19588C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19588C12),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19588C12),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names163,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19588C1  : virtual S19588C2 , S19588C12 , S19588C10 {
  virtual  ~S19588C1(); // _ZN8S19588C1D2Ev
  S19588C1(); // tgen
};
//SIG(1 S19588C1) C1{ VBC2{ BC3{ VBC4{ vd m Fp Fi Fc FD} VBC5{ VBC4 BC6{ VBC4 vd} Fp[10] Fi FL} BC6 vd Fp Fi FC4[3] Fi[7]} BC7{ VBC6 VBC8{ VBC5 BC6 vd Fi} BC5 BC9{ VBC5 VBC10{ BC4 VBC6 VBC5 BC8 vd Fi} BC3 BC4 BC6 vd} BC10 vd Fs} VBC11{ VBC5 BC8 vd Fs:0} vd} BC12{ VBC4 VBC5 vd Fi FC13{}} BC10 vd}


 S19588C1 ::~S19588C1(){ note_dtor("S19588C1", this);}
S19588C1 ::S19588C1(){ note_ctor("S19588C1", this);} // tgen

static void Test_S19588C1()
{
  extern Class_Descriptor cd_S19588C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(64,145)];
    init_test(&cd_S19588C1, buf);
    S19588C1 *dp, &lv = *(dp=new (buf) S19588C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1008,576), "sizeof(S19588C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C1)");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C3*)(S19588C2*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C3*)(S19588C2*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C5*)(S19588C7*)(S19588C2*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*)(S19588C7*)(S19588C2*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(752,432), "S19588C1");
    check_base_class_offset(lv, (S19676C9*)(S19588C3*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C3*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C9::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C10*)(S19588C7*)(S19588C2*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C11*), ABISELECT(752,432), "S19588C1");
    check_base_class_offset(lv, (S19676C9*)(S19588C12*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C5 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C5*), ABISELECT(800,460), "S19588C1");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C3*)(S19588C2*), ABISELECT(800,460), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C8 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*), ABISELECT(800,460), "S19588C1");
    check_base_class_offset(lv, (S19588C5*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(800,460), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C10*), ABISELECT(800,460), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C10*), ABISELECT(800,460), "S19588C1");
    check_base_class_offset(lv, (S19588C5*)(S19588C3*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(800,460), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C10*)(S19588C7*)(S19588C2*), ABISELECT(800,460), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C10*)(S19588C7*)(S19588C2*), ABISELECT(800,460), "S19588C1");
    check_base_class_offset(lv, (S19588C5*)(S19588C11*), ABISELECT(800,460), "S19588C1");
    check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C11*), ABISELECT(800,460), "S19588C1");
    check_base_class_offset(lv, (S19588C5*)(S19588C12*), ABISELECT(800,460), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C10*), ABISELECT(800,460), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C10*), ABISELECT(800,460), "S19588C1");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C3*)(S19588C2*), ABISELECT(80,52), "S19588C1");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19588C3*)(S19588C2*), ABISELECT(80,52), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C7*)(S19588C2*), ABISELECT(904,516), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C10*), ABISELECT(904,516), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C10*)(S19588C7*)(S19588C2*), ABISELECT(904,516), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C10*), ABISELECT(904,516), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C8 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*), ABISELECT(912,520), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C8 */ AMB_check_base_class_offset(lv, (S19588C8*)(S19588C7*)(S19588C2*), ABISELECT(912,520), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C5*)(S19588C7*)(S19588C2*), ABISELECT(288,176), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C7*)(S19588C2*), ABISELECT(288,176), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C10*), ABISELECT(928,528), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(976,556), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C8*)(S19588C10*), ABISELECT(976,556), "S19588C1");
    check_base_class_offset(lv, (S19588C10*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(928,528), "S19588C1");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C3*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(400,232), "S19588C1");
    check_base_class_offset(lv, (S19588C3*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(400,232), "S19588C1");
    /*is_ambiguous_... S19588C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(608,356), "S19588C1");
    /*is_ambiguous_... S19588C9::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(656,384), "S19588C1");
    check_base_class_offset(lv, (S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(400,232), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C10*)(S19588C7*)(S19588C2*), ABISELECT(672,388), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C10*)(S19588C7*)(S19588C2*), ABISELECT(720,416), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C8*)(S19588C10*)(S19588C7*)(S19588C2*), ABISELECT(720,416), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C10*)(S19588C7*)(S19588C2*), ABISELECT(672,388), "S19588C1");
    check_base_class_offset(lv, (S19588C7*)(S19588C2*), ABISELECT(288,176), "S19588C1");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C11*), ABISELECT(992,568), "S19588C1");
    check_base_class_offset(lv, (S19588C8*)(S19588C11*), ABISELECT(992,568), "S19588C1");
    check_base_class_offset(lv, (S19588C11*)(S19588C2*), ABISELECT(992,568), "S19588C1");
    check_base_class_offset(lv, (S19588C2*), ABISELECT(80,52), "S19588C1");
    check_base_class_offset(lv, (S19588C12*), 0, "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C10*), ABISELECT(16,12), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(64,40), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C8*)(S19588C10*), ABISELECT(64,40), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C10*), ABISELECT(16,12), "S19588C1");
    test_class_info(&lv, &cd_S19588C1);
    dp->~S19588C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C1(Test_S19588C1, "S19588C1", ABISELECT(1008,576));

#else // __cplusplus

extern void _ZN8S19588C1C1Ev();
extern void _ZN8S19588C1D2Ev();
Name_Map name_map_S19588C1[] = {
  NSPAIR(_ZN8S19588C1C1Ev),
  NSPAIR(_ZN8S19588C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C3;
extern VTBL_ENTRY _ZTI8S19588C3[];
extern  VTBL_ENTRY _ZTV8S19588C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C3[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C10;
extern VTBL_ENTRY _ZTI9S19588C10[];
extern  VTBL_ENTRY _ZTV9S19588C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C10[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C3;
extern VTBL_ENTRY _ZTI8S19588C3[];
extern  VTBL_ENTRY _ZTV8S19588C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C9;
extern VTBL_ENTRY _ZTI8S19588C9[];
extern  VTBL_ENTRY _ZTV8S19588C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C10;
extern VTBL_ENTRY _ZTI9S19588C10[];
extern  VTBL_ENTRY _ZTV9S19588C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C10[];
extern Class_Descriptor cd_S19588C7;
extern VTBL_ENTRY _ZTI8S19588C7[];
extern  VTBL_ENTRY _ZTV8S19588C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C7[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C11;
extern VTBL_ENTRY _ZTI9S19588C11[];
extern  VTBL_ENTRY _ZTV9S19588C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C11[];
extern Class_Descriptor cd_S19588C2;
extern VTBL_ENTRY _ZTI8S19588C2[];
extern  VTBL_ENTRY _ZTV8S19588C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C2[];
extern Class_Descriptor cd_S19588C12;
extern VTBL_ENTRY _ZTI9S19588C12[];
extern  VTBL_ENTRY _ZTV9S19588C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C12[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C10;
extern VTBL_ENTRY _ZTI9S19588C10[];
extern  VTBL_ENTRY _ZTV9S19588C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C10[];
static Base_Class bases_S19588C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(752,432), //bcp->offset
    74, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(800,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(800,460), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19588C3,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(904,516), //bcp->offset
    85, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(912,520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(912,520), //bcp->offset
    91, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(288,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(288,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(928,528), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(976,556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(976,556), //bcp->offset
    106, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19588C10,    ABISELECT(928,528), //bcp->offset
    98, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(400,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19588C3,    ABISELECT(400,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(608,356), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(656,384), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19588C9,    ABISELECT(400,232), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(672,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(720,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(720,416), //bcp->offset
    68, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19588C10,    ABISELECT(672,388), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19588C7,    ABISELECT(288,176), //bcp->offset
    35, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(992,568), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(992,568), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19588C11,    ABISELECT(992,568), //bcp->offset
    112, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19588C2,    ABISELECT(80,52), //bcp->offset
    24, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(64,40), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19588C10,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19588C1[];
extern void _ZN8S19588C1D1Ev();
extern void _ZN8S19588C1D0Ev();
extern void ABISELECT(_ZThn16_N8S19588C1D1Ev,_ZThn12_N8S19588C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19588C1D0Ev,_ZThn12_N8S19588C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19588C1D1Ev,_ZThn40_N8S19588C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19588C1D0Ev,_ZThn40_N8S19588C1D0Ev)();
extern void ABISELECT(_ZTv0_n72_N8S19588C1D1Ev,_ZTv0_n36_N8S19588C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S19588C1D1Ev,_ZThn52_N8S19588C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19588C1D0Ev,_ZTv0_n36_N8S19588C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S19588C1D0Ev,_ZThn52_N8S19588C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n72_N8S19588C1D1Ev,_ZTvn124_n36_N8S19588C1D1Ev)();
extern void ABISELECT(_ZTvn208_n72_N8S19588C1D0Ev,_ZTvn124_n36_N8S19588C1D0Ev)();
extern void ABISELECT(_ZTvn320_n72_N8S19588C1D1Ev,_ZTvn180_n36_N8S19588C1D1Ev)();
extern void ABISELECT(_ZTvn320_n72_N8S19588C1D0Ev,_ZTvn180_n36_N8S19588C1D0Ev)();
extern void ABISELECT(_ZTvn528_n72_N8S19588C1D1Ev,_ZTvn304_n36_N8S19588C1D1Ev)();
extern void ABISELECT(_ZTvn528_n72_N8S19588C1D0Ev,_ZTvn304_n36_N8S19588C1D0Ev)();
extern void ABISELECT(_ZTvn576_n72_N8S19588C1D1Ev,_ZTvn332_n36_N8S19588C1D1Ev)();
extern void ABISELECT(_ZTvn576_n72_N8S19588C1D0Ev,_ZTvn332_n36_N8S19588C1D0Ev)();
extern void ABISELECT(_ZTvn592_n72_N8S19588C1D1Ev,_ZTvn336_n36_N8S19588C1D1Ev)();
extern void ABISELECT(_ZTvn592_n72_N8S19588C1D0Ev,_ZTvn336_n36_N8S19588C1D0Ev)();
extern void ABISELECT(_ZTvn640_n72_N8S19588C1D1Ev,_ZTvn364_n36_N8S19588C1D1Ev)();
extern void ABISELECT(_ZTvn640_n72_N8S19588C1D0Ev,_ZTvn364_n36_N8S19588C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C1D1Ev,_ZTv0_n12_N8S19588C1D1Ev)();
extern void ABISELECT(_ZThn752_N8S19588C1D1Ev,_ZThn432_N8S19588C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C1D0Ev,_ZTv0_n12_N8S19588C1D0Ev)();
extern void ABISELECT(_ZThn752_N8S19588C1D0Ev,_ZThn432_N8S19588C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C1D1Ev,_ZTv0_n16_N8S19588C1D1Ev)();
extern void ABISELECT(_ZThn800_N8S19588C1D1Ev,_ZThn460_N8S19588C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C1D0Ev,_ZTv0_n16_N8S19588C1D0Ev)();
extern void ABISELECT(_ZThn800_N8S19588C1D0Ev,_ZThn460_N8S19588C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C1D1Ev,_ZTv0_n16_N8S19588C1D1Ev)();
extern void ABISELECT(_ZThn904_N8S19588C1D1Ev,_ZThn516_N8S19588C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C1D0Ev,_ZTv0_n16_N8S19588C1D0Ev)();
extern void ABISELECT(_ZThn904_N8S19588C1D0Ev,_ZThn516_N8S19588C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C1D1Ev,_ZTv0_n20_N8S19588C1D1Ev)();
extern void ABISELECT(_ZThn912_N8S19588C1D1Ev,_ZThn520_N8S19588C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C1D0Ev,_ZTv0_n20_N8S19588C1D0Ev)();
extern void ABISELECT(_ZThn912_N8S19588C1D0Ev,_ZThn520_N8S19588C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C1D1Ev,_ZTv0_n24_N8S19588C1D1Ev)();
extern void ABISELECT(_ZThn928_N8S19588C1D1Ev,_ZThn528_N8S19588C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C1D0Ev,_ZTv0_n24_N8S19588C1D0Ev)();
extern void ABISELECT(_ZThn928_N8S19588C1D0Ev,_ZThn528_N8S19588C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S19588C1D1Ev,_ZTvn28_n24_N8S19588C1D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C1D0Ev,_ZTvn28_n24_N8S19588C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19588C1D1Ev,_ZTv0_n20_N8S19588C1D1Ev)();
extern void ABISELECT(_ZThn992_N8S19588C1D1Ev,_ZThn568_N8S19588C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C1D0Ev,_ZTv0_n20_N8S19588C1D0Ev)();
extern void ABISELECT(_ZThn992_N8S19588C1D0Ev,_ZThn568_N8S19588C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C1[] = {
  ABISELECT(992,568),
  ABISELECT(928,528),
  ABISELECT(912,520),
  ABISELECT(904,516),
  ABISELECT(80,52),
  ABISELECT(800,460),
  ABISELECT(752,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&_ZN8S19588C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C1D0Ev,
  ABISELECT(784,448),
  ABISELECT(736,420),
  ABISELECT(888,504),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19588C1D1Ev,_ZThn12_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19588C1D0Ev,_ZThn12_N8S19588C1D0Ev),
  ABISELECT(736,420),
  ABISELECT(688,392),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19588C1D1Ev,_ZThn40_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19588C1D0Ev,_ZThn40_N8S19588C1D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(912,516),
  ABISELECT(848,476),
  ABISELECT(832,468),
  ABISELECT(824,464),
  ABISELECT(720,408),
  ABISELECT(672,380),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19588C1D1Ev,_ZTv0_n36_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19588C1D0Ev,_ZTv0_n36_N8S19588C1D0Ev),
  ABISELECT(640,352),
  ABISELECT(512,284),
  ABISELECT(624,344),
  ABISELECT(616,340),
  ABISELECT(464,256),
  ABISELECT(-288,-176),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N8S19588C1D1Ev,_ZTvn124_n36_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N8S19588C1D0Ev,_ZTvn124_n36_N8S19588C1D0Ev),
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  ABISELECT(-400,-232),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n72_N8S19588C1D1Ev,_ZTvn180_n36_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n72_N8S19588C1D0Ev,_ZTvn180_n36_N8S19588C1D0Ev),
  ABISELECT(-608,-356),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn528_n72_N8S19588C1D1Ev,_ZTvn304_n36_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn528_n72_N8S19588C1D0Ev,_ZTvn304_n36_N8S19588C1D0Ev),
  ABISELECT(96,48),
  ABISELECT(-656,-384),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn576_n72_N8S19588C1D1Ev,_ZTvn332_n36_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn576_n72_N8S19588C1D0Ev,_ZTvn332_n36_N8S19588C1D0Ev),
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  ABISELECT(-672,-388),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn592_n72_N8S19588C1D1Ev,_ZTvn336_n36_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn592_n72_N8S19588C1D0Ev,_ZTvn336_n36_N8S19588C1D0Ev),
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-720,-416),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn640_n72_N8S19588C1D1Ev,_ZTvn364_n36_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn640_n72_N8S19588C1D0Ev,_ZTvn364_n36_N8S19588C1D0Ev),
  ABISELECT(-752,-432),
  ABISELECT(-752,-432),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C1D1Ev,_ZTv0_n12_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C1D0Ev,_ZTv0_n12_N8S19588C1D0Ev),
  ABISELECT(-800,-460),
  ABISELECT(-48,-28),
  ABISELECT(-800,-460),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C1D1Ev,_ZTv0_n16_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C1D0Ev,_ZTv0_n16_N8S19588C1D0Ev),
  ABISELECT(-904,-516),
  ABISELECT(-152,-84),
  ABISELECT(-904,-516),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C1D1Ev,_ZTv0_n16_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C1D0Ev,_ZTv0_n16_N8S19588C1D0Ev),
  ABISELECT(-912,-520),
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  ABISELECT(-912,-520),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C1D1Ev,_ZTv0_n20_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C1D0Ev,_ZTv0_n20_N8S19588C1D0Ev),
  ABISELECT(-928,-528),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-928,-528),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C1D1Ev,_ZTv0_n24_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C1D0Ev,_ZTv0_n24_N8S19588C1D0Ev),
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-976,-556),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C1D1Ev,_ZTvn28_n24_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C1D0Ev,_ZTvn28_n24_N8S19588C1D0Ev),
  ABISELECT(-992,-568),
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  ABISELECT(-992,-568),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C1D1Ev,_ZTv0_n20_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C1D0Ev,_ZTv0_n20_N8S19588C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19588C1[];
extern void _ZN9S19588C12D1Ev();
extern void _ZN9S19588C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C12__8S19588C1[] = {
  ABISELECT(800,460),
  ABISELECT(752,432),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C12[0]),
  (VTBL_ENTRY)&_ZN9S19588C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19588C12D1Ev,_ZTv0_n12_N9S19588C12D1Ev)();
extern void ABISELECT(_ZThn752_N9S19588C12D1Ev,_ZThn432_N9S19588C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C12D0Ev,_ZTv0_n12_N9S19588C12D0Ev)();
extern void ABISELECT(_ZThn752_N9S19588C12D0Ev,_ZThn432_N9S19588C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19588C12__8S19588C1[] = {
  ABISELECT(-752,-432),
  ABISELECT(-752,-432),
  (VTBL_ENTRY)&(_ZTI9S19588C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C12D1Ev,_ZTv0_n12_N9S19588C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C12D0Ev,_ZTv0_n12_N9S19588C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C12D1Ev,_ZTv0_n16_N9S19588C12D1Ev)();
extern void ABISELECT(_ZThn800_N9S19588C12D1Ev,_ZThn460_N9S19588C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C12D0Ev,_ZTv0_n16_N9S19588C12D0Ev)();
extern void ABISELECT(_ZThn800_N9S19588C12D0Ev,_ZThn460_N9S19588C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C12__8S19588C1[] = {
  ABISELECT(-800,-460),
  ABISELECT(-48,-28),
  ABISELECT(-800,-460),
  (VTBL_ENTRY)&(_ZTI9S19588C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C12D1Ev,_ZTv0_n16_N9S19588C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C12D0Ev,_ZTv0_n16_N9S19588C12D0Ev),
};
extern void _ZN9S19588C10D1Ev();
extern void _ZN9S19588C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C10__A__8S19588C1[] = {
  ABISELECT(784,448),
  ABISELECT(736,420),
  ABISELECT(888,504),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&_ZN9S19588C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C10D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A4__8S19588C1[] = {
  ABISELECT(736,420),
  ABISELECT(688,392),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C10__A10__8S19588C1[] = {
  ABISELECT(688,392),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn688_N8S19588C6D1Ev,_ZThn392_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn688_N8S19588C6D0Ev,_ZThn392_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A10__8S19588C1[] = {
  ABISELECT(-688,-392),
  ABISELECT(-688,-392),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn736_N8S19588C8D1Ev,_ZThn420_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn736_N8S19588C8D0Ev,_ZThn420_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C10__A4__8S19588C1[] = {
  ABISELECT(-736,-420),
  ABISELECT(-48,-28),
  ABISELECT(-736,-420),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn688_N8S19588C8D1Ev,_ZThn392_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn688_N8S19588C8D0Ev,_ZThn392_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C10__A4__8S19588C1[] = {
  ABISELECT(-688,-392),
  ABISELECT(-688,-392),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn888_N9S19588C10D1Ev,_ZThn504_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn888_N9S19588C10D0Ev,_ZThn504_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__9S19588C10__A__8S19588C1[] = {
  ABISELECT(-888,-504),
  ABISELECT(-152,-84),
  ABISELECT(-888,-504),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn736_N9S19588C10D1Ev,_ZThn420_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn736_N9S19588C10D0Ev,_ZThn420_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19588C10__A__8S19588C1[] = {
  ABISELECT(-736,-420),
  ABISELECT(-736,-420),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn784_N9S19588C10D1Ev,_ZThn448_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn784_N9S19588C10D0Ev,_ZThn448_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C10__A__8S19588C1[] = {
  ABISELECT(-784,-448),
  ABISELECT(-48,-28),
  ABISELECT(-784,-448),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C10__A__8S19588C1[] = {
  ABISELECT(736,420),
  ABISELECT(688,392),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev),
};
extern void _ZN8S19588C2D1Ev();
extern void _ZN8S19588C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C2__8S19588C1[] = {
  ABISELECT(912,516),
  ABISELECT(848,476),
  ABISELECT(832,468),
  ABISELECT(824,464),
  ABISELECT(720,408),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&_ZN8S19588C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C2D0Ev,
};
extern void _ZN8S19588C3D1Ev();
extern void _ZN8S19588C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C38S19588C2__8S19588C1[] = {
  ABISELECT(720,408),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&_ZN8S19588C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C3D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C38S19588C2__A1__8S19588C1[] = {
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn672_N8S19588C6D1Ev,_ZThn380_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn672_N8S19588C6D0Ev,_ZThn380_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C38S19588C2__A1__8S19588C1[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn672_N8S19588C3D1Ev,_ZThn380_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn672_N8S19588C3D0Ev,_ZThn380_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C38S19588C2__8S19588C1[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn720_N8S19588C3D1Ev,_ZThn408_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn720_N8S19588C3D0Ev,_ZThn408_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C38S19588C2__8S19588C1[] = {
  ABISELECT(-720,-408),
  ABISELECT(-48,-28),
  ABISELECT(-720,-408),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev),
};
extern void _ZN8S19588C7D1Ev();
extern void _ZN8S19588C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(640,352),
  ABISELECT(512,284),
  ABISELECT(624,344),
  ABISELECT(616,340),
  ABISELECT(464,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&_ZN8S19588C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C7D0Ev,
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C58S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(464,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C58S19588C78S19588C2__A4__8S19588C1[] = {
  ABISELECT(464,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn464_N8S19588C6D1Ev,_ZThn256_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn464_N8S19588C6D0Ev,_ZThn256_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C58S19588C78S19588C2__A4__8S19588C1[] = {
  ABISELECT(-464,-256),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S19588C5D1Ev,_ZThn256_N8S19588C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
extern void ABISELECT(_ZThn464_N8S19588C5D0Ev,_ZThn256_N8S19588C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C58S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(-464,-256),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
extern void _ZN8S19588C9D1Ev();
extern void _ZN8S19588C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C98S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&_ZN8S19588C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C9D0Ev,
};
extern void _ZN8S19588C3D1Ev();
extern void _ZN8S19588C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C38S19588C98S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(400,228),
  ABISELECT(352,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&_ZN8S19588C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C3D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C38S19588C98S19588C78S19588C2__A6__8S19588C1[] = {
  ABISELECT(352,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn352_N8S19588C6D1Ev,_ZThn200_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn352_N8S19588C6D0Ev,_ZThn200_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C38S19588C98S19588C78S19588C2__A6__8S19588C1[] = {
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn352_N8S19588C3D1Ev,_ZThn200_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn352_N8S19588C3D0Ev,_ZThn200_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C38S19588C98S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn400_N8S19588C3D1Ev,_ZThn228_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn400_N8S19588C3D0Ev,_ZThn228_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C38S19588C98S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(-400,-228),
  ABISELECT(-48,-28),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev),
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C98S19588C78S19588C2__A7__8S19588C1[] = {
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S19588C6D1Ev,_ZThn48_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S19588C6D0Ev,_ZThn48_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C98S19588C78S19588C2__A7__8S19588C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn400_N8S19588C9D1Ev,_ZThn228_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn400_N8S19588C9D0Ev,_ZThn228_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C98S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-400,-228),
  ABISELECT(-48,-28),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn352_N8S19588C9D1Ev,_ZThn200_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn352_N8S19588C9D0Ev,_ZThn200_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C98S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn528_N8S19588C9D1Ev,_ZThn296_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn528_N8S19588C9D0Ev,_ZThn296_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C98S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-528,-296),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn504_N8S19588C9D1Ev,_ZThn284_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn504_N8S19588C9D0Ev,_ZThn284_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__A1__8S19588C98S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-504,-284),
  ABISELECT(-152,-84),
  ABISELECT(-504,-284),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19588C9D1Ev,_ZTvn28_n24_N8S19588C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C9D0Ev,_ZTvn28_n24_N8S19588C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__8S19588C98S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C9D1Ev,_ZTvn28_n24_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C9D0Ev,_ZTvn28_n24_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZThn256_N8S19588C9D1Ev,_ZThn152_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn256_N8S19588C9D0Ev,_ZThn152_N8S19588C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C6__A__8S19588C98S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(96,48),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19588C9D1Ev,_ZThn152_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19588C9D0Ev,_ZThn152_N8S19588C9D0Ev),
};
extern void _ZN9S19588C10D1Ev();
extern void _ZN9S19588C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C108S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&_ZN9S19588C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C10D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C108S19588C78S19588C2__A2__8S19588C1[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C108S19588C78S19588C2__A8__8S19588C1[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S19588C6D1Ev,_ZThn16_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S19588C6D0Ev,_ZThn16_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C108S19588C78S19588C2__A8__8S19588C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S19588C8D1Ev,_ZThn44_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S19588C8D0Ev,_ZThn44_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C108S19588C78S19588C2__A2__8S19588C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S19588C8D1Ev,_ZThn16_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn32_N8S19588C8D0Ev,_ZThn16_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C108S19588C78S19588C2__A2__8S19588C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn232_N9S19588C10D1Ev,_ZThn128_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn232_N9S19588C10D0Ev,_ZThn128_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__9S19588C108S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(-232,-128),
  ABISELECT(-152,-84),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S19588C10D1Ev,_ZThn44_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S19588C10D0Ev,_ZThn44_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19588C108S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S19588C10D1Ev,_ZThn72_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S19588C10D0Ev,_ZThn72_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C108S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C108S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn616_N8S19588C7D1Ev,_ZThn340_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn616_N8S19588C7D0Ev,_ZThn340_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-616,-340),
  ABISELECT(-152,-84),
  ABISELECT(-616,-340),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C7D1Ev,_ZTv0_n12_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn464_N8S19588C7D1Ev,_ZThn256_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C7D0Ev,_ZTv0_n12_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn464_N8S19588C7D0Ev,_ZThn256_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-464,-256),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C7D1Ev,_ZTv0_n12_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C7D0Ev,_ZTv0_n12_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19588C7D1Ev,_ZTv0_n20_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn624_N8S19588C7D1Ev,_ZThn344_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C7D0Ev,_ZTv0_n20_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn624_N8S19588C7D0Ev,_ZThn344_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C8__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-624,-344),
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  ABISELECT(-624,-344),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C7D1Ev,_ZTv0_n20_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C7D0Ev,_ZTv0_n20_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn512_N8S19588C7D1Ev,_ZThn284_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn512_N8S19588C7D0Ev,_ZThn284_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-512,-284),
  ABISELECT(-48,-28),
  ABISELECT(-512,-284),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZThn112_N8S19588C7D1Ev,_ZThn56_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C7D0Ev,_ZThn56_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C9__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19588C7D1Ev,_ZThn56_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19588C7D0Ev,_ZThn56_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19588C7D1Ev,_ZTv0_n24_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn640_N8S19588C7D1Ev,_ZThn352_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C7D0Ev,_ZTv0_n24_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn640_N8S19588C7D0Ev,_ZThn352_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-640,-352),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-640,-352),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C7D1Ev,_ZTv0_n24_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C7D0Ev,_ZTv0_n24_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19588C7D1Ev,_ZTvn28_n24_N8S19588C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C7D0Ev,_ZTvn28_n24_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A1__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C7D1Ev,_ZTvn28_n24_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C7D0Ev,_ZTvn28_n24_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZThn368_N8S19588C7D1Ev,_ZThn208_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn368_N8S19588C7D0Ev,_ZThn208_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C9__A6__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(96,48),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S19588C7D1Ev,_ZThn208_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S19588C7D0Ev,_ZThn208_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZThn384_N8S19588C7D1Ev,_ZThn212_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn384_N8S19588C7D0Ev,_ZThn212_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19588C10__A__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S19588C7D1Ev,_ZThn212_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S19588C7D0Ev,_ZThn212_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZThn432_N8S19588C7D1Ev,_ZThn240_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn432_N8S19588C7D0Ev,_ZThn240_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A2__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S19588C7D1Ev,_ZThn240_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S19588C7D0Ev,_ZThn240_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C2D1Ev,_ZTv0_n12_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn672_N8S19588C2D1Ev,_ZThn380_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C2D0Ev,_ZTv0_n12_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn672_N8S19588C2D0Ev,_ZThn380_N8S19588C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C2__8S19588C1[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C2D1Ev,_ZTv0_n12_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C2D0Ev,_ZTv0_n12_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn720_N8S19588C2D1Ev,_ZThn408_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn720_N8S19588C2D0Ev,_ZThn408_N8S19588C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C2__8S19588C1[] = {
  ABISELECT(-720,-408),
  ABISELECT(-48,-28),
  ABISELECT(-720,-408),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZThn208_N8S19588C2D1Ev,_ZThn124_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn208_N8S19588C2D0Ev,_ZThn124_N8S19588C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C7__8S19588C2__8S19588C1[] = {
  ABISELECT(640,352),
  ABISELECT(512,284),
  ABISELECT(624,344),
  ABISELECT(616,340),
  ABISELECT(464,256),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19588C2D1Ev,_ZThn124_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19588C2D0Ev,_ZThn124_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn824_N8S19588C2D1Ev,_ZThn464_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn824_N8S19588C2D0Ev,_ZThn464_N8S19588C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__A2__8S19588C2__8S19588C1[] = {
  ABISELECT(-824,-464),
  ABISELECT(-152,-84),
  ABISELECT(-824,-464),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn832_N8S19588C2D1Ev,_ZThn468_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn832_N8S19588C2D0Ev,_ZThn468_N8S19588C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C8__8S19588C2__8S19588C1[] = {
  ABISELECT(-832,-468),
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  ABISELECT(-832,-468),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZThn320_N8S19588C2D1Ev,_ZThn180_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn320_N8S19588C2D0Ev,_ZThn180_N8S19588C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C98S19588C7__8S19588C2__8S19588C1[] = {
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S19588C2D1Ev,_ZThn180_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S19588C2D0Ev,_ZThn180_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19588C2D1Ev,_ZTv0_n24_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn848_N8S19588C2D1Ev,_ZThn476_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C2D0Ev,_ZTv0_n24_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn848_N8S19588C2D0Ev,_ZThn476_N8S19588C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C2__8S19588C1[] = {
  ABISELECT(-848,-476),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-848,-476),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C2D1Ev,_ZTv0_n24_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C2D0Ev,_ZTv0_n24_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19588C2D1Ev,_ZTvn28_n24_N8S19588C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C2D0Ev,_ZTvn28_n24_N8S19588C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A1__8S19588C2__8S19588C1[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-896,-504),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C2D1Ev,_ZTvn28_n24_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C2D0Ev,_ZTvn28_n24_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZThn576_N8S19588C2D1Ev,_ZThn332_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn576_N8S19588C2D0Ev,_ZThn332_N8S19588C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C98S19588C7__A7__8S19588C2__8S19588C1[] = {
  ABISELECT(96,48),
  ABISELECT(-576,-332),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn576_N8S19588C2D1Ev,_ZThn332_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn576_N8S19588C2D0Ev,_ZThn332_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZThn592_N8S19588C2D1Ev,_ZThn336_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn592_N8S19588C2D0Ev,_ZThn336_N8S19588C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19588C108S19588C7__A1__8S19588C2__8S19588C1[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  ABISELECT(-592,-336),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn592_N8S19588C2D1Ev,_ZThn336_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn592_N8S19588C2D0Ev,_ZThn336_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZThn640_N8S19588C2D1Ev,_ZThn364_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn640_N8S19588C2D0Ev,_ZThn364_N8S19588C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C108S19588C7__A2__8S19588C2__8S19588C1[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-640,-364),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn640_N8S19588C2D1Ev,_ZThn364_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn640_N8S19588C2D0Ev,_ZThn364_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn912_N8S19588C2D1Ev,_ZThn516_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn912_N8S19588C2D0Ev,_ZThn516_N8S19588C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19588C11__8S19588C2__8S19588C1[] = {
  ABISELECT(-912,-516),
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  ABISELECT(-912,-516),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev),
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C1[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__8S19588C1[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__8S19588C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C6__A2__8S19588C1[] = {
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C6__A2__8S19588C1[] = {
  ABISELECT(152,84),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C8__8S19588C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C8__A3__8S19588C1[] = {
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C8__A3__8S19588C1[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C8__8S19588C1[] = {
  ABISELECT(112,60),
  ABISELECT(-48,-28),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C8__8S19588C1[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void _ZN9S19588C10D1Ev();
extern void _ZN9S19588C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&_ZN9S19588C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C10D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A1__8S19588C1[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C10__A5__8S19588C1[] = {
  ABISELECT(-224,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A5__8S19588C1[] = {
  ABISELECT(224,124),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C10__A1__8S19588C1[] = {
  ABISELECT(176,96),
  ABISELECT(-48,-28),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C10__A1__8S19588C1[] = {
  ABISELECT(224,124),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C6__9S19588C10__8S19588C1[] = {
  ABISELECT(24,12),
  ABISELECT(-152,-84),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19588C10__8S19588C1[] = {
  ABISELECT(176,96),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C10__8S19588C1[] = {
  ABISELECT(128,68),
  ABISELECT(-48,-28),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C10__8S19588C1[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev),
};
extern void _ZN9S19588C11D1Ev();
extern void _ZN9S19588C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C11__8S19588C1[] = {
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C11[0]),
  (VTBL_ENTRY)&_ZN9S19588C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C11D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C11__A3__8S19588C1[] = {
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C11__A9__8S19588C1[] = {
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C11__A9__8S19588C1[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C11__A3__8S19588C1[] = {
  ABISELECT(192,108),
  ABISELECT(-48,-28),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C11__A3__8S19588C1[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C11D1Ev,_ZTv0_n16_N9S19588C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C11D0Ev,_ZTv0_n16_N9S19588C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C11__8S19588C1[] = {
  ABISELECT(192,108),
  ABISELECT(-48,-28),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S19588C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C11D1Ev,_ZTv0_n16_N9S19588C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C11D0Ev,_ZTv0_n16_N9S19588C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C11D1Ev,_ZTv0_n12_N9S19588C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19588C11D0Ev,_ZTv0_n12_N9S19588C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19588C11__8S19588C1[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI9S19588C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C11D1Ev,_ZTv0_n12_N9S19588C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C11D0Ev,_ZTv0_n12_N9S19588C11D0Ev),
};
static  VTT_ENTRY vtt_S19588C1[] = {
  {&(_ZTV8S19588C1[9]),  9,119},
  {&(_tg__ZTV9S19588C12__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19588C12__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C12__8S19588C1[4]),  4,6},
  {&(_tg__ZTV9S19588C10__A__8S19588C1[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C10__A4__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C10__A10__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A10__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C10__A4__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C10__A4__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C6__9S19588C10__A__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19588C10__A__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C10__A__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C8__9S19588C10__A__8S19588C1[4]),  4,6},
  {&(_ZTV8S19588C1[33]),  33,119},
  {&(_ZTV8S19588C1[77]),  77,119},
  {&(_ZTV8S19588C1[83]),  83,119},
  {&(_ZTV8S19588C1[42]),  42,119},
  {&(_ZTV8S19588C1[89]),  89,119},
  {&(_ZTV8S19588C1[96]),  96,119},
  {&(_ZTV8S19588C1[50]),  50,119},
  {&(_ZTV8S19588C1[104]),  104,119},
  {&(_ZTV8S19588C1[110]),  110,119},
  {&(_ZTV8S19588C1[54]),  54,119},
  {&(_ZTV8S19588C1[59]),  59,119},
  {&(_ZTV8S19588C1[66]),  66,119},
  {&(_ZTV8S19588C1[72]),  72,119},
  {&(_ZTV8S19588C1[117]),  117,119},
  {&(_ZTV8S19588C1[16]),  16,119},
  {&(_ZTV8S19588C1[22]),  22,119},
  {&(_tg__ZTV8S19588C2__8S19588C1[8]),  8,10},
  {&(_tg__ZTV8S19588C38S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C38S19588C2__A1__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C38S19588C2__A1__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C38S19588C2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C38S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C78S19588C2__8S19588C1[7]),  7,9},
  {&(_tg__ZTV8S19588C58S19588C78S19588C2__A1__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C58S19588C78S19588C2__A4__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C58S19588C78S19588C2__A4__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C58S19588C78S19588C2__A1__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C98S19588C78S19588C2__8S19588C1[6]),  6,8},
  {&(_tg__ZTV8S19588C38S19588C98S19588C78S19588C2__A1__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C38S19588C98S19588C78S19588C2__A6__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C38S19588C98S19588C78S19588C2__A6__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C38S19588C98S19588C78S19588C2__A1__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C38S19588C98S19588C78S19588C2__A1__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C98S19588C78S19588C2__A7__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C98S19588C78S19588C2__A7__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C98S19588C78S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C98S19588C78S19588C2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV9S19588C10__8S19588C98S19588C78S19588C2__8S19588C1[6]),  6,8},
  {&(_tg__ZTV8S19588C6__A1__8S19588C98S19588C78S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C89S19588C10__8S19588C98S19588C78S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C6__A__8S19588C98S19588C78S19588C2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV9S19588C108S19588C78S19588C2__A1__8S19588C1[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C108S19588C78S19588C2__A2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C108S19588C78S19588C2__A8__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C108S19588C78S19588C2__A8__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C108S19588C78S19588C2__A2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C108S19588C78S19588C2__A2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C6__9S19588C108S19588C78S19588C2__A1__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19588C108S19588C78S19588C2__A1__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C108S19588C78S19588C2__A1__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C8__9S19588C108S19588C78S19588C2__A1__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C6__8S19588C78S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C78S19588C2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C8__8S19588C78S19588C2__8S19588C1[5]),  5,7},
  {&(_tg__ZTV8S19588C5__8S19588C78S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C9__8S19588C78S19588C2__8S19588C1[6]),  6,8},
  {&(_tg__ZTV9S19588C10__8S19588C78S19588C2__8S19588C1[6]),  6,8},
  {&(_tg__ZTV8S19588C89S19588C10__A1__8S19588C78S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C9__A6__8S19588C78S19588C2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV9S19588C10__A__8S19588C78S19588C2__8S19588C1[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C10__A2__8S19588C78S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C7__8S19588C2__8S19588C1[7]),  7,9},
  {&(_tg__ZTV8S19588C6__A2__8S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C8__8S19588C2__8S19588C1[5]),  5,7},
  {&(_tg__ZTV8S19588C98S19588C7__8S19588C2__8S19588C1[6]),  6,8},
  {&(_tg__ZTV9S19588C10__8S19588C2__8S19588C1[6]),  6,8},
  {&(_tg__ZTV8S19588C89S19588C10__A1__8S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C98S19588C7__A7__8S19588C2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV9S19588C108S19588C7__A1__8S19588C2__8S19588C1[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C108S19588C7__A2__8S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV9S19588C11__8S19588C2__8S19588C1[5]),  5,7},
  {&(_tg__ZTV8S19588C5__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C6__A2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C6__A2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C8__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C8__A3__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C8__A3__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C8__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C8__8S19588C1[3]),  3,5},
  {&(_tg__ZTV9S19588C10__8S19588C1[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C10__A1__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C10__A5__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A5__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C10__A1__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C10__A1__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C6__9S19588C10__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19588C10__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C10__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C8__9S19588C10__8S19588C1[4]),  4,6},
  {&(_tg__ZTV9S19588C11__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C89S19588C11__A3__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C11__A9__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C11__A9__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C11__A3__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C11__A3__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C11__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19588C11__8S19588C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19588C1[];
extern  VTBL_ENTRY _ZTV8S19588C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C1[];
static VTBL_ENTRY alt_thunk_names164[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C2D0Ev,_ZTv0_n24_N8S19588C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S19588C2D0Ev,_ZThn476_N8S19588C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C2D1Ev,_ZTv0_n24_N8S19588C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S19588C2D1Ev,_ZThn476_N8S19588C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N8S19588C2D0Ev,_ZThn516_N8S19588C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19588C2D0Ev,_ZThn468_N8S19588C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N8S19588C2D1Ev,_ZThn516_N8S19588C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19588C2D1Ev,_ZThn468_N8S19588C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N8S19588C2D0Ev,_ZThn464_N8S19588C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19588C2D0Ev,_ZThn408_N8S19588C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N8S19588C2D1Ev,_ZThn464_N8S19588C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19588C2D1Ev,_ZThn408_N8S19588C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C2D0Ev,_ZTv0_n12_N8S19588C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C2D0Ev,_ZThn380_N8S19588C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C2D1Ev,_ZTv0_n12_N8S19588C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C2D1Ev,_ZThn380_N8S19588C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C7D0Ev,_ZTv0_n24_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19588C7D0Ev,_ZThn352_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C7D1Ev,_ZTv0_n24_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19588C7D1Ev,_ZThn352_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C7D0Ev,_ZTv0_n20_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19588C7D0Ev,_ZThn344_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C7D1Ev,_ZTv0_n20_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19588C7D1Ev,_ZThn344_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C7D0Ev,_ZTv0_n12_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C7D0Ev,_ZThn256_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C7D1Ev,_ZTv0_n12_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C7D1Ev,_ZThn256_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S19588C7D0Ev,_ZThn284_N8S19588C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn616_N8S19588C7D0Ev,_ZThn340_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S19588C7D1Ev,_ZThn284_N8S19588C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn616_N8S19588C7D1Ev,_ZThn340_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19588C9D0Ev,_ZThn296_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19588C9D1Ev,_ZThn296_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C9D0Ev,_ZThn200_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C9D1Ev,_ZThn200_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S19588C9D0Ev,_ZThn284_N8S19588C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19588C9D0Ev,_ZThn228_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S19588C9D1Ev,_ZThn284_N8S19588C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19588C9D1Ev,_ZThn228_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C5D0Ev,_ZThn256_N8S19588C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C5D1Ev,_ZThn256_N8S19588C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19588C3D0Ev,_ZThn228_N8S19588C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19588C3D0Ev,_ZThn408_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19588C3D1Ev,_ZThn228_N8S19588C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19588C3D1Ev,_ZThn408_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C3D0Ev,_ZThn200_N8S19588C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C3D0Ev,_ZThn380_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C3D1Ev,_ZThn200_N8S19588C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C3D1Ev,_ZThn380_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19588C10D0Ev,_ZThn44_N9S19588C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S19588C10D0Ev,_ZThn420_N9S19588C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19588C10D1Ev,_ZThn44_N9S19588C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S19588C10D1Ev,_ZThn420_N9S19588C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19588C10D0Ev,_ZThn72_N9S19588C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19588C10D0Ev,_ZThn128_N9S19588C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S19588C10D0Ev,_ZThn448_N9S19588C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn888_N9S19588C10D0Ev,_ZThn504_N9S19588C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19588C10D1Ev,_ZThn72_N9S19588C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19588C10D1Ev,_ZThn128_N9S19588C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S19588C10D1Ev,_ZThn448_N9S19588C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn888_N9S19588C10D1Ev,_ZThn504_N9S19588C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C8D0Ev,_ZThn16_N8S19588C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S19588C8D0Ev,_ZThn392_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C8D1Ev,_ZThn16_N8S19588C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S19588C8D1Ev,_ZThn392_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19588C8D0Ev,_ZThn44_N8S19588C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S19588C8D0Ev,_ZThn420_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19588C8D1Ev,_ZThn44_N8S19588C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S19588C8D1Ev,_ZThn420_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C6D0Ev,_ZThn16_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19588C6D0Ev,_ZThn48_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C6D0Ev,_ZThn200_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C6D0Ev,_ZThn256_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C6D0Ev,_ZThn380_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S19588C6D0Ev,_ZThn392_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C6D1Ev,_ZThn16_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19588C6D1Ev,_ZThn48_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C6D1Ev,_ZThn200_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C6D1Ev,_ZThn256_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C6D1Ev,_ZThn380_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S19588C6D1Ev,_ZThn392_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C12D0Ev,_ZTv0_n16_N9S19588C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19588C12D0Ev,_ZThn460_N9S19588C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C12D1Ev,_ZTv0_n16_N9S19588C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19588C12D1Ev,_ZThn460_N9S19588C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C12D0Ev,_ZTv0_n12_N9S19588C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn752_N9S19588C12D0Ev,_ZThn432_N9S19588C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C12D1Ev,_ZTv0_n12_N9S19588C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn752_N9S19588C12D1Ev,_ZThn432_N9S19588C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C1D0Ev,_ZTv0_n24_N8S19588C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn928_N8S19588C1D0Ev,_ZThn528_N8S19588C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C1D1Ev,_ZTv0_n24_N8S19588C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn928_N8S19588C1D1Ev,_ZThn528_N8S19588C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C1D0Ev,_ZTv0_n20_N8S19588C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S19588C1D0Ev,_ZThn568_N8S19588C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn912_N8S19588C1D0Ev,_ZThn520_N8S19588C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C1D1Ev,_ZTv0_n20_N8S19588C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S19588C1D1Ev,_ZThn568_N8S19588C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn912_N8S19588C1D1Ev,_ZThn520_N8S19588C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C1D0Ev,_ZTv0_n16_N8S19588C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn904_N8S19588C1D0Ev,_ZThn516_N8S19588C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19588C1D0Ev,_ZThn460_N8S19588C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C1D1Ev,_ZTv0_n16_N8S19588C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn904_N8S19588C1D1Ev,_ZThn516_N8S19588C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19588C1D1Ev,_ZThn460_N8S19588C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C1D0Ev,_ZTv0_n12_N8S19588C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn752_N8S19588C1D0Ev,_ZThn432_N8S19588C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C1D1Ev,_ZTv0_n12_N8S19588C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn752_N8S19588C1D1Ev,_ZThn432_N8S19588C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19588C1D0Ev,_ZTv0_n36_N8S19588C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19588C1D0Ev,_ZThn52_N8S19588C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19588C1D1Ev,_ZTv0_n36_N8S19588C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19588C1D1Ev,_ZThn52_N8S19588C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C1 = {  "S19588C1", // class name
  bases_S19588C1, 33,
  &(vtc_S19588C1[0]), // expected_vtbl_contents
  &(vtt_S19588C1[0]), // expected_vtt_contents
  ABISELECT(1008,576), // object size
  NSPAIRA(_ZTI8S19588C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19588C1),119, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19588C1),116, //virtual table table var
  33, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names164,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C3  : virtual S20760C9 {
  char s21150c3f0[2];
  virtual  ~S21150C3(); // _ZN8S21150C3D2Ev
  S21150C3(); // tgen
};
//SIG(-1 S21150C3) C1{ VBC2{ vd m FL} vd Fc[2]}


 S21150C3 ::~S21150C3(){ note_dtor("S21150C3", this);}
S21150C3 ::S21150C3(){ note_ctor("S21150C3", this);} // tgen

static void Test_S21150C3()
{
  extern Class_Descriptor cd_S21150C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S21150C3, buf);
    S21150C3 *dp, &lv = *(dp=new (buf) S21150C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S21150C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21150C3)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(16,8), "S21150C3");
    check_field_offset(lv, s21150c3f0, ABISELECT(8,4), "S21150C3.s21150c3f0");
    test_class_info(&lv, &cd_S21150C3);
    dp->~S21150C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C3(Test_S21150C3, "S21150C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S21150C3C1Ev();
extern void _ZN8S21150C3D2Ev();
Name_Map name_map_S21150C3[] = {
  NSPAIR(_ZN8S21150C3C1Ev),
  NSPAIR(_ZN8S21150C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S21150C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21150C3[];
extern void _ZN8S21150C3D1Ev();
extern void _ZN8S21150C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21150C3D1Ev,_ZTv0_n12_N8S21150C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21150C3D1Ev,_ZThn8_N8S21150C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C3D0Ev,_ZTv0_n12_N8S21150C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21150C3D0Ev,_ZThn8_N8S21150C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21150C3[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C3[0]),
  (VTBL_ENTRY)&_ZN8S21150C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C3D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21150C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C3D1Ev,_ZTv0_n12_N8S21150C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C3D0Ev,_ZTv0_n12_N8S21150C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S21150C3[];
static  VTT_ENTRY vtt_S21150C3[] = {
  {&(_ZTV8S21150C3[3]),  3,10},
  {&(_ZTV8S21150C3[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21150C3[];
extern  VTBL_ENTRY _ZTV8S21150C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C3[];
static VTBL_ENTRY alt_thunk_names165[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C3D0Ev,_ZTv0_n12_N8S21150C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C3D0Ev,_ZThn8_N8S21150C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C3D1Ev,_ZTv0_n12_N8S21150C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C3D1Ev,_ZThn8_N8S21150C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C3 = {  "S21150C3", // class name
  bases_S21150C3, 1,
  &(vtc_S21150C3[0]), // expected_vtbl_contents
  &(vtt_S21150C3[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S21150C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21150C3),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21150C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names165,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C6  : virtual S20760C5_nt {
  ::S4228C37 s21150c6f0;
  virtual  ~S21150C6(); // _ZN8S21150C6D2Ev
  S21150C6(); // tgen
};
//SIG(-1 S21150C6) C1{ VBC2{ vd m FL} vd FC3{ m}}


 S21150C6 ::~S21150C6(){ note_dtor("S21150C6", this);}
S21150C6 ::S21150C6(){ note_ctor("S21150C6", this);} // tgen

static void Test_S21150C6()
{
  extern Class_Descriptor cd_S21150C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S21150C6, buf);
    S21150C6 *dp, &lv = *(dp=new (buf) S21150C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S21150C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21150C6)");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(16,8), "S21150C6");
    check_field_offset(lv, s21150c6f0, ABISELECT(8,4), "S21150C6.s21150c6f0");
    test_class_info(&lv, &cd_S21150C6);
    dp->~S21150C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C6(Test_S21150C6, "S21150C6", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S21150C6C1Ev();
extern void _ZN8S21150C6D2Ev();
Name_Map name_map_S21150C6[] = {
  NSPAIR(_ZN8S21150C6C1Ev),
  NSPAIR(_ZN8S21150C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S21150C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21150C6[];
extern void _ZN8S21150C6D1Ev();
extern void _ZN8S21150C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21150C6D1Ev,_ZThn8_N8S21150C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S21150C6D0Ev,_ZThn8_N8S21150C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21150C6[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C6[0]),
  (VTBL_ENTRY)&_ZN8S21150C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C6D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21150C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21150C6[];
static  VTT_ENTRY vtt_S21150C6[] = {
  {&(_ZTV8S21150C6[3]),  3,10},
  {&(_ZTV8S21150C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21150C6[];
extern  VTBL_ENTRY _ZTV8S21150C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C6[];
static VTBL_ENTRY alt_thunk_names166[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C6D0Ev,_ZThn8_N8S21150C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C6D1Ev,_ZThn8_N8S21150C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C6 = {  "S21150C6", // class name
  bases_S21150C6, 1,
  &(vtc_S21150C6[0]), // expected_vtbl_contents
  &(vtt_S21150C6[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S21150C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21150C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21150C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names166,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C10  : S20760C13 , virtual S4228C23 , virtual S4228C37 {
  short s21150c10f0;
  ~S21150C10(); // tgen
  S21150C10(); // tgen
};
//SIG(-1 S21150C10) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S21150C10 ::~S21150C10(){ note_dtor("S21150C10", this);} // tgen
S21150C10 ::S21150C10(){ note_ctor("S21150C10", this);} // tgen

static void Test_S21150C10()
{
  extern Class_Descriptor cd_S21150C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S21150C10, buf);
    S21150C10 *dp, &lv = *(dp=new (buf) S21150C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S21150C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21150C10)");
    check_base_class_offset(lv, (S20760C13*), 0, "S21150C10");
    check_base_class_offset(lv, (S4228C23*), 0, "S21150C10");
    check_base_class_offset(lv, (S4228C37*), 0, "S21150C10");
    check_field_offset(lv, s21150c10f0, ABISELECT(32,28), "S21150C10.s21150c10f0");
    test_class_info(&lv, &cd_S21150C10);
    dp->~S21150C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C10(Test_S21150C10, "S21150C10", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN9S21150C10C1Ev();
extern void _ZN9S21150C10D1Ev();
Name_Map name_map_S21150C10[] = {
  NSPAIR(_ZN9S21150C10C1Ev),
  NSPAIR(_ZN9S21150C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S21150C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21150C10[];
extern void _ZN9S21150C10D1Ev();
extern void _ZN9S21150C10D0Ev();
static  VTBL_ENTRY vtc_S21150C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C10[0]),
  (VTBL_ENTRY)&_ZN9S21150C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C10D0Ev,
};
extern VTBL_ENTRY _ZTV9S21150C10[];
static  VTT_ENTRY vtt_S21150C10[] = {
  {&(_ZTV9S21150C10[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21150C10[];
extern  VTBL_ENTRY _ZTV9S21150C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C10[];
Class_Descriptor cd_S21150C10 = {  "S21150C10", // class name
  bases_S21150C10, 3,
  &(vtc_S21150C10[0]), // expected_vtbl_contents
  &(vtt_S21150C10[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI9S21150C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21150C10),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21150C10),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C5  : virtual S21150C6 , virtual S4228C27 , S21150C10 {
  int s21150c5f0;
  virtual  ~S21150C5(); // _ZN8S21150C5D2Ev
  S21150C5(); // tgen
};
//SIG(-1 S21150C5) C1{ VBC2{ VBC3{ vd m FL} vd FC4{ m}} VBC5{ m} BC6{ BC7{ vd m Fi[6]} VBC8{ m} VBC4 Fs} vd Fi}


 S21150C5 ::~S21150C5(){ note_dtor("S21150C5", this);}
S21150C5 ::S21150C5(){ note_ctor("S21150C5", this);} // tgen

static void Test_S21150C5()
{
  extern Class_Descriptor cd_S21150C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S21150C5, buf);
    S21150C5 *dp, &lv = *(dp=new (buf) S21150C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S21150C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21150C5)");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C6*), ABISELECT(56,44), "S21150C5");
    check_base_class_offset(lv, (S21150C6*), ABISELECT(40,36), "S21150C5");
    check_base_class_offset(lv, (S4228C27*), 0, "S21150C5");
    check_base_class_offset(lv, (S20760C13*)(S21150C10*), 0, "S21150C5");
    check_base_class_offset(lv, (S4228C23*)(S21150C10*), 0, "S21150C5");
    check_base_class_offset(lv, (S4228C37*)(S21150C10*), 0, "S21150C5");
    check_base_class_offset(lv, (S21150C10*), 0, "S21150C5");
    check_field_offset(lv, s21150c5f0, ABISELECT(36,32), "S21150C5.s21150c5f0");
    test_class_info(&lv, &cd_S21150C5);
    dp->~S21150C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C5(Test_S21150C5, "S21150C5", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN8S21150C5C1Ev();
extern void _ZN8S21150C5D2Ev();
Name_Map name_map_S21150C5[] = {
  NSPAIR(_ZN8S21150C5C1Ev),
  NSPAIR(_ZN8S21150C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C6;
extern VTBL_ENTRY _ZTI8S21150C6[];
extern  VTBL_ENTRY _ZTV8S21150C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C6[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21150C10;
extern VTBL_ENTRY _ZTI9S21150C10[];
extern  VTBL_ENTRY _ZTV9S21150C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C10[];
static Base_Class bases_S21150C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    ABISELECT(56,44), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21150C6,    ABISELECT(40,36), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21150C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21150C5[];
extern void _ZN8S21150C5D1Ev();
extern void _ZN8S21150C5D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S21150C5D1Ev,_ZTv0_n16_N8S21150C5D1Ev)();
extern void ABISELECT(_ZThn40_N8S21150C5D1Ev,_ZThn36_N8S21150C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C5D0Ev,_ZTv0_n16_N8S21150C5D0Ev)();
extern void ABISELECT(_ZThn40_N8S21150C5D0Ev,_ZThn36_N8S21150C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C5D1Ev,_ZTv0_n12_N8S21150C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21150C5D1Ev,_ZThn44_N8S21150C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C5D0Ev,_ZTv0_n12_N8S21150C5D0Ev)();
extern void ABISELECT(_ZThn56_N8S21150C5D0Ev,_ZThn44_N8S21150C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21150C5[] = {
  0,
  ABISELECT(56,44),
  ABISELECT(40,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C5[0]),
  (VTBL_ENTRY)&_ZN8S21150C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C5D0Ev,
  ABISELECT(-40,-36),
  ABISELECT(16,8),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S21150C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C5D1Ev,_ZTv0_n16_N8S21150C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C5D0Ev,_ZTv0_n16_N8S21150C5D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21150C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C5D1Ev,_ZTv0_n12_N8S21150C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C5D0Ev,_ZTv0_n12_N8S21150C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S21150C5[];
extern void _ZN9S21150C10D1Ev();
extern void _ZN9S21150C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C10__8S21150C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C10[0]),
  (VTBL_ENTRY)&_ZN9S21150C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C10D0Ev,
};
extern void _ZN8S21150C6D1Ev();
extern void _ZN8S21150C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21150C6__8S21150C5[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C6[0]),
  (VTBL_ENTRY)&_ZN8S21150C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21150C6D1Ev,_ZThn8_N8S21150C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S21150C6D0Ev,_ZThn8_N8S21150C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21150C6__8S21150C5[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21150C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev),
};
static  VTT_ENTRY vtt_S21150C5[] = {
  {&(_ZTV8S21150C5[7]),  7,20},
  {&(_tg__ZTV9S21150C10__8S21150C5[4]),  4,6},
  {&(_ZTV8S21150C5[13]),  13,20},
  {&(_ZTV8S21150C5[18]),  18,20},
  {&(_tg__ZTV8S21150C6__8S21150C5[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21150C6__8S21150C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21150C5[];
extern  VTBL_ENTRY _ZTV8S21150C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C5[];
static VTBL_ENTRY alt_thunk_names167[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C6D0Ev,_ZThn8_N8S21150C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C6D1Ev,_ZThn8_N8S21150C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C5D0Ev,_ZTv0_n12_N8S21150C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21150C5D0Ev,_ZThn44_N8S21150C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C5D1Ev,_ZTv0_n12_N8S21150C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21150C5D1Ev,_ZThn44_N8S21150C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C5D0Ev,_ZTv0_n16_N8S21150C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21150C5D0Ev,_ZThn36_N8S21150C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C5D1Ev,_ZTv0_n16_N8S21150C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21150C5D1Ev,_ZThn36_N8S21150C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C5 = {  "S21150C5", // class name
  bases_S21150C5, 7,
  &(vtc_S21150C5[0]), // expected_vtbl_contents
  &(vtt_S21150C5[0]), // expected_vtt_contents
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI8S21150C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21150C5),20, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21150C5),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names167,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C16  : virtual S20760C5_nt {
  virtual  ~S21150C16(); // _ZN9S21150C16D2Ev
  S21150C16(); // tgen
};
//SIG(-1 S21150C16) C1{ VBC2{ vd m FL} vd}


 S21150C16 ::~S21150C16(){ note_dtor("S21150C16", this);}
S21150C16 ::S21150C16(){ note_ctor("S21150C16", this);} // tgen

static void Test_S21150C16()
{
  extern Class_Descriptor cd_S21150C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S21150C16, buf);
    S21150C16 *dp, &lv = *(dp=new (buf) S21150C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S21150C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21150C16)");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(8,4), "S21150C16");
    test_class_info(&lv, &cd_S21150C16);
    dp->~S21150C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C16(Test_S21150C16, "S21150C16", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S21150C16C1Ev();
extern void _ZN9S21150C16D2Ev();
Name_Map name_map_S21150C16[] = {
  NSPAIR(_ZN9S21150C16C1Ev),
  NSPAIR(_ZN9S21150C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S21150C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21150C16[];
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn8_N9S21150C16D1Ev,_ZThn4_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn8_N9S21150C16D0Ev,_ZThn4_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21150C16[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S21150C16[];
static  VTT_ENTRY vtt_S21150C16[] = {
  {&(_ZTV9S21150C16[3]),  3,10},
  {&(_ZTV9S21150C16[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
static VTBL_ENTRY alt_thunk_names168[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21150C16D0Ev,_ZThn4_N9S21150C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21150C16D1Ev,_ZThn4_N9S21150C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C16 = {  "S21150C16", // class name
  bases_S21150C16, 1,
  &(vtc_S21150C16[0]), // expected_vtbl_contents
  &(vtt_S21150C16[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S21150C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21150C16),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21150C16),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names168,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C15  : S20760C5_nt , virtual S20760C13 , S21150C16 {
  ::S20760C13 s21150c15f0;
  ~S21150C15(); // tgen
  S21150C15(); // tgen
};
//SIG(-1 S21150C15) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S21150C15 ::~S21150C15(){ note_dtor("S21150C15", this);} // tgen
S21150C15 ::S21150C15(){ note_ctor("S21150C15", this);} // tgen

static void Test_S21150C15()
{
  extern Class_Descriptor cd_S21150C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S21150C15, buf);
    S21150C15 *dp, &lv = *(dp=new (buf) S21150C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S21150C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21150C15)");
    /*is_ambiguous_... S21150C15::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*), 0, "S21150C15");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S21150C15");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*), ABISELECT(88,72), "S21150C15");
    check_base_class_offset(lv, (S21150C16*), ABISELECT(16,12), "S21150C15");
    check_field_offset(lv, s21150c15f0, ABISELECT(24,16), "S21150C15.s21150c15f0");
    test_class_info(&lv, &cd_S21150C15);
    dp->~S21150C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C15(Test_S21150C15, "S21150C15", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN9S21150C15C1Ev();
extern void _ZN9S21150C15D1Ev();
Name_Map name_map_S21150C15[] = {
  NSPAIR(_ZN9S21150C15C1Ev),
  NSPAIR(_ZN9S21150C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
static Base_Class bases_S21150C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C5_nt,    ABISELECT(88,72), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21150C16,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21150C15[];
extern void _ZN9S21150C15D1Ev();
extern void _ZN9S21150C15D0Ev();
extern void ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S21150C15D1Ev,_ZThn72_N9S21150C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S21150C15D0Ev,_ZThn72_N9S21150C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21150C15[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&_ZN9S21150C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C15D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S21150C15[];
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C16__9S21150C15[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S21150C16D1Ev,_ZThn60_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn72_N9S21150C16D0Ev,_ZThn60_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C16__9S21150C15[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
static  VTT_ENTRY vtt_S21150C15[] = {
  {&(_ZTV9S21150C15[4]),  4,21},
  {&(_tg__ZTV9S21150C16__9S21150C15[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C16__9S21150C15[3]),  3,5},
  {&(_ZTV9S21150C15[14]),  14,21},
  {&(_ZTV9S21150C15[9]),  9,21},
  {&(_ZTV9S21150C15[19]),  19,21},
};
extern VTBL_ENTRY _ZTI9S21150C15[];
extern  VTBL_ENTRY _ZTV9S21150C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C15[];
static VTBL_ENTRY alt_thunk_names169[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C16D0Ev,_ZThn60_N9S21150C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C16D1Ev,_ZThn60_N9S21150C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21150C15D0Ev,_ZThn72_N9S21150C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21150C15D1Ev,_ZThn72_N9S21150C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C15 = {  "S21150C15", // class name
  bases_S21150C15, 4,
  &(vtc_S21150C15[0]), // expected_vtbl_contents
  &(vtt_S21150C15[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI9S21150C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21150C15),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21150C15),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names169,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C14  : virtual S20760C13 , virtual S21150C15 {
  long double s21150c14f0;
  ~S21150C14(); // tgen
  S21150C14(); // tgen
};
//SIG(-1 S21150C14) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S21150C14 ::~S21150C14(){ note_dtor("S21150C14", this);} // tgen
S21150C14 ::S21150C14(){ note_ctor("S21150C14", this);} // tgen

static void Test_S21150C14()
{
  extern Class_Descriptor cd_S21150C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S21150C14, buf);
    S21150C14 *dp, &lv = *(dp=new (buf) S21150C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S21150C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21150C14)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S21150C14");
    check_base_class_offset(lv, (S20760C13*)(S21150C15*), ABISELECT(32,16), "S21150C14");
    /*is_ambiguous_... S21150C15::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C15*), ABISELECT(64,44), "S21150C14");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*)(S21150C15*), ABISELECT(120,88), "S21150C14");
    check_base_class_offset(lv, (S21150C16*)(S21150C15*), ABISELECT(80,56), "S21150C14");
    check_base_class_offset(lv, (S21150C15*), ABISELECT(64,44), "S21150C14");
    check_field_offset(lv, s21150c14f0, ABISELECT(16,4), "S21150C14.s21150c14f0");
    test_class_info(&lv, &cd_S21150C14);
    dp->~S21150C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C14(Test_S21150C14, "S21150C14", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN9S21150C14C1Ev();
extern void _ZN9S21150C14D1Ev();
Name_Map name_map_S21150C14[] = {
  NSPAIR(_ZN9S21150C14C1Ev),
  NSPAIR(_ZN9S21150C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C15;
extern VTBL_ENTRY _ZTI9S21150C15[];
extern  VTBL_ENTRY _ZTV9S21150C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C15[];
static Base_Class bases_S21150C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C5_nt,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21150C16,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21150C15,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21150C14[];
extern void _ZN9S21150C14D1Ev();
extern void _ZN9S21150C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S21150C14D1Ev,_ZThn16_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S21150C14D0Ev,_ZThn16_N9S21150C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S21150C14D1Ev,_ZThn44_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S21150C14D0Ev,_ZThn44_N9S21150C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn120_N9S21150C14D1Ev,_ZThn88_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn120_N9S21150C14D0Ev,_ZThn88_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21150C14[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&_ZN9S21150C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C14D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S21150C14[];
extern void _ZN9S21150C15D1Ev();
extern void _ZN9S21150C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C14[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&_ZN9S21150C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C15D0Ev,
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C14[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S21150C16D1Ev,_ZThn32_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S21150C16D0Ev,_ZThn32_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C169S21150C15__9S21150C14[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C15__9S21150C14[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__9S21150C15__9S21150C14[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C15__9S21150C14[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
static  VTT_ENTRY vtt_S21150C14[] = {
  {&(_ZTV9S21150C14[5]),  5,29},
  {&(_ZTV9S21150C14[10]),  10,29},
  {&(_ZTV9S21150C14[17]),  17,29},
  {&(_ZTV9S21150C14[22]),  22,29},
  {&(_ZTV9S21150C14[27]),  27,29},
  {&(_tg__ZTV9S21150C15__9S21150C14[4]),  4,6},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C14[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C169S21150C15__9S21150C14[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C15__9S21150C14[3]),  3,5},
  {&(_tg__ZTV9S21150C16__9S21150C15__9S21150C14[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C15__9S21150C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21150C14[];
extern  VTBL_ENTRY _ZTV9S21150C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C14[];
static VTBL_ENTRY alt_thunk_names170[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C16D0Ev,_ZThn32_N9S21150C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C16D1Ev,_ZThn32_N9S21150C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C14D0Ev,_ZThn44_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C14D1Ev,_ZThn44_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21150C14D0Ev,_ZThn88_N9S21150C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21150C14D0Ev,_ZThn16_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21150C14D1Ev,_ZThn88_N9S21150C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21150C14D1Ev,_ZThn16_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C14 = {  "S21150C14", // class name
  bases_S21150C14, 5,
  &(vtc_S21150C14[0]), // expected_vtbl_contents
  &(vtt_S21150C14[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI9S21150C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21150C14),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21150C14),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names170,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C18  : S4161C4_nt , S21150C14 , S20760C22_nt , virtual S21150C16 {
  virtual  ~S21150C18(); // _ZN9S21150C18D2Ev
  S21150C18(); // tgen
};
//SIG(-1 S21150C18) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S21150C18 ::~S21150C18(){ note_dtor("S21150C18", this);}
S21150C18 ::S21150C18(){ note_ctor("S21150C18", this);} // tgen

static void Test_S21150C18()
{
  extern Class_Descriptor cd_S21150C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S21150C18, buf);
    S21150C18 *dp, &lv = *(dp=new (buf) S21150C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S21150C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21150C18)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S21150C18");
    check_base_class_offset(lv, (S20760C13*)(S21150C14*), ABISELECT(48,24), "S21150C18");
    check_base_class_offset(lv, (S20760C13*)(S21150C15*), ABISELECT(48,24), "S21150C18");
    /*is_ambiguous_... S21150C15::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C15*), ABISELECT(80,52), "S21150C18");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*)(S21150C15*), ABISELECT(136,96), "S21150C18");
    /*is_ambiguous_... S21150C18::S21150C16 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*), ABISELECT(136,96), "S21150C18");
    check_base_class_offset(lv, (S21150C16*)(S21150C15*), ABISELECT(96,64), "S21150C18");
    check_base_class_offset(lv, (S21150C15*)(S21150C14*), ABISELECT(80,52), "S21150C18");
    check_base_class_offset(lv, (S21150C14*), 0, "S21150C18");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S21150C18");
    /*is_ambiguous_... S21150C18::S21150C16 */ AMB_check_base_class_offset(lv, (S21150C16*), ABISELECT(152,108), "S21150C18");
    test_class_info(&lv, &cd_S21150C18);
    dp->~S21150C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C18(Test_S21150C18, "S21150C18", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN9S21150C18C1Ev();
extern void _ZN9S21150C18D2Ev();
Name_Map name_map_S21150C18[] = {
  NSPAIR(_ZN9S21150C18C1Ev),
  NSPAIR(_ZN9S21150C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C15;
extern VTBL_ENTRY _ZTI9S21150C15[];
extern  VTBL_ENTRY _ZTV9S21150C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C15[];
extern Class_Descriptor cd_S21150C14;
extern VTBL_ENTRY _ZTI9S21150C14[];
extern  VTBL_ENTRY _ZTV9S21150C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
static Base_Class bases_S21150C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21150C16,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21150C15,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21150C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21150C16,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21150C18[];
extern void _ZN9S21150C18D1Ev();
extern void _ZN9S21150C18D0Ev();
extern void ABISELECT(_ZThn40_N9S21150C18D1Ev,_ZThn20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S21150C18D0Ev,_ZThn20_N9S21150C18D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S21150C18D1Ev,_ZThn24_N9S21150C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
extern void ABISELECT(_ZThn48_N9S21150C18D0Ev,_ZThn24_N9S21150C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S21150C18D1Ev,_ZThn52_N9S21150C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S21150C18D0Ev,_ZThn52_N9S21150C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZThn136_N9S21150C18D1Ev,_ZThn96_N9S21150C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
extern void ABISELECT(_ZThn136_N9S21150C18D0Ev,_ZThn96_N9S21150C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev)();
extern void ABISELECT(_ZThn152_N9S21150C18D1Ev,_ZThn108_N9S21150C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev)();
extern void ABISELECT(_ZThn152_N9S21150C18D0Ev,_ZThn108_N9S21150C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21150C18[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&_ZN9S21150C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C18D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S21150C18D1Ev,_ZThn20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S21150C18D0Ev,_ZThn20_N9S21150C18D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S21150C18[];
extern void _ZN9S21150C14D1Ev();
extern void _ZN9S21150C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C14__9S21150C18[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&_ZN9S21150C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S21150C14D1Ev,_ZThn24_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn48_N9S21150C14D0Ev,_ZThn24_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C14__9S21150C18[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S21150C14D1Ev,_ZThn52_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S21150C14D0Ev,_ZThn52_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C14__9S21150C18[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C14__9S21150C18[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S21150C14D1Ev,_ZThn96_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S21150C14D0Ev,_ZThn96_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C14__9S21150C18[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void _ZN9S21150C15D1Ev();
extern void _ZN9S21150C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C18[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&_ZN9S21150C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C15D0Ev,
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C18[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S21150C16D1Ev,_ZThn32_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S21150C16D0Ev,_ZThn32_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C169S21150C15__9S21150C18[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C15__9S21150C18[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__9S21150C15__9S21150C18[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C15__9S21150C18[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C18[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C16__A1__9S21150C18[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
static  VTT_ENTRY vtt_S21150C18[] = {
  {&(_ZTV9S21150C18[6]),  6,40},
  {&(_tg__ZTV9S21150C14__9S21150C18[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21150C14__9S21150C18[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C14__9S21150C18[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C14__9S21150C18[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C14__9S21150C18[3]),  3,5},
  {&(_ZTV9S21150C18[15]),  15,40},
  {&(_ZTV9S21150C18[22]),  22,40},
  {&(_ZTV9S21150C18[27]),  27,40},
  {&(_ZTV9S21150C18[32]),  32,40},
  {&(_ZTV9S21150C18[38]),  38,40},
  {&(_tg__ZTV9S21150C15__9S21150C18[4]),  4,6},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C18[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C169S21150C15__9S21150C18[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C15__9S21150C18[3]),  3,5},
  {&(_tg__ZTV9S21150C16__9S21150C15__9S21150C18[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C15__9S21150C18[3]),  3,5},
  {&(_tg__ZTV9S21150C16__A1__9S21150C18[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C16__A1__9S21150C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21150C18[];
extern  VTBL_ENTRY _ZTV9S21150C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C18[];
static VTBL_ENTRY alt_thunk_names171[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C16D0Ev,_ZThn32_N9S21150C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C16D1Ev,_ZThn32_N9S21150C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C14D0Ev,_ZThn52_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C14D1Ev,_ZThn52_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C14D0Ev,_ZThn96_N9S21150C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C14D0Ev,_ZThn24_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C14D1Ev,_ZThn96_N9S21150C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C14D1Ev,_ZThn24_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21150C18D0Ev,_ZThn108_N9S21150C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21150C18D1Ev,_ZThn108_N9S21150C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C18D0Ev,_ZThn52_N9S21150C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C18D1Ev,_ZThn52_N9S21150C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C18D0Ev,_ZThn96_N9S21150C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C18D0Ev,_ZThn24_N9S21150C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C18D1Ev,_ZThn96_N9S21150C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C18D1Ev,_ZThn24_N9S21150C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C18 = {  "S21150C18", // class name
  bases_S21150C18, 9,
  &(vtc_S21150C18[0]), // expected_vtbl_contents
  &(vtt_S21150C18[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI9S21150C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21150C18),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21150C18),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names171,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C17  : S20760C5_nt , S21150C18 {
  virtual  ~S21150C17(); // _ZN9S21150C17D2Ev
  S21150C17(); // tgen
};
//SIG(-1 S21150C17) C1{ BC2{ vd m FL} BC3{ BC4{ m Fp} BC5{ VBC6{ vd m Fi[6]} VBC7{ BC2 VBC6 BC8{ VBC2 vd} FC6} FD} BC9{ vd m} VBC8 vd} vd}


 S21150C17 ::~S21150C17(){ note_dtor("S21150C17", this);}
S21150C17 ::S21150C17(){ note_ctor("S21150C17", this);} // tgen

static void Test_S21150C17()
{
  extern Class_Descriptor cd_S21150C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,32)];
    init_test(&cd_S21150C17, buf);
    S21150C17 *dp, &lv = *(dp=new (buf) S21150C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S21150C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21150C17)");
    /*is_ambiguous_... S21150C17::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*), 0, "S21150C17");
    check_base_class_offset(lv, (S4161C4_nt*)(S21150C18*), ABISELECT(48,28), "S21150C17");
    check_base_class_offset(lv, (S20760C13*)(S21150C14*)(S21150C18*), ABISELECT(64,36), "S21150C17");
    check_base_class_offset(lv, (S20760C13*)(S21150C15*), ABISELECT(64,36), "S21150C17");
    /*is_ambiguous_... S21150C15::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C15*), ABISELECT(96,64), "S21150C17");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*)(S21150C15*), ABISELECT(152,108), "S21150C17");
    /*is_ambiguous_... S21150C17::S21150C16 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*), ABISELECT(152,108), "S21150C17");
    check_base_class_offset(lv, (S21150C16*)(S21150C15*), ABISELECT(112,76), "S21150C17");
    check_base_class_offset(lv, (S21150C15*)(S21150C14*)(S21150C18*), ABISELECT(96,64), "S21150C17");
    check_base_class_offset(lv, (S21150C14*)(S21150C18*), ABISELECT(16,12), "S21150C17");
    check_base_class_offset(lv, (S20760C22_nt*)(S21150C18*), ABISELECT(56,32), "S21150C17");
    /*is_ambiguous_... S21150C18::S21150C16 */ AMB_check_base_class_offset(lv, (S21150C16*)(S21150C18*), ABISELECT(168,120), "S21150C17");
    check_base_class_offset(lv, (S21150C18*), ABISELECT(16,12), "S21150C17");
    test_class_info(&lv, &cd_S21150C17);
    dp->~S21150C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C17(Test_S21150C17, "S21150C17", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN9S21150C17C1Ev();
extern void _ZN9S21150C17D2Ev();
Name_Map name_map_S21150C17[] = {
  NSPAIR(_ZN9S21150C17C1Ev),
  NSPAIR(_ZN9S21150C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C15;
extern VTBL_ENTRY _ZTI9S21150C15[];
extern  VTBL_ENTRY _ZTV9S21150C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C15[];
extern Class_Descriptor cd_S21150C14;
extern VTBL_ENTRY _ZTI9S21150C14[];
extern  VTBL_ENTRY _ZTV9S21150C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C18;
extern VTBL_ENTRY _ZTI9S21150C18[];
extern  VTBL_ENTRY _ZTV9S21150C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C18[];
static Base_Class bases_S21150C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(64,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(152,108), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21150C16,    ABISELECT(112,76), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21150C15,    ABISELECT(96,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21150C14,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21150C16,    ABISELECT(168,120), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21150C18,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21150C17[];
extern void _ZN9S21150C17D1Ev();
extern void _ZN9S21150C17D0Ev();
extern void ABISELECT(_ZThn16_N9S21150C17D1Ev,_ZThn12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C17D0Ev,_ZThn12_N9S21150C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S21150C17D1Ev,_ZThn32_N9S21150C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S21150C17D0Ev,_ZThn32_N9S21150C17D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S21150C17D1Ev,_ZThn36_N9S21150C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S21150C17D0Ev,_ZThn36_N9S21150C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C17D1Ev,_ZTv0_n20_N9S21150C17D1Ev)();
extern void ABISELECT(_ZThn96_N9S21150C17D1Ev,_ZThn64_N9S21150C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C17D0Ev,_ZTv0_n20_N9S21150C17D0Ev)();
extern void ABISELECT(_ZThn96_N9S21150C17D0Ev,_ZThn64_N9S21150C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21150C17D1Ev,_ZTvn12_n20_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C17D0Ev,_ZTvn12_n20_N9S21150C17D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZThn152_N9S21150C17D1Ev,_ZThn108_N9S21150C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev)();
extern void ABISELECT(_ZThn152_N9S21150C17D0Ev,_ZThn108_N9S21150C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21150C17D1Ev,_ZTv0_n16_N9S21150C17D1Ev)();
extern void ABISELECT(_ZThn168_N9S21150C17D1Ev,_ZThn120_N9S21150C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21150C17D0Ev,_ZTv0_n16_N9S21150C17D0Ev)();
extern void ABISELECT(_ZThn168_N9S21150C17D0Ev,_ZThn120_N9S21150C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21150C17[] = {
  ABISELECT(168,120),
  ABISELECT(152,108),
  ABISELECT(96,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&_ZN9S21150C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C17D0Ev,
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C17D1Ev,_ZThn12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C17D0Ev,_ZThn12_N9S21150C17D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21150C17D1Ev,_ZThn32_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21150C17D0Ev,_ZThn32_N9S21150C17D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev),
  ABISELECT(-96,-64),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C17D1Ev,_ZTv0_n20_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C17D0Ev,_ZTv0_n20_N9S21150C17D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C17D1Ev,_ZTvn12_n20_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C17D0Ev,_ZTvn12_n20_N9S21150C17D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev),
  ABISELECT(-168,-120),
  ABISELECT(-16,-12),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C17D1Ev,_ZTv0_n16_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C17D0Ev,_ZTv0_n16_N9S21150C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S21150C17[];
extern void _ZN9S21150C18D1Ev();
extern void _ZN9S21150C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C18__9S21150C17[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&_ZN9S21150C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C18D0Ev,
};
extern void _ZN9S21150C14D1Ev();
extern void _ZN9S21150C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C149S21150C18__9S21150C17[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&_ZN9S21150C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S21150C14D1Ev,_ZThn24_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn48_N9S21150C14D0Ev,_ZThn24_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C149S21150C18__9S21150C17[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S21150C14D1Ev,_ZThn52_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S21150C14D0Ev,_ZThn52_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C149S21150C18__9S21150C17[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C149S21150C18__9S21150C17[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S21150C14D1Ev,_ZThn96_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S21150C14D0Ev,_ZThn96_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C149S21150C18__9S21150C17[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S21150C18D1Ev,_ZThn24_N9S21150C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
extern void ABISELECT(_ZThn48_N9S21150C18D0Ev,_ZThn24_N9S21150C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C18__9S21150C17[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S21150C18D1Ev,_ZThn52_N9S21150C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S21150C18D0Ev,_ZThn52_N9S21150C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C18__9S21150C17[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C18__9S21150C17[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZThn136_N9S21150C18D1Ev,_ZThn96_N9S21150C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
extern void ABISELECT(_ZThn136_N9S21150C18D0Ev,_ZThn96_N9S21150C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C18__9S21150C17[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev)();
extern void ABISELECT(_ZThn152_N9S21150C18D1Ev,_ZThn108_N9S21150C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev)();
extern void ABISELECT(_ZThn152_N9S21150C18D0Ev,_ZThn108_N9S21150C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C18__9S21150C17[] = {
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev),
};
extern void _ZN9S21150C15D1Ev();
extern void _ZN9S21150C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C17[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&_ZN9S21150C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C15D0Ev,
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C17[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S21150C16D1Ev,_ZThn32_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S21150C16D0Ev,_ZThn32_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C169S21150C15__9S21150C17[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C15__9S21150C17[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__9S21150C15__9S21150C17[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C15__9S21150C17[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C17[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C16__A1__9S21150C17[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
static  VTT_ENTRY vtt_S21150C17[] = {
  {&(_ZTV9S21150C17[6]),  6,48},
  {&(_tg__ZTV9S21150C18__9S21150C17[6]),  6,8},
  {&(_tg__ZTV9S21150C149S21150C18__9S21150C17[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21150C149S21150C18__9S21150C17[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C149S21150C18__9S21150C17[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C149S21150C18__9S21150C17[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C149S21150C18__9S21150C17[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C18__9S21150C17[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C18__9S21150C17[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C18__9S21150C17[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C18__9S21150C17[3]),  3,5},
  {&(_tg__ZTV9S21150C16__A1__9S21150C18__9S21150C17[4]),  4,6},
  {&(_ZTV9S21150C17[14]),  14,48},
  {&(_ZTV9S21150C17[23]),  23,48},
  {&(_ZTV9S21150C17[30]),  30,48},
  {&(_ZTV9S21150C17[35]),  35,48},
  {&(_ZTV9S21150C17[40]),  40,48},
  {&(_ZTV9S21150C17[46]),  46,48},
  {&(_tg__ZTV9S21150C15__9S21150C17[4]),  4,6},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C17[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C169S21150C15__9S21150C17[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C15__9S21150C17[3]),  3,5},
  {&(_tg__ZTV9S21150C16__9S21150C15__9S21150C17[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C15__9S21150C17[3]),  3,5},
  {&(_tg__ZTV9S21150C16__A1__9S21150C17[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C16__A1__9S21150C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21150C17[];
extern  VTBL_ENTRY _ZTV9S21150C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C17[];
static VTBL_ENTRY alt_thunk_names172[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C16D0Ev,_ZThn32_N9S21150C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C16D1Ev,_ZThn32_N9S21150C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21150C18D0Ev,_ZThn108_N9S21150C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21150C18D1Ev,_ZThn108_N9S21150C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C18D0Ev,_ZThn52_N9S21150C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C18D1Ev,_ZThn52_N9S21150C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C18D0Ev,_ZThn96_N9S21150C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C18D0Ev,_ZThn24_N9S21150C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C18D1Ev,_ZThn96_N9S21150C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C18D1Ev,_ZThn24_N9S21150C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C14D0Ev,_ZThn52_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C14D1Ev,_ZThn52_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C14D0Ev,_ZThn96_N9S21150C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C14D0Ev,_ZThn24_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C14D1Ev,_ZThn96_N9S21150C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C14D1Ev,_ZThn24_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C17D0Ev,_ZTv0_n16_N9S21150C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21150C17D0Ev,_ZThn120_N9S21150C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C17D1Ev,_ZTv0_n16_N9S21150C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21150C17D1Ev,_ZThn120_N9S21150C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C17D0Ev,_ZTv0_n20_N9S21150C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21150C17D0Ev,_ZThn64_N9S21150C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C17D1Ev,_ZTv0_n20_N9S21150C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21150C17D1Ev,_ZThn64_N9S21150C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21150C17D0Ev,_ZThn108_N9S21150C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C17D0Ev,_ZThn36_N9S21150C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21150C17D1Ev,_ZThn108_N9S21150C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C17D1Ev,_ZThn36_N9S21150C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C17 = {  "S21150C17", // class name
  bases_S21150C17, 11,
  &(vtc_S21150C17[0]), // expected_vtbl_contents
  &(vtt_S21150C17[0]), // expected_vtt_contents
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI9S21150C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21150C17),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21150C17),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names172,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C13  : virtual S21150C14 , virtual S21150C17 , S4228C37 , virtual S20760C9 {
  virtual  ~S21150C13(); // _ZN9S21150C13D2Ev
  virtual void  v1(); // _ZN9S21150C132v1Ev
  S21150C13(); // tgen
};
//SIG(-1 S21150C13) C1{ VBC2{ VBC3{ vd m Fi[6]} VBC4{ BC5{ vd m FL} VBC3 BC6{ VBC5 vd} FC3} FD} VBC7{ BC5 BC8{ BC9{ m Fp} BC2 BC10{ vd m} VBC6 vd} vd} BC11{ m} VBC12{ vd m FL} vd v1}


 S21150C13 ::~S21150C13(){ note_dtor("S21150C13", this);}
void  S21150C13 ::v1(){vfunc_called(this, "_ZN9S21150C132v1Ev");}
S21150C13 ::S21150C13(){ note_ctor("S21150C13", this);} // tgen

static void Test_S21150C13()
{
  extern Class_Descriptor cd_S21150C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,39)];
    init_test(&cd_S21150C13, buf);
    S21150C13 *dp, &lv = *(dp=new (buf) S21150C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,152), "sizeof(S21150C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21150C13)");
    /*is_ambiguous_... S21150C13::S21150C14 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21150C14*), ABISELECT(48,20), "S21150C13");
    check_base_class_offset(lv, (S20760C13*)(S21150C15*), ABISELECT(48,20), "S21150C13");
    check_base_class_offset(lv, (S20760C13*)(S21150C14*)(S21150C18*)(S21150C17*), ABISELECT(48,20), "S21150C13");
    /*is_ambiguous_... S21150C15::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C15*), ABISELECT(80,48), "S21150C13");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*)(S21150C15*), ABISELECT(136,92), "S21150C13");
    /*is_ambiguous_... S21150C13::S21150C16 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*), ABISELECT(136,92), "S21150C13");
    check_base_class_offset(lv, (S21150C16*)(S21150C15*), ABISELECT(96,60), "S21150C13");
    /*is_ambiguous_... S21150C13::S21150C14 */ AMB_check_base_class_offset(lv, (S21150C15*)(S21150C14*), ABISELECT(80,48), "S21150C13");
    check_base_class_offset(lv, (S21150C15*)(S21150C14*)(S21150C18*)(S21150C17*), ABISELECT(80,48), "S21150C13");
    /*is_ambiguous_... S21150C13::S21150C14 */ AMB_check_base_class_offset(lv, (S21150C14*), ABISELECT(16,4), "S21150C13");
    /*is_ambiguous_... S21150C17::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C17*), ABISELECT(160,104), "S21150C13");
    check_base_class_offset(lv, (S4161C4_nt*)(S21150C18*)(S21150C17*), ABISELECT(208,132), "S21150C13");
    check_base_class_offset(lv, (S21150C14*)(S21150C18*)(S21150C17*), ABISELECT(176,116), "S21150C13");
    check_base_class_offset(lv, (S20760C22_nt*)(S21150C18*)(S21150C17*), ABISELECT(216,136), "S21150C13");
    /*is_ambiguous_... S21150C18::S21150C16 */ AMB_check_base_class_offset(lv, (S21150C16*)(S21150C18*)(S21150C17*), 0, "S21150C13");
    check_base_class_offset(lv, (S21150C18*)(S21150C17*), ABISELECT(176,116), "S21150C13");
    check_base_class_offset(lv, (S21150C17*), ABISELECT(160,104), "S21150C13");
    check_base_class_offset(lv, (S4228C37*), 0, "S21150C13");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(224,140), "S21150C13");
    test_class_info(&lv, &cd_S21150C13);
    dp->~S21150C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C13(Test_S21150C13, "S21150C13", ABISELECT(240,152));

#else // __cplusplus

extern void _ZN9S21150C13C1Ev();
extern void _ZN9S21150C13D2Ev();
Name_Map name_map_S21150C13[] = {
  NSPAIR(_ZN9S21150C13C1Ev),
  NSPAIR(_ZN9S21150C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C15;
extern VTBL_ENTRY _ZTI9S21150C15[];
extern  VTBL_ENTRY _ZTV9S21150C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C15[];
extern Class_Descriptor cd_S21150C14;
extern VTBL_ENTRY _ZTI9S21150C14[];
extern  VTBL_ENTRY _ZTV9S21150C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C14[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21150C14;
extern VTBL_ENTRY _ZTI9S21150C14[];
extern  VTBL_ENTRY _ZTV9S21150C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C18;
extern VTBL_ENTRY _ZTI9S21150C18[];
extern  VTBL_ENTRY _ZTV9S21150C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C18[];
extern Class_Descriptor cd_S21150C17;
extern VTBL_ENTRY _ZTI9S21150C17[];
extern  VTBL_ENTRY _ZTV9S21150C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C17[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S21150C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(48,20), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(136,92), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21150C16,    ABISELECT(96,60), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21150C15,    ABISELECT(80,48), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21150C14,    ABISELECT(16,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C5_nt,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21150C14,    ABISELECT(176,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(216,136), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21150C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21150C18,    ABISELECT(176,116), //bcp->offset
    52, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21150C17,    ABISELECT(160,104), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(224,140), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21150C13[];
extern void ABISELECT(_ZTv0_n32_N9S21150C13D1Ev,_ZTv0_n16_N9S21150C13D1Ev)();
extern void _ZN9S21150C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21150C13D0Ev,_ZTv0_n16_N9S21150C13D0Ev)();
extern void _ZN9S21150C13D0Ev() __attribute__((weak));
extern void _ZN9S21150C132v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21150C13D1Ev,_ZTv0_n24_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C13D1Ev,_ZThn4_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21150C13D0Ev,_ZTv0_n24_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S21150C13D0Ev,_ZThn4_N9S21150C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn48_N9S21150C13D1Ev,_ZThn20_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn48_N9S21150C13D0Ev,_ZThn20_N9S21150C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C13D1Ev,_ZTv0_n20_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn80_N9S21150C13D1Ev,_ZThn48_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C13D0Ev,_ZTv0_n20_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn80_N9S21150C13D0Ev,_ZThn48_N9S21150C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21150C13D1Ev,_ZTvn12_n20_N9S21150C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C13D0Ev,_ZTvn12_n20_N9S21150C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn136_N9S21150C13D1Ev,_ZThn92_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn136_N9S21150C13D0Ev,_ZThn92_N9S21150C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21150C13D1Ev,_ZTv0_n28_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn160_N9S21150C13D1Ev,_ZThn104_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21150C13D0Ev,_ZTv0_n28_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn160_N9S21150C13D0Ev,_ZThn104_N9S21150C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N9S21150C13D1Ev,_ZTvn12_n28_N9S21150C13D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S21150C13D0Ev,_ZTvn12_n28_N9S21150C13D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S21150C13D1Ev,_ZTvn32_n28_N9S21150C13D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S21150C13D0Ev,_ZTvn32_n28_N9S21150C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn224_N9S21150C13D1Ev,_ZThn140_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn224_N9S21150C13D0Ev,_ZThn140_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21150C13[] = {
  ABISELECT(224,140),
  0,
  ABISELECT(160,104),
  ABISELECT(80,48),
  ABISELECT(48,20),
  ABISELECT(16,4),
  0,
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C13D1Ev,_ZTv0_n16_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C13D0Ev,_ZTv0_n16_N9S21150C13D0Ev),
  (VTBL_ENTRY)&_ZN9S21150C132v1Ev,
  ABISELECT(-16,-4),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21150C13D1Ev,_ZTv0_n24_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21150C13D0Ev,_ZTv0_n24_N9S21150C13D0Ev),
  ABISELECT(-48,-20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C13D1Ev,_ZTv0_n20_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C13D0Ev,_ZTv0_n20_N9S21150C13D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C13D1Ev,_ZTvn12_n20_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C13D0Ev,_ZTvn12_n20_N9S21150C13D0Ev),
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev),
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21150C13D1Ev,_ZTv0_n28_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21150C13D0Ev,_ZTv0_n28_N9S21150C13D0Ev),
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21150C13D1Ev,_ZTvn12_n28_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21150C13D0Ev,_ZTvn12_n28_N9S21150C13D0Ev),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21150C13D1Ev,_ZTvn32_n28_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21150C13D0Ev,_ZTvn32_n28_N9S21150C13D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S21150C13[];
extern void _ZN9S21150C14D1Ev();
extern void _ZN9S21150C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C14__9S21150C13[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&_ZN9S21150C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S21150C14D1Ev,_ZThn16_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S21150C14D0Ev,_ZThn16_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C14__9S21150C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S21150C14D1Ev,_ZThn44_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S21150C14D0Ev,_ZThn44_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C14__9S21150C13[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C14__9S21150C13[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn120_N9S21150C14D1Ev,_ZThn88_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn120_N9S21150C14D0Ev,_ZThn88_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C14__9S21150C13[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void _ZN9S21150C15D1Ev();
extern void _ZN9S21150C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C13[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&_ZN9S21150C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C15D0Ev,
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C13[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S21150C16D1Ev,_ZThn32_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S21150C16D0Ev,_ZThn32_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C169S21150C15__9S21150C13[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C15__9S21150C13[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__9S21150C15__9S21150C13[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C15__9S21150C13[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void _ZN9S21150C17D1Ev();
extern void _ZN9S21150C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C17__9S21150C13[] = {
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&_ZN9S21150C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C17D0Ev,
};
extern void _ZN9S21150C18D1Ev();
extern void _ZN9S21150C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C189S21150C17__9S21150C13[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&_ZN9S21150C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C18D0Ev,
};
extern void _ZN9S21150C14D1Ev();
extern void _ZN9S21150C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C149S21150C189S21150C17__A1__9S21150C13[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&_ZN9S21150C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C149S21150C189S21150C17__A1__9S21150C13[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C149S21150C189S21150C17__A1__9S21150C13[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C149S21150C189S21150C17__A1__9S21150C13[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C149S21150C189S21150C17__A1__9S21150C13[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C189S21150C17__9S21150C13[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C189S21150C17__9S21150C13[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C189S21150C17__9S21150C13[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C189S21150C17__9S21150C13[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C189S21150C17__9S21150C13[] = {
  ABISELECT(176,116),
  ABISELECT(136,92),
  ABISELECT(176,116),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21150C17D1Ev,_ZThn12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C17D0Ev,_ZThn12_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C18__9S21150C17__9S21150C13[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C17D1Ev,_ZThn12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C17D0Ev,_ZThn12_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C17__9S21150C13[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C17D1Ev,_ZTv0_n20_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21150C17D0Ev,_ZTv0_n20_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C17__9S21150C13[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C17D1Ev,_ZTv0_n20_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C17D0Ev,_ZTv0_n20_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C17D1Ev,_ZTvn12_n20_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C17D0Ev,_ZTvn12_n20_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C17__9S21150C13[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C17D1Ev,_ZTvn12_n20_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C17D0Ev,_ZTvn12_n20_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A2__9S21150C17__9S21150C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21150C17D1Ev,_ZTv0_n16_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21150C17D0Ev,_ZTv0_n16_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C17__9S21150C13[] = {
  ABISELECT(160,104),
  ABISELECT(136,92),
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C17D1Ev,_ZTv0_n16_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C17D0Ev,_ZTv0_n16_N9S21150C17D0Ev),
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C13[] = {
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn136_N9S21150C16D1Ev,_ZThn92_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn136_N9S21150C16D0Ev,_ZThn92_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C16__A1__9S21150C13[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
static  VTT_ENTRY vtt_S21150C13[] = {
  {&(_ZTV9S21150C13[10]),  10,69},
  {&(_ZTV9S21150C13[19]),  19,69},
  {&(_ZTV9S21150C13[24]),  24,69},
  {&(_ZTV9S21150C13[31]),  31,69},
  {&(_ZTV9S21150C13[36]),  36,69},
  {&(_ZTV9S21150C13[41]),  41,69},
  {&(_ZTV9S21150C13[50]),  50,69},
  {&(_ZTV9S21150C13[58]),  58,69},
  {&(_ZTV9S21150C13[62]),  62,69},
  {&(_ZTV9S21150C13[10]),  10,69},
  {&(_ZTV9S21150C13[67]),  67,69},
  {&(_tg__ZTV9S21150C14__9S21150C13[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21150C14__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C14__9S21150C13[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C14__9S21150C13[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C14__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C13[4]),  4,6},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C13[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C169S21150C15__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C15__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S21150C16__9S21150C15__9S21150C13[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C15__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S21150C17__9S21150C13[6]),  6,8},
  {&(_tg__ZTV9S21150C189S21150C17__9S21150C13[6]),  6,8},
  {&(_tg__ZTV9S21150C149S21150C189S21150C17__A1__9S21150C13[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21150C149S21150C189S21150C17__A1__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C149S21150C189S21150C17__A1__9S21150C13[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C149S21150C189S21150C17__A1__9S21150C13[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C149S21150C189S21150C17__A1__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C189S21150C17__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C189S21150C17__9S21150C13[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C189S21150C17__9S21150C13[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C189S21150C17__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S21150C16__A1__9S21150C189S21150C17__9S21150C13[4]),  4,6},
  {&(_tg__ZTV9S21150C18__9S21150C17__9S21150C13[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21150C17__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C17__9S21150C13[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C17__9S21150C13[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A2__9S21150C17__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S21150C16__A1__9S21150C17__9S21150C13[4]),  4,6},
  {&(_tg__ZTV9S21150C16__A1__9S21150C13[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C16__A1__9S21150C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21150C13[];
extern  VTBL_ENTRY _ZTV9S21150C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C13[];
static VTBL_ENTRY alt_thunk_names173[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C16D0Ev,_ZThn92_N9S21150C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C16D0Ev,_ZThn32_N9S21150C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C16D1Ev,_ZThn92_N9S21150C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C16D1Ev,_ZThn32_N9S21150C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C14D0Ev,_ZThn44_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C14D1Ev,_ZThn44_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21150C14D0Ev,_ZThn88_N9S21150C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21150C14D0Ev,_ZThn16_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21150C14D1Ev,_ZThn88_N9S21150C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21150C14D1Ev,_ZThn16_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21150C13D0Ev,_ZTv0_n28_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21150C13D0Ev,_ZThn104_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21150C13D1Ev,_ZTv0_n28_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21150C13D1Ev,_ZThn104_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C13D0Ev,_ZTv0_n20_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C13D0Ev,_ZThn48_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C13D1Ev,_ZTv0_n20_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C13D1Ev,_ZThn48_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21150C13D0Ev,_ZThn140_N9S21150C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C13D0Ev,_ZThn92_N9S21150C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C13D0Ev,_ZThn20_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21150C13D1Ev,_ZThn140_N9S21150C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C13D1Ev,_ZThn92_N9S21150C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C13D1Ev,_ZThn20_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21150C13D0Ev,_ZTv0_n24_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21150C13D0Ev,_ZThn4_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21150C13D1Ev,_ZTv0_n24_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21150C13D1Ev,_ZThn4_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C13D0Ev,_ZTv0_n16_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S21150C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C13D1Ev,_ZTv0_n16_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S21150C13D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C13 = {  "S21150C13", // class name
  bases_S21150C13, 15,
  &(vtc_S21150C13[0]), // expected_vtbl_contents
  &(vtt_S21150C13[0]), // expected_vtt_contents
  ABISELECT(240,152), // object size
  NSPAIRA(_ZTI9S21150C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21150C13),69, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21150C13),42, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names173,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C2  : virtual S21150C3 , S21150C5 , S21150C13 , S20760C5_nt {
  virtual  ~S21150C2(); // _ZN8S21150C2D2Ev
  S21150C2(); // tgen
};
//SIG(-1 S21150C2) C1{ VBC2{ VBC3{ vd m FL} vd Fc[2]} BC4{ VBC5{ VBC6{ vd m FL} vd FC7{ m}} VBC8{ m} BC9{ BC10{ vd m Fi[6]} VBC11{ m} VBC7 Fs} vd Fi} BC12{ VBC13{ VBC10 VBC14{ BC6 VBC10 BC15{ VBC6 vd} FC10} FD} VBC16{ BC6 BC17{ BC18{ m Fp} BC13 BC19{ vd m} VBC15 vd} vd} BC7 VBC3 vd v1} BC6 vd}


 S21150C2 ::~S21150C2(){ note_dtor("S21150C2", this);}
S21150C2 ::S21150C2(){ note_ctor("S21150C2", this);} // tgen

static void Test_S21150C2()
{
  extern Class_Descriptor cd_S21150C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,55)];
    init_test(&cd_S21150C2, buf);
    S21150C2 *dp, &lv = *(dp=new (buf) S21150C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,216), "sizeof(S21150C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21150C2)");
    check_base_class_offset(lv, (S20760C9*)(S21150C3*), ABISELECT(80,60), "S21150C2");
    check_base_class_offset(lv, (S20760C9*)(S21150C13*), ABISELECT(80,60), "S21150C2");
    check_base_class_offset(lv, (S21150C3*), ABISELECT(64,52), "S21150C2");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C6*), ABISELECT(112,80), "S21150C2");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*)(S21150C15*), ABISELECT(112,80), "S21150C2");
    /*is_ambiguous_... S21150C2::S21150C16 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*), ABISELECT(112,80), "S21150C2");
    check_base_class_offset(lv, (S21150C6*)(S21150C5*), ABISELECT(96,72), "S21150C2");
    check_base_class_offset(lv, (S4228C27*)(S21150C5*), 0, "S21150C2");
    check_base_class_offset(lv, (S20760C13*)(S21150C10*)(S21150C5*), 0, "S21150C2");
    check_base_class_offset(lv, (S4228C23*)(S21150C10*)(S21150C5*), 0, "S21150C2");
    check_base_class_offset(lv, (S4228C37*)(S21150C10*)(S21150C5*), 0, "S21150C2");
    check_base_class_offset(lv, (S21150C10*)(S21150C5*), 0, "S21150C2");
    check_base_class_offset(lv, (S21150C5*), 0, "S21150C2");
    /*is_ambiguous_... S21150C2::S21150C14 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21150C14*), ABISELECT(160,108), "S21150C2");
    check_base_class_offset(lv, (S20760C13*)(S21150C15*), ABISELECT(160,108), "S21150C2");
    check_base_class_offset(lv, (S20760C13*)(S21150C14*)(S21150C18*)(S21150C17*), ABISELECT(160,108), "S21150C2");
    /*is_ambiguous_... S21150C15::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C15*), ABISELECT(192,136), "S21150C2");
    check_base_class_offset(lv, (S21150C16*)(S21150C15*), ABISELECT(208,148), "S21150C2");
    /*is_ambiguous_... S21150C2::S21150C14 */ AMB_check_base_class_offset(lv, (S21150C15*)(S21150C14*), ABISELECT(192,136), "S21150C2");
    check_base_class_offset(lv, (S21150C15*)(S21150C14*)(S21150C18*)(S21150C17*), ABISELECT(192,136), "S21150C2");
    /*is_ambiguous_... S21150C13::S21150C14 */ AMB_check_base_class_offset(lv, (S21150C14*)(S21150C13*), ABISELECT(128,92), "S21150C2");
    /*is_ambiguous_... S21150C17::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C17*), ABISELECT(256,180), "S21150C2");
    check_base_class_offset(lv, (S4161C4_nt*)(S21150C18*)(S21150C17*), ABISELECT(304,208), "S21150C2");
    check_base_class_offset(lv, (S21150C14*)(S21150C18*)(S21150C17*), ABISELECT(272,192), "S21150C2");
    check_base_class_offset(lv, (S20760C22_nt*)(S21150C18*)(S21150C17*), ABISELECT(312,212), "S21150C2");
    /*is_ambiguous_... S21150C18::S21150C16 */ AMB_check_base_class_offset(lv, (S21150C16*)(S21150C18*)(S21150C17*), ABISELECT(40,36), "S21150C2");
    check_base_class_offset(lv, (S21150C18*)(S21150C17*), ABISELECT(272,192), "S21150C2");
    check_base_class_offset(lv, (S21150C17*)(S21150C13*), ABISELECT(256,180), "S21150C2");
    check_base_class_offset(lv, (S4228C37*)(S21150C13*), ABISELECT(40,36), "S21150C2");
    check_base_class_offset(lv, (S21150C13*), ABISELECT(40,36), "S21150C2");
    /*is_ambiguous_... S21150C2::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(48,40), "S21150C2");
    test_class_info(&lv, &cd_S21150C2);
    dp->~S21150C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C2(Test_S21150C2, "S21150C2", ABISELECT(320,216));

#else // __cplusplus

extern void _ZN8S21150C2C1Ev();
extern void _ZN8S21150C2D2Ev();
Name_Map name_map_S21150C2[] = {
  NSPAIR(_ZN8S21150C2C1Ev),
  NSPAIR(_ZN8S21150C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21150C3;
extern VTBL_ENTRY _ZTI8S21150C3[];
extern  VTBL_ENTRY _ZTV8S21150C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C3[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C6;
extern VTBL_ENTRY _ZTI8S21150C6[];
extern  VTBL_ENTRY _ZTV8S21150C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C6[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21150C10;
extern VTBL_ENTRY _ZTI9S21150C10[];
extern  VTBL_ENTRY _ZTV9S21150C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C10[];
extern Class_Descriptor cd_S21150C5;
extern VTBL_ENTRY _ZTI8S21150C5[];
extern  VTBL_ENTRY _ZTV8S21150C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C5[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C15;
extern VTBL_ENTRY _ZTI9S21150C15[];
extern  VTBL_ENTRY _ZTV9S21150C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C15[];
extern Class_Descriptor cd_S21150C14;
extern VTBL_ENTRY _ZTI9S21150C14[];
extern  VTBL_ENTRY _ZTV9S21150C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C14[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21150C14;
extern VTBL_ENTRY _ZTI9S21150C14[];
extern  VTBL_ENTRY _ZTV9S21150C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C18;
extern VTBL_ENTRY _ZTI9S21150C18[];
extern  VTBL_ENTRY _ZTV9S21150C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C18[];
extern Class_Descriptor cd_S21150C17;
extern VTBL_ENTRY _ZTI9S21150C17[];
extern  VTBL_ENTRY _ZTV9S21150C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C17[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21150C13;
extern VTBL_ENTRY _ZTI9S21150C13[];
extern  VTBL_ENTRY _ZTV9S21150C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S21150C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(80,60), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21150C3,    ABISELECT(64,52), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C5_nt,    ABISELECT(112,80), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21150C6,    ABISELECT(96,72), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S21150C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21150C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(160,108), //bcp->offset
    63, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(192,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21150C16,    ABISELECT(208,148), //bcp->offset
    75, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21150C15,    ABISELECT(192,136), //bcp->offset
    68, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S21150C14,    ABISELECT(128,92), //bcp->offset
    55, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(256,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21150C14,    ABISELECT(272,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(312,212), //bcp->offset
    97, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21150C16,    ABISELECT(40,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S21150C18,    ABISELECT(272,192), //bcp->offset
    89, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21150C17,    ABISELECT(256,180), //bcp->offset
    80, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(40,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21150C13,    ABISELECT(40,36), //bcp->offset
    16, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C5_nt,    ABISELECT(48,40), //bcp->offset
    29, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21150C2[];
extern void _ZN8S21150C2D1Ev();
extern void _ZN8S21150C2D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn40_N8S21150C2D1Ev,_ZThn36_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn40_N8S21150C2D0Ev,_ZThn36_N8S21150C2D0Ev)() __attribute__((weak));
extern void _ZN9S21150C132v1Ev();
extern void ABISELECT(_ZThn48_N8S21150C2D1Ev,_ZThn40_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S21150C2D0Ev,_ZThn40_N8S21150C2D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21150C2D1Ev,_ZThn52_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21150C2D0Ev,_ZThn52_N8S21150C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21150C2D1Ev,_ZThn60_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21150C2D0Ev,_ZThn60_N8S21150C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S21150C2D1Ev,_ZThn72_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S21150C2D0Ev,_ZThn72_N8S21150C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21150C2D1Ev,_ZThn80_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21150C2D0Ev,_ZThn80_N8S21150C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21150C2D1Ev,_ZTv0_n24_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S21150C2D1Ev,_ZThn92_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21150C2D0Ev,_ZTv0_n24_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S21150C2D0Ev,_ZThn92_N8S21150C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S21150C2D1Ev,_ZThn108_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S21150C2D0Ev,_ZThn108_N8S21150C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21150C2D1Ev,_ZTv0_n20_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn192_N8S21150C2D1Ev,_ZThn136_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21150C2D0Ev,_ZTv0_n20_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn192_N8S21150C2D0Ev,_ZThn136_N8S21150C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21150C2D1Ev,_ZTvn12_n20_N8S21150C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21150C2D0Ev,_ZTvn12_n20_N8S21150C2D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21150C2D1Ev,_ZTv0_n28_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn256_N8S21150C2D1Ev,_ZThn180_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21150C2D0Ev,_ZTv0_n28_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn256_N8S21150C2D0Ev,_ZThn180_N8S21150C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S21150C2D1Ev,_ZTvn12_n28_N8S21150C2D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21150C2D0Ev,_ZTvn12_n28_N8S21150C2D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21150C2D1Ev,_ZTvn32_n28_N8S21150C2D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21150C2D0Ev,_ZTvn32_n28_N8S21150C2D0Ev)();
static  VTBL_ENTRY vtc_S21150C2[] = {
  ABISELECT(40,36),
  ABISELECT(256,180),
  ABISELECT(192,136),
  ABISELECT(160,108),
  ABISELECT(128,92),
  ABISELECT(80,60),
  ABISELECT(64,52),
  0,
  ABISELECT(112,80),
  ABISELECT(96,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&_ZN8S21150C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C2D0Ev,
  ABISELECT(40,24),
  0,
  ABISELECT(216,144),
  ABISELECT(152,100),
  ABISELECT(120,72),
  ABISELECT(88,56),
  ABISELECT(-40,-36),
  ABISELECT(72,44),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21150C132v1Ev,
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21150C2D1Ev,_ZThn40_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21150C2D0Ev,_ZThn40_N8S21150C2D0Ev),
  ABISELECT(-64,-52),
  ABISELECT(16,8),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev),
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev),
  ABISELECT(-96,-72),
  ABISELECT(16,8),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev),
  ABISELECT(-112,-80),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev),
  ABISELECT(-128,-92),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21150C2D1Ev,_ZTv0_n24_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21150C2D0Ev,_ZTv0_n24_N8S21150C2D0Ev),
  ABISELECT(-160,-108),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev),
  ABISELECT(-192,-136),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21150C2D1Ev,_ZTv0_n20_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21150C2D0Ev,_ZTv0_n20_N8S21150C2D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21150C2D1Ev,_ZTvn12_n20_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21150C2D0Ev,_ZTvn12_n20_N8S21150C2D0Ev),
  ABISELECT(-256,-180),
  ABISELECT(-216,-144),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-256,-180),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21150C2D1Ev,_ZTv0_n28_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21150C2D0Ev,_ZTv0_n28_N8S21150C2D0Ev),
  ABISELECT(-232,-156),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21150C2D1Ev,_ZTvn12_n28_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21150C2D0Ev,_ZTvn12_n28_N8S21150C2D0Ev),
  ABISELECT(-312,-212),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21150C2D1Ev,_ZTvn32_n28_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21150C2D0Ev,_ZTvn32_n28_N8S21150C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21150C2[];
extern void _ZN8S21150C5D1Ev();
extern void _ZN8S21150C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21150C5__8S21150C2[] = {
  0,
  ABISELECT(112,80),
  ABISELECT(96,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C5[0]),
  (VTBL_ENTRY)&_ZN8S21150C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C5D0Ev,
};
extern void _ZN9S21150C10D1Ev();
extern void _ZN9S21150C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C108S21150C5__8S21150C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C10[0]),
  (VTBL_ENTRY)&_ZN9S21150C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21150C5D1Ev,_ZTv0_n16_N8S21150C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21150C5D1Ev,_ZThn72_N8S21150C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C5D0Ev,_ZTv0_n16_N8S21150C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21150C5D0Ev,_ZThn72_N8S21150C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21150C6__8S21150C5__8S21150C2[] = {
  ABISELECT(-96,-72),
  ABISELECT(16,8),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S21150C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C5D1Ev,_ZTv0_n16_N8S21150C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C5D0Ev,_ZTv0_n16_N8S21150C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21150C5D1Ev,_ZTv0_n12_N8S21150C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S21150C5D1Ev,_ZThn80_N8S21150C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C5D0Ev,_ZTv0_n12_N8S21150C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S21150C5D0Ev,_ZThn80_N8S21150C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21150C5__8S21150C2[] = {
  ABISELECT(-112,-80),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S21150C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C5D1Ev,_ZTv0_n12_N8S21150C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C5D0Ev,_ZTv0_n12_N8S21150C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21150C13D1Ev,_ZTv0_n16_N9S21150C13D1Ev)();
extern void _ZN9S21150C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21150C13D0Ev,_ZTv0_n16_N9S21150C13D0Ev)();
extern void _ZN9S21150C13D0Ev() __attribute__((weak));
extern void _ZN9S21150C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C13__8S21150C2[] = {
  ABISELECT(40,24),
  0,
  ABISELECT(216,144),
  ABISELECT(152,100),
  ABISELECT(120,72),
  ABISELECT(88,56),
  0,
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C13D1Ev,_ZTv0_n16_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C13D0Ev,_ZTv0_n16_N9S21150C13D0Ev),
  (VTBL_ENTRY)&_ZN9S21150C132v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S21150C13D1Ev,_ZTv0_n24_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn88_N9S21150C13D1Ev,_ZThn56_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21150C13D0Ev,_ZTv0_n24_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn88_N9S21150C13D0Ev,_ZThn56_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C14__9S21150C13__8S21150C2[] = {
  ABISELECT(-88,-56),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21150C13D1Ev,_ZTv0_n24_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21150C13D0Ev,_ZTv0_n24_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn120_N9S21150C13D1Ev,_ZThn72_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn120_N9S21150C13D0Ev,_ZThn72_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C13__8S21150C2[] = {
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C13D1Ev,_ZTv0_n20_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn152_N9S21150C13D1Ev,_ZThn100_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C13D0Ev,_ZTv0_n20_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn152_N9S21150C13D0Ev,_ZThn100_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C13__8S21150C2[] = {
  ABISELECT(-152,-100),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C13D1Ev,_ZTv0_n20_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C13D0Ev,_ZTv0_n20_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C13D1Ev,_ZTvn12_n20_N9S21150C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C13D0Ev,_ZTvn12_n20_N9S21150C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C13__8S21150C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(-168,-112),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C13D1Ev,_ZTvn12_n20_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C13D0Ev,_ZTvn12_n20_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S21150C13D1Ev,_ZThn44_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn72_N9S21150C13D0Ev,_ZThn44_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C13__8S21150C2[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S21150C13D1Ev,_ZTv0_n28_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn216_N9S21150C13D1Ev,_ZThn144_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21150C13D0Ev,_ZTv0_n28_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn216_N9S21150C13D0Ev,_ZThn144_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C17__9S21150C13__8S21150C2[] = {
  ABISELECT(-216,-144),
  ABISELECT(-216,-144),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-216,-144),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21150C13D1Ev,_ZTv0_n28_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21150C13D0Ev,_ZTv0_n28_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N9S21150C13D1Ev,_ZTvn12_n28_N9S21150C13D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S21150C13D0Ev,_ZTvn12_n28_N9S21150C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C189S21150C17__9S21150C13__8S21150C2[] = {
  ABISELECT(-232,-156),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-232,-156),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21150C13D1Ev,_ZTvn12_n28_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21150C13D0Ev,_ZTvn12_n28_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N9S21150C13D1Ev,_ZTvn32_n28_N9S21150C13D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S21150C13D0Ev,_ZTvn32_n28_N9S21150C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S21150C189S21150C17__9S21150C13__8S21150C2[] = {
  ABISELECT(-272,-176),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21150C13D1Ev,_ZTvn32_n28_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21150C13D0Ev,_ZTvn32_n28_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S21150C13D1Ev,_ZThn24_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn40_N9S21150C13D0Ev,_ZThn24_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21150C13__8S21150C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev),
};
extern void _ZN8S21150C3D1Ev();
extern void _ZN8S21150C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21150C3__8S21150C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C3[0]),
  (VTBL_ENTRY)&_ZN8S21150C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21150C3D1Ev,_ZTv0_n12_N8S21150C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21150C3D1Ev,_ZThn8_N8S21150C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C3D0Ev,_ZTv0_n12_N8S21150C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21150C3D0Ev,_ZThn8_N8S21150C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21150C3__8S21150C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21150C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C3D1Ev,_ZTv0_n12_N8S21150C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C3D0Ev,_ZTv0_n12_N8S21150C3D0Ev),
};
extern void _ZN8S21150C6D1Ev();
extern void _ZN8S21150C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21150C6__8S21150C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C6[0]),
  (VTBL_ENTRY)&_ZN8S21150C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21150C6D1Ev,_ZThn8_N8S21150C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S21150C6D0Ev,_ZThn8_N8S21150C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21150C6__8S21150C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21150C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev),
};
extern void _ZN9S21150C14D1Ev();
extern void _ZN9S21150C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C14__8S21150C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&_ZN9S21150C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S21150C14D1Ev,_ZThn16_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S21150C14D0Ev,_ZThn16_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C14__8S21150C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S21150C14D1Ev,_ZThn44_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S21150C14D0Ev,_ZThn44_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C14__8S21150C2[] = {
  ABISELECT(-64,-44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C14__8S21150C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C14__8S21150C2[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void _ZN9S21150C15D1Ev();
extern void _ZN9S21150C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C15__8S21150C2[] = {
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&_ZN9S21150C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C15D0Ev,
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__8S21150C2[] = {
  ABISELECT(-96,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C169S21150C15__8S21150C2[] = {
  ABISELECT(96,68),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C15__8S21150C2[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__9S21150C15__8S21150C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C15__8S21150C2[] = {
  ABISELECT(80,56),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void _ZN9S21150C17D1Ev();
extern void _ZN9S21150C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C17__8S21150C2[] = {
  ABISELECT(-216,-144),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&_ZN9S21150C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C17D0Ev,
};
extern void _ZN9S21150C18D1Ev();
extern void _ZN9S21150C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C189S21150C17__8S21150C2[] = {
  ABISELECT(-232,-156),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&_ZN9S21150C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C18D0Ev,
};
extern void _ZN9S21150C14D1Ev();
extern void _ZN9S21150C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C149S21150C189S21150C17__A1__8S21150C2[] = {
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&_ZN9S21150C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C149S21150C189S21150C17__A1__8S21150C2[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C149S21150C189S21150C17__A1__8S21150C2[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C149S21150C189S21150C17__A1__8S21150C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C149S21150C189S21150C17__A1__8S21150C2[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C189S21150C17__8S21150C2[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C189S21150C17__8S21150C2[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C189S21150C17__8S21150C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C189S21150C17__8S21150C2[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C189S21150C17__8S21150C2[] = {
  ABISELECT(232,156),
  ABISELECT(72,44),
  ABISELECT(232,156),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21150C17D1Ev,_ZThn12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C17D0Ev,_ZThn12_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C18__9S21150C17__8S21150C2[] = {
  ABISELECT(-232,-156),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C17D1Ev,_ZThn12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C17D0Ev,_ZThn12_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C17__8S21150C2[] = {
  ABISELECT(96,72),
  ABISELECT(96,72),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C17D1Ev,_ZTv0_n20_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21150C17D0Ev,_ZTv0_n20_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C17__8S21150C2[] = {
  ABISELECT(64,44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C17D1Ev,_ZTv0_n20_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C17D0Ev,_ZTv0_n20_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C17D1Ev,_ZTvn12_n20_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C17D0Ev,_ZTvn12_n20_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C17__8S21150C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C17D1Ev,_ZTvn12_n20_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C17D0Ev,_ZTvn12_n20_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A2__9S21150C17__8S21150C2[] = {
  ABISELECT(144,100),
  ABISELECT(144,100),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21150C17D1Ev,_ZTv0_n16_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21150C17D0Ev,_ZTv0_n16_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C17__8S21150C2[] = {
  ABISELECT(216,144),
  ABISELECT(72,44),
  ABISELECT(216,144),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C17D1Ev,_ZTv0_n16_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C17D0Ev,_ZTv0_n16_N9S21150C17D0Ev),
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__8S21150C2[] = {
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S21150C16D1Ev,_ZThn44_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn72_N9S21150C16D0Ev,_ZThn44_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C16__A1__8S21150C2[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
static  VTT_ENTRY vtt_S21150C2[] = {
  {&(_ZTV8S21150C2[14]),  14,101},
  {&(_tg__ZTV8S21150C5__8S21150C2[7]),  7,9},
  {&(_tg__ZTV9S21150C108S21150C5__8S21150C2[4]),  4,6},
  {&(_tg__ZTV8S21150C6__8S21150C5__8S21150C2[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__8S21150C5__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C13__8S21150C2[10]),  10,13},
  {&(_tg__ZTV9S21150C14__9S21150C13__8S21150C2[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21150C13__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C13__8S21150C2[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C13__8S21150C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C13__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C17__9S21150C13__8S21150C2[7]),  7,9},
  {&(_tg__ZTV9S21150C189S21150C17__9S21150C13__8S21150C2[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S21150C189S21150C17__9S21150C13__8S21150C2[2]),  2,4},
  {&(_tg__ZTV9S21150C13__8S21150C2[10]),  10,13},
  {&(_tg__ZTV8S20760C9__9S21150C13__8S21150C2[3]),  3,5},
  {&(_ZTV8S21150C2[37]),  37,101},
  {&(_ZTV8S21150C2[42]),  42,101},
  {&(_ZTV8S21150C2[48]),  48,101},
  {&(_ZTV8S21150C2[53]),  53,101},
  {&(_ZTV8S21150C2[26]),  26,101},
  {&(_ZTV8S21150C2[61]),  61,101},
  {&(_ZTV8S21150C2[66]),  66,101},
  {&(_ZTV8S21150C2[73]),  73,101},
  {&(_ZTV8S21150C2[78]),  78,101},
  {&(_ZTV8S21150C2[87]),  87,101},
  {&(_ZTV8S21150C2[95]),  95,101},
  {&(_ZTV8S21150C2[99]),  99,101},
  {&(_ZTV8S21150C2[26]),  26,101},
  {&(_tg__ZTV8S21150C3__8S21150C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21150C3__8S21150C2[3]),  3,5},
  {&(_tg__ZTV8S21150C6__8S21150C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21150C6__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C14__8S21150C2[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21150C14__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C14__8S21150C2[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C14__8S21150C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C14__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C15__8S21150C2[4]),  4,6},
  {&(_tg__ZTV9S21150C169S21150C15__8S21150C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C169S21150C15__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C15__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C16__9S21150C15__8S21150C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C15__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C17__8S21150C2[6]),  6,8},
  {&(_tg__ZTV9S21150C189S21150C17__8S21150C2[6]),  6,8},
  {&(_tg__ZTV9S21150C149S21150C189S21150C17__A1__8S21150C2[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21150C149S21150C189S21150C17__A1__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C149S21150C189S21150C17__A1__8S21150C2[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C149S21150C189S21150C17__A1__8S21150C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C149S21150C189S21150C17__A1__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C189S21150C17__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C189S21150C17__8S21150C2[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C189S21150C17__8S21150C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C189S21150C17__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C16__A1__9S21150C189S21150C17__8S21150C2[4]),  4,6},
  {&(_tg__ZTV9S21150C18__9S21150C17__8S21150C2[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21150C17__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C17__8S21150C2[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C17__8S21150C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A2__9S21150C17__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C16__A1__9S21150C17__8S21150C2[4]),  4,6},
  {&(_tg__ZTV9S21150C16__A1__8S21150C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C16__A1__8S21150C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21150C2[];
extern  VTBL_ENTRY _ZTV8S21150C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C2[];
static VTBL_ENTRY alt_thunk_names174[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C16D0Ev,_ZThn44_N9S21150C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C16D1Ev,_ZThn44_N9S21150C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C14D0Ev,_ZThn44_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C14D1Ev,_ZThn44_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21150C14D0Ev,_ZThn16_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21150C14D1Ev,_ZThn16_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C6D0Ev,_ZThn8_N8S21150C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C6D1Ev,_ZThn8_N8S21150C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C3D0Ev,_ZTv0_n12_N8S21150C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C3D0Ev,_ZThn8_N8S21150C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C3D1Ev,_ZTv0_n12_N8S21150C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C3D1Ev,_ZThn8_N8S21150C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21150C13D0Ev,_ZTv0_n28_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S21150C13D0Ev,_ZThn144_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21150C13D1Ev,_ZTv0_n28_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S21150C13D1Ev,_ZThn144_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C13D0Ev,_ZTv0_n20_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21150C13D0Ev,_ZThn100_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C13D1Ev,_ZTv0_n20_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21150C13D1Ev,_ZThn100_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C13D0Ev,_ZThn24_N9S21150C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C13D0Ev,_ZThn44_N9S21150C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21150C13D0Ev,_ZThn72_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C13D1Ev,_ZThn24_N9S21150C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C13D1Ev,_ZThn44_N9S21150C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21150C13D1Ev,_ZThn72_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21150C13D0Ev,_ZTv0_n24_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21150C13D0Ev,_ZThn56_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21150C13D1Ev,_ZTv0_n24_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21150C13D1Ev,_ZThn56_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C13D0Ev,_ZTv0_n16_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S21150C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C13D1Ev,_ZTv0_n16_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S21150C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C5D0Ev,_ZTv0_n12_N8S21150C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21150C5D0Ev,_ZThn80_N8S21150C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C5D1Ev,_ZTv0_n12_N8S21150C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21150C5D1Ev,_ZThn80_N8S21150C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C5D0Ev,_ZTv0_n16_N8S21150C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21150C5D0Ev,_ZThn72_N8S21150C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C5D1Ev,_ZTv0_n16_N8S21150C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21150C5D1Ev,_ZThn72_N8S21150C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21150C2D0Ev,_ZTv0_n28_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21150C2D0Ev,_ZThn180_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21150C2D1Ev,_ZTv0_n28_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21150C2D1Ev,_ZThn180_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21150C2D0Ev,_ZTv0_n20_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21150C2D0Ev,_ZThn136_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21150C2D1Ev,_ZTv0_n20_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21150C2D1Ev,_ZThn136_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21150C2D0Ev,_ZTv0_n24_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21150C2D0Ev,_ZThn92_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21150C2D1Ev,_ZTv0_n24_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21150C2D1Ev,_ZThn92_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21150C2D0Ev,_ZThn108_N8S21150C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21150C2D0Ev,_ZThn80_N8S21150C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21150C2D0Ev,_ZThn60_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21150C2D1Ev,_ZThn108_N8S21150C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21150C2D1Ev,_ZThn80_N8S21150C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21150C2D1Ev,_ZThn60_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21150C2D0Ev,_ZThn72_N8S21150C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21150C2D0Ev,_ZThn52_N8S21150C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21150C2D0Ev,_ZThn36_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21150C2D1Ev,_ZThn72_N8S21150C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21150C2D1Ev,_ZThn52_N8S21150C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21150C2D1Ev,_ZThn36_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C2 = {  "S21150C2", // class name
  bases_S21150C2, 25,
  &(vtc_S21150C2[0]), // expected_vtbl_contents
  &(vtt_S21150C2[0]), // expected_vtt_contents
  ABISELECT(320,216), // object size
  NSPAIRA(_ZTI8S21150C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21150C2),101, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21150C2),64, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names174,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C1  : virtual S21150C2 , S21150C16 {
  virtual  ~S21150C1(); // _ZN8S21150C1D2Ev
  S21150C1(); // tgen
};
//SIG(1 S21150C1) C1{ VBC2{ VBC3{ VBC4{ vd m FL} vd Fc[2]} BC5{ VBC6{ VBC7{ vd m FL} vd FC8{ m}} VBC9{ m} BC10{ BC11{ vd m Fi[6]} VBC12{ m} VBC8 Fs} vd Fi} BC13{ VBC14{ VBC11 VBC15{ BC7 VBC11 BC16{ VBC7 vd} FC11} FD} VBC17{ BC7 BC18{ BC19{ m Fp} BC14 BC20{ vd m} VBC16 vd} vd} BC8 VBC4 vd v1} BC7 vd} BC16 vd}


 S21150C1 ::~S21150C1(){ note_dtor("S21150C1", this);}
S21150C1 ::S21150C1(){ note_ctor("S21150C1", this);} // tgen

static void Test_S21150C1()
{
  extern Class_Descriptor cd_S21150C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,56)];
    init_test(&cd_S21150C1, buf);
    S21150C1 *dp, &lv = *(dp=new (buf) S21150C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,220), "sizeof(S21150C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21150C1)");
    check_base_class_offset(lv, (S20760C9*)(S21150C3*), ABISELECT(88,64), "S21150C1");
    check_base_class_offset(lv, (S20760C9*)(S21150C13*)(S21150C2*), ABISELECT(88,64), "S21150C1");
    check_base_class_offset(lv, (S21150C3*)(S21150C2*), ABISELECT(72,56), "S21150C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C6*), ABISELECT(120,84), "S21150C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*)(S21150C15*), ABISELECT(120,84), "S21150C1");
    /*is_ambiguous_... S21150C1::S21150C16 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*), ABISELECT(120,84), "S21150C1");
    /*is_ambiguous_... S21150C1::S21150C16 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*), ABISELECT(120,84), "S21150C1");
    check_base_class_offset(lv, (S21150C6*)(S21150C5*)(S21150C2*), ABISELECT(104,76), "S21150C1");
    check_base_class_offset(lv, (S4228C27*)(S21150C5*)(S21150C2*), 0, "S21150C1");
    check_base_class_offset(lv, (S20760C13*)(S21150C10*)(S21150C5*)(S21150C2*), ABISELECT(8,4), "S21150C1");
    check_base_class_offset(lv, (S4228C23*)(S21150C10*)(S21150C5*)(S21150C2*), 0, "S21150C1");
    check_base_class_offset(lv, (S4228C37*)(S21150C10*)(S21150C5*)(S21150C2*), 0, "S21150C1");
    check_base_class_offset(lv, (S21150C10*)(S21150C5*)(S21150C2*), ABISELECT(8,4), "S21150C1");
    check_base_class_offset(lv, (S21150C5*)(S21150C2*), ABISELECT(8,4), "S21150C1");
    /*is_ambiguous_... S21150C1::S21150C14 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21150C14*), ABISELECT(176,112), "S21150C1");
    check_base_class_offset(lv, (S20760C13*)(S21150C15*), ABISELECT(176,112), "S21150C1");
    check_base_class_offset(lv, (S20760C13*)(S21150C14*)(S21150C18*)(S21150C17*), ABISELECT(176,112), "S21150C1");
    /*is_ambiguous_... S21150C15::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C15*), ABISELECT(208,140), "S21150C1");
    check_base_class_offset(lv, (S21150C16*)(S21150C15*), ABISELECT(224,152), "S21150C1");
    /*is_ambiguous_... S21150C1::S21150C14 */ AMB_check_base_class_offset(lv, (S21150C15*)(S21150C14*), ABISELECT(208,140), "S21150C1");
    check_base_class_offset(lv, (S21150C15*)(S21150C14*)(S21150C18*)(S21150C17*), ABISELECT(208,140), "S21150C1");
    /*is_ambiguous_... S21150C13::S21150C14 */ AMB_check_base_class_offset(lv, (S21150C14*)(S21150C13*)(S21150C2*), ABISELECT(144,96), "S21150C1");
    /*is_ambiguous_... S21150C17::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C17*), ABISELECT(272,184), "S21150C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21150C18*)(S21150C17*), ABISELECT(320,212), "S21150C1");
    check_base_class_offset(lv, (S21150C14*)(S21150C18*)(S21150C17*), ABISELECT(288,196), "S21150C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S21150C18*)(S21150C17*), ABISELECT(328,216), "S21150C1");
    /*is_ambiguous_... S21150C18::S21150C16 */ AMB_check_base_class_offset(lv, (S21150C16*)(S21150C18*)(S21150C17*), ABISELECT(48,40), "S21150C1");
    check_base_class_offset(lv, (S21150C18*)(S21150C17*), ABISELECT(288,196), "S21150C1");
    check_base_class_offset(lv, (S21150C17*)(S21150C13*)(S21150C2*), ABISELECT(272,184), "S21150C1");
    check_base_class_offset(lv, (S4228C37*)(S21150C13*)(S21150C2*), ABISELECT(48,40), "S21150C1");
    check_base_class_offset(lv, (S21150C13*)(S21150C2*), ABISELECT(48,40), "S21150C1");
    /*is_ambiguous_... S21150C2::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C2*), ABISELECT(56,44), "S21150C1");
    check_base_class_offset(lv, (S21150C2*), ABISELECT(8,4), "S21150C1");
    /*is_ambiguous_... S21150C1::S21150C16 */ AMB_check_base_class_offset(lv, (S21150C16*), 0, "S21150C1");
    test_class_info(&lv, &cd_S21150C1);
    dp->~S21150C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C1(Test_S21150C1, "S21150C1", ABISELECT(336,220));

#else // __cplusplus

extern void _ZN8S21150C1C1Ev();
extern void _ZN8S21150C1D2Ev();
Name_Map name_map_S21150C1[] = {
  NSPAIR(_ZN8S21150C1C1Ev),
  NSPAIR(_ZN8S21150C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21150C3;
extern VTBL_ENTRY _ZTI8S21150C3[];
extern  VTBL_ENTRY _ZTV8S21150C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C3[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C6;
extern VTBL_ENTRY _ZTI8S21150C6[];
extern  VTBL_ENTRY _ZTV8S21150C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C6[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21150C10;
extern VTBL_ENTRY _ZTI9S21150C10[];
extern  VTBL_ENTRY _ZTV9S21150C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C10[];
extern Class_Descriptor cd_S21150C5;
extern VTBL_ENTRY _ZTI8S21150C5[];
extern  VTBL_ENTRY _ZTV8S21150C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C5[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C15;
extern VTBL_ENTRY _ZTI9S21150C15[];
extern  VTBL_ENTRY _ZTV9S21150C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C15[];
extern Class_Descriptor cd_S21150C14;
extern VTBL_ENTRY _ZTI9S21150C14[];
extern  VTBL_ENTRY _ZTV9S21150C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C14[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21150C14;
extern VTBL_ENTRY _ZTI9S21150C14[];
extern  VTBL_ENTRY _ZTV9S21150C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C18;
extern VTBL_ENTRY _ZTI9S21150C18[];
extern  VTBL_ENTRY _ZTV9S21150C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C18[];
extern Class_Descriptor cd_S21150C17;
extern VTBL_ENTRY _ZTI9S21150C17[];
extern  VTBL_ENTRY _ZTV9S21150C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C17[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21150C13;
extern VTBL_ENTRY _ZTI9S21150C13[];
extern  VTBL_ENTRY _ZTV9S21150C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C2;
extern VTBL_ENTRY _ZTI8S21150C2[];
extern  VTBL_ENTRY _ZTV8S21150C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C2[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
static Base_Class bases_S21150C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(88,64), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21150C3,    ABISELECT(72,56), //bcp->offset
    52, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(120,84), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21150C6,    ABISELECT(104,76), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20760C13,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S21150C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21150C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(176,112), //bcp->offset
    82, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21150C16,    ABISELECT(224,152), //bcp->offset
    94, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21150C15,    ABISELECT(208,140), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S21150C14,    ABISELECT(144,96), //bcp->offset
    74, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(272,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(320,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21150C14,    ABISELECT(288,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(328,216), //bcp->offset
    116, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21150C16,    ABISELECT(48,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S21150C18,    ABISELECT(288,196), //bcp->offset
    108, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21150C17,    ABISELECT(272,184), //bcp->offset
    99, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(48,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21150C13,    ABISELECT(48,40), //bcp->offset
    35, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(56,44), //bcp->offset
    48, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21150C2,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21150C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21150C1[];
extern void _ZN8S21150C1D1Ev();
extern void _ZN8S21150C1D0Ev();
extern void ABISELECT(_ZTv0_n120_N8S21150C1D1Ev,_ZTv0_n60_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S21150C1D1Ev,_ZThn4_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S21150C1D0Ev,_ZTv0_n60_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S21150C1D0Ev,_ZThn4_N8S21150C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C1D1Ev,_ZTv0_n16_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S21150C1D1Ev,_ZThn40_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C1D0Ev,_ZTv0_n16_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S21150C1D0Ev,_ZThn40_N8S21150C1D0Ev)() __attribute__((weak));
extern void _ZN9S21150C132v1Ev();
extern void ABISELECT(_ZTvn48_n120_N8S21150C1D1Ev,_ZTvn40_n60_N8S21150C1D1Ev)();
extern void ABISELECT(_ZTvn48_n120_N8S21150C1D0Ev,_ZTvn40_n60_N8S21150C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21150C1D1Ev,_ZTv0_n16_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S21150C1D1Ev,_ZThn56_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C1D0Ev,_ZTv0_n16_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S21150C1D0Ev,_ZThn56_N8S21150C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C1D1Ev,_ZTv0_n12_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S21150C1D1Ev,_ZThn64_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C1D0Ev,_ZTv0_n12_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn88_N8S21150C1D0Ev,_ZThn64_N8S21150C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C1D1Ev,_ZTv0_n16_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn104_N8S21150C1D1Ev,_ZThn76_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C1D0Ev,_ZTv0_n16_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn104_N8S21150C1D0Ev,_ZThn76_N8S21150C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C1D1Ev,_ZTv0_n12_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn120_N8S21150C1D1Ev,_ZThn84_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C1D0Ev,_ZTv0_n12_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn120_N8S21150C1D0Ev,_ZThn84_N8S21150C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21150C1D1Ev,_ZTv0_n24_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S21150C1D1Ev,_ZThn96_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21150C1D0Ev,_ZTv0_n24_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S21150C1D0Ev,_ZThn96_N8S21150C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C1D1Ev,_ZTv0_n12_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S21150C1D1Ev,_ZThn112_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C1D0Ev,_ZTv0_n12_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn176_N8S21150C1D0Ev,_ZThn112_N8S21150C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21150C1D1Ev,_ZTv0_n20_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S21150C1D1Ev,_ZThn140_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21150C1D0Ev,_ZTv0_n20_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S21150C1D0Ev,_ZThn140_N8S21150C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21150C1D1Ev,_ZTvn12_n20_N8S21150C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21150C1D0Ev,_ZTvn12_n20_N8S21150C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21150C1D1Ev,_ZTv0_n28_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn272_N8S21150C1D1Ev,_ZThn184_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21150C1D0Ev,_ZTv0_n28_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn272_N8S21150C1D0Ev,_ZThn184_N8S21150C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S21150C1D1Ev,_ZTvn12_n28_N8S21150C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21150C1D0Ev,_ZTvn12_n28_N8S21150C1D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21150C1D1Ev,_ZTvn32_n28_N8S21150C1D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21150C1D0Ev,_ZTvn32_n28_N8S21150C1D0Ev)();
static  VTBL_ENTRY vtc_S21150C1[] = {
  ABISELECT(48,40),
  ABISELECT(272,184),
  ABISELECT(208,140),
  ABISELECT(176,112),
  ABISELECT(144,96),
  0,
  0,
  0,
  ABISELECT(104,76),
  ABISELECT(88,64),
  ABISELECT(72,56),
  ABISELECT(8,4),
  ABISELECT(120,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&_ZN8S21150C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C1D0Ev,
  ABISELECT(40,36),
  ABISELECT(-8,-4),
  ABISELECT(40,36),
  ABISELECT(264,180),
  ABISELECT(200,136),
  ABISELECT(168,108),
  ABISELECT(136,92),
  ABISELECT(80,60),
  ABISELECT(64,52),
  ABISELECT(-8,-4),
  ABISELECT(112,80),
  ABISELECT(96,72),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21150C1D1Ev,_ZTv0_n60_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21150C1D0Ev,_ZTv0_n60_N8S21150C1D0Ev),
  ABISELECT(40,24),
  0,
  ABISELECT(224,144),
  ABISELECT(160,100),
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(-48,-40),
  ABISELECT(72,44),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C1D1Ev,_ZTv0_n16_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C1D0Ev,_ZTv0_n16_N8S21150C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21150C132v1Ev,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n120_N8S21150C1D1Ev,_ZTvn40_n60_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n120_N8S21150C1D0Ev,_ZTvn40_n60_N8S21150C1D0Ev),
  ABISELECT(-72,-56),
  ABISELECT(16,8),
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C1D1Ev,_ZTv0_n16_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C1D0Ev,_ZTv0_n16_N8S21150C1D0Ev),
  ABISELECT(-88,-64),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C1D1Ev,_ZTv0_n12_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C1D0Ev,_ZTv0_n12_N8S21150C1D0Ev),
  ABISELECT(-104,-76),
  ABISELECT(16,8),
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C1D1Ev,_ZTv0_n16_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C1D0Ev,_ZTv0_n16_N8S21150C1D0Ev),
  ABISELECT(-120,-84),
  ABISELECT(-120,-84),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C1D1Ev,_ZTv0_n12_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C1D0Ev,_ZTv0_n12_N8S21150C1D0Ev),
  ABISELECT(-144,-96),
  ABISELECT(-24,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21150C1D1Ev,_ZTv0_n24_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21150C1D0Ev,_ZTv0_n24_N8S21150C1D0Ev),
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C1D1Ev,_ZTv0_n12_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C1D0Ev,_ZTv0_n12_N8S21150C1D0Ev),
  ABISELECT(-208,-140),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21150C1D1Ev,_ZTv0_n20_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21150C1D0Ev,_ZTv0_n20_N8S21150C1D0Ev),
  ABISELECT(-104,-68),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21150C1D1Ev,_ZTvn12_n20_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21150C1D0Ev,_ZTvn12_n20_N8S21150C1D0Ev),
  ABISELECT(-272,-184),
  ABISELECT(-224,-144),
  ABISELECT(-152,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21150C1D1Ev,_ZTv0_n28_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21150C1D0Ev,_ZTv0_n28_N8S21150C1D0Ev),
  ABISELECT(-240,-156),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21150C1D1Ev,_ZTvn12_n28_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21150C1D0Ev,_ZTvn12_n28_N8S21150C1D0Ev),
  ABISELECT(-328,-216),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21150C1D1Ev,_ZTvn32_n28_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21150C1D0Ev,_ZTvn32_n28_N8S21150C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21150C1[];
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A__8S21150C1[] = {
  ABISELECT(120,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn120_N9S21150C16D1Ev,_ZThn84_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn120_N9S21150C16D0Ev,_ZThn84_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C16__A__8S21150C1[] = {
  ABISELECT(-120,-84),
  ABISELECT(-120,-84),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
extern void _ZN8S21150C2D1Ev();
extern void _ZN8S21150C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21150C2__8S21150C1[] = {
  ABISELECT(40,36),
  ABISELECT(264,180),
  ABISELECT(200,136),
  ABISELECT(168,108),
  ABISELECT(136,92),
  ABISELECT(80,60),
  ABISELECT(64,52),
  ABISELECT(-8,-4),
  ABISELECT(112,80),
  ABISELECT(96,72),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&_ZN8S21150C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C2D0Ev,
};
extern void _ZN8S21150C5D1Ev();
extern void _ZN8S21150C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21150C58S21150C2__8S21150C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(112,80),
  ABISELECT(96,72),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C5[0]),
  (VTBL_ENTRY)&_ZN8S21150C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C5D0Ev,
};
extern void _ZN9S21150C10D1Ev();
extern void _ZN9S21150C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C108S21150C58S21150C2__8S21150C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C10[0]),
  (VTBL_ENTRY)&_ZN9S21150C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21150C5D1Ev,_ZTv0_n16_N8S21150C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21150C5D1Ev,_ZThn72_N8S21150C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C5D0Ev,_ZTv0_n16_N8S21150C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21150C5D0Ev,_ZThn72_N8S21150C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21150C6__8S21150C58S21150C2__8S21150C1[] = {
  ABISELECT(-96,-72),
  ABISELECT(16,8),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S21150C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C5D1Ev,_ZTv0_n16_N8S21150C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C5D0Ev,_ZTv0_n16_N8S21150C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21150C5D1Ev,_ZTv0_n12_N8S21150C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S21150C5D1Ev,_ZThn80_N8S21150C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C5D0Ev,_ZTv0_n12_N8S21150C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S21150C5D0Ev,_ZThn80_N8S21150C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21150C58S21150C2__8S21150C1[] = {
  ABISELECT(-112,-80),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S21150C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C5D1Ev,_ZTv0_n12_N8S21150C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C5D0Ev,_ZTv0_n12_N8S21150C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21150C13D1Ev,_ZTv0_n16_N9S21150C13D1Ev)();
extern void _ZN9S21150C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21150C13D0Ev,_ZTv0_n16_N9S21150C13D0Ev)();
extern void _ZN9S21150C13D0Ev() __attribute__((weak));
extern void _ZN9S21150C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(40,24),
  0,
  ABISELECT(224,144),
  ABISELECT(160,100),
  ABISELECT(128,72),
  ABISELECT(96,56),
  0,
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C13D1Ev,_ZTv0_n16_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C13D0Ev,_ZTv0_n16_N9S21150C13D0Ev),
  (VTBL_ENTRY)&_ZN9S21150C132v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S21150C13D1Ev,_ZTv0_n24_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S21150C13D1Ev,_ZThn56_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21150C13D0Ev,_ZTv0_n24_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S21150C13D0Ev,_ZThn56_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C14__9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-24,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21150C13D1Ev,_ZTv0_n24_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21150C13D0Ev,_ZTv0_n24_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn128_N9S21150C13D1Ev,_ZThn72_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn128_N9S21150C13D0Ev,_ZThn72_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C13D1Ev,_ZTv0_n20_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn160_N9S21150C13D1Ev,_ZThn100_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C13D0Ev,_ZTv0_n20_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn160_N9S21150C13D0Ev,_ZThn100_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(-160,-100),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C13D1Ev,_ZTv0_n20_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C13D0Ev,_ZTv0_n20_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C13D1Ev,_ZTvn12_n20_N9S21150C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C13D0Ev,_ZTvn12_n20_N9S21150C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C13D1Ev,_ZTvn12_n20_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C13D0Ev,_ZTvn12_n20_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S21150C13D1Ev,_ZThn44_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn72_N9S21150C13D0Ev,_ZThn44_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S21150C13D1Ev,_ZTv0_n28_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn224_N9S21150C13D1Ev,_ZThn144_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21150C13D0Ev,_ZTv0_n28_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn224_N9S21150C13D0Ev,_ZThn144_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C17__9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(-224,-144),
  ABISELECT(-224,-144),
  ABISELECT(-152,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21150C13D1Ev,_ZTv0_n28_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21150C13D0Ev,_ZTv0_n28_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N9S21150C13D1Ev,_ZTvn12_n28_N9S21150C13D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S21150C13D0Ev,_ZTvn12_n28_N9S21150C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C189S21150C17__9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(-240,-156),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21150C13D1Ev,_ZTvn12_n28_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21150C13D0Ev,_ZTvn12_n28_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N9S21150C13D1Ev,_ZTvn32_n28_N9S21150C13D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S21150C13D0Ev,_ZTvn32_n28_N9S21150C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S21150C189S21150C17__9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(-280,-176),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21150C13D1Ev,_ZTvn32_n28_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21150C13D0Ev,_ZTvn32_n28_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S21150C13D1Ev,_ZThn24_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn40_N9S21150C13D0Ev,_ZThn24_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21150C2D1Ev,_ZThn52_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21150C2D0Ev,_ZThn52_N8S21150C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21150C3__8S21150C2__8S21150C1[] = {
  ABISELECT(-64,-52),
  ABISELECT(16,8),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21150C2D1Ev,_ZThn60_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21150C2D0Ev,_ZThn60_N8S21150C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21150C2__8S21150C1[] = {
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S21150C2D1Ev,_ZThn72_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S21150C2D0Ev,_ZThn72_N8S21150C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21150C6__8S21150C2__8S21150C1[] = {
  ABISELECT(-96,-72),
  ABISELECT(16,8),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21150C2D1Ev,_ZThn80_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21150C2D0Ev,_ZThn80_N8S21150C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21150C2__8S21150C1[] = {
  ABISELECT(-112,-80),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn40_N8S21150C2D1Ev,_ZThn36_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn40_N8S21150C2D0Ev,_ZThn36_N8S21150C2D0Ev)() __attribute__((weak));
extern void _ZN9S21150C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C13__8S21150C2__8S21150C1[] = {
  ABISELECT(40,24),
  0,
  ABISELECT(224,144),
  ABISELECT(160,100),
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(-40,-36),
  ABISELECT(72,44),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21150C132v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S21150C2D1Ev,_ZTv0_n24_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S21150C2D1Ev,_ZThn92_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21150C2D0Ev,_ZTv0_n24_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S21150C2D0Ev,_ZThn92_N8S21150C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C14__8S21150C2__8S21150C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-24,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21150C2D1Ev,_ZTv0_n24_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21150C2D0Ev,_ZTv0_n24_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn168_N8S21150C2D1Ev,_ZThn108_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn168_N8S21150C2D0Ev,_ZThn108_N8S21150C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__A1__8S21150C2__8S21150C1[] = {
  ABISELECT(-168,-108),
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21150C2D1Ev,_ZTv0_n20_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn200_N8S21150C2D1Ev,_ZThn136_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21150C2D0Ev,_ZTv0_n20_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn200_N8S21150C2D0Ev,_ZThn136_N8S21150C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C15__8S21150C2__8S21150C1[] = {
  ABISELECT(-200,-136),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(-200,-136),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21150C2D1Ev,_ZTv0_n20_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21150C2D0Ev,_ZTv0_n20_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21150C2D1Ev,_ZTvn12_n20_N8S21150C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21150C2D0Ev,_ZTvn12_n20_N8S21150C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__8S21150C2__8S21150C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21150C2D1Ev,_ZTvn12_n20_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21150C2D0Ev,_ZTvn12_n20_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S21150C2D1Ev,_ZTv0_n28_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn264_N8S21150C2D1Ev,_ZThn180_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21150C2D0Ev,_ZTv0_n28_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn264_N8S21150C2D0Ev,_ZThn180_N8S21150C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C17__8S21150C2__8S21150C1[] = {
  ABISELECT(-264,-180),
  ABISELECT(-224,-144),
  ABISELECT(-152,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-264,-180),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21150C2D1Ev,_ZTv0_n28_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21150C2D0Ev,_ZTv0_n28_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N8S21150C2D1Ev,_ZTvn12_n28_N8S21150C2D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21150C2D0Ev,_ZTvn12_n28_N8S21150C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C189S21150C17__8S21150C2__8S21150C1[] = {
  ABISELECT(-240,-156),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-280,-192),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21150C2D1Ev,_ZTvn12_n28_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21150C2D0Ev,_ZTvn12_n28_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N8S21150C2D1Ev,_ZTvn32_n28_N8S21150C2D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21150C2D0Ev,_ZTvn32_n28_N8S21150C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S21150C189S21150C17__8S21150C2__8S21150C1[] = {
  ABISELECT(-320,-212),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21150C2D1Ev,_ZTvn32_n28_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21150C2D0Ev,_ZTvn32_n28_N8S21150C2D0Ev),
};
extern void _ZN8S21150C3D1Ev();
extern void _ZN8S21150C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21150C3__8S21150C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C3[0]),
  (VTBL_ENTRY)&_ZN8S21150C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21150C3D1Ev,_ZTv0_n12_N8S21150C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21150C3D1Ev,_ZThn8_N8S21150C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C3D0Ev,_ZTv0_n12_N8S21150C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21150C3D0Ev,_ZThn8_N8S21150C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21150C3__8S21150C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21150C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C3D1Ev,_ZTv0_n12_N8S21150C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C3D0Ev,_ZTv0_n12_N8S21150C3D0Ev),
};
extern void _ZN8S21150C6D1Ev();
extern void _ZN8S21150C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21150C6__8S21150C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C6[0]),
  (VTBL_ENTRY)&_ZN8S21150C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21150C6D1Ev,_ZThn8_N8S21150C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S21150C6D0Ev,_ZThn8_N8S21150C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21150C6__8S21150C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21150C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev),
};
extern void _ZN9S21150C14D1Ev();
extern void _ZN9S21150C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C14__8S21150C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&_ZN9S21150C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S21150C14D1Ev,_ZThn16_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S21150C14D0Ev,_ZThn16_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C14__8S21150C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S21150C14D1Ev,_ZThn44_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S21150C14D0Ev,_ZThn44_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C14__8S21150C1[] = {
  ABISELECT(-64,-44),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C14__8S21150C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C14__8S21150C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void _ZN9S21150C15D1Ev();
extern void _ZN9S21150C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C15__8S21150C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&_ZN9S21150C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C15D0Ev,
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__8S21150C1[] = {
  ABISELECT(-104,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C169S21150C15__8S21150C1[] = {
  ABISELECT(104,68),
  ABISELECT(104,68),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C15__8S21150C1[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__9S21150C15__8S21150C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C15__8S21150C1[] = {
  ABISELECT(88,56),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void _ZN9S21150C17D1Ev();
extern void _ZN9S21150C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C17__8S21150C1[] = {
  ABISELECT(-224,-144),
  ABISELECT(-152,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&_ZN9S21150C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C17D0Ev,
};
extern void _ZN9S21150C18D1Ev();
extern void _ZN9S21150C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C189S21150C17__8S21150C1[] = {
  ABISELECT(-240,-156),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&_ZN9S21150C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C18D0Ev,
};
extern void _ZN9S21150C14D1Ev();
extern void _ZN9S21150C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C149S21150C189S21150C17__A1__8S21150C1[] = {
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&_ZN9S21150C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C149S21150C189S21150C17__A1__8S21150C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C149S21150C189S21150C17__A1__8S21150C1[] = {
  ABISELECT(80,56),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C149S21150C189S21150C17__A1__8S21150C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C149S21150C189S21150C17__A1__8S21150C1[] = {
  ABISELECT(168,112),
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C189S21150C17__8S21150C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C189S21150C17__8S21150C1[] = {
  ABISELECT(80,56),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C189S21150C17__8S21150C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C189S21150C17__8S21150C1[] = {
  ABISELECT(168,112),
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C189S21150C17__8S21150C1[] = {
  ABISELECT(240,156),
  ABISELECT(72,44),
  ABISELECT(240,156),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21150C17D1Ev,_ZThn12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C17D0Ev,_ZThn12_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C18__9S21150C17__8S21150C1[] = {
  ABISELECT(-240,-156),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C17D1Ev,_ZThn12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C17D0Ev,_ZThn12_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C17__8S21150C1[] = {
  ABISELECT(96,72),
  ABISELECT(96,72),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C17D1Ev,_ZTv0_n20_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21150C17D0Ev,_ZTv0_n20_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C17__8S21150C1[] = {
  ABISELECT(64,44),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C17D1Ev,_ZTv0_n20_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C17D0Ev,_ZTv0_n20_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C17D1Ev,_ZTvn12_n20_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C17D0Ev,_ZTvn12_n20_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C17__8S21150C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C17D1Ev,_ZTvn12_n20_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C17D0Ev,_ZTvn12_n20_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A2__9S21150C17__8S21150C1[] = {
  ABISELECT(152,100),
  ABISELECT(152,100),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21150C17D1Ev,_ZTv0_n16_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21150C17D0Ev,_ZTv0_n16_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C17__8S21150C1[] = {
  ABISELECT(224,144),
  ABISELECT(72,44),
  ABISELECT(224,144),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C17D1Ev,_ZTv0_n16_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C17D0Ev,_ZTv0_n16_N9S21150C17D0Ev),
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__8S21150C1[] = {
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S21150C16D1Ev,_ZThn44_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn72_N9S21150C16D0Ev,_ZThn44_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C16__A1__8S21150C1[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
static  VTT_ENTRY vtt_S21150C1[] = {
  {&(_ZTV8S21150C1[15]),  15,120},
  {&(_tg__ZTV9S21150C16__A__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C16__A__8S21150C1[3]),  3,5},
  {&(_ZTV8S21150C1[33]),  33,120},
  {&(_ZTV8S21150C1[56]),  56,120},
  {&(_ZTV8S21150C1[61]),  61,120},
  {&(_ZTV8S21150C1[67]),  67,120},
  {&(_ZTV8S21150C1[72]),  72,120},
  {&(_ZTV8S21150C1[45]),  45,120},
  {&(_ZTV8S21150C1[80]),  80,120},
  {&(_ZTV8S21150C1[85]),  85,120},
  {&(_ZTV8S21150C1[92]),  92,120},
  {&(_ZTV8S21150C1[97]),  97,120},
  {&(_ZTV8S21150C1[106]),  106,120},
  {&(_ZTV8S21150C1[114]),  114,120},
  {&(_ZTV8S21150C1[118]),  118,120},
  {&(_ZTV8S21150C1[45]),  45,120},
  {&(_ZTV8S21150C1[50]),  50,120},
  {&(_tg__ZTV8S21150C2__8S21150C1[14]),  14,16},
  {&(_tg__ZTV8S21150C58S21150C2__8S21150C1[7]),  7,9},
  {&(_tg__ZTV9S21150C108S21150C58S21150C2__8S21150C1[4]),  4,6},
  {&(_tg__ZTV8S21150C6__8S21150C58S21150C2__8S21150C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__8S21150C58S21150C2__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C138S21150C2__8S21150C1[10]),  10,13},
  {&(_tg__ZTV9S21150C14__9S21150C138S21150C2__8S21150C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21150C138S21150C2__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C138S21150C2__8S21150C1[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C138S21150C2__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C138S21150C2__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C17__9S21150C138S21150C2__8S21150C1[7]),  7,9},
  {&(_tg__ZTV9S21150C189S21150C17__9S21150C138S21150C2__8S21150C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S21150C189S21150C17__9S21150C138S21150C2__8S21150C1[2]),  2,4},
  {&(_tg__ZTV9S21150C138S21150C2__8S21150C1[10]),  10,13},
  {&(_tg__ZTV8S20760C9__9S21150C138S21150C2__8S21150C1[3]),  3,5},
  {&(_tg__ZTV8S21150C3__8S21150C2__8S21150C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S21150C2__8S21150C1[3]),  3,5},
  {&(_tg__ZTV8S21150C6__8S21150C2__8S21150C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__8S21150C2__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C13__8S21150C2__8S21150C1[10]),  10,13},
  {&(_tg__ZTV9S21150C14__8S21150C2__8S21150C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__A1__8S21150C2__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C15__8S21150C2__8S21150C1[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__8S21150C2__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C17__8S21150C2__8S21150C1[7]),  7,9},
  {&(_tg__ZTV9S21150C189S21150C17__8S21150C2__8S21150C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S21150C189S21150C17__8S21150C2__8S21150C1[2]),  2,4},
  {&(_tg__ZTV9S21150C13__8S21150C2__8S21150C1[10]),  10,13},
  {&(_tg__ZTV8S21150C3__8S21150C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21150C3__8S21150C1[3]),  3,5},
  {&(_tg__ZTV8S21150C6__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21150C6__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C14__8S21150C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21150C14__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C14__8S21150C1[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C14__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C14__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C15__8S21150C1[4]),  4,6},
  {&(_tg__ZTV9S21150C169S21150C15__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C169S21150C15__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C15__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C16__9S21150C15__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C15__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C17__8S21150C1[6]),  6,8},
  {&(_tg__ZTV9S21150C189S21150C17__8S21150C1[6]),  6,8},
  {&(_tg__ZTV9S21150C149S21150C189S21150C17__A1__8S21150C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21150C149S21150C189S21150C17__A1__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C149S21150C189S21150C17__A1__8S21150C1[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C149S21150C189S21150C17__A1__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C149S21150C189S21150C17__A1__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C189S21150C17__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C189S21150C17__8S21150C1[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C189S21150C17__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C189S21150C17__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C16__A1__9S21150C189S21150C17__8S21150C1[4]),  4,6},
  {&(_tg__ZTV9S21150C18__9S21150C17__8S21150C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21150C17__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C17__8S21150C1[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C17__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A2__9S21150C17__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C16__A1__9S21150C17__8S21150C1[4]),  4,6},
  {&(_tg__ZTV9S21150C16__A1__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C16__A1__8S21150C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21150C1[];
extern  VTBL_ENTRY _ZTV8S21150C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C1[];
static VTBL_ENTRY alt_thunk_names175[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C14D0Ev,_ZThn44_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C14D1Ev,_ZThn44_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21150C14D0Ev,_ZThn16_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21150C14D1Ev,_ZThn16_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C6D0Ev,_ZThn8_N8S21150C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C6D1Ev,_ZThn8_N8S21150C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C3D0Ev,_ZTv0_n12_N8S21150C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C3D0Ev,_ZThn8_N8S21150C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C3D1Ev,_ZTv0_n12_N8S21150C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C3D1Ev,_ZThn8_N8S21150C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21150C2D0Ev,_ZTv0_n28_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S21150C2D0Ev,_ZThn180_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21150C2D1Ev,_ZTv0_n28_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S21150C2D1Ev,_ZThn180_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21150C2D0Ev,_ZTv0_n20_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21150C2D0Ev,_ZThn136_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21150C2D1Ev,_ZTv0_n20_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21150C2D1Ev,_ZThn136_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21150C2D0Ev,_ZTv0_n24_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21150C2D0Ev,_ZThn92_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21150C2D1Ev,_ZTv0_n24_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21150C2D1Ev,_ZThn92_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21150C2D0Ev,_ZThn108_N8S21150C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21150C2D0Ev,_ZThn80_N8S21150C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21150C2D0Ev,_ZThn60_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21150C2D1Ev,_ZThn108_N8S21150C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21150C2D1Ev,_ZThn80_N8S21150C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21150C2D1Ev,_ZThn60_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21150C2D0Ev,_ZThn36_N8S21150C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21150C2D0Ev,_ZThn72_N8S21150C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21150C2D0Ev,_ZThn52_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21150C2D1Ev,_ZThn36_N8S21150C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21150C2D1Ev,_ZThn72_N8S21150C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21150C2D1Ev,_ZThn52_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21150C13D0Ev,_ZTv0_n28_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21150C13D0Ev,_ZThn144_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21150C13D1Ev,_ZTv0_n28_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21150C13D1Ev,_ZThn144_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C13D0Ev,_ZTv0_n20_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21150C13D0Ev,_ZThn100_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C13D1Ev,_ZTv0_n20_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21150C13D1Ev,_ZThn100_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C13D0Ev,_ZThn24_N9S21150C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C13D0Ev,_ZThn44_N9S21150C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21150C13D0Ev,_ZThn72_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C13D1Ev,_ZThn24_N9S21150C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C13D1Ev,_ZThn44_N9S21150C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21150C13D1Ev,_ZThn72_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21150C13D0Ev,_ZTv0_n24_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21150C13D0Ev,_ZThn56_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21150C13D1Ev,_ZTv0_n24_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21150C13D1Ev,_ZThn56_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C13D0Ev,_ZTv0_n16_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S21150C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C13D1Ev,_ZTv0_n16_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S21150C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C5D0Ev,_ZTv0_n12_N8S21150C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21150C5D0Ev,_ZThn80_N8S21150C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C5D1Ev,_ZTv0_n12_N8S21150C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21150C5D1Ev,_ZThn80_N8S21150C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C5D0Ev,_ZTv0_n16_N8S21150C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21150C5D0Ev,_ZThn72_N8S21150C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C5D1Ev,_ZTv0_n16_N8S21150C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21150C5D1Ev,_ZThn72_N8S21150C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C16D0Ev,_ZThn44_N9S21150C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21150C16D0Ev,_ZThn84_N9S21150C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C16D1Ev,_ZThn44_N9S21150C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21150C16D1Ev,_ZThn84_N9S21150C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21150C1D0Ev,_ZTv0_n28_N8S21150C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21150C1D0Ev,_ZThn184_N8S21150C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21150C1D1Ev,_ZTv0_n28_N8S21150C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21150C1D1Ev,_ZThn184_N8S21150C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21150C1D0Ev,_ZTv0_n20_N8S21150C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21150C1D0Ev,_ZThn140_N8S21150C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21150C1D1Ev,_ZTv0_n20_N8S21150C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21150C1D1Ev,_ZThn140_N8S21150C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21150C1D0Ev,_ZTv0_n24_N8S21150C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21150C1D0Ev,_ZThn96_N8S21150C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21150C1D1Ev,_ZTv0_n24_N8S21150C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21150C1D1Ev,_ZThn96_N8S21150C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C1D0Ev,_ZTv0_n12_N8S21150C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21150C1D0Ev,_ZThn112_N8S21150C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21150C1D0Ev,_ZThn84_N8S21150C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21150C1D0Ev,_ZThn64_N8S21150C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C1D1Ev,_ZTv0_n12_N8S21150C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21150C1D1Ev,_ZThn112_N8S21150C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21150C1D1Ev,_ZThn84_N8S21150C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21150C1D1Ev,_ZThn64_N8S21150C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C1D0Ev,_ZTv0_n16_N8S21150C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21150C1D0Ev,_ZThn76_N8S21150C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21150C1D0Ev,_ZThn56_N8S21150C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21150C1D0Ev,_ZThn40_N8S21150C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C1D1Ev,_ZTv0_n16_N8S21150C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21150C1D1Ev,_ZThn76_N8S21150C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21150C1D1Ev,_ZThn56_N8S21150C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21150C1D1Ev,_ZThn40_N8S21150C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21150C1D0Ev,_ZTv0_n60_N8S21150C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21150C1D0Ev,_ZThn4_N8S21150C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21150C1D1Ev,_ZTv0_n60_N8S21150C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21150C1D1Ev,_ZThn4_N8S21150C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C1 = {  "S21150C1", // class name
  bases_S21150C1, 27,
  &(vtc_S21150C1[0]), // expected_vtbl_contents
  &(vtt_S21150C1[0]), // expected_vtt_contents
  ABISELECT(336,220), // object size
  NSPAIRA(_ZTI8S21150C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21150C1),120, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21150C1),82, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names175,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C3  : virtual S20759C5_nt {
  char s21149c3f0[2];
  virtual  ~S21149C3(); // _ZN8S21149C3D2Ev
  S21149C3(); // tgen
};
//SIG(-1 S21149C3) C1{ VBC2{ vd m Fl} vd Fc[2]}


 S21149C3 ::~S21149C3(){ note_dtor("S21149C3", this);}
S21149C3 ::S21149C3(){ note_ctor("S21149C3", this);} // tgen

static void Test_S21149C3()
{
  extern Class_Descriptor cd_S21149C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S21149C3, buf);
    S21149C3 *dp, &lv = *(dp=new (buf) S21149C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S21149C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21149C3)");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(16,8), "S21149C3");
    check_field_offset(lv, s21149c3f0, ABISELECT(8,4), "S21149C3.s21149c3f0");
    test_class_info(&lv, &cd_S21149C3);
    dp->~S21149C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C3(Test_S21149C3, "S21149C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S21149C3C1Ev();
extern void _ZN8S21149C3D2Ev();
Name_Map name_map_S21149C3[] = {
  NSPAIR(_ZN8S21149C3C1Ev),
  NSPAIR(_ZN8S21149C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S21149C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20759C5_nt,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21149C3[];
extern void _ZN8S21149C3D1Ev();
extern void _ZN8S21149C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21149C3D1Ev,_ZTv0_n12_N8S21149C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21149C3D1Ev,_ZThn8_N8S21149C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C3D0Ev,_ZTv0_n12_N8S21149C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21149C3D0Ev,_ZThn8_N8S21149C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21149C3[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C3[0]),
  (VTBL_ENTRY)&_ZN8S21149C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C3D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21149C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C3D1Ev,_ZTv0_n12_N8S21149C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C3D0Ev,_ZTv0_n12_N8S21149C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S21149C3[];
static  VTT_ENTRY vtt_S21149C3[] = {
  {&(_ZTV8S21149C3[3]),  3,10},
  {&(_ZTV8S21149C3[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21149C3[];
extern  VTBL_ENTRY _ZTV8S21149C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C3[];
static VTBL_ENTRY alt_thunk_names176[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C3D0Ev,_ZTv0_n12_N8S21149C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C3D0Ev,_ZThn8_N8S21149C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C3D1Ev,_ZTv0_n12_N8S21149C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C3D1Ev,_ZThn8_N8S21149C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C3 = {  "S21149C3", // class name
  bases_S21149C3, 1,
  &(vtc_S21149C3[0]), // expected_vtbl_contents
  &(vtt_S21149C3[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S21149C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21149C3),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21149C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names176,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C6  : virtual S20760C9 {
  ::S4228C37 s21149c6f0;
  virtual  ~S21149C6(); // _ZN8S21149C6D2Ev
  S21149C6(); // tgen
};
//SIG(-1 S21149C6) C1{ VBC2{ vd m FL} vd FC3{ m}}


 S21149C6 ::~S21149C6(){ note_dtor("S21149C6", this);}
S21149C6 ::S21149C6(){ note_ctor("S21149C6", this);} // tgen

static void Test_S21149C6()
{
  extern Class_Descriptor cd_S21149C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S21149C6, buf);
    S21149C6 *dp, &lv = *(dp=new (buf) S21149C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S21149C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21149C6)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(16,8), "S21149C6");
    check_field_offset(lv, s21149c6f0, ABISELECT(8,4), "S21149C6.s21149c6f0");
    test_class_info(&lv, &cd_S21149C6);
    dp->~S21149C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C6(Test_S21149C6, "S21149C6", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S21149C6C1Ev();
extern void _ZN8S21149C6D2Ev();
Name_Map name_map_S21149C6[] = {
  NSPAIR(_ZN8S21149C6C1Ev),
  NSPAIR(_ZN8S21149C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S21149C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21149C6[];
extern void _ZN8S21149C6D1Ev();
extern void _ZN8S21149C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21149C6D1Ev,_ZThn8_N8S21149C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S21149C6D0Ev,_ZThn8_N8S21149C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21149C6[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C6[0]),
  (VTBL_ENTRY)&_ZN8S21149C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C6D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21149C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21149C6[];
static  VTT_ENTRY vtt_S21149C6[] = {
  {&(_ZTV8S21149C6[3]),  3,10},
  {&(_ZTV8S21149C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21149C6[];
extern  VTBL_ENTRY _ZTV8S21149C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C6[];
static VTBL_ENTRY alt_thunk_names177[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C6D0Ev,_ZThn8_N8S21149C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C6D1Ev,_ZThn8_N8S21149C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C6 = {  "S21149C6", // class name
  bases_S21149C6, 1,
  &(vtc_S21149C6[0]), // expected_vtbl_contents
  &(vtt_S21149C6[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S21149C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21149C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21149C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names177,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C10  : S20760C13 , virtual S4228C23 , virtual S4228C37 {
  short s21149c10f0;
  ~S21149C10(); // tgen
  S21149C10(); // tgen
};
//SIG(-1 S21149C10) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S21149C10 ::~S21149C10(){ note_dtor("S21149C10", this);} // tgen
S21149C10 ::S21149C10(){ note_ctor("S21149C10", this);} // tgen

static void Test_S21149C10()
{
  extern Class_Descriptor cd_S21149C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S21149C10, buf);
    S21149C10 *dp, &lv = *(dp=new (buf) S21149C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S21149C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21149C10)");
    check_base_class_offset(lv, (S20760C13*), 0, "S21149C10");
    check_base_class_offset(lv, (S4228C23*), 0, "S21149C10");
    check_base_class_offset(lv, (S4228C37*), 0, "S21149C10");
    check_field_offset(lv, s21149c10f0, ABISELECT(32,28), "S21149C10.s21149c10f0");
    test_class_info(&lv, &cd_S21149C10);
    dp->~S21149C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C10(Test_S21149C10, "S21149C10", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN9S21149C10C1Ev();
extern void _ZN9S21149C10D1Ev();
Name_Map name_map_S21149C10[] = {
  NSPAIR(_ZN9S21149C10C1Ev),
  NSPAIR(_ZN9S21149C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S21149C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21149C10[];
extern void _ZN9S21149C10D1Ev();
extern void _ZN9S21149C10D0Ev();
static  VTBL_ENTRY vtc_S21149C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C10[0]),
  (VTBL_ENTRY)&_ZN9S21149C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C10D0Ev,
};
extern VTBL_ENTRY _ZTV9S21149C10[];
static  VTT_ENTRY vtt_S21149C10[] = {
  {&(_ZTV9S21149C10[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21149C10[];
extern  VTBL_ENTRY _ZTV9S21149C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C10[];
Class_Descriptor cd_S21149C10 = {  "S21149C10", // class name
  bases_S21149C10, 3,
  &(vtc_S21149C10[0]), // expected_vtbl_contents
  &(vtt_S21149C10[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI9S21149C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21149C10),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21149C10),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C5  : virtual S21149C6 , virtual S4228C27 , S21149C10 {
  int s21149c5f0;
  virtual  ~S21149C5(); // _ZN8S21149C5D2Ev
  S21149C5(); // tgen
};
//SIG(-1 S21149C5) C1{ VBC2{ VBC3{ vd m FL} vd FC4{ m}} VBC5{ m} BC6{ BC7{ vd m Fi[6]} VBC8{ m} VBC4 Fs} vd Fi}


 S21149C5 ::~S21149C5(){ note_dtor("S21149C5", this);}
S21149C5 ::S21149C5(){ note_ctor("S21149C5", this);} // tgen

static void Test_S21149C5()
{
  extern Class_Descriptor cd_S21149C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S21149C5, buf);
    S21149C5 *dp, &lv = *(dp=new (buf) S21149C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S21149C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21149C5)");
    check_base_class_offset(lv, (S20760C9*)(S21149C6*), ABISELECT(56,44), "S21149C5");
    check_base_class_offset(lv, (S21149C6*), ABISELECT(40,36), "S21149C5");
    check_base_class_offset(lv, (S4228C27*), 0, "S21149C5");
    check_base_class_offset(lv, (S20760C13*)(S21149C10*), 0, "S21149C5");
    check_base_class_offset(lv, (S4228C23*)(S21149C10*), 0, "S21149C5");
    check_base_class_offset(lv, (S4228C37*)(S21149C10*), 0, "S21149C5");
    check_base_class_offset(lv, (S21149C10*), 0, "S21149C5");
    check_field_offset(lv, s21149c5f0, ABISELECT(36,32), "S21149C5.s21149c5f0");
    test_class_info(&lv, &cd_S21149C5);
    dp->~S21149C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C5(Test_S21149C5, "S21149C5", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN8S21149C5C1Ev();
extern void _ZN8S21149C5D2Ev();
Name_Map name_map_S21149C5[] = {
  NSPAIR(_ZN8S21149C5C1Ev),
  NSPAIR(_ZN8S21149C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C6;
extern VTBL_ENTRY _ZTI8S21149C6[];
extern  VTBL_ENTRY _ZTV8S21149C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C6[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21149C10;
extern VTBL_ENTRY _ZTI9S21149C10[];
extern  VTBL_ENTRY _ZTV9S21149C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C10[];
static Base_Class bases_S21149C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(56,44), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21149C6,    ABISELECT(40,36), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21149C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21149C5[];
extern void _ZN8S21149C5D1Ev();
extern void _ZN8S21149C5D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S21149C5D1Ev,_ZTv0_n16_N8S21149C5D1Ev)();
extern void ABISELECT(_ZThn40_N8S21149C5D1Ev,_ZThn36_N8S21149C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C5D0Ev,_ZTv0_n16_N8S21149C5D0Ev)();
extern void ABISELECT(_ZThn40_N8S21149C5D0Ev,_ZThn36_N8S21149C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C5D1Ev,_ZTv0_n12_N8S21149C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21149C5D1Ev,_ZThn44_N8S21149C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C5D0Ev,_ZTv0_n12_N8S21149C5D0Ev)();
extern void ABISELECT(_ZThn56_N8S21149C5D0Ev,_ZThn44_N8S21149C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21149C5[] = {
  0,
  ABISELECT(56,44),
  ABISELECT(40,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C5[0]),
  (VTBL_ENTRY)&_ZN8S21149C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C5D0Ev,
  ABISELECT(-40,-36),
  ABISELECT(16,8),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S21149C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C5D1Ev,_ZTv0_n16_N8S21149C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C5D0Ev,_ZTv0_n16_N8S21149C5D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21149C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C5D1Ev,_ZTv0_n12_N8S21149C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C5D0Ev,_ZTv0_n12_N8S21149C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S21149C5[];
extern void _ZN9S21149C10D1Ev();
extern void _ZN9S21149C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C10__8S21149C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C10[0]),
  (VTBL_ENTRY)&_ZN9S21149C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C10D0Ev,
};
extern void _ZN8S21149C6D1Ev();
extern void _ZN8S21149C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21149C6__8S21149C5[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C6[0]),
  (VTBL_ENTRY)&_ZN8S21149C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21149C6D1Ev,_ZThn8_N8S21149C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S21149C6D0Ev,_ZThn8_N8S21149C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21149C6__8S21149C5[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21149C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev),
};
static  VTT_ENTRY vtt_S21149C5[] = {
  {&(_ZTV8S21149C5[7]),  7,20},
  {&(_tg__ZTV9S21149C10__8S21149C5[4]),  4,6},
  {&(_ZTV8S21149C5[13]),  13,20},
  {&(_ZTV8S21149C5[18]),  18,20},
  {&(_tg__ZTV8S21149C6__8S21149C5[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21149C6__8S21149C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21149C5[];
extern  VTBL_ENTRY _ZTV8S21149C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C5[];
static VTBL_ENTRY alt_thunk_names178[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C6D0Ev,_ZThn8_N8S21149C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C6D1Ev,_ZThn8_N8S21149C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C5D0Ev,_ZTv0_n12_N8S21149C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21149C5D0Ev,_ZThn44_N8S21149C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C5D1Ev,_ZTv0_n12_N8S21149C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21149C5D1Ev,_ZThn44_N8S21149C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C5D0Ev,_ZTv0_n16_N8S21149C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21149C5D0Ev,_ZThn36_N8S21149C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C5D1Ev,_ZTv0_n16_N8S21149C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21149C5D1Ev,_ZThn36_N8S21149C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C5 = {  "S21149C5", // class name
  bases_S21149C5, 7,
  &(vtc_S21149C5[0]), // expected_vtbl_contents
  &(vtt_S21149C5[0]), // expected_vtt_contents
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI8S21149C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21149C5),20, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21149C5),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names178,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C16  : virtual S20760C9 {
  virtual  ~S21149C16(); // _ZN9S21149C16D2Ev
  S21149C16(); // tgen
};
//SIG(-1 S21149C16) C1{ VBC2{ vd m FL} vd}


 S21149C16 ::~S21149C16(){ note_dtor("S21149C16", this);}
S21149C16 ::S21149C16(){ note_ctor("S21149C16", this);} // tgen

static void Test_S21149C16()
{
  extern Class_Descriptor cd_S21149C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S21149C16, buf);
    S21149C16 *dp, &lv = *(dp=new (buf) S21149C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S21149C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21149C16)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S21149C16");
    test_class_info(&lv, &cd_S21149C16);
    dp->~S21149C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C16(Test_S21149C16, "S21149C16", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S21149C16C1Ev();
extern void _ZN9S21149C16D2Ev();
Name_Map name_map_S21149C16[] = {
  NSPAIR(_ZN9S21149C16C1Ev),
  NSPAIR(_ZN9S21149C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S21149C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21149C16[];
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn8_N9S21149C16D1Ev,_ZThn4_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn8_N9S21149C16D0Ev,_ZThn4_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21149C16[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S21149C16[];
static  VTT_ENTRY vtt_S21149C16[] = {
  {&(_ZTV9S21149C16[3]),  3,10},
  {&(_ZTV9S21149C16[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
static VTBL_ENTRY alt_thunk_names179[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21149C16D0Ev,_ZThn4_N9S21149C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21149C16D1Ev,_ZThn4_N9S21149C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C16 = {  "S21149C16", // class name
  bases_S21149C16, 1,
  &(vtc_S21149C16[0]), // expected_vtbl_contents
  &(vtt_S21149C16[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S21149C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21149C16),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21149C16),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names179,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C15  : S20760C9 , virtual S20760C13 , S21149C16 {
  ::S20760C13 s21149c15f0;
  ~S21149C15(); // tgen
  S21149C15(); // tgen
};
//SIG(-1 S21149C15) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S21149C15 ::~S21149C15(){ note_dtor("S21149C15", this);} // tgen
S21149C15 ::S21149C15(){ note_ctor("S21149C15", this);} // tgen

static void Test_S21149C15()
{
  extern Class_Descriptor cd_S21149C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S21149C15, buf);
    S21149C15 *dp, &lv = *(dp=new (buf) S21149C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S21149C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21149C15)");
    /*is_ambiguous_... S21149C15::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S21149C15");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S21149C15");
    check_base_class_offset(lv, (S20760C9*)(S21149C16*), ABISELECT(88,72), "S21149C15");
    check_base_class_offset(lv, (S21149C16*), ABISELECT(16,12), "S21149C15");
    check_field_offset(lv, s21149c15f0, ABISELECT(24,16), "S21149C15.s21149c15f0");
    test_class_info(&lv, &cd_S21149C15);
    dp->~S21149C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C15(Test_S21149C15, "S21149C15", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN9S21149C15C1Ev();
extern void _ZN9S21149C15D1Ev();
Name_Map name_map_S21149C15[] = {
  NSPAIR(_ZN9S21149C15C1Ev),
  NSPAIR(_ZN9S21149C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
static Base_Class bases_S21149C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21149C16,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21149C15[];
extern void _ZN9S21149C15D1Ev();
extern void _ZN9S21149C15D0Ev();
extern void ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S21149C15D1Ev,_ZThn72_N9S21149C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S21149C15D0Ev,_ZThn72_N9S21149C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21149C15[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&_ZN9S21149C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C15D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S21149C15[];
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C16__9S21149C15[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S21149C16D1Ev,_ZThn60_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn72_N9S21149C16D0Ev,_ZThn60_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C16__9S21149C15[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
static  VTT_ENTRY vtt_S21149C15[] = {
  {&(_ZTV9S21149C15[4]),  4,21},
  {&(_tg__ZTV9S21149C16__9S21149C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C16__9S21149C15[3]),  3,5},
  {&(_ZTV9S21149C15[14]),  14,21},
  {&(_ZTV9S21149C15[9]),  9,21},
  {&(_ZTV9S21149C15[19]),  19,21},
};
extern VTBL_ENTRY _ZTI9S21149C15[];
extern  VTBL_ENTRY _ZTV9S21149C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C15[];
static VTBL_ENTRY alt_thunk_names180[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C16D0Ev,_ZThn60_N9S21149C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C16D1Ev,_ZThn60_N9S21149C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21149C15D0Ev,_ZThn72_N9S21149C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21149C15D1Ev,_ZThn72_N9S21149C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C15 = {  "S21149C15", // class name
  bases_S21149C15, 4,
  &(vtc_S21149C15[0]), // expected_vtbl_contents
  &(vtt_S21149C15[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI9S21149C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21149C15),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21149C15),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names180,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C14  : virtual S20760C13 , virtual S21149C15 {
  long double s21149c14f0;
  ~S21149C14(); // tgen
  S21149C14(); // tgen
};
//SIG(-1 S21149C14) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S21149C14 ::~S21149C14(){ note_dtor("S21149C14", this);} // tgen
S21149C14 ::S21149C14(){ note_ctor("S21149C14", this);} // tgen

static void Test_S21149C14()
{
  extern Class_Descriptor cd_S21149C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S21149C14, buf);
    S21149C14 *dp, &lv = *(dp=new (buf) S21149C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S21149C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21149C14)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S21149C14");
    check_base_class_offset(lv, (S20760C13*)(S21149C15*), ABISELECT(32,16), "S21149C14");
    /*is_ambiguous_... S21149C15::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C15*), ABISELECT(64,44), "S21149C14");
    check_base_class_offset(lv, (S20760C9*)(S21149C16*)(S21149C15*), ABISELECT(120,88), "S21149C14");
    check_base_class_offset(lv, (S21149C16*)(S21149C15*), ABISELECT(80,56), "S21149C14");
    check_base_class_offset(lv, (S21149C15*), ABISELECT(64,44), "S21149C14");
    check_field_offset(lv, s21149c14f0, ABISELECT(16,4), "S21149C14.s21149c14f0");
    test_class_info(&lv, &cd_S21149C14);
    dp->~S21149C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C14(Test_S21149C14, "S21149C14", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN9S21149C14C1Ev();
extern void _ZN9S21149C14D1Ev();
Name_Map name_map_S21149C14[] = {
  NSPAIR(_ZN9S21149C14C1Ev),
  NSPAIR(_ZN9S21149C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C15;
extern VTBL_ENTRY _ZTI9S21149C15[];
extern  VTBL_ENTRY _ZTV9S21149C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C15[];
static Base_Class bases_S21149C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21149C16,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21149C15,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21149C14[];
extern void _ZN9S21149C14D1Ev();
extern void _ZN9S21149C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S21149C14D1Ev,_ZThn16_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S21149C14D0Ev,_ZThn16_N9S21149C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S21149C14D1Ev,_ZThn44_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S21149C14D0Ev,_ZThn44_N9S21149C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn120_N9S21149C14D1Ev,_ZThn88_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn120_N9S21149C14D0Ev,_ZThn88_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21149C14[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&_ZN9S21149C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C14D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S21149C14[];
extern void _ZN9S21149C15D1Ev();
extern void _ZN9S21149C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C14[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&_ZN9S21149C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C15D0Ev,
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C14[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S21149C16D1Ev,_ZThn32_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S21149C16D0Ev,_ZThn32_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C169S21149C15__9S21149C14[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C15__9S21149C14[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__9S21149C15__9S21149C14[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C15__9S21149C14[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
static  VTT_ENTRY vtt_S21149C14[] = {
  {&(_ZTV9S21149C14[5]),  5,29},
  {&(_ZTV9S21149C14[10]),  10,29},
  {&(_ZTV9S21149C14[17]),  17,29},
  {&(_ZTV9S21149C14[22]),  22,29},
  {&(_ZTV9S21149C14[27]),  27,29},
  {&(_tg__ZTV9S21149C15__9S21149C14[4]),  4,6},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C169S21149C15__9S21149C14[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C15__9S21149C14[3]),  3,5},
  {&(_tg__ZTV9S21149C16__9S21149C15__9S21149C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C15__9S21149C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21149C14[];
extern  VTBL_ENTRY _ZTV9S21149C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C14[];
static VTBL_ENTRY alt_thunk_names181[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C16D0Ev,_ZThn32_N9S21149C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C16D1Ev,_ZThn32_N9S21149C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C14D0Ev,_ZThn44_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C14D1Ev,_ZThn44_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21149C14D0Ev,_ZThn88_N9S21149C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21149C14D0Ev,_ZThn16_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21149C14D1Ev,_ZThn88_N9S21149C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21149C14D1Ev,_ZThn16_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C14 = {  "S21149C14", // class name
  bases_S21149C14, 5,
  &(vtc_S21149C14[0]), // expected_vtbl_contents
  &(vtt_S21149C14[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI9S21149C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21149C14),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21149C14),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names181,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C18  : S4161C4_nt , S21149C14 , S20760C22_nt , virtual S21149C16 {
  virtual  ~S21149C18(); // _ZN9S21149C18D2Ev
  S21149C18(); // tgen
};
//SIG(-1 S21149C18) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S21149C18 ::~S21149C18(){ note_dtor("S21149C18", this);}
S21149C18 ::S21149C18(){ note_ctor("S21149C18", this);} // tgen

static void Test_S21149C18()
{
  extern Class_Descriptor cd_S21149C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S21149C18, buf);
    S21149C18 *dp, &lv = *(dp=new (buf) S21149C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S21149C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21149C18)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S21149C18");
    check_base_class_offset(lv, (S20760C13*)(S21149C14*), ABISELECT(48,24), "S21149C18");
    check_base_class_offset(lv, (S20760C13*)(S21149C15*), ABISELECT(48,24), "S21149C18");
    /*is_ambiguous_... S21149C15::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C15*), ABISELECT(80,52), "S21149C18");
    check_base_class_offset(lv, (S20760C9*)(S21149C16*)(S21149C15*), ABISELECT(136,96), "S21149C18");
    /*is_ambiguous_... S21149C18::S21149C16 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C16*), ABISELECT(136,96), "S21149C18");
    check_base_class_offset(lv, (S21149C16*)(S21149C15*), ABISELECT(96,64), "S21149C18");
    check_base_class_offset(lv, (S21149C15*)(S21149C14*), ABISELECT(80,52), "S21149C18");
    check_base_class_offset(lv, (S21149C14*), 0, "S21149C18");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S21149C18");
    /*is_ambiguous_... S21149C18::S21149C16 */ AMB_check_base_class_offset(lv, (S21149C16*), ABISELECT(152,108), "S21149C18");
    test_class_info(&lv, &cd_S21149C18);
    dp->~S21149C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C18(Test_S21149C18, "S21149C18", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN9S21149C18C1Ev();
extern void _ZN9S21149C18D2Ev();
Name_Map name_map_S21149C18[] = {
  NSPAIR(_ZN9S21149C18C1Ev),
  NSPAIR(_ZN9S21149C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C15;
extern VTBL_ENTRY _ZTI9S21149C15[];
extern  VTBL_ENTRY _ZTV9S21149C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C15[];
extern Class_Descriptor cd_S21149C14;
extern VTBL_ENTRY _ZTI9S21149C14[];
extern  VTBL_ENTRY _ZTV9S21149C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
static Base_Class bases_S21149C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21149C16,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21149C15,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21149C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21149C16,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21149C18[];
extern void _ZN9S21149C18D1Ev();
extern void _ZN9S21149C18D0Ev();
extern void ABISELECT(_ZThn40_N9S21149C18D1Ev,_ZThn20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S21149C18D0Ev,_ZThn20_N9S21149C18D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S21149C18D1Ev,_ZThn24_N9S21149C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
extern void ABISELECT(_ZThn48_N9S21149C18D0Ev,_ZThn24_N9S21149C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S21149C18D1Ev,_ZThn52_N9S21149C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S21149C18D0Ev,_ZThn52_N9S21149C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZThn136_N9S21149C18D1Ev,_ZThn96_N9S21149C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
extern void ABISELECT(_ZThn136_N9S21149C18D0Ev,_ZThn96_N9S21149C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev)();
extern void ABISELECT(_ZThn152_N9S21149C18D1Ev,_ZThn108_N9S21149C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev)();
extern void ABISELECT(_ZThn152_N9S21149C18D0Ev,_ZThn108_N9S21149C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21149C18[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&_ZN9S21149C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C18D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S21149C18D1Ev,_ZThn20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S21149C18D0Ev,_ZThn20_N9S21149C18D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S21149C18[];
extern void _ZN9S21149C14D1Ev();
extern void _ZN9S21149C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C14__9S21149C18[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&_ZN9S21149C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S21149C14D1Ev,_ZThn24_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn48_N9S21149C14D0Ev,_ZThn24_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C14__9S21149C18[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S21149C14D1Ev,_ZThn52_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S21149C14D0Ev,_ZThn52_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C14__9S21149C18[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C14__9S21149C18[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S21149C14D1Ev,_ZThn96_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S21149C14D0Ev,_ZThn96_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C14__9S21149C18[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void _ZN9S21149C15D1Ev();
extern void _ZN9S21149C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C18[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&_ZN9S21149C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C15D0Ev,
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C18[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S21149C16D1Ev,_ZThn32_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S21149C16D0Ev,_ZThn32_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C169S21149C15__9S21149C18[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C15__9S21149C18[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__9S21149C15__9S21149C18[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C15__9S21149C18[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C18[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C16__A1__9S21149C18[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
static  VTT_ENTRY vtt_S21149C18[] = {
  {&(_ZTV9S21149C18[6]),  6,40},
  {&(_tg__ZTV9S21149C14__9S21149C18[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21149C14__9S21149C18[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C14__9S21149C18[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C14__9S21149C18[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C14__9S21149C18[3]),  3,5},
  {&(_ZTV9S21149C18[15]),  15,40},
  {&(_ZTV9S21149C18[22]),  22,40},
  {&(_ZTV9S21149C18[27]),  27,40},
  {&(_ZTV9S21149C18[32]),  32,40},
  {&(_ZTV9S21149C18[38]),  38,40},
  {&(_tg__ZTV9S21149C15__9S21149C18[4]),  4,6},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C18[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C169S21149C15__9S21149C18[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C15__9S21149C18[3]),  3,5},
  {&(_tg__ZTV9S21149C16__9S21149C15__9S21149C18[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C15__9S21149C18[3]),  3,5},
  {&(_tg__ZTV9S21149C16__A1__9S21149C18[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C16__A1__9S21149C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21149C18[];
extern  VTBL_ENTRY _ZTV9S21149C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C18[];
static VTBL_ENTRY alt_thunk_names182[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C16D0Ev,_ZThn32_N9S21149C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C16D1Ev,_ZThn32_N9S21149C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C14D0Ev,_ZThn52_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C14D1Ev,_ZThn52_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C14D0Ev,_ZThn96_N9S21149C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C14D0Ev,_ZThn24_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C14D1Ev,_ZThn96_N9S21149C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C14D1Ev,_ZThn24_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21149C18D0Ev,_ZThn108_N9S21149C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21149C18D1Ev,_ZThn108_N9S21149C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C18D0Ev,_ZThn52_N9S21149C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C18D1Ev,_ZThn52_N9S21149C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C18D0Ev,_ZThn96_N9S21149C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C18D0Ev,_ZThn24_N9S21149C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C18D1Ev,_ZThn96_N9S21149C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C18D1Ev,_ZThn24_N9S21149C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C18 = {  "S21149C18", // class name
  bases_S21149C18, 9,
  &(vtc_S21149C18[0]), // expected_vtbl_contents
  &(vtt_S21149C18[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI9S21149C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21149C18),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21149C18),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names182,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C17  : S20760C9 , S21149C18 {
  virtual  ~S21149C17(); // _ZN9S21149C17D2Ev
  S21149C17(); // tgen
};
//SIG(-1 S21149C17) C1{ BC2{ vd m FL} BC3{ BC4{ m Fp} BC5{ VBC6{ vd m Fi[6]} VBC7{ BC2 VBC6 BC8{ VBC2 vd} FC6} FD} BC9{ vd m} VBC8 vd} vd}


 S21149C17 ::~S21149C17(){ note_dtor("S21149C17", this);}
S21149C17 ::S21149C17(){ note_ctor("S21149C17", this);} // tgen

static void Test_S21149C17()
{
  extern Class_Descriptor cd_S21149C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,32)];
    init_test(&cd_S21149C17, buf);
    S21149C17 *dp, &lv = *(dp=new (buf) S21149C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S21149C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21149C17)");
    /*is_ambiguous_... S21149C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S21149C17");
    check_base_class_offset(lv, (S4161C4_nt*)(S21149C18*), ABISELECT(48,28), "S21149C17");
    check_base_class_offset(lv, (S20760C13*)(S21149C14*)(S21149C18*), ABISELECT(64,36), "S21149C17");
    check_base_class_offset(lv, (S20760C13*)(S21149C15*), ABISELECT(64,36), "S21149C17");
    /*is_ambiguous_... S21149C15::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C15*), ABISELECT(96,64), "S21149C17");
    check_base_class_offset(lv, (S20760C9*)(S21149C16*)(S21149C15*), ABISELECT(152,108), "S21149C17");
    /*is_ambiguous_... S21149C17::S21149C16 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C16*), ABISELECT(152,108), "S21149C17");
    check_base_class_offset(lv, (S21149C16*)(S21149C15*), ABISELECT(112,76), "S21149C17");
    check_base_class_offset(lv, (S21149C15*)(S21149C14*)(S21149C18*), ABISELECT(96,64), "S21149C17");
    check_base_class_offset(lv, (S21149C14*)(S21149C18*), ABISELECT(16,12), "S21149C17");
    check_base_class_offset(lv, (S20760C22_nt*)(S21149C18*), ABISELECT(56,32), "S21149C17");
    /*is_ambiguous_... S21149C18::S21149C16 */ AMB_check_base_class_offset(lv, (S21149C16*)(S21149C18*), ABISELECT(168,120), "S21149C17");
    check_base_class_offset(lv, (S21149C18*), ABISELECT(16,12), "S21149C17");
    test_class_info(&lv, &cd_S21149C17);
    dp->~S21149C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C17(Test_S21149C17, "S21149C17", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN9S21149C17C1Ev();
extern void _ZN9S21149C17D2Ev();
Name_Map name_map_S21149C17[] = {
  NSPAIR(_ZN9S21149C17C1Ev),
  NSPAIR(_ZN9S21149C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C15;
extern VTBL_ENTRY _ZTI9S21149C15[];
extern  VTBL_ENTRY _ZTV9S21149C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C15[];
extern Class_Descriptor cd_S21149C14;
extern VTBL_ENTRY _ZTI9S21149C14[];
extern  VTBL_ENTRY _ZTV9S21149C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C18;
extern VTBL_ENTRY _ZTI9S21149C18[];
extern  VTBL_ENTRY _ZTV9S21149C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C18[];
static Base_Class bases_S21149C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(64,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(152,108), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21149C16,    ABISELECT(112,76), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21149C15,    ABISELECT(96,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21149C14,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21149C16,    ABISELECT(168,120), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21149C18,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21149C17[];
extern void _ZN9S21149C17D1Ev();
extern void _ZN9S21149C17D0Ev();
extern void ABISELECT(_ZThn16_N9S21149C17D1Ev,_ZThn12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C17D0Ev,_ZThn12_N9S21149C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S21149C17D1Ev,_ZThn32_N9S21149C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S21149C17D0Ev,_ZThn32_N9S21149C17D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S21149C17D1Ev,_ZThn36_N9S21149C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S21149C17D0Ev,_ZThn36_N9S21149C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C17D1Ev,_ZTv0_n20_N9S21149C17D1Ev)();
extern void ABISELECT(_ZThn96_N9S21149C17D1Ev,_ZThn64_N9S21149C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C17D0Ev,_ZTv0_n20_N9S21149C17D0Ev)();
extern void ABISELECT(_ZThn96_N9S21149C17D0Ev,_ZThn64_N9S21149C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21149C17D1Ev,_ZTvn12_n20_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C17D0Ev,_ZTvn12_n20_N9S21149C17D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZThn152_N9S21149C17D1Ev,_ZThn108_N9S21149C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev)();
extern void ABISELECT(_ZThn152_N9S21149C17D0Ev,_ZThn108_N9S21149C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21149C17D1Ev,_ZTv0_n16_N9S21149C17D1Ev)();
extern void ABISELECT(_ZThn168_N9S21149C17D1Ev,_ZThn120_N9S21149C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21149C17D0Ev,_ZTv0_n16_N9S21149C17D0Ev)();
extern void ABISELECT(_ZThn168_N9S21149C17D0Ev,_ZThn120_N9S21149C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21149C17[] = {
  ABISELECT(168,120),
  ABISELECT(152,108),
  ABISELECT(96,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&_ZN9S21149C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C17D0Ev,
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C17D1Ev,_ZThn12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C17D0Ev,_ZThn12_N9S21149C17D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21149C17D1Ev,_ZThn32_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21149C17D0Ev,_ZThn32_N9S21149C17D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev),
  ABISELECT(-96,-64),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C17D1Ev,_ZTv0_n20_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C17D0Ev,_ZTv0_n20_N9S21149C17D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C17D1Ev,_ZTvn12_n20_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C17D0Ev,_ZTvn12_n20_N9S21149C17D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev),
  ABISELECT(-168,-120),
  ABISELECT(-16,-12),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C17D1Ev,_ZTv0_n16_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C17D0Ev,_ZTv0_n16_N9S21149C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S21149C17[];
extern void _ZN9S21149C18D1Ev();
extern void _ZN9S21149C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C18__9S21149C17[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&_ZN9S21149C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C18D0Ev,
};
extern void _ZN9S21149C14D1Ev();
extern void _ZN9S21149C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C149S21149C18__9S21149C17[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&_ZN9S21149C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S21149C14D1Ev,_ZThn24_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn48_N9S21149C14D0Ev,_ZThn24_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C149S21149C18__9S21149C17[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S21149C14D1Ev,_ZThn52_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S21149C14D0Ev,_ZThn52_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C149S21149C18__9S21149C17[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C149S21149C18__9S21149C17[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S21149C14D1Ev,_ZThn96_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S21149C14D0Ev,_ZThn96_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C149S21149C18__9S21149C17[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S21149C18D1Ev,_ZThn24_N9S21149C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
extern void ABISELECT(_ZThn48_N9S21149C18D0Ev,_ZThn24_N9S21149C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C18__9S21149C17[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S21149C18D1Ev,_ZThn52_N9S21149C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S21149C18D0Ev,_ZThn52_N9S21149C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C18__9S21149C17[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C18__9S21149C17[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZThn136_N9S21149C18D1Ev,_ZThn96_N9S21149C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
extern void ABISELECT(_ZThn136_N9S21149C18D0Ev,_ZThn96_N9S21149C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C18__9S21149C17[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev)();
extern void ABISELECT(_ZThn152_N9S21149C18D1Ev,_ZThn108_N9S21149C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev)();
extern void ABISELECT(_ZThn152_N9S21149C18D0Ev,_ZThn108_N9S21149C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C18__9S21149C17[] = {
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev),
};
extern void _ZN9S21149C15D1Ev();
extern void _ZN9S21149C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C17[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&_ZN9S21149C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C15D0Ev,
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C17[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S21149C16D1Ev,_ZThn32_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S21149C16D0Ev,_ZThn32_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C169S21149C15__9S21149C17[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C15__9S21149C17[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__9S21149C15__9S21149C17[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C15__9S21149C17[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C17[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C16__A1__9S21149C17[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
static  VTT_ENTRY vtt_S21149C17[] = {
  {&(_ZTV9S21149C17[6]),  6,48},
  {&(_tg__ZTV9S21149C18__9S21149C17[6]),  6,8},
  {&(_tg__ZTV9S21149C149S21149C18__9S21149C17[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21149C149S21149C18__9S21149C17[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C149S21149C18__9S21149C17[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C149S21149C18__9S21149C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C149S21149C18__9S21149C17[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C18__9S21149C17[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C18__9S21149C17[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C18__9S21149C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C18__9S21149C17[3]),  3,5},
  {&(_tg__ZTV9S21149C16__A1__9S21149C18__9S21149C17[4]),  4,6},
  {&(_ZTV9S21149C17[14]),  14,48},
  {&(_ZTV9S21149C17[23]),  23,48},
  {&(_ZTV9S21149C17[30]),  30,48},
  {&(_ZTV9S21149C17[35]),  35,48},
  {&(_ZTV9S21149C17[40]),  40,48},
  {&(_ZTV9S21149C17[46]),  46,48},
  {&(_tg__ZTV9S21149C15__9S21149C17[4]),  4,6},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C169S21149C15__9S21149C17[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C15__9S21149C17[3]),  3,5},
  {&(_tg__ZTV9S21149C16__9S21149C15__9S21149C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C15__9S21149C17[3]),  3,5},
  {&(_tg__ZTV9S21149C16__A1__9S21149C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C16__A1__9S21149C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21149C17[];
extern  VTBL_ENTRY _ZTV9S21149C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C17[];
static VTBL_ENTRY alt_thunk_names183[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C16D0Ev,_ZThn32_N9S21149C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C16D1Ev,_ZThn32_N9S21149C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21149C18D0Ev,_ZThn108_N9S21149C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21149C18D1Ev,_ZThn108_N9S21149C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C18D0Ev,_ZThn52_N9S21149C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C18D1Ev,_ZThn52_N9S21149C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C18D0Ev,_ZThn96_N9S21149C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C18D0Ev,_ZThn24_N9S21149C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C18D1Ev,_ZThn96_N9S21149C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C18D1Ev,_ZThn24_N9S21149C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C14D0Ev,_ZThn52_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C14D1Ev,_ZThn52_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C14D0Ev,_ZThn96_N9S21149C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C14D0Ev,_ZThn24_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C14D1Ev,_ZThn96_N9S21149C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C14D1Ev,_ZThn24_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C17D0Ev,_ZTv0_n16_N9S21149C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21149C17D0Ev,_ZThn120_N9S21149C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C17D1Ev,_ZTv0_n16_N9S21149C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21149C17D1Ev,_ZThn120_N9S21149C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C17D0Ev,_ZTv0_n20_N9S21149C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21149C17D0Ev,_ZThn64_N9S21149C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C17D1Ev,_ZTv0_n20_N9S21149C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21149C17D1Ev,_ZThn64_N9S21149C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21149C17D0Ev,_ZThn108_N9S21149C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C17D0Ev,_ZThn36_N9S21149C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21149C17D1Ev,_ZThn108_N9S21149C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C17D1Ev,_ZThn36_N9S21149C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C17 = {  "S21149C17", // class name
  bases_S21149C17, 11,
  &(vtc_S21149C17[0]), // expected_vtbl_contents
  &(vtt_S21149C17[0]), // expected_vtt_contents
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI9S21149C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21149C17),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21149C17),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names183,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C13  : virtual S21149C14 , virtual S21149C17 , S4228C37 , virtual S20759C5_nt {
  virtual  ~S21149C13(); // _ZN9S21149C13D2Ev
  virtual void  v1(); // _ZN9S21149C132v1Ev
  S21149C13(); // tgen
};
//SIG(-1 S21149C13) C1{ VBC2{ VBC3{ vd m Fi[6]} VBC4{ BC5{ vd m FL} VBC3 BC6{ VBC5 vd} FC3} FD} VBC7{ BC5 BC8{ BC9{ m Fp} BC2 BC10{ vd m} VBC6 vd} vd} BC11{ m} VBC12{ vd m Fl} vd v1}


 S21149C13 ::~S21149C13(){ note_dtor("S21149C13", this);}
void  S21149C13 ::v1(){vfunc_called(this, "_ZN9S21149C132v1Ev");}
S21149C13 ::S21149C13(){ note_ctor("S21149C13", this);} // tgen

static void Test_S21149C13()
{
  extern Class_Descriptor cd_S21149C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,38)];
    init_test(&cd_S21149C13, buf);
    S21149C13 *dp, &lv = *(dp=new (buf) S21149C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,148), "sizeof(S21149C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21149C13)");
    /*is_ambiguous_... S21149C13::S21149C14 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21149C14*), ABISELECT(48,20), "S21149C13");
    check_base_class_offset(lv, (S20760C13*)(S21149C15*), ABISELECT(48,20), "S21149C13");
    check_base_class_offset(lv, (S20760C13*)(S21149C14*)(S21149C18*)(S21149C17*), ABISELECT(48,20), "S21149C13");
    /*is_ambiguous_... S21149C15::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C15*), ABISELECT(80,48), "S21149C13");
    check_base_class_offset(lv, (S20760C9*)(S21149C16*)(S21149C15*), ABISELECT(136,92), "S21149C13");
    /*is_ambiguous_... S21149C13::S21149C16 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C16*), ABISELECT(136,92), "S21149C13");
    check_base_class_offset(lv, (S21149C16*)(S21149C15*), ABISELECT(96,60), "S21149C13");
    /*is_ambiguous_... S21149C13::S21149C14 */ AMB_check_base_class_offset(lv, (S21149C15*)(S21149C14*), ABISELECT(80,48), "S21149C13");
    check_base_class_offset(lv, (S21149C15*)(S21149C14*)(S21149C18*)(S21149C17*), ABISELECT(80,48), "S21149C13");
    /*is_ambiguous_... S21149C13::S21149C14 */ AMB_check_base_class_offset(lv, (S21149C14*), ABISELECT(16,4), "S21149C13");
    /*is_ambiguous_... S21149C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C17*), ABISELECT(160,104), "S21149C13");
    check_base_class_offset(lv, (S4161C4_nt*)(S21149C18*)(S21149C17*), ABISELECT(208,132), "S21149C13");
    check_base_class_offset(lv, (S21149C14*)(S21149C18*)(S21149C17*), ABISELECT(176,116), "S21149C13");
    check_base_class_offset(lv, (S20760C22_nt*)(S21149C18*)(S21149C17*), ABISELECT(216,136), "S21149C13");
    /*is_ambiguous_... S21149C18::S21149C16 */ AMB_check_base_class_offset(lv, (S21149C16*)(S21149C18*)(S21149C17*), 0, "S21149C13");
    check_base_class_offset(lv, (S21149C18*)(S21149C17*), ABISELECT(176,116), "S21149C13");
    check_base_class_offset(lv, (S21149C17*), ABISELECT(160,104), "S21149C13");
    check_base_class_offset(lv, (S4228C37*), 0, "S21149C13");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(224,140), "S21149C13");
    test_class_info(&lv, &cd_S21149C13);
    dp->~S21149C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C13(Test_S21149C13, "S21149C13", ABISELECT(240,148));

#else // __cplusplus

extern void _ZN9S21149C13C1Ev();
extern void _ZN9S21149C13D2Ev();
Name_Map name_map_S21149C13[] = {
  NSPAIR(_ZN9S21149C13C1Ev),
  NSPAIR(_ZN9S21149C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C15;
extern VTBL_ENTRY _ZTI9S21149C15[];
extern  VTBL_ENTRY _ZTV9S21149C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C15[];
extern Class_Descriptor cd_S21149C14;
extern VTBL_ENTRY _ZTI9S21149C14[];
extern  VTBL_ENTRY _ZTV9S21149C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C14[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21149C14;
extern VTBL_ENTRY _ZTI9S21149C14[];
extern  VTBL_ENTRY _ZTV9S21149C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C18;
extern VTBL_ENTRY _ZTI9S21149C18[];
extern  VTBL_ENTRY _ZTV9S21149C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C18[];
extern Class_Descriptor cd_S21149C17;
extern VTBL_ENTRY _ZTI9S21149C17[];
extern  VTBL_ENTRY _ZTV9S21149C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C17[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S21149C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(48,20), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,92), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21149C16,    ABISELECT(96,60), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21149C15,    ABISELECT(80,48), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21149C14,    ABISELECT(16,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21149C14,    ABISELECT(176,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(216,136), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21149C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21149C18,    ABISELECT(176,116), //bcp->offset
    52, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21149C17,    ABISELECT(160,104), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20759C5_nt,    ABISELECT(224,140), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21149C13[];
extern void ABISELECT(_ZTv0_n32_N9S21149C13D1Ev,_ZTv0_n16_N9S21149C13D1Ev)();
extern void _ZN9S21149C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21149C13D0Ev,_ZTv0_n16_N9S21149C13D0Ev)();
extern void _ZN9S21149C13D0Ev() __attribute__((weak));
extern void _ZN9S21149C132v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21149C13D1Ev,_ZTv0_n24_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C13D1Ev,_ZThn4_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21149C13D0Ev,_ZTv0_n24_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S21149C13D0Ev,_ZThn4_N9S21149C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn48_N9S21149C13D1Ev,_ZThn20_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn48_N9S21149C13D0Ev,_ZThn20_N9S21149C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C13D1Ev,_ZTv0_n20_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn80_N9S21149C13D1Ev,_ZThn48_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C13D0Ev,_ZTv0_n20_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn80_N9S21149C13D0Ev,_ZThn48_N9S21149C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21149C13D1Ev,_ZTvn12_n20_N9S21149C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C13D0Ev,_ZTvn12_n20_N9S21149C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn136_N9S21149C13D1Ev,_ZThn92_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn136_N9S21149C13D0Ev,_ZThn92_N9S21149C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21149C13D1Ev,_ZTv0_n28_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn160_N9S21149C13D1Ev,_ZThn104_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21149C13D0Ev,_ZTv0_n28_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn160_N9S21149C13D0Ev,_ZThn104_N9S21149C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N9S21149C13D1Ev,_ZTvn12_n28_N9S21149C13D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S21149C13D0Ev,_ZTvn12_n28_N9S21149C13D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S21149C13D1Ev,_ZTvn32_n28_N9S21149C13D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S21149C13D0Ev,_ZTvn32_n28_N9S21149C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn224_N9S21149C13D1Ev,_ZThn140_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn224_N9S21149C13D0Ev,_ZThn140_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21149C13[] = {
  ABISELECT(224,140),
  0,
  ABISELECT(160,104),
  ABISELECT(80,48),
  ABISELECT(48,20),
  ABISELECT(16,4),
  0,
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C13D1Ev,_ZTv0_n16_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C13D0Ev,_ZTv0_n16_N9S21149C13D0Ev),
  (VTBL_ENTRY)&_ZN9S21149C132v1Ev,
  ABISELECT(-16,-4),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21149C13D1Ev,_ZTv0_n24_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21149C13D0Ev,_ZTv0_n24_N9S21149C13D0Ev),
  ABISELECT(-48,-20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C13D1Ev,_ZTv0_n20_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C13D0Ev,_ZTv0_n20_N9S21149C13D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C13D1Ev,_ZTvn12_n20_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C13D0Ev,_ZTvn12_n20_N9S21149C13D0Ev),
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev),
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21149C13D1Ev,_ZTv0_n28_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21149C13D0Ev,_ZTv0_n28_N9S21149C13D0Ev),
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21149C13D1Ev,_ZTvn12_n28_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21149C13D0Ev,_ZTvn12_n28_N9S21149C13D0Ev),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21149C13D1Ev,_ZTvn32_n28_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21149C13D0Ev,_ZTvn32_n28_N9S21149C13D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S21149C13[];
extern void _ZN9S21149C14D1Ev();
extern void _ZN9S21149C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C14__9S21149C13[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&_ZN9S21149C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S21149C14D1Ev,_ZThn16_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S21149C14D0Ev,_ZThn16_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C14__9S21149C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S21149C14D1Ev,_ZThn44_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S21149C14D0Ev,_ZThn44_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C14__9S21149C13[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C14__9S21149C13[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn120_N9S21149C14D1Ev,_ZThn88_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn120_N9S21149C14D0Ev,_ZThn88_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C14__9S21149C13[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void _ZN9S21149C15D1Ev();
extern void _ZN9S21149C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C13[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&_ZN9S21149C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C15D0Ev,
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C13[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S21149C16D1Ev,_ZThn32_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S21149C16D0Ev,_ZThn32_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C169S21149C15__9S21149C13[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C15__9S21149C13[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__9S21149C15__9S21149C13[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C15__9S21149C13[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void _ZN9S21149C17D1Ev();
extern void _ZN9S21149C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C17__9S21149C13[] = {
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&_ZN9S21149C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C17D0Ev,
};
extern void _ZN9S21149C18D1Ev();
extern void _ZN9S21149C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C189S21149C17__9S21149C13[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&_ZN9S21149C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C18D0Ev,
};
extern void _ZN9S21149C14D1Ev();
extern void _ZN9S21149C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C149S21149C189S21149C17__A1__9S21149C13[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&_ZN9S21149C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C149S21149C189S21149C17__A1__9S21149C13[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C149S21149C189S21149C17__A1__9S21149C13[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C149S21149C189S21149C17__A1__9S21149C13[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C149S21149C189S21149C17__A1__9S21149C13[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C189S21149C17__9S21149C13[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C189S21149C17__9S21149C13[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C189S21149C17__9S21149C13[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C189S21149C17__9S21149C13[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C189S21149C17__9S21149C13[] = {
  ABISELECT(176,116),
  ABISELECT(136,92),
  ABISELECT(176,116),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21149C17D1Ev,_ZThn12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C17D0Ev,_ZThn12_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C18__9S21149C17__9S21149C13[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C17D1Ev,_ZThn12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C17D0Ev,_ZThn12_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C17__9S21149C13[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C17D1Ev,_ZTv0_n20_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21149C17D0Ev,_ZTv0_n20_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C17__9S21149C13[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C17D1Ev,_ZTv0_n20_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C17D0Ev,_ZTv0_n20_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C17D1Ev,_ZTvn12_n20_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C17D0Ev,_ZTvn12_n20_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C17__9S21149C13[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C17D1Ev,_ZTvn12_n20_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C17D0Ev,_ZTvn12_n20_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__9S21149C17__9S21149C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21149C17D1Ev,_ZTv0_n16_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21149C17D0Ev,_ZTv0_n16_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C17__9S21149C13[] = {
  ABISELECT(160,104),
  ABISELECT(136,92),
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C17D1Ev,_ZTv0_n16_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C17D0Ev,_ZTv0_n16_N9S21149C17D0Ev),
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C13[] = {
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn136_N9S21149C16D1Ev,_ZThn92_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn136_N9S21149C16D0Ev,_ZThn92_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C16__A1__9S21149C13[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
static  VTT_ENTRY vtt_S21149C13[] = {
  {&(_ZTV9S21149C13[10]),  10,69},
  {&(_ZTV9S21149C13[19]),  19,69},
  {&(_ZTV9S21149C13[24]),  24,69},
  {&(_ZTV9S21149C13[31]),  31,69},
  {&(_ZTV9S21149C13[36]),  36,69},
  {&(_ZTV9S21149C13[41]),  41,69},
  {&(_ZTV9S21149C13[50]),  50,69},
  {&(_ZTV9S21149C13[58]),  58,69},
  {&(_ZTV9S21149C13[62]),  62,69},
  {&(_ZTV9S21149C13[10]),  10,69},
  {&(_ZTV9S21149C13[67]),  67,69},
  {&(_tg__ZTV9S21149C14__9S21149C13[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21149C14__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C14__9S21149C13[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C14__9S21149C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C14__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C13[4]),  4,6},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C169S21149C15__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C15__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S21149C16__9S21149C15__9S21149C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C15__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S21149C17__9S21149C13[6]),  6,8},
  {&(_tg__ZTV9S21149C189S21149C17__9S21149C13[6]),  6,8},
  {&(_tg__ZTV9S21149C149S21149C189S21149C17__A1__9S21149C13[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21149C149S21149C189S21149C17__A1__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C149S21149C189S21149C17__A1__9S21149C13[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C149S21149C189S21149C17__A1__9S21149C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C149S21149C189S21149C17__A1__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C189S21149C17__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C189S21149C17__9S21149C13[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C189S21149C17__9S21149C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C189S21149C17__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S21149C16__A1__9S21149C189S21149C17__9S21149C13[4]),  4,6},
  {&(_tg__ZTV9S21149C18__9S21149C17__9S21149C13[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21149C17__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C17__9S21149C13[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C17__9S21149C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__9S21149C17__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S21149C16__A1__9S21149C17__9S21149C13[4]),  4,6},
  {&(_tg__ZTV9S21149C16__A1__9S21149C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C16__A1__9S21149C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21149C13[];
extern  VTBL_ENTRY _ZTV9S21149C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C13[];
static VTBL_ENTRY alt_thunk_names184[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C16D0Ev,_ZThn92_N9S21149C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C16D0Ev,_ZThn32_N9S21149C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C16D1Ev,_ZThn92_N9S21149C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C16D1Ev,_ZThn32_N9S21149C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C14D0Ev,_ZThn44_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C14D1Ev,_ZThn44_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21149C14D0Ev,_ZThn88_N9S21149C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21149C14D0Ev,_ZThn16_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21149C14D1Ev,_ZThn88_N9S21149C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21149C14D1Ev,_ZThn16_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21149C13D0Ev,_ZTv0_n28_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21149C13D0Ev,_ZThn104_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21149C13D1Ev,_ZTv0_n28_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21149C13D1Ev,_ZThn104_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C13D0Ev,_ZTv0_n20_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C13D0Ev,_ZThn48_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C13D1Ev,_ZTv0_n20_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C13D1Ev,_ZThn48_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21149C13D0Ev,_ZThn140_N9S21149C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C13D0Ev,_ZThn92_N9S21149C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C13D0Ev,_ZThn20_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21149C13D1Ev,_ZThn140_N9S21149C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C13D1Ev,_ZThn92_N9S21149C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C13D1Ev,_ZThn20_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21149C13D0Ev,_ZTv0_n24_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21149C13D0Ev,_ZThn4_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21149C13D1Ev,_ZTv0_n24_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21149C13D1Ev,_ZThn4_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C13D0Ev,_ZTv0_n16_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S21149C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C13D1Ev,_ZTv0_n16_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S21149C13D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C13 = {  "S21149C13", // class name
  bases_S21149C13, 15,
  &(vtc_S21149C13[0]), // expected_vtbl_contents
  &(vtt_S21149C13[0]), // expected_vtt_contents
  ABISELECT(240,148), // object size
  NSPAIRA(_ZTI9S21149C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21149C13),69, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21149C13),42, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names184,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C2  : virtual S21149C3 , S21149C5 , S21149C13 , S20760C9 {
  virtual  ~S21149C2(); // _ZN8S21149C2D2Ev
  S21149C2(); // tgen
};
//SIG(-1 S21149C2) C1{ VBC2{ VBC3{ vd m Fl} vd Fc[2]} BC4{ VBC5{ VBC6{ vd m FL} vd FC7{ m}} VBC8{ m} BC9{ BC10{ vd m Fi[6]} VBC11{ m} VBC7 Fs} vd Fi} BC12{ VBC13{ VBC10 VBC14{ BC6 VBC10 BC15{ VBC6 vd} FC10} FD} VBC16{ BC6 BC17{ BC18{ m Fp} BC13 BC19{ vd m} VBC15 vd} vd} BC7 VBC3 vd v1} BC6 vd}


 S21149C2 ::~S21149C2(){ note_dtor("S21149C2", this);}
S21149C2 ::S21149C2(){ note_ctor("S21149C2", this);} // tgen

static void Test_S21149C2()
{
  extern Class_Descriptor cd_S21149C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,54)];
    init_test(&cd_S21149C2, buf);
    S21149C2 *dp, &lv = *(dp=new (buf) S21149C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,212), "sizeof(S21149C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21149C2)");
    check_base_class_offset(lv, (S20759C5_nt*)(S21149C3*), ABISELECT(80,60), "S21149C2");
    check_base_class_offset(lv, (S20759C5_nt*)(S21149C13*), ABISELECT(80,60), "S21149C2");
    check_base_class_offset(lv, (S21149C3*), ABISELECT(64,52), "S21149C2");
    check_base_class_offset(lv, (S20760C9*)(S21149C6*), ABISELECT(112,76), "S21149C2");
    check_base_class_offset(lv, (S20760C9*)(S21149C16*)(S21149C15*), ABISELECT(112,76), "S21149C2");
    /*is_ambiguous_... S21149C2::S21149C16 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C16*), ABISELECT(112,76), "S21149C2");
    check_base_class_offset(lv, (S21149C6*)(S21149C5*), ABISELECT(96,68), "S21149C2");
    check_base_class_offset(lv, (S4228C27*)(S21149C5*), 0, "S21149C2");
    check_base_class_offset(lv, (S20760C13*)(S21149C10*)(S21149C5*), 0, "S21149C2");
    check_base_class_offset(lv, (S4228C23*)(S21149C10*)(S21149C5*), 0, "S21149C2");
    check_base_class_offset(lv, (S4228C37*)(S21149C10*)(S21149C5*), 0, "S21149C2");
    check_base_class_offset(lv, (S21149C10*)(S21149C5*), 0, "S21149C2");
    check_base_class_offset(lv, (S21149C5*), 0, "S21149C2");
    /*is_ambiguous_... S21149C2::S21149C14 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21149C14*), ABISELECT(160,104), "S21149C2");
    check_base_class_offset(lv, (S20760C13*)(S21149C15*), ABISELECT(160,104), "S21149C2");
    check_base_class_offset(lv, (S20760C13*)(S21149C14*)(S21149C18*)(S21149C17*), ABISELECT(160,104), "S21149C2");
    /*is_ambiguous_... S21149C15::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C15*), ABISELECT(192,132), "S21149C2");
    check_base_class_offset(lv, (S21149C16*)(S21149C15*), ABISELECT(208,144), "S21149C2");
    /*is_ambiguous_... S21149C2::S21149C14 */ AMB_check_base_class_offset(lv, (S21149C15*)(S21149C14*), ABISELECT(192,132), "S21149C2");
    check_base_class_offset(lv, (S21149C15*)(S21149C14*)(S21149C18*)(S21149C17*), ABISELECT(192,132), "S21149C2");
    /*is_ambiguous_... S21149C13::S21149C14 */ AMB_check_base_class_offset(lv, (S21149C14*)(S21149C13*), ABISELECT(128,88), "S21149C2");
    /*is_ambiguous_... S21149C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C17*), ABISELECT(256,176), "S21149C2");
    check_base_class_offset(lv, (S4161C4_nt*)(S21149C18*)(S21149C17*), ABISELECT(304,204), "S21149C2");
    check_base_class_offset(lv, (S21149C14*)(S21149C18*)(S21149C17*), ABISELECT(272,188), "S21149C2");
    check_base_class_offset(lv, (S20760C22_nt*)(S21149C18*)(S21149C17*), ABISELECT(312,208), "S21149C2");
    /*is_ambiguous_... S21149C18::S21149C16 */ AMB_check_base_class_offset(lv, (S21149C16*)(S21149C18*)(S21149C17*), ABISELECT(40,36), "S21149C2");
    check_base_class_offset(lv, (S21149C18*)(S21149C17*), ABISELECT(272,188), "S21149C2");
    check_base_class_offset(lv, (S21149C17*)(S21149C13*), ABISELECT(256,176), "S21149C2");
    check_base_class_offset(lv, (S4228C37*)(S21149C13*), ABISELECT(40,36), "S21149C2");
    check_base_class_offset(lv, (S21149C13*), ABISELECT(40,36), "S21149C2");
    /*is_ambiguous_... S21149C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(48,40), "S21149C2");
    test_class_info(&lv, &cd_S21149C2);
    dp->~S21149C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C2(Test_S21149C2, "S21149C2", ABISELECT(320,212));

#else // __cplusplus

extern void _ZN8S21149C2C1Ev();
extern void _ZN8S21149C2D2Ev();
Name_Map name_map_S21149C2[] = {
  NSPAIR(_ZN8S21149C2C1Ev),
  NSPAIR(_ZN8S21149C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S21149C3;
extern VTBL_ENTRY _ZTI8S21149C3[];
extern  VTBL_ENTRY _ZTV8S21149C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C3[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C6;
extern VTBL_ENTRY _ZTI8S21149C6[];
extern  VTBL_ENTRY _ZTV8S21149C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C6[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21149C10;
extern VTBL_ENTRY _ZTI9S21149C10[];
extern  VTBL_ENTRY _ZTV9S21149C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C10[];
extern Class_Descriptor cd_S21149C5;
extern VTBL_ENTRY _ZTI8S21149C5[];
extern  VTBL_ENTRY _ZTV8S21149C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C5[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C15;
extern VTBL_ENTRY _ZTI9S21149C15[];
extern  VTBL_ENTRY _ZTV9S21149C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C15[];
extern Class_Descriptor cd_S21149C14;
extern VTBL_ENTRY _ZTI9S21149C14[];
extern  VTBL_ENTRY _ZTV9S21149C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C14[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21149C14;
extern VTBL_ENTRY _ZTI9S21149C14[];
extern  VTBL_ENTRY _ZTV9S21149C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C18;
extern VTBL_ENTRY _ZTI9S21149C18[];
extern  VTBL_ENTRY _ZTV9S21149C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C18[];
extern Class_Descriptor cd_S21149C17;
extern VTBL_ENTRY _ZTI9S21149C17[];
extern  VTBL_ENTRY _ZTV9S21149C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C17[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21149C13;
extern VTBL_ENTRY _ZTI9S21149C13[];
extern  VTBL_ENTRY _ZTV9S21149C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S21149C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20759C5_nt,    ABISELECT(80,60), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21149C3,    ABISELECT(64,52), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(112,76), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21149C6,    ABISELECT(96,68), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S21149C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21149C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(160,104), //bcp->offset
    63, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(192,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21149C16,    ABISELECT(208,144), //bcp->offset
    75, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21149C15,    ABISELECT(192,132), //bcp->offset
    68, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S21149C14,    ABISELECT(128,88), //bcp->offset
    55, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(256,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21149C14,    ABISELECT(272,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(312,208), //bcp->offset
    97, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21149C16,    ABISELECT(40,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S21149C18,    ABISELECT(272,188), //bcp->offset
    89, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21149C17,    ABISELECT(256,176), //bcp->offset
    80, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(40,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21149C13,    ABISELECT(40,36), //bcp->offset
    16, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(48,40), //bcp->offset
    29, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21149C2[];
extern void _ZN8S21149C2D1Ev();
extern void _ZN8S21149C2D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn40_N8S21149C2D1Ev,_ZThn36_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn40_N8S21149C2D0Ev,_ZThn36_N8S21149C2D0Ev)() __attribute__((weak));
extern void _ZN9S21149C132v1Ev();
extern void ABISELECT(_ZThn48_N8S21149C2D1Ev,_ZThn40_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S21149C2D0Ev,_ZThn40_N8S21149C2D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21149C2D1Ev,_ZThn52_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21149C2D0Ev,_ZThn52_N8S21149C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21149C2D1Ev,_ZThn60_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21149C2D0Ev,_ZThn60_N8S21149C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S21149C2D1Ev,_ZThn68_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S21149C2D0Ev,_ZThn68_N8S21149C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21149C2D1Ev,_ZThn76_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21149C2D0Ev,_ZThn76_N8S21149C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21149C2D1Ev,_ZTv0_n24_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S21149C2D1Ev,_ZThn88_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21149C2D0Ev,_ZTv0_n24_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S21149C2D0Ev,_ZThn88_N8S21149C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S21149C2D1Ev,_ZThn104_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S21149C2D0Ev,_ZThn104_N8S21149C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21149C2D1Ev,_ZTv0_n20_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn192_N8S21149C2D1Ev,_ZThn132_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21149C2D0Ev,_ZTv0_n20_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn192_N8S21149C2D0Ev,_ZThn132_N8S21149C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21149C2D1Ev,_ZTvn12_n20_N8S21149C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21149C2D0Ev,_ZTvn12_n20_N8S21149C2D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21149C2D1Ev,_ZTv0_n28_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn256_N8S21149C2D1Ev,_ZThn176_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21149C2D0Ev,_ZTv0_n28_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn256_N8S21149C2D0Ev,_ZThn176_N8S21149C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S21149C2D1Ev,_ZTvn12_n28_N8S21149C2D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21149C2D0Ev,_ZTvn12_n28_N8S21149C2D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21149C2D1Ev,_ZTvn32_n28_N8S21149C2D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21149C2D0Ev,_ZTvn32_n28_N8S21149C2D0Ev)();
static  VTBL_ENTRY vtc_S21149C2[] = {
  ABISELECT(40,36),
  ABISELECT(256,176),
  ABISELECT(192,132),
  ABISELECT(160,104),
  ABISELECT(128,88),
  ABISELECT(80,60),
  ABISELECT(64,52),
  0,
  ABISELECT(112,76),
  ABISELECT(96,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&_ZN8S21149C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C2D0Ev,
  ABISELECT(40,24),
  0,
  ABISELECT(216,140),
  ABISELECT(152,96),
  ABISELECT(120,68),
  ABISELECT(88,52),
  ABISELECT(-40,-36),
  ABISELECT(72,40),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21149C132v1Ev,
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21149C2D1Ev,_ZThn40_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21149C2D0Ev,_ZThn40_N8S21149C2D0Ev),
  ABISELECT(-64,-52),
  ABISELECT(16,8),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev),
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(16,8),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev),
  ABISELECT(-128,-88),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21149C2D1Ev,_ZTv0_n24_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21149C2D0Ev,_ZTv0_n24_N8S21149C2D0Ev),
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21149C2D1Ev,_ZTv0_n20_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21149C2D0Ev,_ZTv0_n20_N8S21149C2D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21149C2D1Ev,_ZTvn12_n20_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21149C2D0Ev,_ZTvn12_n20_N8S21149C2D0Ev),
  ABISELECT(-256,-176),
  ABISELECT(-216,-140),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-256,-176),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21149C2D1Ev,_ZTv0_n28_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21149C2D0Ev,_ZTv0_n28_N8S21149C2D0Ev),
  ABISELECT(-232,-152),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-272,-188),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21149C2D1Ev,_ZTvn12_n28_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21149C2D0Ev,_ZTvn12_n28_N8S21149C2D0Ev),
  ABISELECT(-312,-208),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21149C2D1Ev,_ZTvn32_n28_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21149C2D0Ev,_ZTvn32_n28_N8S21149C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21149C2[];
extern void _ZN8S21149C5D1Ev();
extern void _ZN8S21149C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21149C5__8S21149C2[] = {
  0,
  ABISELECT(112,76),
  ABISELECT(96,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C5[0]),
  (VTBL_ENTRY)&_ZN8S21149C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C5D0Ev,
};
extern void _ZN9S21149C10D1Ev();
extern void _ZN9S21149C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C108S21149C5__8S21149C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C10[0]),
  (VTBL_ENTRY)&_ZN9S21149C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21149C5D1Ev,_ZTv0_n16_N8S21149C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21149C5D1Ev,_ZThn68_N8S21149C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C5D0Ev,_ZTv0_n16_N8S21149C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21149C5D0Ev,_ZThn68_N8S21149C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21149C6__8S21149C5__8S21149C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(16,8),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S21149C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C5D1Ev,_ZTv0_n16_N8S21149C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C5D0Ev,_ZTv0_n16_N8S21149C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21149C5D1Ev,_ZTv0_n12_N8S21149C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S21149C5D1Ev,_ZThn76_N8S21149C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C5D0Ev,_ZTv0_n12_N8S21149C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S21149C5D0Ev,_ZThn76_N8S21149C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21149C5__8S21149C2[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S21149C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C5D1Ev,_ZTv0_n12_N8S21149C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C5D0Ev,_ZTv0_n12_N8S21149C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21149C13D1Ev,_ZTv0_n16_N9S21149C13D1Ev)();
extern void _ZN9S21149C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21149C13D0Ev,_ZTv0_n16_N9S21149C13D0Ev)();
extern void _ZN9S21149C13D0Ev() __attribute__((weak));
extern void _ZN9S21149C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C13__8S21149C2[] = {
  ABISELECT(40,24),
  0,
  ABISELECT(216,140),
  ABISELECT(152,96),
  ABISELECT(120,68),
  ABISELECT(88,52),
  0,
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C13D1Ev,_ZTv0_n16_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C13D0Ev,_ZTv0_n16_N9S21149C13D0Ev),
  (VTBL_ENTRY)&_ZN9S21149C132v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S21149C13D1Ev,_ZTv0_n24_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn88_N9S21149C13D1Ev,_ZThn52_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21149C13D0Ev,_ZTv0_n24_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn88_N9S21149C13D0Ev,_ZThn52_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C14__9S21149C13__8S21149C2[] = {
  ABISELECT(-88,-52),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21149C13D1Ev,_ZTv0_n24_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21149C13D0Ev,_ZTv0_n24_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn120_N9S21149C13D1Ev,_ZThn68_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn120_N9S21149C13D0Ev,_ZThn68_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C13__8S21149C2[] = {
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C13D1Ev,_ZTv0_n20_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn152_N9S21149C13D1Ev,_ZThn96_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C13D0Ev,_ZTv0_n20_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn152_N9S21149C13D0Ev,_ZThn96_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C13__8S21149C2[] = {
  ABISELECT(-152,-96),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C13D1Ev,_ZTv0_n20_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C13D0Ev,_ZTv0_n20_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C13D1Ev,_ZTvn12_n20_N9S21149C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C13D0Ev,_ZTvn12_n20_N9S21149C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C13__8S21149C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C13D1Ev,_ZTvn12_n20_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C13D0Ev,_ZTvn12_n20_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S21149C13D1Ev,_ZThn40_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn72_N9S21149C13D0Ev,_ZThn40_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C13__8S21149C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S21149C13D1Ev,_ZTv0_n28_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn216_N9S21149C13D1Ev,_ZThn140_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21149C13D0Ev,_ZTv0_n28_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn216_N9S21149C13D0Ev,_ZThn140_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C17__9S21149C13__8S21149C2[] = {
  ABISELECT(-216,-140),
  ABISELECT(-216,-140),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-216,-140),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21149C13D1Ev,_ZTv0_n28_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21149C13D0Ev,_ZTv0_n28_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N9S21149C13D1Ev,_ZTvn12_n28_N9S21149C13D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S21149C13D0Ev,_ZTvn12_n28_N9S21149C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C189S21149C17__9S21149C13__8S21149C2[] = {
  ABISELECT(-232,-152),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-232,-152),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21149C13D1Ev,_ZTvn12_n28_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21149C13D0Ev,_ZTvn12_n28_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N9S21149C13D1Ev,_ZTvn32_n28_N9S21149C13D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S21149C13D0Ev,_ZTvn32_n28_N9S21149C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S21149C189S21149C17__9S21149C13__8S21149C2[] = {
  ABISELECT(-272,-172),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21149C13D1Ev,_ZTvn32_n28_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21149C13D0Ev,_ZTvn32_n28_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S21149C13D1Ev,_ZThn24_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn40_N9S21149C13D0Ev,_ZThn24_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S21149C13__8S21149C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev),
};
extern void _ZN8S21149C3D1Ev();
extern void _ZN8S21149C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21149C3__8S21149C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C3[0]),
  (VTBL_ENTRY)&_ZN8S21149C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21149C3D1Ev,_ZTv0_n12_N8S21149C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21149C3D1Ev,_ZThn8_N8S21149C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C3D0Ev,_ZTv0_n12_N8S21149C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21149C3D0Ev,_ZThn8_N8S21149C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S21149C3__8S21149C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21149C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C3D1Ev,_ZTv0_n12_N8S21149C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C3D0Ev,_ZTv0_n12_N8S21149C3D0Ev),
};
extern void _ZN8S21149C6D1Ev();
extern void _ZN8S21149C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21149C6__8S21149C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C6[0]),
  (VTBL_ENTRY)&_ZN8S21149C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21149C6D1Ev,_ZThn8_N8S21149C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S21149C6D0Ev,_ZThn8_N8S21149C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21149C6__8S21149C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21149C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev),
};
extern void _ZN9S21149C14D1Ev();
extern void _ZN9S21149C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C14__8S21149C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&_ZN9S21149C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S21149C14D1Ev,_ZThn16_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S21149C14D0Ev,_ZThn16_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C14__8S21149C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S21149C14D1Ev,_ZThn44_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S21149C14D0Ev,_ZThn44_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C14__8S21149C2[] = {
  ABISELECT(-64,-44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C14__8S21149C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C14__8S21149C2[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void _ZN9S21149C15D1Ev();
extern void _ZN9S21149C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C15__8S21149C2[] = {
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&_ZN9S21149C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C15D0Ev,
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__8S21149C2[] = {
  ABISELECT(-96,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C169S21149C15__8S21149C2[] = {
  ABISELECT(96,68),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C15__8S21149C2[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__9S21149C15__8S21149C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C15__8S21149C2[] = {
  ABISELECT(80,56),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void _ZN9S21149C17D1Ev();
extern void _ZN9S21149C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C17__8S21149C2[] = {
  ABISELECT(-216,-140),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&_ZN9S21149C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C17D0Ev,
};
extern void _ZN9S21149C18D1Ev();
extern void _ZN9S21149C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C189S21149C17__8S21149C2[] = {
  ABISELECT(-232,-152),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&_ZN9S21149C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C18D0Ev,
};
extern void _ZN9S21149C14D1Ev();
extern void _ZN9S21149C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C149S21149C189S21149C17__A1__8S21149C2[] = {
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&_ZN9S21149C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C149S21149C189S21149C17__A1__8S21149C2[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C149S21149C189S21149C17__A1__8S21149C2[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C149S21149C189S21149C17__A1__8S21149C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C149S21149C189S21149C17__A1__8S21149C2[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C189S21149C17__8S21149C2[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C189S21149C17__8S21149C2[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C189S21149C17__8S21149C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C189S21149C17__8S21149C2[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C189S21149C17__8S21149C2[] = {
  ABISELECT(232,152),
  ABISELECT(72,40),
  ABISELECT(232,152),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21149C17D1Ev,_ZThn12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C17D0Ev,_ZThn12_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C18__9S21149C17__8S21149C2[] = {
  ABISELECT(-232,-152),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C17D1Ev,_ZThn12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C17D0Ev,_ZThn12_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C17__8S21149C2[] = {
  ABISELECT(96,72),
  ABISELECT(96,72),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C17D1Ev,_ZTv0_n20_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21149C17D0Ev,_ZTv0_n20_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C17__8S21149C2[] = {
  ABISELECT(64,44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C17D1Ev,_ZTv0_n20_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C17D0Ev,_ZTv0_n20_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C17D1Ev,_ZTvn12_n20_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C17D0Ev,_ZTvn12_n20_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C17__8S21149C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C17D1Ev,_ZTvn12_n20_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C17D0Ev,_ZTvn12_n20_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__9S21149C17__8S21149C2[] = {
  ABISELECT(144,100),
  ABISELECT(144,100),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21149C17D1Ev,_ZTv0_n16_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21149C17D0Ev,_ZTv0_n16_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C17__8S21149C2[] = {
  ABISELECT(216,140),
  ABISELECT(72,40),
  ABISELECT(216,140),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C17D1Ev,_ZTv0_n16_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C17D0Ev,_ZTv0_n16_N9S21149C17D0Ev),
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__8S21149C2[] = {
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S21149C16D1Ev,_ZThn40_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn72_N9S21149C16D0Ev,_ZThn40_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C16__A1__8S21149C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
static  VTT_ENTRY vtt_S21149C2[] = {
  {&(_ZTV8S21149C2[14]),  14,101},
  {&(_tg__ZTV8S21149C5__8S21149C2[7]),  7,9},
  {&(_tg__ZTV9S21149C108S21149C5__8S21149C2[4]),  4,6},
  {&(_tg__ZTV8S21149C6__8S21149C5__8S21149C2[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S21149C5__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C13__8S21149C2[10]),  10,13},
  {&(_tg__ZTV9S21149C14__9S21149C13__8S21149C2[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21149C13__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C13__8S21149C2[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C13__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C13__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C17__9S21149C13__8S21149C2[7]),  7,9},
  {&(_tg__ZTV9S21149C189S21149C17__9S21149C13__8S21149C2[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S21149C189S21149C17__9S21149C13__8S21149C2[2]),  2,4},
  {&(_tg__ZTV9S21149C13__8S21149C2[10]),  10,13},
  {&(_tg__ZTV11S20759C5_nt__9S21149C13__8S21149C2[3]),  3,5},
  {&(_ZTV8S21149C2[37]),  37,101},
  {&(_ZTV8S21149C2[42]),  42,101},
  {&(_ZTV8S21149C2[48]),  48,101},
  {&(_ZTV8S21149C2[53]),  53,101},
  {&(_ZTV8S21149C2[26]),  26,101},
  {&(_ZTV8S21149C2[61]),  61,101},
  {&(_ZTV8S21149C2[66]),  66,101},
  {&(_ZTV8S21149C2[73]),  73,101},
  {&(_ZTV8S21149C2[78]),  78,101},
  {&(_ZTV8S21149C2[87]),  87,101},
  {&(_ZTV8S21149C2[95]),  95,101},
  {&(_ZTV8S21149C2[99]),  99,101},
  {&(_ZTV8S21149C2[26]),  26,101},
  {&(_tg__ZTV8S21149C3__8S21149C2[3]),  3,5},
  {&(_tg__ZTV11S20759C5_nt__8S21149C3__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S21149C6__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21149C6__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C14__8S21149C2[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21149C14__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C14__8S21149C2[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C14__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C14__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C15__8S21149C2[4]),  4,6},
  {&(_tg__ZTV9S21149C169S21149C15__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C169S21149C15__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C15__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C16__9S21149C15__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C15__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C17__8S21149C2[6]),  6,8},
  {&(_tg__ZTV9S21149C189S21149C17__8S21149C2[6]),  6,8},
  {&(_tg__ZTV9S21149C149S21149C189S21149C17__A1__8S21149C2[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21149C149S21149C189S21149C17__A1__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C149S21149C189S21149C17__A1__8S21149C2[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C149S21149C189S21149C17__A1__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C149S21149C189S21149C17__A1__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C189S21149C17__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C189S21149C17__8S21149C2[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C189S21149C17__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C189S21149C17__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C16__A1__9S21149C189S21149C17__8S21149C2[4]),  4,6},
  {&(_tg__ZTV9S21149C18__9S21149C17__8S21149C2[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21149C17__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C17__8S21149C2[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C17__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__9S21149C17__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C16__A1__9S21149C17__8S21149C2[4]),  4,6},
  {&(_tg__ZTV9S21149C16__A1__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C16__A1__8S21149C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21149C2[];
extern  VTBL_ENTRY _ZTV8S21149C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C2[];
static VTBL_ENTRY alt_thunk_names185[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C16D0Ev,_ZThn40_N9S21149C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C16D1Ev,_ZThn40_N9S21149C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C14D0Ev,_ZThn44_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C14D1Ev,_ZThn44_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21149C14D0Ev,_ZThn16_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21149C14D1Ev,_ZThn16_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C6D0Ev,_ZThn8_N8S21149C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C6D1Ev,_ZThn8_N8S21149C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C3D0Ev,_ZTv0_n12_N8S21149C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C3D0Ev,_ZThn8_N8S21149C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C3D1Ev,_ZTv0_n12_N8S21149C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C3D1Ev,_ZThn8_N8S21149C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21149C13D0Ev,_ZTv0_n28_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S21149C13D0Ev,_ZThn140_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21149C13D1Ev,_ZTv0_n28_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S21149C13D1Ev,_ZThn140_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C13D0Ev,_ZTv0_n20_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21149C13D0Ev,_ZThn96_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C13D1Ev,_ZTv0_n20_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21149C13D1Ev,_ZThn96_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C13D0Ev,_ZThn24_N9S21149C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C13D0Ev,_ZThn40_N9S21149C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21149C13D0Ev,_ZThn68_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C13D1Ev,_ZThn24_N9S21149C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C13D1Ev,_ZThn40_N9S21149C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21149C13D1Ev,_ZThn68_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21149C13D0Ev,_ZTv0_n24_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21149C13D0Ev,_ZThn52_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21149C13D1Ev,_ZTv0_n24_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21149C13D1Ev,_ZThn52_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C13D0Ev,_ZTv0_n16_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S21149C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C13D1Ev,_ZTv0_n16_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S21149C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C5D0Ev,_ZTv0_n12_N8S21149C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21149C5D0Ev,_ZThn76_N8S21149C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C5D1Ev,_ZTv0_n12_N8S21149C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21149C5D1Ev,_ZThn76_N8S21149C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C5D0Ev,_ZTv0_n16_N8S21149C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21149C5D0Ev,_ZThn68_N8S21149C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C5D1Ev,_ZTv0_n16_N8S21149C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21149C5D1Ev,_ZThn68_N8S21149C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21149C2D0Ev,_ZTv0_n28_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21149C2D0Ev,_ZThn176_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21149C2D1Ev,_ZTv0_n28_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21149C2D1Ev,_ZThn176_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21149C2D0Ev,_ZTv0_n20_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21149C2D0Ev,_ZThn132_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21149C2D1Ev,_ZTv0_n20_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21149C2D1Ev,_ZThn132_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21149C2D0Ev,_ZTv0_n24_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21149C2D0Ev,_ZThn88_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21149C2D1Ev,_ZTv0_n24_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21149C2D1Ev,_ZThn88_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21149C2D0Ev,_ZThn104_N8S21149C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21149C2D0Ev,_ZThn76_N8S21149C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21149C2D0Ev,_ZThn60_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21149C2D1Ev,_ZThn104_N8S21149C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21149C2D1Ev,_ZThn76_N8S21149C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21149C2D1Ev,_ZThn60_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21149C2D0Ev,_ZThn68_N8S21149C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21149C2D0Ev,_ZThn52_N8S21149C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21149C2D0Ev,_ZThn36_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21149C2D1Ev,_ZThn68_N8S21149C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21149C2D1Ev,_ZThn52_N8S21149C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21149C2D1Ev,_ZThn36_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C2 = {  "S21149C2", // class name
  bases_S21149C2, 25,
  &(vtc_S21149C2[0]), // expected_vtbl_contents
  &(vtt_S21149C2[0]), // expected_vtt_contents
  ABISELECT(320,212), // object size
  NSPAIRA(_ZTI8S21149C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21149C2),101, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21149C2),64, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names185,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C1  : virtual S21149C2 , S21149C16 {
  virtual  ~S21149C1(); // _ZN8S21149C1D2Ev
  S21149C1(); // tgen
};
//SIG(1 S21149C1) C1{ VBC2{ VBC3{ VBC4{ vd m Fl} vd Fc[2]} BC5{ VBC6{ VBC7{ vd m FL} vd FC8{ m}} VBC9{ m} BC10{ BC11{ vd m Fi[6]} VBC12{ m} VBC8 Fs} vd Fi} BC13{ VBC14{ VBC11 VBC15{ BC7 VBC11 BC16{ VBC7 vd} FC11} FD} VBC17{ BC7 BC18{ BC19{ m Fp} BC14 BC20{ vd m} VBC16 vd} vd} BC8 VBC4 vd v1} BC7 vd} BC16 vd}


 S21149C1 ::~S21149C1(){ note_dtor("S21149C1", this);}
S21149C1 ::S21149C1(){ note_ctor("S21149C1", this);} // tgen

static void Test_S21149C1()
{
  extern Class_Descriptor cd_S21149C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,55)];
    init_test(&cd_S21149C1, buf);
    S21149C1 *dp, &lv = *(dp=new (buf) S21149C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,216), "sizeof(S21149C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21149C1)");
    check_base_class_offset(lv, (S20759C5_nt*)(S21149C3*), ABISELECT(88,64), "S21149C1");
    check_base_class_offset(lv, (S20759C5_nt*)(S21149C13*)(S21149C2*), ABISELECT(88,64), "S21149C1");
    check_base_class_offset(lv, (S21149C3*)(S21149C2*), ABISELECT(72,56), "S21149C1");
    check_base_class_offset(lv, (S20760C9*)(S21149C6*), ABISELECT(120,80), "S21149C1");
    check_base_class_offset(lv, (S20760C9*)(S21149C16*)(S21149C15*), ABISELECT(120,80), "S21149C1");
    /*is_ambiguous_... S21149C1::S21149C16 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C16*), ABISELECT(120,80), "S21149C1");
    /*is_ambiguous_... S21149C1::S21149C16 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C16*), ABISELECT(120,80), "S21149C1");
    check_base_class_offset(lv, (S21149C6*)(S21149C5*)(S21149C2*), ABISELECT(104,72), "S21149C1");
    check_base_class_offset(lv, (S4228C27*)(S21149C5*)(S21149C2*), 0, "S21149C1");
    check_base_class_offset(lv, (S20760C13*)(S21149C10*)(S21149C5*)(S21149C2*), ABISELECT(8,4), "S21149C1");
    check_base_class_offset(lv, (S4228C23*)(S21149C10*)(S21149C5*)(S21149C2*), 0, "S21149C1");
    check_base_class_offset(lv, (S4228C37*)(S21149C10*)(S21149C5*)(S21149C2*), 0, "S21149C1");
    check_base_class_offset(lv, (S21149C10*)(S21149C5*)(S21149C2*), ABISELECT(8,4), "S21149C1");
    check_base_class_offset(lv, (S21149C5*)(S21149C2*), ABISELECT(8,4), "S21149C1");
    /*is_ambiguous_... S21149C1::S21149C14 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21149C14*), ABISELECT(176,108), "S21149C1");
    check_base_class_offset(lv, (S20760C13*)(S21149C15*), ABISELECT(176,108), "S21149C1");
    check_base_class_offset(lv, (S20760C13*)(S21149C14*)(S21149C18*)(S21149C17*), ABISELECT(176,108), "S21149C1");
    /*is_ambiguous_... S21149C15::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C15*), ABISELECT(208,136), "S21149C1");
    check_base_class_offset(lv, (S21149C16*)(S21149C15*), ABISELECT(224,148), "S21149C1");
    /*is_ambiguous_... S21149C1::S21149C14 */ AMB_check_base_class_offset(lv, (S21149C15*)(S21149C14*), ABISELECT(208,136), "S21149C1");
    check_base_class_offset(lv, (S21149C15*)(S21149C14*)(S21149C18*)(S21149C17*), ABISELECT(208,136), "S21149C1");
    /*is_ambiguous_... S21149C13::S21149C14 */ AMB_check_base_class_offset(lv, (S21149C14*)(S21149C13*)(S21149C2*), ABISELECT(144,92), "S21149C1");
    /*is_ambiguous_... S21149C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C17*), ABISELECT(272,180), "S21149C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21149C18*)(S21149C17*), ABISELECT(320,208), "S21149C1");
    check_base_class_offset(lv, (S21149C14*)(S21149C18*)(S21149C17*), ABISELECT(288,192), "S21149C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S21149C18*)(S21149C17*), ABISELECT(328,212), "S21149C1");
    /*is_ambiguous_... S21149C18::S21149C16 */ AMB_check_base_class_offset(lv, (S21149C16*)(S21149C18*)(S21149C17*), ABISELECT(48,40), "S21149C1");
    check_base_class_offset(lv, (S21149C18*)(S21149C17*), ABISELECT(288,192), "S21149C1");
    check_base_class_offset(lv, (S21149C17*)(S21149C13*)(S21149C2*), ABISELECT(272,180), "S21149C1");
    check_base_class_offset(lv, (S4228C37*)(S21149C13*)(S21149C2*), ABISELECT(48,40), "S21149C1");
    check_base_class_offset(lv, (S21149C13*)(S21149C2*), ABISELECT(48,40), "S21149C1");
    /*is_ambiguous_... S21149C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C2*), ABISELECT(56,44), "S21149C1");
    check_base_class_offset(lv, (S21149C2*), ABISELECT(8,4), "S21149C1");
    /*is_ambiguous_... S21149C1::S21149C16 */ AMB_check_base_class_offset(lv, (S21149C16*), 0, "S21149C1");
    test_class_info(&lv, &cd_S21149C1);
    dp->~S21149C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C1(Test_S21149C1, "S21149C1", ABISELECT(336,216));

#else // __cplusplus

extern void _ZN8S21149C1C1Ev();
extern void _ZN8S21149C1D2Ev();
Name_Map name_map_S21149C1[] = {
  NSPAIR(_ZN8S21149C1C1Ev),
  NSPAIR(_ZN8S21149C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S21149C3;
extern VTBL_ENTRY _ZTI8S21149C3[];
extern  VTBL_ENTRY _ZTV8S21149C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C3[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C6;
extern VTBL_ENTRY _ZTI8S21149C6[];
extern  VTBL_ENTRY _ZTV8S21149C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C6[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21149C10;
extern VTBL_ENTRY _ZTI9S21149C10[];
extern  VTBL_ENTRY _ZTV9S21149C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C10[];
extern Class_Descriptor cd_S21149C5;
extern VTBL_ENTRY _ZTI8S21149C5[];
extern  VTBL_ENTRY _ZTV8S21149C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C5[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C15;
extern VTBL_ENTRY _ZTI9S21149C15[];
extern  VTBL_ENTRY _ZTV9S21149C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C15[];
extern Class_Descriptor cd_S21149C14;
extern VTBL_ENTRY _ZTI9S21149C14[];
extern  VTBL_ENTRY _ZTV9S21149C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C14[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21149C14;
extern VTBL_ENTRY _ZTI9S21149C14[];
extern  VTBL_ENTRY _ZTV9S21149C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C18;
extern VTBL_ENTRY _ZTI9S21149C18[];
extern  VTBL_ENTRY _ZTV9S21149C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C18[];
extern Class_Descriptor cd_S21149C17;
extern VTBL_ENTRY _ZTI9S21149C17[];
extern  VTBL_ENTRY _ZTV9S21149C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C17[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21149C13;
extern VTBL_ENTRY _ZTI9S21149C13[];
extern  VTBL_ENTRY _ZTV9S21149C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C2;
extern VTBL_ENTRY _ZTI8S21149C2[];
extern  VTBL_ENTRY _ZTV8S21149C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C2[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
static Base_Class bases_S21149C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20759C5_nt,    ABISELECT(88,64), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21149C3,    ABISELECT(72,56), //bcp->offset
    52, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(120,80), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21149C6,    ABISELECT(104,72), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20760C13,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S21149C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21149C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(176,108), //bcp->offset
    82, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21149C16,    ABISELECT(224,148), //bcp->offset
    94, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21149C15,    ABISELECT(208,136), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S21149C14,    ABISELECT(144,92), //bcp->offset
    74, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(272,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(320,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21149C14,    ABISELECT(288,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(328,212), //bcp->offset
    116, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21149C16,    ABISELECT(48,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S21149C18,    ABISELECT(288,192), //bcp->offset
    108, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21149C17,    ABISELECT(272,180), //bcp->offset
    99, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(48,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21149C13,    ABISELECT(48,40), //bcp->offset
    35, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(56,44), //bcp->offset
    48, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21149C2,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21149C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21149C1[];
extern void _ZN8S21149C1D1Ev();
extern void _ZN8S21149C1D0Ev();
extern void ABISELECT(_ZTv0_n120_N8S21149C1D1Ev,_ZTv0_n60_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S21149C1D1Ev,_ZThn4_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S21149C1D0Ev,_ZTv0_n60_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S21149C1D0Ev,_ZThn4_N8S21149C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C1D1Ev,_ZTv0_n16_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S21149C1D1Ev,_ZThn40_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C1D0Ev,_ZTv0_n16_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S21149C1D0Ev,_ZThn40_N8S21149C1D0Ev)() __attribute__((weak));
extern void _ZN9S21149C132v1Ev();
extern void ABISELECT(_ZTvn48_n120_N8S21149C1D1Ev,_ZTvn40_n60_N8S21149C1D1Ev)();
extern void ABISELECT(_ZTvn48_n120_N8S21149C1D0Ev,_ZTvn40_n60_N8S21149C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21149C1D1Ev,_ZTv0_n16_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S21149C1D1Ev,_ZThn56_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C1D0Ev,_ZTv0_n16_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S21149C1D0Ev,_ZThn56_N8S21149C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C1D1Ev,_ZTv0_n12_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S21149C1D1Ev,_ZThn64_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C1D0Ev,_ZTv0_n12_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn88_N8S21149C1D0Ev,_ZThn64_N8S21149C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C1D1Ev,_ZTv0_n16_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn104_N8S21149C1D1Ev,_ZThn72_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C1D0Ev,_ZTv0_n16_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn104_N8S21149C1D0Ev,_ZThn72_N8S21149C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C1D1Ev,_ZTv0_n12_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn120_N8S21149C1D1Ev,_ZThn80_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C1D0Ev,_ZTv0_n12_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn120_N8S21149C1D0Ev,_ZThn80_N8S21149C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21149C1D1Ev,_ZTv0_n24_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S21149C1D1Ev,_ZThn92_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21149C1D0Ev,_ZTv0_n24_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S21149C1D0Ev,_ZThn92_N8S21149C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C1D1Ev,_ZTv0_n12_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S21149C1D1Ev,_ZThn108_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C1D0Ev,_ZTv0_n12_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn176_N8S21149C1D0Ev,_ZThn108_N8S21149C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21149C1D1Ev,_ZTv0_n20_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S21149C1D1Ev,_ZThn136_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21149C1D0Ev,_ZTv0_n20_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S21149C1D0Ev,_ZThn136_N8S21149C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21149C1D1Ev,_ZTvn12_n20_N8S21149C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21149C1D0Ev,_ZTvn12_n20_N8S21149C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21149C1D1Ev,_ZTv0_n28_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn272_N8S21149C1D1Ev,_ZThn180_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21149C1D0Ev,_ZTv0_n28_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn272_N8S21149C1D0Ev,_ZThn180_N8S21149C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S21149C1D1Ev,_ZTvn12_n28_N8S21149C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21149C1D0Ev,_ZTvn12_n28_N8S21149C1D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21149C1D1Ev,_ZTvn32_n28_N8S21149C1D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21149C1D0Ev,_ZTvn32_n28_N8S21149C1D0Ev)();
static  VTBL_ENTRY vtc_S21149C1[] = {
  ABISELECT(48,40),
  ABISELECT(272,180),
  ABISELECT(208,136),
  ABISELECT(176,108),
  ABISELECT(144,92),
  0,
  0,
  0,
  ABISELECT(104,72),
  ABISELECT(88,64),
  ABISELECT(72,56),
  ABISELECT(8,4),
  ABISELECT(120,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&_ZN8S21149C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C1D0Ev,
  ABISELECT(40,36),
  ABISELECT(-8,-4),
  ABISELECT(40,36),
  ABISELECT(264,176),
  ABISELECT(200,132),
  ABISELECT(168,104),
  ABISELECT(136,88),
  ABISELECT(80,60),
  ABISELECT(64,52),
  ABISELECT(-8,-4),
  ABISELECT(112,76),
  ABISELECT(96,68),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21149C1D1Ev,_ZTv0_n60_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21149C1D0Ev,_ZTv0_n60_N8S21149C1D0Ev),
  ABISELECT(40,24),
  0,
  ABISELECT(224,140),
  ABISELECT(160,96),
  ABISELECT(128,68),
  ABISELECT(96,52),
  ABISELECT(-48,-40),
  ABISELECT(72,40),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C1D1Ev,_ZTv0_n16_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C1D0Ev,_ZTv0_n16_N8S21149C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21149C132v1Ev,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n120_N8S21149C1D1Ev,_ZTvn40_n60_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n120_N8S21149C1D0Ev,_ZTvn40_n60_N8S21149C1D0Ev),
  ABISELECT(-72,-56),
  ABISELECT(16,8),
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C1D1Ev,_ZTv0_n16_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C1D0Ev,_ZTv0_n16_N8S21149C1D0Ev),
  ABISELECT(-88,-64),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C1D1Ev,_ZTv0_n12_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C1D0Ev,_ZTv0_n12_N8S21149C1D0Ev),
  ABISELECT(-104,-72),
  ABISELECT(16,8),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C1D1Ev,_ZTv0_n16_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C1D0Ev,_ZTv0_n16_N8S21149C1D0Ev),
  ABISELECT(-120,-80),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C1D1Ev,_ZTv0_n12_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C1D0Ev,_ZTv0_n12_N8S21149C1D0Ev),
  ABISELECT(-144,-92),
  ABISELECT(-24,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21149C1D1Ev,_ZTv0_n24_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21149C1D0Ev,_ZTv0_n24_N8S21149C1D0Ev),
  ABISELECT(-176,-108),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C1D1Ev,_ZTv0_n12_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C1D0Ev,_ZTv0_n12_N8S21149C1D0Ev),
  ABISELECT(-208,-136),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21149C1D1Ev,_ZTv0_n20_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21149C1D0Ev,_ZTv0_n20_N8S21149C1D0Ev),
  ABISELECT(-104,-68),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21149C1D1Ev,_ZTvn12_n20_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21149C1D0Ev,_ZTvn12_n20_N8S21149C1D0Ev),
  ABISELECT(-272,-180),
  ABISELECT(-224,-140),
  ABISELECT(-152,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21149C1D1Ev,_ZTv0_n28_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21149C1D0Ev,_ZTv0_n28_N8S21149C1D0Ev),
  ABISELECT(-240,-152),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-288,-192),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21149C1D1Ev,_ZTvn12_n28_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21149C1D0Ev,_ZTvn12_n28_N8S21149C1D0Ev),
  ABISELECT(-328,-212),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21149C1D1Ev,_ZTvn32_n28_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21149C1D0Ev,_ZTvn32_n28_N8S21149C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21149C1[];
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A__8S21149C1[] = {
  ABISELECT(120,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn120_N9S21149C16D1Ev,_ZThn80_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn120_N9S21149C16D0Ev,_ZThn80_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C16__A__8S21149C1[] = {
  ABISELECT(-120,-80),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
extern void _ZN8S21149C2D1Ev();
extern void _ZN8S21149C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21149C2__8S21149C1[] = {
  ABISELECT(40,36),
  ABISELECT(264,176),
  ABISELECT(200,132),
  ABISELECT(168,104),
  ABISELECT(136,88),
  ABISELECT(80,60),
  ABISELECT(64,52),
  ABISELECT(-8,-4),
  ABISELECT(112,76),
  ABISELECT(96,68),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&_ZN8S21149C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C2D0Ev,
};
extern void _ZN8S21149C5D1Ev();
extern void _ZN8S21149C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21149C58S21149C2__8S21149C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(112,76),
  ABISELECT(96,68),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C5[0]),
  (VTBL_ENTRY)&_ZN8S21149C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C5D0Ev,
};
extern void _ZN9S21149C10D1Ev();
extern void _ZN9S21149C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C108S21149C58S21149C2__8S21149C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C10[0]),
  (VTBL_ENTRY)&_ZN9S21149C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21149C5D1Ev,_ZTv0_n16_N8S21149C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21149C5D1Ev,_ZThn68_N8S21149C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C5D0Ev,_ZTv0_n16_N8S21149C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21149C5D0Ev,_ZThn68_N8S21149C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21149C6__8S21149C58S21149C2__8S21149C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(16,8),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S21149C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C5D1Ev,_ZTv0_n16_N8S21149C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C5D0Ev,_ZTv0_n16_N8S21149C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21149C5D1Ev,_ZTv0_n12_N8S21149C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S21149C5D1Ev,_ZThn76_N8S21149C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C5D0Ev,_ZTv0_n12_N8S21149C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S21149C5D0Ev,_ZThn76_N8S21149C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21149C58S21149C2__8S21149C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S21149C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C5D1Ev,_ZTv0_n12_N8S21149C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C5D0Ev,_ZTv0_n12_N8S21149C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21149C13D1Ev,_ZTv0_n16_N9S21149C13D1Ev)();
extern void _ZN9S21149C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21149C13D0Ev,_ZTv0_n16_N9S21149C13D0Ev)();
extern void _ZN9S21149C13D0Ev() __attribute__((weak));
extern void _ZN9S21149C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(40,24),
  0,
  ABISELECT(224,140),
  ABISELECT(160,96),
  ABISELECT(128,68),
  ABISELECT(96,52),
  0,
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C13D1Ev,_ZTv0_n16_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C13D0Ev,_ZTv0_n16_N9S21149C13D0Ev),
  (VTBL_ENTRY)&_ZN9S21149C132v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S21149C13D1Ev,_ZTv0_n24_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S21149C13D1Ev,_ZThn52_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21149C13D0Ev,_ZTv0_n24_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S21149C13D0Ev,_ZThn52_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C14__9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-24,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21149C13D1Ev,_ZTv0_n24_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21149C13D0Ev,_ZTv0_n24_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn128_N9S21149C13D1Ev,_ZThn68_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn128_N9S21149C13D0Ev,_ZThn68_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C13D1Ev,_ZTv0_n20_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn160_N9S21149C13D1Ev,_ZThn96_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C13D0Ev,_ZTv0_n20_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn160_N9S21149C13D0Ev,_ZThn96_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(-160,-96),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C13D1Ev,_ZTv0_n20_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C13D0Ev,_ZTv0_n20_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C13D1Ev,_ZTvn12_n20_N9S21149C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C13D0Ev,_ZTvn12_n20_N9S21149C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C13D1Ev,_ZTvn12_n20_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C13D0Ev,_ZTvn12_n20_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S21149C13D1Ev,_ZThn40_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn72_N9S21149C13D0Ev,_ZThn40_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S21149C13D1Ev,_ZTv0_n28_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn224_N9S21149C13D1Ev,_ZThn140_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21149C13D0Ev,_ZTv0_n28_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn224_N9S21149C13D0Ev,_ZThn140_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C17__9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  ABISELECT(-152,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21149C13D1Ev,_ZTv0_n28_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21149C13D0Ev,_ZTv0_n28_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N9S21149C13D1Ev,_ZTvn12_n28_N9S21149C13D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S21149C13D0Ev,_ZTvn12_n28_N9S21149C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C189S21149C17__9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-240,-152),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21149C13D1Ev,_ZTvn12_n28_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21149C13D0Ev,_ZTvn12_n28_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N9S21149C13D1Ev,_ZTvn32_n28_N9S21149C13D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S21149C13D0Ev,_ZTvn32_n28_N9S21149C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S21149C189S21149C17__9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(-280,-172),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21149C13D1Ev,_ZTvn32_n28_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21149C13D0Ev,_ZTvn32_n28_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S21149C13D1Ev,_ZThn24_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn40_N9S21149C13D0Ev,_ZThn24_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21149C2D1Ev,_ZThn52_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21149C2D0Ev,_ZThn52_N8S21149C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21149C3__8S21149C2__8S21149C1[] = {
  ABISELECT(-64,-52),
  ABISELECT(16,8),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21149C2D1Ev,_ZThn60_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21149C2D0Ev,_ZThn60_N8S21149C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S21149C2__8S21149C1[] = {
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S21149C2D1Ev,_ZThn68_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S21149C2D0Ev,_ZThn68_N8S21149C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21149C6__8S21149C2__8S21149C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(16,8),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21149C2D1Ev,_ZThn76_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21149C2D0Ev,_ZThn76_N8S21149C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21149C2__8S21149C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn40_N8S21149C2D1Ev,_ZThn36_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn40_N8S21149C2D0Ev,_ZThn36_N8S21149C2D0Ev)() __attribute__((weak));
extern void _ZN9S21149C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C13__8S21149C2__8S21149C1[] = {
  ABISELECT(40,24),
  0,
  ABISELECT(224,140),
  ABISELECT(160,96),
  ABISELECT(128,68),
  ABISELECT(96,52),
  ABISELECT(-40,-36),
  ABISELECT(72,40),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21149C132v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S21149C2D1Ev,_ZTv0_n24_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S21149C2D1Ev,_ZThn88_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21149C2D0Ev,_ZTv0_n24_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S21149C2D0Ev,_ZThn88_N8S21149C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C14__8S21149C2__8S21149C1[] = {
  ABISELECT(-136,-88),
  ABISELECT(-24,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21149C2D1Ev,_ZTv0_n24_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21149C2D0Ev,_ZTv0_n24_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn168_N8S21149C2D1Ev,_ZThn104_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn168_N8S21149C2D0Ev,_ZThn104_N8S21149C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__A1__8S21149C2__8S21149C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21149C2D1Ev,_ZTv0_n20_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn200_N8S21149C2D1Ev,_ZThn132_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21149C2D0Ev,_ZTv0_n20_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn200_N8S21149C2D0Ev,_ZThn132_N8S21149C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C15__8S21149C2__8S21149C1[] = {
  ABISELECT(-200,-132),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21149C2D1Ev,_ZTv0_n20_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21149C2D0Ev,_ZTv0_n20_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21149C2D1Ev,_ZTvn12_n20_N8S21149C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21149C2D0Ev,_ZTvn12_n20_N8S21149C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__8S21149C2__8S21149C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-216,-144),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21149C2D1Ev,_ZTvn12_n20_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21149C2D0Ev,_ZTvn12_n20_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S21149C2D1Ev,_ZTv0_n28_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn264_N8S21149C2D1Ev,_ZThn176_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21149C2D0Ev,_ZTv0_n28_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn264_N8S21149C2D0Ev,_ZThn176_N8S21149C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C17__8S21149C2__8S21149C1[] = {
  ABISELECT(-264,-176),
  ABISELECT(-224,-140),
  ABISELECT(-152,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-264,-176),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21149C2D1Ev,_ZTv0_n28_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21149C2D0Ev,_ZTv0_n28_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N8S21149C2D1Ev,_ZTvn12_n28_N8S21149C2D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21149C2D0Ev,_ZTvn12_n28_N8S21149C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C189S21149C17__8S21149C2__8S21149C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-280,-188),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21149C2D1Ev,_ZTvn12_n28_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21149C2D0Ev,_ZTvn12_n28_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N8S21149C2D1Ev,_ZTvn32_n28_N8S21149C2D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21149C2D0Ev,_ZTvn32_n28_N8S21149C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S21149C189S21149C17__8S21149C2__8S21149C1[] = {
  ABISELECT(-320,-208),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21149C2D1Ev,_ZTvn32_n28_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21149C2D0Ev,_ZTvn32_n28_N8S21149C2D0Ev),
};
extern void _ZN8S21149C3D1Ev();
extern void _ZN8S21149C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21149C3__8S21149C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C3[0]),
  (VTBL_ENTRY)&_ZN8S21149C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21149C3D1Ev,_ZTv0_n12_N8S21149C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21149C3D1Ev,_ZThn8_N8S21149C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C3D0Ev,_ZTv0_n12_N8S21149C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21149C3D0Ev,_ZThn8_N8S21149C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S21149C3__8S21149C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21149C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C3D1Ev,_ZTv0_n12_N8S21149C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C3D0Ev,_ZTv0_n12_N8S21149C3D0Ev),
};
extern void _ZN8S21149C6D1Ev();
extern void _ZN8S21149C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21149C6__8S21149C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C6[0]),
  (VTBL_ENTRY)&_ZN8S21149C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21149C6D1Ev,_ZThn8_N8S21149C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S21149C6D0Ev,_ZThn8_N8S21149C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21149C6__8S21149C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21149C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev),
};
extern void _ZN9S21149C14D1Ev();
extern void _ZN9S21149C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C14__8S21149C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&_ZN9S21149C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S21149C14D1Ev,_ZThn16_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S21149C14D0Ev,_ZThn16_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C14__8S21149C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S21149C14D1Ev,_ZThn44_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S21149C14D0Ev,_ZThn44_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C14__8S21149C1[] = {
  ABISELECT(-64,-44),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C14__8S21149C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C14__8S21149C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void _ZN9S21149C15D1Ev();
extern void _ZN9S21149C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C15__8S21149C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&_ZN9S21149C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C15D0Ev,
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__8S21149C1[] = {
  ABISELECT(-104,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C169S21149C15__8S21149C1[] = {
  ABISELECT(104,68),
  ABISELECT(104,68),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C15__8S21149C1[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__9S21149C15__8S21149C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C15__8S21149C1[] = {
  ABISELECT(88,56),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void _ZN9S21149C17D1Ev();
extern void _ZN9S21149C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C17__8S21149C1[] = {
  ABISELECT(-224,-140),
  ABISELECT(-152,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&_ZN9S21149C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C17D0Ev,
};
extern void _ZN9S21149C18D1Ev();
extern void _ZN9S21149C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C189S21149C17__8S21149C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&_ZN9S21149C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C18D0Ev,
};
extern void _ZN9S21149C14D1Ev();
extern void _ZN9S21149C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C149S21149C189S21149C17__A1__8S21149C1[] = {
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&_ZN9S21149C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C149S21149C189S21149C17__A1__8S21149C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C149S21149C189S21149C17__A1__8S21149C1[] = {
  ABISELECT(80,56),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C149S21149C189S21149C17__A1__8S21149C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C149S21149C189S21149C17__A1__8S21149C1[] = {
  ABISELECT(168,112),
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C189S21149C17__8S21149C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C189S21149C17__8S21149C1[] = {
  ABISELECT(80,56),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C189S21149C17__8S21149C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C189S21149C17__8S21149C1[] = {
  ABISELECT(168,112),
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C189S21149C17__8S21149C1[] = {
  ABISELECT(240,152),
  ABISELECT(72,40),
  ABISELECT(240,152),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21149C17D1Ev,_ZThn12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C17D0Ev,_ZThn12_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C18__9S21149C17__8S21149C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C17D1Ev,_ZThn12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C17D0Ev,_ZThn12_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C17__8S21149C1[] = {
  ABISELECT(96,72),
  ABISELECT(96,72),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C17D1Ev,_ZTv0_n20_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21149C17D0Ev,_ZTv0_n20_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C17__8S21149C1[] = {
  ABISELECT(64,44),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C17D1Ev,_ZTv0_n20_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C17D0Ev,_ZTv0_n20_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C17D1Ev,_ZTvn12_n20_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C17D0Ev,_ZTvn12_n20_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C17__8S21149C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C17D1Ev,_ZTvn12_n20_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C17D0Ev,_ZTvn12_n20_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__9S21149C17__8S21149C1[] = {
  ABISELECT(152,100),
  ABISELECT(152,100),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21149C17D1Ev,_ZTv0_n16_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21149C17D0Ev,_ZTv0_n16_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C17__8S21149C1[] = {
  ABISELECT(224,140),
  ABISELECT(72,40),
  ABISELECT(224,140),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C17D1Ev,_ZTv0_n16_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C17D0Ev,_ZTv0_n16_N9S21149C17D0Ev),
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__8S21149C1[] = {
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S21149C16D1Ev,_ZThn40_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn72_N9S21149C16D0Ev,_ZThn40_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C16__A1__8S21149C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
static  VTT_ENTRY vtt_S21149C1[] = {
  {&(_ZTV8S21149C1[15]),  15,120},
  {&(_tg__ZTV9S21149C16__A__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C16__A__8S21149C1[3]),  3,5},
  {&(_ZTV8S21149C1[33]),  33,120},
  {&(_ZTV8S21149C1[56]),  56,120},
  {&(_ZTV8S21149C1[61]),  61,120},
  {&(_ZTV8S21149C1[67]),  67,120},
  {&(_ZTV8S21149C1[72]),  72,120},
  {&(_ZTV8S21149C1[45]),  45,120},
  {&(_ZTV8S21149C1[80]),  80,120},
  {&(_ZTV8S21149C1[85]),  85,120},
  {&(_ZTV8S21149C1[92]),  92,120},
  {&(_ZTV8S21149C1[97]),  97,120},
  {&(_ZTV8S21149C1[106]),  106,120},
  {&(_ZTV8S21149C1[114]),  114,120},
  {&(_ZTV8S21149C1[118]),  118,120},
  {&(_ZTV8S21149C1[45]),  45,120},
  {&(_ZTV8S21149C1[50]),  50,120},
  {&(_tg__ZTV8S21149C2__8S21149C1[14]),  14,16},
  {&(_tg__ZTV8S21149C58S21149C2__8S21149C1[7]),  7,9},
  {&(_tg__ZTV9S21149C108S21149C58S21149C2__8S21149C1[4]),  4,6},
  {&(_tg__ZTV8S21149C6__8S21149C58S21149C2__8S21149C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S21149C58S21149C2__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C138S21149C2__8S21149C1[10]),  10,13},
  {&(_tg__ZTV9S21149C14__9S21149C138S21149C2__8S21149C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21149C138S21149C2__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C138S21149C2__8S21149C1[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C138S21149C2__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C138S21149C2__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C17__9S21149C138S21149C2__8S21149C1[7]),  7,9},
  {&(_tg__ZTV9S21149C189S21149C17__9S21149C138S21149C2__8S21149C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S21149C189S21149C17__9S21149C138S21149C2__8S21149C1[2]),  2,4},
  {&(_tg__ZTV9S21149C138S21149C2__8S21149C1[10]),  10,13},
  {&(_tg__ZTV11S20759C5_nt__9S21149C138S21149C2__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S21149C3__8S21149C2__8S21149C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__8S21149C2__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S21149C6__8S21149C2__8S21149C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S21149C2__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C13__8S21149C2__8S21149C1[10]),  10,13},
  {&(_tg__ZTV9S21149C14__8S21149C2__8S21149C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__A1__8S21149C2__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C15__8S21149C2__8S21149C1[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__8S21149C2__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C17__8S21149C2__8S21149C1[7]),  7,9},
  {&(_tg__ZTV9S21149C189S21149C17__8S21149C2__8S21149C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S21149C189S21149C17__8S21149C2__8S21149C1[2]),  2,4},
  {&(_tg__ZTV9S21149C13__8S21149C2__8S21149C1[10]),  10,13},
  {&(_tg__ZTV8S21149C3__8S21149C1[3]),  3,5},
  {&(_tg__ZTV11S20759C5_nt__8S21149C3__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S21149C6__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21149C6__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C14__8S21149C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21149C14__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C14__8S21149C1[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C14__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C14__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C15__8S21149C1[4]),  4,6},
  {&(_tg__ZTV9S21149C169S21149C15__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C169S21149C15__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C15__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C16__9S21149C15__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C15__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C17__8S21149C1[6]),  6,8},
  {&(_tg__ZTV9S21149C189S21149C17__8S21149C1[6]),  6,8},
  {&(_tg__ZTV9S21149C149S21149C189S21149C17__A1__8S21149C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21149C149S21149C189S21149C17__A1__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C149S21149C189S21149C17__A1__8S21149C1[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C149S21149C189S21149C17__A1__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C149S21149C189S21149C17__A1__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C189S21149C17__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C189S21149C17__8S21149C1[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C189S21149C17__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C189S21149C17__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C16__A1__9S21149C189S21149C17__8S21149C1[4]),  4,6},
  {&(_tg__ZTV9S21149C18__9S21149C17__8S21149C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21149C17__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C17__8S21149C1[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C17__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__9S21149C17__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C16__A1__9S21149C17__8S21149C1[4]),  4,6},
  {&(_tg__ZTV9S21149C16__A1__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C16__A1__8S21149C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21149C1[];
extern  VTBL_ENTRY _ZTV8S21149C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C1[];
static VTBL_ENTRY alt_thunk_names186[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C14D0Ev,_ZThn44_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C14D1Ev,_ZThn44_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21149C14D0Ev,_ZThn16_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21149C14D1Ev,_ZThn16_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C6D0Ev,_ZThn8_N8S21149C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C6D1Ev,_ZThn8_N8S21149C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C3D0Ev,_ZTv0_n12_N8S21149C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C3D0Ev,_ZThn8_N8S21149C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C3D1Ev,_ZTv0_n12_N8S21149C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C3D1Ev,_ZThn8_N8S21149C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21149C2D0Ev,_ZTv0_n28_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S21149C2D0Ev,_ZThn176_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21149C2D1Ev,_ZTv0_n28_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S21149C2D1Ev,_ZThn176_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21149C2D0Ev,_ZTv0_n20_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21149C2D0Ev,_ZThn132_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21149C2D1Ev,_ZTv0_n20_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21149C2D1Ev,_ZThn132_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21149C2D0Ev,_ZTv0_n24_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21149C2D0Ev,_ZThn88_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21149C2D1Ev,_ZTv0_n24_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21149C2D1Ev,_ZThn88_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21149C2D0Ev,_ZThn104_N8S21149C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21149C2D0Ev,_ZThn76_N8S21149C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21149C2D0Ev,_ZThn60_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21149C2D1Ev,_ZThn104_N8S21149C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21149C2D1Ev,_ZThn76_N8S21149C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21149C2D1Ev,_ZThn60_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21149C2D0Ev,_ZThn36_N8S21149C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21149C2D0Ev,_ZThn68_N8S21149C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21149C2D0Ev,_ZThn52_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21149C2D1Ev,_ZThn36_N8S21149C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21149C2D1Ev,_ZThn68_N8S21149C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21149C2D1Ev,_ZThn52_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21149C13D0Ev,_ZTv0_n28_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21149C13D0Ev,_ZThn140_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21149C13D1Ev,_ZTv0_n28_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21149C13D1Ev,_ZThn140_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C13D0Ev,_ZTv0_n20_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21149C13D0Ev,_ZThn96_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C13D1Ev,_ZTv0_n20_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21149C13D1Ev,_ZThn96_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C13D0Ev,_ZThn24_N9S21149C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C13D0Ev,_ZThn40_N9S21149C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21149C13D0Ev,_ZThn68_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C13D1Ev,_ZThn24_N9S21149C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C13D1Ev,_ZThn40_N9S21149C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21149C13D1Ev,_ZThn68_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21149C13D0Ev,_ZTv0_n24_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21149C13D0Ev,_ZThn52_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21149C13D1Ev,_ZTv0_n24_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21149C13D1Ev,_ZThn52_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C13D0Ev,_ZTv0_n16_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S21149C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C13D1Ev,_ZTv0_n16_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S21149C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C5D0Ev,_ZTv0_n12_N8S21149C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21149C5D0Ev,_ZThn76_N8S21149C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C5D1Ev,_ZTv0_n12_N8S21149C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21149C5D1Ev,_ZThn76_N8S21149C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C5D0Ev,_ZTv0_n16_N8S21149C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21149C5D0Ev,_ZThn68_N8S21149C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C5D1Ev,_ZTv0_n16_N8S21149C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21149C5D1Ev,_ZThn68_N8S21149C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C16D0Ev,_ZThn40_N9S21149C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21149C16D0Ev,_ZThn80_N9S21149C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C16D1Ev,_ZThn40_N9S21149C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21149C16D1Ev,_ZThn80_N9S21149C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21149C1D0Ev,_ZTv0_n28_N8S21149C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21149C1D0Ev,_ZThn180_N8S21149C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21149C1D1Ev,_ZTv0_n28_N8S21149C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21149C1D1Ev,_ZThn180_N8S21149C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21149C1D0Ev,_ZTv0_n20_N8S21149C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21149C1D0Ev,_ZThn136_N8S21149C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21149C1D1Ev,_ZTv0_n20_N8S21149C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21149C1D1Ev,_ZThn136_N8S21149C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21149C1D0Ev,_ZTv0_n24_N8S21149C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21149C1D0Ev,_ZThn92_N8S21149C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21149C1D1Ev,_ZTv0_n24_N8S21149C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21149C1D1Ev,_ZThn92_N8S21149C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C1D0Ev,_ZTv0_n12_N8S21149C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21149C1D0Ev,_ZThn108_N8S21149C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21149C1D0Ev,_ZThn80_N8S21149C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21149C1D0Ev,_ZThn64_N8S21149C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C1D1Ev,_ZTv0_n12_N8S21149C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21149C1D1Ev,_ZThn108_N8S21149C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21149C1D1Ev,_ZThn80_N8S21149C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21149C1D1Ev,_ZThn64_N8S21149C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C1D0Ev,_ZTv0_n16_N8S21149C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21149C1D0Ev,_ZThn72_N8S21149C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21149C1D0Ev,_ZThn56_N8S21149C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21149C1D0Ev,_ZThn40_N8S21149C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C1D1Ev,_ZTv0_n16_N8S21149C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21149C1D1Ev,_ZThn72_N8S21149C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21149C1D1Ev,_ZThn56_N8S21149C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21149C1D1Ev,_ZThn40_N8S21149C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21149C1D0Ev,_ZTv0_n60_N8S21149C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21149C1D0Ev,_ZThn4_N8S21149C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21149C1D1Ev,_ZTv0_n60_N8S21149C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21149C1D1Ev,_ZThn4_N8S21149C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C1 = {  "S21149C1", // class name
  bases_S21149C1, 27,
  &(vtc_S21149C1[0]), // expected_vtbl_contents
  &(vtt_S21149C1[0]), // expected_vtt_contents
  ABISELECT(336,216), // object size
  NSPAIRA(_ZTI8S21149C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21149C1),120, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21149C1),82, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names186,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7863C5  : virtual S19676C9 {
  virtual  ~S7863C5(); // _ZN7S7863C5D2Ev
  S7863C5(); // tgen
};
//SIG(-1 S7863C5) C1{ VBC2{ vd m Fp Fi Fc FD} vd}


 S7863C5 ::~S7863C5(){ note_dtor("S7863C5", this);}
S7863C5 ::S7863C5(){ note_ctor("S7863C5", this);} // tgen

static void Test_S7863C5()
{
  extern Class_Descriptor cd_S7863C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S7863C5, buf);
    S7863C5 *dp, &lv = *(dp=new (buf) S7863C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S7863C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7863C5)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(16,4), "S7863C5");
    test_class_info(&lv, &cd_S7863C5);
    dp->~S7863C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7863C5(Test_S7863C5, "S7863C5", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S7863C5C1Ev();
extern void _ZN7S7863C5D2Ev();
Name_Map name_map_S7863C5[] = {
  NSPAIR(_ZN7S7863C5C1Ev),
  NSPAIR(_ZN7S7863C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
static Base_Class bases_S7863C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7863C5[];
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7863C5D1Ev,_ZThn4_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7863C5D0Ev,_ZThn4_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7863C5[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern VTBL_ENTRY _ZTV7S7863C5[];
static  VTT_ENTRY vtt_S7863C5[] = {
  {&(_ZTV7S7863C5[3]),  3,10},
  {&(_ZTV7S7863C5[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
static VTBL_ENTRY alt_thunk_names187[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7863C5D0Ev,_ZThn4_N7S7863C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7863C5D1Ev,_ZThn4_N7S7863C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7863C5 = {  "S7863C5", // class name
  bases_S7863C5, 1,
  &(vtc_S7863C5[0]), // expected_vtbl_contents
  &(vtt_S7863C5[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S7863C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7863C5),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7863C5),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names187,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7863C3  : virtual S19676C9 , S7863C5 {
  void *s7863c3f0[10];
  int s7863c3f1;
  __tsi64 s7863c3f2;
  ~S7863C3(); // tgen
  S7863C3(); // tgen
};
//SIG(-1 S7863C3) C1{ VBC2{ vd m Fp Fi Fc FD} BC3{ VBC2 vd} Fp[10] Fi FL}


S7863C3 ::~S7863C3(){ note_dtor("S7863C3", this);} // tgen
S7863C3 ::S7863C3(){ note_ctor("S7863C3", this);} // tgen

static void Test_S7863C3()
{
  extern Class_Descriptor cd_S7863C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,22)];
    init_test(&cd_S7863C3, buf);
    S7863C3 *dp, &lv = *(dp=new (buf) S7863C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,84), "sizeof(S7863C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7863C3)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(112,56), "S7863C3");
    check_base_class_offset(lv, (S19676C9*)(S7863C5*), ABISELECT(112,56), "S7863C3");
    check_base_class_offset(lv, (S7863C5*), 0, "S7863C3");
    check_field_offset(lv, s7863c3f0, ABISELECT(8,4), "S7863C3.s7863c3f0");
    check_field_offset(lv, s7863c3f1, ABISELECT(88,44), "S7863C3.s7863c3f1");
    check_field_offset(lv, s7863c3f2, ABISELECT(96,48), "S7863C3.s7863c3f2");
    test_class_info(&lv, &cd_S7863C3);
    dp->~S7863C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7863C3(Test_S7863C3, "S7863C3", ABISELECT(160,84));

#else // __cplusplus

extern void _ZN7S7863C3C1Ev();
extern void _ZN7S7863C3D1Ev();
Name_Map name_map_S7863C3[] = {
  NSPAIR(_ZN7S7863C3C1Ev),
  NSPAIR(_ZN7S7863C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
static Base_Class bases_S7863C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(112,56), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7863C3[];
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZThn112_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
extern void ABISELECT(_ZThn112_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7863C3[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S7863C3[];
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C3[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C5__7S7863C3[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
static  VTT_ENTRY vtt_S7863C3[] = {
  {&(_ZTV7S7863C3[3]),  3,10},
  {&(_tg__ZTV7S7863C5__7S7863C3[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C5__7S7863C3[3]),  3,5},
  {&(_ZTV7S7863C3[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
static VTBL_ENTRY alt_thunk_names188[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7863C3 = {  "S7863C3", // class name
  bases_S7863C3, 2,
  &(vtc_S7863C3[0]), // expected_vtbl_contents
  &(vtt_S7863C3[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI7S7863C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7863C3),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7863C3),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names188,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7863C7  : virtual S7863C3 , S7863C5 {
  int s7863c7f0;
  virtual  ~S7863C7(); // _ZN7S7863C7D2Ev
  S7863C7(); // tgen
};
//SIG(-1 S7863C7) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} BC4 vd Fi}


 S7863C7 ::~S7863C7(){ note_dtor("S7863C7", this);}
S7863C7 ::S7863C7(){ note_ctor("S7863C7", this);} // tgen

static void Test_S7863C7()
{
  extern Class_Descriptor cd_S7863C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,24)];
    init_test(&cd_S7863C7, buf);
    S7863C7 *dp, &lv = *(dp=new (buf) S7863C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S7863C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7863C7)");
    check_base_class_offset(lv, (S19676C9*)(S7863C3*), ABISELECT(128,64), "S7863C7");
    check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*), ABISELECT(128,64), "S7863C7");
    /*is_ambiguous_... S7863C7::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*), ABISELECT(128,64), "S7863C7");
    check_base_class_offset(lv, (S7863C5*)(S7863C3*), ABISELECT(16,8), "S7863C7");
    check_base_class_offset(lv, (S7863C3*), ABISELECT(16,8), "S7863C7");
    /*is_ambiguous_... S7863C7::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*), 0, "S7863C7");
    check_field_offset(lv, s7863c7f0, ABISELECT(8,4), "S7863C7.s7863c7f0");
    test_class_info(&lv, &cd_S7863C7);
    dp->~S7863C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7863C7(Test_S7863C7, "S7863C7", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN7S7863C7C1Ev();
extern void _ZN7S7863C7D2Ev();
Name_Map name_map_S7863C7[] = {
  NSPAIR(_ZN7S7863C7C1Ev),
  NSPAIR(_ZN7S7863C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
static Base_Class bases_S7863C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(128,64), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7863C3,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7863C7[];
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S7863C7D1Ev,_ZThn8_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn16_N7S7863C7D0Ev,_ZThn8_N7S7863C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn128_N7S7863C7D1Ev,_ZThn64_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn128_N7S7863C7D0Ev,_ZThn64_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7863C7[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern VTBL_ENTRY _ZTV7S7863C7[];
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C7[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn128_N7S7863C5D1Ev,_ZThn64_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn128_N7S7863C5D0Ev,_ZThn64_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C5__A1__7S7863C7[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C7[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C3__7S7863C7[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C3__7S7863C7[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZThn112_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
extern void ABISELECT(_ZThn112_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C3__7S7863C7[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
static  VTT_ENTRY vtt_S7863C7[] = {
  {&(_ZTV7S7863C7[4]),  4,17},
  {&(_tg__ZTV7S7863C5__A1__7S7863C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C5__A1__7S7863C7[3]),  3,5},
  {&(_ZTV7S7863C7[10]),  10,17},
  {&(_ZTV7S7863C7[15]),  15,17},
  {&(_tg__ZTV7S7863C3__7S7863C7[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C3__7S7863C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C3__7S7863C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C3__7S7863C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
static VTBL_ENTRY alt_thunk_names189[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7863C5D0Ev,_ZThn64_N7S7863C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7863C5D1Ev,_ZThn64_N7S7863C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7863C7D0Ev,_ZThn64_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7863C7D1Ev,_ZThn64_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7863C7D0Ev,_ZThn8_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7863C7D1Ev,_ZThn8_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7863C7 = {  "S7863C7", // class name
  bases_S7863C7, 4,
  &(vtc_S7863C7[0]), // expected_vtbl_contents
  &(vtt_S7863C7[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI7S7863C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7863C7),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7863C7),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names189,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7863C9  : S19676C9 , virtual S7863C5 , virtual S7863C3 , S7863C7 {
  int s7863c9f0;
  virtual  ~S7863C9(); // _ZN7S7863C9D2Ev
  S7863C9(); // tgen
};
//SIG(-1 S7863C9) C1{ BC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 vd} VBC4{ VBC2 BC3 Fp[10] Fi FL} BC5{ VBC4 BC3 vd Fi} vd Fi}


 S7863C9 ::~S7863C9(){ note_dtor("S7863C9", this);}
S7863C9 ::S7863C9(){ note_ctor("S7863C9", this);} // tgen

static void Test_S7863C9()
{
  extern Class_Descriptor cd_S7863C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,33)];
    init_test(&cd_S7863C9, buf);
    S7863C9 *dp, &lv = *(dp=new (buf) S7863C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,128), "sizeof(S7863C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7863C9)");
    /*is_ambiguous_... S7863C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), 0, "S7863C9");
    /*is_ambiguous_... S7863C9::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*), ABISELECT(80,44), "S7863C9");
    check_base_class_offset(lv, (S19676C9*)(S7863C3*), ABISELECT(80,44), "S7863C9");
    check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*), ABISELECT(80,44), "S7863C9");
    /*is_ambiguous_... S7863C7::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*), ABISELECT(80,44), "S7863C9");
    /*is_ambiguous_... S7863C9::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*), ABISELECT(64,40), "S7863C9");
    check_base_class_offset(lv, (S7863C5*)(S7863C3*), ABISELECT(128,72), "S7863C9");
    check_base_class_offset(lv, (S7863C3*), ABISELECT(128,72), "S7863C9");
    check_base_class_offset(lv, (S7863C3*)(S7863C7*), ABISELECT(128,72), "S7863C9");
    /*is_ambiguous_... S7863C7::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*), ABISELECT(48,28), "S7863C9");
    check_base_class_offset(lv, (S7863C7*), ABISELECT(48,28), "S7863C9");
    check_field_offset(lv, s7863c9f0, ABISELECT(60,36), "S7863C9.s7863c9f0");
    test_class_info(&lv, &cd_S7863C9);
    dp->~S7863C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7863C9(Test_S7863C9, "S7863C9", ABISELECT(240,128));

#else // __cplusplus

extern void _ZN7S7863C9C1Ev();
extern void _ZN7S7863C9D2Ev();
Name_Map name_map_S7863C9[] = {
  NSPAIR(_ZN7S7863C9C1Ev),
  NSPAIR(_ZN7S7863C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
static Base_Class bases_S7863C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(80,44), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(64,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7863C3,    ABISELECT(128,72), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(48,28), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7863C9[];
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn64_N7S7863C9D1Ev,_ZThn40_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn64_N7S7863C9D0Ev,_ZThn40_N7S7863C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn80_N7S7863C9D1Ev,_ZThn44_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn80_N7S7863C9D0Ev,_ZThn44_N7S7863C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn128_N7S7863C9D1Ev,_ZThn72_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn128_N7S7863C9D0Ev,_ZThn72_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7863C9[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(16,4),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S7863C9[];
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C9[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C7__A2__7S7863C9[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7863C5D1Ev,_ZThn16_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7863C5D0Ev,_ZThn16_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C7__A2__7S7863C9[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S7863C7D1Ev,_ZThn44_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S7863C7D0Ev,_ZThn44_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C7__7S7863C9[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn32_N7S7863C7D1Ev,_ZThn16_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn32_N7S7863C7D0Ev,_ZThn16_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C7__7S7863C9[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C9[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7863C5D1Ev,_ZThn4_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7863C5D0Ev,_ZThn4_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C5__7S7863C9[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C9[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C3__A1__7S7863C9[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C3__A1__7S7863C9[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C3__7S7863C9[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
static  VTT_ENTRY vtt_S7863C9[] = {
  {&(_ZTV7S7863C9[5]),  5,30},
  {&(_tg__ZTV7S7863C7__7S7863C9[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C7__A2__7S7863C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C7__A2__7S7863C9[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C7__7S7863C9[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C7__7S7863C9[3]),  3,5},
  {&(_ZTV7S7863C9[17]),  17,30},
  {&(_ZTV7S7863C9[22]),  22,30},
  {&(_ZTV7S7863C9[28]),  28,30},
  {&(_ZTV7S7863C9[11]),  11,30},
  {&(_tg__ZTV7S7863C5__7S7863C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C5__7S7863C9[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C9[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C3__A1__7S7863C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C3__A1__7S7863C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C3__7S7863C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
static VTBL_ENTRY alt_thunk_names190[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7863C7D0Ev,_ZThn16_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7863C7D1Ev,_ZThn16_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7863C7D0Ev,_ZThn44_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7863C7D1Ev,_ZThn44_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7863C5D0Ev,_ZThn4_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7863C5D0Ev,_ZThn16_N7S7863C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7863C5D1Ev,_ZThn4_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7863C5D1Ev,_ZThn16_N7S7863C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7863C9D0Ev,_ZThn44_N7S7863C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7863C9D1Ev,_ZThn44_N7S7863C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7863C9D0Ev,_ZThn72_N7S7863C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7863C9D0Ev,_ZThn40_N7S7863C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7863C9D1Ev,_ZThn72_N7S7863C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7863C9D1Ev,_ZThn40_N7S7863C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7863C9 = {  "S7863C9", // class name
  bases_S7863C9, 7,
  &(vtc_S7863C9[0]), // expected_vtbl_contents
  &(vtt_S7863C9[0]), // expected_vtt_contents
  ABISELECT(240,128), // object size
  NSPAIRA(_ZTI7S7863C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7863C9),30, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7863C9),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names190,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7863C10  : virtual S19676C9 , virtual S7863C3 , S7863C5 {
  void *s7863c10f0;
  int s7863c10f1;
  ::S19676C9 s7863c10f2[3];
  int s7863c10f3[7];
  virtual  ~S7863C10(); // _ZN8S7863C10D2Ev
  S7863C10(); // tgen
};
//SIG(-1 S7863C10) C1{ VBC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 BC4{ VBC2 vd} Fp[10] Fi FL} BC4 vd Fp Fi FC2[3] Fi[7]}


 S7863C10 ::~S7863C10(){ note_dtor("S7863C10", this);}
S7863C10 ::S7863C10(){ note_ctor("S7863C10", this);} // tgen

static void Test_S7863C10()
{
  extern Class_Descriptor cd_S7863C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,53)];
    init_test(&cd_S7863C10, buf);
    S7863C10 *dp, &lv = *(dp=new (buf) S7863C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,208), "sizeof(S7863C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7863C10)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S7863C10");
    check_base_class_offset(lv, (S19676C9*)(S7863C3*), ABISELECT(208,124), "S7863C10");
    check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*), ABISELECT(208,124), "S7863C10");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*), ABISELECT(208,124), "S7863C10");
    check_base_class_offset(lv, (S7863C5*)(S7863C3*), ABISELECT(256,152), "S7863C10");
    check_base_class_offset(lv, (S7863C3*), ABISELECT(256,152), "S7863C10");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*), 0, "S7863C10");
    check_field_offset(lv, s7863c10f0, ABISELECT(8,4), "S7863C10.s7863c10f0");
    check_field_offset(lv, s7863c10f1, ABISELECT(16,8), "S7863C10.s7863c10f1");
    check_field_offset(lv, s7863c10f2, ABISELECT(32,12), "S7863C10.s7863c10f2");
    check_field_offset(lv, s7863c10f3, ABISELECT(176,96), "S7863C10.s7863c10f3");
    test_class_info(&lv, &cd_S7863C10);
    dp->~S7863C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7863C10(Test_S7863C10, "S7863C10", ABISELECT(368,208));

#else // __cplusplus

extern void _ZN8S7863C10C1Ev();
extern void _ZN8S7863C10D2Ev();
Name_Map name_map_S7863C10[] = {
  NSPAIR(_ZN8S7863C10C1Ev),
  NSPAIR(_ZN8S7863C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
static Base_Class bases_S7863C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(208,124), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    ABISELECT(256,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7863C3,    ABISELECT(256,152), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7863C10[];
extern void _ZN8S7863C10D1Ev();
extern void _ZN8S7863C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev)();
extern void ABISELECT(_ZThn208_N8S7863C10D1Ev,_ZThn124_N8S7863C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev)();
extern void ABISELECT(_ZThn208_N8S7863C10D0Ev,_ZThn124_N8S7863C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S7863C10D1Ev,_ZThn152_N8S7863C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S7863C10D0Ev,_ZThn152_N8S7863C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7863C10[] = {
  ABISELECT(256,152),
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&_ZN8S7863C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7863C10D0Ev,
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev),
  ABISELECT(-256,-152),
  ABISELECT(-48,-28),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S7863C10[];
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__8S7863C10[] = {
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn208_N7S7863C5D1Ev,_ZThn124_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn208_N7S7863C5D0Ev,_ZThn124_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C5__A1__8S7863C10[] = {
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C3__8S7863C10[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C3__8S7863C10[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C3__8S7863C10[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C3__8S7863C10[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
static  VTT_ENTRY vtt_S7863C10[] = {
  {&(_ZTV8S7863C10[4]),  4,17},
  {&(_tg__ZTV7S7863C5__A1__8S7863C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C5__A1__8S7863C10[3]),  3,5},
  {&(_ZTV8S7863C10[9]),  9,17},
  {&(_ZTV8S7863C10[15]),  15,17},
  {&(_tg__ZTV7S7863C3__8S7863C10[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C3__8S7863C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C3__8S7863C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C3__8S7863C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7863C10[];
extern  VTBL_ENTRY _ZTV8S7863C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7863C10[];
static VTBL_ENTRY alt_thunk_names191[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7863C5D0Ev,_ZThn124_N7S7863C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7863C5D1Ev,_ZThn124_N7S7863C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S7863C10D0Ev,_ZThn152_N8S7863C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S7863C10D1Ev,_ZThn152_N8S7863C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7863C10D0Ev,_ZThn124_N8S7863C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7863C10D1Ev,_ZThn124_N8S7863C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7863C10 = {  "S7863C10", // class name
  bases_S7863C10, 4,
  &(vtc_S7863C10[0]), // expected_vtbl_contents
  &(vtt_S7863C10[0]), // expected_vtt_contents
  ABISELECT(368,208), // object size
  NSPAIRA(_ZTI8S7863C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7863C10),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7863C10),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names191,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7863C8  : virtual S7863C3 , virtual S7863C9 , S7863C10 , S19676C9 , S7863C5 {
  virtual  ~S7863C8(); // _ZN7S7863C8D2Ev
  S7863C8(); // tgen
};
//SIG(-1 S7863C8) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC2 BC4 vd Fi} vd Fi} BC7{ VBC3 VBC2 BC4 vd Fp Fi FC3[3] Fi[7]} BC3 BC4 vd}


 S7863C8 ::~S7863C8(){ note_dtor("S7863C8", this);}
S7863C8 ::S7863C8(){ note_ctor("S7863C8", this);} // tgen

static void Test_S7863C8()
{
  extern Class_Descriptor cd_S7863C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(32,72)];
    init_test(&cd_S7863C8, buf);
    S7863C8 *dp, &lv = *(dp=new (buf) S7863C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,284), "sizeof(S7863C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7863C8)");
    check_base_class_offset(lv, (S19676C9*)(S7863C3*), ABISELECT(368,212), "S7863C8");
    check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*), ABISELECT(368,212), "S7863C8");
    /*is_ambiguous_... S7863C8::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*), ABISELECT(368,212), "S7863C8");
    /*is_ambiguous_... S7863C7::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(368,212), "S7863C8");
    check_base_class_offset(lv, (S19676C9*)(S7863C10*), ABISELECT(368,212), "S7863C8");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C10*), ABISELECT(368,212), "S7863C8");
    /*is_ambiguous_... S7863C8::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*), ABISELECT(368,212), "S7863C8");
    check_base_class_offset(lv, (S7863C5*)(S7863C3*), ABISELECT(264,156), "S7863C8");
    check_base_class_offset(lv, (S7863C3*), ABISELECT(264,156), "S7863C8");
    check_base_class_offset(lv, (S7863C3*)(S7863C9*), ABISELECT(264,156), "S7863C8");
    check_base_class_offset(lv, (S7863C3*)(S7863C7*)(S7863C9*), ABISELECT(264,156), "S7863C8");
    check_base_class_offset(lv, (S7863C3*)(S7863C10*), ABISELECT(264,156), "S7863C8");
    /*is_ambiguous_... S7863C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C9*), ABISELECT(416,240), "S7863C8");
    /*is_ambiguous_... S7863C9::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C9*), ABISELECT(480,280), "S7863C8");
    /*is_ambiguous_... S7863C7::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(464,268), "S7863C8");
    check_base_class_offset(lv, (S7863C7*)(S7863C9*), ABISELECT(464,268), "S7863C8");
    check_base_class_offset(lv, (S7863C9*), ABISELECT(416,240), "S7863C8");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C10*), 0, "S7863C8");
    check_base_class_offset(lv, (S7863C10*), 0, "S7863C8");
    /*is_ambiguous_... S7863C8::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S7863C8");
    /*is_ambiguous_... S7863C8::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*), ABISELECT(256,152), "S7863C8");
    test_class_info(&lv, &cd_S7863C8);
    dp->~S7863C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7863C8(Test_S7863C8, "S7863C8", ABISELECT(496,284));

#else // __cplusplus

extern void _ZN7S7863C8C1Ev();
extern void _ZN7S7863C8D2Ev();
Name_Map name_map_S7863C8[] = {
  NSPAIR(_ZN7S7863C8C1Ev),
  NSPAIR(_ZN7S7863C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C9;
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C10;
extern VTBL_ENTRY _ZTI8S7863C10[];
extern  VTBL_ENTRY _ZTV8S7863C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7863C10[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
static Base_Class bases_S7863C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(368,212), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(264,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7863C3,    ABISELECT(264,156), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    ABISELECT(416,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(480,280), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(464,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(464,268), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7863C9,    ABISELECT(416,240), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7863C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(208,124), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7863C5,    ABISELECT(256,152), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7863C8[];
extern void _ZN7S7863C8D1Ev();
extern void _ZN7S7863C8D0Ev();
extern void ABISELECT(_ZThn208_N7S7863C8D1Ev,_ZThn124_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn208_N7S7863C8D0Ev,_ZThn124_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn264_N7S7863C8D1Ev,_ZThn156_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn264_N7S7863C8D0Ev,_ZThn156_N7S7863C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn368_N7S7863C8D1Ev,_ZThn212_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn368_N7S7863C8D0Ev,_ZThn212_N7S7863C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn416_N7S7863C8D1Ev,_ZThn240_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn416_N7S7863C8D0Ev,_ZThn240_N7S7863C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn480_N7S7863C8D1Ev,_ZThn280_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn480_N7S7863C8D0Ev,_ZThn280_N7S7863C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7863C8[] = {
  ABISELECT(480,280),
  ABISELECT(416,240),
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&_ZN7S7863C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C8D0Ev,
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N7S7863C8D1Ev,_ZThn124_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N7S7863C8D0Ev,_ZThn124_N7S7863C8D0Ev),
  ABISELECT(112,60),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev),
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev),
  ABISELECT(-416,-240),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev),
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-464,-268),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev),
  ABISELECT(-480,-280),
  ABISELECT(-112,-68),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern VTBL_ENTRY _ZTV7S7863C8[];
extern void _ZN8S7863C10D1Ev();
extern void _ZN8S7863C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7863C10__7S7863C8[] = {
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&_ZN8S7863C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7863C10D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C58S7863C10__A3__7S7863C8[] = {
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn368_N7S7863C5D1Ev,_ZThn212_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn368_N7S7863C5D0Ev,_ZThn212_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C58S7863C10__A3__7S7863C8[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev)();
extern void ABISELECT(_ZThn368_N8S7863C10D1Ev,_ZThn212_N8S7863C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev)();
extern void ABISELECT(_ZThn368_N8S7863C10D0Ev,_ZThn212_N8S7863C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7863C10__7S7863C8[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev)();
extern void ABISELECT(_ZThn264_N8S7863C10D1Ev,_ZThn156_N8S7863C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev)();
extern void ABISELECT(_ZThn264_N8S7863C10D0Ev,_ZThn156_N8S7863C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__8S7863C10__7S7863C8[] = {
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A__7S7863C8[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7863C5D1Ev,_ZThn60_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7863C5D0Ev,_ZThn60_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C5__A__7S7863C8[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C8[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C3__7S7863C8[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn104_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn104_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C3__7S7863C8[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C3__7S7863C8[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C8[] = {
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__7S7863C8[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C77S7863C9__A2__7S7863C8[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A2__7S7863C8[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C77S7863C9__7S7863C8[] = {
  ABISELECT(200,112),
  ABISELECT(104,56),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C77S7863C9__7S7863C8[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn64_N7S7863C9D1Ev,_ZThn40_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn64_N7S7863C9D0Ev,_ZThn40_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C9__7S7863C8[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S7863C9__7S7863C8[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C9__7S7863C8[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C9__7S7863C8[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C8[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C5__A1__7S7863C8[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
static  VTT_ENTRY vtt_S7863C8[] = {
  {&(_ZTV7S7863C8[6]),  6,48},
  {&(_tg__ZTV8S7863C10__7S7863C8[4]),  4,6},
  {&(_tg__ZTV7S7863C58S7863C10__A3__7S7863C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C58S7863C10__A3__7S7863C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7863C10__7S7863C8[3]),  3,5},
  {&(_tg__ZTV7S7863C3__8S7863C10__7S7863C8[4]),  4,6},
  {&(_tg__ZTV7S7863C5__A__7S7863C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C5__A__7S7863C8[3]),  3,5},
  {&(_ZTV7S7863C8[21]),  21,48},
  {&(_ZTV7S7863C8[26]),  26,48},
  {&(_ZTV7S7863C8[34]),  34,48},
  {&(_ZTV7S7863C8[46]),  46,48},
  {&(_ZTV7S7863C8[40]),  40,48},
  {&(_ZTV7S7863C8[15]),  15,48},
  {&(_tg__ZTV7S7863C3__7S7863C8[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C3__7S7863C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C3__7S7863C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C3__7S7863C8[3]),  3,5},
  {&(_tg__ZTV7S7863C9__7S7863C8[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C9__7S7863C8[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C77S7863C9__A2__7S7863C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A2__7S7863C8[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C77S7863C9__7S7863C8[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C77S7863C9__7S7863C8[3]),  3,5},
  {&(_tg__ZTV7S7863C5__7S7863C9__7S7863C8[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S7863C9__7S7863C8[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C9__7S7863C8[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C9__7S7863C8[4]),  4,6},
  {&(_tg__ZTV7S7863C5__A1__7S7863C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C5__A1__7S7863C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7863C8[];
extern  VTBL_ENTRY _ZTV7S7863C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C8[];
static VTBL_ENTRY alt_thunk_names192[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7863C9D0Ev,_ZThn40_N7S7863C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7863C9D1Ev,_ZThn40_N7S7863C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7863C10D0Ev,_ZThn156_N8S7863C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7863C10D1Ev,_ZThn156_N8S7863C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S7863C10D0Ev,_ZThn212_N8S7863C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S7863C10D1Ev,_ZThn212_N8S7863C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C5D0Ev,_ZThn60_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7863C5D0Ev,_ZThn212_N7S7863C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C5D1Ev,_ZThn60_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7863C5D1Ev,_ZThn212_N7S7863C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7863C8D0Ev,_ZThn240_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7863C8D1Ev,_ZThn240_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7863C8D0Ev,_ZThn212_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7863C8D1Ev,_ZThn212_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7863C8D0Ev,_ZThn280_N7S7863C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7863C8D0Ev,_ZThn156_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7863C8D1Ev,_ZThn280_N7S7863C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7863C8D1Ev,_ZThn156_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7863C8 = {  "S7863C8", // class name
  bases_S7863C8, 12,
  &(vtc_S7863C8[0]), // expected_vtbl_contents
  &(vtt_S7863C8[0]), // expected_vtt_contents
  ABISELECT(496,284), // object size
  NSPAIRA(_ZTI7S7863C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7863C8),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7863C8),30, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names192,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7863C6  : virtual S7863C5 , virtual S7863C7 , S7863C3 , S7863C8 , S7863C9 {
  short s7863c6f0;
  virtual  ~S7863C6(); // _ZN7S7863C6D2Ev
  S7863C6(); // tgen
};
//SIG(-1 S7863C6) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ VBC5{ VBC3 BC2 Fp[10] Fi FL} BC2 vd Fi} BC5 BC6{ VBC5 VBC7{ BC3 VBC2 VBC5 BC4 vd Fi} BC8{ VBC3 VBC5 BC2 vd Fp Fi FC3[3] Fi[7]} BC3 BC2 vd} BC7 vd Fs}


 S7863C6 ::~S7863C6(){ note_dtor("S7863C6", this);}
S7863C6 ::S7863C6(){ note_ctor("S7863C6", this);} // tgen

static void Test_S7863C6()
{
  extern Class_Descriptor cd_S7863C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,99)];
    init_test(&cd_S7863C6, buf);
    S7863C6 *dp, &lv = *(dp=new (buf) S7863C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,392), "sizeof(S7863C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7863C6)");
    /*is_ambiguous_... S7863C6::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C3*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C7 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C3*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(464,260), "S7863C6");
    check_base_class_offset(lv, (S19676C9*)(S7863C10*)(S7863C8*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C10*)(S7863C8*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C8::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C8*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*), ABISELECT(456,256), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C9*), ABISELECT(456,256), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C9*), ABISELECT(456,256), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C3*), ABISELECT(528,296), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C7 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*), ABISELECT(528,296), "S7863C6");
    check_base_class_offset(lv, (S7863C3*)(S7863C8*), ABISELECT(528,296), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C9*), ABISELECT(528,296), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*)(S7863C9*), ABISELECT(528,296), "S7863C6");
    check_base_class_offset(lv, (S7863C3*)(S7863C10*)(S7863C8*), ABISELECT(528,296), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C9*), ABISELECT(528,296), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*)(S7863C9*), ABISELECT(528,296), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C7 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*), ABISELECT(512,288), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C7 */ AMB_check_base_class_offset(lv, (S7863C7*), ABISELECT(512,288), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C3*), 0, "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C3*), 0, "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C9*), ABISELECT(640,352), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(688,380), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C9*), ABISELECT(688,380), "S7863C6");
    check_base_class_offset(lv, (S7863C9*)(S7863C8*), ABISELECT(640,352), "S7863C6");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C10*)(S7863C8*), ABISELECT(112,56), "S7863C6");
    check_base_class_offset(lv, (S7863C10*)(S7863C8*), ABISELECT(112,56), "S7863C6");
    /*is_ambiguous_... S7863C8::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C8*), ABISELECT(320,180), "S7863C6");
    /*is_ambiguous_... S7863C8::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C8*), ABISELECT(368,208), "S7863C6");
    check_base_class_offset(lv, (S7863C8*), ABISELECT(112,56), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C9*), ABISELECT(384,212), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(432,240), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C9*), ABISELECT(432,240), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C9*), ABISELECT(384,212), "S7863C6");
    check_field_offset(lv, s7863c6f0, ABISELECT(448,252), "S7863C6.s7863c6f0");
    test_class_info(&lv, &cd_S7863C6);
    dp->~S7863C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7863C6(Test_S7863C6, "S7863C6", ABISELECT(704,392));

#else // __cplusplus

extern void _ZN7S7863C6C1Ev();
extern void _ZN7S7863C6D2Ev();
Name_Map name_map_S7863C6[] = {
  NSPAIR(_ZN7S7863C6C1Ev),
  NSPAIR(_ZN7S7863C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C9;
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C10;
extern VTBL_ENTRY _ZTI8S7863C10[];
extern  VTBL_ENTRY _ZTV8S7863C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7863C10[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C8;
extern VTBL_ENTRY _ZTI7S7863C8[];
extern  VTBL_ENTRY _ZTV7S7863C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C8[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C9;
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
static Base_Class bases_S7863C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(464,260), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(456,256), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    ABISELECT(528,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7863C3,    ABISELECT(528,296), //bcp->offset
    57, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(512,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(512,288), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7863C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(640,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(688,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(688,380), //bcp->offset
    71, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7863C9,    ABISELECT(640,352), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7863C10,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(320,180), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(368,208), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7863C8,    ABISELECT(112,56), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(384,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(432,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(432,240), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7863C9,    ABISELECT(384,212), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7863C6[];
extern void _ZN7S7863C6D1Ev();
extern void _ZN7S7863C6D0Ev();
extern void ABISELECT(_ZThn112_N7S7863C6D1Ev,_ZThn56_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7863C6D0Ev,_ZThn56_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn320_N7S7863C6D1Ev,_ZThn180_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn320_N7S7863C6D0Ev,_ZThn180_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn368_N7S7863C6D1Ev,_ZThn208_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn368_N7S7863C6D0Ev,_ZThn208_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn384_N7S7863C6D1Ev,_ZThn212_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn384_N7S7863C6D0Ev,_ZThn212_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn432_N7S7863C6D1Ev,_ZThn240_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn432_N7S7863C6D0Ev,_ZThn240_N7S7863C6D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn456_N7S7863C6D1Ev,_ZThn256_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn456_N7S7863C6D0Ev,_ZThn256_N7S7863C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C6D1Ev,_ZTv0_n12_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn464_N7S7863C6D1Ev,_ZThn260_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C6D0Ev,_ZTv0_n12_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn464_N7S7863C6D0Ev,_ZThn260_N7S7863C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7863C6D1Ev,_ZTv0_n20_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn512_N7S7863C6D1Ev,_ZThn288_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7863C6D0Ev,_ZTv0_n20_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn512_N7S7863C6D0Ev,_ZThn288_N7S7863C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn528_N7S7863C6D1Ev,_ZThn296_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn528_N7S7863C6D0Ev,_ZThn296_N7S7863C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C6D1Ev,_ZTv0_n24_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn640_N7S7863C6D1Ev,_ZThn352_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C6D0Ev,_ZTv0_n24_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn640_N7S7863C6D0Ev,_ZThn352_N7S7863C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S7863C6D1Ev,_ZTvn28_n24_N7S7863C6D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C6D0Ev,_ZTvn28_n24_N7S7863C6D0Ev)();
static  VTBL_ENTRY vtc_S7863C6[] = {
  ABISELECT(640,352),
  ABISELECT(528,296),
  ABISELECT(512,288),
  ABISELECT(456,256),
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&_ZN7S7863C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C6D0Ev,
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7863C6D1Ev,_ZThn56_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7863C6D0Ev,_ZThn56_N7S7863C6D0Ev),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N7S7863C6D1Ev,_ZThn180_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N7S7863C6D0Ev,_ZThn180_N7S7863C6D0Ev),
  ABISELECT(96,52),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7863C6D1Ev,_ZThn208_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7863C6D0Ev,_ZThn208_N7S7863C6D0Ev),
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7863C6D1Ev,_ZThn212_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7863C6D0Ev,_ZThn212_N7S7863C6D0Ev),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7863C6D1Ev,_ZThn240_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7863C6D0Ev,_ZThn240_N7S7863C6D0Ev),
  ABISELECT(-456,-256),
  ABISELECT(8,4),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev),
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C6D1Ev,_ZTv0_n12_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C6D0Ev,_ZTv0_n12_N7S7863C6D0Ev),
  ABISELECT(-512,-288),
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  ABISELECT(-512,-288),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C6D1Ev,_ZTv0_n20_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C6D0Ev,_ZTv0_n20_N7S7863C6D0Ev),
  ABISELECT(-528,-296),
  ABISELECT(-64,-36),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev),
  ABISELECT(-640,-352),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-640,-352),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C6D1Ev,_ZTv0_n24_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C6D0Ev,_ZTv0_n24_N7S7863C6D0Ev),
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C6D1Ev,_ZTvn28_n24_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C6D0Ev,_ZTvn28_n24_N7S7863C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S7863C6[];
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C3__A__7S7863C6[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C3__A3__7S7863C6[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn464_N7S7863C5D1Ev,_ZThn260_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn464_N7S7863C5D0Ev,_ZThn260_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C3__A3__7S7863C6[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZThn464_N7S7863C3D1Ev,_ZThn260_N7S7863C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
extern void ABISELECT(_ZThn464_N7S7863C3D0Ev,_ZThn260_N7S7863C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C3__A__7S7863C6[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
extern void _ZN7S7863C8D1Ev();
extern void _ZN7S7863C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C8__7S7863C6[] = {
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&_ZN7S7863C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C8D0Ev,
};
extern void _ZN8S7863C10D1Ev();
extern void _ZN8S7863C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7863C107S7863C8__7S7863C6[] = {
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&_ZN8S7863C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7863C10D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C58S7863C107S7863C8__A5__7S7863C6[] = {
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn352_N7S7863C5D1Ev,_ZThn204_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn352_N7S7863C5D0Ev,_ZThn204_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C58S7863C107S7863C8__A5__7S7863C6[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev)();
extern void ABISELECT(_ZThn352_N8S7863C10D1Ev,_ZThn204_N8S7863C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev)();
extern void ABISELECT(_ZThn352_N8S7863C10D0Ev,_ZThn204_N8S7863C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7863C107S7863C8__7S7863C6[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev)();
extern void ABISELECT(_ZThn416_N8S7863C10D1Ev,_ZThn240_N8S7863C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev)();
extern void ABISELECT(_ZThn416_N8S7863C10D0Ev,_ZThn240_N8S7863C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__8S7863C107S7863C8__7S7863C6[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C8__A6__7S7863C6[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7863C5D1Ev,_ZThn52_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7863C5D0Ev,_ZThn52_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C8__A6__7S7863C6[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn416_N7S7863C8D1Ev,_ZThn240_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn416_N7S7863C8D0Ev,_ZThn240_N7S7863C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C8__7S7863C6[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn352_N7S7863C8D1Ev,_ZThn204_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn352_N7S7863C8D0Ev,_ZThn204_N7S7863C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C8__7S7863C6[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn528_N7S7863C8D1Ev,_ZThn296_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn528_N7S7863C8D0Ev,_ZThn296_N7S7863C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C8__7S7863C6[] = {
  ABISELECT(-528,-296),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn344_N7S7863C8D1Ev,_ZThn200_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn344_N7S7863C8D0Ev,_ZThn200_N7S7863C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C8__7S7863C6[] = {
  ABISELECT(-344,-200),
  ABISELECT(8,4),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__7S7863C8__7S7863C6[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A__7S7863C8__7S7863C6[] = {
  ABISELECT(96,52),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev),
};
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C9__A__7S7863C6[] = {
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A2__7S7863C6[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C77S7863C9__A7__7S7863C6[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7863C5D1Ev,_ZThn20_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7863C5D0Ev,_ZThn20_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A7__7S7863C6[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S7863C7D1Ev,_ZThn56_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S7863C7D0Ev,_ZThn56_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C77S7863C9__A2__7S7863C6[] = {
  ABISELECT(-96,-56),
  ABISELECT(-64,-36),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn32_N7S7863C7D1Ev,_ZThn20_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn32_N7S7863C7D0Ev,_ZThn20_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C77S7863C9__A2__7S7863C6[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn72_N7S7863C9D1Ev,_ZThn44_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn72_N7S7863C9D0Ev,_ZThn44_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C9__A__7S7863C6[] = {
  ABISELECT(-72,-44),
  ABISELECT(8,4),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn80_N7S7863C9D1Ev,_ZThn48_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn80_N7S7863C9D0Ev,_ZThn48_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S7863C9__A__7S7863C6[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn144_N7S7863C9D1Ev,_ZThn84_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn144_N7S7863C9D0Ev,_ZThn84_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C9__A__7S7863C6[] = {
  ABISELECT(-144,-84),
  ABISELECT(-64,-36),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C9__A__7S7863C6[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn8_N7S7863C5D1Ev,_ZThn4_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn8_N7S7863C5D0Ev,_ZThn4_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C5__7S7863C6[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C6[] = {
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C7__A2__7S7863C6[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C7__A2__7S7863C6[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S7863C7D1Ev,_ZThn8_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn16_N7S7863C7D0Ev,_ZThn8_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C7__7S7863C6[] = {
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C7__7S7863C6[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C6[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C3__A1__7S7863C6[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C3__A1__7S7863C6[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C3__7S7863C6[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C6[] = {
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A1__7S7863C6[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C77S7863C9__A4__7S7863C6[] = {
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A4__7S7863C6[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C77S7863C9__A1__7S7863C6[] = {
  ABISELECT(160,84),
  ABISELECT(-64,-36),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C77S7863C9__A1__7S7863C6[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C9__7S7863C6[] = {
  ABISELECT(184,96),
  ABISELECT(8,4),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S7863C9__7S7863C6[] = {
  ABISELECT(176,92),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C9__7S7863C6[] = {
  ABISELECT(112,56),
  ABISELECT(-64,-36),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C9__7S7863C6[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
};
static  VTT_ENTRY vtt_S7863C6[] = {
  {&(_ZTV7S7863C6[7]),  7,77},
  {&(_tg__ZTV7S7863C3__A__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C3__A3__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C3__A3__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C3__A__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C8__7S7863C6[6]),  6,8},
  {&(_tg__ZTV8S7863C107S7863C8__7S7863C6[4]),  4,6},
  {&(_tg__ZTV7S7863C58S7863C107S7863C8__A5__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C58S7863C107S7863C8__A5__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7863C107S7863C8__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C3__8S7863C107S7863C8__7S7863C6[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C8__A6__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C8__A6__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C8__7S7863C6[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C8__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C9__7S7863C8__7S7863C6[6]),  6,8},
  {&(_tg__ZTV7S7863C5__A1__7S7863C8__7S7863C6[4]),  4,6},
  {&(_tg__ZTV7S7863C77S7863C9__7S7863C8__7S7863C6[4]),  4,6},
  {&(_tg__ZTV7S7863C5__A__7S7863C8__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C9__A__7S7863C6[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C9__A2__7S7863C6[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C77S7863C9__A7__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A7__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C77S7863C9__A2__7S7863C6[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C77S7863C9__A2__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C5__7S7863C9__A__7S7863C6[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S7863C9__A__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C9__A__7S7863C6[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C9__A__7S7863C6[4]),  4,6},
  {&(_ZTV7S7863C6[43]),  43,77},
  {&(_ZTV7S7863C6[48]),  48,77},
  {&(_ZTV7S7863C6[55]),  55,77},
  {&(_ZTV7S7863C6[61]),  61,77},
  {&(_ZTV7S7863C6[15]),  15,77},
  {&(_ZTV7S7863C6[69]),  69,77},
  {&(_ZTV7S7863C6[75]),  75,77},
  {&(_ZTV7S7863C6[24]),  24,77},
  {&(_ZTV7S7863C6[31]),  31,77},
  {&(_ZTV7S7863C6[37]),  37,77},
  {&(_tg__ZTV7S7863C5__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C5__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C7__7S7863C6[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C7__A2__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C7__A2__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C7__7S7863C6[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C7__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C3__A1__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C3__A1__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C3__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C9__7S7863C6[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C9__A1__7S7863C6[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C77S7863C9__A4__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A4__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C77S7863C9__A1__7S7863C6[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C77S7863C9__A1__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C5__7S7863C9__7S7863C6[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S7863C9__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C9__7S7863C6[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C9__7S7863C6[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7863C6[];
extern  VTBL_ENTRY _ZTV7S7863C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C6[];
static VTBL_ENTRY alt_thunk_names193[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7863C9D0Ev,_ZThn48_N7S7863C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7863C9D1Ev,_ZThn48_N7S7863C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7863C9D0Ev,_ZThn84_N7S7863C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7863C9D0Ev,_ZThn44_N7S7863C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7863C9D1Ev,_ZThn84_N7S7863C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7863C9D1Ev,_ZThn44_N7S7863C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7863C7D0Ev,_ZThn20_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7863C7D1Ev,_ZThn20_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7863C7D0Ev,_ZThn8_N7S7863C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7863C7D0Ev,_ZThn56_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7863C7D1Ev,_ZThn8_N7S7863C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7863C7D1Ev,_ZThn56_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7863C8D0Ev,_ZThn296_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7863C8D1Ev,_ZThn296_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7863C8D0Ev,_ZThn204_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7863C8D1Ev,_ZThn204_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7863C8D0Ev,_ZThn200_N7S7863C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7863C8D0Ev,_ZThn240_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7863C8D1Ev,_ZThn200_N7S7863C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7863C8D1Ev,_ZThn240_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S7863C10D0Ev,_ZThn240_N8S7863C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S7863C10D1Ev,_ZThn240_N8S7863C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S7863C10D0Ev,_ZThn204_N8S7863C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S7863C10D1Ev,_ZThn204_N8S7863C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C3D0Ev,_ZThn260_N7S7863C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C3D1Ev,_ZThn260_N7S7863C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7863C5D0Ev,_ZThn4_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7863C5D0Ev,_ZThn20_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7863C5D0Ev,_ZThn52_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7863C5D0Ev,_ZThn204_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C5D0Ev,_ZThn260_N7S7863C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7863C5D1Ev,_ZThn4_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7863C5D1Ev,_ZThn20_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7863C5D1Ev,_ZThn52_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7863C5D1Ev,_ZThn204_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C5D1Ev,_ZThn260_N7S7863C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C6D0Ev,_ZTv0_n24_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S7863C6D0Ev,_ZThn352_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C6D1Ev,_ZTv0_n24_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S7863C6D1Ev,_ZThn352_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C6D0Ev,_ZTv0_n20_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N7S7863C6D0Ev,_ZThn288_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C6D1Ev,_ZTv0_n20_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N7S7863C6D1Ev,_ZThn288_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C6D0Ev,_ZTv0_n12_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C6D0Ev,_ZThn260_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C6D1Ev,_ZTv0_n12_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C6D1Ev,_ZThn260_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7863C6D0Ev,_ZThn296_N7S7863C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7863C6D0Ev,_ZThn256_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7863C6D1Ev,_ZThn296_N7S7863C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7863C6D1Ev,_ZThn256_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7863C6 = {  "S7863C6", // class name
  bases_S7863C6, 21,
  &(vtc_S7863C6[0]), // expected_vtbl_contents
  &(vtt_S7863C6[0]), // expected_vtt_contents
  ABISELECT(704,392), // object size
  NSPAIRA(_ZTI7S7863C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7863C6),77, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7863C6),60, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names193,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7863C2  : virtual S7863C3 , virtual S7863C6 , virtual S7863C8 , virtual S19676C2 , S7863C9 {
  short s7863c2f0;
  void *s7863c2f1[2];
  ~S7863C2(); // tgen
  S7863C2(); // tgen
};
//SIG(-1 S7863C2) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} VBC5{ VBC4 VBC6{ VBC2 BC4 vd Fi} BC2 BC7{ VBC2 VBC8{ BC3 VBC4 VBC2 BC6 vd Fi} BC9{ VBC3 VBC2 BC4 vd Fp Fi FC3[3] Fi[7]} BC3 BC4 vd} BC8 vd Fs} VBC7 VBC10{ m FC11{} Fi[3]} BC8 Fs Fp[2]}


S7863C2 ::~S7863C2(){ note_dtor("S7863C2", this);} // tgen
S7863C2 ::S7863C2(){ note_ctor("S7863C2", this);} // tgen

static void Test_S7863C2()
{
  extern Class_Descriptor cd_S7863C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(68,155)];
    init_test(&cd_S7863C2, buf);
    S7863C2 *dp, &lv = *(dp=new (buf) S7863C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1072,616), "sizeof(S7863C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7863C2)");
    /*is_ambiguous_... S7863C2::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C3*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C7 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C3*)(S7863C6*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*)(S7863C6*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(192,108), "S7863C2");
    check_base_class_offset(lv, (S19676C9*)(S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C8::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C8*)(S7863C6*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*)(S7863C9*)(S7863C6*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C10*)(S7863C8*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C10*)(S7863C8*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C8*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C3*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C3*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C7 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*), ABISELECT(88,52), "S7863C2");
    check_base_class_offset(lv, (S7863C3*)(S7863C8*)(S7863C6*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C9*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*)(S7863C9*), ABISELECT(88,52), "S7863C2");
    check_base_class_offset(lv, (S7863C3*)(S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C9*)(S7863C6*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*)(S7863C9*)(S7863C6*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C8*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C10*)(S7863C8*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C9*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*)(S7863C9*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C6*), ABISELECT(696,392), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C9*), ABISELECT(696,392), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C9*)(S7863C6*), ABISELECT(696,392), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C9*), ABISELECT(696,392), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C7 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*), ABISELECT(704,396), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C7 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C6*), ABISELECT(704,396), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C3*)(S7863C6*), ABISELECT(240,136), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C6*), ABISELECT(240,136), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C9*), ABISELECT(720,404), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(768,432), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C9*), ABISELECT(768,432), "S7863C2");
    check_base_class_offset(lv, (S7863C9*)(S7863C8*)(S7863C6*), ABISELECT(720,404), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C9*)(S7863C8*), ABISELECT(720,404), "S7863C2");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(352,192), "S7863C2");
    check_base_class_offset(lv, (S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(352,192), "S7863C2");
    /*is_ambiguous_... S7863C8::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C8*)(S7863C6*), ABISELECT(560,316), "S7863C2");
    /*is_ambiguous_... S7863C8::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C8*)(S7863C6*), ABISELECT(608,344), "S7863C2");
    check_base_class_offset(lv, (S7863C8*)(S7863C6*), ABISELECT(352,192), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C9*)(S7863C6*), ABISELECT(624,348), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*)(S7863C9*)(S7863C6*), ABISELECT(672,376), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C9*)(S7863C6*), ABISELECT(672,376), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C9*)(S7863C6*), ABISELECT(624,348), "S7863C2");
    check_base_class_offset(lv, (S7863C6*), ABISELECT(240,136), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C10*)(S7863C8*), ABISELECT(784,444), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C10*)(S7863C8*), ABISELECT(784,444), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C8*), ABISELECT(992,568), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C8*), ABISELECT(1040,596), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C8*), ABISELECT(784,444), "S7863C2");
    check_base_class_offset(lv, (S19676C2*), ABISELECT(1048,600), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C9*), 0, "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(48,28), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C9*), ABISELECT(48,28), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C9*), 0, "S7863C2");
    check_field_offset(lv, s7863c2f0, ABISELECT(64,40), "S7863C2.s7863c2f0");
    check_field_offset(lv, s7863c2f1, ABISELECT(72,44), "S7863C2.s7863c2f1");
    test_class_info(&lv, &cd_S7863C2);
    dp->~S7863C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7863C2(Test_S7863C2, "S7863C2", ABISELECT(1072,616));

#else // __cplusplus

extern void _ZN7S7863C2C1Ev();
extern void _ZN7S7863C2D1Ev();
Name_Map name_map_S7863C2[] = {
  NSPAIR(_ZN7S7863C2C1Ev),
  NSPAIR(_ZN7S7863C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C9;
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C10;
extern VTBL_ENTRY _ZTI8S7863C10[];
extern  VTBL_ENTRY _ZTV8S7863C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7863C10[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C8;
extern VTBL_ENTRY _ZTI7S7863C8[];
extern  VTBL_ENTRY _ZTV7S7863C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C8[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C9;
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
extern Class_Descriptor cd_S7863C6;
extern VTBL_ENTRY _ZTI7S7863C6[];
extern  VTBL_ENTRY _ZTV7S7863C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C6[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C10;
extern VTBL_ENTRY _ZTI8S7863C10[];
extern  VTBL_ENTRY _ZTV8S7863C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7863C10[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C8;
extern VTBL_ENTRY _ZTI7S7863C8[];
extern  VTBL_ENTRY _ZTV7S7863C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C8[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C9;
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
static Base_Class bases_S7863C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(192,108), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7863C3,    ABISELECT(88,52), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    ABISELECT(696,392), //bcp->offset
    69, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(704,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(704,396), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7863C3,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(720,404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(768,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(768,432), //bcp->offset
    90, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7863C9,    ABISELECT(720,404), //bcp->offset
    82, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7863C10,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(560,316), //bcp->offset
    47, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(608,344), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7863C8,    ABISELECT(352,192), //bcp->offset
    39, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(624,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(672,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(672,376), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7863C9,    ABISELECT(624,348), //bcp->offset
    56, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7863C6,    ABISELECT(240,136), //bcp->offset
    29, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    ABISELECT(784,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7863C10,    ABISELECT(784,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(992,568), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(1040,596), //bcp->offset
    109, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7863C8,    ABISELECT(784,444), //bcp->offset
    96, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    ABISELECT(1048,600), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(48,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7863C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7863C2[];
extern void _ZN7S7863C2D1Ev();
extern void _ZN7S7863C2D0Ev();
extern void ABISELECT(_ZThn48_N7S7863C2D1Ev,_ZThn28_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C2D0Ev,_ZThn28_N7S7863C2D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn88_N7S7863C2D1Ev,_ZThn52_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn88_N7S7863C2D0Ev,_ZThn52_N7S7863C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C2D1Ev,_ZTv0_n12_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn192_N7S7863C2D1Ev,_ZThn108_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C2D0Ev,_ZTv0_n12_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn192_N7S7863C2D0Ev,_ZThn108_N7S7863C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7863C2D1Ev,_ZTv0_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn240_N7S7863C2D1Ev,_ZThn136_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7863C2D0Ev,_ZTv0_n32_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn240_N7S7863C2D0Ev,_ZThn136_N7S7863C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N7S7863C2D1Ev,_ZTvn56_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S7863C2D0Ev,_ZTvn56_n32_N7S7863C2D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7863C2D1Ev,_ZTvn180_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7863C2D0Ev,_ZTvn180_n32_N7S7863C2D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7863C2D1Ev,_ZTvn208_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7863C2D0Ev,_ZTvn208_n32_N7S7863C2D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7863C2D1Ev,_ZTvn212_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7863C2D0Ev,_ZTvn212_n32_N7S7863C2D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7863C2D1Ev,_ZTvn240_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7863C2D0Ev,_ZTvn240_n32_N7S7863C2D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn696_N7S7863C2D1Ev,_ZThn392_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn696_N7S7863C2D0Ev,_ZThn392_N7S7863C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7863C2D1Ev,_ZTv0_n20_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn704_N7S7863C2D1Ev,_ZThn396_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7863C2D0Ev,_ZTv0_n20_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn704_N7S7863C2D0Ev,_ZThn396_N7S7863C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C2D1Ev,_ZTv0_n24_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn720_N7S7863C2D1Ev,_ZThn404_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C2D0Ev,_ZTv0_n24_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn720_N7S7863C2D0Ev,_ZThn404_N7S7863C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S7863C2D1Ev,_ZTvn28_n24_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C2D0Ev,_ZTvn28_n24_N7S7863C2D0Ev)();
extern void ABISELECT(_ZTv0_n56_N7S7863C2D1Ev,_ZTv0_n28_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn784_N7S7863C2D1Ev,_ZThn444_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7863C2D0Ev,_ZTv0_n28_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn784_N7S7863C2D0Ev,_ZThn444_N7S7863C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N7S7863C2D1Ev,_ZTvn124_n28_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S7863C2D0Ev,_ZTvn124_n28_N7S7863C2D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7863C2D1Ev,_ZTvn152_n28_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7863C2D0Ev,_ZTvn152_n28_N7S7863C2D0Ev)();
static  VTBL_ENTRY vtc_S7863C2[] = {
  ABISELECT(1048,600),
  ABISELECT(784,444),
  ABISELECT(720,404),
  ABISELECT(704,396),
  ABISELECT(240,136),
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(696,392),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&_ZN7S7863C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C2D0Ev,
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C2D1Ev,_ZThn28_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C2D0Ev,_ZThn28_N7S7863C2D0Ev),
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C2D1Ev,_ZTv0_n12_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C2D0Ev,_ZTv0_n12_N7S7863C2D0Ev),
  ABISELECT(-240,-136),
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7863C2D1Ev,_ZTv0_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7863C2D0Ev,_ZTv0_n32_N7S7863C2D0Ev),
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7863C2D1Ev,_ZTvn56_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7863C2D0Ev,_ZTvn56_n32_N7S7863C2D0Ev),
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7863C2D1Ev,_ZTvn180_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7863C2D0Ev,_ZTvn180_n32_N7S7863C2D0Ev),
  ABISELECT(-416,-236),
  ABISELECT(-608,-344),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7863C2D1Ev,_ZTvn208_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7863C2D0Ev,_ZTvn208_n32_N7S7863C2D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7863C2D1Ev,_ZTvn212_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7863C2D0Ev,_ZTvn212_n32_N7S7863C2D0Ev),
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7863C2D1Ev,_ZTvn240_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7863C2D0Ev,_ZTvn240_n32_N7S7863C2D0Ev),
  ABISELECT(-696,-392),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev),
  ABISELECT(-704,-396),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-704,-396),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C2D1Ev,_ZTv0_n20_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C2D0Ev,_ZTv0_n20_N7S7863C2D0Ev),
  ABISELECT(-720,-404),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-720,-404),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C2D1Ev,_ZTv0_n24_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C2D0Ev,_ZTv0_n24_N7S7863C2D0Ev),
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-768,-432),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C2D1Ev,_ZTvn28_n24_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C2D0Ev,_ZTvn28_n24_N7S7863C2D0Ev),
  ABISELECT(-784,-444),
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  ABISELECT(-784,-444),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7863C2D1Ev,_ZTv0_n28_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7863C2D0Ev,_ZTv0_n28_N7S7863C2D0Ev),
  ABISELECT(-992,-568),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7863C2D1Ev,_ZTvn124_n28_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7863C2D0Ev,_ZTvn124_n28_N7S7863C2D0Ev),
  ABISELECT(-848,-488),
  ABISELECT(-1040,-596),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7863C2D1Ev,_ZTvn152_n28_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7863C2D0Ev,_ZTvn152_n28_N7S7863C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7863C2[];
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C9__A__7S7863C2[] = {
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(696,392),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A3__7S7863C2[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C77S7863C9__A10__7S7863C2[] = {
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn144_N7S7863C5D1Ev,_ZThn80_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn144_N7S7863C5D0Ev,_ZThn80_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A10__7S7863C2[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn40_N7S7863C7D1Ev,_ZThn24_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn40_N7S7863C7D0Ev,_ZThn24_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C77S7863C9__A3__7S7863C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(104,56),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn144_N7S7863C7D1Ev,_ZThn80_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn144_N7S7863C7D0Ev,_ZThn80_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C77S7863C9__A3__7S7863C2[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn696_N7S7863C9D1Ev,_ZThn392_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn696_N7S7863C9D0Ev,_ZThn392_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C9__A__7S7863C2[] = {
  ABISELECT(-696,-392),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn192_N7S7863C9D1Ev,_ZThn108_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn192_N7S7863C9D0Ev,_ZThn108_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S7863C9__A__7S7863C2[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn88_N7S7863C9D1Ev,_ZThn52_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn88_N7S7863C9D0Ev,_ZThn52_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C9__A__7S7863C2[] = {
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C9__A__7S7863C2[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
};
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C2[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C3__7S7863C2[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn104_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn104_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C3__7S7863C2[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C3__7S7863C2[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
extern void _ZN7S7863C6D1Ev();
extern void _ZN7S7863C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C6__7S7863C2[] = {
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&_ZN7S7863C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C6D0Ev,
};
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C37S7863C6__A1__7S7863C2[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C37S7863C6__A3__7S7863C2[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C37S7863C6__A3__7S7863C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C37S7863C6__A1__7S7863C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
extern void _ZN7S7863C8D1Ev();
extern void _ZN7S7863C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&_ZN7S7863C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C8D0Ev,
};
extern void _ZN8S7863C10D1Ev();
extern void _ZN8S7863C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7863C107S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&_ZN8S7863C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7863C10D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C58S7863C107S7863C87S7863C6__A5__7S7863C2[] = {
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C58S7863C107S7863C87S7863C6__A5__7S7863C2[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7863C107S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__8S7863C107S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C87S7863C6__A6__7S7863C2[] = {
  ABISELECT(-416,-236),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C87S7863C6__A6__7S7863C2[] = {
  ABISELECT(416,236),
  ABISELECT(416,236),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn368_N7S7863C8D1Ev,_ZThn212_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn368_N7S7863C8D0Ev,_ZThn212_N7S7863C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(-368,-212),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn344_N7S7863C8D1Ev,_ZThn200_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn344_N7S7863C8D0Ev,_ZThn200_N7S7863C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(-344,-200),
  ABISELECT(-504,-284),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__7S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A__7S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(-416,-236),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev),
};
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C97S7863C6__A1__7S7863C2[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C97S7863C6__A2__7S7863C2[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C77S7863C97S7863C6__A7__7S7863C2[] = {
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C77S7863C97S7863C6__A7__7S7863C2[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C77S7863C97S7863C6__A2__7S7863C2[] = {
  ABISELECT(584,324),
  ABISELECT(104,56),
  ABISELECT(584,324),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C77S7863C97S7863C6__A2__7S7863C2[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn72_N7S7863C9D1Ev,_ZThn44_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn72_N7S7863C9D0Ev,_ZThn44_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C97S7863C6__A1__7S7863C2[] = {
  ABISELECT(-72,-44),
  ABISELECT(-504,-284),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S7863C97S7863C6__A1__7S7863C2[] = {
  ABISELECT(432,240),
  ABISELECT(432,240),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C97S7863C6__A1__7S7863C2[] = {
  ABISELECT(536,296),
  ABISELECT(104,56),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C97S7863C6__A1__7S7863C2[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn456_N7S7863C6D1Ev,_ZThn256_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn456_N7S7863C6D0Ev,_ZThn256_N7S7863C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C6__7S7863C2[] = {
  ABISELECT(-456,-256),
  ABISELECT(-504,-284),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C6D1Ev,_ZTv0_n12_N7S7863C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C6D0Ev,_ZTv0_n12_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C6__7S7863C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C6D1Ev,_ZTv0_n12_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C6D0Ev,_ZTv0_n12_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7863C6D1Ev,_ZTv0_n20_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn464_N7S7863C6D1Ev,_ZThn260_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7863C6D0Ev,_ZTv0_n20_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn464_N7S7863C6D0Ev,_ZThn260_N7S7863C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C6__7S7863C2[] = {
  ABISELECT(-464,-260),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C6D1Ev,_ZTv0_n20_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C6D0Ev,_ZTv0_n20_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C6__7S7863C2[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZThn112_N7S7863C6D1Ev,_ZThn56_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7863C6D0Ev,_ZThn56_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C8__7S7863C6__7S7863C2[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7863C6D1Ev,_ZThn56_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7863C6D0Ev,_ZThn56_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7863C6D1Ev,_ZTv0_n24_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn480_N7S7863C6D1Ev,_ZThn268_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C6D0Ev,_ZTv0_n24_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn480_N7S7863C6D0Ev,_ZThn268_N7S7863C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C6__7S7863C2[] = {
  ABISELECT(-480,-268),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-480,-268),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C6D1Ev,_ZTv0_n24_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C6D0Ev,_ZTv0_n24_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7863C6D1Ev,_ZTvn28_n24_N7S7863C6D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C6D0Ev,_ZTvn28_n24_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A1__7S7863C6__7S7863C2[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C6D1Ev,_ZTvn28_n24_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C6D0Ev,_ZTvn28_n24_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZThn368_N7S7863C6D1Ev,_ZThn208_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn368_N7S7863C6D0Ev,_ZThn208_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C8__A6__7S7863C6__7S7863C2[] = {
  ABISELECT(-416,-236),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7863C6D1Ev,_ZThn208_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7863C6D0Ev,_ZThn208_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZThn384_N7S7863C6D1Ev,_ZThn212_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn384_N7S7863C6D0Ev,_ZThn212_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C9__A__7S7863C6__7S7863C2[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7863C6D1Ev,_ZThn212_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7863C6D0Ev,_ZThn212_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZThn432_N7S7863C6D1Ev,_ZThn240_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn432_N7S7863C6D0Ev,_ZThn240_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A2__7S7863C6__7S7863C2[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7863C6D1Ev,_ZThn240_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7863C6D0Ev,_ZThn240_N7S7863C6D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C2[] = {
  ABISELECT(-504,-284),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C5__A1__7S7863C2[] = {
  ABISELECT(504,284),
  ABISELECT(504,284),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C2[] = {
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C7__A2__7S7863C2[] = {
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C7__A2__7S7863C2[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C7__7S7863C2[] = {
  ABISELECT(616,344),
  ABISELECT(104,56),
  ABISELECT(616,344),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C7__7S7863C2[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C2[] = {
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A1__7S7863C2[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C77S7863C9__A4__7S7863C2[] = {
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A4__7S7863C2[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C77S7863C9__A1__7S7863C2[] = {
  ABISELECT(680,380),
  ABISELECT(104,56),
  ABISELECT(680,380),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C77S7863C9__A1__7S7863C2[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C9__7S7863C2[] = {
  ABISELECT(24,12),
  ABISELECT(-504,-284),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S7863C9__7S7863C2[] = {
  ABISELECT(528,296),
  ABISELECT(528,296),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C9__7S7863C2[] = {
  ABISELECT(632,352),
  ABISELECT(104,56),
  ABISELECT(632,352),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C9__7S7863C2[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
};
extern void _ZN7S7863C8D1Ev();
extern void _ZN7S7863C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C8__A1__7S7863C2[] = {
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&_ZN7S7863C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C8D0Ev,
};
extern void _ZN8S7863C10D1Ev();
extern void _ZN8S7863C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7863C107S7863C8__A1__7S7863C2[] = {
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&_ZN8S7863C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7863C10D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C58S7863C107S7863C8__A8__7S7863C2[] = {
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C58S7863C107S7863C8__A8__7S7863C2[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7863C107S7863C8__A1__7S7863C2[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__8S7863C107S7863C8__A1__7S7863C2[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C8__A9__7S7863C2[] = {
  ABISELECT(-848,-488),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C8__A9__7S7863C2[] = {
  ABISELECT(848,488),
  ABISELECT(848,488),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C8__A1__7S7863C2[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C8__A1__7S7863C2[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C8__A1__7S7863C2[] = {
  ABISELECT(64,40),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C8__A1__7S7863C2[] = {
  ABISELECT(88,52),
  ABISELECT(-504,-284),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__7S7863C8__A1__7S7863C2[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A__7S7863C8__A1__7S7863C2[] = {
  ABISELECT(-848,-488),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev),
};
static  VTT_ENTRY vtt_S7863C2[] = {
  {&(_ZTV7S7863C2[10]),  10,114},
  {&(_tg__ZTV7S7863C9__A__7S7863C2[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C9__A3__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C77S7863C9__A10__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A10__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C77S7863C9__A3__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C77S7863C9__A3__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C5__7S7863C9__A__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S7863C9__A__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C9__A__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C9__A__7S7863C2[4]),  4,6},
  {&(_ZTV7S7863C2[22]),  22,114},
  {&(_ZTV7S7863C2[27]),  27,114},
  {&(_ZTV7S7863C2[37]),  37,114},
  {&(_ZTV7S7863C2[73]),  73,114},
  {&(_ZTV7S7863C2[80]),  80,114},
  {&(_ZTV7S7863C2[45]),  45,114},
  {&(_ZTV7S7863C2[88]),  88,114},
  {&(_ZTV7S7863C2[94]),  94,114},
  {&(_ZTV7S7863C2[49]),  49,114},
  {&(_ZTV7S7863C2[54]),  54,114},
  {&(_ZTV7S7863C2[61]),  61,114},
  {&(_ZTV7S7863C2[67]),  67,114},
  {&(_ZTV7S7863C2[103]),  103,114},
  {&(_ZTV7S7863C2[107]),  107,114},
  {&(_ZTV7S7863C2[112]),  112,114},
  {&(_ZTV7S7863C2[16]),  16,114},
  {&(_tg__ZTV7S7863C3__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C3__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C3__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C3__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C6__7S7863C2[7]),  7,9},
  {&(_tg__ZTV7S7863C37S7863C6__A1__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C37S7863C6__A3__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C37S7863C6__A3__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C37S7863C6__A1__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C87S7863C6__7S7863C2[6]),  6,8},
  {&(_tg__ZTV8S7863C107S7863C87S7863C6__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C58S7863C107S7863C87S7863C6__A5__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C58S7863C107S7863C87S7863C6__A5__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7863C107S7863C87S7863C6__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__8S7863C107S7863C87S7863C6__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C87S7863C6__A6__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C87S7863C6__A6__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C87S7863C6__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C87S7863C6__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C9__7S7863C87S7863C6__7S7863C2[6]),  6,8},
  {&(_tg__ZTV7S7863C5__A1__7S7863C87S7863C6__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C77S7863C9__7S7863C87S7863C6__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C5__A__7S7863C87S7863C6__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C97S7863C6__A1__7S7863C2[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C97S7863C6__A2__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C77S7863C97S7863C6__A7__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C77S7863C97S7863C6__A7__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C77S7863C97S7863C6__A2__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C77S7863C97S7863C6__A2__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C5__7S7863C97S7863C6__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S7863C97S7863C6__A1__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C97S7863C6__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C97S7863C6__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C5__7S7863C6__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C6__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C7__7S7863C6__7S7863C2[5]),  5,7},
  {&(_tg__ZTV7S7863C3__7S7863C6__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C8__7S7863C6__7S7863C2[6]),  6,8},
  {&(_tg__ZTV7S7863C9__7S7863C6__7S7863C2[6]),  6,8},
  {&(_tg__ZTV7S7863C77S7863C9__A1__7S7863C6__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C8__A6__7S7863C6__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C9__A__7S7863C6__7S7863C2[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C9__A2__7S7863C6__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C5__A1__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C5__A1__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C7__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C7__A2__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C7__A2__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C7__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C7__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C9__7S7863C2[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C9__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C77S7863C9__A4__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A4__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C77S7863C9__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C77S7863C9__A1__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C5__7S7863C9__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S7863C9__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C9__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C9__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C8__A1__7S7863C2[6]),  6,8},
  {&(_tg__ZTV8S7863C107S7863C8__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C58S7863C107S7863C8__A8__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C58S7863C107S7863C8__A8__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7863C107S7863C8__A1__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__8S7863C107S7863C8__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C8__A9__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C8__A9__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C8__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C8__A1__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C9__7S7863C8__A1__7S7863C2[6]),  6,8},
  {&(_tg__ZTV7S7863C5__A1__7S7863C8__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C77S7863C9__7S7863C8__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C5__A__7S7863C8__A1__7S7863C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7863C2[];
extern  VTBL_ENTRY _ZTV7S7863C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C2[];
static VTBL_ENTRY alt_thunk_names194[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C6D0Ev,_ZTv0_n24_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7863C6D0Ev,_ZThn268_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C6D1Ev,_ZTv0_n24_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7863C6D1Ev,_ZThn268_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C6D0Ev,_ZTv0_n20_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C6D0Ev,_ZThn260_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C6D1Ev,_ZTv0_n20_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C6D1Ev,_ZThn260_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7863C6D0Ev,_ZThn256_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7863C6D1Ev,_ZThn256_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7863C8D0Ev,_ZThn200_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7863C8D1Ev,_ZThn200_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7863C8D0Ev,_ZThn212_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7863C8D1Ev,_ZThn212_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7863C9D0Ev,_ZThn108_N7S7863C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7863C9D1Ev,_ZThn108_N7S7863C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7863C9D0Ev,_ZThn44_N7S7863C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7863C9D0Ev,_ZThn52_N7S7863C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn696_N7S7863C9D0Ev,_ZThn392_N7S7863C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7863C9D1Ev,_ZThn44_N7S7863C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7863C9D1Ev,_ZThn52_N7S7863C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn696_N7S7863C9D1Ev,_ZThn392_N7S7863C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7863C7D0Ev,_ZThn80_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7863C7D1Ev,_ZThn80_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7863C7D0Ev,_ZThn24_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7863C7D1Ev,_ZThn24_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7863C5D0Ev,_ZThn80_N7S7863C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7863C5D1Ev,_ZThn80_N7S7863C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7863C2D0Ev,_ZTv0_n28_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N7S7863C2D0Ev,_ZThn444_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7863C2D1Ev,_ZTv0_n28_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N7S7863C2D1Ev,_ZThn444_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C2D0Ev,_ZTv0_n24_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N7S7863C2D0Ev,_ZThn404_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C2D1Ev,_ZTv0_n24_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N7S7863C2D1Ev,_ZThn404_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C2D0Ev,_ZTv0_n20_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N7S7863C2D0Ev,_ZThn396_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C2D1Ev,_ZTv0_n20_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N7S7863C2D1Ev,_ZThn396_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7863C2D0Ev,_ZTv0_n32_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7863C2D0Ev,_ZThn136_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7863C2D1Ev,_ZTv0_n32_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7863C2D1Ev,_ZThn136_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C2D0Ev,_ZTv0_n12_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7863C2D0Ev,_ZThn108_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C2D1Ev,_ZTv0_n12_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7863C2D1Ev,_ZThn108_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N7S7863C2D0Ev,_ZThn392_N7S7863C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7863C2D0Ev,_ZThn52_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N7S7863C2D1Ev,_ZThn392_N7S7863C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7863C2D1Ev,_ZThn52_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7863C2 = {  "S7863C2", // class name
  bases_S7863C2, 32,
  &(vtc_S7863C2[0]), // expected_vtbl_contents
  &(vtt_S7863C2[0]), // expected_vtt_contents
  ABISELECT(1072,616), // object size
  NSPAIRA(_ZTI7S7863C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7863C2),114, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7863C2),101, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names194,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7863C1  : S7863C2 {
  ::S19676C9 s7863c1f0;
  short s7863c1f1;
  virtual  ~S7863C1(); // _ZN7S7863C1D2Ev
  S7863C1(); // tgen
};
//SIG(1 S7863C1) C1{ BC2{ VBC3{ VBC4{ vd m Fp Fi Fc FD} BC5{ VBC4 vd} Fp[10] Fi FL} VBC6{ VBC5 VBC7{ VBC3 BC5 vd Fi} BC3 BC8{ VBC3 VBC9{ BC4 VBC5 VBC3 BC7 vd Fi} BC10{ VBC4 VBC3 BC5 vd Fp Fi FC4[3] Fi[7]} BC4 BC5 vd} BC9 vd Fs} VBC8 VBC11{ m FC12{} Fi[3]} BC9 Fs Fp[2]} vd FC4 Fs}


 S7863C1 ::~S7863C1(){ note_dtor("S7863C1", this);}
S7863C1 ::S7863C1(){ note_ctor("S7863C1", this);} // tgen

static void Test_S7863C1()
{
  extern Class_Descriptor cd_S7863C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(72,163)];
    init_test(&cd_S7863C1, buf);
    S7863C1 *dp, &lv = *(dp=new (buf) S7863C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1136,648), "sizeof(S7863C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7863C1)");
    /*is_ambiguous_... S7863C1::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C3*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C7 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C3*)(S7863C6*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*)(S7863C6*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(256,140), "S7863C1");
    check_base_class_offset(lv, (S19676C9*)(S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C8::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C8*)(S7863C6*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*)(S7863C9*)(S7863C6*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C10*)(S7863C8*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C10*)(S7863C8*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C8*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*)(S7863C9*)(S7863C2*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C3*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C2*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C7 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*), ABISELECT(152,84), "S7863C1");
    check_base_class_offset(lv, (S7863C3*)(S7863C8*)(S7863C6*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C9*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*)(S7863C9*), ABISELECT(152,84), "S7863C1");
    check_base_class_offset(lv, (S7863C3*)(S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C9*)(S7863C6*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*)(S7863C9*)(S7863C6*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C8*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C10*)(S7863C8*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C9*)(S7863C2*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*)(S7863C9*)(S7863C2*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C6*), ABISELECT(760,424), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C9*), ABISELECT(760,424), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C9*)(S7863C6*), ABISELECT(760,424), "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C9*)(S7863C2*), ABISELECT(760,424), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C7 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*), ABISELECT(768,428), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C7 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C6*), ABISELECT(768,428), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C3*)(S7863C6*), ABISELECT(304,168), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C6*), ABISELECT(304,168), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C9*), ABISELECT(784,436), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(832,464), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C9*), ABISELECT(832,464), "S7863C1");
    check_base_class_offset(lv, (S7863C9*)(S7863C8*)(S7863C6*), ABISELECT(784,436), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C9*)(S7863C8*), ABISELECT(784,436), "S7863C1");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(416,224), "S7863C1");
    check_base_class_offset(lv, (S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(416,224), "S7863C1");
    /*is_ambiguous_... S7863C8::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C8*)(S7863C6*), ABISELECT(624,348), "S7863C1");
    /*is_ambiguous_... S7863C8::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C8*)(S7863C6*), ABISELECT(672,376), "S7863C1");
    check_base_class_offset(lv, (S7863C8*)(S7863C6*), ABISELECT(416,224), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C9*)(S7863C6*), ABISELECT(688,380), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*)(S7863C9*)(S7863C6*), ABISELECT(736,408), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C9*)(S7863C6*), ABISELECT(736,408), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C9*)(S7863C6*), ABISELECT(688,380), "S7863C1");
    check_base_class_offset(lv, (S7863C6*)(S7863C2*), ABISELECT(304,168), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C10*)(S7863C8*), ABISELECT(848,476), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C10*)(S7863C8*), ABISELECT(848,476), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C8*), ABISELECT(1056,600), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C8*), ABISELECT(1104,628), "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C8*)(S7863C2*), ABISELECT(848,476), "S7863C1");
    check_base_class_offset(lv, (S19676C2*)(S7863C2*), ABISELECT(1112,632), "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C9*)(S7863C2*), 0, "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*)(S7863C9*)(S7863C2*), ABISELECT(48,28), "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C9*)(S7863C2*), ABISELECT(48,28), "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C9*)(S7863C2*), 0, "S7863C1");
    check_base_class_offset(lv, (S7863C2*), 0, "S7863C1");
    check_field_offset(lv, s7863c1f0, ABISELECT(96,52), "S7863C1.s7863c1f0");
    check_field_offset(lv, s7863c1f1, ABISELECT(144,80), "S7863C1.s7863c1f1");
    test_class_info(&lv, &cd_S7863C1);
    dp->~S7863C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7863C1(Test_S7863C1, "S7863C1", ABISELECT(1136,648));

#else // __cplusplus

extern void _ZN7S7863C1C1Ev();
extern void _ZN7S7863C1D2Ev();
Name_Map name_map_S7863C1[] = {
  NSPAIR(_ZN7S7863C1C1Ev),
  NSPAIR(_ZN7S7863C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C9;
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C10;
extern VTBL_ENTRY _ZTI8S7863C10[];
extern  VTBL_ENTRY _ZTV8S7863C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7863C10[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C8;
extern VTBL_ENTRY _ZTI7S7863C8[];
extern  VTBL_ENTRY _ZTV7S7863C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C8[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C9;
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
extern Class_Descriptor cd_S7863C6;
extern VTBL_ENTRY _ZTI7S7863C6[];
extern  VTBL_ENTRY _ZTV7S7863C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C6[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C10;
extern VTBL_ENTRY _ZTI8S7863C10[];
extern  VTBL_ENTRY _ZTV8S7863C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7863C10[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C8;
extern VTBL_ENTRY _ZTI7S7863C8[];
extern  VTBL_ENTRY _ZTV7S7863C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C8[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C9;
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
extern Class_Descriptor cd_S7863C2;
extern VTBL_ENTRY _ZTI7S7863C2[];
extern  VTBL_ENTRY _ZTV7S7863C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C2[];
static Base_Class bases_S7863C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(256,140), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7863C3,    ABISELECT(152,84), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(760,424), //bcp->offset
    69, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(768,428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(768,428), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(304,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7863C3,    ABISELECT(304,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(784,436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(832,464), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(832,464), //bcp->offset
    90, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7863C9,    ABISELECT(784,436), //bcp->offset
    82, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(416,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7863C10,    ABISELECT(416,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(624,348), //bcp->offset
    47, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(672,376), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7863C8,    ABISELECT(416,224), //bcp->offset
    39, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(688,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(736,408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(736,408), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7863C9,    ABISELECT(688,380), //bcp->offset
    56, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7863C6,    ABISELECT(304,168), //bcp->offset
    29, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(848,476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7863C10,    ABISELECT(848,476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1056,600), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(1104,628), //bcp->offset
    109, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7863C8,    ABISELECT(848,476), //bcp->offset
    96, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(1112,632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(48,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7863C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7863C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7863C1[];
extern void _ZN7S7863C1D1Ev();
extern void _ZN7S7863C1D0Ev();
extern void ABISELECT(_ZThn48_N7S7863C1D1Ev,_ZThn28_N7S7863C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C1D0Ev,_ZThn28_N7S7863C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C1D1Ev,_ZTv0_n16_N7S7863C1D1Ev)();
extern void ABISELECT(_ZThn152_N7S7863C1D1Ev,_ZThn84_N7S7863C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C1D0Ev,_ZTv0_n16_N7S7863C1D0Ev)();
extern void ABISELECT(_ZThn152_N7S7863C1D0Ev,_ZThn84_N7S7863C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C1D1Ev,_ZTv0_n12_N7S7863C1D1Ev)();
extern void ABISELECT(_ZThn256_N7S7863C1D1Ev,_ZThn140_N7S7863C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C1D0Ev,_ZTv0_n12_N7S7863C1D0Ev)();
extern void ABISELECT(_ZThn256_N7S7863C1D0Ev,_ZThn140_N7S7863C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7863C1D1Ev,_ZTv0_n32_N7S7863C1D1Ev)();
extern void ABISELECT(_ZThn304_N7S7863C1D1Ev,_ZThn168_N7S7863C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7863C1D0Ev,_ZTv0_n32_N7S7863C1D0Ev)();
extern void ABISELECT(_ZThn304_N7S7863C1D0Ev,_ZThn168_N7S7863C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N7S7863C1D1Ev,_ZTvn56_n32_N7S7863C1D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S7863C1D0Ev,_ZTvn56_n32_N7S7863C1D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7863C1D1Ev,_ZTvn180_n32_N7S7863C1D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7863C1D0Ev,_ZTvn180_n32_N7S7863C1D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7863C1D1Ev,_ZTvn208_n32_N7S7863C1D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7863C1D0Ev,_ZTvn208_n32_N7S7863C1D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7863C1D1Ev,_ZTvn212_n32_N7S7863C1D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7863C1D0Ev,_ZTvn212_n32_N7S7863C1D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7863C1D1Ev,_ZTvn240_n32_N7S7863C1D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7863C1D0Ev,_ZTvn240_n32_N7S7863C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C1D1Ev,_ZTv0_n16_N7S7863C1D1Ev)();
extern void ABISELECT(_ZThn760_N7S7863C1D1Ev,_ZThn424_N7S7863C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C1D0Ev,_ZTv0_n16_N7S7863C1D0Ev)();
extern void ABISELECT(_ZThn760_N7S7863C1D0Ev,_ZThn424_N7S7863C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7863C1D1Ev,_ZTv0_n20_N7S7863C1D1Ev)();
extern void ABISELECT(_ZThn768_N7S7863C1D1Ev,_ZThn428_N7S7863C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7863C1D0Ev,_ZTv0_n20_N7S7863C1D0Ev)();
extern void ABISELECT(_ZThn768_N7S7863C1D0Ev,_ZThn428_N7S7863C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C1D1Ev,_ZTv0_n24_N7S7863C1D1Ev)();
extern void ABISELECT(_ZThn784_N7S7863C1D1Ev,_ZThn436_N7S7863C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C1D0Ev,_ZTv0_n24_N7S7863C1D0Ev)();
extern void ABISELECT(_ZThn784_N7S7863C1D0Ev,_ZThn436_N7S7863C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S7863C1D1Ev,_ZTvn28_n24_N7S7863C1D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C1D0Ev,_ZTvn28_n24_N7S7863C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N7S7863C1D1Ev,_ZTv0_n28_N7S7863C1D1Ev)();
extern void ABISELECT(_ZThn848_N7S7863C1D1Ev,_ZThn476_N7S7863C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7863C1D0Ev,_ZTv0_n28_N7S7863C1D0Ev)();
extern void ABISELECT(_ZThn848_N7S7863C1D0Ev,_ZThn476_N7S7863C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N7S7863C1D1Ev,_ZTvn124_n28_N7S7863C1D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S7863C1D0Ev,_ZTvn124_n28_N7S7863C1D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7863C1D1Ev,_ZTvn152_n28_N7S7863C1D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7863C1D0Ev,_ZTvn152_n28_N7S7863C1D0Ev)();
static  VTBL_ENTRY vtc_S7863C1[] = {
  ABISELECT(1112,632),
  ABISELECT(848,476),
  ABISELECT(784,436),
  ABISELECT(768,428),
  ABISELECT(304,168),
  ABISELECT(152,84),
  ABISELECT(256,140),
  ABISELECT(760,424),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&_ZN7S7863C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C1D0Ev,
  ABISELECT(104,56),
  ABISELECT(208,112),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C1D1Ev,_ZThn28_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C1D0Ev,_ZThn28_N7S7863C1D0Ev),
  ABISELECT(-152,-84),
  ABISELECT(104,56),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C1D1Ev,_ZTv0_n16_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C1D0Ev,_ZTv0_n16_N7S7863C1D0Ev),
  ABISELECT(-256,-140),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C1D1Ev,_ZTv0_n12_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C1D0Ev,_ZTv0_n12_N7S7863C1D0Ev),
  ABISELECT(-304,-168),
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  ABISELECT(-304,-168),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7863C1D1Ev,_ZTv0_n32_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7863C1D0Ev,_ZTv0_n32_N7S7863C1D0Ev),
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-416,-224),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7863C1D1Ev,_ZTvn56_n32_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7863C1D0Ev,_ZTvn56_n32_N7S7863C1D0Ev),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7863C1D1Ev,_ZTvn180_n32_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7863C1D0Ev,_ZTvn180_n32_N7S7863C1D0Ev),
  ABISELECT(-416,-236),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7863C1D1Ev,_ZTvn208_n32_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7863C1D0Ev,_ZTvn208_n32_N7S7863C1D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7863C1D1Ev,_ZTvn212_n32_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7863C1D0Ev,_ZTvn212_n32_N7S7863C1D0Ev),
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-736,-408),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7863C1D1Ev,_ZTvn240_n32_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7863C1D0Ev,_ZTvn240_n32_N7S7863C1D0Ev),
  ABISELECT(-760,-424),
  ABISELECT(-504,-284),
  ABISELECT(-760,-424),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C1D1Ev,_ZTv0_n16_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C1D0Ev,_ZTv0_n16_N7S7863C1D0Ev),
  ABISELECT(-768,-428),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-768,-428),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C1D1Ev,_ZTv0_n20_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C1D0Ev,_ZTv0_n20_N7S7863C1D0Ev),
  ABISELECT(-784,-436),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-784,-436),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C1D1Ev,_ZTv0_n24_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C1D0Ev,_ZTv0_n24_N7S7863C1D0Ev),
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-832,-464),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C1D1Ev,_ZTvn28_n24_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C1D0Ev,_ZTvn28_n24_N7S7863C1D0Ev),
  ABISELECT(-848,-476),
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  ABISELECT(-848,-476),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7863C1D1Ev,_ZTv0_n28_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7863C1D0Ev,_ZTv0_n28_N7S7863C1D0Ev),
  ABISELECT(-1056,-600),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7863C1D1Ev,_ZTvn124_n28_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7863C1D0Ev,_ZTvn124_n28_N7S7863C1D0Ev),
  ABISELECT(-848,-488),
  ABISELECT(-1104,-628),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7863C1D1Ev,_ZTvn152_n28_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7863C1D0Ev,_ZTvn152_n28_N7S7863C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7863C1[];
extern void _ZN7S7863C2D1Ev();
extern void _ZN7S7863C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C2__7S7863C1[] = {
  ABISELECT(1112,632),
  ABISELECT(848,476),
  ABISELECT(784,436),
  ABISELECT(768,428),
  ABISELECT(304,168),
  ABISELECT(152,84),
  ABISELECT(256,140),
  ABISELECT(760,424),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&_ZN7S7863C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C2D0Ev,
};
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C97S7863C2__A2__7S7863C1[] = {
  ABISELECT(152,84),
  ABISELECT(256,140),
  ABISELECT(760,424),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C97S7863C2__A3__7S7863C1[] = {
  ABISELECT(104,56),
  ABISELECT(208,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C77S7863C97S7863C2__A10__7S7863C1[] = {
  ABISELECT(208,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn208_N7S7863C5D1Ev,_ZThn112_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn208_N7S7863C5D0Ev,_ZThn112_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C77S7863C97S7863C2__A10__7S7863C1[] = {
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn104_N7S7863C7D1Ev,_ZThn56_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn104_N7S7863C7D0Ev,_ZThn56_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C77S7863C97S7863C2__A3__7S7863C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(104,56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S7863C7D1Ev,_ZThn112_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S7863C7D0Ev,_ZThn112_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C77S7863C97S7863C2__A3__7S7863C1[] = {
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn760_N7S7863C9D1Ev,_ZThn424_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn760_N7S7863C9D0Ev,_ZThn424_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C97S7863C2__A2__7S7863C1[] = {
  ABISELECT(-760,-424),
  ABISELECT(-504,-284),
  ABISELECT(-760,-424),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn256_N7S7863C9D1Ev,_ZThn140_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn256_N7S7863C9D0Ev,_ZThn140_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S7863C97S7863C2__A2__7S7863C1[] = {
  ABISELECT(-256,-140),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn152_N7S7863C9D1Ev,_ZThn84_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn152_N7S7863C9D0Ev,_ZThn84_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C97S7863C2__A2__7S7863C1[] = {
  ABISELECT(-152,-84),
  ABISELECT(104,56),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C97S7863C2__A2__7S7863C1[] = {
  ABISELECT(104,56),
  ABISELECT(208,112),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn152_N7S7863C2D1Ev,_ZThn84_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn152_N7S7863C2D0Ev,_ZThn84_N7S7863C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C2__7S7863C1[] = {
  ABISELECT(-152,-84),
  ABISELECT(104,56),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C2D1Ev,_ZTv0_n12_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn256_N7S7863C2D1Ev,_ZThn140_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C2D0Ev,_ZTv0_n12_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn256_N7S7863C2D0Ev,_ZThn140_N7S7863C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C2__7S7863C1[] = {
  ABISELECT(-256,-140),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C2D1Ev,_ZTv0_n12_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C2D0Ev,_ZTv0_n12_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7863C2D1Ev,_ZTv0_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn304_N7S7863C2D1Ev,_ZThn168_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7863C2D0Ev,_ZTv0_n32_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn304_N7S7863C2D0Ev,_ZThn168_N7S7863C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C6__7S7863C2__7S7863C1[] = {
  ABISELECT(-304,-168),
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  ABISELECT(-304,-168),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7863C2D1Ev,_ZTv0_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7863C2D0Ev,_ZTv0_n32_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn760_N7S7863C2D1Ev,_ZThn424_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn760_N7S7863C2D0Ev,_ZThn424_N7S7863C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C2__7S7863C1[] = {
  ABISELECT(-760,-424),
  ABISELECT(-504,-284),
  ABISELECT(-760,-424),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7863C2D1Ev,_ZTv0_n20_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn768_N7S7863C2D1Ev,_ZThn428_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7863C2D0Ev,_ZTv0_n20_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn768_N7S7863C2D0Ev,_ZThn428_N7S7863C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C2__7S7863C1[] = {
  ABISELECT(-768,-428),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-768,-428),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C2D1Ev,_ZTv0_n20_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C2D0Ev,_ZTv0_n20_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N7S7863C2D1Ev,_ZTvn56_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S7863C2D0Ev,_ZTvn56_n32_N7S7863C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C87S7863C6__7S7863C2__7S7863C1[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-416,-224),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7863C2D1Ev,_ZTvn56_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7863C2D0Ev,_ZTvn56_n32_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7863C2D1Ev,_ZTv0_n24_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn784_N7S7863C2D1Ev,_ZThn436_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C2D0Ev,_ZTv0_n24_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn784_N7S7863C2D0Ev,_ZThn436_N7S7863C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C2__7S7863C1[] = {
  ABISELECT(-784,-436),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-784,-436),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C2D1Ev,_ZTv0_n24_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C2D0Ev,_ZTv0_n24_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7863C2D1Ev,_ZTvn28_n24_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C2D0Ev,_ZTvn28_n24_N7S7863C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A1__7S7863C2__7S7863C1[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-832,-464),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C2D1Ev,_ZTvn28_n24_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C2D0Ev,_ZTvn28_n24_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N7S7863C2D1Ev,_ZTvn180_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7863C2D0Ev,_ZTvn180_n32_N7S7863C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C97S7863C87S7863C6__A2__7S7863C2__7S7863C1[] = {
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7863C2D1Ev,_ZTvn180_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7863C2D0Ev,_ZTvn180_n32_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N7S7863C2D1Ev,_ZTvn208_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7863C2D0Ev,_ZTvn208_n32_N7S7863C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C87S7863C6__A6__7S7863C2__7S7863C1[] = {
  ABISELECT(-416,-236),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7863C2D1Ev,_ZTvn208_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7863C2D0Ev,_ZTvn208_n32_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N7S7863C2D1Ev,_ZTvn212_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7863C2D0Ev,_ZTvn212_n32_N7S7863C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C97S7863C6__A1__7S7863C2__7S7863C1[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7863C2D1Ev,_ZTvn212_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7863C2D0Ev,_ZTvn212_n32_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N7S7863C2D1Ev,_ZTvn240_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7863C2D0Ev,_ZTvn240_n32_N7S7863C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C97S7863C6__A2__7S7863C2__7S7863C1[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-736,-408),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7863C2D1Ev,_ZTvn240_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7863C2D0Ev,_ZTvn240_n32_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N7S7863C2D1Ev,_ZTv0_n28_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn848_N7S7863C2D1Ev,_ZThn476_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7863C2D0Ev,_ZTv0_n28_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn848_N7S7863C2D0Ev,_ZThn476_N7S7863C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C8__A1__7S7863C2__7S7863C1[] = {
  ABISELECT(-848,-476),
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  ABISELECT(-848,-476),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7863C2D1Ev,_ZTv0_n28_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7863C2D0Ev,_ZTv0_n28_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N7S7863C2D1Ev,_ZTvn124_n28_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S7863C2D0Ev,_ZTvn124_n28_N7S7863C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C97S7863C8__A4__7S7863C2__7S7863C1[] = {
  ABISELECT(-1056,-600),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7863C2D1Ev,_ZTvn124_n28_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7863C2D0Ev,_ZTvn124_n28_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N7S7863C2D1Ev,_ZTvn152_n28_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7863C2D0Ev,_ZTvn152_n28_N7S7863C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C8__A9__7S7863C2__7S7863C1[] = {
  ABISELECT(-848,-488),
  ABISELECT(-1104,-628),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7863C2D1Ev,_ZTvn152_n28_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7863C2D0Ev,_ZTvn152_n28_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C2D1Ev,_ZThn28_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C2D0Ev,_ZThn28_N7S7863C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A3__7S7863C2__7S7863C1[] = {
  ABISELECT(104,56),
  ABISELECT(208,112),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C2D1Ev,_ZThn28_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C2D0Ev,_ZThn28_N7S7863C2D0Ev),
};
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C1[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C3__7S7863C1[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn104_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn104_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C3__7S7863C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C3__7S7863C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
extern void _ZN7S7863C6D1Ev();
extern void _ZN7S7863C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C6__7S7863C1[] = {
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&_ZN7S7863C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C6D0Ev,
};
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C37S7863C6__A1__7S7863C1[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C37S7863C6__A3__7S7863C1[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C37S7863C6__A3__7S7863C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C37S7863C6__A1__7S7863C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
extern void _ZN7S7863C8D1Ev();
extern void _ZN7S7863C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&_ZN7S7863C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C8D0Ev,
};
extern void _ZN8S7863C10D1Ev();
extern void _ZN8S7863C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7863C107S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&_ZN8S7863C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7863C10D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C58S7863C107S7863C87S7863C6__A5__7S7863C1[] = {
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C58S7863C107S7863C87S7863C6__A5__7S7863C1[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7863C107S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__8S7863C107S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C87S7863C6__A6__7S7863C1[] = {
  ABISELECT(-416,-236),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C87S7863C6__A6__7S7863C1[] = {
  ABISELECT(416,236),
  ABISELECT(416,236),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn368_N7S7863C8D1Ev,_ZThn212_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn368_N7S7863C8D0Ev,_ZThn212_N7S7863C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(-368,-212),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn344_N7S7863C8D1Ev,_ZThn200_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn344_N7S7863C8D0Ev,_ZThn200_N7S7863C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(-344,-200),
  ABISELECT(-504,-284),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__7S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A__7S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(-416,-236),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev),
};
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C97S7863C6__A1__7S7863C1[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C97S7863C6__A2__7S7863C1[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C77S7863C97S7863C6__A7__7S7863C1[] = {
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C77S7863C97S7863C6__A7__7S7863C1[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C77S7863C97S7863C6__A2__7S7863C1[] = {
  ABISELECT(584,324),
  ABISELECT(104,56),
  ABISELECT(584,324),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C77S7863C97S7863C6__A2__7S7863C1[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn72_N7S7863C9D1Ev,_ZThn44_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn72_N7S7863C9D0Ev,_ZThn44_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C97S7863C6__A1__7S7863C1[] = {
  ABISELECT(-72,-44),
  ABISELECT(-504,-284),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S7863C97S7863C6__A1__7S7863C1[] = {
  ABISELECT(432,240),
  ABISELECT(432,240),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C97S7863C6__A1__7S7863C1[] = {
  ABISELECT(536,296),
  ABISELECT(104,56),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C97S7863C6__A1__7S7863C1[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn456_N7S7863C6D1Ev,_ZThn256_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn456_N7S7863C6D0Ev,_ZThn256_N7S7863C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C6__7S7863C1[] = {
  ABISELECT(-456,-256),
  ABISELECT(-504,-284),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C6D1Ev,_ZTv0_n12_N7S7863C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C6D0Ev,_ZTv0_n12_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C6__7S7863C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C6D1Ev,_ZTv0_n12_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C6D0Ev,_ZTv0_n12_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7863C6D1Ev,_ZTv0_n20_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn464_N7S7863C6D1Ev,_ZThn260_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7863C6D0Ev,_ZTv0_n20_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn464_N7S7863C6D0Ev,_ZThn260_N7S7863C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C6__7S7863C1[] = {
  ABISELECT(-464,-260),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C6D1Ev,_ZTv0_n20_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C6D0Ev,_ZTv0_n20_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C6__7S7863C1[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZThn112_N7S7863C6D1Ev,_ZThn56_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7863C6D0Ev,_ZThn56_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C8__7S7863C6__7S7863C1[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7863C6D1Ev,_ZThn56_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7863C6D0Ev,_ZThn56_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7863C6D1Ev,_ZTv0_n24_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn480_N7S7863C6D1Ev,_ZThn268_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C6D0Ev,_ZTv0_n24_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn480_N7S7863C6D0Ev,_ZThn268_N7S7863C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C6__7S7863C1[] = {
  ABISELECT(-480,-268),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-480,-268),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C6D1Ev,_ZTv0_n24_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C6D0Ev,_ZTv0_n24_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7863C6D1Ev,_ZTvn28_n24_N7S7863C6D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C6D0Ev,_ZTvn28_n24_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A1__7S7863C6__7S7863C1[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C6D1Ev,_ZTvn28_n24_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C6D0Ev,_ZTvn28_n24_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZThn368_N7S7863C6D1Ev,_ZThn208_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn368_N7S7863C6D0Ev,_ZThn208_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C8__A6__7S7863C6__7S7863C1[] = {
  ABISELECT(-416,-236),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7863C6D1Ev,_ZThn208_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7863C6D0Ev,_ZThn208_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZThn384_N7S7863C6D1Ev,_ZThn212_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn384_N7S7863C6D0Ev,_ZThn212_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C9__A__7S7863C6__7S7863C1[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7863C6D1Ev,_ZThn212_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7863C6D0Ev,_ZThn212_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZThn432_N7S7863C6D1Ev,_ZThn240_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn432_N7S7863C6D0Ev,_ZThn240_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A2__7S7863C6__7S7863C1[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7863C6D1Ev,_ZThn240_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7863C6D0Ev,_ZThn240_N7S7863C6D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C1[] = {
  ABISELECT(-504,-284),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C5__A1__7S7863C1[] = {
  ABISELECT(504,284),
  ABISELECT(504,284),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C1[] = {
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C7__A2__7S7863C1[] = {
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C7__A2__7S7863C1[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C7__7S7863C1[] = {
  ABISELECT(616,344),
  ABISELECT(104,56),
  ABISELECT(616,344),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C7__7S7863C1[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C1[] = {
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A1__7S7863C1[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C77S7863C9__A4__7S7863C1[] = {
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A4__7S7863C1[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C77S7863C9__A1__7S7863C1[] = {
  ABISELECT(680,380),
  ABISELECT(104,56),
  ABISELECT(680,380),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C77S7863C9__A1__7S7863C1[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C9__7S7863C1[] = {
  ABISELECT(24,12),
  ABISELECT(-504,-284),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S7863C9__7S7863C1[] = {
  ABISELECT(528,296),
  ABISELECT(528,296),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C9__7S7863C1[] = {
  ABISELECT(632,352),
  ABISELECT(104,56),
  ABISELECT(632,352),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C9__7S7863C1[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
};
extern void _ZN7S7863C8D1Ev();
extern void _ZN7S7863C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C8__A1__7S7863C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&_ZN7S7863C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C8D0Ev,
};
extern void _ZN8S7863C10D1Ev();
extern void _ZN8S7863C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7863C107S7863C8__A1__7S7863C1[] = {
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&_ZN8S7863C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7863C10D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C58S7863C107S7863C8__A8__7S7863C1[] = {
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C58S7863C107S7863C8__A8__7S7863C1[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7863C107S7863C8__A1__7S7863C1[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__8S7863C107S7863C8__A1__7S7863C1[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C8__A9__7S7863C1[] = {
  ABISELECT(-848,-488),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C8__A9__7S7863C1[] = {
  ABISELECT(848,488),
  ABISELECT(848,488),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C8__A1__7S7863C1[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C8__A1__7S7863C1[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C8__A1__7S7863C1[] = {
  ABISELECT(64,40),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C8__A1__7S7863C1[] = {
  ABISELECT(88,52),
  ABISELECT(-504,-284),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__7S7863C8__A1__7S7863C1[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A__7S7863C8__A1__7S7863C1[] = {
  ABISELECT(-848,-488),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev),
};
static  VTT_ENTRY vtt_S7863C1[] = {
  {&(_ZTV7S7863C1[10]),  10,114},
  {&(_tg__ZTV7S7863C2__7S7863C1[10]),  10,12},
  {&(_tg__ZTV7S7863C97S7863C2__A2__7S7863C1[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C97S7863C2__A3__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C77S7863C97S7863C2__A10__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C77S7863C97S7863C2__A10__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C77S7863C97S7863C2__A3__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C77S7863C97S7863C2__A3__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C5__7S7863C97S7863C2__A2__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S7863C97S7863C2__A2__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C97S7863C2__A2__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C97S7863C2__A2__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C3__7S7863C2__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C2__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C6__7S7863C2__7S7863C1[8]),  8,10},
  {&(_tg__ZTV7S7863C5__A1__7S7863C2__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C2__7S7863C1[5]),  5,7},
  {&(_tg__ZTV7S7863C87S7863C6__7S7863C2__7S7863C1[6]),  6,8},
  {&(_tg__ZTV7S7863C9__7S7863C2__7S7863C1[6]),  6,8},
  {&(_tg__ZTV7S7863C77S7863C9__A1__7S7863C2__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C97S7863C87S7863C6__A2__7S7863C2__7S7863C1[2]),  2,4},
  {&(_tg__ZTV7S7863C57S7863C87S7863C6__A6__7S7863C2__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C97S7863C6__A1__7S7863C2__7S7863C1[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C97S7863C6__A2__7S7863C2__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C8__A1__7S7863C2__7S7863C1[7]),  7,9},
  {&(_tg__ZTV8S19676C97S7863C8__A4__7S7863C2__7S7863C1[2]),  2,4},
  {&(_tg__ZTV7S7863C57S7863C8__A9__7S7863C2__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C77S7863C9__A3__7S7863C2__7S7863C1[4]),  4,6},
  {&(_ZTV7S7863C1[22]),  22,114},
  {&(_ZTV7S7863C1[27]),  27,114},
  {&(_ZTV7S7863C1[37]),  37,114},
  {&(_ZTV7S7863C1[73]),  73,114},
  {&(_ZTV7S7863C1[80]),  80,114},
  {&(_ZTV7S7863C1[45]),  45,114},
  {&(_ZTV7S7863C1[88]),  88,114},
  {&(_ZTV7S7863C1[94]),  94,114},
  {&(_ZTV7S7863C1[49]),  49,114},
  {&(_ZTV7S7863C1[54]),  54,114},
  {&(_ZTV7S7863C1[61]),  61,114},
  {&(_ZTV7S7863C1[67]),  67,114},
  {&(_ZTV7S7863C1[103]),  103,114},
  {&(_ZTV7S7863C1[107]),  107,114},
  {&(_ZTV7S7863C1[112]),  112,114},
  {&(_ZTV7S7863C1[16]),  16,114},
  {&(_tg__ZTV7S7863C3__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C3__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C3__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C3__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C6__7S7863C1[7]),  7,9},
  {&(_tg__ZTV7S7863C37S7863C6__A1__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C37S7863C6__A3__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C37S7863C6__A3__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C37S7863C6__A1__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C87S7863C6__7S7863C1[6]),  6,8},
  {&(_tg__ZTV8S7863C107S7863C87S7863C6__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C58S7863C107S7863C87S7863C6__A5__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C58S7863C107S7863C87S7863C6__A5__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7863C107S7863C87S7863C6__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__8S7863C107S7863C87S7863C6__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C87S7863C6__A6__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C87S7863C6__A6__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C87S7863C6__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C87S7863C6__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C9__7S7863C87S7863C6__7S7863C1[6]),  6,8},
  {&(_tg__ZTV7S7863C5__A1__7S7863C87S7863C6__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C77S7863C9__7S7863C87S7863C6__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C5__A__7S7863C87S7863C6__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C97S7863C6__A1__7S7863C1[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C97S7863C6__A2__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C77S7863C97S7863C6__A7__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C77S7863C97S7863C6__A7__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C77S7863C97S7863C6__A2__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C77S7863C97S7863C6__A2__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C5__7S7863C97S7863C6__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S7863C97S7863C6__A1__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C97S7863C6__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C97S7863C6__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C5__7S7863C6__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C6__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C7__7S7863C6__7S7863C1[5]),  5,7},
  {&(_tg__ZTV7S7863C3__7S7863C6__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C8__7S7863C6__7S7863C1[6]),  6,8},
  {&(_tg__ZTV7S7863C9__7S7863C6__7S7863C1[6]),  6,8},
  {&(_tg__ZTV7S7863C77S7863C9__A1__7S7863C6__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C8__A6__7S7863C6__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C9__A__7S7863C6__7S7863C1[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C9__A2__7S7863C6__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C5__A1__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C5__A1__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C7__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C7__A2__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C7__A2__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C7__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C7__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C9__7S7863C1[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C9__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C77S7863C9__A4__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A4__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C77S7863C9__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C77S7863C9__A1__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C5__7S7863C9__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S7863C9__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C9__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C9__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C8__A1__7S7863C1[6]),  6,8},
  {&(_tg__ZTV8S7863C107S7863C8__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C58S7863C107S7863C8__A8__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C58S7863C107S7863C8__A8__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7863C107S7863C8__A1__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__8S7863C107S7863C8__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C8__A9__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C8__A9__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C8__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C8__A1__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C9__7S7863C8__A1__7S7863C1[6]),  6,8},
  {&(_tg__ZTV7S7863C5__A1__7S7863C8__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C77S7863C9__7S7863C8__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C5__A__7S7863C8__A1__7S7863C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7863C1[];
extern  VTBL_ENTRY _ZTV7S7863C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C1[];
static VTBL_ENTRY alt_thunk_names195[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C6D0Ev,_ZTv0_n24_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7863C6D0Ev,_ZThn268_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C6D1Ev,_ZTv0_n24_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7863C6D1Ev,_ZThn268_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C6D0Ev,_ZTv0_n20_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C6D0Ev,_ZThn260_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C6D1Ev,_ZTv0_n20_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C6D1Ev,_ZThn260_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7863C6D0Ev,_ZThn256_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7863C6D1Ev,_ZThn256_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7863C8D0Ev,_ZThn200_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7863C8D1Ev,_ZThn200_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7863C8D0Ev,_ZThn212_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7863C8D1Ev,_ZThn212_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7863C2D0Ev,_ZTv0_n28_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N7S7863C2D0Ev,_ZThn476_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7863C2D1Ev,_ZTv0_n28_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N7S7863C2D1Ev,_ZThn476_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C2D0Ev,_ZTv0_n24_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N7S7863C2D0Ev,_ZThn436_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C2D1Ev,_ZTv0_n24_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N7S7863C2D1Ev,_ZThn436_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C2D0Ev,_ZTv0_n20_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N7S7863C2D0Ev,_ZThn428_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C2D1Ev,_ZTv0_n20_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N7S7863C2D1Ev,_ZThn428_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7863C2D0Ev,_ZTv0_n32_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S7863C2D0Ev,_ZThn168_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7863C2D1Ev,_ZTv0_n32_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S7863C2D1Ev,_ZThn168_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C2D0Ev,_ZTv0_n12_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7863C2D0Ev,_ZThn140_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C2D1Ev,_ZTv0_n12_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7863C2D1Ev,_ZThn140_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn760_N7S7863C2D0Ev,_ZThn424_N7S7863C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7863C2D0Ev,_ZThn84_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn760_N7S7863C2D1Ev,_ZThn424_N7S7863C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7863C2D1Ev,_ZThn84_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7863C9D0Ev,_ZThn140_N7S7863C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7863C9D1Ev,_ZThn140_N7S7863C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7863C9D0Ev,_ZThn44_N7S7863C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7863C9D0Ev,_ZThn84_N7S7863C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn760_N7S7863C9D0Ev,_ZThn424_N7S7863C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7863C9D1Ev,_ZThn44_N7S7863C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7863C9D1Ev,_ZThn84_N7S7863C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn760_N7S7863C9D1Ev,_ZThn424_N7S7863C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7863C7D0Ev,_ZThn112_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7863C7D1Ev,_ZThn112_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C7D0Ev,_ZThn56_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C7D1Ev,_ZThn56_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7863C5D0Ev,_ZThn112_N7S7863C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7863C5D1Ev,_ZThn112_N7S7863C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7863C1D0Ev,_ZTv0_n28_N7S7863C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N7S7863C1D0Ev,_ZThn476_N7S7863C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7863C1D1Ev,_ZTv0_n28_N7S7863C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N7S7863C1D1Ev,_ZThn476_N7S7863C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C1D0Ev,_ZTv0_n24_N7S7863C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N7S7863C1D0Ev,_ZThn436_N7S7863C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C1D1Ev,_ZTv0_n24_N7S7863C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N7S7863C1D1Ev,_ZThn436_N7S7863C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C1D0Ev,_ZTv0_n20_N7S7863C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N7S7863C1D0Ev,_ZThn428_N7S7863C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C1D1Ev,_ZTv0_n20_N7S7863C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N7S7863C1D1Ev,_ZThn428_N7S7863C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7863C1D0Ev,_ZTv0_n32_N7S7863C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S7863C1D0Ev,_ZThn168_N7S7863C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7863C1D1Ev,_ZTv0_n32_N7S7863C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S7863C1D1Ev,_ZThn168_N7S7863C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C1D0Ev,_ZTv0_n12_N7S7863C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7863C1D0Ev,_ZThn140_N7S7863C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C1D1Ev,_ZTv0_n12_N7S7863C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7863C1D1Ev,_ZThn140_N7S7863C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C1D0Ev,_ZTv0_n16_N7S7863C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn760_N7S7863C1D0Ev,_ZThn424_N7S7863C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7863C1D0Ev,_ZThn84_N7S7863C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C1D1Ev,_ZTv0_n16_N7S7863C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn760_N7S7863C1D1Ev,_ZThn424_N7S7863C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7863C1D1Ev,_ZThn84_N7S7863C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7863C1 = {  "S7863C1", // class name
  bases_S7863C1, 33,
  &(vtc_S7863C1[0]), // expected_vtbl_contents
  &(vtt_S7863C1[0]), // expected_vtt_contents
  ABISELECT(1136,648), // object size
  NSPAIRA(_ZTI7S7863C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7863C1),114, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7863C1),118, //virtual table table var
  32, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names195,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7317C4  {
  void *s7317c4f0;
  char s7317c4f1[5];
  __tsi64 s7317c4f2;
  void *s7317c4f3[2];
  virtual void  v4(); // _ZN7S7317C42v4Ev
  ~S7317C4(); // tgen
  S7317C4(); // tgen
};
//SIG(-1 S7317C4) C1{ v1 Fp Fc[5] FL Fp[2]}


void  S7317C4 ::v4(){vfunc_called(this, "_ZN7S7317C42v4Ev");}
S7317C4 ::~S7317C4(){ note_dtor("S7317C4", this);} // tgen
S7317C4 ::S7317C4(){ note_ctor("S7317C4", this);} // tgen

static void Test_S7317C4()
{
  extern Class_Descriptor cd_S7317C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S7317C4, buf);
    S7317C4 *dp, &lv = *(dp=new (buf) S7317C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S7317C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7317C4)");
    check_field_offset(lv, s7317c4f0, ABISELECT(8,4), "S7317C4.s7317c4f0");
    check_field_offset(lv, s7317c4f1, ABISELECT(16,8), "S7317C4.s7317c4f1");
    check_field_offset(lv, s7317c4f2, ABISELECT(24,16), "S7317C4.s7317c4f2");
    check_field_offset(lv, s7317c4f3, ABISELECT(32,24), "S7317C4.s7317c4f3");
    test_class_info(&lv, &cd_S7317C4);
    dp->~S7317C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7317C4(Test_S7317C4, "S7317C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S7317C4C1Ev();
extern void _ZN7S7317C4D1Ev();
Name_Map name_map_S7317C4[] = {
  NSPAIR(_ZN7S7317C4C1Ev),
  NSPAIR(_ZN7S7317C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7317C4[];
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY vtc_S7317C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C4[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
Class_Descriptor cd_S7317C4 = {  "S7317C4", // class name
  0,0,//no base classes
  &(vtc_S7317C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S7317C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7317C4),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7317C3  : S7317C4 {
  ::S7317C4 s7317c3f0;
  char s7317c3f1[2];
  void *s7317c3f2;
  virtual void  v5(); // _ZN7S7317C32v5Ev
  virtual void  v6(); // _ZN7S7317C32v6Ev
  virtual void  v7(); // _ZN7S7317C32v7Ev
  ~S7317C3(); // tgen
  S7317C3(); // tgen
};
//SIG(-1 S7317C3) C1{ BC2{ v4 Fp Fc[5] FL Fp[2]} v1 v2 v3 FC2 Fc[2] Fp}


void  S7317C3 ::v5(){vfunc_called(this, "_ZN7S7317C32v5Ev");}
void  S7317C3 ::v6(){vfunc_called(this, "_ZN7S7317C32v6Ev");}
void  S7317C3 ::v7(){vfunc_called(this, "_ZN7S7317C32v7Ev");}
S7317C3 ::~S7317C3(){ note_dtor("S7317C3", this);} // tgen
S7317C3 ::S7317C3(){ note_ctor("S7317C3", this);} // tgen

static void Test_S7317C3()
{
  extern Class_Descriptor cd_S7317C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S7317C3, buf);
    S7317C3 *dp, &lv = *(dp=new (buf) S7317C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S7317C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7317C3)");
    check_base_class_offset(lv, (S7317C4*), 0, "S7317C3");
    check_field_offset(lv, s7317c3f0, ABISELECT(48,32), "S7317C3.s7317c3f0");
    check_field_offset(lv, s7317c3f1, ABISELECT(96,64), "S7317C3.s7317c3f1");
    check_field_offset(lv, s7317c3f2, ABISELECT(104,68), "S7317C3.s7317c3f2");
    test_class_info(&lv, &cd_S7317C3);
    dp->~S7317C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7317C3(Test_S7317C3, "S7317C3", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN7S7317C3C1Ev();
extern void _ZN7S7317C3D1Ev();
Name_Map name_map_S7317C3[] = {
  NSPAIR(_ZN7S7317C3C1Ev),
  NSPAIR(_ZN7S7317C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
static Base_Class bases_S7317C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7317C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7317C3[];
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY vtc_S7317C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C3[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
Class_Descriptor cd_S7317C3 = {  "S7317C3", // class name
  bases_S7317C3, 1,
  &(vtc_S7317C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI7S7317C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7317C3),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7317C2  : virtual S7317C3 , virtual S7317C4 {
  int s7317c2f0;
  virtual void  v8(); // _ZN7S7317C22v8Ev
  ~S7317C2(); // tgen
  S7317C2(); // tgen
};
//SIG(-1 S7317C2) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} VBC3 v1 Fi}


void  S7317C2 ::v8(){vfunc_called(this, "_ZN7S7317C22v8Ev");}
S7317C2 ::~S7317C2(){ note_dtor("S7317C2", this);} // tgen
S7317C2 ::S7317C2(){ note_ctor("S7317C2", this);} // tgen

static void Test_S7317C2()
{
  extern Class_Descriptor cd_S7317C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,29)];
    init_test(&cd_S7317C2, buf);
    S7317C2 *dp, &lv = *(dp=new (buf) S7317C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,112), "sizeof(S7317C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7317C2)");
    check_base_class_offset(lv, (S7317C4*)(S7317C3*), ABISELECT(16,8), "S7317C2");
    check_base_class_offset(lv, (S7317C3*), ABISELECT(16,8), "S7317C2");
    /*is_ambiguous_... S7317C2::S7317C4 */ AMB_check_base_class_offset(lv, (S7317C4*), ABISELECT(128,80), "S7317C2");
    check_field_offset(lv, s7317c2f0, ABISELECT(8,4), "S7317C2.s7317c2f0");
    test_class_info(&lv, &cd_S7317C2);
    dp->~S7317C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7317C2(Test_S7317C2, "S7317C2", ABISELECT(176,112));

#else // __cplusplus

extern void _ZN7S7317C2C1Ev();
extern void _ZN7S7317C2D1Ev();
Name_Map name_map_S7317C2[] = {
  NSPAIR(_ZN7S7317C2C1Ev),
  NSPAIR(_ZN7S7317C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
static Base_Class bases_S7317C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7317C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7317C4,    ABISELECT(128,80), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7317C2[];
extern void _ZN7S7317C22v8Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY vtc_S7317C2[] = {
  ABISELECT(128,80),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  0,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S7317C2[];
static  VTT_ENTRY vtt_S7317C2[] = {
  {&(_ZTV7S7317C2[4]),  4,19},
  {&(_ZTV7S7317C2[11]),  11,19},
  {&(_ZTV7S7317C2[18]),  18,19},
};
extern VTBL_ENTRY _ZTI7S7317C2[];
extern  VTBL_ENTRY _ZTV7S7317C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C2[];
Class_Descriptor cd_S7317C2 = {  "S7317C2", // class name
  bases_S7317C2, 3,
  &(vtc_S7317C2[0]), // expected_vtbl_contents
  &(vtt_S7317C2[0]), // expected_vtt_contents
  ABISELECT(176,112), // object size
  NSPAIRA(_ZTI7S7317C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7317C2),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7317C2),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7317C6  : S7317C2 , S7317C3 , S7317C4 {
  virtual  ~S7317C6(); // _ZN7S7317C6D2Ev
  virtual void  v9(); // _ZN7S7317C62v9Ev
  S7317C6(); // tgen
};
//SIG(-1 S7317C6) C1{ BC2{ VBC3{ BC4{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC4 Fc[2] Fp} VBC4 v6 Fi} BC3 BC4 vd v1}


 S7317C6 ::~S7317C6(){ note_dtor("S7317C6", this);}
void  S7317C6 ::v9(){vfunc_called(this, "_ZN7S7317C62v9Ev");}
S7317C6 ::S7317C6(){ note_ctor("S7317C6", this);} // tgen

static void Test_S7317C6()
{
  extern Class_Descriptor cd_S7317C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,55)];
    init_test(&cd_S7317C6, buf);
    S7317C6 *dp, &lv = *(dp=new (buf) S7317C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,216), "sizeof(S7317C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7317C6)");
    /*is_ambiguous_... S7317C6::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C3*), ABISELECT(176,112), "S7317C6");
    check_base_class_offset(lv, (S7317C3*)(S7317C2*), ABISELECT(176,112), "S7317C6");
    /*is_ambiguous_... S7317C2::S7317C4 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C2*), ABISELECT(288,184), "S7317C6");
    check_base_class_offset(lv, (S7317C2*), 0, "S7317C6");
    /*is_ambiguous_... S7317C6::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C3*), ABISELECT(16,8), "S7317C6");
    /*is_ambiguous_... S7317C6::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C3*), ABISELECT(16,8), "S7317C6");
    /*is_ambiguous_... S7317C6::S7317C4 */ AMB_check_base_class_offset(lv, (S7317C4*), ABISELECT(128,80), "S7317C6");
    test_class_info(&lv, &cd_S7317C6);
    dp->~S7317C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7317C6(Test_S7317C6, "S7317C6", ABISELECT(336,216));

#else // __cplusplus

extern void _ZN7S7317C6C1Ev();
extern void _ZN7S7317C6D2Ev();
Name_Map name_map_S7317C6[] = {
  NSPAIR(_ZN7S7317C6C1Ev),
  NSPAIR(_ZN7S7317C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C2;
extern VTBL_ENTRY _ZTI7S7317C2[];
extern  VTBL_ENTRY _ZTV7S7317C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C2[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
static Base_Class bases_S7317C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7317C4,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(176,112), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7317C4,    ABISELECT(288,184), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7317C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7317C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7317C4,    ABISELECT(128,80), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7317C6[];
extern void _ZN7S7317C22v8Ev();
extern void _ZN7S7317C6D1Ev();
extern void _ZN7S7317C6D0Ev();
extern void _ZN7S7317C62v9Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY vtc_S7317C6[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7317C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7317C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7317C62v9Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S7317C6[];
extern void _ZN7S7317C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C2__7S7317C6[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
};
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C3__7S7317C2__7S7317C6[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C4__A1__7S7317C2__7S7317C6[] = {
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
static  VTT_ENTRY vtt_S7317C6[] = {
  {&(_ZTV7S7317C6[4]),  4,31},
  {&(_tg__ZTV7S7317C2__7S7317C6[4]),  4,5},
  {&(_tg__ZTV7S7317C3__7S7317C2__7S7317C6[6]),  6,10},
  {&(_tg__ZTV7S7317C4__A1__7S7317C2__7S7317C6[3]),  3,4},
  {&(_ZTV7S7317C6[23]),  23,31},
  {&(_ZTV7S7317C6[30]),  30,31},
};
extern VTBL_ENTRY _ZTI7S7317C6[];
extern  VTBL_ENTRY _ZTV7S7317C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C6[];
Class_Descriptor cd_S7317C6 = {  "S7317C6", // class name
  bases_S7317C6, 7,
  &(vtc_S7317C6[0]), // expected_vtbl_contents
  &(vtt_S7317C6[0]), // expected_vtt_contents
  ABISELECT(336,216), // object size
  NSPAIRA(_ZTI7S7317C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7317C6),31, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7317C6),6, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7317C7  {
  int s7317c7f0;
  char s7317c7f1[7];
  void *s7317c7f2;
  int s7317c7f3;
  short s7317c7f4;
  virtual void  v10(); // _ZN7S7317C73v10Ev
  virtual void  v11(); // _ZN7S7317C73v11Ev
  ~S7317C7(); // tgen
  S7317C7(); // tgen
};
//SIG(-1 S7317C7) C1{ v1 v2 Fi Fc[7] Fp Fi Fs}


void  S7317C7 ::v10(){vfunc_called(this, "_ZN7S7317C73v10Ev");}
void  S7317C7 ::v11(){vfunc_called(this, "_ZN7S7317C73v11Ev");}
S7317C7 ::~S7317C7(){ note_dtor("S7317C7", this);} // tgen
S7317C7 ::S7317C7(){ note_ctor("S7317C7", this);} // tgen

static void Test_S7317C7()
{
  extern Class_Descriptor cd_S7317C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S7317C7, buf);
    S7317C7 *dp, &lv = *(dp=new (buf) S7317C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S7317C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7317C7)");
    check_field_offset(lv, s7317c7f0, ABISELECT(8,4), "S7317C7.s7317c7f0");
    check_field_offset(lv, s7317c7f1, ABISELECT(12,8), "S7317C7.s7317c7f1");
    check_field_offset(lv, s7317c7f2, ABISELECT(24,16), "S7317C7.s7317c7f2");
    check_field_offset(lv, s7317c7f3, ABISELECT(32,20), "S7317C7.s7317c7f3");
    check_field_offset(lv, s7317c7f4, ABISELECT(36,24), "S7317C7.s7317c7f4");
    test_class_info(&lv, &cd_S7317C7);
    dp->~S7317C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7317C7(Test_S7317C7, "S7317C7", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S7317C7C1Ev();
extern void _ZN7S7317C7D1Ev();
Name_Map name_map_S7317C7[] = {
  NSPAIR(_ZN7S7317C7C1Ev),
  NSPAIR(_ZN7S7317C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7317C7[];
extern void _ZN7S7317C73v10Ev();
extern void _ZN7S7317C73v11Ev();
static  VTBL_ENTRY vtc_S7317C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C7[0]),
  (VTBL_ENTRY)&_ZN7S7317C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7317C73v11Ev,
};
extern VTBL_ENTRY _ZTI7S7317C7[];
extern  VTBL_ENTRY _ZTV7S7317C7[];
Class_Descriptor cd_S7317C7 = {  "S7317C7", // class name
  0,0,//no base classes
  &(vtc_S7317C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S7317C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7317C7),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7317C5  : S7317C6 , S7317C3 , S7317C2 , virtual S7317C7 {
  int s7317c5f0;
  virtual void  v12(); // _ZN7S7317C53v12Ev
  virtual void  v13(); // _ZN7S7317C53v13Ev
  virtual void  v14(); // _ZN7S7317C53v14Ev
  ~S7317C5(); // tgen
  S7317C5(); // tgen
};
//SIG(-1 S7317C5) C1{ BC2{ BC3{ VBC4{ BC5{ v4 Fp Fc[5] FL Fp[2]} v5 v6 v7 FC5 Fc[2] Fp} VBC5 v8 Fi} BC4 BC5 vd v9} BC4 BC3 VBC6{ v10 v11 Fi Fc[7] Fp Fi Fs} v1 v2 v3 Fi}


void  S7317C5 ::v12(){vfunc_called(this, "_ZN7S7317C53v12Ev");}
void  S7317C5 ::v13(){vfunc_called(this, "_ZN7S7317C53v13Ev");}
void  S7317C5 ::v14(){vfunc_called(this, "_ZN7S7317C53v14Ev");}
S7317C5 ::~S7317C5(){ note_dtor("S7317C5", this);} // tgen
S7317C5 ::S7317C5(){ note_ctor("S7317C5", this);} // tgen

static void Test_S7317C5()
{
  extern Class_Descriptor cd_S7317C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(64,83)];
    init_test(&cd_S7317C5, buf);
    S7317C5 *dp, &lv = *(dp=new (buf) S7317C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(504,328), "sizeof(S7317C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7317C5)");
    /*is_ambiguous_... S7317C5::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C3*), ABISELECT(304,196), "S7317C5");
    check_base_class_offset(lv, (S7317C3*)(S7317C2*)(S7317C6*), ABISELECT(304,196), "S7317C5");
    /*is_ambiguous_... S7317C5::S7317C2 */ AMB_check_base_class_offset(lv, (S7317C3*)(S7317C2*), ABISELECT(304,196), "S7317C5");
    /*is_ambiguous_... S7317C2::S7317C4 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C2*)(S7317C6*), ABISELECT(416,268), "S7317C5");
    /*is_ambiguous_... S7317C5::S7317C2 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C2*), ABISELECT(416,268), "S7317C5");
    check_base_class_offset(lv, (S7317C2*)(S7317C6*), 0, "S7317C5");
    /*is_ambiguous_... S7317C6::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C3*)(S7317C6*), ABISELECT(16,8), "S7317C5");
    /*is_ambiguous_... S7317C6::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C3*)(S7317C6*), ABISELECT(16,8), "S7317C5");
    /*is_ambiguous_... S7317C6::S7317C4 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C6*), ABISELECT(128,80), "S7317C5");
    check_base_class_offset(lv, (S7317C6*), 0, "S7317C5");
    /*is_ambiguous_... S7317C5::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C3*), ABISELECT(176,112), "S7317C5");
    /*is_ambiguous_... S7317C5::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C3*), ABISELECT(176,112), "S7317C5");
    /*is_ambiguous_... S7317C5::S7317C2 */ AMB_check_base_class_offset(lv, (S7317C2*), ABISELECT(288,184), "S7317C5");
    check_base_class_offset(lv, (S7317C7*), ABISELECT(464,300), "S7317C5");
    check_field_offset(lv, s7317c5f0, ABISELECT(300,192), "S7317C5.s7317c5f0");
    test_class_info(&lv, &cd_S7317C5);
    dp->~S7317C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7317C5(Test_S7317C5, "S7317C5", ABISELECT(504,328));

#else // __cplusplus

extern void _ZN7S7317C5C1Ev();
extern void _ZN7S7317C5D1Ev();
Name_Map name_map_S7317C5[] = {
  NSPAIR(_ZN7S7317C5C1Ev),
  NSPAIR(_ZN7S7317C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C2;
extern VTBL_ENTRY _ZTI7S7317C2[];
extern  VTBL_ENTRY _ZTV7S7317C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C2[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C6;
extern VTBL_ENTRY _ZTI7S7317C6[];
extern  VTBL_ENTRY _ZTV7S7317C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C6[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
extern Class_Descriptor cd_S7317C2;
extern VTBL_ENTRY _ZTI7S7317C2[];
extern  VTBL_ENTRY _ZTV7S7317C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C2[];
extern Class_Descriptor cd_S7317C7;
extern VTBL_ENTRY _ZTI7S7317C7[];
extern  VTBL_ENTRY _ZTV7S7317C7[];
static Base_Class bases_S7317C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7317C4,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(304,196), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7317C4,    ABISELECT(416,268), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7317C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7317C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7317C4,    ABISELECT(128,80), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7317C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7317C4,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(176,112), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7317C2,    ABISELECT(288,184), //bcp->offset
    27, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7317C7,    ABISELECT(464,300), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7317C5[];
extern void _ZN7S7317C22v8Ev();
extern void _ZN7S7317C5D1Ev();
extern void _ZN7S7317C5D0Ev();
extern void _ZN7S7317C62v9Ev();
extern void _ZN7S7317C53v12Ev();
extern void _ZN7S7317C53v13Ev();
extern void _ZN7S7317C53v14Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C22v8Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C73v10Ev();
extern void _ZN7S7317C73v11Ev();
static  VTBL_ENTRY vtc_S7317C5[] = {
  ABISELECT(464,300),
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7317C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7317C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7317C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7317C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7317C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7317C53v14Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  ABISELECT(128,84),
  ABISELECT(16,12),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  0,
  0,
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7317C73v11Ev,
};
extern VTBL_ENTRY _ZTV7S7317C5[];
extern void _ZN7S7317C22v8Ev();
extern void _ZN7S7317C6D1Ev();
extern void _ZN7S7317C6D0Ev();
extern void _ZN7S7317C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C6__7S7317C5[] = {
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7317C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7317C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7317C62v9Ev,
};
extern void _ZN7S7317C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C27S7317C6__7S7317C5[] = {
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
};
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C3__7S7317C27S7317C6__7S7317C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C4__A1__7S7317C27S7317C6__7S7317C5[] = {
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C3__7S7317C6__7S7317C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C4__A1__7S7317C6__7S7317C5[] = {
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern void _ZN7S7317C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C2__A1__7S7317C5[] = {
  ABISELECT(128,84),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
};
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C3__7S7317C2__A1__7S7317C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C4__A1__7S7317C2__A1__7S7317C5[] = {
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
static  VTT_ENTRY vtt_S7317C5[] = {
  {&(_ZTV7S7317C5[5]),  5,52},
  {&(_tg__ZTV7S7317C6__7S7317C5[4]),  4,8},
  {&(_tg__ZTV7S7317C27S7317C6__7S7317C5[4]),  4,5},
  {&(_tg__ZTV7S7317C3__7S7317C27S7317C6__7S7317C5[6]),  6,10},
  {&(_tg__ZTV7S7317C4__A1__7S7317C27S7317C6__7S7317C5[3]),  3,4},
  {&(_tg__ZTV7S7317C3__7S7317C6__7S7317C5[6]),  6,10},
  {&(_tg__ZTV7S7317C4__A1__7S7317C6__7S7317C5[3]),  3,4},
  {&(_tg__ZTV7S7317C2__A1__7S7317C5[4]),  4,5},
  {&(_tg__ZTV7S7317C3__7S7317C2__A1__7S7317C5[6]),  6,10},
  {&(_tg__ZTV7S7317C4__A1__7S7317C2__A1__7S7317C5[3]),  3,4},
  {&(_ZTV7S7317C5[38]),  38,52},
  {&(_ZTV7S7317C5[45]),  45,52},
  {&(_ZTV7S7317C5[31]),  31,52},
  {&(_ZTV7S7317C5[50]),  50,52},
};
extern VTBL_ENTRY _ZTI7S7317C5[];
extern  VTBL_ENTRY _ZTV7S7317C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C5[];
Class_Descriptor cd_S7317C5 = {  "S7317C5", // class name
  bases_S7317C5, 12,
  &(vtc_S7317C5[0]), // expected_vtbl_contents
  &(vtt_S7317C5[0]), // expected_vtt_contents
  ABISELECT(504,328), // object size
  NSPAIRA(_ZTI7S7317C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7317C5),52, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7317C5),14, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7317C1  : S7317C2 , S7317C5 , S7317C3 {
  int s7317c1f0;
  void *s7317c1f1;
  int s7317c1f2;
  ::S20970C12 s7317c1f3;
  virtual  ~S7317C1(); // _ZN7S7317C1D2Ev
  virtual void  v1(); // _ZN7S7317C12v1Ev
  virtual void  v2(); // _ZN7S7317C12v2Ev
  virtual void  v3(); // _ZN7S7317C12v3Ev
  S7317C1(); // tgen
};
//SIG(1 S7317C1) C1{ BC2{ VBC3{ BC4{ v4 Fp Fc[5] FL Fp[2]} v5 v6 v7 FC4 Fc[2] Fp} VBC4 v8 Fi} BC5{ BC6{ BC2 BC3 BC4 vd v9} BC3 BC2 VBC7{ v10 v11 Fi Fc[7] Fp Fi Fs} v12 v13 v14 Fi} BC3 vd v1 v2 v3 Fi Fp Fi FC8{ VBC9{ BC10{ v15 Fp Fc[5] FL Fp[2]} v16 v17 v18 FC10 Fc[2] Fp} Fp[4] FC10 FC11{ VBC9 VBC10 BC12{ VBC9 VBC10 v20 Fi} v19 Fl Fp Fi[2]}}}


 S7317C1 ::~S7317C1(){ note_dtor("S7317C1", this);}
void  S7317C1 ::v1(){vfunc_called(this, "_ZN7S7317C12v1Ev");}
void  S7317C1 ::v2(){vfunc_called(this, "_ZN7S7317C12v2Ev");}
void  S7317C1 ::v3(){vfunc_called(this, "_ZN7S7317C12v3Ev");}
S7317C1 ::S7317C1(){ note_ctor("S7317C1", this);} // tgen

static void Test_S7317C1()
{
  extern Class_Descriptor cd_S7317C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(133,169)];
    init_test(&cd_S7317C1, buf);
    S7317C1 *dp, &lv = *(dp=new (buf) S7317C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1056,672), "sizeof(S7317C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7317C1)");
    /*is_ambiguous_... S7317C1::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C3*), ABISELECT(856,540), "S7317C1");
    /*is_ambiguous_... S7317C1::S7317C2 */ AMB_check_base_class_offset(lv, (S7317C3*)(S7317C2*), ABISELECT(856,540), "S7317C1");
    check_base_class_offset(lv, (S7317C3*)(S7317C2*)(S7317C6*)(S7317C5*), ABISELECT(856,540), "S7317C1");
    /*is_ambiguous_... S7317C5::S7317C2 */ AMB_check_base_class_offset(lv, (S7317C3*)(S7317C2*)(S7317C5*), ABISELECT(856,540), "S7317C1");
    /*is_ambiguous_... S7317C1::S7317C2 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C2*), ABISELECT(968,612), "S7317C1");
    /*is_ambiguous_... S7317C2::S7317C4 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C2*)(S7317C6*)(S7317C5*), ABISELECT(968,612), "S7317C1");
    /*is_ambiguous_... S7317C5::S7317C2 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C2*)(S7317C5*), ABISELECT(968,612), "S7317C1");
    /*is_ambiguous_... S7317C1::S7317C2 */ AMB_check_base_class_offset(lv, (S7317C2*), 0, "S7317C1");
    check_base_class_offset(lv, (S7317C2*)(S7317C6*)(S7317C5*), ABISELECT(16,8), "S7317C1");
    /*is_ambiguous_... S7317C6::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C3*)(S7317C6*)(S7317C5*), ABISELECT(32,16), "S7317C1");
    /*is_ambiguous_... S7317C6::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C3*)(S7317C6*)(S7317C5*), ABISELECT(32,16), "S7317C1");
    /*is_ambiguous_... S7317C6::S7317C4 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C6*)(S7317C5*), ABISELECT(144,88), "S7317C1");
    check_base_class_offset(lv, (S7317C6*)(S7317C5*), ABISELECT(16,8), "S7317C1");
    /*is_ambiguous_... S7317C5::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C3*)(S7317C5*), ABISELECT(192,120), "S7317C1");
    /*is_ambiguous_... S7317C5::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C3*)(S7317C5*), ABISELECT(192,120), "S7317C1");
    /*is_ambiguous_... S7317C5::S7317C2 */ AMB_check_base_class_offset(lv, (S7317C2*)(S7317C5*), ABISELECT(304,192), "S7317C1");
    check_base_class_offset(lv, (S7317C7*)(S7317C5*), ABISELECT(1016,644), "S7317C1");
    check_base_class_offset(lv, (S7317C5*), ABISELECT(16,8), "S7317C1");
    /*is_ambiguous_... S7317C1::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C3*), ABISELECT(320,204), "S7317C1");
    /*is_ambiguous_... S7317C1::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C3*), ABISELECT(320,204), "S7317C1");
    check_field_offset(lv, s7317c1f0, ABISELECT(432,276), "S7317C1.s7317c1f0");
    check_field_offset(lv, s7317c1f1, ABISELECT(440,280), "S7317C1.s7317c1f1");
    check_field_offset(lv, s7317c1f2, ABISELECT(448,284), "S7317C1.s7317c1f2");
    check_field_offset(lv, s7317c1f3, ABISELECT(456,288), "S7317C1.s7317c1f3");
    test_class_info(&lv, &cd_S7317C1);
    dp->~S7317C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7317C1(Test_S7317C1, "S7317C1", ABISELECT(1056,672));

#else // __cplusplus

extern void _ZN7S7317C1C1Ev();
extern void _ZN7S7317C1D2Ev();
Name_Map name_map_S7317C1[] = {
  NSPAIR(_ZN7S7317C1C1Ev),
  NSPAIR(_ZN7S7317C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C2;
extern VTBL_ENTRY _ZTI7S7317C2[];
extern  VTBL_ENTRY _ZTV7S7317C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C2[];
extern Class_Descriptor cd_S7317C2;
extern VTBL_ENTRY _ZTI7S7317C2[];
extern  VTBL_ENTRY _ZTV7S7317C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C2[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C6;
extern VTBL_ENTRY _ZTI7S7317C6[];
extern  VTBL_ENTRY _ZTV7S7317C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C6[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
extern Class_Descriptor cd_S7317C2;
extern VTBL_ENTRY _ZTI7S7317C2[];
extern  VTBL_ENTRY _ZTV7S7317C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C2[];
extern Class_Descriptor cd_S7317C7;
extern VTBL_ENTRY _ZTI7S7317C7[];
extern  VTBL_ENTRY _ZTV7S7317C7[];
extern Class_Descriptor cd_S7317C5;
extern VTBL_ENTRY _ZTI7S7317C5[];
extern  VTBL_ENTRY _ZTV7S7317C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C5[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
static Base_Class bases_S7317C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7317C4,    ABISELECT(856,540), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(856,540), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7317C4,    ABISELECT(968,612), //bcp->offset
    59, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7317C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7317C2,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7317C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(32,16), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7317C4,    ABISELECT(144,88), //bcp->offset
    29, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7317C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7317C4,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(192,120), //bcp->offset
    32, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7317C2,    ABISELECT(304,192), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7317C7,    ABISELECT(1016,644), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7317C5,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7317C4,    ABISELECT(320,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(320,204), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7317C1[];
extern void _ZN7S7317C22v8Ev();
extern void _ZN7S7317C1D1Ev();
extern void _ZN7S7317C1D0Ev();
extern void _ZN7S7317C12v1Ev();
extern void _ZN7S7317C12v2Ev();
extern void _ZN7S7317C12v3Ev();
extern void _ZN7S7317C22v8Ev();
extern void ABISELECT(_ZThn16_N7S7317C1D1Ev,_ZThn8_N7S7317C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7317C1D0Ev,_ZThn8_N7S7317C1D0Ev)();
extern void _ZN7S7317C62v9Ev();
extern void _ZN7S7317C53v12Ev();
extern void _ZN7S7317C53v13Ev();
extern void _ZN7S7317C53v14Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C22v8Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C73v10Ev();
extern void _ZN7S7317C73v11Ev();
static  VTBL_ENTRY vtc_S7317C1[] = {
  ABISELECT(1016,644),
  ABISELECT(968,612),
  ABISELECT(856,540),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7317C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7317C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7317C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7317C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7317C12v3Ev,
  ABISELECT(1000,636),
  ABISELECT(952,604),
  ABISELECT(840,532),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7317C1D1Ev,_ZThn8_N7S7317C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7317C1D0Ev,_ZThn8_N7S7317C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7317C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7317C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7317C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7317C53v14Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  ABISELECT(664,420),
  ABISELECT(552,348),
  ABISELECT(-304,-192),
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  ABISELECT(-320,-204),
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-856,-540),
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  0,
  ABISELECT(-968,-612),
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  0,
  0,
  ABISELECT(-1016,-644),
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7317C73v11Ev,
};
extern VTBL_ENTRY _ZTV7S7317C1[];
extern void _ZN7S7317C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C2__7S7317C1[] = {
  ABISELECT(968,612),
  ABISELECT(856,540),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
};
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C3__7S7317C2__7S7317C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-856,-540),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C4__A1__7S7317C2__7S7317C1[] = {
  0,
  ABISELECT(-968,-612),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern void _ZN7S7317C22v8Ev();
extern void _ZN7S7317C5D1Ev();
extern void _ZN7S7317C5D0Ev();
extern void _ZN7S7317C62v9Ev();
extern void _ZN7S7317C53v12Ev();
extern void _ZN7S7317C53v13Ev();
extern void _ZN7S7317C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C5__7S7317C1[] = {
  ABISELECT(1000,636),
  ABISELECT(952,604),
  ABISELECT(840,532),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7317C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7317C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7317C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7317C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7317C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7317C53v14Ev,
};
extern void _ZN7S7317C22v8Ev();
extern void _ZN7S7317C6D1Ev();
extern void _ZN7S7317C6D0Ev();
extern void _ZN7S7317C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C67S7317C5__7S7317C1[] = {
  ABISELECT(952,604),
  ABISELECT(840,532),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7317C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7317C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7317C62v9Ev,
};
extern void _ZN7S7317C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C27S7317C67S7317C5__A1__7S7317C1[] = {
  ABISELECT(952,604),
  ABISELECT(840,532),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
};
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C3__7S7317C27S7317C67S7317C5__A1__7S7317C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-840,-532),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C4__A1__7S7317C27S7317C67S7317C5__A1__7S7317C1[] = {
  0,
  ABISELECT(-952,-604),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C3__7S7317C67S7317C5__7S7317C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-840,-532),
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C4__A1__7S7317C67S7317C5__7S7317C1[] = {
  0,
  ABISELECT(-952,-604),
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern void _ZN7S7317C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C27S7317C5__A2__7S7317C1[] = {
  ABISELECT(664,420),
  ABISELECT(552,348),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
};
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C3__7S7317C27S7317C5__A2__7S7317C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-552,-348),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C4__A1__7S7317C27S7317C5__A2__7S7317C1[] = {
  0,
  ABISELECT(-664,-420),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C3__7S7317C5__7S7317C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-840,-532),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C4__A1__7S7317C5__7S7317C1[] = {
  0,
  ABISELECT(-952,-604),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern void _ZN7S7317C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C2__A1__7S7317C5__7S7317C1[] = {
  ABISELECT(664,420),
  ABISELECT(552,348),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
};
extern void _ZN7S7317C73v10Ev();
extern void _ZN7S7317C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C7__7S7317C5__7S7317C1[] = {
  0,
  0,
  ABISELECT(-1000,-636),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7317C73v11Ev,
};
static  VTT_ENTRY vtt_S7317C1[] = {
  {&(_ZTV7S7317C1[5]),  5,69},
  {&(_tg__ZTV7S7317C2__7S7317C1[4]),  4,5},
  {&(_tg__ZTV7S7317C3__7S7317C2__7S7317C1[6]),  6,10},
  {&(_tg__ZTV7S7317C4__A1__7S7317C2__7S7317C1[3]),  3,4},
  {&(_tg__ZTV7S7317C5__7S7317C1[5]),  5,12},
  {&(_tg__ZTV7S7317C67S7317C5__7S7317C1[4]),  4,8},
  {&(_tg__ZTV7S7317C27S7317C67S7317C5__A1__7S7317C1[4]),  4,5},
  {&(_tg__ZTV7S7317C3__7S7317C27S7317C67S7317C5__A1__7S7317C1[6]),  6,10},
  {&(_tg__ZTV7S7317C4__A1__7S7317C27S7317C67S7317C5__A1__7S7317C1[3]),  3,4},
  {&(_tg__ZTV7S7317C3__7S7317C67S7317C5__7S7317C1[6]),  6,10},
  {&(_tg__ZTV7S7317C4__A1__7S7317C67S7317C5__7S7317C1[3]),  3,4},
  {&(_tg__ZTV7S7317C27S7317C5__A2__7S7317C1[4]),  4,5},
  {&(_tg__ZTV7S7317C3__7S7317C27S7317C5__A2__7S7317C1[6]),  6,10},
  {&(_tg__ZTV7S7317C4__A1__7S7317C27S7317C5__A2__7S7317C1[3]),  3,4},
  {&(_tg__ZTV7S7317C3__7S7317C5__7S7317C1[6]),  6,10},
  {&(_tg__ZTV7S7317C4__A1__7S7317C5__7S7317C1[3]),  3,4},
  {&(_tg__ZTV7S7317C2__A1__7S7317C5__7S7317C1[4]),  4,5},
  {&(_tg__ZTV7S7317C7__7S7317C5__7S7317C1[4]),  4,6},
  {&(_ZTV7S7317C1[55]),  55,69},
  {&(_ZTV7S7317C1[62]),  62,69},
  {&(_ZTV7S7317C1[16]),  16,69},
  {&(_ZTV7S7317C1[42]),  42,69},
  {&(_ZTV7S7317C1[67]),  67,69},
};
extern VTBL_ENTRY _ZTI7S7317C1[];
extern  VTBL_ENTRY _ZTV7S7317C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C1[];
Class_Descriptor cd_S7317C1 = {  "S7317C1", // class name
  bases_S7317C1, 16,
  &(vtc_S7317C1[0]), // expected_vtbl_contents
  &(vtt_S7317C1[0]), // expected_vtt_contents
  ABISELECT(1056,672), // object size
  NSPAIRA(_ZTI7S7317C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7317C1),69, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7317C1),23, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7318C4  {
  void *s7318c4f0;
  char s7318c4f1[5];
  __tsi64 s7318c4f2;
  void *s7318c4f3[2];
  virtual void  v4(); // _ZN7S7318C42v4Ev
  ~S7318C4(); // tgen
  S7318C4(); // tgen
};
//SIG(-1 S7318C4) C1{ v1 Fp Fc[5] FL Fp[2]}


void  S7318C4 ::v4(){vfunc_called(this, "_ZN7S7318C42v4Ev");}
S7318C4 ::~S7318C4(){ note_dtor("S7318C4", this);} // tgen
S7318C4 ::S7318C4(){ note_ctor("S7318C4", this);} // tgen

static void Test_S7318C4()
{
  extern Class_Descriptor cd_S7318C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S7318C4, buf);
    S7318C4 *dp, &lv = *(dp=new (buf) S7318C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S7318C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7318C4)");
    check_field_offset(lv, s7318c4f0, ABISELECT(8,4), "S7318C4.s7318c4f0");
    check_field_offset(lv, s7318c4f1, ABISELECT(16,8), "S7318C4.s7318c4f1");
    check_field_offset(lv, s7318c4f2, ABISELECT(24,16), "S7318C4.s7318c4f2");
    check_field_offset(lv, s7318c4f3, ABISELECT(32,24), "S7318C4.s7318c4f3");
    test_class_info(&lv, &cd_S7318C4);
    dp->~S7318C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7318C4(Test_S7318C4, "S7318C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S7318C4C1Ev();
extern void _ZN7S7318C4D1Ev();
Name_Map name_map_S7318C4[] = {
  NSPAIR(_ZN7S7318C4C1Ev),
  NSPAIR(_ZN7S7318C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7318C4[];
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY vtc_S7318C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C4[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
Class_Descriptor cd_S7318C4 = {  "S7318C4", // class name
  0,0,//no base classes
  &(vtc_S7318C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S7318C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7318C4),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7318C3  : S7318C4 {
  ::S7318C4 s7318c3f0;
  char s7318c3f1[2];
  void *s7318c3f2;
  virtual void  v5(); // _ZN7S7318C32v5Ev
  virtual void  v6(); // _ZN7S7318C32v6Ev
  virtual void  v7(); // _ZN7S7318C32v7Ev
  ~S7318C3(); // tgen
  S7318C3(); // tgen
};
//SIG(-1 S7318C3) C1{ BC2{ v4 Fp Fc[5] FL Fp[2]} v1 v2 v3 FC2 Fc[2] Fp}


void  S7318C3 ::v5(){vfunc_called(this, "_ZN7S7318C32v5Ev");}
void  S7318C3 ::v6(){vfunc_called(this, "_ZN7S7318C32v6Ev");}
void  S7318C3 ::v7(){vfunc_called(this, "_ZN7S7318C32v7Ev");}
S7318C3 ::~S7318C3(){ note_dtor("S7318C3", this);} // tgen
S7318C3 ::S7318C3(){ note_ctor("S7318C3", this);} // tgen

static void Test_S7318C3()
{
  extern Class_Descriptor cd_S7318C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S7318C3, buf);
    S7318C3 *dp, &lv = *(dp=new (buf) S7318C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S7318C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7318C3)");
    check_base_class_offset(lv, (S7318C4*), 0, "S7318C3");
    check_field_offset(lv, s7318c3f0, ABISELECT(48,32), "S7318C3.s7318c3f0");
    check_field_offset(lv, s7318c3f1, ABISELECT(96,64), "S7318C3.s7318c3f1");
    check_field_offset(lv, s7318c3f2, ABISELECT(104,68), "S7318C3.s7318c3f2");
    test_class_info(&lv, &cd_S7318C3);
    dp->~S7318C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7318C3(Test_S7318C3, "S7318C3", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN7S7318C3C1Ev();
extern void _ZN7S7318C3D1Ev();
Name_Map name_map_S7318C3[] = {
  NSPAIR(_ZN7S7318C3C1Ev),
  NSPAIR(_ZN7S7318C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
static Base_Class bases_S7318C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7318C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7318C3[];
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY vtc_S7318C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C3[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
Class_Descriptor cd_S7318C3 = {  "S7318C3", // class name
  bases_S7318C3, 1,
  &(vtc_S7318C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI7S7318C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7318C3),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7318C2  : virtual S7318C3 , virtual S7318C4 {
  int s7318c2f0;
  virtual void  v8(); // _ZN7S7318C22v8Ev
  ~S7318C2(); // tgen
  S7318C2(); // tgen
};
//SIG(-1 S7318C2) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} VBC3 v1 Fi}


void  S7318C2 ::v8(){vfunc_called(this, "_ZN7S7318C22v8Ev");}
S7318C2 ::~S7318C2(){ note_dtor("S7318C2", this);} // tgen
S7318C2 ::S7318C2(){ note_ctor("S7318C2", this);} // tgen

static void Test_S7318C2()
{
  extern Class_Descriptor cd_S7318C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,29)];
    init_test(&cd_S7318C2, buf);
    S7318C2 *dp, &lv = *(dp=new (buf) S7318C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,112), "sizeof(S7318C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7318C2)");
    check_base_class_offset(lv, (S7318C4*)(S7318C3*), ABISELECT(16,8), "S7318C2");
    check_base_class_offset(lv, (S7318C3*), ABISELECT(16,8), "S7318C2");
    /*is_ambiguous_... S7318C2::S7318C4 */ AMB_check_base_class_offset(lv, (S7318C4*), ABISELECT(128,80), "S7318C2");
    check_field_offset(lv, s7318c2f0, ABISELECT(8,4), "S7318C2.s7318c2f0");
    test_class_info(&lv, &cd_S7318C2);
    dp->~S7318C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7318C2(Test_S7318C2, "S7318C2", ABISELECT(176,112));

#else // __cplusplus

extern void _ZN7S7318C2C1Ev();
extern void _ZN7S7318C2D1Ev();
Name_Map name_map_S7318C2[] = {
  NSPAIR(_ZN7S7318C2C1Ev),
  NSPAIR(_ZN7S7318C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
static Base_Class bases_S7318C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7318C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7318C4,    ABISELECT(128,80), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7318C2[];
extern void _ZN7S7318C22v8Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY vtc_S7318C2[] = {
  ABISELECT(128,80),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  0,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S7318C2[];
static  VTT_ENTRY vtt_S7318C2[] = {
  {&(_ZTV7S7318C2[4]),  4,19},
  {&(_ZTV7S7318C2[11]),  11,19},
  {&(_ZTV7S7318C2[18]),  18,19},
};
extern VTBL_ENTRY _ZTI7S7318C2[];
extern  VTBL_ENTRY _ZTV7S7318C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C2[];
Class_Descriptor cd_S7318C2 = {  "S7318C2", // class name
  bases_S7318C2, 3,
  &(vtc_S7318C2[0]), // expected_vtbl_contents
  &(vtt_S7318C2[0]), // expected_vtt_contents
  ABISELECT(176,112), // object size
  NSPAIRA(_ZTI7S7318C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7318C2),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7318C2),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7318C6  : S7318C2 , S7318C3 , S7318C4 {
  virtual  ~S7318C6(); // _ZN7S7318C6D2Ev
  virtual void  v9(); // _ZN7S7318C62v9Ev
  S7318C6(); // tgen
};
//SIG(-1 S7318C6) C1{ BC2{ VBC3{ BC4{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC4 Fc[2] Fp} VBC4 v6 Fi} BC3 BC4 vd v1}


 S7318C6 ::~S7318C6(){ note_dtor("S7318C6", this);}
void  S7318C6 ::v9(){vfunc_called(this, "_ZN7S7318C62v9Ev");}
S7318C6 ::S7318C6(){ note_ctor("S7318C6", this);} // tgen

static void Test_S7318C6()
{
  extern Class_Descriptor cd_S7318C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,55)];
    init_test(&cd_S7318C6, buf);
    S7318C6 *dp, &lv = *(dp=new (buf) S7318C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,216), "sizeof(S7318C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7318C6)");
    /*is_ambiguous_... S7318C6::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C3*), ABISELECT(176,112), "S7318C6");
    check_base_class_offset(lv, (S7318C3*)(S7318C2*), ABISELECT(176,112), "S7318C6");
    /*is_ambiguous_... S7318C2::S7318C4 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C2*), ABISELECT(288,184), "S7318C6");
    check_base_class_offset(lv, (S7318C2*), 0, "S7318C6");
    /*is_ambiguous_... S7318C6::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C3*), ABISELECT(16,8), "S7318C6");
    /*is_ambiguous_... S7318C6::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C3*), ABISELECT(16,8), "S7318C6");
    /*is_ambiguous_... S7318C6::S7318C4 */ AMB_check_base_class_offset(lv, (S7318C4*), ABISELECT(128,80), "S7318C6");
    test_class_info(&lv, &cd_S7318C6);
    dp->~S7318C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7318C6(Test_S7318C6, "S7318C6", ABISELECT(336,216));

#else // __cplusplus

extern void _ZN7S7318C6C1Ev();
extern void _ZN7S7318C6D2Ev();
Name_Map name_map_S7318C6[] = {
  NSPAIR(_ZN7S7318C6C1Ev),
  NSPAIR(_ZN7S7318C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C2;
extern VTBL_ENTRY _ZTI7S7318C2[];
extern  VTBL_ENTRY _ZTV7S7318C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C2[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
static Base_Class bases_S7318C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7318C4,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(176,112), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7318C4,    ABISELECT(288,184), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7318C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7318C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7318C4,    ABISELECT(128,80), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7318C6[];
extern void _ZN7S7318C22v8Ev();
extern void _ZN7S7318C6D1Ev();
extern void _ZN7S7318C6D0Ev();
extern void _ZN7S7318C62v9Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY vtc_S7318C6[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7318C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7318C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7318C62v9Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S7318C6[];
extern void _ZN7S7318C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C2__7S7318C6[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
};
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C3__7S7318C2__7S7318C6[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C4__A1__7S7318C2__7S7318C6[] = {
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
static  VTT_ENTRY vtt_S7318C6[] = {
  {&(_ZTV7S7318C6[4]),  4,31},
  {&(_tg__ZTV7S7318C2__7S7318C6[4]),  4,5},
  {&(_tg__ZTV7S7318C3__7S7318C2__7S7318C6[6]),  6,10},
  {&(_tg__ZTV7S7318C4__A1__7S7318C2__7S7318C6[3]),  3,4},
  {&(_ZTV7S7318C6[23]),  23,31},
  {&(_ZTV7S7318C6[30]),  30,31},
};
extern VTBL_ENTRY _ZTI7S7318C6[];
extern  VTBL_ENTRY _ZTV7S7318C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C6[];
Class_Descriptor cd_S7318C6 = {  "S7318C6", // class name
  bases_S7318C6, 7,
  &(vtc_S7318C6[0]), // expected_vtbl_contents
  &(vtt_S7318C6[0]), // expected_vtt_contents
  ABISELECT(336,216), // object size
  NSPAIRA(_ZTI7S7318C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7318C6),31, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7318C6),6, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7318C7  {
  int s7318c7f0;
  char s7318c7f1[7];
  void *s7318c7f2;
  int s7318c7f3;
  short s7318c7f4;
  virtual void  v10(); // _ZN7S7318C73v10Ev
  virtual void  v11(); // _ZN7S7318C73v11Ev
  ~S7318C7(); // tgen
  S7318C7(); // tgen
};
//SIG(-1 S7318C7) C1{ v1 v2 Fi Fc[7] Fp Fi Fs}


void  S7318C7 ::v10(){vfunc_called(this, "_ZN7S7318C73v10Ev");}
void  S7318C7 ::v11(){vfunc_called(this, "_ZN7S7318C73v11Ev");}
S7318C7 ::~S7318C7(){ note_dtor("S7318C7", this);} // tgen
S7318C7 ::S7318C7(){ note_ctor("S7318C7", this);} // tgen

static void Test_S7318C7()
{
  extern Class_Descriptor cd_S7318C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S7318C7, buf);
    S7318C7 *dp, &lv = *(dp=new (buf) S7318C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S7318C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7318C7)");
    check_field_offset(lv, s7318c7f0, ABISELECT(8,4), "S7318C7.s7318c7f0");
    check_field_offset(lv, s7318c7f1, ABISELECT(12,8), "S7318C7.s7318c7f1");
    check_field_offset(lv, s7318c7f2, ABISELECT(24,16), "S7318C7.s7318c7f2");
    check_field_offset(lv, s7318c7f3, ABISELECT(32,20), "S7318C7.s7318c7f3");
    check_field_offset(lv, s7318c7f4, ABISELECT(36,24), "S7318C7.s7318c7f4");
    test_class_info(&lv, &cd_S7318C7);
    dp->~S7318C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7318C7(Test_S7318C7, "S7318C7", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S7318C7C1Ev();
extern void _ZN7S7318C7D1Ev();
Name_Map name_map_S7318C7[] = {
  NSPAIR(_ZN7S7318C7C1Ev),
  NSPAIR(_ZN7S7318C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7318C7[];
extern void _ZN7S7318C73v10Ev();
extern void _ZN7S7318C73v11Ev();
static  VTBL_ENTRY vtc_S7318C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C7[0]),
  (VTBL_ENTRY)&_ZN7S7318C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7318C73v11Ev,
};
extern VTBL_ENTRY _ZTI7S7318C7[];
extern  VTBL_ENTRY _ZTV7S7318C7[];
Class_Descriptor cd_S7318C7 = {  "S7318C7", // class name
  0,0,//no base classes
  &(vtc_S7318C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S7318C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7318C7),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7318C5  : S7318C6 , S7318C3 , S7318C2 , virtual S7318C7 {
  int s7318c5f0;
  virtual void  v12(); // _ZN7S7318C53v12Ev
  virtual void  v13(); // _ZN7S7318C53v13Ev
  virtual void  v14(); // _ZN7S7318C53v14Ev
  ~S7318C5(); // tgen
  S7318C5(); // tgen
};
//SIG(-1 S7318C5) C1{ BC2{ BC3{ VBC4{ BC5{ v4 Fp Fc[5] FL Fp[2]} v5 v6 v7 FC5 Fc[2] Fp} VBC5 v8 Fi} BC4 BC5 vd v9} BC4 BC3 VBC6{ v10 v11 Fi Fc[7] Fp Fi Fs} v1 v2 v3 Fi}


void  S7318C5 ::v12(){vfunc_called(this, "_ZN7S7318C53v12Ev");}
void  S7318C5 ::v13(){vfunc_called(this, "_ZN7S7318C53v13Ev");}
void  S7318C5 ::v14(){vfunc_called(this, "_ZN7S7318C53v14Ev");}
S7318C5 ::~S7318C5(){ note_dtor("S7318C5", this);} // tgen
S7318C5 ::S7318C5(){ note_ctor("S7318C5", this);} // tgen

static void Test_S7318C5()
{
  extern Class_Descriptor cd_S7318C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(64,83)];
    init_test(&cd_S7318C5, buf);
    S7318C5 *dp, &lv = *(dp=new (buf) S7318C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(504,328), "sizeof(S7318C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7318C5)");
    /*is_ambiguous_... S7318C5::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C3*), ABISELECT(304,196), "S7318C5");
    check_base_class_offset(lv, (S7318C3*)(S7318C2*)(S7318C6*), ABISELECT(304,196), "S7318C5");
    /*is_ambiguous_... S7318C5::S7318C2 */ AMB_check_base_class_offset(lv, (S7318C3*)(S7318C2*), ABISELECT(304,196), "S7318C5");
    /*is_ambiguous_... S7318C2::S7318C4 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C2*)(S7318C6*), ABISELECT(416,268), "S7318C5");
    /*is_ambiguous_... S7318C5::S7318C2 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C2*), ABISELECT(416,268), "S7318C5");
    check_base_class_offset(lv, (S7318C2*)(S7318C6*), 0, "S7318C5");
    /*is_ambiguous_... S7318C6::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C3*)(S7318C6*), ABISELECT(16,8), "S7318C5");
    /*is_ambiguous_... S7318C6::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C3*)(S7318C6*), ABISELECT(16,8), "S7318C5");
    /*is_ambiguous_... S7318C6::S7318C4 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C6*), ABISELECT(128,80), "S7318C5");
    check_base_class_offset(lv, (S7318C6*), 0, "S7318C5");
    /*is_ambiguous_... S7318C5::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C3*), ABISELECT(176,112), "S7318C5");
    /*is_ambiguous_... S7318C5::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C3*), ABISELECT(176,112), "S7318C5");
    /*is_ambiguous_... S7318C5::S7318C2 */ AMB_check_base_class_offset(lv, (S7318C2*), ABISELECT(288,184), "S7318C5");
    check_base_class_offset(lv, (S7318C7*), ABISELECT(464,300), "S7318C5");
    check_field_offset(lv, s7318c5f0, ABISELECT(300,192), "S7318C5.s7318c5f0");
    test_class_info(&lv, &cd_S7318C5);
    dp->~S7318C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7318C5(Test_S7318C5, "S7318C5", ABISELECT(504,328));

#else // __cplusplus

extern void _ZN7S7318C5C1Ev();
extern void _ZN7S7318C5D1Ev();
Name_Map name_map_S7318C5[] = {
  NSPAIR(_ZN7S7318C5C1Ev),
  NSPAIR(_ZN7S7318C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C2;
extern VTBL_ENTRY _ZTI7S7318C2[];
extern  VTBL_ENTRY _ZTV7S7318C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C2[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C6;
extern VTBL_ENTRY _ZTI7S7318C6[];
extern  VTBL_ENTRY _ZTV7S7318C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C6[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
extern Class_Descriptor cd_S7318C2;
extern VTBL_ENTRY _ZTI7S7318C2[];
extern  VTBL_ENTRY _ZTV7S7318C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C2[];
extern Class_Descriptor cd_S7318C7;
extern VTBL_ENTRY _ZTI7S7318C7[];
extern  VTBL_ENTRY _ZTV7S7318C7[];
static Base_Class bases_S7318C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7318C4,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(304,196), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7318C4,    ABISELECT(416,268), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7318C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7318C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7318C4,    ABISELECT(128,80), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7318C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7318C4,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(176,112), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7318C2,    ABISELECT(288,184), //bcp->offset
    27, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7318C7,    ABISELECT(464,300), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7318C5[];
extern void _ZN7S7318C22v8Ev();
extern void _ZN7S7318C5D1Ev();
extern void _ZN7S7318C5D0Ev();
extern void _ZN7S7318C62v9Ev();
extern void _ZN7S7318C53v12Ev();
extern void _ZN7S7318C53v13Ev();
extern void _ZN7S7318C53v14Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C22v8Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C73v10Ev();
extern void _ZN7S7318C73v11Ev();
static  VTBL_ENTRY vtc_S7318C5[] = {
  ABISELECT(464,300),
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7318C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7318C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7318C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7318C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7318C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7318C53v14Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  ABISELECT(128,84),
  ABISELECT(16,12),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  0,
  0,
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7318C73v11Ev,
};
extern VTBL_ENTRY _ZTV7S7318C5[];
extern void _ZN7S7318C22v8Ev();
extern void _ZN7S7318C6D1Ev();
extern void _ZN7S7318C6D0Ev();
extern void _ZN7S7318C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C6__7S7318C5[] = {
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7318C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7318C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7318C62v9Ev,
};
extern void _ZN7S7318C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C27S7318C6__7S7318C5[] = {
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
};
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C3__7S7318C27S7318C6__7S7318C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C4__A1__7S7318C27S7318C6__7S7318C5[] = {
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C3__7S7318C6__7S7318C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C4__A1__7S7318C6__7S7318C5[] = {
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern void _ZN7S7318C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C2__A1__7S7318C5[] = {
  ABISELECT(128,84),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
};
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C3__7S7318C2__A1__7S7318C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C4__A1__7S7318C2__A1__7S7318C5[] = {
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
static  VTT_ENTRY vtt_S7318C5[] = {
  {&(_ZTV7S7318C5[5]),  5,52},
  {&(_tg__ZTV7S7318C6__7S7318C5[4]),  4,8},
  {&(_tg__ZTV7S7318C27S7318C6__7S7318C5[4]),  4,5},
  {&(_tg__ZTV7S7318C3__7S7318C27S7318C6__7S7318C5[6]),  6,10},
  {&(_tg__ZTV7S7318C4__A1__7S7318C27S7318C6__7S7318C5[3]),  3,4},
  {&(_tg__ZTV7S7318C3__7S7318C6__7S7318C5[6]),  6,10},
  {&(_tg__ZTV7S7318C4__A1__7S7318C6__7S7318C5[3]),  3,4},
  {&(_tg__ZTV7S7318C2__A1__7S7318C5[4]),  4,5},
  {&(_tg__ZTV7S7318C3__7S7318C2__A1__7S7318C5[6]),  6,10},
  {&(_tg__ZTV7S7318C4__A1__7S7318C2__A1__7S7318C5[3]),  3,4},
  {&(_ZTV7S7318C5[38]),  38,52},
  {&(_ZTV7S7318C5[45]),  45,52},
  {&(_ZTV7S7318C5[31]),  31,52},
  {&(_ZTV7S7318C5[50]),  50,52},
};
extern VTBL_ENTRY _ZTI7S7318C5[];
extern  VTBL_ENTRY _ZTV7S7318C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C5[];
Class_Descriptor cd_S7318C5 = {  "S7318C5", // class name
  bases_S7318C5, 12,
  &(vtc_S7318C5[0]), // expected_vtbl_contents
  &(vtt_S7318C5[0]), // expected_vtt_contents
  ABISELECT(504,328), // object size
  NSPAIRA(_ZTI7S7318C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7318C5),52, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7318C5),14, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7318C1  : S7318C2 , S7318C5 , S7318C3 {
  int s7318c1f0;
  void *s7318c1f1;
  int s7318c1f2;
  ::S20971C12 s7318c1f3;
  virtual  ~S7318C1(); // _ZN7S7318C1D2Ev
  virtual void  v1(); // _ZN7S7318C12v1Ev
  virtual void  v2(); // _ZN7S7318C12v2Ev
  virtual void  v3(); // _ZN7S7318C12v3Ev
  S7318C1(); // tgen
};
//SIG(1 S7318C1) C1{ BC2{ VBC3{ BC4{ v4 Fp Fc[5] FL Fp[2]} v5 v6 v7 FC4 Fc[2] Fp} VBC4 v8 Fi} BC5{ BC6{ BC2 BC3 BC4 vd v9} BC3 BC2 VBC7{ v10 v11 Fi Fc[7] Fp Fi Fs} v12 v13 v14 Fi} BC3 vd v1 v2 v3 Fi Fp Fi FC8{ VBC9{ BC10{ v15 Fp Fc[5] FL Fp[2]} v16 v17 v18 FC10 Fc[2] Fp} Fp[4] FC10 FC11{ VBC9 VBC10 BC12{ VBC9 VBC10 v20 Fi} v19 FL Fp Fi[2]}}}


 S7318C1 ::~S7318C1(){ note_dtor("S7318C1", this);}
void  S7318C1 ::v1(){vfunc_called(this, "_ZN7S7318C12v1Ev");}
void  S7318C1 ::v2(){vfunc_called(this, "_ZN7S7318C12v2Ev");}
void  S7318C1 ::v3(){vfunc_called(this, "_ZN7S7318C12v3Ev");}
S7318C1 ::S7318C1(){ note_ctor("S7318C1", this);} // tgen

static void Test_S7318C1()
{
  extern Class_Descriptor cd_S7318C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(133,170)];
    init_test(&cd_S7318C1, buf);
    S7318C1 *dp, &lv = *(dp=new (buf) S7318C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1056,676), "sizeof(S7318C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7318C1)");
    /*is_ambiguous_... S7318C1::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C3*), ABISELECT(856,544), "S7318C1");
    /*is_ambiguous_... S7318C1::S7318C2 */ AMB_check_base_class_offset(lv, (S7318C3*)(S7318C2*), ABISELECT(856,544), "S7318C1");
    check_base_class_offset(lv, (S7318C3*)(S7318C2*)(S7318C6*)(S7318C5*), ABISELECT(856,544), "S7318C1");
    /*is_ambiguous_... S7318C5::S7318C2 */ AMB_check_base_class_offset(lv, (S7318C3*)(S7318C2*)(S7318C5*), ABISELECT(856,544), "S7318C1");
    /*is_ambiguous_... S7318C1::S7318C2 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C2*), ABISELECT(968,616), "S7318C1");
    /*is_ambiguous_... S7318C2::S7318C4 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C2*)(S7318C6*)(S7318C5*), ABISELECT(968,616), "S7318C1");
    /*is_ambiguous_... S7318C5::S7318C2 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C2*)(S7318C5*), ABISELECT(968,616), "S7318C1");
    /*is_ambiguous_... S7318C1::S7318C2 */ AMB_check_base_class_offset(lv, (S7318C2*), 0, "S7318C1");
    check_base_class_offset(lv, (S7318C2*)(S7318C6*)(S7318C5*), ABISELECT(16,8), "S7318C1");
    /*is_ambiguous_... S7318C6::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C3*)(S7318C6*)(S7318C5*), ABISELECT(32,16), "S7318C1");
    /*is_ambiguous_... S7318C6::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C3*)(S7318C6*)(S7318C5*), ABISELECT(32,16), "S7318C1");
    /*is_ambiguous_... S7318C6::S7318C4 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C6*)(S7318C5*), ABISELECT(144,88), "S7318C1");
    check_base_class_offset(lv, (S7318C6*)(S7318C5*), ABISELECT(16,8), "S7318C1");
    /*is_ambiguous_... S7318C5::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C3*)(S7318C5*), ABISELECT(192,120), "S7318C1");
    /*is_ambiguous_... S7318C5::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C3*)(S7318C5*), ABISELECT(192,120), "S7318C1");
    /*is_ambiguous_... S7318C5::S7318C2 */ AMB_check_base_class_offset(lv, (S7318C2*)(S7318C5*), ABISELECT(304,192), "S7318C1");
    check_base_class_offset(lv, (S7318C7*)(S7318C5*), ABISELECT(1016,648), "S7318C1");
    check_base_class_offset(lv, (S7318C5*), ABISELECT(16,8), "S7318C1");
    /*is_ambiguous_... S7318C1::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C3*), ABISELECT(320,204), "S7318C1");
    /*is_ambiguous_... S7318C1::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C3*), ABISELECT(320,204), "S7318C1");
    check_field_offset(lv, s7318c1f0, ABISELECT(432,276), "S7318C1.s7318c1f0");
    check_field_offset(lv, s7318c1f1, ABISELECT(440,280), "S7318C1.s7318c1f1");
    check_field_offset(lv, s7318c1f2, ABISELECT(448,284), "S7318C1.s7318c1f2");
    check_field_offset(lv, s7318c1f3, ABISELECT(456,288), "S7318C1.s7318c1f3");
    test_class_info(&lv, &cd_S7318C1);
    dp->~S7318C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7318C1(Test_S7318C1, "S7318C1", ABISELECT(1056,676));

#else // __cplusplus

extern void _ZN7S7318C1C1Ev();
extern void _ZN7S7318C1D2Ev();
Name_Map name_map_S7318C1[] = {
  NSPAIR(_ZN7S7318C1C1Ev),
  NSPAIR(_ZN7S7318C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C2;
extern VTBL_ENTRY _ZTI7S7318C2[];
extern  VTBL_ENTRY _ZTV7S7318C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C2[];
extern Class_Descriptor cd_S7318C2;
extern VTBL_ENTRY _ZTI7S7318C2[];
extern  VTBL_ENTRY _ZTV7S7318C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C2[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C6;
extern VTBL_ENTRY _ZTI7S7318C6[];
extern  VTBL_ENTRY _ZTV7S7318C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C6[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
extern Class_Descriptor cd_S7318C2;
extern VTBL_ENTRY _ZTI7S7318C2[];
extern  VTBL_ENTRY _ZTV7S7318C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C2[];
extern Class_Descriptor cd_S7318C7;
extern VTBL_ENTRY _ZTI7S7318C7[];
extern  VTBL_ENTRY _ZTV7S7318C7[];
extern Class_Descriptor cd_S7318C5;
extern VTBL_ENTRY _ZTI7S7318C5[];
extern  VTBL_ENTRY _ZTV7S7318C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C5[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
static Base_Class bases_S7318C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7318C4,    ABISELECT(856,544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(856,544), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7318C4,    ABISELECT(968,616), //bcp->offset
    59, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7318C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7318C2,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7318C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(32,16), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7318C4,    ABISELECT(144,88), //bcp->offset
    29, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7318C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7318C4,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(192,120), //bcp->offset
    32, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7318C2,    ABISELECT(304,192), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7318C7,    ABISELECT(1016,648), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7318C5,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7318C4,    ABISELECT(320,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(320,204), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7318C1[];
extern void _ZN7S7318C22v8Ev();
extern void _ZN7S7318C1D1Ev();
extern void _ZN7S7318C1D0Ev();
extern void _ZN7S7318C12v1Ev();
extern void _ZN7S7318C12v2Ev();
extern void _ZN7S7318C12v3Ev();
extern void _ZN7S7318C22v8Ev();
extern void ABISELECT(_ZThn16_N7S7318C1D1Ev,_ZThn8_N7S7318C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7318C1D0Ev,_ZThn8_N7S7318C1D0Ev)();
extern void _ZN7S7318C62v9Ev();
extern void _ZN7S7318C53v12Ev();
extern void _ZN7S7318C53v13Ev();
extern void _ZN7S7318C53v14Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C22v8Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C73v10Ev();
extern void _ZN7S7318C73v11Ev();
static  VTBL_ENTRY vtc_S7318C1[] = {
  ABISELECT(1016,648),
  ABISELECT(968,616),
  ABISELECT(856,544),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7318C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7318C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7318C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7318C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7318C12v3Ev,
  ABISELECT(1000,640),
  ABISELECT(952,608),
  ABISELECT(840,536),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7318C1D1Ev,_ZThn8_N7S7318C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7318C1D0Ev,_ZThn8_N7S7318C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7318C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7318C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7318C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7318C53v14Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  ABISELECT(664,424),
  ABISELECT(552,352),
  ABISELECT(-304,-192),
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  ABISELECT(-320,-204),
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-856,-544),
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  0,
  ABISELECT(-968,-616),
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  0,
  0,
  ABISELECT(-1016,-648),
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7318C73v11Ev,
};
extern VTBL_ENTRY _ZTV7S7318C1[];
extern void _ZN7S7318C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C2__7S7318C1[] = {
  ABISELECT(968,616),
  ABISELECT(856,544),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
};
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C3__7S7318C2__7S7318C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-856,-544),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C4__A1__7S7318C2__7S7318C1[] = {
  0,
  ABISELECT(-968,-616),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern void _ZN7S7318C22v8Ev();
extern void _ZN7S7318C5D1Ev();
extern void _ZN7S7318C5D0Ev();
extern void _ZN7S7318C62v9Ev();
extern void _ZN7S7318C53v12Ev();
extern void _ZN7S7318C53v13Ev();
extern void _ZN7S7318C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C5__7S7318C1[] = {
  ABISELECT(1000,640),
  ABISELECT(952,608),
  ABISELECT(840,536),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7318C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7318C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7318C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7318C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7318C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7318C53v14Ev,
};
extern void _ZN7S7318C22v8Ev();
extern void _ZN7S7318C6D1Ev();
extern void _ZN7S7318C6D0Ev();
extern void _ZN7S7318C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C67S7318C5__7S7318C1[] = {
  ABISELECT(952,608),
  ABISELECT(840,536),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7318C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7318C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7318C62v9Ev,
};
extern void _ZN7S7318C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C27S7318C67S7318C5__A1__7S7318C1[] = {
  ABISELECT(952,608),
  ABISELECT(840,536),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
};
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C3__7S7318C27S7318C67S7318C5__A1__7S7318C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-840,-536),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C4__A1__7S7318C27S7318C67S7318C5__A1__7S7318C1[] = {
  0,
  ABISELECT(-952,-608),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C3__7S7318C67S7318C5__7S7318C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-840,-536),
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C4__A1__7S7318C67S7318C5__7S7318C1[] = {
  0,
  ABISELECT(-952,-608),
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern void _ZN7S7318C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C27S7318C5__A2__7S7318C1[] = {
  ABISELECT(664,424),
  ABISELECT(552,352),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
};
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C3__7S7318C27S7318C5__A2__7S7318C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-552,-352),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C4__A1__7S7318C27S7318C5__A2__7S7318C1[] = {
  0,
  ABISELECT(-664,-424),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C3__7S7318C5__7S7318C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-840,-536),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C4__A1__7S7318C5__7S7318C1[] = {
  0,
  ABISELECT(-952,-608),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern void _ZN7S7318C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C2__A1__7S7318C5__7S7318C1[] = {
  ABISELECT(664,424),
  ABISELECT(552,352),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
};
extern void _ZN7S7318C73v10Ev();
extern void _ZN7S7318C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C7__7S7318C5__7S7318C1[] = {
  0,
  0,
  ABISELECT(-1000,-640),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7318C73v11Ev,
};
static  VTT_ENTRY vtt_S7318C1[] = {
  {&(_ZTV7S7318C1[5]),  5,69},
  {&(_tg__ZTV7S7318C2__7S7318C1[4]),  4,5},
  {&(_tg__ZTV7S7318C3__7S7318C2__7S7318C1[6]),  6,10},
  {&(_tg__ZTV7S7318C4__A1__7S7318C2__7S7318C1[3]),  3,4},
  {&(_tg__ZTV7S7318C5__7S7318C1[5]),  5,12},
  {&(_tg__ZTV7S7318C67S7318C5__7S7318C1[4]),  4,8},
  {&(_tg__ZTV7S7318C27S7318C67S7318C5__A1__7S7318C1[4]),  4,5},
  {&(_tg__ZTV7S7318C3__7S7318C27S7318C67S7318C5__A1__7S7318C1[6]),  6,10},
  {&(_tg__ZTV7S7318C4__A1__7S7318C27S7318C67S7318C5__A1__7S7318C1[3]),  3,4},
  {&(_tg__ZTV7S7318C3__7S7318C67S7318C5__7S7318C1[6]),  6,10},
  {&(_tg__ZTV7S7318C4__A1__7S7318C67S7318C5__7S7318C1[3]),  3,4},
  {&(_tg__ZTV7S7318C27S7318C5__A2__7S7318C1[4]),  4,5},
  {&(_tg__ZTV7S7318C3__7S7318C27S7318C5__A2__7S7318C1[6]),  6,10},
  {&(_tg__ZTV7S7318C4__A1__7S7318C27S7318C5__A2__7S7318C1[3]),  3,4},
  {&(_tg__ZTV7S7318C3__7S7318C5__7S7318C1[6]),  6,10},
  {&(_tg__ZTV7S7318C4__A1__7S7318C5__7S7318C1[3]),  3,4},
  {&(_tg__ZTV7S7318C2__A1__7S7318C5__7S7318C1[4]),  4,5},
  {&(_tg__ZTV7S7318C7__7S7318C5__7S7318C1[4]),  4,6},
  {&(_ZTV7S7318C1[55]),  55,69},
  {&(_ZTV7S7318C1[62]),  62,69},
  {&(_ZTV7S7318C1[16]),  16,69},
  {&(_ZTV7S7318C1[42]),  42,69},
  {&(_ZTV7S7318C1[67]),  67,69},
};
extern VTBL_ENTRY _ZTI7S7318C1[];
extern  VTBL_ENTRY _ZTV7S7318C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C1[];
Class_Descriptor cd_S7318C1 = {  "S7318C1", // class name
  bases_S7318C1, 16,
  &(vtc_S7318C1[0]), // expected_vtbl_contents
  &(vtt_S7318C1[0]), // expected_vtt_contents
  ABISELECT(1056,676), // object size
  NSPAIRA(_ZTI7S7318C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7318C1),69, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7318C1),23, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4221C3  {
  char s4221c3f0;
  int s4221c3f1;
  void *s4221c3f2[3];
  char s4221c3f3[3];
  ::S4228C19_nt s4221c3f4;
  char s4221c3f5;
  void *s4221c3f6;
  int s4221c3f7[2];
  virtual  ~S4221C3(); // _ZN7S4221C3D1Ev
  virtual void  v11(); // _ZN7S4221C33v11Ev
  virtual void  v12(); // _ZN7S4221C33v12Ev
  virtual void  v13(); // _ZN7S4221C33v13Ev
  virtual void  v14(); // _ZN7S4221C33v14Ev
  virtual void  v15(); // _ZN7S4221C33v15Ev
  virtual void  v16(); // _ZN7S4221C33v16Ev
  virtual void  v17(); // _ZN7S4221C33v17Ev
  virtual void  v18(); // _ZN7S4221C33v18Ev
  virtual void  v19(); // _ZN7S4221C33v19Ev
  virtual void  v20(); // _ZN7S4221C33v20Ev
  virtual void  v21(); // _ZN7S4221C33v21Ev
  virtual void  v22(); // _ZN7S4221C33v22Ev
  virtual void  v23(); // _ZN7S4221C33v23Ev
  virtual void  v24(); // _ZN7S4221C33v24Ev
  S4221C3(); // tgen
};
//SIG(-1 S4221C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fc Fi Fp[3] Fc[3] FC2{ m Fp Fi FC3{ m}} Fc Fp Fi[2]}


 S4221C3 ::~S4221C3(){ note_dtor("S4221C3", this);}
void  S4221C3 ::v11(){vfunc_called(this, "_ZN7S4221C33v11Ev");}
void  S4221C3 ::v12(){vfunc_called(this, "_ZN7S4221C33v12Ev");}
void  S4221C3 ::v13(){vfunc_called(this, "_ZN7S4221C33v13Ev");}
void  S4221C3 ::v14(){vfunc_called(this, "_ZN7S4221C33v14Ev");}
void  S4221C3 ::v15(){vfunc_called(this, "_ZN7S4221C33v15Ev");}
void  S4221C3 ::v16(){vfunc_called(this, "_ZN7S4221C33v16Ev");}
void  S4221C3 ::v17(){vfunc_called(this, "_ZN7S4221C33v17Ev");}
void  S4221C3 ::v18(){vfunc_called(this, "_ZN7S4221C33v18Ev");}
void  S4221C3 ::v19(){vfunc_called(this, "_ZN7S4221C33v19Ev");}
void  S4221C3 ::v20(){vfunc_called(this, "_ZN7S4221C33v20Ev");}
void  S4221C3 ::v21(){vfunc_called(this, "_ZN7S4221C33v21Ev");}
void  S4221C3 ::v22(){vfunc_called(this, "_ZN7S4221C33v22Ev");}
void  S4221C3 ::v23(){vfunc_called(this, "_ZN7S4221C33v23Ev");}
void  S4221C3 ::v24(){vfunc_called(this, "_ZN7S4221C33v24Ev");}
S4221C3 ::S4221C3(){ note_ctor("S4221C3", this);} // tgen

static void Test_S4221C3()
{
  extern Class_Descriptor cd_S4221C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S4221C3, buf);
    S4221C3 *dp, &lv = *(dp=new (buf) S4221C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S4221C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4221C3)");
    check_field_offset(lv, s4221c3f0, ABISELECT(8,4), "S4221C3.s4221c3f0");
    check_field_offset(lv, s4221c3f1, ABISELECT(12,8), "S4221C3.s4221c3f1");
    check_field_offset(lv, s4221c3f2, ABISELECT(16,12), "S4221C3.s4221c3f2");
    check_field_offset(lv, s4221c3f3, ABISELECT(40,24), "S4221C3.s4221c3f3");
    check_field_offset(lv, s4221c3f4, ABISELECT(48,28), "S4221C3.s4221c3f4");
    check_field_offset(lv, s4221c3f5, ABISELECT(64,40), "S4221C3.s4221c3f5");
    check_field_offset(lv, s4221c3f6, ABISELECT(72,44), "S4221C3.s4221c3f6");
    check_field_offset(lv, s4221c3f7, ABISELECT(80,48), "S4221C3.s4221c3f7");
    test_class_info(&lv, &cd_S4221C3);
    dp->~S4221C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4221C3(Test_S4221C3, "S4221C3", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S4221C3C1Ev();
extern void _ZN7S4221C3D1Ev();
Name_Map name_map_S4221C3[] = {
  NSPAIR(_ZN7S4221C3C1Ev),
  NSPAIR(_ZN7S4221C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4221C3[];
extern void _ZN7S4221C3D1Ev();
extern void _ZN7S4221C3D0Ev();
extern void _ZN7S4221C33v11Ev();
extern void _ZN7S4221C33v12Ev();
extern void _ZN7S4221C33v13Ev();
extern void _ZN7S4221C33v14Ev();
extern void _ZN7S4221C33v15Ev();
extern void _ZN7S4221C33v16Ev();
extern void _ZN7S4221C33v17Ev();
extern void _ZN7S4221C33v18Ev();
extern void _ZN7S4221C33v19Ev();
extern void _ZN7S4221C33v20Ev();
extern void _ZN7S4221C33v21Ev();
extern void _ZN7S4221C33v22Ev();
extern void _ZN7S4221C33v23Ev();
extern void _ZN7S4221C33v24Ev();
static  VTBL_ENTRY vtc_S4221C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4221C3[0]),
  (VTBL_ENTRY)&_ZN7S4221C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4221C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v24Ev,
};
extern VTBL_ENTRY _ZTI7S4221C3[];
extern  VTBL_ENTRY _ZTV7S4221C3[];
Class_Descriptor cd_S4221C3 = {  "S4221C3", // class name
  0,0,//no base classes
  &(vtc_S4221C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S4221C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4221C3),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4221C2  : S4221C3 {
  char s4221c2f0;
  void *s4221c2f1[2];
  virtual  ~S4221C2(); // _ZN7S4221C2D1Ev
  virtual void  v25(); // _ZN7S4221C23v25Ev
  S4221C2(); // tgen
};
//SIG(-1 S4221C2) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fc Fi Fp[3] Fc[3] FC3{ m Fp Fi FC4{ m}} Fc Fp Fi[2]} vd v1 Fc Fp[2]}


 S4221C2 ::~S4221C2(){ note_dtor("S4221C2", this);}
void  S4221C2 ::v25(){vfunc_called(this, "_ZN7S4221C23v25Ev");}
S4221C2 ::S4221C2(){ note_ctor("S4221C2", this);} // tgen

static void Test_S4221C2()
{
  extern Class_Descriptor cd_S4221C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,18)];
    init_test(&cd_S4221C2, buf);
    S4221C2 *dp, &lv = *(dp=new (buf) S4221C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S4221C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4221C2)");
    check_base_class_offset(lv, (S4221C3*), 0, "S4221C2");
    check_field_offset(lv, s4221c2f0, ABISELECT(88,56), "S4221C2.s4221c2f0");
    check_field_offset(lv, s4221c2f1, ABISELECT(96,60), "S4221C2.s4221c2f1");
    test_class_info(&lv, &cd_S4221C2);
    dp->~S4221C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4221C2(Test_S4221C2, "S4221C2", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN7S4221C2C1Ev();
extern void _ZN7S4221C2D1Ev();
Name_Map name_map_S4221C2[] = {
  NSPAIR(_ZN7S4221C2C1Ev),
  NSPAIR(_ZN7S4221C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4221C3;
extern VTBL_ENTRY _ZTI7S4221C3[];
extern  VTBL_ENTRY _ZTV7S4221C3[];
static Base_Class bases_S4221C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4221C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4221C2[];
extern void _ZN7S4221C2D1Ev();
extern void _ZN7S4221C2D0Ev();
extern void _ZN7S4221C33v11Ev();
extern void _ZN7S4221C33v12Ev();
extern void _ZN7S4221C33v13Ev();
extern void _ZN7S4221C33v14Ev();
extern void _ZN7S4221C33v15Ev();
extern void _ZN7S4221C33v16Ev();
extern void _ZN7S4221C33v17Ev();
extern void _ZN7S4221C33v18Ev();
extern void _ZN7S4221C33v19Ev();
extern void _ZN7S4221C33v20Ev();
extern void _ZN7S4221C33v21Ev();
extern void _ZN7S4221C33v22Ev();
extern void _ZN7S4221C33v23Ev();
extern void _ZN7S4221C33v24Ev();
extern void _ZN7S4221C23v25Ev();
static  VTBL_ENTRY vtc_S4221C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4221C2[0]),
  (VTBL_ENTRY)&_ZN7S4221C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4221C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v24Ev,
  (VTBL_ENTRY)&_ZN7S4221C23v25Ev,
};
extern VTBL_ENTRY _ZTI7S4221C2[];
extern  VTBL_ENTRY _ZTV7S4221C2[];
Class_Descriptor cd_S4221C2 = {  "S4221C2", // class name
  bases_S4221C2, 1,
  &(vtc_S4221C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI7S4221C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4221C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4221C6_nt  {
  void *s4221c6f0;
  int s4221c6f1;
  ::S4228C37 s4221c6f2;
  void  mf4221c6(); // _ZN10S4221C6_nt8mf4221c6Ev
};
//SIG(-1 S4221C6_nt) C1{ m Fp Fi FC2{ m}}


void  S4221C6_nt ::mf4221c6(){}

//skip512 S4221C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4221C1  : S4221C2 {
  void *s4221c1f0[3];
  int s4221c1f1;
  ::S4221C6_nt s4221c1f2;
  char s4221c1f3;
  int s4221c1f4[2];
  ::S4221C6_nt s4221c1f5;
  ::S4228C19_nt s4221c1f6;
  ::S4228C19_nt s4221c1f7;
  ::S4228C19_nt s4221c1f8;
  ::S4228C19_nt s4221c1f9;
  char s4221c1f10;
  virtual  ~S4221C1(); // _ZN7S4221C1D1Ev
  virtual void  v1(); // _ZN7S4221C12v1Ev
  virtual void  v2(); // _ZN7S4221C12v2Ev
  virtual void  v3(); // _ZN7S4221C12v3Ev
  virtual void  v4(); // _ZN7S4221C12v4Ev
  virtual void  v5(); // _ZN7S4221C12v5Ev
  virtual void  v6(); // _ZN7S4221C12v6Ev
  virtual void  v7(); // _ZN7S4221C12v7Ev
  virtual void  v8(); // _ZN7S4221C12v8Ev
  virtual void  v9(); // _ZN7S4221C12v9Ev
  virtual void  v10(); // _ZN7S4221C13v10Ev
  S4221C1(); // tgen
};
//SIG(1 S4221C1) C1{ BC2{ BC3{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fc Fi Fp[3] Fc[3] FC4{ m Fp Fi FC5{ m}} Fc Fp Fi[2]} vd v25 Fc Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fp[3] Fi FC6{ m Fp Fi FC7{ m}} Fc Fi[2] FC6 FC4 FC4 FC4 FC4 Fc}


 S4221C1 ::~S4221C1(){ note_dtor("S4221C1", this);}
void  S4221C1 ::v1(){vfunc_called(this, "_ZN7S4221C12v1Ev");}
void  S4221C1 ::v2(){vfunc_called(this, "_ZN7S4221C12v2Ev");}
void  S4221C1 ::v3(){vfunc_called(this, "_ZN7S4221C12v3Ev");}
void  S4221C1 ::v4(){vfunc_called(this, "_ZN7S4221C12v4Ev");}
void  S4221C1 ::v5(){vfunc_called(this, "_ZN7S4221C12v5Ev");}
void  S4221C1 ::v6(){vfunc_called(this, "_ZN7S4221C12v6Ev");}
void  S4221C1 ::v7(){vfunc_called(this, "_ZN7S4221C12v7Ev");}
void  S4221C1 ::v8(){vfunc_called(this, "_ZN7S4221C12v8Ev");}
void  S4221C1 ::v9(){vfunc_called(this, "_ZN7S4221C12v9Ev");}
void  S4221C1 ::v10(){vfunc_called(this, "_ZN7S4221C13v10Ev");}
S4221C1 ::S4221C1(){ note_ctor("S4221C1", this);} // tgen

static void Test_S4221C1()
{
  extern Class_Descriptor cd_S4221C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,44)];
    init_test(&cd_S4221C1, buf);
    S4221C1 *dp, &lv = *(dp=new (buf) S4221C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,172), "sizeof(S4221C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4221C1)");
    check_base_class_offset(lv, (S4221C3*)(S4221C2*), 0, "S4221C1");
    check_base_class_offset(lv, (S4221C2*), 0, "S4221C1");
    check_field_offset(lv, s4221c1f0, ABISELECT(112,68), "S4221C1.s4221c1f0");
    check_field_offset(lv, s4221c1f1, ABISELECT(136,80), "S4221C1.s4221c1f1");
    check_field_offset(lv, s4221c1f2, ABISELECT(144,84), "S4221C1.s4221c1f2");
    check_field_offset(lv, s4221c1f3, ABISELECT(160,96), "S4221C1.s4221c1f3");
    check_field_offset(lv, s4221c1f4, ABISELECT(164,100), "S4221C1.s4221c1f4");
    check_field_offset(lv, s4221c1f5, ABISELECT(176,108), "S4221C1.s4221c1f5");
    check_field_offset(lv, s4221c1f6, ABISELECT(192,120), "S4221C1.s4221c1f6");
    check_field_offset(lv, s4221c1f7, ABISELECT(208,132), "S4221C1.s4221c1f7");
    check_field_offset(lv, s4221c1f8, ABISELECT(224,144), "S4221C1.s4221c1f8");
    check_field_offset(lv, s4221c1f9, ABISELECT(240,156), "S4221C1.s4221c1f9");
    check_field_offset(lv, s4221c1f10, ABISELECT(256,168), "S4221C1.s4221c1f10");
    test_class_info(&lv, &cd_S4221C1);
    dp->~S4221C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4221C1(Test_S4221C1, "S4221C1", ABISELECT(264,172));

#else // __cplusplus

extern void _ZN7S4221C1C1Ev();
extern void _ZN7S4221C1D1Ev();
Name_Map name_map_S4221C1[] = {
  NSPAIR(_ZN7S4221C1C1Ev),
  NSPAIR(_ZN7S4221C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4221C3;
extern VTBL_ENTRY _ZTI7S4221C3[];
extern  VTBL_ENTRY _ZTV7S4221C3[];
extern Class_Descriptor cd_S4221C2;
extern VTBL_ENTRY _ZTI7S4221C2[];
extern  VTBL_ENTRY _ZTV7S4221C2[];
static Base_Class bases_S4221C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4221C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4221C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4221C1[];
extern void _ZN7S4221C1D1Ev();
extern void _ZN7S4221C1D0Ev();
extern void _ZN7S4221C33v11Ev();
extern void _ZN7S4221C33v12Ev();
extern void _ZN7S4221C33v13Ev();
extern void _ZN7S4221C33v14Ev();
extern void _ZN7S4221C33v15Ev();
extern void _ZN7S4221C33v16Ev();
extern void _ZN7S4221C33v17Ev();
extern void _ZN7S4221C33v18Ev();
extern void _ZN7S4221C33v19Ev();
extern void _ZN7S4221C33v20Ev();
extern void _ZN7S4221C33v21Ev();
extern void _ZN7S4221C33v22Ev();
extern void _ZN7S4221C33v23Ev();
extern void _ZN7S4221C33v24Ev();
extern void _ZN7S4221C23v25Ev();
extern void _ZN7S4221C12v1Ev();
extern void _ZN7S4221C12v2Ev();
extern void _ZN7S4221C12v3Ev();
extern void _ZN7S4221C12v4Ev();
extern void _ZN7S4221C12v5Ev();
extern void _ZN7S4221C12v6Ev();
extern void _ZN7S4221C12v7Ev();
extern void _ZN7S4221C12v8Ev();
extern void _ZN7S4221C12v9Ev();
extern void _ZN7S4221C13v10Ev();
static  VTBL_ENTRY vtc_S4221C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4221C1[0]),
  (VTBL_ENTRY)&_ZN7S4221C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4221C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v24Ev,
  (VTBL_ENTRY)&_ZN7S4221C23v25Ev,
  (VTBL_ENTRY)&_ZN7S4221C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4221C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4221C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4221C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4221C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4221C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4221C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4221C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4221C12v9Ev,
  (VTBL_ENTRY)&_ZN7S4221C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S4221C1[];
extern  VTBL_ENTRY _ZTV7S4221C1[];
Class_Descriptor cd_S4221C1 = {  "S4221C1", // class name
  bases_S4221C1, 2,
  &(vtc_S4221C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(264,172), // object size
  NSPAIRA(_ZTI7S4221C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4221C1),29, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6104C3  : S20760C13 , virtual S4228C27 , virtual S4228C23 {
  short s6104c3f0;
  ~S6104C3(); // tgen
  S6104C3(); // tgen
};
//SIG(-1 S6104C3) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S6104C3 ::~S6104C3(){ note_dtor("S6104C3", this);} // tgen
S6104C3 ::S6104C3(){ note_ctor("S6104C3", this);} // tgen

static void Test_S6104C3()
{
  extern Class_Descriptor cd_S6104C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S6104C3, buf);
    S6104C3 *dp, &lv = *(dp=new (buf) S6104C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S6104C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6104C3)");
    check_base_class_offset(lv, (S20760C13*), 0, "S6104C3");
    check_base_class_offset(lv, (S4228C27*), 0, "S6104C3");
    check_base_class_offset(lv, (S4228C23*), 0, "S6104C3");
    check_field_offset(lv, s6104c3f0, ABISELECT(32,28), "S6104C3.s6104c3f0");
    test_class_info(&lv, &cd_S6104C3);
    dp->~S6104C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6104C3(Test_S6104C3, "S6104C3", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN7S6104C3C1Ev();
extern void _ZN7S6104C3D1Ev();
Name_Map name_map_S6104C3[] = {
  NSPAIR(_ZN7S6104C3C1Ev),
  NSPAIR(_ZN7S6104C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
static Base_Class bases_S6104C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6104C3[];
extern void _ZN7S6104C3D1Ev();
extern void _ZN7S6104C3D0Ev();
static  VTBL_ENTRY vtc_S6104C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6104C3[0]),
  (VTBL_ENTRY)&_ZN7S6104C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6104C3D0Ev,
};
extern VTBL_ENTRY _ZTV7S6104C3[];
static  VTT_ENTRY vtt_S6104C3[] = {
  {&(_ZTV7S6104C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S6104C3[];
extern  VTBL_ENTRY _ZTV7S6104C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6104C3[];
Class_Descriptor cd_S6104C3 = {  "S6104C3", // class name
  bases_S6104C3, 3,
  &(vtc_S6104C3[0]), // expected_vtbl_contents
  &(vtt_S6104C3[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI7S6104C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6104C3),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6104C3),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6104C12  : virtual S20760C9 {
  virtual  ~S6104C12(); // _ZN8S6104C12D2Ev
  S6104C12(); // tgen
};
//SIG(-1 S6104C12) C1{ VBC2{ vd m FL} vd}


 S6104C12 ::~S6104C12(){ note_dtor("S6104C12", this);}
S6104C12 ::S6104C12(){ note_ctor("S6104C12", this);} // tgen

static void Test_S6104C12()
{
  extern Class_Descriptor cd_S6104C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S6104C12, buf);
    S6104C12 *dp, &lv = *(dp=new (buf) S6104C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S6104C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6104C12)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S6104C12");
    test_class_info(&lv, &cd_S6104C12);
    dp->~S6104C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6104C12(Test_S6104C12, "S6104C12", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S6104C12C1Ev();
extern void _ZN8S6104C12D2Ev();
Name_Map name_map_S6104C12[] = {
  NSPAIR(_ZN8S6104C12C1Ev),
  NSPAIR(_ZN8S6104C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S6104C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6104C12[];
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZThn8_N8S6104C12D1Ev,_ZThn4_N8S6104C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
extern void ABISELECT(_ZThn8_N8S6104C12D0Ev,_ZThn4_N8S6104C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6104C12[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S6104C12[];
static  VTT_ENTRY vtt_S6104C12[] = {
  {&(_ZTV8S6104C12[3]),  3,10},
  {&(_ZTV8S6104C12[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
static VTBL_ENTRY alt_thunk_names196[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S6104C12D0Ev,_ZThn4_N8S6104C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S6104C12D1Ev,_ZThn4_N8S6104C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6104C12 = {  "S6104C12", // class name
  bases_S6104C12, 1,
  &(vtc_S6104C12[0]), // expected_vtbl_contents
  &(vtt_S6104C12[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S6104C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S6104C12),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6104C12),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names196,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6104C11  : S20760C9 , virtual S20760C13 , S6104C12 {
  ::S20760C13 s6104c11f0;
  ~S6104C11(); // tgen
  S6104C11(); // tgen
};
//SIG(-1 S6104C11) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S6104C11 ::~S6104C11(){ note_dtor("S6104C11", this);} // tgen
S6104C11 ::S6104C11(){ note_ctor("S6104C11", this);} // tgen

static void Test_S6104C11()
{
  extern Class_Descriptor cd_S6104C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S6104C11, buf);
    S6104C11 *dp, &lv = *(dp=new (buf) S6104C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S6104C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6104C11)");
    /*is_ambiguous_... S6104C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S6104C11");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S6104C11");
    check_base_class_offset(lv, (S20760C9*)(S6104C12*), ABISELECT(88,72), "S6104C11");
    check_base_class_offset(lv, (S6104C12*), ABISELECT(16,12), "S6104C11");
    check_field_offset(lv, s6104c11f0, ABISELECT(24,16), "S6104C11.s6104c11f0");
    test_class_info(&lv, &cd_S6104C11);
    dp->~S6104C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6104C11(Test_S6104C11, "S6104C11", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S6104C11C1Ev();
extern void _ZN8S6104C11D1Ev();
Name_Map name_map_S6104C11[] = {
  NSPAIR(_ZN8S6104C11C1Ev),
  NSPAIR(_ZN8S6104C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
static Base_Class bases_S6104C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6104C12,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6104C11[];
extern void _ZN8S6104C11D1Ev();
extern void _ZN8S6104C11D0Ev();
extern void ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn88_N8S6104C11D1Ev,_ZThn72_N8S6104C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZThn88_N8S6104C11D0Ev,_ZThn72_N8S6104C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6104C11[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&_ZN8S6104C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C11D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S6104C11[];
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C12__8S6104C11[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZThn72_N8S6104C12D1Ev,_ZThn60_N8S6104C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
extern void ABISELECT(_ZThn72_N8S6104C12D0Ev,_ZThn60_N8S6104C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C12__8S6104C11[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
static  VTT_ENTRY vtt_S6104C11[] = {
  {&(_ZTV8S6104C11[4]),  4,21},
  {&(_tg__ZTV8S6104C12__8S6104C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C12__8S6104C11[3]),  3,5},
  {&(_ZTV8S6104C11[14]),  14,21},
  {&(_ZTV8S6104C11[9]),  9,21},
  {&(_ZTV8S6104C11[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S6104C11[];
extern  VTBL_ENTRY _ZTV8S6104C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C11[];
static VTBL_ENTRY alt_thunk_names197[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6104C12D0Ev,_ZThn60_N8S6104C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6104C12D1Ev,_ZThn60_N8S6104C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6104C11D0Ev,_ZThn72_N8S6104C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6104C11D1Ev,_ZThn72_N8S6104C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6104C11 = {  "S6104C11", // class name
  bases_S6104C11, 4,
  &(vtc_S6104C11[0]), // expected_vtbl_contents
  &(vtt_S6104C11[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S6104C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6104C11),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6104C11),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names197,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6104C14  : virtual S20760C13 , virtual S6104C11 {
  long double s6104c14f0;
  ~S6104C14(); // tgen
  S6104C14(); // tgen
};
//SIG(-1 S6104C14) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S6104C14 ::~S6104C14(){ note_dtor("S6104C14", this);} // tgen
S6104C14 ::S6104C14(){ note_ctor("S6104C14", this);} // tgen

static void Test_S6104C14()
{
  extern Class_Descriptor cd_S6104C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S6104C14, buf);
    S6104C14 *dp, &lv = *(dp=new (buf) S6104C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S6104C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6104C14)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S6104C14");
    check_base_class_offset(lv, (S20760C13*)(S6104C11*), ABISELECT(32,16), "S6104C14");
    /*is_ambiguous_... S6104C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C11*), ABISELECT(64,44), "S6104C14");
    check_base_class_offset(lv, (S20760C9*)(S6104C12*)(S6104C11*), ABISELECT(120,88), "S6104C14");
    check_base_class_offset(lv, (S6104C12*)(S6104C11*), ABISELECT(80,56), "S6104C14");
    check_base_class_offset(lv, (S6104C11*), ABISELECT(64,44), "S6104C14");
    check_field_offset(lv, s6104c14f0, ABISELECT(16,4), "S6104C14.s6104c14f0");
    test_class_info(&lv, &cd_S6104C14);
    dp->~S6104C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6104C14(Test_S6104C14, "S6104C14", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN8S6104C14C1Ev();
extern void _ZN8S6104C14D1Ev();
Name_Map name_map_S6104C14[] = {
  NSPAIR(_ZN8S6104C14C1Ev),
  NSPAIR(_ZN8S6104C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C11;
extern VTBL_ENTRY _ZTI8S6104C11[];
extern  VTBL_ENTRY _ZTV8S6104C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C11[];
static Base_Class bases_S6104C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6104C12,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6104C11,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6104C14[];
extern void _ZN8S6104C14D1Ev();
extern void _ZN8S6104C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn32_N8S6104C14D1Ev,_ZThn16_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn32_N8S6104C14D0Ev,_ZThn16_N8S6104C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S6104C14D1Ev,_ZThn44_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S6104C14D0Ev,_ZThn44_N8S6104C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn120_N8S6104C14D1Ev,_ZThn88_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn120_N8S6104C14D0Ev,_ZThn88_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6104C14[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&_ZN8S6104C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C14D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S6104C14[];
extern void _ZN8S6104C11D1Ev();
extern void _ZN8S6104C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C14[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&_ZN8S6104C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C11D0Ev,
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C14[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S6104C12D1Ev,_ZThn32_N8S6104C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S6104C12D0Ev,_ZThn32_N8S6104C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C128S6104C11__8S6104C14[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C11__8S6104C14[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C12__8S6104C11__8S6104C14[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C11__8S6104C14[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
static  VTT_ENTRY vtt_S6104C14[] = {
  {&(_ZTV8S6104C14[5]),  5,29},
  {&(_ZTV8S6104C14[10]),  10,29},
  {&(_ZTV8S6104C14[17]),  17,29},
  {&(_ZTV8S6104C14[22]),  22,29},
  {&(_ZTV8S6104C14[27]),  27,29},
  {&(_tg__ZTV8S6104C11__8S6104C14[4]),  4,6},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C128S6104C11__8S6104C14[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C11__8S6104C14[3]),  3,5},
  {&(_tg__ZTV8S6104C12__8S6104C11__8S6104C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C11__8S6104C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S6104C14[];
extern  VTBL_ENTRY _ZTV8S6104C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C14[];
static VTBL_ENTRY alt_thunk_names198[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6104C12D0Ev,_ZThn32_N8S6104C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6104C12D1Ev,_ZThn32_N8S6104C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C14D0Ev,_ZThn44_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C14D1Ev,_ZThn44_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6104C14D0Ev,_ZThn88_N8S6104C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S6104C14D0Ev,_ZThn16_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6104C14D1Ev,_ZThn88_N8S6104C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S6104C14D1Ev,_ZThn16_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6104C14 = {  "S6104C14", // class name
  bases_S6104C14, 5,
  &(vtc_S6104C14[0]), // expected_vtbl_contents
  &(vtt_S6104C14[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI8S6104C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6104C14),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6104C14),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names198,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6104C13  : S4161C4_nt , S6104C14 , S20760C22_nt , virtual S6104C12 {
  virtual  ~S6104C13(); // _ZN8S6104C13D2Ev
  S6104C13(); // tgen
};
//SIG(-1 S6104C13) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S6104C13 ::~S6104C13(){ note_dtor("S6104C13", this);}
S6104C13 ::S6104C13(){ note_ctor("S6104C13", this);} // tgen

static void Test_S6104C13()
{
  extern Class_Descriptor cd_S6104C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S6104C13, buf);
    S6104C13 *dp, &lv = *(dp=new (buf) S6104C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S6104C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6104C13)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S6104C13");
    check_base_class_offset(lv, (S20760C13*)(S6104C14*), ABISELECT(48,24), "S6104C13");
    check_base_class_offset(lv, (S20760C13*)(S6104C11*), ABISELECT(48,24), "S6104C13");
    /*is_ambiguous_... S6104C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C11*), ABISELECT(80,52), "S6104C13");
    check_base_class_offset(lv, (S20760C9*)(S6104C12*)(S6104C11*), ABISELECT(136,96), "S6104C13");
    /*is_ambiguous_... S6104C13::S6104C12 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C12*), ABISELECT(136,96), "S6104C13");
    check_base_class_offset(lv, (S6104C12*)(S6104C11*), ABISELECT(96,64), "S6104C13");
    check_base_class_offset(lv, (S6104C11*)(S6104C14*), ABISELECT(80,52), "S6104C13");
    check_base_class_offset(lv, (S6104C14*), 0, "S6104C13");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S6104C13");
    /*is_ambiguous_... S6104C13::S6104C12 */ AMB_check_base_class_offset(lv, (S6104C12*), ABISELECT(152,108), "S6104C13");
    test_class_info(&lv, &cd_S6104C13);
    dp->~S6104C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6104C13(Test_S6104C13, "S6104C13", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN8S6104C13C1Ev();
extern void _ZN8S6104C13D2Ev();
Name_Map name_map_S6104C13[] = {
  NSPAIR(_ZN8S6104C13C1Ev),
  NSPAIR(_ZN8S6104C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C11;
extern VTBL_ENTRY _ZTI8S6104C11[];
extern  VTBL_ENTRY _ZTV8S6104C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C11[];
extern Class_Descriptor cd_S6104C14;
extern VTBL_ENTRY _ZTI8S6104C14[];
extern  VTBL_ENTRY _ZTV8S6104C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
static Base_Class bases_S6104C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S6104C12,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6104C11,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6104C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6104C12,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6104C13[];
extern void _ZN8S6104C13D1Ev();
extern void _ZN8S6104C13D0Ev();
extern void ABISELECT(_ZThn40_N8S6104C13D1Ev,_ZThn20_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn40_N8S6104C13D0Ev,_ZThn20_N8S6104C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S6104C13D1Ev,_ZThn24_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn48_N8S6104C13D0Ev,_ZThn24_N8S6104C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S6104C13D1Ev,_ZThn52_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn80_N8S6104C13D0Ev,_ZThn52_N8S6104C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S6104C13D1Ev,_ZTvn12_n20_N8S6104C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C13D0Ev,_ZTvn12_n20_N8S6104C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn136_N8S6104C13D1Ev,_ZThn96_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn136_N8S6104C13D0Ev,_ZThn96_N8S6104C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn152_N8S6104C13D1Ev,_ZThn108_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn152_N8S6104C13D0Ev,_ZThn108_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6104C13[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&_ZN8S6104C13D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C13D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6104C13D1Ev,_ZThn20_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6104C13D0Ev,_ZThn20_N8S6104C13D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C13D1Ev,_ZTvn12_n20_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C13D0Ev,_ZTvn12_n20_N8S6104C13D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S6104C13[];
extern void _ZN8S6104C14D1Ev();
extern void _ZN8S6104C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C14__8S6104C13[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&_ZN8S6104C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S6104C14D1Ev,_ZThn24_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S6104C14D0Ev,_ZThn24_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C14__8S6104C13[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S6104C14D1Ev,_ZThn52_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S6104C14D0Ev,_ZThn52_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C14__8S6104C13[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C14__8S6104C13[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn136_N8S6104C14D1Ev,_ZThn96_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn136_N8S6104C14D0Ev,_ZThn96_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C14__8S6104C13[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
};
extern void _ZN8S6104C11D1Ev();
extern void _ZN8S6104C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C13[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&_ZN8S6104C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C11D0Ev,
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C13[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S6104C12D1Ev,_ZThn32_N8S6104C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S6104C12D0Ev,_ZThn32_N8S6104C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C128S6104C11__8S6104C13[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C11__8S6104C13[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C12__8S6104C11__8S6104C13[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C11__8S6104C13[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__8S6104C13[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C12__A1__8S6104C13[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
static  VTT_ENTRY vtt_S6104C13[] = {
  {&(_ZTV8S6104C13[6]),  6,40},
  {&(_tg__ZTV8S6104C14__8S6104C13[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6104C14__8S6104C13[3]),  3,5},
  {&(_tg__ZTV8S6104C11__8S6104C14__8S6104C13[5]),  5,7},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C14__8S6104C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C14__8S6104C13[3]),  3,5},
  {&(_ZTV8S6104C13[15]),  15,40},
  {&(_ZTV8S6104C13[22]),  22,40},
  {&(_ZTV8S6104C13[27]),  27,40},
  {&(_ZTV8S6104C13[32]),  32,40},
  {&(_ZTV8S6104C13[38]),  38,40},
  {&(_tg__ZTV8S6104C11__8S6104C13[4]),  4,6},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C128S6104C11__8S6104C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C11__8S6104C13[3]),  3,5},
  {&(_tg__ZTV8S6104C12__8S6104C11__8S6104C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C11__8S6104C13[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__8S6104C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C12__A1__8S6104C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S6104C13[];
extern  VTBL_ENTRY _ZTV8S6104C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C13[];
static VTBL_ENTRY alt_thunk_names199[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6104C12D0Ev,_ZThn32_N8S6104C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6104C12D1Ev,_ZThn32_N8S6104C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C14D0Ev,_ZThn52_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C14D1Ev,_ZThn52_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C14D0Ev,_ZThn96_N8S6104C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6104C14D0Ev,_ZThn24_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C14D1Ev,_ZThn96_N8S6104C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6104C14D1Ev,_ZThn24_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6104C13D0Ev,_ZThn108_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6104C13D1Ev,_ZThn108_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C13D0Ev,_ZThn52_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C13D1Ev,_ZThn52_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C13D0Ev,_ZThn96_N8S6104C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6104C13D0Ev,_ZThn24_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C13D1Ev,_ZThn96_N8S6104C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6104C13D1Ev,_ZThn24_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6104C13 = {  "S6104C13", // class name
  bases_S6104C13, 9,
  &(vtc_S6104C13[0]), // expected_vtbl_contents
  &(vtt_S6104C13[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI8S6104C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6104C13),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6104C13),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names199,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6104C10  : virtual S4161C4_nt , virtual S20760C9 , virtual S6104C11 , S6104C13 , virtual S20759C5_nt {
  ~S6104C10(); // tgen
  S6104C10(); // tgen
};
//SIG(-1 S6104C10) C1{ VBC2{ m Fp} VBC3{ vd m FL} VBC4{ BC3 VBC5{ vd m Fi[6]} BC6{ VBC3 vd} FC5} BC7{ BC2 BC8{ VBC5 VBC4 FD} BC9{ vd m} VBC6 vd} VBC10{ vd m Fl}}


S6104C10 ::~S6104C10(){ note_dtor("S6104C10", this);} // tgen
S6104C10 ::S6104C10(){ note_ctor("S6104C10", this);} // tgen

static void Test_S6104C10()
{
  extern Class_Descriptor cd_S6104C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,32)];
    init_test(&cd_S6104C10, buf);
    S6104C10 *dp, &lv = *(dp=new (buf) S6104C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,124), "sizeof(S6104C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6104C10)");
    /*is_ambiguous_... S6104C10::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(48,24), "S6104C10");
    /*is_ambiguous_... S6104C10::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(56,28), "S6104C10");
    check_base_class_offset(lv, (S20760C9*)(S6104C12*)(S6104C11*), ABISELECT(56,28), "S6104C10");
    /*is_ambiguous_... S6104C10::S6104C12 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C12*), ABISELECT(56,28), "S6104C10");
    /*is_ambiguous_... S6104C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C11*), ABISELECT(72,40), "S6104C10");
    check_base_class_offset(lv, (S20760C13*)(S6104C11*), ABISELECT(128,84), "S6104C10");
    check_base_class_offset(lv, (S20760C13*)(S6104C14*)(S6104C13*), ABISELECT(128,84), "S6104C10");
    check_base_class_offset(lv, (S6104C12*)(S6104C11*), ABISELECT(88,52), "S6104C10");
    check_base_class_offset(lv, (S6104C11*), ABISELECT(72,40), "S6104C10");
    check_base_class_offset(lv, (S6104C11*)(S6104C14*)(S6104C13*), ABISELECT(72,40), "S6104C10");
    check_base_class_offset(lv, (S4161C4_nt*)(S6104C13*), ABISELECT(32,16), "S6104C10");
    check_base_class_offset(lv, (S6104C14*)(S6104C13*), 0, "S6104C10");
    check_base_class_offset(lv, (S20760C22_nt*)(S6104C13*), ABISELECT(40,20), "S6104C10");
    /*is_ambiguous_... S6104C13::S6104C12 */ AMB_check_base_class_offset(lv, (S6104C12*)(S6104C13*), ABISELECT(160,112), "S6104C10");
    check_base_class_offset(lv, (S6104C13*), 0, "S6104C10");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(168,116), "S6104C10");
    test_class_info(&lv, &cd_S6104C10);
    dp->~S6104C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6104C10(Test_S6104C10, "S6104C10", ABISELECT(192,124));

#else // __cplusplus

extern void _ZN8S6104C10C1Ev();
extern void _ZN8S6104C10D1Ev();
Name_Map name_map_S6104C10[] = {
  NSPAIR(_ZN8S6104C10C1Ev),
  NSPAIR(_ZN8S6104C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C11;
extern VTBL_ENTRY _ZTI8S6104C11[];
extern  VTBL_ENTRY _ZTV8S6104C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C11[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S6104C14;
extern VTBL_ENTRY _ZTI8S6104C14[];
extern  VTBL_ENTRY _ZTV8S6104C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C13;
extern VTBL_ENTRY _ZTI8S6104C13[];
extern  VTBL_ENTRY _ZTV8S6104C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C13[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S6104C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(56,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(128,84), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6104C12,    ABISELECT(88,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6104C11,    ABISELECT(72,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6104C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6104C12,    ABISELECT(160,112), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6104C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20759C5_nt,    ABISELECT(168,116), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6104C10[];
extern void _ZN8S6104C10D1Ev();
extern void _ZN8S6104C10D0Ev();
extern void ABISELECT(_ZThn40_N8S6104C10D1Ev,_ZThn20_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S6104C10D0Ev,_ZThn20_N8S6104C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S6104C10D1Ev,_ZThn28_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn56_N8S6104C10D0Ev,_ZThn28_N8S6104C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C10D1Ev,_ZTv0_n20_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn72_N8S6104C10D1Ev,_ZThn40_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C10D0Ev,_ZTv0_n20_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn72_N8S6104C10D0Ev,_ZThn40_N8S6104C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S6104C10D1Ev,_ZTvn12_n20_N8S6104C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C10D0Ev,_ZTvn12_n20_N8S6104C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S6104C10D1Ev,_ZThn84_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S6104C10D0Ev,_ZThn84_N8S6104C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6104C10D1Ev,_ZTv0_n16_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn160_N8S6104C10D1Ev,_ZThn112_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6104C10D0Ev,_ZTv0_n16_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn160_N8S6104C10D0Ev,_ZThn112_N8S6104C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S6104C10D1Ev,_ZThn116_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S6104C10D0Ev,_ZThn116_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6104C10[] = {
  ABISELECT(168,116),
  ABISELECT(48,24),
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&_ZN8S6104C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C10D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6104C10D1Ev,_ZThn20_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6104C10D0Ev,_ZThn20_N8S6104C10D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C10D1Ev,_ZTv0_n20_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C10D0Ev,_ZTv0_n20_N8S6104C10D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C10D1Ev,_ZTvn12_n20_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C10D0Ev,_ZTvn12_n20_N8S6104C10D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev),
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C10D1Ev,_ZTv0_n16_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C10D0Ev,_ZTv0_n16_N8S6104C10D0Ev),
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S6104C10[];
extern void _ZN8S6104C13D1Ev();
extern void _ZN8S6104C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C13__8S6104C10[] = {
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&_ZN8S6104C13D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C13D0Ev,
};
extern void _ZN8S6104C14D1Ev();
extern void _ZN8S6104C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C148S6104C13__8S6104C10[] = {
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&_ZN8S6104C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn128_N8S6104C14D1Ev,_ZThn84_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn128_N8S6104C14D0Ev,_ZThn84_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C148S6104C13__8S6104C10[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn72_N8S6104C14D1Ev,_ZThn40_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn72_N8S6104C14D0Ev,_ZThn40_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C148S6104C13__8S6104C10[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C148S6104C13__8S6104C10[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn56_N8S6104C14D1Ev,_ZThn28_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn56_N8S6104C14D0Ev,_ZThn28_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C148S6104C13__8S6104C10[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn128_N8S6104C13D1Ev,_ZThn84_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn128_N8S6104C13D0Ev,_ZThn84_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C13__8S6104C10[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn72_N8S6104C13D1Ev,_ZThn40_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn72_N8S6104C13D0Ev,_ZThn40_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C13__8S6104C10[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6104C13D1Ev,_ZTvn12_n20_N8S6104C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C13D0Ev,_ZTvn12_n20_N8S6104C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C13__8S6104C10[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C13D1Ev,_ZTvn12_n20_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C13D0Ev,_ZTvn12_n20_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S6104C13D1Ev,_ZThn28_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn56_N8S6104C13D0Ev,_ZThn28_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C13__8S6104C10[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn160_N8S6104C13D1Ev,_ZThn112_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn160_N8S6104C13D0Ev,_ZThn112_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__8S6104C13__8S6104C10[] = {
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev),
};
extern void _ZN8S6104C11D1Ev();
extern void _ZN8S6104C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C10[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&_ZN8S6104C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C11D0Ev,
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C10[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C128S6104C11__8S6104C10[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C11__8S6104C10[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C12__8S6104C11__8S6104C10[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C11__8S6104C10[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__8S6104C10[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C12__A1__8S6104C10[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
static  VTT_ENTRY vtt_S6104C10[] = {
  {&(_ZTV8S6104C10[8]),  8,47},
  {&(_tg__ZTV8S6104C13__8S6104C10[6]),  6,8},
  {&(_tg__ZTV8S6104C148S6104C13__8S6104C10[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6104C148S6104C13__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S6104C11__8S6104C148S6104C13__8S6104C10[5]),  5,7},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C148S6104C13__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C148S6104C13__8S6104C10[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C13__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S6104C11__8S6104C13__8S6104C10[5]),  5,7},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C13__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C13__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__8S6104C13__8S6104C10[4]),  4,6},
  {&(_ZTV8S6104C10[17]),  17,47},
  {&(_ZTV8S6104C10[24]),  24,47},
  {&(_ZTV8S6104C10[34]),  34,47},
  {&(_ZTV8S6104C10[29]),  29,47},
  {&(_ZTV8S6104C10[40]),  40,47},
  {&(_ZTV8S6104C10[45]),  45,47},
  {&(_tg__ZTV8S6104C11__8S6104C10[4]),  4,6},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C128S6104C11__8S6104C10[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C11__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S6104C12__8S6104C11__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C11__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C12__A1__8S6104C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S6104C10[];
extern  VTBL_ENTRY _ZTV8S6104C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C10[];
static VTBL_ENTRY alt_thunk_names200[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6104C13D0Ev,_ZThn112_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6104C13D1Ev,_ZThn112_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6104C13D0Ev,_ZThn40_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6104C13D1Ev,_ZThn40_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C13D0Ev,_ZThn28_N8S6104C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6104C13D0Ev,_ZThn84_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C13D1Ev,_ZThn28_N8S6104C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6104C13D1Ev,_ZThn84_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6104C14D0Ev,_ZThn40_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6104C14D1Ev,_ZThn40_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C14D0Ev,_ZThn28_N8S6104C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6104C14D0Ev,_ZThn84_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C14D1Ev,_ZThn28_N8S6104C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6104C14D1Ev,_ZThn84_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C10D0Ev,_ZTv0_n16_N8S6104C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6104C10D0Ev,_ZThn112_N8S6104C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C10D1Ev,_ZTv0_n16_N8S6104C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6104C10D1Ev,_ZThn112_N8S6104C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C10D0Ev,_ZTv0_n20_N8S6104C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6104C10D0Ev,_ZThn40_N8S6104C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C10D1Ev,_ZTv0_n20_N8S6104C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6104C10D1Ev,_ZThn40_N8S6104C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C10D0Ev,_ZThn116_N8S6104C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6104C10D0Ev,_ZThn84_N8S6104C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C10D0Ev,_ZThn28_N8S6104C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C10D1Ev,_ZThn116_N8S6104C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6104C10D1Ev,_ZThn84_N8S6104C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C10D1Ev,_ZThn28_N8S6104C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6104C10 = {  "S6104C10", // class name
  bases_S6104C10, 12,
  &(vtc_S6104C10[0]), // expected_vtbl_contents
  &(vtt_S6104C10[0]), // expected_vtt_contents
  ABISELECT(192,124), // object size
  NSPAIRA(_ZTI8S6104C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6104C10),47, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6104C10),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names200,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6104C17  : virtual S20760C13 , S6104C11 , virtual S4161C4_nt {
  ::S6104C10 s6104c17f0;
  ~S6104C17(); // tgen
  S6104C17(); // tgen
};
//SIG(-1 S6104C17) C1{ VBC2{ vd m Fi[6]} BC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} VBC6{ m Fp} FC7{ VBC6 VBC4 VBC3 BC8{ BC6 BC9{ VBC2 VBC3 FD} BC10{ vd m} VBC5 vd} VBC11{ vd m Fl}}}


S6104C17 ::~S6104C17(){ note_dtor("S6104C17", this);} // tgen
S6104C17 ::S6104C17(){ note_ctor("S6104C17", this);} // tgen

static void Test_S6104C17()
{
  extern Class_Descriptor cd_S6104C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,54)];
    init_test(&cd_S6104C17, buf);
    S6104C17 *dp, &lv = *(dp=new (buf) S6104C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,212), "sizeof(S6104C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6104C17)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(256,168), "S6104C17");
    check_base_class_offset(lv, (S20760C13*)(S6104C11*), ABISELECT(256,168), "S6104C17");
    /*is_ambiguous_... S6104C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C11*), 0, "S6104C17");
    check_base_class_offset(lv, (S20760C9*)(S6104C12*)(S6104C11*), ABISELECT(288,196), "S6104C17");
    check_base_class_offset(lv, (S6104C12*)(S6104C11*), ABISELECT(16,12), "S6104C17");
    check_base_class_offset(lv, (S6104C11*), 0, "S6104C17");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(304,208), "S6104C17");
    check_field_offset(lv, s6104c17f0, ABISELECT(64,44), "S6104C17.s6104c17f0");
    test_class_info(&lv, &cd_S6104C17);
    dp->~S6104C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6104C17(Test_S6104C17, "S6104C17", ABISELECT(320,212));

#else // __cplusplus

extern void _ZN8S6104C17C1Ev();
extern void _ZN8S6104C17D1Ev();
Name_Map name_map_S6104C17[] = {
  NSPAIR(_ZN8S6104C17C1Ev),
  NSPAIR(_ZN8S6104C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C11;
extern VTBL_ENTRY _ZTI8S6104C11[];
extern  VTBL_ENTRY _ZTV8S6104C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C11[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S6104C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(256,168), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(288,196), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6104C12,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6104C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6104C17[];
extern void _ZN8S6104C17D1Ev();
extern void _ZN8S6104C17D0Ev();
extern void ABISELECT(_ZThn16_N8S6104C17D1Ev,_ZThn12_N8S6104C17D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C17D0Ev,_ZThn12_N8S6104C17D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev)();
extern void ABISELECT(_ZThn256_N8S6104C17D1Ev,_ZThn168_N8S6104C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev)();
extern void ABISELECT(_ZThn256_N8S6104C17D0Ev,_ZThn168_N8S6104C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev)();
extern void ABISELECT(_ZThn288_N8S6104C17D1Ev,_ZThn196_N8S6104C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev)();
extern void ABISELECT(_ZThn288_N8S6104C17D0Ev,_ZThn196_N8S6104C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6104C17[] = {
  ABISELECT(304,208),
  ABISELECT(288,196),
  ABISELECT(256,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&_ZN8S6104C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C17D0Ev,
  ABISELECT(272,184),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C17D1Ev,_ZThn12_N8S6104C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C17D0Ev,_ZThn12_N8S6104C17D0Ev),
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev),
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev),
};
extern VTBL_ENTRY _ZTV8S6104C17[];
extern void _ZN8S6104C11D1Ev();
extern void _ZN8S6104C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C17[] = {
  ABISELECT(288,196),
  ABISELECT(256,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&_ZN8S6104C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C11D0Ev,
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C17[] = {
  ABISELECT(272,184),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZThn272_N8S6104C12D1Ev,_ZThn184_N8S6104C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
extern void ABISELECT(_ZThn272_N8S6104C12D0Ev,_ZThn184_N8S6104C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C128S6104C11__8S6104C17[] = {
  ABISELECT(-272,-184),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn256_N8S6104C11D1Ev,_ZThn168_N8S6104C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZThn256_N8S6104C11D0Ev,_ZThn168_N8S6104C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C11__8S6104C17[] = {
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C12__8S6104C11__8S6104C17[] = {
  ABISELECT(272,184),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn288_N8S6104C11D1Ev,_ZThn196_N8S6104C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZThn288_N8S6104C11D0Ev,_ZThn196_N8S6104C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C11__8S6104C17[] = {
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
static  VTT_ENTRY vtt_S6104C17[] = {
  {&(_ZTV8S6104C17[5]),  5,22},
  {&(_tg__ZTV8S6104C11__8S6104C17[4]),  4,6},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C128S6104C11__8S6104C17[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C11__8S6104C17[3]),  3,5},
  {&(_tg__ZTV8S6104C12__8S6104C11__8S6104C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C11__8S6104C17[3]),  3,5},
  {&(_ZTV8S6104C17[15]),  15,22},
  {&(_ZTV8S6104C17[10]),  10,22},
  {&(_ZTV8S6104C17[20]),  20,22},
};
extern VTBL_ENTRY _ZTI8S6104C17[];
extern  VTBL_ENTRY _ZTV8S6104C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C17[];
static VTBL_ENTRY alt_thunk_names201[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S6104C11D0Ev,_ZThn196_N8S6104C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6104C11D0Ev,_ZThn168_N8S6104C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S6104C11D1Ev,_ZThn196_N8S6104C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6104C11D1Ev,_ZThn168_N8S6104C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S6104C12D0Ev,_ZThn184_N8S6104C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S6104C12D1Ev,_ZThn184_N8S6104C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S6104C17D0Ev,_ZThn196_N8S6104C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6104C17D0Ev,_ZThn168_N8S6104C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S6104C17D1Ev,_ZThn196_N8S6104C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6104C17D1Ev,_ZThn168_N8S6104C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6104C17 = {  "S6104C17", // class name
  bases_S6104C17, 6,
  &(vtc_S6104C17[0]), // expected_vtbl_contents
  &(vtt_S6104C17[0]), // expected_vtt_contents
  ABISELECT(320,212), // object size
  NSPAIRA(_ZTI8S6104C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6104C17),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6104C17),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names201,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6104C7  : S4228C37 , S20760C9 , virtual S4161C4_nt , S6104C10 , virtual S6104C17 {
  int s6104c7f0;
  virtual  ~S6104C7(); // _ZN7S6104C7D2Ev
  S6104C7(); // tgen
};
//SIG(-1 S6104C7) C1{ BC2{ m} BC3{ vd m FL} VBC4{ m Fp} BC5{ VBC4 VBC3 VBC6{ BC3 VBC7{ vd m Fi[6]} BC8{ VBC3 vd} FC7} BC9{ BC4 BC10{ VBC7 VBC6 FD} BC11{ vd m} VBC8 vd} VBC12{ vd m Fl}} VBC13{ VBC7 BC6 VBC4 FC5} vd Fi}


 S6104C7 ::~S6104C7(){ note_dtor("S6104C7", this);}
S6104C7 ::S6104C7(){ note_ctor("S6104C7", this);} // tgen

static void Test_S6104C7()
{
  extern Class_Descriptor cd_S6104C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,78)];
    init_test(&cd_S6104C7, buf);
    S6104C7 *dp, &lv = *(dp=new (buf) S6104C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S6104C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6104C7)");
    check_base_class_offset(lv, (S4228C37*), 0, "S6104C7");
    /*is_ambiguous_... S6104C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S6104C7");
    /*is_ambiguous_... S6104C7::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(72,40), "S6104C7");
    /*is_ambiguous_... S6104C10::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S6104C10*), ABISELECT(72,40), "S6104C7");
    check_base_class_offset(lv, (S4161C4_nt*)(S6104C17*), ABISELECT(72,40), "S6104C7");
    /*is_ambiguous_... S6104C10::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C10*), ABISELECT(80,44), "S6104C7");
    /*is_ambiguous_... S6104C7::S6104C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C12*)(S6104C11*), ABISELECT(80,44), "S6104C7");
    /*is_ambiguous_... S6104C7::S6104C12 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C12*), ABISELECT(80,44), "S6104C7");
    check_base_class_offset(lv, (S20760C9*)(S6104C12*)(S6104C11*)(S6104C17*), ABISELECT(80,44), "S6104C7");
    /*is_ambiguous_... S6104C7::S6104C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C11*), ABISELECT(96,56), "S6104C7");
    /*is_ambiguous_... S6104C7::S6104C11 */ AMB_check_base_class_offset(lv, (S20760C13*)(S6104C11*), ABISELECT(152,100), "S6104C7");
    check_base_class_offset(lv, (S20760C13*)(S6104C14*)(S6104C13*)(S6104C10*), ABISELECT(152,100), "S6104C7");
    check_base_class_offset(lv, (S20760C13*)(S6104C17*), ABISELECT(152,100), "S6104C7");
    check_base_class_offset(lv, (S20760C13*)(S6104C11*)(S6104C17*), ABISELECT(152,100), "S6104C7");
    /*is_ambiguous_... S6104C7::S6104C11 */ AMB_check_base_class_offset(lv, (S6104C12*)(S6104C11*), ABISELECT(112,68), "S6104C7");
    check_base_class_offset(lv, (S6104C11*)(S6104C10*), ABISELECT(96,56), "S6104C7");
    check_base_class_offset(lv, (S6104C11*)(S6104C14*)(S6104C13*)(S6104C10*), ABISELECT(96,56), "S6104C7");
    check_base_class_offset(lv, (S4161C4_nt*)(S6104C13*)(S6104C10*), ABISELECT(48,28), "S6104C7");
    check_base_class_offset(lv, (S6104C14*)(S6104C13*)(S6104C10*), ABISELECT(16,12), "S6104C7");
    check_base_class_offset(lv, (S20760C22_nt*)(S6104C13*)(S6104C10*), ABISELECT(56,32), "S6104C7");
    /*is_ambiguous_... S6104C13::S6104C12 */ AMB_check_base_class_offset(lv, (S6104C12*)(S6104C13*)(S6104C10*), ABISELECT(184,128), "S6104C7");
    check_base_class_offset(lv, (S6104C13*)(S6104C10*), ABISELECT(16,12), "S6104C7");
    check_base_class_offset(lv, (S20759C5_nt*)(S6104C10*), ABISELECT(192,132), "S6104C7");
    check_base_class_offset(lv, (S6104C10*), ABISELECT(16,12), "S6104C7");
    /*is_ambiguous_... S6104C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C11*)(S6104C17*), ABISELECT(208,140), "S6104C7");
    check_base_class_offset(lv, (S6104C12*)(S6104C11*)(S6104C17*), ABISELECT(224,152), "S6104C7");
    check_base_class_offset(lv, (S6104C11*)(S6104C17*), ABISELECT(208,140), "S6104C7");
    check_base_class_offset(lv, (S6104C17*), ABISELECT(208,140), "S6104C7");
    check_field_offset(lv, s6104c7f0, ABISELECT(64,36), "S6104C7.s6104c7f0");
    test_class_info(&lv, &cd_S6104C7);
    dp->~S6104C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6104C7(Test_S6104C7, "S6104C7", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN7S6104C7C1Ev();
extern void _ZN7S6104C7D2Ev();
Name_Map name_map_S6104C7[] = {
  NSPAIR(_ZN7S6104C7C1Ev),
  NSPAIR(_ZN7S6104C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C11;
extern VTBL_ENTRY _ZTI8S6104C11[];
extern  VTBL_ENTRY _ZTV8S6104C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C11[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S6104C14;
extern VTBL_ENTRY _ZTI8S6104C14[];
extern  VTBL_ENTRY _ZTV8S6104C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C13;
extern VTBL_ENTRY _ZTI8S6104C13[];
extern  VTBL_ENTRY _ZTV8S6104C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C13[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S6104C10;
extern VTBL_ENTRY _ZTI8S6104C10[];
extern  VTBL_ENTRY _ZTV8S6104C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C10[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C11;
extern VTBL_ENTRY _ZTI8S6104C11[];
extern  VTBL_ENTRY _ZTV8S6104C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C11[];
extern Class_Descriptor cd_S6104C17;
extern VTBL_ENTRY _ZTI8S6104C17[];
extern  VTBL_ENTRY _ZTV8S6104C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C17[];
static Base_Class bases_S6104C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,100), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6104C12,    ABISELECT(112,68), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6104C11,    ABISELECT(96,56), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6104C14,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6104C12,    ABISELECT(184,128), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S6104C13,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20759C5_nt,    ABISELECT(192,132), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S6104C10,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6104C12,    ABISELECT(224,152), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6104C11,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6104C17,    ABISELECT(208,140), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6104C7[];
extern void _ZN7S6104C7D1Ev();
extern void _ZN7S6104C7D0Ev();
extern void ABISELECT(_ZThn16_N7S6104C7D1Ev,_ZThn12_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S6104C7D0Ev,_ZThn12_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S6104C7D1Ev,_ZThn32_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S6104C7D0Ev,_ZThn32_N7S6104C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S6104C7D1Ev,_ZThn44_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S6104C7D0Ev,_ZThn44_N7S6104C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6104C7D1Ev,_ZTv0_n20_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S6104C7D1Ev,_ZThn56_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6104C7D0Ev,_ZTv0_n20_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S6104C7D0Ev,_ZThn56_N7S6104C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S6104C7D1Ev,_ZTvn12_n20_N7S6104C7D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S6104C7D0Ev,_ZTvn12_n20_N7S6104C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn152_N7S6104C7D1Ev,_ZThn100_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn152_N7S6104C7D0Ev,_ZThn100_N7S6104C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6104C7D1Ev,_ZTv0_n16_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn184_N7S6104C7D1Ev,_ZThn128_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6104C7D0Ev,_ZTv0_n16_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn184_N7S6104C7D0Ev,_ZThn128_N7S6104C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn192_N7S6104C7D1Ev,_ZThn132_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn192_N7S6104C7D0Ev,_ZThn132_N7S6104C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6104C7D1Ev,_ZTv0_n24_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S6104C7D1Ev,_ZThn140_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6104C7D0Ev,_ZTv0_n24_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S6104C7D0Ev,_ZThn140_N7S6104C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S6104C7D1Ev,_ZTvn12_n24_N7S6104C7D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S6104C7D0Ev,_ZTvn12_n24_N7S6104C7D0Ev)();
static  VTBL_ENTRY vtc_S6104C7[] = {
  ABISELECT(208,140),
  ABISELECT(192,132),
  ABISELECT(184,128),
  ABISELECT(152,100),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&_ZN7S6104C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6104C7D0Ev,
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6104C7D1Ev,_ZThn12_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6104C7D0Ev,_ZThn12_N7S6104C7D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S6104C7D1Ev,_ZThn32_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S6104C7D0Ev,_ZThn32_N7S6104C7D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6104C7D1Ev,_ZTv0_n20_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6104C7D0Ev,_ZTv0_n20_N7S6104C7D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6104C7D1Ev,_ZTvn12_n20_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6104C7D0Ev,_ZTvn12_n20_N7S6104C7D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev),
  ABISELECT(-184,-128),
  ABISELECT(-104,-84),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6104C7D1Ev,_ZTv0_n16_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6104C7D0Ev,_ZTv0_n16_N7S6104C7D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev),
  ABISELECT(-208,-140),
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6104C7D1Ev,_ZTv0_n24_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6104C7D0Ev,_ZTv0_n24_N7S6104C7D0Ev),
  ABISELECT(-144,-108),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6104C7D1Ev,_ZTvn12_n24_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6104C7D0Ev,_ZTvn12_n24_N7S6104C7D0Ev),
};
extern VTBL_ENTRY _ZTV7S6104C7[];
extern void _ZN8S6104C10D1Ev();
extern void _ZN8S6104C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C10__7S6104C7[] = {
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&_ZN8S6104C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C10D0Ev,
};
extern void _ZN8S6104C13D1Ev();
extern void _ZN8S6104C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&_ZN8S6104C13D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C13D0Ev,
};
extern void _ZN8S6104C14D1Ev();
extern void _ZN8S6104C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C148S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&_ZN8S6104C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn136_N8S6104C14D1Ev,_ZThn88_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn136_N8S6104C14D0Ev,_ZThn88_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C148S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S6104C14D1Ev,_ZThn44_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S6104C14D0Ev,_ZThn44_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C148S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C148S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S6104C14D1Ev,_ZThn32_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S6104C14D0Ev,_ZThn32_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C148S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn136_N8S6104C13D1Ev,_ZThn88_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn136_N8S6104C13D0Ev,_ZThn88_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S6104C13D1Ev,_ZThn44_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn80_N8S6104C13D0Ev,_ZThn44_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6104C13D1Ev,_ZTvn12_n20_N8S6104C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C13D0Ev,_ZTvn12_n20_N8S6104C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C13D1Ev,_ZTvn12_n20_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C13D0Ev,_ZTvn12_n20_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S6104C13D1Ev,_ZThn32_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S6104C13D0Ev,_ZThn32_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn168_N8S6104C13D1Ev,_ZThn116_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn168_N8S6104C13D0Ev,_ZThn116_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__8S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S6104C10D1Ev,_ZThn32_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S6104C10D0Ev,_ZThn32_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C10__7S6104C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6104C10D1Ev,_ZTv0_n20_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S6104C10D1Ev,_ZThn44_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C10D0Ev,_ZTv0_n20_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S6104C10D0Ev,_ZThn44_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C10__7S6104C7[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C10D1Ev,_ZTv0_n20_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C10D0Ev,_ZTv0_n20_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S6104C10D1Ev,_ZThn88_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S6104C10D0Ev,_ZThn88_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C10__7S6104C7[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6104C10D1Ev,_ZTvn12_n20_N8S6104C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C10D0Ev,_ZTvn12_n20_N8S6104C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C10__7S6104C7[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C10D1Ev,_ZTvn12_n20_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C10D0Ev,_ZTvn12_n20_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6104C10D1Ev,_ZTv0_n16_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S6104C10D1Ev,_ZThn116_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6104C10D0Ev,_ZTv0_n16_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S6104C10D0Ev,_ZThn116_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__8S6104C10__7S6104C7[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C10D1Ev,_ZTv0_n16_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C10D0Ev,_ZTv0_n16_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn176_N8S6104C10D1Ev,_ZThn120_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn176_N8S6104C10D0Ev,_ZThn120_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S6104C10__7S6104C7[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev),
};
extern void _ZN8S6104C11D1Ev();
extern void _ZN8S6104C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C11__7S6104C7[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&_ZN8S6104C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C11D0Ev,
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__7S6104C7[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C128S6104C11__7S6104C7[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C11__7S6104C7[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C12__8S6104C11__7S6104C7[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C11__7S6104C7[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__7S6104C7[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C12__A1__7S6104C7[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void _ZN8S6104C17D1Ev();
extern void _ZN8S6104C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C17__7S6104C7[] = {
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&_ZN8S6104C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C17D0Ev,
};
extern void _ZN8S6104C11D1Ev();
extern void _ZN8S6104C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C118S6104C17__A1__7S6104C7[] = {
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&_ZN8S6104C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C11D0Ev,
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C118S6104C17__A2__7S6104C7[] = {
  ABISELECT(-144,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C128S6104C118S6104C17__A2__7S6104C7[] = {
  ABISELECT(144,108),
  ABISELECT(144,108),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C118S6104C17__A1__7S6104C7[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C12__8S6104C118S6104C17__A1__7S6104C7[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C118S6104C17__A1__7S6104C7[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C17__7S6104C7[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C17D1Ev,_ZThn12_N8S6104C17D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C17D0Ev,_ZThn12_N8S6104C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C17__7S6104C7[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C17D1Ev,_ZThn12_N8S6104C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C17D0Ev,_ZThn12_N8S6104C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C17__7S6104C7[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev),
};
static  VTT_ENTRY vtt_S6104C7[] = {
  {&(_ZTV7S6104C7[9]),  9,71},
  {&(_tg__ZTV8S6104C10__7S6104C7[8]),  8,10},
  {&(_tg__ZTV8S6104C138S6104C10__7S6104C7[6]),  6,8},
  {&(_tg__ZTV8S6104C148S6104C138S6104C10__7S6104C7[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6104C148S6104C138S6104C10__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C11__8S6104C148S6104C138S6104C10__7S6104C7[5]),  5,7},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C148S6104C138S6104C10__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C148S6104C138S6104C10__7S6104C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C138S6104C10__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C11__8S6104C138S6104C10__7S6104C7[5]),  5,7},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C138S6104C10__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C138S6104C10__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__8S6104C138S6104C10__7S6104C7[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S6104C10__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C11__8S6104C10__7S6104C7[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6104C10__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C10__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__8S6104C10__7S6104C7[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__8S6104C10__7S6104C7[3]),  3,5},
  {&(_ZTV7S6104C7[19]),  19,71},
  {&(_ZTV7S6104C7[28]),  28,71},
  {&(_ZTV7S6104C7[35]),  35,71},
  {&(_ZTV7S6104C7[45]),  45,71},
  {&(_ZTV7S6104C7[40]),  40,71},
  {&(_ZTV7S6104C7[51]),  51,71},
  {&(_ZTV7S6104C7[56]),  56,71},
  {&(_ZTV7S6104C7[64]),  64,71},
  {&(_ZTV7S6104C7[69]),  69,71},
  {&(_tg__ZTV8S6104C11__7S6104C7[4]),  4,6},
  {&(_tg__ZTV8S6104C128S6104C11__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C128S6104C11__7S6104C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C11__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C12__8S6104C11__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C11__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C12__A1__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C17__7S6104C7[5]),  5,7},
  {&(_tg__ZTV8S6104C118S6104C17__A1__7S6104C7[4]),  4,6},
  {&(_tg__ZTV8S6104C128S6104C118S6104C17__A2__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C128S6104C118S6104C17__A2__7S6104C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C118S6104C17__A1__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C12__8S6104C118S6104C17__A1__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C118S6104C17__A1__7S6104C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C17__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C17__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C17__7S6104C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S6104C7[];
extern  VTBL_ENTRY _ZTV7S6104C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6104C7[];
static VTBL_ENTRY alt_thunk_names202[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C10D0Ev,_ZTv0_n16_N8S6104C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C10D0Ev,_ZThn116_N8S6104C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C10D1Ev,_ZTv0_n16_N8S6104C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C10D1Ev,_ZThn116_N8S6104C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C10D0Ev,_ZTv0_n20_N8S6104C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C10D0Ev,_ZThn44_N8S6104C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C10D1Ev,_ZTv0_n20_N8S6104C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C10D1Ev,_ZThn44_N8S6104C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6104C10D0Ev,_ZThn120_N8S6104C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C10D0Ev,_ZThn88_N8S6104C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C10D0Ev,_ZThn32_N8S6104C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6104C10D1Ev,_ZThn120_N8S6104C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C10D1Ev,_ZThn88_N8S6104C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C10D1Ev,_ZThn32_N8S6104C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C13D0Ev,_ZThn116_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C13D1Ev,_ZThn116_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C13D0Ev,_ZThn44_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C13D1Ev,_ZThn44_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C13D0Ev,_ZThn32_N8S6104C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C13D0Ev,_ZThn88_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C13D1Ev,_ZThn32_N8S6104C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C13D1Ev,_ZThn88_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C14D0Ev,_ZThn44_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C14D1Ev,_ZThn44_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C14D0Ev,_ZThn32_N8S6104C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C14D0Ev,_ZThn88_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C14D1Ev,_ZThn32_N8S6104C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C14D1Ev,_ZThn88_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6104C7D0Ev,_ZTv0_n24_N7S6104C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6104C7D0Ev,_ZThn140_N7S6104C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6104C7D1Ev,_ZTv0_n24_N7S6104C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6104C7D1Ev,_ZThn140_N7S6104C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6104C7D0Ev,_ZTv0_n16_N7S6104C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S6104C7D0Ev,_ZThn128_N7S6104C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6104C7D1Ev,_ZTv0_n16_N7S6104C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S6104C7D1Ev,_ZThn128_N7S6104C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6104C7D0Ev,_ZTv0_n20_N7S6104C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6104C7D0Ev,_ZThn56_N7S6104C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6104C7D1Ev,_ZTv0_n20_N7S6104C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6104C7D1Ev,_ZThn56_N7S6104C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6104C7D0Ev,_ZThn132_N7S6104C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S6104C7D0Ev,_ZThn100_N7S6104C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6104C7D0Ev,_ZThn44_N7S6104C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6104C7D1Ev,_ZThn132_N7S6104C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S6104C7D1Ev,_ZThn100_N7S6104C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6104C7D1Ev,_ZThn44_N7S6104C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6104C7 = {  "S6104C7", // class name
  bases_S6104C7, 19,
  &(vtc_S6104C7[0]), // expected_vtbl_contents
  &(vtt_S6104C7[0]), // expected_vtt_contents
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI7S6104C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6104C7),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6104C7),46, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names202,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6104C1  : S4228C37 , S6104C3 , S6104C7 {
  ::S20469C23_nt s6104c1f0;
  virtual  ~S6104C1(); // _ZN7S6104C1D2Ev
  S6104C1(); // tgen
};
//SIG(1 S6104C1) C1{ BC2{ m} BC3{ BC4{ vd m Fi[6]} VBC5{ m} VBC6{ m} Fs} BC7{ BC2 BC8{ vd m FL} VBC9{ m Fp} BC10{ VBC9 VBC8 VBC11{ BC8 VBC4 BC12{ VBC8 vd} FC4} BC13{ BC9 BC14{ VBC4 VBC11 FD} BC15{ vd m} VBC12 vd} VBC16{ vd m Fl}} VBC17{ VBC4 BC11 VBC9 FC10} vd Fi} vd FU18{ m}}


 S6104C1 ::~S6104C1(){ note_dtor("S6104C1", this);}
S6104C1 ::S6104C1(){ note_ctor("S6104C1", this);} // tgen

static void Test_S6104C1()
{
  extern Class_Descriptor cd_S6104C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(33,87)];
    init_test(&cd_S6104C1, buf);
    S6104C1 *dp, &lv = *(dp=new (buf) S6104C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,344), "sizeof(S6104C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6104C1)");
    /*is_ambiguous_... S6104C1::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), 0, "S6104C1");
    check_base_class_offset(lv, (S20760C13*)(S6104C3*), 0, "S6104C1");
    check_base_class_offset(lv, (S4228C27*)(S6104C3*), 0, "S6104C1");
    check_base_class_offset(lv, (S4228C23*)(S6104C3*), 0, "S6104C1");
    check_base_class_offset(lv, (S6104C3*), 0, "S6104C1");
    check_base_class_offset(lv, (S4228C37*)(S6104C7*), ABISELECT(48,32), "S6104C1");
    /*is_ambiguous_... S6104C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C7*), ABISELECT(48,32), "S6104C1");
    /*is_ambiguous_... S6104C7::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S6104C7*), ABISELECT(120,76), "S6104C1");
    /*is_ambiguous_... S6104C10::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S6104C10*)(S6104C7*), ABISELECT(120,76), "S6104C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S6104C17*), ABISELECT(120,76), "S6104C1");
    /*is_ambiguous_... S6104C10::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C10*)(S6104C7*), ABISELECT(128,80), "S6104C1");
    /*is_ambiguous_... S6104C1::S6104C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C12*)(S6104C11*), ABISELECT(128,80), "S6104C1");
    /*is_ambiguous_... S6104C1::S6104C12 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C12*), ABISELECT(128,80), "S6104C1");
    check_base_class_offset(lv, (S20760C9*)(S6104C12*)(S6104C11*)(S6104C17*), ABISELECT(128,80), "S6104C1");
    /*is_ambiguous_... S6104C1::S6104C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C11*), ABISELECT(144,92), "S6104C1");
    /*is_ambiguous_... S6104C1::S6104C11 */ AMB_check_base_class_offset(lv, (S20760C13*)(S6104C11*), ABISELECT(200,136), "S6104C1");
    check_base_class_offset(lv, (S20760C13*)(S6104C14*)(S6104C13*)(S6104C10*)(S6104C7*), ABISELECT(200,136), "S6104C1");
    check_base_class_offset(lv, (S20760C13*)(S6104C17*), ABISELECT(200,136), "S6104C1");
    check_base_class_offset(lv, (S20760C13*)(S6104C11*)(S6104C17*), ABISELECT(200,136), "S6104C1");
    /*is_ambiguous_... S6104C1::S6104C11 */ AMB_check_base_class_offset(lv, (S6104C12*)(S6104C11*), ABISELECT(160,104), "S6104C1");
    check_base_class_offset(lv, (S6104C11*)(S6104C10*)(S6104C7*), ABISELECT(144,92), "S6104C1");
    check_base_class_offset(lv, (S6104C11*)(S6104C14*)(S6104C13*)(S6104C10*)(S6104C7*), ABISELECT(144,92), "S6104C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S6104C13*)(S6104C10*)(S6104C7*), ABISELECT(96,60), "S6104C1");
    check_base_class_offset(lv, (S6104C14*)(S6104C13*)(S6104C10*)(S6104C7*), ABISELECT(64,44), "S6104C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S6104C13*)(S6104C10*)(S6104C7*), ABISELECT(104,64), "S6104C1");
    /*is_ambiguous_... S6104C13::S6104C12 */ AMB_check_base_class_offset(lv, (S6104C12*)(S6104C13*)(S6104C10*)(S6104C7*), ABISELECT(232,164), "S6104C1");
    check_base_class_offset(lv, (S6104C13*)(S6104C10*)(S6104C7*), ABISELECT(64,44), "S6104C1");
    check_base_class_offset(lv, (S20759C5_nt*)(S6104C10*)(S6104C7*), ABISELECT(240,168), "S6104C1");
    check_base_class_offset(lv, (S6104C10*)(S6104C7*), ABISELECT(64,44), "S6104C1");
    /*is_ambiguous_... S6104C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C11*)(S6104C17*), ABISELECT(256,176), "S6104C1");
    check_base_class_offset(lv, (S6104C12*)(S6104C11*)(S6104C17*), ABISELECT(272,188), "S6104C1");
    check_base_class_offset(lv, (S6104C11*)(S6104C17*), ABISELECT(256,176), "S6104C1");
    check_base_class_offset(lv, (S6104C17*)(S6104C7*), ABISELECT(256,176), "S6104C1");
    check_base_class_offset(lv, (S6104C7*), ABISELECT(48,32), "S6104C1");
    check_field_offset(lv, s6104c1f0, ABISELECT(116,72), "S6104C1.s6104c1f0");
    test_class_info(&lv, &cd_S6104C1);
    dp->~S6104C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6104C1(Test_S6104C1, "S6104C1", ABISELECT(512,344));

#else // __cplusplus

extern void _ZN7S6104C1C1Ev();
extern void _ZN7S6104C1D2Ev();
Name_Map name_map_S6104C1[] = {
  NSPAIR(_ZN7S6104C1C1Ev),
  NSPAIR(_ZN7S6104C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S6104C3;
extern VTBL_ENTRY _ZTI7S6104C3[];
extern  VTBL_ENTRY _ZTV7S6104C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6104C3[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C11;
extern VTBL_ENTRY _ZTI8S6104C11[];
extern  VTBL_ENTRY _ZTV8S6104C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C11[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S6104C14;
extern VTBL_ENTRY _ZTI8S6104C14[];
extern  VTBL_ENTRY _ZTV8S6104C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C13;
extern VTBL_ENTRY _ZTI8S6104C13[];
extern  VTBL_ENTRY _ZTV8S6104C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C13[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S6104C10;
extern VTBL_ENTRY _ZTI8S6104C10[];
extern  VTBL_ENTRY _ZTV8S6104C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C10[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C11;
extern VTBL_ENTRY _ZTI8S6104C11[];
extern  VTBL_ENTRY _ZTV8S6104C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C11[];
extern Class_Descriptor cd_S6104C17;
extern VTBL_ENTRY _ZTI8S6104C17[];
extern  VTBL_ENTRY _ZTV8S6104C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C17[];
extern Class_Descriptor cd_S6104C7;
extern VTBL_ENTRY _ZTI7S6104C7[];
extern  VTBL_ENTRY _ZTV7S6104C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6104C7[];
static Base_Class bases_S6104C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S6104C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(120,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(128,80), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(144,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(200,136), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S6104C12,    ABISELECT(160,104), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6104C11,    ABISELECT(144,92), //bcp->offset
    43, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6104C14,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(104,64), //bcp->offset
    34, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6104C12,    ABISELECT(232,164), //bcp->offset
    60, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S6104C13,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20759C5_nt,    ABISELECT(240,168), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S6104C10,    ABISELECT(64,44), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(256,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6104C12,    ABISELECT(272,188), //bcp->offset
    79, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6104C11,    ABISELECT(256,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S6104C17,    ABISELECT(256,176), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S6104C7,    ABISELECT(48,32), //bcp->offset
    13, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6104C1[];
extern void _ZN7S6104C1D1Ev();
extern void _ZN7S6104C1D0Ev();
extern void ABISELECT(_ZThn48_N7S6104C1D1Ev,_ZThn32_N7S6104C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S6104C1D0Ev,_ZThn32_N7S6104C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S6104C1D1Ev,_ZThn44_N7S6104C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S6104C1D0Ev,_ZThn44_N7S6104C1D0Ev)();
extern void ABISELECT(_ZThn104_N7S6104C1D1Ev,_ZThn64_N7S6104C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S6104C1D0Ev,_ZThn64_N7S6104C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6104C1D1Ev,_ZTv0_n12_N7S6104C1D1Ev)();
extern void ABISELECT(_ZThn128_N7S6104C1D1Ev,_ZThn80_N7S6104C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C1D0Ev,_ZTv0_n12_N7S6104C1D0Ev)();
extern void ABISELECT(_ZThn128_N7S6104C1D0Ev,_ZThn80_N7S6104C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6104C1D1Ev,_ZTv0_n20_N7S6104C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S6104C1D1Ev,_ZThn92_N7S6104C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6104C1D0Ev,_ZTv0_n20_N7S6104C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S6104C1D0Ev,_ZThn92_N7S6104C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S6104C1D1Ev,_ZTvn12_n20_N7S6104C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S6104C1D0Ev,_ZTvn12_n20_N7S6104C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6104C1D1Ev,_ZTv0_n12_N7S6104C1D1Ev)();
extern void ABISELECT(_ZThn200_N7S6104C1D1Ev,_ZThn136_N7S6104C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C1D0Ev,_ZTv0_n12_N7S6104C1D0Ev)();
extern void ABISELECT(_ZThn200_N7S6104C1D0Ev,_ZThn136_N7S6104C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6104C1D1Ev,_ZTv0_n16_N7S6104C1D1Ev)();
extern void ABISELECT(_ZThn232_N7S6104C1D1Ev,_ZThn164_N7S6104C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6104C1D0Ev,_ZTv0_n16_N7S6104C1D0Ev)();
extern void ABISELECT(_ZThn232_N7S6104C1D0Ev,_ZThn164_N7S6104C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C1D1Ev,_ZTv0_n12_N7S6104C1D1Ev)();
extern void ABISELECT(_ZThn240_N7S6104C1D1Ev,_ZThn168_N7S6104C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C1D0Ev,_ZTv0_n12_N7S6104C1D0Ev)();
extern void ABISELECT(_ZThn240_N7S6104C1D0Ev,_ZThn168_N7S6104C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6104C1D1Ev,_ZTv0_n24_N7S6104C1D1Ev)();
extern void ABISELECT(_ZThn256_N7S6104C1D1Ev,_ZThn176_N7S6104C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6104C1D0Ev,_ZTv0_n24_N7S6104C1D0Ev)();
extern void ABISELECT(_ZThn256_N7S6104C1D0Ev,_ZThn176_N7S6104C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S6104C1D1Ev,_ZTvn12_n24_N7S6104C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S6104C1D0Ev,_ZTvn12_n24_N7S6104C1D0Ev)();
static  VTBL_ENTRY vtc_S6104C1[] = {
  ABISELECT(256,176),
  ABISELECT(240,168),
  ABISELECT(232,164),
  ABISELECT(200,136),
  ABISELECT(144,92),
  ABISELECT(128,80),
  ABISELECT(120,76),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&_ZN7S6104C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6104C1D0Ev,
  ABISELECT(208,144),
  ABISELECT(192,136),
  ABISELECT(184,132),
  ABISELECT(152,104),
  ABISELECT(96,60),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S6104C1D1Ev,_ZThn32_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S6104C1D0Ev,_ZThn32_N7S6104C1D0Ev),
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S6104C1D1Ev,_ZThn44_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S6104C1D0Ev,_ZThn44_N7S6104C1D0Ev),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S6104C1D1Ev,_ZThn64_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S6104C1D0Ev,_ZThn64_N7S6104C1D0Ev),
  ABISELECT(-128,-80),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C1D1Ev,_ZTv0_n12_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C1D0Ev,_ZTv0_n12_N7S6104C1D0Ev),
  ABISELECT(-144,-92),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6104C1D1Ev,_ZTv0_n20_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6104C1D0Ev,_ZTv0_n20_N7S6104C1D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6104C1D1Ev,_ZTvn12_n20_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6104C1D0Ev,_ZTvn12_n20_N7S6104C1D0Ev),
  ABISELECT(-200,-136),
  ABISELECT(-200,-136),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C1D1Ev,_ZTv0_n12_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C1D0Ev,_ZTv0_n12_N7S6104C1D0Ev),
  ABISELECT(-232,-164),
  ABISELECT(-104,-84),
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6104C1D1Ev,_ZTv0_n16_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6104C1D0Ev,_ZTv0_n16_N7S6104C1D0Ev),
  ABISELECT(-240,-168),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C1D1Ev,_ZTv0_n12_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C1D0Ev,_ZTv0_n12_N7S6104C1D0Ev),
  ABISELECT(-256,-176),
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  ABISELECT(-256,-176),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6104C1D1Ev,_ZTv0_n24_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6104C1D0Ev,_ZTv0_n24_N7S6104C1D0Ev),
  ABISELECT(-144,-108),
  ABISELECT(-272,-188),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6104C1D1Ev,_ZTvn12_n24_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6104C1D0Ev,_ZTvn12_n24_N7S6104C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S6104C1[];
extern void _ZN7S6104C3D1Ev();
extern void _ZN7S6104C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6104C3__7S6104C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6104C3[0]),
  (VTBL_ENTRY)&_ZN7S6104C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6104C3D0Ev,
};
extern void _ZN7S6104C7D1Ev();
extern void _ZN7S6104C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6104C7__7S6104C1[] = {
  ABISELECT(208,144),
  ABISELECT(192,136),
  ABISELECT(184,132),
  ABISELECT(152,104),
  ABISELECT(96,60),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&_ZN7S6104C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6104C7D0Ev,
};
extern void _ZN8S6104C10D1Ev();
extern void _ZN8S6104C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&_ZN8S6104C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C10D0Ev,
};
extern void _ZN8S6104C13D1Ev();
extern void _ZN8S6104C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&_ZN8S6104C13D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C13D0Ev,
};
extern void _ZN8S6104C14D1Ev();
extern void _ZN8S6104C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C148S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&_ZN8S6104C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn136_N8S6104C14D1Ev,_ZThn92_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn136_N8S6104C14D0Ev,_ZThn92_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C148S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S6104C14D1Ev,_ZThn48_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S6104C14D0Ev,_ZThn48_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C148S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C148S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S6104C14D1Ev,_ZThn36_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S6104C14D0Ev,_ZThn36_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C148S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn136_N8S6104C13D1Ev,_ZThn92_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn136_N8S6104C13D0Ev,_ZThn92_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S6104C13D1Ev,_ZThn48_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn80_N8S6104C13D0Ev,_ZThn48_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6104C13D1Ev,_ZTvn12_n20_N8S6104C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C13D0Ev,_ZTvn12_n20_N8S6104C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C13D1Ev,_ZTvn12_n20_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C13D0Ev,_ZTvn12_n20_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S6104C13D1Ev,_ZThn36_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S6104C13D0Ev,_ZThn36_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn168_N8S6104C13D1Ev,_ZThn120_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn168_N8S6104C13D0Ev,_ZThn120_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__8S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-168,-120),
  ABISELECT(-104,-84),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S6104C10D1Ev,_ZThn36_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S6104C10D0Ev,_ZThn36_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6104C10D1Ev,_ZTv0_n20_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S6104C10D1Ev,_ZThn48_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C10D0Ev,_ZTv0_n20_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S6104C10D0Ev,_ZThn48_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C10D1Ev,_ZTv0_n20_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C10D0Ev,_ZTv0_n20_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S6104C10D1Ev,_ZThn92_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S6104C10D0Ev,_ZThn92_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6104C10D1Ev,_ZTvn12_n20_N8S6104C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C10D0Ev,_ZTvn12_n20_N8S6104C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C10D1Ev,_ZTvn12_n20_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C10D0Ev,_ZTvn12_n20_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6104C10D1Ev,_ZTv0_n16_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S6104C10D1Ev,_ZThn120_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6104C10D0Ev,_ZTv0_n16_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S6104C10D0Ev,_ZThn120_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__8S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-168,-120),
  ABISELECT(-104,-84),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C10D1Ev,_ZTv0_n16_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C10D0Ev,_ZTv0_n16_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn176_N8S6104C10D1Ev,_ZThn124_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn176_N8S6104C10D0Ev,_ZThn124_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-176,-124),
  ABISELECT(-176,-124),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZThn16_N7S6104C7D1Ev,_ZThn12_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S6104C7D0Ev,_ZThn12_N7S6104C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C10__7S6104C7__7S6104C1[] = {
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6104C7D1Ev,_ZThn12_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6104C7D0Ev,_ZThn12_N7S6104C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S6104C7D1Ev,_ZThn48_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S6104C7D0Ev,_ZThn48_N7S6104C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S6104C7__7S6104C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S6104C7D1Ev,_ZTv0_n20_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S6104C7D1Ev,_ZThn60_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6104C7D0Ev,_ZTv0_n20_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S6104C7D0Ev,_ZThn60_N7S6104C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__7S6104C7__7S6104C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6104C7D1Ev,_ZTv0_n20_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6104C7D0Ev,_ZTv0_n20_N7S6104C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn152_N7S6104C7D1Ev,_ZThn104_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn152_N7S6104C7D0Ev,_ZThn104_N7S6104C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S6104C7__7S6104C1[] = {
  ABISELECT(-152,-104),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N7S6104C7D1Ev,_ZTvn12_n20_N7S6104C7D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S6104C7D0Ev,_ZTvn12_n20_N7S6104C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__7S6104C7__7S6104C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6104C7D1Ev,_ZTvn12_n20_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6104C7D0Ev,_ZTvn12_n20_N7S6104C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S6104C7D1Ev,_ZTv0_n16_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn184_N7S6104C7D1Ev,_ZThn132_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6104C7D0Ev,_ZTv0_n16_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn184_N7S6104C7D0Ev,_ZThn132_N7S6104C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__7S6104C7__7S6104C1[] = {
  ABISELECT(-184,-132),
  ABISELECT(-104,-84),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6104C7D1Ev,_ZTv0_n16_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6104C7D0Ev,_ZTv0_n16_N7S6104C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn192_N7S6104C7D1Ev,_ZThn136_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn192_N7S6104C7D0Ev,_ZThn136_N7S6104C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__7S6104C7__7S6104C1[] = {
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S6104C7D1Ev,_ZTv0_n24_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S6104C7D1Ev,_ZThn144_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6104C7D0Ev,_ZTv0_n24_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S6104C7D0Ev,_ZThn144_N7S6104C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C17__7S6104C7__7S6104C1[] = {
  ABISELECT(-208,-144),
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6104C7D1Ev,_ZTv0_n24_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6104C7D0Ev,_ZTv0_n24_N7S6104C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N7S6104C7D1Ev,_ZTvn12_n24_N7S6104C7D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S6104C7D0Ev,_ZTvn12_n24_N7S6104C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C118S6104C17__A2__7S6104C7__7S6104C1[] = {
  ABISELECT(-144,-108),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6104C7D1Ev,_ZTvn12_n24_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6104C7D0Ev,_ZTvn12_n24_N7S6104C7D0Ev),
};
extern void _ZN8S6104C11D1Ev();
extern void _ZN8S6104C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C11__7S6104C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&_ZN8S6104C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C11D0Ev,
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__7S6104C1[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C128S6104C11__7S6104C1[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C11__7S6104C1[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C12__8S6104C11__7S6104C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C11__7S6104C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__7S6104C1[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C12__A1__7S6104C1[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void _ZN8S6104C17D1Ev();
extern void _ZN8S6104C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C17__7S6104C1[] = {
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&_ZN8S6104C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C17D0Ev,
};
extern void _ZN8S6104C11D1Ev();
extern void _ZN8S6104C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C118S6104C17__A1__7S6104C1[] = {
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&_ZN8S6104C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C11D0Ev,
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C118S6104C17__A2__7S6104C1[] = {
  ABISELECT(-144,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C128S6104C118S6104C17__A2__7S6104C1[] = {
  ABISELECT(144,108),
  ABISELECT(144,108),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C118S6104C17__A1__7S6104C1[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C12__8S6104C118S6104C17__A1__7S6104C1[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C118S6104C17__A1__7S6104C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C17__7S6104C1[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C17D1Ev,_ZThn12_N8S6104C17D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C17D0Ev,_ZThn12_N8S6104C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C17__7S6104C1[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C17D1Ev,_ZThn12_N8S6104C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C17D0Ev,_ZThn12_N8S6104C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C17__7S6104C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev),
};
static  VTT_ENTRY vtt_S6104C1[] = {
  {&(_ZTV7S6104C1[11]),  11,84},
  {&(_tg__ZTV7S6104C3__7S6104C1[4]),  4,6},
  {&(_tg__ZTV7S6104C7__7S6104C1[9]),  9,11},
  {&(_tg__ZTV8S6104C107S6104C7__7S6104C1[8]),  8,10},
  {&(_tg__ZTV8S6104C138S6104C107S6104C7__7S6104C1[6]),  6,8},
  {&(_tg__ZTV8S6104C148S6104C138S6104C107S6104C7__7S6104C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6104C148S6104C138S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C11__8S6104C148S6104C138S6104C107S6104C7__7S6104C1[5]),  5,7},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C148S6104C138S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C148S6104C138S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C138S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C11__8S6104C138S6104C107S6104C7__7S6104C1[5]),  5,7},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C138S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C138S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__8S6104C138S6104C107S6104C7__7S6104C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C11__8S6104C107S6104C7__7S6104C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__8S6104C107S6104C7__7S6104C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__8S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C10__7S6104C7__7S6104C1[8]),  8,10},
  {&(_tg__ZTV8S20760C9__A1__7S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C11__7S6104C7__7S6104C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__7S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C128S6104C11__7S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__7S6104C7__7S6104C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__7S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C17__7S6104C7__7S6104C1[6]),  6,8},
  {&(_tg__ZTV8S6104C128S6104C118S6104C17__A2__7S6104C7__7S6104C1[3]),  3,5},
  {&(_ZTV7S6104C1[22]),  22,84},
  {&(_ZTV7S6104C1[32]),  32,84},
  {&(_ZTV7S6104C1[41]),  41,84},
  {&(_ZTV7S6104C1[48]),  48,84},
  {&(_ZTV7S6104C1[58]),  58,84},
  {&(_ZTV7S6104C1[53]),  53,84},
  {&(_ZTV7S6104C1[64]),  64,84},
  {&(_ZTV7S6104C1[69]),  69,84},
  {&(_ZTV7S6104C1[77]),  77,84},
  {&(_ZTV7S6104C1[82]),  82,84},
  {&(_tg__ZTV8S6104C11__7S6104C1[4]),  4,6},
  {&(_tg__ZTV8S6104C128S6104C11__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C128S6104C11__7S6104C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C11__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C12__8S6104C11__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C11__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C12__A1__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C17__7S6104C1[5]),  5,7},
  {&(_tg__ZTV8S6104C118S6104C17__A1__7S6104C1[4]),  4,6},
  {&(_tg__ZTV8S6104C128S6104C118S6104C17__A2__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C128S6104C118S6104C17__A2__7S6104C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C118S6104C17__A1__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C12__8S6104C118S6104C17__A1__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C118S6104C17__A1__7S6104C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C17__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C17__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C17__7S6104C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S6104C1[];
extern  VTBL_ENTRY _ZTV7S6104C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6104C1[];
static VTBL_ENTRY alt_thunk_names203[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6104C7D0Ev,_ZTv0_n24_N7S6104C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6104C7D0Ev,_ZThn144_N7S6104C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6104C7D1Ev,_ZTv0_n24_N7S6104C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6104C7D1Ev,_ZThn144_N7S6104C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6104C7D0Ev,_ZTv0_n16_N7S6104C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S6104C7D0Ev,_ZThn132_N7S6104C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6104C7D1Ev,_ZTv0_n16_N7S6104C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S6104C7D1Ev,_ZThn132_N7S6104C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6104C7D0Ev,_ZTv0_n20_N7S6104C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6104C7D0Ev,_ZThn60_N7S6104C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6104C7D1Ev,_ZTv0_n20_N7S6104C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6104C7D1Ev,_ZThn60_N7S6104C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6104C7D0Ev,_ZThn136_N7S6104C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S6104C7D0Ev,_ZThn104_N7S6104C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6104C7D0Ev,_ZThn48_N7S6104C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6104C7D1Ev,_ZThn136_N7S6104C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S6104C7D1Ev,_ZThn104_N7S6104C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6104C7D1Ev,_ZThn48_N7S6104C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C10D0Ev,_ZTv0_n16_N8S6104C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C10D0Ev,_ZThn120_N8S6104C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C10D1Ev,_ZTv0_n16_N8S6104C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C10D1Ev,_ZThn120_N8S6104C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C10D0Ev,_ZTv0_n20_N8S6104C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C10D0Ev,_ZThn48_N8S6104C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C10D1Ev,_ZTv0_n20_N8S6104C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C10D1Ev,_ZThn48_N8S6104C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6104C10D0Ev,_ZThn124_N8S6104C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C10D0Ev,_ZThn92_N8S6104C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C10D0Ev,_ZThn36_N8S6104C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6104C10D1Ev,_ZThn124_N8S6104C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C10D1Ev,_ZThn92_N8S6104C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C10D1Ev,_ZThn36_N8S6104C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C13D0Ev,_ZThn120_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C13D1Ev,_ZThn120_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C13D0Ev,_ZThn48_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C13D1Ev,_ZThn48_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C13D0Ev,_ZThn36_N8S6104C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C13D0Ev,_ZThn92_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C13D1Ev,_ZThn36_N8S6104C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C13D1Ev,_ZThn92_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C14D0Ev,_ZThn48_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C14D1Ev,_ZThn48_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C14D0Ev,_ZThn36_N8S6104C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C14D0Ev,_ZThn92_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C14D1Ev,_ZThn36_N8S6104C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C14D1Ev,_ZThn92_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6104C1D0Ev,_ZTv0_n24_N7S6104C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S6104C1D0Ev,_ZThn176_N7S6104C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6104C1D1Ev,_ZTv0_n24_N7S6104C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S6104C1D1Ev,_ZThn176_N7S6104C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6104C1D0Ev,_ZTv0_n16_N7S6104C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S6104C1D0Ev,_ZThn164_N7S6104C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6104C1D1Ev,_ZTv0_n16_N7S6104C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S6104C1D1Ev,_ZThn164_N7S6104C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6104C1D0Ev,_ZTv0_n20_N7S6104C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6104C1D0Ev,_ZThn92_N7S6104C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6104C1D1Ev,_ZTv0_n20_N7S6104C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6104C1D1Ev,_ZThn92_N7S6104C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6104C1D0Ev,_ZTv0_n12_N7S6104C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S6104C1D0Ev,_ZThn168_N7S6104C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S6104C1D0Ev,_ZThn136_N7S6104C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6104C1D0Ev,_ZThn80_N7S6104C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6104C1D1Ev,_ZTv0_n12_N7S6104C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S6104C1D1Ev,_ZThn168_N7S6104C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S6104C1D1Ev,_ZThn136_N7S6104C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6104C1D1Ev,_ZThn80_N7S6104C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6104C1 = {  "S6104C1", // class name
  bases_S6104C1, 25,
  &(vtc_S6104C1[0]), // expected_vtbl_contents
  &(vtt_S6104C1[0]), // expected_vtt_contents
  ABISELECT(512,344), // object size
  NSPAIRA(_ZTI7S6104C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6104C1),84, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6104C1),58, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names203,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6105C3  : S20760C13 , virtual S4228C27 , virtual S4228C23 {
  short s6105c3f0;
  ~S6105C3(); // tgen
  S6105C3(); // tgen
};
//SIG(-1 S6105C3) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S6105C3 ::~S6105C3(){ note_dtor("S6105C3", this);} // tgen
S6105C3 ::S6105C3(){ note_ctor("S6105C3", this);} // tgen

static void Test_S6105C3()
{
  extern Class_Descriptor cd_S6105C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S6105C3, buf);
    S6105C3 *dp, &lv = *(dp=new (buf) S6105C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S6105C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6105C3)");
    check_base_class_offset(lv, (S20760C13*), 0, "S6105C3");
    check_base_class_offset(lv, (S4228C27*), 0, "S6105C3");
    check_base_class_offset(lv, (S4228C23*), 0, "S6105C3");
    check_field_offset(lv, s6105c3f0, ABISELECT(32,28), "S6105C3.s6105c3f0");
    test_class_info(&lv, &cd_S6105C3);
    dp->~S6105C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6105C3(Test_S6105C3, "S6105C3", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN7S6105C3C1Ev();
extern void _ZN7S6105C3D1Ev();
Name_Map name_map_S6105C3[] = {
  NSPAIR(_ZN7S6105C3C1Ev),
  NSPAIR(_ZN7S6105C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
static Base_Class bases_S6105C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6105C3[];
extern void _ZN7S6105C3D1Ev();
extern void _ZN7S6105C3D0Ev();
static  VTBL_ENTRY vtc_S6105C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6105C3[0]),
  (VTBL_ENTRY)&_ZN7S6105C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6105C3D0Ev,
};
extern VTBL_ENTRY _ZTV7S6105C3[];
static  VTT_ENTRY vtt_S6105C3[] = {
  {&(_ZTV7S6105C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S6105C3[];
extern  VTBL_ENTRY _ZTV7S6105C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6105C3[];
Class_Descriptor cd_S6105C3 = {  "S6105C3", // class name
  bases_S6105C3, 3,
  &(vtc_S6105C3[0]), // expected_vtbl_contents
  &(vtt_S6105C3[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI7S6105C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6105C3),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6105C3),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6105C12  : virtual S20760C9 {
  virtual  ~S6105C12(); // _ZN8S6105C12D2Ev
  S6105C12(); // tgen
};
//SIG(-1 S6105C12) C1{ VBC2{ vd m FL} vd}


 S6105C12 ::~S6105C12(){ note_dtor("S6105C12", this);}
S6105C12 ::S6105C12(){ note_ctor("S6105C12", this);} // tgen

static void Test_S6105C12()
{
  extern Class_Descriptor cd_S6105C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S6105C12, buf);
    S6105C12 *dp, &lv = *(dp=new (buf) S6105C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S6105C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6105C12)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S6105C12");
    test_class_info(&lv, &cd_S6105C12);
    dp->~S6105C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6105C12(Test_S6105C12, "S6105C12", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S6105C12C1Ev();
extern void _ZN8S6105C12D2Ev();
Name_Map name_map_S6105C12[] = {
  NSPAIR(_ZN8S6105C12C1Ev),
  NSPAIR(_ZN8S6105C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S6105C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6105C12[];
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZThn8_N8S6105C12D1Ev,_ZThn4_N8S6105C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
extern void ABISELECT(_ZThn8_N8S6105C12D0Ev,_ZThn4_N8S6105C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6105C12[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S6105C12[];
static  VTT_ENTRY vtt_S6105C12[] = {
  {&(_ZTV8S6105C12[3]),  3,10},
  {&(_ZTV8S6105C12[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
static VTBL_ENTRY alt_thunk_names204[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S6105C12D0Ev,_ZThn4_N8S6105C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S6105C12D1Ev,_ZThn4_N8S6105C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6105C12 = {  "S6105C12", // class name
  bases_S6105C12, 1,
  &(vtc_S6105C12[0]), // expected_vtbl_contents
  &(vtt_S6105C12[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S6105C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S6105C12),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6105C12),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names204,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6105C11  : S20760C9 , virtual S20760C13 , S6105C12 {
  ::S20760C13 s6105c11f0;
  ~S6105C11(); // tgen
  S6105C11(); // tgen
};
//SIG(-1 S6105C11) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S6105C11 ::~S6105C11(){ note_dtor("S6105C11", this);} // tgen
S6105C11 ::S6105C11(){ note_ctor("S6105C11", this);} // tgen

static void Test_S6105C11()
{
  extern Class_Descriptor cd_S6105C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S6105C11, buf);
    S6105C11 *dp, &lv = *(dp=new (buf) S6105C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S6105C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6105C11)");
    /*is_ambiguous_... S6105C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S6105C11");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S6105C11");
    check_base_class_offset(lv, (S20760C9*)(S6105C12*), ABISELECT(88,72), "S6105C11");
    check_base_class_offset(lv, (S6105C12*), ABISELECT(16,12), "S6105C11");
    check_field_offset(lv, s6105c11f0, ABISELECT(24,16), "S6105C11.s6105c11f0");
    test_class_info(&lv, &cd_S6105C11);
    dp->~S6105C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6105C11(Test_S6105C11, "S6105C11", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S6105C11C1Ev();
extern void _ZN8S6105C11D1Ev();
Name_Map name_map_S6105C11[] = {
  NSPAIR(_ZN8S6105C11C1Ev),
  NSPAIR(_ZN8S6105C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
static Base_Class bases_S6105C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6105C12,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6105C11[];
extern void _ZN8S6105C11D1Ev();
extern void _ZN8S6105C11D0Ev();
extern void ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn88_N8S6105C11D1Ev,_ZThn72_N8S6105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZThn88_N8S6105C11D0Ev,_ZThn72_N8S6105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6105C11[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&_ZN8S6105C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C11D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S6105C11[];
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C12__8S6105C11[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZThn72_N8S6105C12D1Ev,_ZThn60_N8S6105C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
extern void ABISELECT(_ZThn72_N8S6105C12D0Ev,_ZThn60_N8S6105C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C12__8S6105C11[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
static  VTT_ENTRY vtt_S6105C11[] = {
  {&(_ZTV8S6105C11[4]),  4,21},
  {&(_tg__ZTV8S6105C12__8S6105C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C12__8S6105C11[3]),  3,5},
  {&(_ZTV8S6105C11[14]),  14,21},
  {&(_ZTV8S6105C11[9]),  9,21},
  {&(_ZTV8S6105C11[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S6105C11[];
extern  VTBL_ENTRY _ZTV8S6105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C11[];
static VTBL_ENTRY alt_thunk_names205[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6105C12D0Ev,_ZThn60_N8S6105C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6105C12D1Ev,_ZThn60_N8S6105C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6105C11D0Ev,_ZThn72_N8S6105C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6105C11D1Ev,_ZThn72_N8S6105C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6105C11 = {  "S6105C11", // class name
  bases_S6105C11, 4,
  &(vtc_S6105C11[0]), // expected_vtbl_contents
  &(vtt_S6105C11[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S6105C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6105C11),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6105C11),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names205,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6105C14  : virtual S20760C13 , virtual S6105C11 {
  long double s6105c14f0;
  ~S6105C14(); // tgen
  S6105C14(); // tgen
};
//SIG(-1 S6105C14) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S6105C14 ::~S6105C14(){ note_dtor("S6105C14", this);} // tgen
S6105C14 ::S6105C14(){ note_ctor("S6105C14", this);} // tgen

static void Test_S6105C14()
{
  extern Class_Descriptor cd_S6105C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S6105C14, buf);
    S6105C14 *dp, &lv = *(dp=new (buf) S6105C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S6105C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6105C14)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S6105C14");
    check_base_class_offset(lv, (S20760C13*)(S6105C11*), ABISELECT(32,16), "S6105C14");
    /*is_ambiguous_... S6105C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C11*), ABISELECT(64,44), "S6105C14");
    check_base_class_offset(lv, (S20760C9*)(S6105C12*)(S6105C11*), ABISELECT(120,88), "S6105C14");
    check_base_class_offset(lv, (S6105C12*)(S6105C11*), ABISELECT(80,56), "S6105C14");
    check_base_class_offset(lv, (S6105C11*), ABISELECT(64,44), "S6105C14");
    check_field_offset(lv, s6105c14f0, ABISELECT(16,4), "S6105C14.s6105c14f0");
    test_class_info(&lv, &cd_S6105C14);
    dp->~S6105C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6105C14(Test_S6105C14, "S6105C14", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN8S6105C14C1Ev();
extern void _ZN8S6105C14D1Ev();
Name_Map name_map_S6105C14[] = {
  NSPAIR(_ZN8S6105C14C1Ev),
  NSPAIR(_ZN8S6105C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C11;
extern VTBL_ENTRY _ZTI8S6105C11[];
extern  VTBL_ENTRY _ZTV8S6105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C11[];
static Base_Class bases_S6105C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6105C12,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6105C11,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6105C14[];
extern void _ZN8S6105C14D1Ev();
extern void _ZN8S6105C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn32_N8S6105C14D1Ev,_ZThn16_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn32_N8S6105C14D0Ev,_ZThn16_N8S6105C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S6105C14D1Ev,_ZThn44_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S6105C14D0Ev,_ZThn44_N8S6105C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn120_N8S6105C14D1Ev,_ZThn88_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn120_N8S6105C14D0Ev,_ZThn88_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6105C14[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&_ZN8S6105C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C14D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S6105C14[];
extern void _ZN8S6105C11D1Ev();
extern void _ZN8S6105C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C14[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&_ZN8S6105C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C11D0Ev,
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C14[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S6105C12D1Ev,_ZThn32_N8S6105C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S6105C12D0Ev,_ZThn32_N8S6105C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C128S6105C11__8S6105C14[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C11__8S6105C14[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C12__8S6105C11__8S6105C14[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C11__8S6105C14[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
static  VTT_ENTRY vtt_S6105C14[] = {
  {&(_ZTV8S6105C14[5]),  5,29},
  {&(_ZTV8S6105C14[10]),  10,29},
  {&(_ZTV8S6105C14[17]),  17,29},
  {&(_ZTV8S6105C14[22]),  22,29},
  {&(_ZTV8S6105C14[27]),  27,29},
  {&(_tg__ZTV8S6105C11__8S6105C14[4]),  4,6},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C128S6105C11__8S6105C14[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C11__8S6105C14[3]),  3,5},
  {&(_tg__ZTV8S6105C12__8S6105C11__8S6105C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C11__8S6105C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S6105C14[];
extern  VTBL_ENTRY _ZTV8S6105C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C14[];
static VTBL_ENTRY alt_thunk_names206[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6105C12D0Ev,_ZThn32_N8S6105C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6105C12D1Ev,_ZThn32_N8S6105C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C14D0Ev,_ZThn44_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C14D1Ev,_ZThn44_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6105C14D0Ev,_ZThn88_N8S6105C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S6105C14D0Ev,_ZThn16_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6105C14D1Ev,_ZThn88_N8S6105C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S6105C14D1Ev,_ZThn16_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6105C14 = {  "S6105C14", // class name
  bases_S6105C14, 5,
  &(vtc_S6105C14[0]), // expected_vtbl_contents
  &(vtt_S6105C14[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI8S6105C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6105C14),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6105C14),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names206,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6105C13  : S4161C4_nt , S6105C14 , S20760C22_nt , virtual S6105C12 {
  virtual  ~S6105C13(); // _ZN8S6105C13D2Ev
  S6105C13(); // tgen
};
//SIG(-1 S6105C13) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S6105C13 ::~S6105C13(){ note_dtor("S6105C13", this);}
S6105C13 ::S6105C13(){ note_ctor("S6105C13", this);} // tgen

static void Test_S6105C13()
{
  extern Class_Descriptor cd_S6105C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S6105C13, buf);
    S6105C13 *dp, &lv = *(dp=new (buf) S6105C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S6105C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6105C13)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S6105C13");
    check_base_class_offset(lv, (S20760C13*)(S6105C14*), ABISELECT(48,24), "S6105C13");
    check_base_class_offset(lv, (S20760C13*)(S6105C11*), ABISELECT(48,24), "S6105C13");
    /*is_ambiguous_... S6105C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C11*), ABISELECT(80,52), "S6105C13");
    check_base_class_offset(lv, (S20760C9*)(S6105C12*)(S6105C11*), ABISELECT(136,96), "S6105C13");
    /*is_ambiguous_... S6105C13::S6105C12 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C12*), ABISELECT(136,96), "S6105C13");
    check_base_class_offset(lv, (S6105C12*)(S6105C11*), ABISELECT(96,64), "S6105C13");
    check_base_class_offset(lv, (S6105C11*)(S6105C14*), ABISELECT(80,52), "S6105C13");
    check_base_class_offset(lv, (S6105C14*), 0, "S6105C13");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S6105C13");
    /*is_ambiguous_... S6105C13::S6105C12 */ AMB_check_base_class_offset(lv, (S6105C12*), ABISELECT(152,108), "S6105C13");
    test_class_info(&lv, &cd_S6105C13);
    dp->~S6105C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6105C13(Test_S6105C13, "S6105C13", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN8S6105C13C1Ev();
extern void _ZN8S6105C13D2Ev();
Name_Map name_map_S6105C13[] = {
  NSPAIR(_ZN8S6105C13C1Ev),
  NSPAIR(_ZN8S6105C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C11;
extern VTBL_ENTRY _ZTI8S6105C11[];
extern  VTBL_ENTRY _ZTV8S6105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C11[];
extern Class_Descriptor cd_S6105C14;
extern VTBL_ENTRY _ZTI8S6105C14[];
extern  VTBL_ENTRY _ZTV8S6105C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
static Base_Class bases_S6105C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S6105C12,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6105C11,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6105C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6105C12,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6105C13[];
extern void _ZN8S6105C13D1Ev();
extern void _ZN8S6105C13D0Ev();
extern void ABISELECT(_ZThn40_N8S6105C13D1Ev,_ZThn20_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn40_N8S6105C13D0Ev,_ZThn20_N8S6105C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S6105C13D1Ev,_ZThn24_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn48_N8S6105C13D0Ev,_ZThn24_N8S6105C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S6105C13D1Ev,_ZThn52_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn80_N8S6105C13D0Ev,_ZThn52_N8S6105C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S6105C13D1Ev,_ZTvn12_n20_N8S6105C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C13D0Ev,_ZTvn12_n20_N8S6105C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn136_N8S6105C13D1Ev,_ZThn96_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn136_N8S6105C13D0Ev,_ZThn96_N8S6105C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn152_N8S6105C13D1Ev,_ZThn108_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn152_N8S6105C13D0Ev,_ZThn108_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6105C13[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&_ZN8S6105C13D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C13D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6105C13D1Ev,_ZThn20_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6105C13D0Ev,_ZThn20_N8S6105C13D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C13D1Ev,_ZTvn12_n20_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C13D0Ev,_ZTvn12_n20_N8S6105C13D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S6105C13[];
extern void _ZN8S6105C14D1Ev();
extern void _ZN8S6105C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C14__8S6105C13[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&_ZN8S6105C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S6105C14D1Ev,_ZThn24_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S6105C14D0Ev,_ZThn24_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C14__8S6105C13[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S6105C14D1Ev,_ZThn52_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S6105C14D0Ev,_ZThn52_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C14__8S6105C13[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C14__8S6105C13[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn136_N8S6105C14D1Ev,_ZThn96_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn136_N8S6105C14D0Ev,_ZThn96_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C14__8S6105C13[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
};
extern void _ZN8S6105C11D1Ev();
extern void _ZN8S6105C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C13[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&_ZN8S6105C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C11D0Ev,
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C13[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S6105C12D1Ev,_ZThn32_N8S6105C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S6105C12D0Ev,_ZThn32_N8S6105C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C128S6105C11__8S6105C13[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C11__8S6105C13[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C12__8S6105C11__8S6105C13[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C11__8S6105C13[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__8S6105C13[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C12__A1__8S6105C13[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
static  VTT_ENTRY vtt_S6105C13[] = {
  {&(_ZTV8S6105C13[6]),  6,40},
  {&(_tg__ZTV8S6105C14__8S6105C13[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6105C14__8S6105C13[3]),  3,5},
  {&(_tg__ZTV8S6105C11__8S6105C14__8S6105C13[5]),  5,7},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C14__8S6105C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C14__8S6105C13[3]),  3,5},
  {&(_ZTV8S6105C13[15]),  15,40},
  {&(_ZTV8S6105C13[22]),  22,40},
  {&(_ZTV8S6105C13[27]),  27,40},
  {&(_ZTV8S6105C13[32]),  32,40},
  {&(_ZTV8S6105C13[38]),  38,40},
  {&(_tg__ZTV8S6105C11__8S6105C13[4]),  4,6},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C128S6105C11__8S6105C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C11__8S6105C13[3]),  3,5},
  {&(_tg__ZTV8S6105C12__8S6105C11__8S6105C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C11__8S6105C13[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__8S6105C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C12__A1__8S6105C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S6105C13[];
extern  VTBL_ENTRY _ZTV8S6105C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C13[];
static VTBL_ENTRY alt_thunk_names207[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6105C12D0Ev,_ZThn32_N8S6105C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6105C12D1Ev,_ZThn32_N8S6105C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C14D0Ev,_ZThn52_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C14D1Ev,_ZThn52_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C14D0Ev,_ZThn96_N8S6105C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6105C14D0Ev,_ZThn24_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C14D1Ev,_ZThn96_N8S6105C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6105C14D1Ev,_ZThn24_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6105C13D0Ev,_ZThn108_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6105C13D1Ev,_ZThn108_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C13D0Ev,_ZThn52_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C13D1Ev,_ZThn52_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C13D0Ev,_ZThn96_N8S6105C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6105C13D0Ev,_ZThn24_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C13D1Ev,_ZThn96_N8S6105C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6105C13D1Ev,_ZThn24_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6105C13 = {  "S6105C13", // class name
  bases_S6105C13, 9,
  &(vtc_S6105C13[0]), // expected_vtbl_contents
  &(vtt_S6105C13[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI8S6105C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6105C13),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6105C13),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names207,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6105C10  : virtual S4161C4_nt , virtual S20760C9 , virtual S6105C11 , S6105C13 , virtual S20760C5_nt {
  ~S6105C10(); // tgen
  S6105C10(); // tgen
};
//SIG(-1 S6105C10) C1{ VBC2{ m Fp} VBC3{ vd m FL} VBC4{ BC3 VBC5{ vd m Fi[6]} BC6{ VBC3 vd} FC5} BC7{ BC2 BC8{ VBC5 VBC4 FD} BC9{ vd m} VBC6 vd} VBC10{ vd m FL}}


S6105C10 ::~S6105C10(){ note_dtor("S6105C10", this);} // tgen
S6105C10 ::S6105C10(){ note_ctor("S6105C10", this);} // tgen

static void Test_S6105C10()
{
  extern Class_Descriptor cd_S6105C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,33)];
    init_test(&cd_S6105C10, buf);
    S6105C10 *dp, &lv = *(dp=new (buf) S6105C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,128), "sizeof(S6105C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6105C10)");
    /*is_ambiguous_... S6105C10::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(48,24), "S6105C10");
    /*is_ambiguous_... S6105C10::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(56,28), "S6105C10");
    check_base_class_offset(lv, (S20760C9*)(S6105C12*)(S6105C11*), ABISELECT(56,28), "S6105C10");
    /*is_ambiguous_... S6105C10::S6105C12 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C12*), ABISELECT(56,28), "S6105C10");
    /*is_ambiguous_... S6105C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C11*), ABISELECT(72,40), "S6105C10");
    check_base_class_offset(lv, (S20760C13*)(S6105C11*), ABISELECT(128,84), "S6105C10");
    check_base_class_offset(lv, (S20760C13*)(S6105C14*)(S6105C13*), ABISELECT(128,84), "S6105C10");
    check_base_class_offset(lv, (S6105C12*)(S6105C11*), ABISELECT(88,52), "S6105C10");
    check_base_class_offset(lv, (S6105C11*), ABISELECT(72,40), "S6105C10");
    check_base_class_offset(lv, (S6105C11*)(S6105C14*)(S6105C13*), ABISELECT(72,40), "S6105C10");
    check_base_class_offset(lv, (S4161C4_nt*)(S6105C13*), ABISELECT(32,16), "S6105C10");
    check_base_class_offset(lv, (S6105C14*)(S6105C13*), 0, "S6105C10");
    check_base_class_offset(lv, (S20760C22_nt*)(S6105C13*), ABISELECT(40,20), "S6105C10");
    /*is_ambiguous_... S6105C13::S6105C12 */ AMB_check_base_class_offset(lv, (S6105C12*)(S6105C13*), ABISELECT(160,112), "S6105C10");
    check_base_class_offset(lv, (S6105C13*), 0, "S6105C10");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(168,116), "S6105C10");
    test_class_info(&lv, &cd_S6105C10);
    dp->~S6105C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6105C10(Test_S6105C10, "S6105C10", ABISELECT(192,128));

#else // __cplusplus

extern void _ZN8S6105C10C1Ev();
extern void _ZN8S6105C10D1Ev();
Name_Map name_map_S6105C10[] = {
  NSPAIR(_ZN8S6105C10C1Ev),
  NSPAIR(_ZN8S6105C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C11;
extern VTBL_ENTRY _ZTI8S6105C11[];
extern  VTBL_ENTRY _ZTV8S6105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C11[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S6105C14;
extern VTBL_ENTRY _ZTI8S6105C14[];
extern  VTBL_ENTRY _ZTV8S6105C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C13;
extern VTBL_ENTRY _ZTI8S6105C13[];
extern  VTBL_ENTRY _ZTV8S6105C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S6105C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(56,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(128,84), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6105C12,    ABISELECT(88,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6105C11,    ABISELECT(72,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6105C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6105C12,    ABISELECT(160,112), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6105C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C5_nt,    ABISELECT(168,116), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6105C10[];
extern void _ZN8S6105C10D1Ev();
extern void _ZN8S6105C10D0Ev();
extern void ABISELECT(_ZThn40_N8S6105C10D1Ev,_ZThn20_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S6105C10D0Ev,_ZThn20_N8S6105C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S6105C10D1Ev,_ZThn28_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn56_N8S6105C10D0Ev,_ZThn28_N8S6105C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C10D1Ev,_ZTv0_n20_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn72_N8S6105C10D1Ev,_ZThn40_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C10D0Ev,_ZTv0_n20_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn72_N8S6105C10D0Ev,_ZThn40_N8S6105C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S6105C10D1Ev,_ZTvn12_n20_N8S6105C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C10D0Ev,_ZTvn12_n20_N8S6105C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S6105C10D1Ev,_ZThn84_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S6105C10D0Ev,_ZThn84_N8S6105C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6105C10D1Ev,_ZTv0_n16_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn160_N8S6105C10D1Ev,_ZThn112_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6105C10D0Ev,_ZTv0_n16_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn160_N8S6105C10D0Ev,_ZThn112_N8S6105C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S6105C10D1Ev,_ZThn116_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S6105C10D0Ev,_ZThn116_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6105C10[] = {
  ABISELECT(168,116),
  ABISELECT(48,24),
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&_ZN8S6105C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C10D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6105C10D1Ev,_ZThn20_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6105C10D0Ev,_ZThn20_N8S6105C10D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C10D1Ev,_ZTv0_n20_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C10D0Ev,_ZTv0_n20_N8S6105C10D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C10D1Ev,_ZTvn12_n20_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C10D0Ev,_ZTvn12_n20_N8S6105C10D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev),
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C10D1Ev,_ZTv0_n16_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C10D0Ev,_ZTv0_n16_N8S6105C10D0Ev),
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S6105C10[];
extern void _ZN8S6105C13D1Ev();
extern void _ZN8S6105C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C13__8S6105C10[] = {
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&_ZN8S6105C13D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C13D0Ev,
};
extern void _ZN8S6105C14D1Ev();
extern void _ZN8S6105C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C148S6105C13__8S6105C10[] = {
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&_ZN8S6105C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn128_N8S6105C14D1Ev,_ZThn84_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn128_N8S6105C14D0Ev,_ZThn84_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C148S6105C13__8S6105C10[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn72_N8S6105C14D1Ev,_ZThn40_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn72_N8S6105C14D0Ev,_ZThn40_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C148S6105C13__8S6105C10[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C148S6105C13__8S6105C10[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn56_N8S6105C14D1Ev,_ZThn28_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn56_N8S6105C14D0Ev,_ZThn28_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C148S6105C13__8S6105C10[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn128_N8S6105C13D1Ev,_ZThn84_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn128_N8S6105C13D0Ev,_ZThn84_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C13__8S6105C10[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn72_N8S6105C13D1Ev,_ZThn40_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn72_N8S6105C13D0Ev,_ZThn40_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C13__8S6105C10[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6105C13D1Ev,_ZTvn12_n20_N8S6105C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C13D0Ev,_ZTvn12_n20_N8S6105C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C13__8S6105C10[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C13D1Ev,_ZTvn12_n20_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C13D0Ev,_ZTvn12_n20_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S6105C13D1Ev,_ZThn28_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn56_N8S6105C13D0Ev,_ZThn28_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C13__8S6105C10[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn160_N8S6105C13D1Ev,_ZThn112_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn160_N8S6105C13D0Ev,_ZThn112_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__8S6105C13__8S6105C10[] = {
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev),
};
extern void _ZN8S6105C11D1Ev();
extern void _ZN8S6105C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C10[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&_ZN8S6105C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C11D0Ev,
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C10[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C128S6105C11__8S6105C10[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C11__8S6105C10[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C12__8S6105C11__8S6105C10[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C11__8S6105C10[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__8S6105C10[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C12__A1__8S6105C10[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
static  VTT_ENTRY vtt_S6105C10[] = {
  {&(_ZTV8S6105C10[8]),  8,47},
  {&(_tg__ZTV8S6105C13__8S6105C10[6]),  6,8},
  {&(_tg__ZTV8S6105C148S6105C13__8S6105C10[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6105C148S6105C13__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S6105C11__8S6105C148S6105C13__8S6105C10[5]),  5,7},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C148S6105C13__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C148S6105C13__8S6105C10[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C13__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S6105C11__8S6105C13__8S6105C10[5]),  5,7},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C13__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C13__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__8S6105C13__8S6105C10[4]),  4,6},
  {&(_ZTV8S6105C10[17]),  17,47},
  {&(_ZTV8S6105C10[24]),  24,47},
  {&(_ZTV8S6105C10[34]),  34,47},
  {&(_ZTV8S6105C10[29]),  29,47},
  {&(_ZTV8S6105C10[40]),  40,47},
  {&(_ZTV8S6105C10[45]),  45,47},
  {&(_tg__ZTV8S6105C11__8S6105C10[4]),  4,6},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C128S6105C11__8S6105C10[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C11__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S6105C12__8S6105C11__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C11__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C12__A1__8S6105C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S6105C10[];
extern  VTBL_ENTRY _ZTV8S6105C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C10[];
static VTBL_ENTRY alt_thunk_names208[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6105C13D0Ev,_ZThn112_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6105C13D1Ev,_ZThn112_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6105C13D0Ev,_ZThn40_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6105C13D1Ev,_ZThn40_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C13D0Ev,_ZThn28_N8S6105C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6105C13D0Ev,_ZThn84_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C13D1Ev,_ZThn28_N8S6105C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6105C13D1Ev,_ZThn84_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6105C14D0Ev,_ZThn40_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6105C14D1Ev,_ZThn40_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C14D0Ev,_ZThn28_N8S6105C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6105C14D0Ev,_ZThn84_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C14D1Ev,_ZThn28_N8S6105C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6105C14D1Ev,_ZThn84_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C10D0Ev,_ZTv0_n16_N8S6105C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6105C10D0Ev,_ZThn112_N8S6105C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C10D1Ev,_ZTv0_n16_N8S6105C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6105C10D1Ev,_ZThn112_N8S6105C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C10D0Ev,_ZTv0_n20_N8S6105C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6105C10D0Ev,_ZThn40_N8S6105C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C10D1Ev,_ZTv0_n20_N8S6105C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6105C10D1Ev,_ZThn40_N8S6105C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C10D0Ev,_ZThn116_N8S6105C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6105C10D0Ev,_ZThn84_N8S6105C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C10D0Ev,_ZThn28_N8S6105C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C10D1Ev,_ZThn116_N8S6105C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6105C10D1Ev,_ZThn84_N8S6105C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C10D1Ev,_ZThn28_N8S6105C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6105C10 = {  "S6105C10", // class name
  bases_S6105C10, 12,
  &(vtc_S6105C10[0]), // expected_vtbl_contents
  &(vtt_S6105C10[0]), // expected_vtt_contents
  ABISELECT(192,128), // object size
  NSPAIRA(_ZTI8S6105C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6105C10),47, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6105C10),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names208,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6105C17  : virtual S20760C13 , S6105C11 , virtual S4161C4_nt {
  ::S6105C10 s6105c17f0;
  ~S6105C17(); // tgen
  S6105C17(); // tgen
};
//SIG(-1 S6105C17) C1{ VBC2{ vd m Fi[6]} BC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} VBC6{ m Fp} FC7{ VBC6 VBC4 VBC3 BC8{ BC6 BC9{ VBC2 VBC3 FD} BC10{ vd m} VBC5 vd} VBC11{ vd m FL}}}


S6105C17 ::~S6105C17(){ note_dtor("S6105C17", this);} // tgen
S6105C17 ::S6105C17(){ note_ctor("S6105C17", this);} // tgen

static void Test_S6105C17()
{
  extern Class_Descriptor cd_S6105C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,55)];
    init_test(&cd_S6105C17, buf);
    S6105C17 *dp, &lv = *(dp=new (buf) S6105C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,216), "sizeof(S6105C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6105C17)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(256,172), "S6105C17");
    check_base_class_offset(lv, (S20760C13*)(S6105C11*), ABISELECT(256,172), "S6105C17");
    /*is_ambiguous_... S6105C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C11*), 0, "S6105C17");
    check_base_class_offset(lv, (S20760C9*)(S6105C12*)(S6105C11*), ABISELECT(288,200), "S6105C17");
    check_base_class_offset(lv, (S6105C12*)(S6105C11*), ABISELECT(16,12), "S6105C17");
    check_base_class_offset(lv, (S6105C11*), 0, "S6105C17");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(304,212), "S6105C17");
    check_field_offset(lv, s6105c17f0, ABISELECT(64,44), "S6105C17.s6105c17f0");
    test_class_info(&lv, &cd_S6105C17);
    dp->~S6105C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6105C17(Test_S6105C17, "S6105C17", ABISELECT(320,216));

#else // __cplusplus

extern void _ZN8S6105C17C1Ev();
extern void _ZN8S6105C17D1Ev();
Name_Map name_map_S6105C17[] = {
  NSPAIR(_ZN8S6105C17C1Ev),
  NSPAIR(_ZN8S6105C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C11;
extern VTBL_ENTRY _ZTI8S6105C11[];
extern  VTBL_ENTRY _ZTV8S6105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C11[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S6105C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(256,172), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(288,200), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6105C12,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6105C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6105C17[];
extern void _ZN8S6105C17D1Ev();
extern void _ZN8S6105C17D0Ev();
extern void ABISELECT(_ZThn16_N8S6105C17D1Ev,_ZThn12_N8S6105C17D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C17D0Ev,_ZThn12_N8S6105C17D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev)();
extern void ABISELECT(_ZThn256_N8S6105C17D1Ev,_ZThn172_N8S6105C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev)();
extern void ABISELECT(_ZThn256_N8S6105C17D0Ev,_ZThn172_N8S6105C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev)();
extern void ABISELECT(_ZThn288_N8S6105C17D1Ev,_ZThn200_N8S6105C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev)();
extern void ABISELECT(_ZThn288_N8S6105C17D0Ev,_ZThn200_N8S6105C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6105C17[] = {
  ABISELECT(304,212),
  ABISELECT(288,200),
  ABISELECT(256,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&_ZN8S6105C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C17D0Ev,
  ABISELECT(272,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C17D1Ev,_ZThn12_N8S6105C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C17D0Ev,_ZThn12_N8S6105C17D0Ev),
  ABISELECT(-256,-172),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev),
  ABISELECT(-288,-200),
  ABISELECT(-288,-200),
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev),
};
extern VTBL_ENTRY _ZTV8S6105C17[];
extern void _ZN8S6105C11D1Ev();
extern void _ZN8S6105C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C17[] = {
  ABISELECT(288,200),
  ABISELECT(256,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&_ZN8S6105C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C11D0Ev,
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C17[] = {
  ABISELECT(272,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZThn272_N8S6105C12D1Ev,_ZThn188_N8S6105C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
extern void ABISELECT(_ZThn272_N8S6105C12D0Ev,_ZThn188_N8S6105C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C128S6105C11__8S6105C17[] = {
  ABISELECT(-272,-188),
  ABISELECT(-272,-188),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn256_N8S6105C11D1Ev,_ZThn172_N8S6105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZThn256_N8S6105C11D0Ev,_ZThn172_N8S6105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C11__8S6105C17[] = {
  ABISELECT(-256,-172),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C12__8S6105C11__8S6105C17[] = {
  ABISELECT(272,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn288_N8S6105C11D1Ev,_ZThn200_N8S6105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZThn288_N8S6105C11D0Ev,_ZThn200_N8S6105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C11__8S6105C17[] = {
  ABISELECT(-288,-200),
  ABISELECT(-288,-200),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
static  VTT_ENTRY vtt_S6105C17[] = {
  {&(_ZTV8S6105C17[5]),  5,22},
  {&(_tg__ZTV8S6105C11__8S6105C17[4]),  4,6},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C128S6105C11__8S6105C17[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C11__8S6105C17[3]),  3,5},
  {&(_tg__ZTV8S6105C12__8S6105C11__8S6105C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C11__8S6105C17[3]),  3,5},
  {&(_ZTV8S6105C17[15]),  15,22},
  {&(_ZTV8S6105C17[10]),  10,22},
  {&(_ZTV8S6105C17[20]),  20,22},
};
extern VTBL_ENTRY _ZTI8S6105C17[];
extern  VTBL_ENTRY _ZTV8S6105C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C17[];
static VTBL_ENTRY alt_thunk_names209[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S6105C11D0Ev,_ZThn200_N8S6105C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6105C11D0Ev,_ZThn172_N8S6105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S6105C11D1Ev,_ZThn200_N8S6105C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6105C11D1Ev,_ZThn172_N8S6105C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S6105C12D0Ev,_ZThn188_N8S6105C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S6105C12D1Ev,_ZThn188_N8S6105C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S6105C17D0Ev,_ZThn200_N8S6105C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6105C17D0Ev,_ZThn172_N8S6105C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S6105C17D1Ev,_ZThn200_N8S6105C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6105C17D1Ev,_ZThn172_N8S6105C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6105C17 = {  "S6105C17", // class name
  bases_S6105C17, 6,
  &(vtc_S6105C17[0]), // expected_vtbl_contents
  &(vtt_S6105C17[0]), // expected_vtt_contents
  ABISELECT(320,216), // object size
  NSPAIRA(_ZTI8S6105C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6105C17),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6105C17),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names209,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6105C7  : S4228C37 , S20760C9 , virtual S4161C4_nt , S6105C10 , virtual S6105C17 {
  int s6105c7f0;
  virtual  ~S6105C7(); // _ZN7S6105C7D2Ev
  S6105C7(); // tgen
};
//SIG(-1 S6105C7) C1{ BC2{ m} BC3{ vd m FL} VBC4{ m Fp} BC5{ VBC4 VBC3 VBC6{ BC3 VBC7{ vd m Fi[6]} BC8{ VBC3 vd} FC7} BC9{ BC4 BC10{ VBC7 VBC6 FD} BC11{ vd m} VBC8 vd} VBC12{ vd m FL}} VBC13{ VBC7 BC6 VBC4 FC5} vd Fi}


 S6105C7 ::~S6105C7(){ note_dtor("S6105C7", this);}
S6105C7 ::S6105C7(){ note_ctor("S6105C7", this);} // tgen

static void Test_S6105C7()
{
  extern Class_Descriptor cd_S6105C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,80)];
    init_test(&cd_S6105C7, buf);
    S6105C7 *dp, &lv = *(dp=new (buf) S6105C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,316), "sizeof(S6105C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6105C7)");
    check_base_class_offset(lv, (S4228C37*), 0, "S6105C7");
    /*is_ambiguous_... S6105C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S6105C7");
    /*is_ambiguous_... S6105C7::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(72,40), "S6105C7");
    /*is_ambiguous_... S6105C10::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S6105C10*), ABISELECT(72,40), "S6105C7");
    check_base_class_offset(lv, (S4161C4_nt*)(S6105C17*), ABISELECT(72,40), "S6105C7");
    /*is_ambiguous_... S6105C10::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C10*), ABISELECT(80,44), "S6105C7");
    /*is_ambiguous_... S6105C7::S6105C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C12*)(S6105C11*), ABISELECT(80,44), "S6105C7");
    /*is_ambiguous_... S6105C7::S6105C12 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C12*), ABISELECT(80,44), "S6105C7");
    check_base_class_offset(lv, (S20760C9*)(S6105C12*)(S6105C11*)(S6105C17*), ABISELECT(80,44), "S6105C7");
    /*is_ambiguous_... S6105C7::S6105C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C11*), ABISELECT(96,56), "S6105C7");
    /*is_ambiguous_... S6105C7::S6105C11 */ AMB_check_base_class_offset(lv, (S20760C13*)(S6105C11*), ABISELECT(152,100), "S6105C7");
    check_base_class_offset(lv, (S20760C13*)(S6105C14*)(S6105C13*)(S6105C10*), ABISELECT(152,100), "S6105C7");
    check_base_class_offset(lv, (S20760C13*)(S6105C17*), ABISELECT(152,100), "S6105C7");
    check_base_class_offset(lv, (S20760C13*)(S6105C11*)(S6105C17*), ABISELECT(152,100), "S6105C7");
    /*is_ambiguous_... S6105C7::S6105C11 */ AMB_check_base_class_offset(lv, (S6105C12*)(S6105C11*), ABISELECT(112,68), "S6105C7");
    check_base_class_offset(lv, (S6105C11*)(S6105C10*), ABISELECT(96,56), "S6105C7");
    check_base_class_offset(lv, (S6105C11*)(S6105C14*)(S6105C13*)(S6105C10*), ABISELECT(96,56), "S6105C7");
    check_base_class_offset(lv, (S4161C4_nt*)(S6105C13*)(S6105C10*), ABISELECT(48,28), "S6105C7");
    check_base_class_offset(lv, (S6105C14*)(S6105C13*)(S6105C10*), ABISELECT(16,12), "S6105C7");
    check_base_class_offset(lv, (S20760C22_nt*)(S6105C13*)(S6105C10*), ABISELECT(56,32), "S6105C7");
    /*is_ambiguous_... S6105C13::S6105C12 */ AMB_check_base_class_offset(lv, (S6105C12*)(S6105C13*)(S6105C10*), ABISELECT(184,128), "S6105C7");
    check_base_class_offset(lv, (S6105C13*)(S6105C10*), ABISELECT(16,12), "S6105C7");
    check_base_class_offset(lv, (S20760C5_nt*)(S6105C10*), ABISELECT(192,132), "S6105C7");
    check_base_class_offset(lv, (S6105C10*), ABISELECT(16,12), "S6105C7");
    /*is_ambiguous_... S6105C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C11*)(S6105C17*), ABISELECT(208,144), "S6105C7");
    check_base_class_offset(lv, (S6105C12*)(S6105C11*)(S6105C17*), ABISELECT(224,156), "S6105C7");
    check_base_class_offset(lv, (S6105C11*)(S6105C17*), ABISELECT(208,144), "S6105C7");
    check_base_class_offset(lv, (S6105C17*), ABISELECT(208,144), "S6105C7");
    check_field_offset(lv, s6105c7f0, ABISELECT(64,36), "S6105C7.s6105c7f0");
    test_class_info(&lv, &cd_S6105C7);
    dp->~S6105C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6105C7(Test_S6105C7, "S6105C7", ABISELECT(464,316));

#else // __cplusplus

extern void _ZN7S6105C7C1Ev();
extern void _ZN7S6105C7D2Ev();
Name_Map name_map_S6105C7[] = {
  NSPAIR(_ZN7S6105C7C1Ev),
  NSPAIR(_ZN7S6105C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C11;
extern VTBL_ENTRY _ZTI8S6105C11[];
extern  VTBL_ENTRY _ZTV8S6105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C11[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S6105C14;
extern VTBL_ENTRY _ZTI8S6105C14[];
extern  VTBL_ENTRY _ZTV8S6105C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C13;
extern VTBL_ENTRY _ZTI8S6105C13[];
extern  VTBL_ENTRY _ZTV8S6105C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S6105C10;
extern VTBL_ENTRY _ZTI8S6105C10[];
extern  VTBL_ENTRY _ZTV8S6105C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C10[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C11;
extern VTBL_ENTRY _ZTI8S6105C11[];
extern  VTBL_ENTRY _ZTV8S6105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C11[];
extern Class_Descriptor cd_S6105C17;
extern VTBL_ENTRY _ZTI8S6105C17[];
extern  VTBL_ENTRY _ZTV8S6105C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C17[];
static Base_Class bases_S6105C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,100), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6105C12,    ABISELECT(112,68), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6105C11,    ABISELECT(96,56), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6105C14,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6105C12,    ABISELECT(184,128), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S6105C13,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(192,132), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S6105C10,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6105C12,    ABISELECT(224,156), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6105C11,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6105C17,    ABISELECT(208,144), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6105C7[];
extern void _ZN7S6105C7D1Ev();
extern void _ZN7S6105C7D0Ev();
extern void ABISELECT(_ZThn16_N7S6105C7D1Ev,_ZThn12_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S6105C7D0Ev,_ZThn12_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S6105C7D1Ev,_ZThn32_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S6105C7D0Ev,_ZThn32_N7S6105C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S6105C7D1Ev,_ZThn44_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S6105C7D0Ev,_ZThn44_N7S6105C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6105C7D1Ev,_ZTv0_n20_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S6105C7D1Ev,_ZThn56_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6105C7D0Ev,_ZTv0_n20_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S6105C7D0Ev,_ZThn56_N7S6105C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S6105C7D1Ev,_ZTvn12_n20_N7S6105C7D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S6105C7D0Ev,_ZTvn12_n20_N7S6105C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn152_N7S6105C7D1Ev,_ZThn100_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn152_N7S6105C7D0Ev,_ZThn100_N7S6105C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6105C7D1Ev,_ZTv0_n16_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn184_N7S6105C7D1Ev,_ZThn128_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6105C7D0Ev,_ZTv0_n16_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn184_N7S6105C7D0Ev,_ZThn128_N7S6105C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn192_N7S6105C7D1Ev,_ZThn132_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn192_N7S6105C7D0Ev,_ZThn132_N7S6105C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6105C7D1Ev,_ZTv0_n24_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S6105C7D1Ev,_ZThn144_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6105C7D0Ev,_ZTv0_n24_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S6105C7D0Ev,_ZThn144_N7S6105C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S6105C7D1Ev,_ZTvn12_n24_N7S6105C7D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S6105C7D0Ev,_ZTvn12_n24_N7S6105C7D0Ev)();
static  VTBL_ENTRY vtc_S6105C7[] = {
  ABISELECT(208,144),
  ABISELECT(192,132),
  ABISELECT(184,128),
  ABISELECT(152,100),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&_ZN7S6105C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6105C7D0Ev,
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6105C7D1Ev,_ZThn12_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6105C7D0Ev,_ZThn12_N7S6105C7D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S6105C7D1Ev,_ZThn32_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S6105C7D0Ev,_ZThn32_N7S6105C7D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6105C7D1Ev,_ZTv0_n20_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6105C7D0Ev,_ZTv0_n20_N7S6105C7D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6105C7D1Ev,_ZTvn12_n20_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6105C7D0Ev,_ZTvn12_n20_N7S6105C7D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev),
  ABISELECT(-184,-128),
  ABISELECT(-104,-84),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6105C7D1Ev,_ZTv0_n16_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6105C7D0Ev,_ZTv0_n16_N7S6105C7D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev),
  ABISELECT(-208,-144),
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6105C7D1Ev,_ZTv0_n24_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6105C7D0Ev,_ZTv0_n24_N7S6105C7D0Ev),
  ABISELECT(-144,-112),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6105C7D1Ev,_ZTvn12_n24_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6105C7D0Ev,_ZTvn12_n24_N7S6105C7D0Ev),
};
extern VTBL_ENTRY _ZTV7S6105C7[];
extern void _ZN8S6105C10D1Ev();
extern void _ZN8S6105C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C10__7S6105C7[] = {
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&_ZN8S6105C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C10D0Ev,
};
extern void _ZN8S6105C13D1Ev();
extern void _ZN8S6105C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&_ZN8S6105C13D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C13D0Ev,
};
extern void _ZN8S6105C14D1Ev();
extern void _ZN8S6105C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C148S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&_ZN8S6105C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn136_N8S6105C14D1Ev,_ZThn88_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn136_N8S6105C14D0Ev,_ZThn88_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C148S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S6105C14D1Ev,_ZThn44_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S6105C14D0Ev,_ZThn44_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C148S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C148S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S6105C14D1Ev,_ZThn32_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S6105C14D0Ev,_ZThn32_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C148S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn136_N8S6105C13D1Ev,_ZThn88_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn136_N8S6105C13D0Ev,_ZThn88_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S6105C13D1Ev,_ZThn44_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn80_N8S6105C13D0Ev,_ZThn44_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6105C13D1Ev,_ZTvn12_n20_N8S6105C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C13D0Ev,_ZTvn12_n20_N8S6105C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C13D1Ev,_ZTvn12_n20_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C13D0Ev,_ZTvn12_n20_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S6105C13D1Ev,_ZThn32_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S6105C13D0Ev,_ZThn32_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn168_N8S6105C13D1Ev,_ZThn116_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn168_N8S6105C13D0Ev,_ZThn116_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__8S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S6105C10D1Ev,_ZThn32_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S6105C10D0Ev,_ZThn32_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C10__7S6105C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6105C10D1Ev,_ZTv0_n20_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S6105C10D1Ev,_ZThn44_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C10D0Ev,_ZTv0_n20_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S6105C10D0Ev,_ZThn44_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C10__7S6105C7[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C10D1Ev,_ZTv0_n20_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C10D0Ev,_ZTv0_n20_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S6105C10D1Ev,_ZThn88_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S6105C10D0Ev,_ZThn88_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C10__7S6105C7[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6105C10D1Ev,_ZTvn12_n20_N8S6105C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C10D0Ev,_ZTvn12_n20_N8S6105C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C10__7S6105C7[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C10D1Ev,_ZTvn12_n20_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C10D0Ev,_ZTvn12_n20_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6105C10D1Ev,_ZTv0_n16_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S6105C10D1Ev,_ZThn116_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6105C10D0Ev,_ZTv0_n16_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S6105C10D0Ev,_ZThn116_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__8S6105C10__7S6105C7[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C10D1Ev,_ZTv0_n16_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C10D0Ev,_ZTv0_n16_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn176_N8S6105C10D1Ev,_ZThn120_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn176_N8S6105C10D0Ev,_ZThn120_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S6105C10__7S6105C7[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev),
};
extern void _ZN8S6105C11D1Ev();
extern void _ZN8S6105C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C11__7S6105C7[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&_ZN8S6105C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C11D0Ev,
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__7S6105C7[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C128S6105C11__7S6105C7[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C11__7S6105C7[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C12__8S6105C11__7S6105C7[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C11__7S6105C7[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__7S6105C7[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C12__A1__7S6105C7[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void _ZN8S6105C17D1Ev();
extern void _ZN8S6105C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C17__7S6105C7[] = {
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&_ZN8S6105C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C17D0Ev,
};
extern void _ZN8S6105C11D1Ev();
extern void _ZN8S6105C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C118S6105C17__A1__7S6105C7[] = {
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&_ZN8S6105C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C11D0Ev,
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C118S6105C17__A2__7S6105C7[] = {
  ABISELECT(-144,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C128S6105C118S6105C17__A2__7S6105C7[] = {
  ABISELECT(144,112),
  ABISELECT(144,112),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C118S6105C17__A1__7S6105C7[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C12__8S6105C118S6105C17__A1__7S6105C7[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C118S6105C17__A1__7S6105C7[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C17__7S6105C7[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C17D1Ev,_ZThn12_N8S6105C17D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C17D0Ev,_ZThn12_N8S6105C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C17__7S6105C7[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C17D1Ev,_ZThn12_N8S6105C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C17D0Ev,_ZThn12_N8S6105C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C17__7S6105C7[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev),
};
static  VTT_ENTRY vtt_S6105C7[] = {
  {&(_ZTV7S6105C7[9]),  9,71},
  {&(_tg__ZTV8S6105C10__7S6105C7[8]),  8,10},
  {&(_tg__ZTV8S6105C138S6105C10__7S6105C7[6]),  6,8},
  {&(_tg__ZTV8S6105C148S6105C138S6105C10__7S6105C7[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6105C148S6105C138S6105C10__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C11__8S6105C148S6105C138S6105C10__7S6105C7[5]),  5,7},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C148S6105C138S6105C10__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C148S6105C138S6105C10__7S6105C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C138S6105C10__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C11__8S6105C138S6105C10__7S6105C7[5]),  5,7},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C138S6105C10__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C138S6105C10__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__8S6105C138S6105C10__7S6105C7[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S6105C10__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C11__8S6105C10__7S6105C7[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6105C10__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C10__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__8S6105C10__7S6105C7[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__8S6105C10__7S6105C7[3]),  3,5},
  {&(_ZTV7S6105C7[19]),  19,71},
  {&(_ZTV7S6105C7[28]),  28,71},
  {&(_ZTV7S6105C7[35]),  35,71},
  {&(_ZTV7S6105C7[45]),  45,71},
  {&(_ZTV7S6105C7[40]),  40,71},
  {&(_ZTV7S6105C7[51]),  51,71},
  {&(_ZTV7S6105C7[56]),  56,71},
  {&(_ZTV7S6105C7[64]),  64,71},
  {&(_ZTV7S6105C7[69]),  69,71},
  {&(_tg__ZTV8S6105C11__7S6105C7[4]),  4,6},
  {&(_tg__ZTV8S6105C128S6105C11__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C128S6105C11__7S6105C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C11__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C12__8S6105C11__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C11__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C12__A1__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C17__7S6105C7[5]),  5,7},
  {&(_tg__ZTV8S6105C118S6105C17__A1__7S6105C7[4]),  4,6},
  {&(_tg__ZTV8S6105C128S6105C118S6105C17__A2__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C128S6105C118S6105C17__A2__7S6105C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C118S6105C17__A1__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C12__8S6105C118S6105C17__A1__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C118S6105C17__A1__7S6105C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C17__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C17__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C17__7S6105C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S6105C7[];
extern  VTBL_ENTRY _ZTV7S6105C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6105C7[];
static VTBL_ENTRY alt_thunk_names210[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C10D0Ev,_ZTv0_n16_N8S6105C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C10D0Ev,_ZThn116_N8S6105C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C10D1Ev,_ZTv0_n16_N8S6105C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C10D1Ev,_ZThn116_N8S6105C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C10D0Ev,_ZTv0_n20_N8S6105C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C10D0Ev,_ZThn44_N8S6105C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C10D1Ev,_ZTv0_n20_N8S6105C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C10D1Ev,_ZThn44_N8S6105C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6105C10D0Ev,_ZThn120_N8S6105C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C10D0Ev,_ZThn88_N8S6105C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C10D0Ev,_ZThn32_N8S6105C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6105C10D1Ev,_ZThn120_N8S6105C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C10D1Ev,_ZThn88_N8S6105C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C10D1Ev,_ZThn32_N8S6105C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C13D0Ev,_ZThn116_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C13D1Ev,_ZThn116_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C13D0Ev,_ZThn44_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C13D1Ev,_ZThn44_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C13D0Ev,_ZThn32_N8S6105C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C13D0Ev,_ZThn88_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C13D1Ev,_ZThn32_N8S6105C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C13D1Ev,_ZThn88_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C14D0Ev,_ZThn44_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C14D1Ev,_ZThn44_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C14D0Ev,_ZThn32_N8S6105C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C14D0Ev,_ZThn88_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C14D1Ev,_ZThn32_N8S6105C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C14D1Ev,_ZThn88_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6105C7D0Ev,_ZTv0_n24_N7S6105C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6105C7D0Ev,_ZThn144_N7S6105C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6105C7D1Ev,_ZTv0_n24_N7S6105C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6105C7D1Ev,_ZThn144_N7S6105C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6105C7D0Ev,_ZTv0_n16_N7S6105C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S6105C7D0Ev,_ZThn128_N7S6105C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6105C7D1Ev,_ZTv0_n16_N7S6105C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S6105C7D1Ev,_ZThn128_N7S6105C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6105C7D0Ev,_ZTv0_n20_N7S6105C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6105C7D0Ev,_ZThn56_N7S6105C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6105C7D1Ev,_ZTv0_n20_N7S6105C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6105C7D1Ev,_ZThn56_N7S6105C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6105C7D0Ev,_ZThn132_N7S6105C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S6105C7D0Ev,_ZThn100_N7S6105C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6105C7D0Ev,_ZThn44_N7S6105C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6105C7D1Ev,_ZThn132_N7S6105C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S6105C7D1Ev,_ZThn100_N7S6105C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6105C7D1Ev,_ZThn44_N7S6105C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6105C7 = {  "S6105C7", // class name
  bases_S6105C7, 19,
  &(vtc_S6105C7[0]), // expected_vtbl_contents
  &(vtt_S6105C7[0]), // expected_vtt_contents
  ABISELECT(464,316), // object size
  NSPAIRA(_ZTI7S6105C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6105C7),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6105C7),46, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names210,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6105C1  : S4228C37 , S6105C3 , S6105C7 {
  ::S20469C23_nt s6105c1f0;
  virtual  ~S6105C1(); // _ZN7S6105C1D2Ev
  S6105C1(); // tgen
};
//SIG(1 S6105C1) C1{ BC2{ m} BC3{ BC4{ vd m Fi[6]} VBC5{ m} VBC6{ m} Fs} BC7{ BC2 BC8{ vd m FL} VBC9{ m Fp} BC10{ VBC9 VBC8 VBC11{ BC8 VBC4 BC12{ VBC8 vd} FC4} BC13{ BC9 BC14{ VBC4 VBC11 FD} BC15{ vd m} VBC12 vd} VBC16{ vd m FL}} VBC17{ VBC4 BC11 VBC9 FC10} vd Fi} vd FU18{ m}}


 S6105C1 ::~S6105C1(){ note_dtor("S6105C1", this);}
S6105C1 ::S6105C1(){ note_ctor("S6105C1", this);} // tgen

static void Test_S6105C1()
{
  extern Class_Descriptor cd_S6105C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(33,89)];
    init_test(&cd_S6105C1, buf);
    S6105C1 *dp, &lv = *(dp=new (buf) S6105C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,352), "sizeof(S6105C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6105C1)");
    /*is_ambiguous_... S6105C1::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), 0, "S6105C1");
    check_base_class_offset(lv, (S20760C13*)(S6105C3*), 0, "S6105C1");
    check_base_class_offset(lv, (S4228C27*)(S6105C3*), 0, "S6105C1");
    check_base_class_offset(lv, (S4228C23*)(S6105C3*), 0, "S6105C1");
    check_base_class_offset(lv, (S6105C3*), 0, "S6105C1");
    check_base_class_offset(lv, (S4228C37*)(S6105C7*), ABISELECT(48,32), "S6105C1");
    /*is_ambiguous_... S6105C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C7*), ABISELECT(48,32), "S6105C1");
    /*is_ambiguous_... S6105C7::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S6105C7*), ABISELECT(120,76), "S6105C1");
    /*is_ambiguous_... S6105C10::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S6105C10*)(S6105C7*), ABISELECT(120,76), "S6105C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S6105C17*), ABISELECT(120,76), "S6105C1");
    /*is_ambiguous_... S6105C10::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C10*)(S6105C7*), ABISELECT(128,80), "S6105C1");
    /*is_ambiguous_... S6105C1::S6105C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C12*)(S6105C11*), ABISELECT(128,80), "S6105C1");
    /*is_ambiguous_... S6105C1::S6105C12 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C12*), ABISELECT(128,80), "S6105C1");
    check_base_class_offset(lv, (S20760C9*)(S6105C12*)(S6105C11*)(S6105C17*), ABISELECT(128,80), "S6105C1");
    /*is_ambiguous_... S6105C1::S6105C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C11*), ABISELECT(144,92), "S6105C1");
    /*is_ambiguous_... S6105C1::S6105C11 */ AMB_check_base_class_offset(lv, (S20760C13*)(S6105C11*), ABISELECT(200,136), "S6105C1");
    check_base_class_offset(lv, (S20760C13*)(S6105C14*)(S6105C13*)(S6105C10*)(S6105C7*), ABISELECT(200,136), "S6105C1");
    check_base_class_offset(lv, (S20760C13*)(S6105C17*), ABISELECT(200,136), "S6105C1");
    check_base_class_offset(lv, (S20760C13*)(S6105C11*)(S6105C17*), ABISELECT(200,136), "S6105C1");
    /*is_ambiguous_... S6105C1::S6105C11 */ AMB_check_base_class_offset(lv, (S6105C12*)(S6105C11*), ABISELECT(160,104), "S6105C1");
    check_base_class_offset(lv, (S6105C11*)(S6105C10*)(S6105C7*), ABISELECT(144,92), "S6105C1");
    check_base_class_offset(lv, (S6105C11*)(S6105C14*)(S6105C13*)(S6105C10*)(S6105C7*), ABISELECT(144,92), "S6105C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S6105C13*)(S6105C10*)(S6105C7*), ABISELECT(96,60), "S6105C1");
    check_base_class_offset(lv, (S6105C14*)(S6105C13*)(S6105C10*)(S6105C7*), ABISELECT(64,44), "S6105C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S6105C13*)(S6105C10*)(S6105C7*), ABISELECT(104,64), "S6105C1");
    /*is_ambiguous_... S6105C13::S6105C12 */ AMB_check_base_class_offset(lv, (S6105C12*)(S6105C13*)(S6105C10*)(S6105C7*), ABISELECT(232,164), "S6105C1");
    check_base_class_offset(lv, (S6105C13*)(S6105C10*)(S6105C7*), ABISELECT(64,44), "S6105C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S6105C10*)(S6105C7*), ABISELECT(240,168), "S6105C1");
    check_base_class_offset(lv, (S6105C10*)(S6105C7*), ABISELECT(64,44), "S6105C1");
    /*is_ambiguous_... S6105C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C11*)(S6105C17*), ABISELECT(256,180), "S6105C1");
    check_base_class_offset(lv, (S6105C12*)(S6105C11*)(S6105C17*), ABISELECT(272,192), "S6105C1");
    check_base_class_offset(lv, (S6105C11*)(S6105C17*), ABISELECT(256,180), "S6105C1");
    check_base_class_offset(lv, (S6105C17*)(S6105C7*), ABISELECT(256,180), "S6105C1");
    check_base_class_offset(lv, (S6105C7*), ABISELECT(48,32), "S6105C1");
    check_field_offset(lv, s6105c1f0, ABISELECT(116,72), "S6105C1.s6105c1f0");
    test_class_info(&lv, &cd_S6105C1);
    dp->~S6105C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6105C1(Test_S6105C1, "S6105C1", ABISELECT(512,352));

#else // __cplusplus

extern void _ZN7S6105C1C1Ev();
extern void _ZN7S6105C1D2Ev();
Name_Map name_map_S6105C1[] = {
  NSPAIR(_ZN7S6105C1C1Ev),
  NSPAIR(_ZN7S6105C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S6105C3;
extern VTBL_ENTRY _ZTI7S6105C3[];
extern  VTBL_ENTRY _ZTV7S6105C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6105C3[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C11;
extern VTBL_ENTRY _ZTI8S6105C11[];
extern  VTBL_ENTRY _ZTV8S6105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C11[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S6105C14;
extern VTBL_ENTRY _ZTI8S6105C14[];
extern  VTBL_ENTRY _ZTV8S6105C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C13;
extern VTBL_ENTRY _ZTI8S6105C13[];
extern  VTBL_ENTRY _ZTV8S6105C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S6105C10;
extern VTBL_ENTRY _ZTI8S6105C10[];
extern  VTBL_ENTRY _ZTV8S6105C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C10[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C11;
extern VTBL_ENTRY _ZTI8S6105C11[];
extern  VTBL_ENTRY _ZTV8S6105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C11[];
extern Class_Descriptor cd_S6105C17;
extern VTBL_ENTRY _ZTI8S6105C17[];
extern  VTBL_ENTRY _ZTV8S6105C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C17[];
extern Class_Descriptor cd_S6105C7;
extern VTBL_ENTRY _ZTI7S6105C7[];
extern  VTBL_ENTRY _ZTV7S6105C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6105C7[];
static Base_Class bases_S6105C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S6105C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(120,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(128,80), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(144,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(200,136), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S6105C12,    ABISELECT(160,104), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6105C11,    ABISELECT(144,92), //bcp->offset
    43, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6105C14,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(104,64), //bcp->offset
    34, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6105C12,    ABISELECT(232,164), //bcp->offset
    60, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S6105C13,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(240,168), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S6105C10,    ABISELECT(64,44), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(256,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6105C12,    ABISELECT(272,192), //bcp->offset
    79, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6105C11,    ABISELECT(256,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S6105C17,    ABISELECT(256,180), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S6105C7,    ABISELECT(48,32), //bcp->offset
    13, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6105C1[];
extern void _ZN7S6105C1D1Ev();
extern void _ZN7S6105C1D0Ev();
extern void ABISELECT(_ZThn48_N7S6105C1D1Ev,_ZThn32_N7S6105C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S6105C1D0Ev,_ZThn32_N7S6105C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S6105C1D1Ev,_ZThn44_N7S6105C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S6105C1D0Ev,_ZThn44_N7S6105C1D0Ev)();
extern void ABISELECT(_ZThn104_N7S6105C1D1Ev,_ZThn64_N7S6105C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S6105C1D0Ev,_ZThn64_N7S6105C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6105C1D1Ev,_ZTv0_n12_N7S6105C1D1Ev)();
extern void ABISELECT(_ZThn128_N7S6105C1D1Ev,_ZThn80_N7S6105C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C1D0Ev,_ZTv0_n12_N7S6105C1D0Ev)();
extern void ABISELECT(_ZThn128_N7S6105C1D0Ev,_ZThn80_N7S6105C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6105C1D1Ev,_ZTv0_n20_N7S6105C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S6105C1D1Ev,_ZThn92_N7S6105C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6105C1D0Ev,_ZTv0_n20_N7S6105C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S6105C1D0Ev,_ZThn92_N7S6105C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S6105C1D1Ev,_ZTvn12_n20_N7S6105C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S6105C1D0Ev,_ZTvn12_n20_N7S6105C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6105C1D1Ev,_ZTv0_n12_N7S6105C1D1Ev)();
extern void ABISELECT(_ZThn200_N7S6105C1D1Ev,_ZThn136_N7S6105C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C1D0Ev,_ZTv0_n12_N7S6105C1D0Ev)();
extern void ABISELECT(_ZThn200_N7S6105C1D0Ev,_ZThn136_N7S6105C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6105C1D1Ev,_ZTv0_n16_N7S6105C1D1Ev)();
extern void ABISELECT(_ZThn232_N7S6105C1D1Ev,_ZThn164_N7S6105C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6105C1D0Ev,_ZTv0_n16_N7S6105C1D0Ev)();
extern void ABISELECT(_ZThn232_N7S6105C1D0Ev,_ZThn164_N7S6105C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C1D1Ev,_ZTv0_n12_N7S6105C1D1Ev)();
extern void ABISELECT(_ZThn240_N7S6105C1D1Ev,_ZThn168_N7S6105C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C1D0Ev,_ZTv0_n12_N7S6105C1D0Ev)();
extern void ABISELECT(_ZThn240_N7S6105C1D0Ev,_ZThn168_N7S6105C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6105C1D1Ev,_ZTv0_n24_N7S6105C1D1Ev)();
extern void ABISELECT(_ZThn256_N7S6105C1D1Ev,_ZThn180_N7S6105C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6105C1D0Ev,_ZTv0_n24_N7S6105C1D0Ev)();
extern void ABISELECT(_ZThn256_N7S6105C1D0Ev,_ZThn180_N7S6105C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S6105C1D1Ev,_ZTvn12_n24_N7S6105C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S6105C1D0Ev,_ZTvn12_n24_N7S6105C1D0Ev)();
static  VTBL_ENTRY vtc_S6105C1[] = {
  ABISELECT(256,180),
  ABISELECT(240,168),
  ABISELECT(232,164),
  ABISELECT(200,136),
  ABISELECT(144,92),
  ABISELECT(128,80),
  ABISELECT(120,76),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&_ZN7S6105C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6105C1D0Ev,
  ABISELECT(208,148),
  ABISELECT(192,136),
  ABISELECT(184,132),
  ABISELECT(152,104),
  ABISELECT(96,60),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S6105C1D1Ev,_ZThn32_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S6105C1D0Ev,_ZThn32_N7S6105C1D0Ev),
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S6105C1D1Ev,_ZThn44_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S6105C1D0Ev,_ZThn44_N7S6105C1D0Ev),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S6105C1D1Ev,_ZThn64_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S6105C1D0Ev,_ZThn64_N7S6105C1D0Ev),
  ABISELECT(-128,-80),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C1D1Ev,_ZTv0_n12_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C1D0Ev,_ZTv0_n12_N7S6105C1D0Ev),
  ABISELECT(-144,-92),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6105C1D1Ev,_ZTv0_n20_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6105C1D0Ev,_ZTv0_n20_N7S6105C1D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6105C1D1Ev,_ZTvn12_n20_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6105C1D0Ev,_ZTvn12_n20_N7S6105C1D0Ev),
  ABISELECT(-200,-136),
  ABISELECT(-200,-136),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C1D1Ev,_ZTv0_n12_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C1D0Ev,_ZTv0_n12_N7S6105C1D0Ev),
  ABISELECT(-232,-164),
  ABISELECT(-104,-84),
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6105C1D1Ev,_ZTv0_n16_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6105C1D0Ev,_ZTv0_n16_N7S6105C1D0Ev),
  ABISELECT(-240,-168),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C1D1Ev,_ZTv0_n12_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C1D0Ev,_ZTv0_n12_N7S6105C1D0Ev),
  ABISELECT(-256,-180),
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  ABISELECT(-256,-180),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6105C1D1Ev,_ZTv0_n24_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6105C1D0Ev,_ZTv0_n24_N7S6105C1D0Ev),
  ABISELECT(-144,-112),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6105C1D1Ev,_ZTvn12_n24_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6105C1D0Ev,_ZTvn12_n24_N7S6105C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S6105C1[];
extern void _ZN7S6105C3D1Ev();
extern void _ZN7S6105C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6105C3__7S6105C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6105C3[0]),
  (VTBL_ENTRY)&_ZN7S6105C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6105C3D0Ev,
};
extern void _ZN7S6105C7D1Ev();
extern void _ZN7S6105C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6105C7__7S6105C1[] = {
  ABISELECT(208,148),
  ABISELECT(192,136),
  ABISELECT(184,132),
  ABISELECT(152,104),
  ABISELECT(96,60),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&_ZN7S6105C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6105C7D0Ev,
};
extern void _ZN8S6105C10D1Ev();
extern void _ZN8S6105C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&_ZN8S6105C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C10D0Ev,
};
extern void _ZN8S6105C13D1Ev();
extern void _ZN8S6105C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&_ZN8S6105C13D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C13D0Ev,
};
extern void _ZN8S6105C14D1Ev();
extern void _ZN8S6105C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C148S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&_ZN8S6105C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn136_N8S6105C14D1Ev,_ZThn92_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn136_N8S6105C14D0Ev,_ZThn92_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C148S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S6105C14D1Ev,_ZThn48_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S6105C14D0Ev,_ZThn48_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C148S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C148S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S6105C14D1Ev,_ZThn36_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S6105C14D0Ev,_ZThn36_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C148S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn136_N8S6105C13D1Ev,_ZThn92_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn136_N8S6105C13D0Ev,_ZThn92_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S6105C13D1Ev,_ZThn48_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn80_N8S6105C13D0Ev,_ZThn48_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6105C13D1Ev,_ZTvn12_n20_N8S6105C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C13D0Ev,_ZTvn12_n20_N8S6105C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C13D1Ev,_ZTvn12_n20_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C13D0Ev,_ZTvn12_n20_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S6105C13D1Ev,_ZThn36_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S6105C13D0Ev,_ZThn36_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn168_N8S6105C13D1Ev,_ZThn120_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn168_N8S6105C13D0Ev,_ZThn120_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__8S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-168,-120),
  ABISELECT(-104,-84),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S6105C10D1Ev,_ZThn36_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S6105C10D0Ev,_ZThn36_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6105C10D1Ev,_ZTv0_n20_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S6105C10D1Ev,_ZThn48_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C10D0Ev,_ZTv0_n20_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S6105C10D0Ev,_ZThn48_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C10D1Ev,_ZTv0_n20_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C10D0Ev,_ZTv0_n20_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S6105C10D1Ev,_ZThn92_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S6105C10D0Ev,_ZThn92_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6105C10D1Ev,_ZTvn12_n20_N8S6105C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C10D0Ev,_ZTvn12_n20_N8S6105C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C10D1Ev,_ZTvn12_n20_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C10D0Ev,_ZTvn12_n20_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6105C10D1Ev,_ZTv0_n16_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S6105C10D1Ev,_ZThn120_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6105C10D0Ev,_ZTv0_n16_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S6105C10D0Ev,_ZThn120_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__8S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-168,-120),
  ABISELECT(-104,-84),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C10D1Ev,_ZTv0_n16_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C10D0Ev,_ZTv0_n16_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn176_N8S6105C10D1Ev,_ZThn124_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn176_N8S6105C10D0Ev,_ZThn124_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-176,-124),
  ABISELECT(-176,-124),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZThn16_N7S6105C7D1Ev,_ZThn12_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S6105C7D0Ev,_ZThn12_N7S6105C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C10__7S6105C7__7S6105C1[] = {
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6105C7D1Ev,_ZThn12_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6105C7D0Ev,_ZThn12_N7S6105C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S6105C7D1Ev,_ZThn48_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S6105C7D0Ev,_ZThn48_N7S6105C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S6105C7__7S6105C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S6105C7D1Ev,_ZTv0_n20_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S6105C7D1Ev,_ZThn60_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6105C7D0Ev,_ZTv0_n20_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S6105C7D0Ev,_ZThn60_N7S6105C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__7S6105C7__7S6105C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6105C7D1Ev,_ZTv0_n20_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6105C7D0Ev,_ZTv0_n20_N7S6105C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn152_N7S6105C7D1Ev,_ZThn104_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn152_N7S6105C7D0Ev,_ZThn104_N7S6105C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S6105C7__7S6105C1[] = {
  ABISELECT(-152,-104),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N7S6105C7D1Ev,_ZTvn12_n20_N7S6105C7D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S6105C7D0Ev,_ZTvn12_n20_N7S6105C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__7S6105C7__7S6105C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6105C7D1Ev,_ZTvn12_n20_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6105C7D0Ev,_ZTvn12_n20_N7S6105C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S6105C7D1Ev,_ZTv0_n16_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn184_N7S6105C7D1Ev,_ZThn132_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6105C7D0Ev,_ZTv0_n16_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn184_N7S6105C7D0Ev,_ZThn132_N7S6105C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__7S6105C7__7S6105C1[] = {
  ABISELECT(-184,-132),
  ABISELECT(-104,-84),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6105C7D1Ev,_ZTv0_n16_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6105C7D0Ev,_ZTv0_n16_N7S6105C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn192_N7S6105C7D1Ev,_ZThn136_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn192_N7S6105C7D0Ev,_ZThn136_N7S6105C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__7S6105C7__7S6105C1[] = {
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S6105C7D1Ev,_ZTv0_n24_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S6105C7D1Ev,_ZThn148_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6105C7D0Ev,_ZTv0_n24_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S6105C7D0Ev,_ZThn148_N7S6105C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C17__7S6105C7__7S6105C1[] = {
  ABISELECT(-208,-148),
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6105C7D1Ev,_ZTv0_n24_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6105C7D0Ev,_ZTv0_n24_N7S6105C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N7S6105C7D1Ev,_ZTvn12_n24_N7S6105C7D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S6105C7D0Ev,_ZTvn12_n24_N7S6105C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C118S6105C17__A2__7S6105C7__7S6105C1[] = {
  ABISELECT(-144,-112),
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6105C7D1Ev,_ZTvn12_n24_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6105C7D0Ev,_ZTvn12_n24_N7S6105C7D0Ev),
};
extern void _ZN8S6105C11D1Ev();
extern void _ZN8S6105C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C11__7S6105C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&_ZN8S6105C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C11D0Ev,
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__7S6105C1[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C128S6105C11__7S6105C1[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C11__7S6105C1[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C12__8S6105C11__7S6105C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C11__7S6105C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__7S6105C1[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C12__A1__7S6105C1[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void _ZN8S6105C17D1Ev();
extern void _ZN8S6105C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C17__7S6105C1[] = {
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&_ZN8S6105C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C17D0Ev,
};
extern void _ZN8S6105C11D1Ev();
extern void _ZN8S6105C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C118S6105C17__A1__7S6105C1[] = {
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&_ZN8S6105C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C11D0Ev,
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C118S6105C17__A2__7S6105C1[] = {
  ABISELECT(-144,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C128S6105C118S6105C17__A2__7S6105C1[] = {
  ABISELECT(144,112),
  ABISELECT(144,112),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C118S6105C17__A1__7S6105C1[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C12__8S6105C118S6105C17__A1__7S6105C1[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C118S6105C17__A1__7S6105C1[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C17__7S6105C1[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C17D1Ev,_ZThn12_N8S6105C17D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C17D0Ev,_ZThn12_N8S6105C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C17__7S6105C1[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C17D1Ev,_ZThn12_N8S6105C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C17D0Ev,_ZThn12_N8S6105C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C17__7S6105C1[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev),
};
static  VTT_ENTRY vtt_S6105C1[] = {
  {&(_ZTV7S6105C1[11]),  11,84},
  {&(_tg__ZTV7S6105C3__7S6105C1[4]),  4,6},
  {&(_tg__ZTV7S6105C7__7S6105C1[9]),  9,11},
  {&(_tg__ZTV8S6105C107S6105C7__7S6105C1[8]),  8,10},
  {&(_tg__ZTV8S6105C138S6105C107S6105C7__7S6105C1[6]),  6,8},
  {&(_tg__ZTV8S6105C148S6105C138S6105C107S6105C7__7S6105C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6105C148S6105C138S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C11__8S6105C148S6105C138S6105C107S6105C7__7S6105C1[5]),  5,7},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C148S6105C138S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C148S6105C138S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C138S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C11__8S6105C138S6105C107S6105C7__7S6105C1[5]),  5,7},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C138S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C138S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__8S6105C138S6105C107S6105C7__7S6105C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C11__8S6105C107S6105C7__7S6105C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__8S6105C107S6105C7__7S6105C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__8S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C10__7S6105C7__7S6105C1[8]),  8,10},
  {&(_tg__ZTV8S20760C9__A1__7S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C11__7S6105C7__7S6105C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__7S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C128S6105C11__7S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__7S6105C7__7S6105C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__7S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C17__7S6105C7__7S6105C1[6]),  6,8},
  {&(_tg__ZTV8S6105C128S6105C118S6105C17__A2__7S6105C7__7S6105C1[3]),  3,5},
  {&(_ZTV7S6105C1[22]),  22,84},
  {&(_ZTV7S6105C1[32]),  32,84},
  {&(_ZTV7S6105C1[41]),  41,84},
  {&(_ZTV7S6105C1[48]),  48,84},
  {&(_ZTV7S6105C1[58]),  58,84},
  {&(_ZTV7S6105C1[53]),  53,84},
  {&(_ZTV7S6105C1[64]),  64,84},
  {&(_ZTV7S6105C1[69]),  69,84},
  {&(_ZTV7S6105C1[77]),  77,84},
  {&(_ZTV7S6105C1[82]),  82,84},
  {&(_tg__ZTV8S6105C11__7S6105C1[4]),  4,6},
  {&(_tg__ZTV8S6105C128S6105C11__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C128S6105C11__7S6105C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C11__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C12__8S6105C11__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C11__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C12__A1__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C17__7S6105C1[5]),  5,7},
  {&(_tg__ZTV8S6105C118S6105C17__A1__7S6105C1[4]),  4,6},
  {&(_tg__ZTV8S6105C128S6105C118S6105C17__A2__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C128S6105C118S6105C17__A2__7S6105C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C118S6105C17__A1__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C12__8S6105C118S6105C17__A1__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C118S6105C17__A1__7S6105C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C17__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C17__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C17__7S6105C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S6105C1[];
extern  VTBL_ENTRY _ZTV7S6105C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6105C1[];
static VTBL_ENTRY alt_thunk_names211[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6105C7D0Ev,_ZTv0_n24_N7S6105C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6105C7D0Ev,_ZThn148_N7S6105C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6105C7D1Ev,_ZTv0_n24_N7S6105C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6105C7D1Ev,_ZThn148_N7S6105C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6105C7D0Ev,_ZTv0_n16_N7S6105C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S6105C7D0Ev,_ZThn132_N7S6105C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6105C7D1Ev,_ZTv0_n16_N7S6105C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S6105C7D1Ev,_ZThn132_N7S6105C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6105C7D0Ev,_ZTv0_n20_N7S6105C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6105C7D0Ev,_ZThn60_N7S6105C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6105C7D1Ev,_ZTv0_n20_N7S6105C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6105C7D1Ev,_ZThn60_N7S6105C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6105C7D0Ev,_ZThn136_N7S6105C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S6105C7D0Ev,_ZThn104_N7S6105C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6105C7D0Ev,_ZThn48_N7S6105C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6105C7D1Ev,_ZThn136_N7S6105C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S6105C7D1Ev,_ZThn104_N7S6105C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6105C7D1Ev,_ZThn48_N7S6105C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C10D0Ev,_ZTv0_n16_N8S6105C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C10D0Ev,_ZThn120_N8S6105C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C10D1Ev,_ZTv0_n16_N8S6105C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C10D1Ev,_ZThn120_N8S6105C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C10D0Ev,_ZTv0_n20_N8S6105C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C10D0Ev,_ZThn48_N8S6105C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C10D1Ev,_ZTv0_n20_N8S6105C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C10D1Ev,_ZThn48_N8S6105C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6105C10D0Ev,_ZThn124_N8S6105C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C10D0Ev,_ZThn92_N8S6105C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C10D0Ev,_ZThn36_N8S6105C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6105C10D1Ev,_ZThn124_N8S6105C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C10D1Ev,_ZThn92_N8S6105C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C10D1Ev,_ZThn36_N8S6105C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C13D0Ev,_ZThn120_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C13D1Ev,_ZThn120_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C13D0Ev,_ZThn48_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C13D1Ev,_ZThn48_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C13D0Ev,_ZThn36_N8S6105C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C13D0Ev,_ZThn92_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C13D1Ev,_ZThn36_N8S6105C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C13D1Ev,_ZThn92_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C14D0Ev,_ZThn48_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C14D1Ev,_ZThn48_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C14D0Ev,_ZThn36_N8S6105C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C14D0Ev,_ZThn92_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C14D1Ev,_ZThn36_N8S6105C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C14D1Ev,_ZThn92_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6105C1D0Ev,_ZTv0_n24_N7S6105C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S6105C1D0Ev,_ZThn180_N7S6105C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6105C1D1Ev,_ZTv0_n24_N7S6105C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S6105C1D1Ev,_ZThn180_N7S6105C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6105C1D0Ev,_ZTv0_n16_N7S6105C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S6105C1D0Ev,_ZThn164_N7S6105C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6105C1D1Ev,_ZTv0_n16_N7S6105C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S6105C1D1Ev,_ZThn164_N7S6105C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6105C1D0Ev,_ZTv0_n20_N7S6105C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6105C1D0Ev,_ZThn92_N7S6105C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6105C1D1Ev,_ZTv0_n20_N7S6105C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6105C1D1Ev,_ZThn92_N7S6105C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6105C1D0Ev,_ZTv0_n12_N7S6105C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S6105C1D0Ev,_ZThn168_N7S6105C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S6105C1D0Ev,_ZThn136_N7S6105C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6105C1D0Ev,_ZThn80_N7S6105C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6105C1D1Ev,_ZTv0_n12_N7S6105C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S6105C1D1Ev,_ZThn168_N7S6105C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S6105C1D1Ev,_ZThn136_N7S6105C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6105C1D1Ev,_ZThn80_N7S6105C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6105C1 = {  "S6105C1", // class name
  bases_S6105C1, 25,
  &(vtc_S6105C1[0]), // expected_vtbl_contents
  &(vtt_S6105C1[0]), // expected_vtt_contents
  ABISELECT(512,352), // object size
  NSPAIRA(_ZTI7S6105C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6105C1),84, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6105C1),58, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names211,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7780C4  {
  void *s7780c4f0;
  int s7780c4f1[2];
  void *s7780c4f2;
  int s7780c4f3;
  virtual void  v2(); // _ZN7S7780C42v2Ev
  ~S7780C4(); // tgen
  S7780C4(); // tgen
};
//SIG(-1 S7780C4) C1{ v1 Fp Fi[2] Fp Fi}


void  S7780C4 ::v2(){vfunc_called(this, "_ZN7S7780C42v2Ev");}
S7780C4 ::~S7780C4(){ note_dtor("S7780C4", this);} // tgen
S7780C4 ::S7780C4(){ note_ctor("S7780C4", this);} // tgen

static void Test_S7780C4()
{
  extern Class_Descriptor cd_S7780C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7780C4, buf);
    S7780C4 *dp, &lv = *(dp=new (buf) S7780C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7780C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7780C4)");
    check_field_offset(lv, s7780c4f0, ABISELECT(8,4), "S7780C4.s7780c4f0");
    check_field_offset(lv, s7780c4f1, ABISELECT(16,8), "S7780C4.s7780c4f1");
    check_field_offset(lv, s7780c4f2, ABISELECT(24,16), "S7780C4.s7780c4f2");
    check_field_offset(lv, s7780c4f3, ABISELECT(32,20), "S7780C4.s7780c4f3");
    test_class_info(&lv, &cd_S7780C4);
    dp->~S7780C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7780C4(Test_S7780C4, "S7780C4", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7780C4C1Ev();
extern void _ZN7S7780C4D1Ev();
Name_Map name_map_S7780C4[] = {
  NSPAIR(_ZN7S7780C4C1Ev),
  NSPAIR(_ZN7S7780C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7780C4[];
extern void _ZN7S7780C42v2Ev();
static  VTBL_ENTRY vtc_S7780C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C4[0]),
  (VTBL_ENTRY)&_ZN7S7780C42v2Ev,
};
extern VTBL_ENTRY _ZTI7S7780C4[];
extern  VTBL_ENTRY _ZTV7S7780C4[];
Class_Descriptor cd_S7780C4 = {  "S7780C4", // class name
  0,0,//no base classes
  &(vtc_S7780C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7780C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7780C4),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7780C5  {
  long double s7780c5f0[6];
  void *s7780c5f1[6];
  long s7780c5f2[6];
  short s7780c5f3;
  char s7780c5f4;
  void *s7780c5f5;
  virtual void  v3(); // _ZN7S7780C52v3Ev
  ~S7780C5(); // tgen
  S7780C5(); // tgen
};
//SIG(-1 S7780C5) C1{ v1 FD[6] Fp[6] Fl[6] Fs Fc Fp}


void  S7780C5 ::v3(){vfunc_called(this, "_ZN7S7780C52v3Ev");}
S7780C5 ::~S7780C5(){ note_dtor("S7780C5", this);} // tgen
S7780C5 ::S7780C5(){ note_ctor("S7780C5", this);} // tgen

static void Test_S7780C5()
{
  extern Class_Descriptor cd_S7780C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,34)];
    init_test(&cd_S7780C5, buf);
    S7780C5 *dp, &lv = *(dp=new (buf) S7780C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,132), "sizeof(S7780C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7780C5)");
    check_field_offset(lv, s7780c5f0, ABISELECT(16,4), "S7780C5.s7780c5f0");
    check_field_offset(lv, s7780c5f1, ABISELECT(112,76), "S7780C5.s7780c5f1");
    check_field_offset(lv, s7780c5f2, ABISELECT(160,100), "S7780C5.s7780c5f2");
    check_field_offset(lv, s7780c5f3, ABISELECT(208,124), "S7780C5.s7780c5f3");
    check_field_offset(lv, s7780c5f4, ABISELECT(210,126), "S7780C5.s7780c5f4");
    check_field_offset(lv, s7780c5f5, ABISELECT(216,128), "S7780C5.s7780c5f5");
    test_class_info(&lv, &cd_S7780C5);
    dp->~S7780C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7780C5(Test_S7780C5, "S7780C5", ABISELECT(224,132));

#else // __cplusplus

extern void _ZN7S7780C5C1Ev();
extern void _ZN7S7780C5D1Ev();
Name_Map name_map_S7780C5[] = {
  NSPAIR(_ZN7S7780C5C1Ev),
  NSPAIR(_ZN7S7780C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7780C5[];
extern void _ZN7S7780C52v3Ev();
static  VTBL_ENTRY vtc_S7780C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C5[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
};
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
Class_Descriptor cd_S7780C5 = {  "S7780C5", // class name
  0,0,//no base classes
  &(vtc_S7780C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,132), // object size
  NSPAIRA(_ZTI7S7780C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7780C5),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7780C6  {
  short s7780c6f0:12;
  int s7780c6f1;
  char s7780c6f2;
  virtual void  v4(); // _ZN7S7780C62v4Ev
  virtual void  v5(); // _ZN7S7780C62v5Ev
  ~S7780C6(); // tgen
  S7780C6(); // tgen
};
//SIG(-1 S7780C6) C1{ v1 v2 Fs:12 Fi Fc}


void  S7780C6 ::v4(){vfunc_called(this, "_ZN7S7780C62v4Ev");}
void  S7780C6 ::v5(){vfunc_called(this, "_ZN7S7780C62v5Ev");}
S7780C6 ::~S7780C6(){ note_dtor("S7780C6", this);} // tgen
S7780C6 ::S7780C6(){ note_ctor("S7780C6", this);} // tgen

static void Test_S7780C6()
{
  extern Class_Descriptor cd_S7780C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7780C6, buf);
    S7780C6 *dp, &lv = *(dp=new (buf) S7780C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7780C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7780C6)");
    set_bf_and_test(lv, s7780c6f0, ABISELECT(8,4), 0, 12, 1, "S7780C6");
    set_bf_and_test(lv, s7780c6f0, ABISELECT(8,4), 0, 12, hide_sll(1LL<<11), "S7780C6");
    check_field_offset(lv, s7780c6f1, ABISELECT(12,8), "S7780C6.s7780c6f1");
    check_field_offset(lv, s7780c6f2, ABISELECT(16,12), "S7780C6.s7780c6f2");
    test_class_info(&lv, &cd_S7780C6);
    dp->~S7780C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7780C6(Test_S7780C6, "S7780C6", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7780C6C1Ev();
extern void _ZN7S7780C6D1Ev();
Name_Map name_map_S7780C6[] = {
  NSPAIR(_ZN7S7780C6C1Ev),
  NSPAIR(_ZN7S7780C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7780C6[];
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY vtc_S7780C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C6[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
Class_Descriptor cd_S7780C6 = {  "S7780C6", // class name
  0,0,//no base classes
  &(vtc_S7780C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7780C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7780C6),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7780C7  : S7780C5 , S7780C6 {
  long double s7780c7f0;
  __tsi64 s7780c7f1;
  ::S7780C6 s7780c7f2;
  __tsi64 s7780c7f3[2];
  void *s7780c7f4[3];
  int s7780c7f5;
  virtual void  v6(); // _ZN7S7780C72v6Ev
  ~S7780C7(); // tgen
  S7780C7(); // tgen
};
//SIG(-1 S7780C7) C1{ BC2{ v2 FD[6] Fp[6] Fl[6] Fs Fc Fp} BC3{ v3 v4 Fs:12 Fi Fc} v1 FD FL FC3 FL[2] Fp[3] Fi}


void  S7780C7 ::v6(){vfunc_called(this, "_ZN7S7780C72v6Ev");}
S7780C7 ::~S7780C7(){ note_dtor("S7780C7", this);} // tgen
S7780C7 ::S7780C7(){ note_ctor("S7780C7", this);} // tgen

static void Test_S7780C7()
{
  extern Class_Descriptor cd_S7780C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,55)];
    init_test(&cd_S7780C7, buf);
    S7780C7 *dp, &lv = *(dp=new (buf) S7780C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,216), "sizeof(S7780C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7780C7)");
    check_base_class_offset(lv, (S7780C5*), 0, "S7780C7");
    check_base_class_offset(lv, (S7780C6*), ABISELECT(224,132), "S7780C7");
    check_field_offset(lv, s7780c7f0, ABISELECT(256,148), "S7780C7.s7780c7f0");
    check_field_offset(lv, s7780c7f1, ABISELECT(272,160), "S7780C7.s7780c7f1");
    check_field_offset(lv, s7780c7f2, ABISELECT(280,168), "S7780C7.s7780c7f2");
    check_field_offset(lv, s7780c7f3, ABISELECT(304,184), "S7780C7.s7780c7f3");
    check_field_offset(lv, s7780c7f4, ABISELECT(320,200), "S7780C7.s7780c7f4");
    check_field_offset(lv, s7780c7f5, ABISELECT(344,212), "S7780C7.s7780c7f5");
    test_class_info(&lv, &cd_S7780C7);
    dp->~S7780C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7780C7(Test_S7780C7, "S7780C7", ABISELECT(352,216));

#else // __cplusplus

extern void _ZN7S7780C7C1Ev();
extern void _ZN7S7780C7D1Ev();
Name_Map name_map_S7780C7[] = {
  NSPAIR(_ZN7S7780C7C1Ev),
  NSPAIR(_ZN7S7780C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7780C5;
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
extern Class_Descriptor cd_S7780C6;
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
static Base_Class bases_S7780C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7780C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7780C6,    ABISELECT(224,132), //bcp->offset
    4, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7780C7[];
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C72v6Ev();
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY vtc_S7780C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C7[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7780C72v6Ev,
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI7S7780C7[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
extern VTBL_ENTRY _ZTI7S7780C7[];
extern  VTBL_ENTRY _ZTV7S7780C7[];
Class_Descriptor cd_S7780C7 = {  "S7780C7", // class name
  bases_S7780C7, 2,
  &(vtc_S7780C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,216), // object size
  NSPAIRA(_ZTI7S7780C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7780C7),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7780C3  : virtual S7780C4 , virtual S7780C5 , virtual S7780C6 , virtual S7780C7 {
  int s7780c3f0;
  ::S7780C5 s7780c3f1;
  int s7780c3f2;
  short s7780c3f3:2;
  void *s7780c3f4;
  int s7780c3f5;
  virtual  ~S7780C3(); // _ZN7S7780C3D2Ev
  S7780C3(); // tgen
};
//SIG(-1 S7780C3) C1{ VBC2{ v1 Fp Fi[2] Fp Fi} VBC3{ v2 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC4{ v3 v4 Fs:12 Fi Fc} VBC5{ BC3 BC4 v5 FD FL FC4 FL[2] Fp[3] Fi} vd Fi FC3 Fi Fs:2 Fp Fi}


 S7780C3 ::~S7780C3(){ note_dtor("S7780C3", this);}
S7780C3 ::S7780C3(){ note_ctor("S7780C3", this);} // tgen

static void Test_S7780C3()
{
  extern Class_Descriptor cd_S7780C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(58,137)];
    init_test(&cd_S7780C3, buf);
    S7780C3 *dp, &lv = *(dp=new (buf) S7780C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(912,544), "sizeof(S7780C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7780C3)");
    check_base_class_offset(lv, (S7780C4*), ABISELECT(264,156), "S7780C3");
    /*is_ambiguous_... S7780C3::S7780C5 */ AMB_check_base_class_offset(lv, (S7780C5*), ABISELECT(304,180), "S7780C3");
    /*is_ambiguous_... S7780C3::S7780C6 */ AMB_check_base_class_offset(lv, (S7780C6*), ABISELECT(528,312), "S7780C3");
    check_base_class_offset(lv, (S7780C5*)(S7780C7*), ABISELECT(560,328), "S7780C3");
    check_base_class_offset(lv, (S7780C6*)(S7780C7*), ABISELECT(784,460), "S7780C3");
    check_base_class_offset(lv, (S7780C7*), ABISELECT(560,328), "S7780C3");
    check_field_offset(lv, s7780c3f0, ABISELECT(8,4), "S7780C3.s7780c3f0");
    check_field_offset(lv, s7780c3f1, ABISELECT(16,8), "S7780C3.s7780c3f1");
    check_field_offset(lv, s7780c3f2, ABISELECT(240,140), "S7780C3.s7780c3f2");
    set_bf_and_test(lv, s7780c3f3, ABISELECT(244,144), 0, 2, 1, "S7780C3");
    set_bf_and_test(lv, s7780c3f3, ABISELECT(244,144), 0, 2, hide_sll(1LL<<1), "S7780C3");
    check_field_offset(lv, s7780c3f4, ABISELECT(248,148), "S7780C3.s7780c3f4");
    check_field_offset(lv, s7780c3f5, ABISELECT(256,152), "S7780C3.s7780c3f5");
    test_class_info(&lv, &cd_S7780C3);
    dp->~S7780C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7780C3(Test_S7780C3, "S7780C3", ABISELECT(912,544));

#else // __cplusplus

extern void _ZN7S7780C3C1Ev();
extern void _ZN7S7780C3D2Ev();
Name_Map name_map_S7780C3[] = {
  NSPAIR(_ZN7S7780C3C1Ev),
  NSPAIR(_ZN7S7780C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7780C4;
extern VTBL_ENTRY _ZTI7S7780C4[];
extern  VTBL_ENTRY _ZTV7S7780C4[];
extern Class_Descriptor cd_S7780C5;
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
extern Class_Descriptor cd_S7780C6;
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
extern Class_Descriptor cd_S7780C5;
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
extern Class_Descriptor cd_S7780C6;
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
extern Class_Descriptor cd_S7780C7;
extern VTBL_ENTRY _ZTI7S7780C7[];
extern  VTBL_ENTRY _ZTV7S7780C7[];
static Base_Class bases_S7780C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7780C4,    ABISELECT(264,156), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7780C5,    ABISELECT(304,180), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7780C6,    ABISELECT(528,312), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7780C5,    ABISELECT(560,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7780C6,    ABISELECT(784,460), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7780C7,    ABISELECT(560,328), //bcp->offset
    22, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7780C3[];
extern void _ZN7S7780C3D1Ev();
extern void _ZN7S7780C3D0Ev();
extern void _ZN7S7780C42v2Ev();
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C72v6Ev();
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY vtc_S7780C3[] = {
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7780C3D0Ev,
  0,
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C42v2Ev,
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  0,
  0,
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7780C72v6Ev,
  ABISELECT(-784,-460),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
extern VTBL_ENTRY _ZTV7S7780C3[];
static  VTT_ENTRY vtt_S7780C3[] = {
  {&(_ZTV7S7780C3[6]),  6,34},
  {&(_ZTV7S7780C3[11]),  11,34},
  {&(_ZTV7S7780C3[15]),  15,34},
  {&(_ZTV7S7780C3[20]),  20,34},
  {&(_ZTV7S7780C3[28]),  28,34},
  {&(_ZTV7S7780C3[32]),  32,34},
};
extern VTBL_ENTRY _ZTI7S7780C3[];
extern  VTBL_ENTRY _ZTV7S7780C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7780C3[];
Class_Descriptor cd_S7780C3 = {  "S7780C3", // class name
  bases_S7780C3, 6,
  &(vtc_S7780C3[0]), // expected_vtbl_contents
  &(vtt_S7780C3[0]), // expected_vtt_contents
  ABISELECT(912,544), // object size
  NSPAIRA(_ZTI7S7780C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7780C3),34, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7780C3),6, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7780C2  : virtual S7780C3 , S7780C6 {
  int s7780c2f0[6];
  __tsi64 s7780c2f1;
  int s7780c2f2;
  void *s7780c2f3;
  long double s7780c2f4;
  virtual  ~S7780C2(); // _ZN7S7780C2D2Ev
  virtual void  v7(); // _ZN7S7780C22v7Ev
  S7780C2(); // tgen
};
//SIG(-1 S7780C2) C1{ VBC2{ VBC3{ v2 Fp Fi[2] Fp Fi} VBC4{ v3 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC5{ v4 v5 Fs:12 Fi Fc} VBC6{ BC4 BC5 v6 FD FL FC5 FL[2] Fp[3] Fi} vd Fi FC4 Fi Fs:2 Fp Fi} BC5 vd v1 Fi[6] FL Fi Fp FD}


 S7780C2 ::~S7780C2(){ note_dtor("S7780C2", this);}
void  S7780C2 ::v7(){vfunc_called(this, "_ZN7S7780C22v7Ev");}
S7780C2 ::S7780C2(){ note_ctor("S7780C2", this);} // tgen

static void Test_S7780C2()
{
  extern Class_Descriptor cd_S7780C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(64,154)];
    init_test(&cd_S7780C2, buf);
    S7780C2 *dp, &lv = *(dp=new (buf) S7780C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1008,612), "sizeof(S7780C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7780C2)");
    check_base_class_offset(lv, (S7780C4*)(S7780C3*), ABISELECT(360,224), "S7780C2");
    /*is_ambiguous_... S7780C3::S7780C5 */ AMB_check_base_class_offset(lv, (S7780C5*)(S7780C3*), ABISELECT(400,248), "S7780C2");
    /*is_ambiguous_... S7780C3::S7780C6 */ AMB_check_base_class_offset(lv, (S7780C6*)(S7780C3*), ABISELECT(624,380), "S7780C2");
    check_base_class_offset(lv, (S7780C5*)(S7780C7*), ABISELECT(656,396), "S7780C2");
    check_base_class_offset(lv, (S7780C6*)(S7780C7*), ABISELECT(880,528), "S7780C2");
    check_base_class_offset(lv, (S7780C7*)(S7780C3*), ABISELECT(656,396), "S7780C2");
    check_base_class_offset(lv, (S7780C3*), ABISELECT(96,68), "S7780C2");
    /*is_ambiguous_... S7780C2::S7780C6 */ AMB_check_base_class_offset(lv, (S7780C6*), 0, "S7780C2");
    check_field_offset(lv, s7780c2f0, ABISELECT(20,16), "S7780C2.s7780c2f0");
    check_field_offset(lv, s7780c2f1, ABISELECT(48,40), "S7780C2.s7780c2f1");
    check_field_offset(lv, s7780c2f2, ABISELECT(56,48), "S7780C2.s7780c2f2");
    check_field_offset(lv, s7780c2f3, ABISELECT(64,52), "S7780C2.s7780c2f3");
    check_field_offset(lv, s7780c2f4, ABISELECT(80,56), "S7780C2.s7780c2f4");
    test_class_info(&lv, &cd_S7780C2);
    dp->~S7780C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7780C2(Test_S7780C2, "S7780C2", ABISELECT(1008,612));

#else // __cplusplus

extern void _ZN7S7780C2C1Ev();
extern void _ZN7S7780C2D2Ev();
Name_Map name_map_S7780C2[] = {
  NSPAIR(_ZN7S7780C2C1Ev),
  NSPAIR(_ZN7S7780C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7780C4;
extern VTBL_ENTRY _ZTI7S7780C4[];
extern  VTBL_ENTRY _ZTV7S7780C4[];
extern Class_Descriptor cd_S7780C5;
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
extern Class_Descriptor cd_S7780C6;
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
extern Class_Descriptor cd_S7780C5;
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
extern Class_Descriptor cd_S7780C6;
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
extern Class_Descriptor cd_S7780C7;
extern VTBL_ENTRY _ZTI7S7780C7[];
extern  VTBL_ENTRY _ZTV7S7780C7[];
extern Class_Descriptor cd_S7780C3;
extern VTBL_ENTRY _ZTI7S7780C3[];
extern  VTBL_ENTRY _ZTV7S7780C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7780C3[];
extern Class_Descriptor cd_S7780C6;
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
static Base_Class bases_S7780C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7780C4,    ABISELECT(360,224), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7780C5,    ABISELECT(400,248), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7780C6,    ABISELECT(624,380), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7780C5,    ABISELECT(656,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7780C6,    ABISELECT(880,528), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7780C7,    ABISELECT(656,396), //bcp->offset
    35, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7780C3,    ABISELECT(96,68), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7780C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7780C2[];
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
extern void _ZN7S7780C2D1Ev();
extern void _ZN7S7780C2D0Ev();
extern void _ZN7S7780C22v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S7780C2D1Ev,_ZTv0_n28_N7S7780C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S7780C2D1Ev,_ZThn68_N7S7780C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7780C2D0Ev,_ZTv0_n28_N7S7780C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S7780C2D0Ev,_ZThn68_N7S7780C2D0Ev)() __attribute__((weak));
extern void _ZN7S7780C42v2Ev();
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C72v6Ev();
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY vtc_S7780C2[] = {
  ABISELECT(656,396),
  ABISELECT(624,380),
  ABISELECT(400,248),
  ABISELECT(360,224),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7780C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7780C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7780C22v7Ev,
  ABISELECT(-96,-68),
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7780C2D1Ev,_ZTv0_n28_N7S7780C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7780C2D0Ev,_ZTv0_n28_N7S7780C2D0Ev),
  0,
  ABISELECT(-360,-224),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C42v2Ev,
  0,
  ABISELECT(-400,-248),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  0,
  0,
  ABISELECT(-624,-380),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-656,-396),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7780C72v6Ev,
  ABISELECT(-880,-528),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
extern VTBL_ENTRY _ZTV7S7780C2[];
extern void _ZN7S7780C3D1Ev();
extern void _ZN7S7780C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C3__7S7780C2[] = {
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7780C3D0Ev,
};
extern void _ZN7S7780C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C4__7S7780C3__7S7780C2[] = {
  0,
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C42v2Ev,
};
extern void _ZN7S7780C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C5__7S7780C3__7S7780C2[] = {
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
};
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C6__7S7780C3__7S7780C2[] = {
  0,
  0,
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C7__7S7780C3__7S7780C2[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7780C72v6Ev,
};
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C67S7780C7__A1__7S7780C3__7S7780C2[] = {
  ABISELECT(-784,-460),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
static  VTT_ENTRY vtt_S7780C2[] = {
  {&(_ZTV7S7780C2[7]),  7,47},
  {&(_ZTV7S7780C2[19]),  19,47},
  {&(_ZTV7S7780C2[24]),  24,47},
  {&(_ZTV7S7780C2[28]),  28,47},
  {&(_ZTV7S7780C2[33]),  33,47},
  {&(_ZTV7S7780C2[41]),  41,47},
  {&(_ZTV7S7780C2[45]),  45,47},
  {&(_tg__ZTV7S7780C3__7S7780C2[6]),  6,8},
  {&(_tg__ZTV7S7780C4__7S7780C3__7S7780C2[3]),  3,4},
  {&(_tg__ZTV7S7780C5__7S7780C3__7S7780C2[3]),  3,4},
  {&(_tg__ZTV7S7780C6__7S7780C3__7S7780C2[4]),  4,6},
  {&(_tg__ZTV7S7780C7__7S7780C3__7S7780C2[6]),  6,8},
  {&(_tg__ZTV7S7780C67S7780C7__A1__7S7780C3__7S7780C2[2]),  2,4},
};
extern VTBL_ENTRY _ZTI7S7780C2[];
extern  VTBL_ENTRY _ZTV7S7780C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7780C2[];
static VTBL_ENTRY alt_thunk_names212[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7780C2D0Ev,_ZTv0_n28_N7S7780C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7780C2D0Ev,_ZThn68_N7S7780C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7780C2D1Ev,_ZTv0_n28_N7S7780C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7780C2D1Ev,_ZThn68_N7S7780C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7780C2 = {  "S7780C2", // class name
  bases_S7780C2, 8,
  &(vtc_S7780C2[0]), // expected_vtbl_contents
  &(vtt_S7780C2[0]), // expected_vtt_contents
  ABISELECT(1008,612), // object size
  NSPAIRA(_ZTI7S7780C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7780C2),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7780C2),13, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names212,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7780C8  : S7780C5 {
  __tsi64 s7780c8f0;
  ::S7780C3 s7780c8f1;
  virtual void  v8(); // _ZN7S7780C82v8Ev
  virtual void  v9(); // _ZN7S7780C82v9Ev
  ~S7780C8(); // tgen
  S7780C8(); // tgen
};
//SIG(-1 S7780C8) C1{ BC2{ v3 FD[6] Fp[6] Fl[6] Fs Fc Fp} v1 v2 FL FC3{ VBC4{ v4 Fp Fi[2] Fp Fi} VBC2 VBC5{ v5 v6 Fs:12 Fi Fc} VBC6{ BC2 BC5 v7 FD FL FC5 FL[2] Fp[3] Fi} vd Fi FC2 Fi Fs:2 Fp Fi}}


void  S7780C8 ::v8(){vfunc_called(this, "_ZN7S7780C82v8Ev");}
void  S7780C8 ::v9(){vfunc_called(this, "_ZN7S7780C82v9Ev");}
S7780C8 ::~S7780C8(){ note_dtor("S7780C8", this);} // tgen
S7780C8 ::S7780C8(){ note_ctor("S7780C8", this);} // tgen

static void Test_S7780C8()
{
  extern Class_Descriptor cd_S7780C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(73,172)];
    init_test(&cd_S7780C8, buf);
    S7780C8 *dp, &lv = *(dp=new (buf) S7780C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1152,684), "sizeof(S7780C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7780C8)");
    check_base_class_offset(lv, (S7780C5*), 0, "S7780C8");
    check_field_offset(lv, s7780c8f0, ABISELECT(224,132), "S7780C8.s7780c8f0");
    check_field_offset(lv, s7780c8f1, ABISELECT(240,140), "S7780C8.s7780c8f1");
    test_class_info(&lv, &cd_S7780C8);
    dp->~S7780C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7780C8(Test_S7780C8, "S7780C8", ABISELECT(1152,684));

#else // __cplusplus

extern void _ZN7S7780C8C1Ev();
extern void _ZN7S7780C8D1Ev();
Name_Map name_map_S7780C8[] = {
  NSPAIR(_ZN7S7780C8C1Ev),
  NSPAIR(_ZN7S7780C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7780C5;
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
static Base_Class bases_S7780C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7780C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7780C8[];
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C82v8Ev();
extern void _ZN7S7780C82v9Ev();
static  VTBL_ENTRY vtc_S7780C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C8[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7780C82v8Ev,
  (VTBL_ENTRY)&_ZN7S7780C82v9Ev,
};
extern VTBL_ENTRY _ZTI7S7780C8[];
extern  VTBL_ENTRY _ZTV7S7780C8[];
Class_Descriptor cd_S7780C8 = {  "S7780C8", // class name
  bases_S7780C8, 1,
  &(vtc_S7780C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1152,684), // object size
  NSPAIRA(_ZTI7S7780C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7780C8),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7780C1  : S7780C2 , S7780C8 {
  int s7780c1f0;
  ::S7780C3 s7780c1f1;
  char s7780c1f2;
  virtual  ~S7780C1(); // _ZN7S7780C1D2Ev
  virtual void  v1(); // _ZN7S7780C12v1Ev
  S7780C1(); // tgen
};
//SIG(1 S7780C1) C1{ BC2{ VBC3{ VBC4{ v2 Fp Fi[2] Fp Fi} VBC5{ v3 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC6{ v4 v5 Fs:12 Fi Fc} VBC7{ BC5 BC6 v6 FD FL FC6 FL[2] Fp[3] Fi} vd Fi FC5 Fi Fs:2 Fp Fi} BC6 vd v7 Fi[6] FL Fi Fp FD} BC8{ BC5 v8 v9 FL FC3} vd v1 Fi FC3 Fc}


 S7780C1 ::~S7780C1(){ note_dtor("S7780C1", this);}
void  S7780C1 ::v1(){vfunc_called(this, "_ZN7S7780C12v1Ev");}
S7780C1 ::S7780C1(){ note_ctor("S7780C1", this);} // tgen

static void Test_S7780C1()
{
  extern Class_Descriptor cd_S7780C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(195,463)];
    init_test(&cd_S7780C1, buf);
    S7780C1 *dp, &lv = *(dp=new (buf) S7780C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3104,1848), "sizeof(S7780C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7780C1)");
    check_base_class_offset(lv, (S7780C4*)(S7780C3*), ABISELECT(2456,1460), "S7780C1");
    /*is_ambiguous_... S7780C3::S7780C5 */ AMB_check_base_class_offset(lv, (S7780C5*)(S7780C3*), ABISELECT(2496,1484), "S7780C1");
    /*is_ambiguous_... S7780C3::S7780C6 */ AMB_check_base_class_offset(lv, (S7780C6*)(S7780C3*), ABISELECT(2720,1616), "S7780C1");
    check_base_class_offset(lv, (S7780C5*)(S7780C7*), ABISELECT(2752,1632), "S7780C1");
    check_base_class_offset(lv, (S7780C6*)(S7780C7*), ABISELECT(2976,1764), "S7780C1");
    check_base_class_offset(lv, (S7780C7*)(S7780C3*), ABISELECT(2752,1632), "S7780C1");
    check_base_class_offset(lv, (S7780C3*)(S7780C2*), ABISELECT(2192,1304), "S7780C1");
    /*is_ambiguous_... S7780C2::S7780C6 */ AMB_check_base_class_offset(lv, (S7780C6*)(S7780C2*), 0, "S7780C1");
    check_base_class_offset(lv, (S7780C2*), 0, "S7780C1");
    check_base_class_offset(lv, (S7780C5*)(S7780C8*), ABISELECT(96,68), "S7780C1");
    check_base_class_offset(lv, (S7780C8*), ABISELECT(96,68), "S7780C1");
    check_field_offset(lv, s7780c1f0, ABISELECT(1248,752), "S7780C1.s7780c1f0");
    check_field_offset(lv, s7780c1f1, ABISELECT(1264,756), "S7780C1.s7780c1f1");
    check_field_offset(lv, s7780c1f2, ABISELECT(2176,1300), "S7780C1.s7780c1f2");
    test_class_info(&lv, &cd_S7780C1);
    dp->~S7780C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7780C1(Test_S7780C1, "S7780C1", ABISELECT(3104,1848));

#else // __cplusplus

extern void _ZN7S7780C1C1Ev();
extern void _ZN7S7780C1D2Ev();
Name_Map name_map_S7780C1[] = {
  NSPAIR(_ZN7S7780C1C1Ev),
  NSPAIR(_ZN7S7780C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7780C4;
extern VTBL_ENTRY _ZTI7S7780C4[];
extern  VTBL_ENTRY _ZTV7S7780C4[];
extern Class_Descriptor cd_S7780C5;
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
extern Class_Descriptor cd_S7780C6;
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
extern Class_Descriptor cd_S7780C5;
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
extern Class_Descriptor cd_S7780C6;
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
extern Class_Descriptor cd_S7780C7;
extern VTBL_ENTRY _ZTI7S7780C7[];
extern  VTBL_ENTRY _ZTV7S7780C7[];
extern Class_Descriptor cd_S7780C3;
extern VTBL_ENTRY _ZTI7S7780C3[];
extern  VTBL_ENTRY _ZTV7S7780C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7780C3[];
extern Class_Descriptor cd_S7780C6;
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
extern Class_Descriptor cd_S7780C2;
extern VTBL_ENTRY _ZTI7S7780C2[];
extern  VTBL_ENTRY _ZTV7S7780C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7780C2[];
extern Class_Descriptor cd_S7780C5;
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
extern Class_Descriptor cd_S7780C8;
extern VTBL_ENTRY _ZTI7S7780C8[];
extern  VTBL_ENTRY _ZTV7S7780C8[];
static Base_Class bases_S7780C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7780C4,    ABISELECT(2456,1460), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7780C5,    ABISELECT(2496,1484), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7780C6,    ABISELECT(2720,1616), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7780C5,    ABISELECT(2752,1632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7780C6,    ABISELECT(2976,1764), //bcp->offset
    49, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7780C7,    ABISELECT(2752,1632), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7780C3,    ABISELECT(2192,1304), //bcp->offset
    18, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7780C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7780C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7780C5,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7780C8,    ABISELECT(96,68), //bcp->offset
    13, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7780C1[];
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
extern void _ZN7S7780C1D1Ev();
extern void _ZN7S7780C1D0Ev();
extern void _ZN7S7780C22v7Ev();
extern void _ZN7S7780C12v1Ev();
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C82v8Ev();
extern void _ZN7S7780C82v9Ev();
extern void ABISELECT(_ZTv0_n56_N7S7780C1D1Ev,_ZTv0_n28_N7S7780C1D1Ev)();
extern void ABISELECT(_ZThn2192_N7S7780C1D1Ev,_ZThn1304_N7S7780C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7780C1D0Ev,_ZTv0_n28_N7S7780C1D0Ev)();
extern void ABISELECT(_ZThn2192_N7S7780C1D0Ev,_ZThn1304_N7S7780C1D0Ev)() __attribute__((weak));
extern void _ZN7S7780C42v2Ev();
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C72v6Ev();
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY vtc_S7780C1[] = {
  ABISELECT(2752,1632),
  ABISELECT(2720,1616),
  ABISELECT(2496,1484),
  ABISELECT(2456,1460),
  ABISELECT(2192,1304),
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C1[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7780C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7780C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7780C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7780C12v1Ev,
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7780C1[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7780C82v8Ev,
  (VTBL_ENTRY)&_ZN7S7780C82v9Ev,
  ABISELECT(-2192,-1304),
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  ABISELECT(-2192,-1304),
  (VTBL_ENTRY)&(_ZTI7S7780C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7780C1D1Ev,_ZTv0_n28_N7S7780C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7780C1D0Ev,_ZTv0_n28_N7S7780C1D0Ev),
  0,
  ABISELECT(-2456,-1460),
  (VTBL_ENTRY)&(_ZTI7S7780C1[0]),
  (VTBL_ENTRY)&_ZN7S7780C42v2Ev,
  0,
  ABISELECT(-2496,-1484),
  (VTBL_ENTRY)&(_ZTI7S7780C1[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  0,
  0,
  ABISELECT(-2720,-1616),
  (VTBL_ENTRY)&(_ZTI7S7780C1[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-2752,-1632),
  (VTBL_ENTRY)&(_ZTI7S7780C1[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7780C72v6Ev,
  ABISELECT(-2976,-1764),
  (VTBL_ENTRY)&(_ZTI7S7780C1[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
extern VTBL_ENTRY _ZTV7S7780C1[];
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
extern void _ZN7S7780C2D1Ev();
extern void _ZN7S7780C2D0Ev();
extern void _ZN7S7780C22v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C2__7S7780C1[] = {
  ABISELECT(2752,1632),
  ABISELECT(2720,1616),
  ABISELECT(2496,1484),
  ABISELECT(2456,1460),
  ABISELECT(2192,1304),
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7780C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7780C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7780C22v7Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7780C2D1Ev,_ZTv0_n28_N7S7780C2D1Ev)();
extern void ABISELECT(_ZThn2192_N7S7780C2D1Ev,_ZThn1304_N7S7780C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7780C2D0Ev,_ZTv0_n28_N7S7780C2D0Ev)();
extern void ABISELECT(_ZThn2192_N7S7780C2D0Ev,_ZThn1304_N7S7780C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7780C3__7S7780C2__7S7780C1[] = {
  ABISELECT(-2192,-1304),
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  ABISELECT(-2192,-1304),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7780C2D1Ev,_ZTv0_n28_N7S7780C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7780C2D0Ev,_ZTv0_n28_N7S7780C2D0Ev),
};
extern void _ZN7S7780C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C4__7S7780C2__7S7780C1[] = {
  0,
  ABISELECT(-2456,-1460),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C42v2Ev,
};
extern void _ZN7S7780C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C5__7S7780C2__7S7780C1[] = {
  0,
  ABISELECT(-2496,-1484),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
};
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C6__7S7780C2__7S7780C1[] = {
  0,
  0,
  ABISELECT(-2720,-1616),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C7__7S7780C2__7S7780C1[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-2752,-1632),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7780C72v6Ev,
};
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C67S7780C7__A1__7S7780C2__7S7780C1[] = {
  ABISELECT(-2976,-1764),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
extern void _ZN7S7780C3D1Ev();
extern void _ZN7S7780C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C3__7S7780C1[] = {
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7780C3D0Ev,
};
extern void _ZN7S7780C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C4__7S7780C3__7S7780C1[] = {
  0,
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C42v2Ev,
};
extern void _ZN7S7780C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C5__7S7780C3__7S7780C1[] = {
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
};
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C6__7S7780C3__7S7780C1[] = {
  0,
  0,
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C7__7S7780C3__7S7780C1[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7780C72v6Ev,
};
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C67S7780C7__A1__7S7780C3__7S7780C1[] = {
  ABISELECT(-784,-460),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
static  VTT_ENTRY vtt_S7780C1[] = {
  {&(_ZTV7S7780C1[7]),  7,53},
  {&(_tg__ZTV7S7780C2__7S7780C1[7]),  7,12},
  {&(_tg__ZTV7S7780C3__7S7780C2__7S7780C1[7]),  7,9},
  {&(_tg__ZTV7S7780C4__7S7780C2__7S7780C1[3]),  3,4},
  {&(_tg__ZTV7S7780C5__7S7780C2__7S7780C1[3]),  3,4},
  {&(_tg__ZTV7S7780C6__7S7780C2__7S7780C1[4]),  4,6},
  {&(_tg__ZTV7S7780C7__7S7780C2__7S7780C1[6]),  6,8},
  {&(_tg__ZTV7S7780C67S7780C7__A1__7S7780C2__7S7780C1[2]),  2,4},
  {&(_ZTV7S7780C1[25]),  25,53},
  {&(_ZTV7S7780C1[30]),  30,53},
  {&(_ZTV7S7780C1[34]),  34,53},
  {&(_ZTV7S7780C1[39]),  39,53},
  {&(_ZTV7S7780C1[47]),  47,53},
  {&(_ZTV7S7780C1[51]),  51,53},
  {&(_tg__ZTV7S7780C3__7S7780C1[6]),  6,8},
  {&(_tg__ZTV7S7780C4__7S7780C3__7S7780C1[3]),  3,4},
  {&(_tg__ZTV7S7780C5__7S7780C3__7S7780C1[3]),  3,4},
  {&(_tg__ZTV7S7780C6__7S7780C3__7S7780C1[4]),  4,6},
  {&(_tg__ZTV7S7780C7__7S7780C3__7S7780C1[6]),  6,8},
  {&(_tg__ZTV7S7780C67S7780C7__A1__7S7780C3__7S7780C1[2]),  2,4},
};
extern VTBL_ENTRY _ZTI7S7780C1[];
extern  VTBL_ENTRY _ZTV7S7780C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7780C1[];
static VTBL_ENTRY alt_thunk_names213[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7780C2D0Ev,_ZTv0_n28_N7S7780C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N7S7780C2D0Ev,_ZThn1304_N7S7780C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7780C2D1Ev,_ZTv0_n28_N7S7780C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N7S7780C2D1Ev,_ZThn1304_N7S7780C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7780C1D0Ev,_ZTv0_n28_N7S7780C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N7S7780C1D0Ev,_ZThn1304_N7S7780C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7780C1D1Ev,_ZTv0_n28_N7S7780C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N7S7780C1D1Ev,_ZThn1304_N7S7780C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7780C1 = {  "S7780C1", // class name
  bases_S7780C1, 11,
  &(vtc_S7780C1[0]), // expected_vtbl_contents
  &(vtt_S7780C1[0]), // expected_vtt_contents
  ABISELECT(3104,1848), // object size
  NSPAIRA(_ZTI7S7780C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7780C1),53, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7780C1),20, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names213,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S396C4  : S3423C8_nt {
};
//SIG(-1 S396C4) C1{ BC2{ m Fi}}



static void Test_S396C4()
{
  extern Class_Descriptor cd_S396C4;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S396C4, buf);
    S396C4 &lv = *(new (buf) S396C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S396C4)");
    check2(__alignof__(lv), 4, "__alignof__(S396C4)");
    check_base_class_offset(lv, (S3423C8_nt*), 0, "S396C4");
    test_class_info(&lv, &cd_S396C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS396C4(Test_S396C4, "S396C4", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
static Base_Class bases_S396C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S396C4[];
Class_Descriptor cd_S396C4 = {  "S396C4", // class name
  bases_S396C4, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI6S396C4),ABISELECT(24,12), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S396C3  : S396C4 {
  ::S4161C4_nt s396c3f0;
  void *s396c3f1;
  virtual  ~S396C3(); // _ZN6S396C3D1Ev
  virtual void  v8(); // _ZN6S396C32v8Ev
  virtual void  v9(); // _ZN6S396C32v9Ev
  virtual void  v10(); // _ZN6S396C33v10Ev
  virtual void  v11(); // _ZN6S396C33v11Ev
  virtual void  v12(); // _ZN6S396C33v12Ev
  virtual void  v13(); // _ZN6S396C33v13Ev
  virtual void  v14(); // _ZN6S396C33v14Ev
  virtual void  v15(); // _ZN6S396C33v15Ev
  virtual void  v16(); // _ZN6S396C33v16Ev
  virtual void  v17(); // _ZN6S396C33v17Ev
  virtual void  v18(); // _ZN6S396C33v18Ev
  virtual void  v19(); // _ZN6S396C33v19Ev
  virtual void  v20(); // _ZN6S396C33v20Ev
  virtual void  v21(); // _ZN6S396C33v21Ev
  virtual void  v22(); // _ZN6S396C33v22Ev
  virtual void  v23(); // _ZN6S396C33v23Ev
  virtual void  v24(); // _ZN6S396C33v24Ev
  virtual void  v25(); // _ZN6S396C33v25Ev
  virtual void  v26(); // _ZN6S396C33v26Ev
  virtual void  v27(); // _ZN6S396C33v27Ev
  virtual void  v28(); // _ZN6S396C33v28Ev
  virtual void  v29(); // _ZN6S396C33v29Ev
  virtual void  v30(); // _ZN6S396C33v30Ev
  S396C3(); // tgen
};
//SIG(-1 S396C3) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 FC4{ m Fp} Fp}


 S396C3 ::~S396C3(){ note_dtor("S396C3", this);}
void  S396C3 ::v8(){vfunc_called(this, "_ZN6S396C32v8Ev");}
void  S396C3 ::v9(){vfunc_called(this, "_ZN6S396C32v9Ev");}
void  S396C3 ::v10(){vfunc_called(this, "_ZN6S396C33v10Ev");}
void  S396C3 ::v11(){vfunc_called(this, "_ZN6S396C33v11Ev");}
void  S396C3 ::v12(){vfunc_called(this, "_ZN6S396C33v12Ev");}
void  S396C3 ::v13(){vfunc_called(this, "_ZN6S396C33v13Ev");}
void  S396C3 ::v14(){vfunc_called(this, "_ZN6S396C33v14Ev");}
void  S396C3 ::v15(){vfunc_called(this, "_ZN6S396C33v15Ev");}
void  S396C3 ::v16(){vfunc_called(this, "_ZN6S396C33v16Ev");}
void  S396C3 ::v17(){vfunc_called(this, "_ZN6S396C33v17Ev");}
void  S396C3 ::v18(){vfunc_called(this, "_ZN6S396C33v18Ev");}
void  S396C3 ::v19(){vfunc_called(this, "_ZN6S396C33v19Ev");}
void  S396C3 ::v20(){vfunc_called(this, "_ZN6S396C33v20Ev");}
void  S396C3 ::v21(){vfunc_called(this, "_ZN6S396C33v21Ev");}
void  S396C3 ::v22(){vfunc_called(this, "_ZN6S396C33v22Ev");}
void  S396C3 ::v23(){vfunc_called(this, "_ZN6S396C33v23Ev");}
void  S396C3 ::v24(){vfunc_called(this, "_ZN6S396C33v24Ev");}
void  S396C3 ::v25(){vfunc_called(this, "_ZN6S396C33v25Ev");}
void  S396C3 ::v26(){vfunc_called(this, "_ZN6S396C33v26Ev");}
void  S396C3 ::v27(){vfunc_called(this, "_ZN6S396C33v27Ev");}
void  S396C3 ::v28(){vfunc_called(this, "_ZN6S396C33v28Ev");}
void  S396C3 ::v29(){vfunc_called(this, "_ZN6S396C33v29Ev");}
void  S396C3 ::v30(){vfunc_called(this, "_ZN6S396C33v30Ev");}
S396C3 ::S396C3(){ note_ctor("S396C3", this);} // tgen

static void Test_S396C3()
{
  extern Class_Descriptor cd_S396C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S396C3, buf);
    S396C3 *dp, &lv = *(dp=new (buf) S396C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S396C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S396C3)");
    check_base_class_offset(lv, (S3423C8_nt*)(S396C4*), ABISELECT(8,4), "S396C3");
    check_base_class_offset(lv, (S396C4*), ABISELECT(8,4), "S396C3");
    check_field_offset(lv, s396c3f0, ABISELECT(16,8), "S396C3.s396c3f0");
    check_field_offset(lv, s396c3f1, ABISELECT(24,12), "S396C3.s396c3f1");
    test_class_info(&lv, &cd_S396C3);
    dp->~S396C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS396C3(Test_S396C3, "S396C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN6S396C3C1Ev();
extern void _ZN6S396C3D1Ev();
Name_Map name_map_S396C3[] = {
  NSPAIR(_ZN6S396C3C1Ev),
  NSPAIR(_ZN6S396C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S396C4;
extern VTBL_ENTRY _ZTI6S396C4[];
static Base_Class bases_S396C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S396C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S396C3[];
extern void _ZN6S396C3D1Ev();
extern void _ZN6S396C3D0Ev();
extern void _ZN6S396C32v8Ev();
extern void _ZN6S396C32v9Ev();
extern void _ZN6S396C33v10Ev();
extern void _ZN6S396C33v11Ev();
extern void _ZN6S396C33v12Ev();
extern void _ZN6S396C33v13Ev();
extern void _ZN6S396C33v14Ev();
extern void _ZN6S396C33v15Ev();
extern void _ZN6S396C33v16Ev();
extern void _ZN6S396C33v17Ev();
extern void _ZN6S396C33v18Ev();
extern void _ZN6S396C33v19Ev();
extern void _ZN6S396C33v20Ev();
extern void _ZN6S396C33v21Ev();
extern void _ZN6S396C33v22Ev();
extern void _ZN6S396C33v23Ev();
extern void _ZN6S396C33v24Ev();
extern void _ZN6S396C33v25Ev();
extern void _ZN6S396C33v26Ev();
extern void _ZN6S396C33v27Ev();
extern void _ZN6S396C33v28Ev();
extern void _ZN6S396C33v29Ev();
extern void _ZN6S396C33v30Ev();
static  VTBL_ENTRY vtc_S396C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S396C3[0]),
  (VTBL_ENTRY)&_ZN6S396C3D1Ev,
  (VTBL_ENTRY)&_ZN6S396C3D0Ev,
  (VTBL_ENTRY)&_ZN6S396C32v8Ev,
  (VTBL_ENTRY)&_ZN6S396C32v9Ev,
  (VTBL_ENTRY)&_ZN6S396C33v10Ev,
  (VTBL_ENTRY)&_ZN6S396C33v11Ev,
  (VTBL_ENTRY)&_ZN6S396C33v12Ev,
  (VTBL_ENTRY)&_ZN6S396C33v13Ev,
  (VTBL_ENTRY)&_ZN6S396C33v14Ev,
  (VTBL_ENTRY)&_ZN6S396C33v15Ev,
  (VTBL_ENTRY)&_ZN6S396C33v16Ev,
  (VTBL_ENTRY)&_ZN6S396C33v17Ev,
  (VTBL_ENTRY)&_ZN6S396C33v18Ev,
  (VTBL_ENTRY)&_ZN6S396C33v19Ev,
  (VTBL_ENTRY)&_ZN6S396C33v20Ev,
  (VTBL_ENTRY)&_ZN6S396C33v21Ev,
  (VTBL_ENTRY)&_ZN6S396C33v22Ev,
  (VTBL_ENTRY)&_ZN6S396C33v23Ev,
  (VTBL_ENTRY)&_ZN6S396C33v24Ev,
  (VTBL_ENTRY)&_ZN6S396C33v25Ev,
  (VTBL_ENTRY)&_ZN6S396C33v26Ev,
  (VTBL_ENTRY)&_ZN6S396C33v27Ev,
  (VTBL_ENTRY)&_ZN6S396C33v28Ev,
  (VTBL_ENTRY)&_ZN6S396C33v29Ev,
  (VTBL_ENTRY)&_ZN6S396C33v30Ev,
};
extern VTBL_ENTRY _ZTI6S396C3[];
extern  VTBL_ENTRY _ZTV6S396C3[];
Class_Descriptor cd_S396C3 = {  "S396C3", // class name
  bases_S396C3, 2,
  &(vtc_S396C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI6S396C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV6S396C3),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S396C2  : S396C3 {
  ::S3423C4_nt s396c2f0;
  virtual void  v31(); // _ZN6S396C23v31Ev
  virtual void  v32(); // _ZN6S396C23v32Ev
  virtual void  v33(); // _ZN6S396C23v33Ev
  virtual void  v34(); // _ZN6S396C23v34Ev
  virtual void  v35(); // _ZN6S396C23v35Ev
  virtual void  v36(); // _ZN6S396C23v36Ev
  virtual void  v37(); // _ZN6S396C23v37Ev
  virtual void  v38(); // _ZN6S396C23v38Ev
  virtual void  v39(); // _ZN6S396C23v39Ev
  virtual void  v40(); // _ZN6S396C23v40Ev
  virtual void  v41(); // _ZN6S396C23v41Ev
  ~S396C2(); // tgen
  S396C2(); // tgen
};
//SIG(-1 S396C2) C1{ BC2{ BC3{ BC4{ m Fi}} vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 FC5{ m Fp} Fp} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 FC6{ m Fi[2]}}


void  S396C2 ::v31(){vfunc_called(this, "_ZN6S396C23v31Ev");}
void  S396C2 ::v32(){vfunc_called(this, "_ZN6S396C23v32Ev");}
void  S396C2 ::v33(){vfunc_called(this, "_ZN6S396C23v33Ev");}
void  S396C2 ::v34(){vfunc_called(this, "_ZN6S396C23v34Ev");}
void  S396C2 ::v35(){vfunc_called(this, "_ZN6S396C23v35Ev");}
void  S396C2 ::v36(){vfunc_called(this, "_ZN6S396C23v36Ev");}
void  S396C2 ::v37(){vfunc_called(this, "_ZN6S396C23v37Ev");}
void  S396C2 ::v38(){vfunc_called(this, "_ZN6S396C23v38Ev");}
void  S396C2 ::v39(){vfunc_called(this, "_ZN6S396C23v39Ev");}
void  S396C2 ::v40(){vfunc_called(this, "_ZN6S396C23v40Ev");}
void  S396C2 ::v41(){vfunc_called(this, "_ZN6S396C23v41Ev");}
S396C2 ::~S396C2(){ note_dtor("S396C2", this);} // tgen
S396C2 ::S396C2(){ note_ctor("S396C2", this);} // tgen

static void Test_S396C2()
{
  extern Class_Descriptor cd_S396C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S396C2, buf);
    S396C2 *dp, &lv = *(dp=new (buf) S396C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S396C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S396C2)");
    check_base_class_offset(lv, (S3423C8_nt*)(S396C4*)(S396C3*), ABISELECT(8,4), "S396C2");
    check_base_class_offset(lv, (S396C4*)(S396C3*), ABISELECT(8,4), "S396C2");
    check_base_class_offset(lv, (S396C3*), 0, "S396C2");
    check_field_offset(lv, s396c2f0, ABISELECT(32,16), "S396C2.s396c2f0");
    test_class_info(&lv, &cd_S396C2);
    dp->~S396C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS396C2(Test_S396C2, "S396C2", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN6S396C2C1Ev();
extern void _ZN6S396C2D1Ev();
Name_Map name_map_S396C2[] = {
  NSPAIR(_ZN6S396C2C1Ev),
  NSPAIR(_ZN6S396C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S396C4;
extern VTBL_ENTRY _ZTI6S396C4[];
extern Class_Descriptor cd_S396C3;
extern VTBL_ENTRY _ZTI6S396C3[];
extern  VTBL_ENTRY _ZTV6S396C3[];
static Base_Class bases_S396C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S396C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S396C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S396C2[];
extern void _ZN6S396C2D1Ev();
extern void _ZN6S396C2D0Ev();
extern void _ZN6S396C32v8Ev();
extern void _ZN6S396C32v9Ev();
extern void _ZN6S396C33v10Ev();
extern void _ZN6S396C33v11Ev();
extern void _ZN6S396C33v12Ev();
extern void _ZN6S396C33v13Ev();
extern void _ZN6S396C33v14Ev();
extern void _ZN6S396C33v15Ev();
extern void _ZN6S396C33v16Ev();
extern void _ZN6S396C33v17Ev();
extern void _ZN6S396C33v18Ev();
extern void _ZN6S396C33v19Ev();
extern void _ZN6S396C33v20Ev();
extern void _ZN6S396C33v21Ev();
extern void _ZN6S396C33v22Ev();
extern void _ZN6S396C33v23Ev();
extern void _ZN6S396C33v24Ev();
extern void _ZN6S396C33v25Ev();
extern void _ZN6S396C33v26Ev();
extern void _ZN6S396C33v27Ev();
extern void _ZN6S396C33v28Ev();
extern void _ZN6S396C33v29Ev();
extern void _ZN6S396C33v30Ev();
extern void _ZN6S396C23v31Ev();
extern void _ZN6S396C23v32Ev();
extern void _ZN6S396C23v33Ev();
extern void _ZN6S396C23v34Ev();
extern void _ZN6S396C23v35Ev();
extern void _ZN6S396C23v36Ev();
extern void _ZN6S396C23v37Ev();
extern void _ZN6S396C23v38Ev();
extern void _ZN6S396C23v39Ev();
extern void _ZN6S396C23v40Ev();
extern void _ZN6S396C23v41Ev();
static  VTBL_ENTRY vtc_S396C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S396C2[0]),
  (VTBL_ENTRY)&_ZN6S396C2D1Ev,
  (VTBL_ENTRY)&_ZN6S396C2D0Ev,
  (VTBL_ENTRY)&_ZN6S396C32v8Ev,
  (VTBL_ENTRY)&_ZN6S396C32v9Ev,
  (VTBL_ENTRY)&_ZN6S396C33v10Ev,
  (VTBL_ENTRY)&_ZN6S396C33v11Ev,
  (VTBL_ENTRY)&_ZN6S396C33v12Ev,
  (VTBL_ENTRY)&_ZN6S396C33v13Ev,
  (VTBL_ENTRY)&_ZN6S396C33v14Ev,
  (VTBL_ENTRY)&_ZN6S396C33v15Ev,
  (VTBL_ENTRY)&_ZN6S396C33v16Ev,
  (VTBL_ENTRY)&_ZN6S396C33v17Ev,
  (VTBL_ENTRY)&_ZN6S396C33v18Ev,
  (VTBL_ENTRY)&_ZN6S396C33v19Ev,
  (VTBL_ENTRY)&_ZN6S396C33v20Ev,
  (VTBL_ENTRY)&_ZN6S396C33v21Ev,
  (VTBL_ENTRY)&_ZN6S396C33v22Ev,
  (VTBL_ENTRY)&_ZN6S396C33v23Ev,
  (VTBL_ENTRY)&_ZN6S396C33v24Ev,
  (VTBL_ENTRY)&_ZN6S396C33v25Ev,
  (VTBL_ENTRY)&_ZN6S396C33v26Ev,
  (VTBL_ENTRY)&_ZN6S396C33v27Ev,
  (VTBL_ENTRY)&_ZN6S396C33v28Ev,
  (VTBL_ENTRY)&_ZN6S396C33v29Ev,
  (VTBL_ENTRY)&_ZN6S396C33v30Ev,
  (VTBL_ENTRY)&_ZN6S396C23v31Ev,
  (VTBL_ENTRY)&_ZN6S396C23v32Ev,
  (VTBL_ENTRY)&_ZN6S396C23v33Ev,
  (VTBL_ENTRY)&_ZN6S396C23v34Ev,
  (VTBL_ENTRY)&_ZN6S396C23v35Ev,
  (VTBL_ENTRY)&_ZN6S396C23v36Ev,
  (VTBL_ENTRY)&_ZN6S396C23v37Ev,
  (VTBL_ENTRY)&_ZN6S396C23v38Ev,
  (VTBL_ENTRY)&_ZN6S396C23v39Ev,
  (VTBL_ENTRY)&_ZN6S396C23v40Ev,
  (VTBL_ENTRY)&_ZN6S396C23v41Ev,
};
extern VTBL_ENTRY _ZTI6S396C2[];
extern  VTBL_ENTRY _ZTV6S396C2[];
Class_Descriptor cd_S396C2 = {  "S396C2", // class name
  bases_S396C2, 3,
  &(vtc_S396C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI6S396C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S396C2),38, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S396C1  : S396C2 {
  void *s396c1f0[2];
  int s396c1f1;
  ::S3423C4_nt s396c1f2;
  virtual void  v1(); // _ZN6S396C12v1Ev
  virtual void  v2(); // _ZN6S396C12v2Ev
  virtual void  v3(); // _ZN6S396C12v3Ev
  virtual void  v4(); // _ZN6S396C12v4Ev
  virtual void  v5(); // _ZN6S396C12v5Ev
  virtual void  v6(); // _ZN6S396C12v6Ev
  virtual void  v7(); // _ZN6S396C12v7Ev
  ~S396C1(); // tgen
  S396C1(); // tgen
};
//SIG(1 S396C1) C1{ BC2{ BC3{ BC4{ BC5{ m Fi}} vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 FC6{ m Fp} Fp} v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 FC7{ m Fi[2]}} v1 v2 v3 v4 v5 v6 v7 Fp[2] Fi FC7}


void  S396C1 ::v1(){vfunc_called(this, "_ZN6S396C12v1Ev");}
void  S396C1 ::v2(){vfunc_called(this, "_ZN6S396C12v2Ev");}
void  S396C1 ::v3(){vfunc_called(this, "_ZN6S396C12v3Ev");}
void  S396C1 ::v4(){vfunc_called(this, "_ZN6S396C12v4Ev");}
void  S396C1 ::v5(){vfunc_called(this, "_ZN6S396C12v5Ev");}
void  S396C1 ::v6(){vfunc_called(this, "_ZN6S396C12v6Ev");}
void  S396C1 ::v7(){vfunc_called(this, "_ZN6S396C12v7Ev");}
S396C1 ::~S396C1(){ note_dtor("S396C1", this);} // tgen
S396C1 ::S396C1(){ note_ctor("S396C1", this);} // tgen

static void Test_S396C1()
{
  extern Class_Descriptor cd_S396C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S396C1, buf);
    S396C1 *dp, &lv = *(dp=new (buf) S396C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S396C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S396C1)");
    check_base_class_offset(lv, (S3423C8_nt*)(S396C4*)(S396C3*)(S396C2*), ABISELECT(8,4), "S396C1");
    check_base_class_offset(lv, (S396C4*)(S396C3*)(S396C2*), ABISELECT(8,4), "S396C1");
    check_base_class_offset(lv, (S396C3*)(S396C2*), 0, "S396C1");
    check_base_class_offset(lv, (S396C2*), 0, "S396C1");
    check_field_offset(lv, s396c1f0, ABISELECT(40,24), "S396C1.s396c1f0");
    check_field_offset(lv, s396c1f1, ABISELECT(56,32), "S396C1.s396c1f1");
    check_field_offset(lv, s396c1f2, ABISELECT(60,36), "S396C1.s396c1f2");
    test_class_info(&lv, &cd_S396C1);
    dp->~S396C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS396C1(Test_S396C1, "S396C1", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN6S396C1C1Ev();
extern void _ZN6S396C1D1Ev();
Name_Map name_map_S396C1[] = {
  NSPAIR(_ZN6S396C1C1Ev),
  NSPAIR(_ZN6S396C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S396C4;
extern VTBL_ENTRY _ZTI6S396C4[];
extern Class_Descriptor cd_S396C3;
extern VTBL_ENTRY _ZTI6S396C3[];
extern  VTBL_ENTRY _ZTV6S396C3[];
extern Class_Descriptor cd_S396C2;
extern VTBL_ENTRY _ZTI6S396C2[];
extern  VTBL_ENTRY _ZTV6S396C2[];
static Base_Class bases_S396C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S396C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S396C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S396C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S396C1[];
extern void _ZN6S396C1D1Ev();
extern void _ZN6S396C1D0Ev();
extern void _ZN6S396C32v8Ev();
extern void _ZN6S396C32v9Ev();
extern void _ZN6S396C33v10Ev();
extern void _ZN6S396C33v11Ev();
extern void _ZN6S396C33v12Ev();
extern void _ZN6S396C33v13Ev();
extern void _ZN6S396C33v14Ev();
extern void _ZN6S396C33v15Ev();
extern void _ZN6S396C33v16Ev();
extern void _ZN6S396C33v17Ev();
extern void _ZN6S396C33v18Ev();
extern void _ZN6S396C33v19Ev();
extern void _ZN6S396C33v20Ev();
extern void _ZN6S396C33v21Ev();
extern void _ZN6S396C33v22Ev();
extern void _ZN6S396C33v23Ev();
extern void _ZN6S396C33v24Ev();
extern void _ZN6S396C33v25Ev();
extern void _ZN6S396C33v26Ev();
extern void _ZN6S396C33v27Ev();
extern void _ZN6S396C33v28Ev();
extern void _ZN6S396C33v29Ev();
extern void _ZN6S396C33v30Ev();
extern void _ZN6S396C23v31Ev();
extern void _ZN6S396C23v32Ev();
extern void _ZN6S396C23v33Ev();
extern void _ZN6S396C23v34Ev();
extern void _ZN6S396C23v35Ev();
extern void _ZN6S396C23v36Ev();
extern void _ZN6S396C23v37Ev();
extern void _ZN6S396C23v38Ev();
extern void _ZN6S396C23v39Ev();
extern void _ZN6S396C23v40Ev();
extern void _ZN6S396C23v41Ev();
extern void _ZN6S396C12v1Ev();
extern void _ZN6S396C12v2Ev();
extern void _ZN6S396C12v3Ev();
extern void _ZN6S396C12v4Ev();
extern void _ZN6S396C12v5Ev();
extern void _ZN6S396C12v6Ev();
extern void _ZN6S396C12v7Ev();
static  VTBL_ENTRY vtc_S396C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S396C1[0]),
  (VTBL_ENTRY)&_ZN6S396C1D1Ev,
  (VTBL_ENTRY)&_ZN6S396C1D0Ev,
  (VTBL_ENTRY)&_ZN6S396C32v8Ev,
  (VTBL_ENTRY)&_ZN6S396C32v9Ev,
  (VTBL_ENTRY)&_ZN6S396C33v10Ev,
  (VTBL_ENTRY)&_ZN6S396C33v11Ev,
  (VTBL_ENTRY)&_ZN6S396C33v12Ev,
  (VTBL_ENTRY)&_ZN6S396C33v13Ev,
  (VTBL_ENTRY)&_ZN6S396C33v14Ev,
  (VTBL_ENTRY)&_ZN6S396C33v15Ev,
  (VTBL_ENTRY)&_ZN6S396C33v16Ev,
  (VTBL_ENTRY)&_ZN6S396C33v17Ev,
  (VTBL_ENTRY)&_ZN6S396C33v18Ev,
  (VTBL_ENTRY)&_ZN6S396C33v19Ev,
  (VTBL_ENTRY)&_ZN6S396C33v20Ev,
  (VTBL_ENTRY)&_ZN6S396C33v21Ev,
  (VTBL_ENTRY)&_ZN6S396C33v22Ev,
  (VTBL_ENTRY)&_ZN6S396C33v23Ev,
  (VTBL_ENTRY)&_ZN6S396C33v24Ev,
  (VTBL_ENTRY)&_ZN6S396C33v25Ev,
  (VTBL_ENTRY)&_ZN6S396C33v26Ev,
  (VTBL_ENTRY)&_ZN6S396C33v27Ev,
  (VTBL_ENTRY)&_ZN6S396C33v28Ev,
  (VTBL_ENTRY)&_ZN6S396C33v29Ev,
  (VTBL_ENTRY)&_ZN6S396C33v30Ev,
  (VTBL_ENTRY)&_ZN6S396C23v31Ev,
  (VTBL_ENTRY)&_ZN6S396C23v32Ev,
  (VTBL_ENTRY)&_ZN6S396C23v33Ev,
  (VTBL_ENTRY)&_ZN6S396C23v34Ev,
  (VTBL_ENTRY)&_ZN6S396C23v35Ev,
  (VTBL_ENTRY)&_ZN6S396C23v36Ev,
  (VTBL_ENTRY)&_ZN6S396C23v37Ev,
  (VTBL_ENTRY)&_ZN6S396C23v38Ev,
  (VTBL_ENTRY)&_ZN6S396C23v39Ev,
  (VTBL_ENTRY)&_ZN6S396C23v40Ev,
  (VTBL_ENTRY)&_ZN6S396C23v41Ev,
  (VTBL_ENTRY)&_ZN6S396C12v1Ev,
  (VTBL_ENTRY)&_ZN6S396C12v2Ev,
  (VTBL_ENTRY)&_ZN6S396C12v3Ev,
  (VTBL_ENTRY)&_ZN6S396C12v4Ev,
  (VTBL_ENTRY)&_ZN6S396C12v5Ev,
  (VTBL_ENTRY)&_ZN6S396C12v6Ev,
  (VTBL_ENTRY)&_ZN6S396C12v7Ev,
};
extern VTBL_ENTRY _ZTI6S396C1[];
extern  VTBL_ENTRY _ZTV6S396C1[];
Class_Descriptor cd_S396C1 = {  "S396C1", // class name
  bases_S396C1, 4,
  &(vtc_S396C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI6S396C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S396C1),45, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19323C3  {
  long double s19323c3f0[6];
  void *s19323c3f1[6];
  long s19323c3f2[6];
  short s19323c3f3;
  char s19323c3f4;
  void *s19323c3f5;
  virtual void  v3(); // _ZN8S19323C32v3Ev
  ~S19323C3(); // tgen
  S19323C3(); // tgen
};
//SIG(-1 S19323C3) C1{ v1 FD[6] Fp[6] Fl[6] Fs Fc Fp}


void  S19323C3 ::v3(){vfunc_called(this, "_ZN8S19323C32v3Ev");}
S19323C3 ::~S19323C3(){ note_dtor("S19323C3", this);} // tgen
S19323C3 ::S19323C3(){ note_ctor("S19323C3", this);} // tgen

static void Test_S19323C3()
{
  extern Class_Descriptor cd_S19323C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,34)];
    init_test(&cd_S19323C3, buf);
    S19323C3 *dp, &lv = *(dp=new (buf) S19323C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,132), "sizeof(S19323C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19323C3)");
    check_field_offset(lv, s19323c3f0, ABISELECT(16,4), "S19323C3.s19323c3f0");
    check_field_offset(lv, s19323c3f1, ABISELECT(112,76), "S19323C3.s19323c3f1");
    check_field_offset(lv, s19323c3f2, ABISELECT(160,100), "S19323C3.s19323c3f2");
    check_field_offset(lv, s19323c3f3, ABISELECT(208,124), "S19323C3.s19323c3f3");
    check_field_offset(lv, s19323c3f4, ABISELECT(210,126), "S19323C3.s19323c3f4");
    check_field_offset(lv, s19323c3f5, ABISELECT(216,128), "S19323C3.s19323c3f5");
    test_class_info(&lv, &cd_S19323C3);
    dp->~S19323C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19323C3(Test_S19323C3, "S19323C3", ABISELECT(224,132));

#else // __cplusplus

extern void _ZN8S19323C3C1Ev();
extern void _ZN8S19323C3D1Ev();
Name_Map name_map_S19323C3[] = {
  NSPAIR(_ZN8S19323C3C1Ev),
  NSPAIR(_ZN8S19323C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19323C3[];
extern void _ZN8S19323C32v3Ev();
static  VTBL_ENTRY vtc_S19323C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19323C3[0]),
  (VTBL_ENTRY)&_ZN8S19323C32v3Ev,
};
extern VTBL_ENTRY _ZTI8S19323C3[];
extern  VTBL_ENTRY _ZTV8S19323C3[];
Class_Descriptor cd_S19323C3 = {  "S19323C3", // class name
  0,0,//no base classes
  &(vtc_S19323C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,132), // object size
  NSPAIRA(_ZTI8S19323C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19323C3),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19323C5  {
  void *s19323c5f0;
  int s19323c5f1[2];
  void *s19323c5f2;
  int s19323c5f3;
  virtual void  v7(); // _ZN8S19323C52v7Ev
  ~S19323C5(); // tgen
  S19323C5(); // tgen
};
//SIG(-1 S19323C5) C1{ v1 Fp Fi[2] Fp Fi}


void  S19323C5 ::v7(){vfunc_called(this, "_ZN8S19323C52v7Ev");}
S19323C5 ::~S19323C5(){ note_dtor("S19323C5", this);} // tgen
S19323C5 ::S19323C5(){ note_ctor("S19323C5", this);} // tgen

static void Test_S19323C5()
{
  extern Class_Descriptor cd_S19323C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S19323C5, buf);
    S19323C5 *dp, &lv = *(dp=new (buf) S19323C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S19323C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19323C5)");
    check_field_offset(lv, s19323c5f0, ABISELECT(8,4), "S19323C5.s19323c5f0");
    check_field_offset(lv, s19323c5f1, ABISELECT(16,8), "S19323C5.s19323c5f1");
    check_field_offset(lv, s19323c5f2, ABISELECT(24,16), "S19323C5.s19323c5f2");
    check_field_offset(lv, s19323c5f3, ABISELECT(32,20), "S19323C5.s19323c5f3");
    test_class_info(&lv, &cd_S19323C5);
    dp->~S19323C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19323C5(Test_S19323C5, "S19323C5", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S19323C5C1Ev();
extern void _ZN8S19323C5D1Ev();
Name_Map name_map_S19323C5[] = {
  NSPAIR(_ZN8S19323C5C1Ev),
  NSPAIR(_ZN8S19323C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19323C5[];
extern void _ZN8S19323C52v7Ev();
static  VTBL_ENTRY vtc_S19323C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19323C5[0]),
  (VTBL_ENTRY)&_ZN8S19323C52v7Ev,
};
extern VTBL_ENTRY _ZTI8S19323C5[];
extern  VTBL_ENTRY _ZTV8S19323C5[];
Class_Descriptor cd_S19323C5 = {  "S19323C5", // class name
  0,0,//no base classes
  &(vtc_S19323C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S19323C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19323C5),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19323C6  {
  short s19323c6f0:12;
  int s19323c6f1;
  char s19323c6f2;
  virtual void  v8(); // _ZN8S19323C62v8Ev
  virtual void  v9(); // _ZN8S19323C62v9Ev
  ~S19323C6(); // tgen
  S19323C6(); // tgen
};
//SIG(-1 S19323C6) C1{ v1 v2 Fs:12 Fi Fc}


void  S19323C6 ::v8(){vfunc_called(this, "_ZN8S19323C62v8Ev");}
void  S19323C6 ::v9(){vfunc_called(this, "_ZN8S19323C62v9Ev");}
S19323C6 ::~S19323C6(){ note_dtor("S19323C6", this);} // tgen
S19323C6 ::S19323C6(){ note_ctor("S19323C6", this);} // tgen

static void Test_S19323C6()
{
  extern Class_Descriptor cd_S19323C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19323C6, buf);
    S19323C6 *dp, &lv = *(dp=new (buf) S19323C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19323C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19323C6)");
    set_bf_and_test(lv, s19323c6f0, ABISELECT(8,4), 0, 12, 1, "S19323C6");
    set_bf_and_test(lv, s19323c6f0, ABISELECT(8,4), 0, 12, hide_sll(1LL<<11), "S19323C6");
    check_field_offset(lv, s19323c6f1, ABISELECT(12,8), "S19323C6.s19323c6f1");
    check_field_offset(lv, s19323c6f2, ABISELECT(16,12), "S19323C6.s19323c6f2");
    test_class_info(&lv, &cd_S19323C6);
    dp->~S19323C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19323C6(Test_S19323C6, "S19323C6", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19323C6C1Ev();
extern void _ZN8S19323C6D1Ev();
Name_Map name_map_S19323C6[] = {
  NSPAIR(_ZN8S19323C6C1Ev),
  NSPAIR(_ZN8S19323C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19323C6[];
extern void _ZN8S19323C62v8Ev();
extern void _ZN8S19323C62v9Ev();
static  VTBL_ENTRY vtc_S19323C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19323C6[0]),
  (VTBL_ENTRY)&_ZN8S19323C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19323C62v9Ev,
};
extern VTBL_ENTRY _ZTI8S19323C6[];
extern  VTBL_ENTRY _ZTV8S19323C6[];
Class_Descriptor cd_S19323C6 = {  "S19323C6", // class name
  0,0,//no base classes
  &(vtc_S19323C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19323C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19323C6),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19323C7  : S19323C3 , S19323C6 {
  long double s19323c7f0;
  __tsi64 s19323c7f1;
  ::S19323C6 s19323c7f2;
  __tsi64 s19323c7f3[2];
  void *s19323c7f4[3];
  int s19323c7f5;
  virtual void  v10(); // _ZN8S19323C73v10Ev
  ~S19323C7(); // tgen
  S19323C7(); // tgen
};
//SIG(-1 S19323C7) C1{ BC2{ v2 FD[6] Fp[6] Fl[6] Fs Fc Fp} BC3{ v3 v4 Fs:12 Fi Fc} v1 FD FL FC3 FL[2] Fp[3] Fi}


void  S19323C7 ::v10(){vfunc_called(this, "_ZN8S19323C73v10Ev");}
S19323C7 ::~S19323C7(){ note_dtor("S19323C7", this);} // tgen
S19323C7 ::S19323C7(){ note_ctor("S19323C7", this);} // tgen

static void Test_S19323C7()
{
  extern Class_Descriptor cd_S19323C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,55)];
    init_test(&cd_S19323C7, buf);
    S19323C7 *dp, &lv = *(dp=new (buf) S19323C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,216), "sizeof(S19323C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19323C7)");
    check_base_class_offset(lv, (S19323C3*), 0, "S19323C7");
    check_base_class_offset(lv, (S19323C6*), ABISELECT(224,132), "S19323C7");
    check_field_offset(lv, s19323c7f0, ABISELECT(256,148), "S19323C7.s19323c7f0");
    check_field_offset(lv, s19323c7f1, ABISELECT(272,160), "S19323C7.s19323c7f1");
    check_field_offset(lv, s19323c7f2, ABISELECT(280,168), "S19323C7.s19323c7f2");
    check_field_offset(lv, s19323c7f3, ABISELECT(304,184), "S19323C7.s19323c7f3");
    check_field_offset(lv, s19323c7f4, ABISELECT(320,200), "S19323C7.s19323c7f4");
    check_field_offset(lv, s19323c7f5, ABISELECT(344,212), "S19323C7.s19323c7f5");
    test_class_info(&lv, &cd_S19323C7);
    dp->~S19323C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19323C7(Test_S19323C7, "S19323C7", ABISELECT(352,216));

#else // __cplusplus

extern void _ZN8S19323C7C1Ev();
extern void _ZN8S19323C7D1Ev();
Name_Map name_map_S19323C7[] = {
  NSPAIR(_ZN8S19323C7C1Ev),
  NSPAIR(_ZN8S19323C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19323C3;
extern VTBL_ENTRY _ZTI8S19323C3[];
extern  VTBL_ENTRY _ZTV8S19323C3[];
extern Class_Descriptor cd_S19323C6;
extern VTBL_ENTRY _ZTI8S19323C6[];
extern  VTBL_ENTRY _ZTV8S19323C6[];
static Base_Class bases_S19323C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19323C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19323C6,    ABISELECT(224,132), //bcp->offset
    4, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19323C7[];
extern void _ZN8S19323C32v3Ev();
extern void _ZN8S19323C73v10Ev();
extern void _ZN8S19323C62v8Ev();
extern void _ZN8S19323C62v9Ev();
static  VTBL_ENTRY vtc_S19323C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19323C7[0]),
  (VTBL_ENTRY)&_ZN8S19323C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19323C73v10Ev,
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S19323C7[0]),
  (VTBL_ENTRY)&_ZN8S19323C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19323C62v9Ev,
};
extern VTBL_ENTRY _ZTI8S19323C7[];
extern  VTBL_ENTRY _ZTV8S19323C7[];
Class_Descriptor cd_S19323C7 = {  "S19323C7", // class name
  bases_S19323C7, 2,
  &(vtc_S19323C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,216), // object size
  NSPAIRA(_ZTI8S19323C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19323C7),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19323C4  : virtual S19323C5 , virtual S19323C3 , virtual S19323C6 , virtual S19323C7 {
  int s19323c4f0;
  ::S19323C3 s19323c4f1;
  int s19323c4f2;
  short s19323c4f3:2;
  void *s19323c4f4;
  int s19323c4f5;
  virtual  ~S19323C4(); // _ZN8S19323C4D2Ev
  S19323C4(); // tgen
};
//SIG(-1 S19323C4) C1{ VBC2{ v1 Fp Fi[2] Fp Fi} VBC3{ v2 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC4{ v3 v4 Fs:12 Fi Fc} VBC5{ BC3 BC4 v5 FD FL FC4 FL[2] Fp[3] Fi} vd Fi FC3 Fi Fs:2 Fp Fi}


 S19323C4 ::~S19323C4(){ note_dtor("S19323C4", this);}
S19323C4 ::S19323C4(){ note_ctor("S19323C4", this);} // tgen

static void Test_S19323C4()
{
  extern Class_Descriptor cd_S19323C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(58,137)];
    init_test(&cd_S19323C4, buf);
    S19323C4 *dp, &lv = *(dp=new (buf) S19323C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(912,544), "sizeof(S19323C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19323C4)");
    check_base_class_offset(lv, (S19323C5*), ABISELECT(264,156), "S19323C4");
    /*is_ambiguous_... S19323C4::S19323C3 */ AMB_check_base_class_offset(lv, (S19323C3*), ABISELECT(304,180), "S19323C4");
    /*is_ambiguous_... S19323C4::S19323C6 */ AMB_check_base_class_offset(lv, (S19323C6*), ABISELECT(528,312), "S19323C4");
    check_base_class_offset(lv, (S19323C3*)(S19323C7*), ABISELECT(560,328), "S19323C4");
    check_base_class_offset(lv, (S19323C6*)(S19323C7*), ABISELECT(784,460), "S19323C4");
    check_base_class_offset(lv, (S19323C7*), ABISELECT(560,328), "S19323C4");
    check_field_offset(lv, s19323c4f0, ABISELECT(8,4), "S19323C4.s19323c4f0");
    check_field_offset(lv, s19323c4f1, ABISELECT(16,8), "S19323C4.s19323c4f1");
    check_field_offset(lv, s19323c4f2, ABISELECT(240,140), "S19323C4.s19323c4f2");
    set_bf_and_test(lv, s19323c4f3, ABISELECT(244,144), 0, 2, 1, "S19323C4");
    set_bf_and_test(lv, s19323c4f3, ABISELECT(244,144), 0, 2, hide_sll(1LL<<1), "S19323C4");
    check_field_offset(lv, s19323c4f4, ABISELECT(248,148), "S19323C4.s19323c4f4");
    check_field_offset(lv, s19323c4f5, ABISELECT(256,152), "S19323C4.s19323c4f5");
    test_class_info(&lv, &cd_S19323C4);
    dp->~S19323C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19323C4(Test_S19323C4, "S19323C4", ABISELECT(912,544));

#else // __cplusplus

extern void _ZN8S19323C4C1Ev();
extern void _ZN8S19323C4D2Ev();
Name_Map name_map_S19323C4[] = {
  NSPAIR(_ZN8S19323C4C1Ev),
  NSPAIR(_ZN8S19323C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19323C5;
extern VTBL_ENTRY _ZTI8S19323C5[];
extern  VTBL_ENTRY _ZTV8S19323C5[];
extern Class_Descriptor cd_S19323C3;
extern VTBL_ENTRY _ZTI8S19323C3[];
extern  VTBL_ENTRY _ZTV8S19323C3[];
extern Class_Descriptor cd_S19323C6;
extern VTBL_ENTRY _ZTI8S19323C6[];
extern  VTBL_ENTRY _ZTV8S19323C6[];
extern Class_Descriptor cd_S19323C3;
extern VTBL_ENTRY _ZTI8S19323C3[];
extern  VTBL_ENTRY _ZTV8S19323C3[];
extern Class_Descriptor cd_S19323C6;
extern VTBL_ENTRY _ZTI8S19323C6[];
extern  VTBL_ENTRY _ZTV8S19323C6[];
extern Class_Descriptor cd_S19323C7;
extern VTBL_ENTRY _ZTI8S19323C7[];
extern  VTBL_ENTRY _ZTV8S19323C7[];
static Base_Class bases_S19323C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19323C5,    ABISELECT(264,156), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19323C3,    ABISELECT(304,180), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19323C6,    ABISELECT(528,312), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19323C3,    ABISELECT(560,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19323C6,    ABISELECT(784,460), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19323C7,    ABISELECT(560,328), //bcp->offset
    22, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19323C4[];
extern void _ZN8S19323C4D1Ev();
extern void _ZN8S19323C4D0Ev();
extern void _ZN8S19323C52v7Ev();
extern void _ZN8S19323C32v3Ev();
extern void _ZN8S19323C62v8Ev();
extern void _ZN8S19323C62v9Ev();
extern void _ZN8S19323C32v3Ev();
extern void _ZN8S19323C73v10Ev();
extern void _ZN8S19323C62v8Ev();
extern void _ZN8S19323C62v9Ev();
static  VTBL_ENTRY vtc_S19323C4[] = {
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  0,
  (VTBL_ENTRY)&(_ZTI8S19323C4[0]),
  (VTBL_ENTRY)&_ZN8S19323C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19323C4D0Ev,
  0,
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI8S19323C4[0]),
  (VTBL_ENTRY)&_ZN8S19323C52v7Ev,
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI8S19323C4[0]),
  (VTBL_ENTRY)&_ZN8S19323C32v3Ev,
  0,
  0,
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI8S19323C4[0]),
  (VTBL_ENTRY)&_ZN8S19323C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19323C62v9Ev,
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI8S19323C4[0]),
  (VTBL_ENTRY)&_ZN8S19323C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19323C73v10Ev,
  ABISELECT(-784,-460),
  (VTBL_ENTRY)&(_ZTI8S19323C4[0]),
  (VTBL_ENTRY)&_ZN8S19323C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19323C62v9Ev,
};
extern VTBL_ENTRY _ZTV8S19323C4[];
static  VTT_ENTRY vtt_S19323C4[] = {
  {&(_ZTV8S19323C4[6]),  6,34},
  {&(_ZTV8S19323C4[11]),  11,34},
  {&(_ZTV8S19323C4[15]),  15,34},
  {&(_ZTV8S19323C4[20]),  20,34},
  {&(_ZTV8S19323C4[28]),  28,34},
  {&(_ZTV8S19323C4[32]),  32,34},
};
extern VTBL_ENTRY _ZTI8S19323C4[];
extern  VTBL_ENTRY _ZTV8S19323C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19323C4[];
Class_Descriptor cd_S19323C4 = {  "S19323C4", // class name
  bases_S19323C4, 6,
  &(vtc_S19323C4[0]), // expected_vtbl_contents
  &(vtt_S19323C4[0]), // expected_vtt_contents
  ABISELECT(912,544), // object size
  NSPAIRA(_ZTI8S19323C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19323C4),34, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19323C4),6, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19323C2  : S19323C3 {
  __tsi64 s19323c2f0;
  ::S19323C4 s19323c2f1;
  virtual void  v4(); // _ZN8S19323C22v4Ev
  virtual void  v5(); // _ZN8S19323C22v5Ev
  ~S19323C2(); // tgen
  S19323C2(); // tgen
};
//SIG(-1 S19323C2) C1{ BC2{ v3 FD[6] Fp[6] Fl[6] Fs Fc Fp} v1 v2 FL FC3{ VBC4{ v4 Fp Fi[2] Fp Fi} VBC2 VBC5{ v5 v6 Fs:12 Fi Fc} VBC6{ BC2 BC5 v7 FD FL FC5 FL[2] Fp[3] Fi} vd Fi FC2 Fi Fs:2 Fp Fi}}


void  S19323C2 ::v4(){vfunc_called(this, "_ZN8S19323C22v4Ev");}
void  S19323C2 ::v5(){vfunc_called(this, "_ZN8S19323C22v5Ev");}
S19323C2 ::~S19323C2(){ note_dtor("S19323C2", this);} // tgen
S19323C2 ::S19323C2(){ note_ctor("S19323C2", this);} // tgen

static void Test_S19323C2()
{
  extern Class_Descriptor cd_S19323C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(73,172)];
    init_test(&cd_S19323C2, buf);
    S19323C2 *dp, &lv = *(dp=new (buf) S19323C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1152,684), "sizeof(S19323C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19323C2)");
    check_base_class_offset(lv, (S19323C3*), 0, "S19323C2");
    check_field_offset(lv, s19323c2f0, ABISELECT(224,132), "S19323C2.s19323c2f0");
    check_field_offset(lv, s19323c2f1, ABISELECT(240,140), "S19323C2.s19323c2f1");
    test_class_info(&lv, &cd_S19323C2);
    dp->~S19323C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19323C2(Test_S19323C2, "S19323C2", ABISELECT(1152,684));

#else // __cplusplus

extern void _ZN8S19323C2C1Ev();
extern void _ZN8S19323C2D1Ev();
Name_Map name_map_S19323C2[] = {
  NSPAIR(_ZN8S19323C2C1Ev),
  NSPAIR(_ZN8S19323C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19323C3;
extern VTBL_ENTRY _ZTI8S19323C3[];
extern  VTBL_ENTRY _ZTV8S19323C3[];
static Base_Class bases_S19323C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19323C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19323C2[];
extern void _ZN8S19323C32v3Ev();
extern void _ZN8S19323C22v4Ev();
extern void _ZN8S19323C22v5Ev();
static  VTBL_ENTRY vtc_S19323C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19323C2[0]),
  (VTBL_ENTRY)&_ZN8S19323C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19323C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19323C22v5Ev,
};
extern VTBL_ENTRY _ZTI8S19323C2[];
extern  VTBL_ENTRY _ZTV8S19323C2[];
Class_Descriptor cd_S19323C2 = {  "S19323C2", // class name
  bases_S19323C2, 1,
  &(vtc_S19323C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1152,684), // object size
  NSPAIRA(_ZTI8S19323C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19323C2),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19323C1  : virtual S19323C2 {
  ::S7788C9 s19323c1f0;
  ::S19323C5 s19323c1f1;
  virtual void  v1(); // _ZN8S19323C12v1Ev
  virtual void  v2(); // _ZN8S19323C12v2Ev
  ~S19323C1(); // tgen
  S19323C1(); // tgen
};
//SIG(1 S19323C1) C1{ VBC2{ BC3{ v3 FD[6] Fp[6] Fl[6] Fs Fc Fp} v4 v5 FL FC4{ VBC5{ v12 Fp Fi[2] Fp Fi} VBC3 VBC6{ v13 v14 Fs:12 Fi Fc} VBC7{ BC3 BC6 v15 FD FL FC6 FL[2] Fp[3] Fi} vd Fi FC3 Fi Fs:2 Fp Fi}} v1 v2 FC8{ VBC9{ VBC10{ v7 Fp Fi[2] Fp Fi} VBC11{ v8 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC12{ v9 v10 Fs:12 Fi Fc} VBC13{ BC11 BC12 v11 FD FL FC12 FL[2] Fp[3] Fi} vd Fi FC11 Fi Fs:2 Fp Fi} BC12 vd v6 Fi[6] FL Fi Fp FD} FC5}


void  S19323C1 ::v1(){vfunc_called(this, "_ZN8S19323C12v1Ev");}
void  S19323C1 ::v2(){vfunc_called(this, "_ZN8S19323C12v2Ev");}
S19323C1 ::~S19323C1(){ note_dtor("S19323C1", this);} // tgen
S19323C1 ::S19323C1(){ note_ctor("S19323C1", this);} // tgen

static void Test_S19323C1()
{
  extern Class_Descriptor cd_S19323C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(140,332)];
    init_test(&cd_S19323C1, buf);
    S19323C1 *dp, &lv = *(dp=new (buf) S19323C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2224,1324), "sizeof(S19323C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19323C1)");
    check_base_class_offset(lv, (S19323C3*)(S19323C2*), ABISELECT(1072,640), "S19323C1");
    check_base_class_offset(lv, (S19323C2*), ABISELECT(1072,640), "S19323C1");
    check_field_offset(lv, s19323c1f0, ABISELECT(16,4), "S19323C1.s19323c1f0");
    check_field_offset(lv, s19323c1f1, ABISELECT(1024,616), "S19323C1.s19323c1f1");
    test_class_info(&lv, &cd_S19323C1);
    dp->~S19323C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19323C1(Test_S19323C1, "S19323C1", ABISELECT(2224,1324));

#else // __cplusplus

extern void _ZN8S19323C1C1Ev();
extern void _ZN8S19323C1D1Ev();
Name_Map name_map_S19323C1[] = {
  NSPAIR(_ZN8S19323C1C1Ev),
  NSPAIR(_ZN8S19323C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19323C3;
extern VTBL_ENTRY _ZTI8S19323C3[];
extern  VTBL_ENTRY _ZTV8S19323C3[];
extern Class_Descriptor cd_S19323C2;
extern VTBL_ENTRY _ZTI8S19323C2[];
extern  VTBL_ENTRY _ZTV8S19323C2[];
static Base_Class bases_S19323C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19323C3,    ABISELECT(1072,640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19323C2,    ABISELECT(1072,640), //bcp->offset
    5, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19323C1[];
extern void _ZN8S19323C12v1Ev();
extern void _ZN8S19323C12v2Ev();
extern void _ZN8S19323C32v3Ev();
extern void _ZN8S19323C22v4Ev();
extern void _ZN8S19323C22v5Ev();
static  VTBL_ENTRY vtc_S19323C1[] = {
  ABISELECT(1072,640),
  0,
  (VTBL_ENTRY)&(_ZTI8S19323C1[0]),
  (VTBL_ENTRY)&_ZN8S19323C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19323C12v2Ev,
  0,
  0,
  0,
  ABISELECT(-1072,-640),
  (VTBL_ENTRY)&(_ZTI8S19323C1[0]),
  (VTBL_ENTRY)&_ZN8S19323C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19323C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19323C22v5Ev,
};
extern VTBL_ENTRY _ZTV8S19323C1[];
static  VTT_ENTRY vtt_S19323C1[] = {
  {&(_ZTV8S19323C1[3]),  3,13},
  {&(_ZTV8S19323C1[10]),  10,13},
};
extern VTBL_ENTRY _ZTI8S19323C1[];
extern  VTBL_ENTRY _ZTV8S19323C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19323C1[];
Class_Descriptor cd_S19323C1 = {  "S19323C1", // class name
  bases_S19323C1, 2,
  &(vtc_S19323C1[0]), // expected_vtbl_contents
  &(vtt_S19323C1[0]), // expected_vtt_contents
  ABISELECT(2224,1324), // object size
  NSPAIRA(_ZTI8S19323C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19323C1),13, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19323C1),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6525C2  {
  long double s6525c2f0[6];
  void *s6525c2f1[6];
  long s6525c2f2[6];
  short s6525c2f3;
  char s6525c2f4;
  void *s6525c2f5;
  virtual void  v2(); // _ZN7S6525C22v2Ev
  ~S6525C2(); // tgen
  S6525C2(); // tgen
};
//SIG(-1 S6525C2) C1{ v1 FD[6] Fp[6] Fl[6] Fs Fc Fp}


void  S6525C2 ::v2(){vfunc_called(this, "_ZN7S6525C22v2Ev");}
S6525C2 ::~S6525C2(){ note_dtor("S6525C2", this);} // tgen
S6525C2 ::S6525C2(){ note_ctor("S6525C2", this);} // tgen

static void Test_S6525C2()
{
  extern Class_Descriptor cd_S6525C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,34)];
    init_test(&cd_S6525C2, buf);
    S6525C2 *dp, &lv = *(dp=new (buf) S6525C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,132), "sizeof(S6525C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6525C2)");
    check_field_offset(lv, s6525c2f0, ABISELECT(16,4), "S6525C2.s6525c2f0");
    check_field_offset(lv, s6525c2f1, ABISELECT(112,76), "S6525C2.s6525c2f1");
    check_field_offset(lv, s6525c2f2, ABISELECT(160,100), "S6525C2.s6525c2f2");
    check_field_offset(lv, s6525c2f3, ABISELECT(208,124), "S6525C2.s6525c2f3");
    check_field_offset(lv, s6525c2f4, ABISELECT(210,126), "S6525C2.s6525c2f4");
    check_field_offset(lv, s6525c2f5, ABISELECT(216,128), "S6525C2.s6525c2f5");
    test_class_info(&lv, &cd_S6525C2);
    dp->~S6525C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6525C2(Test_S6525C2, "S6525C2", ABISELECT(224,132));

#else // __cplusplus

extern void _ZN7S6525C2C1Ev();
extern void _ZN7S6525C2D1Ev();
Name_Map name_map_S6525C2[] = {
  NSPAIR(_ZN7S6525C2C1Ev),
  NSPAIR(_ZN7S6525C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6525C2[];
extern void _ZN7S6525C22v2Ev();
static  VTBL_ENTRY vtc_S6525C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C2[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
Class_Descriptor cd_S6525C2 = {  "S6525C2", // class name
  0,0,//no base classes
  &(vtc_S6525C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,132), // object size
  NSPAIRA(_ZTI7S6525C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6525C2),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6525C4  {
  short s6525c4f0:12;
  int s6525c4f1;
  char s6525c4f2;
  virtual void  v3(); // _ZN7S6525C42v3Ev
  virtual void  v4(); // _ZN7S6525C42v4Ev
  ~S6525C4(); // tgen
  S6525C4(); // tgen
};
//SIG(-1 S6525C4) C1{ v1 v2 Fs:12 Fi Fc}


void  S6525C4 ::v3(){vfunc_called(this, "_ZN7S6525C42v3Ev");}
void  S6525C4 ::v4(){vfunc_called(this, "_ZN7S6525C42v4Ev");}
S6525C4 ::~S6525C4(){ note_dtor("S6525C4", this);} // tgen
S6525C4 ::S6525C4(){ note_ctor("S6525C4", this);} // tgen

static void Test_S6525C4()
{
  extern Class_Descriptor cd_S6525C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S6525C4, buf);
    S6525C4 *dp, &lv = *(dp=new (buf) S6525C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S6525C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6525C4)");
    set_bf_and_test(lv, s6525c4f0, ABISELECT(8,4), 0, 12, 1, "S6525C4");
    set_bf_and_test(lv, s6525c4f0, ABISELECT(8,4), 0, 12, hide_sll(1LL<<11), "S6525C4");
    check_field_offset(lv, s6525c4f1, ABISELECT(12,8), "S6525C4.s6525c4f1");
    check_field_offset(lv, s6525c4f2, ABISELECT(16,12), "S6525C4.s6525c4f2");
    test_class_info(&lv, &cd_S6525C4);
    dp->~S6525C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6525C4(Test_S6525C4, "S6525C4", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S6525C4C1Ev();
extern void _ZN7S6525C4D1Ev();
Name_Map name_map_S6525C4[] = {
  NSPAIR(_ZN7S6525C4C1Ev),
  NSPAIR(_ZN7S6525C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6525C4[];
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY vtc_S6525C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C4[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
Class_Descriptor cd_S6525C4 = {  "S6525C4", // class name
  0,0,//no base classes
  &(vtc_S6525C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S6525C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6525C4),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6525C3  : S6525C2 , S6525C4 {
  long double s6525c3f0;
  __tsi64 s6525c3f1;
  ::S6525C4 s6525c3f2;
  __tsi64 s6525c3f3[2];
  void *s6525c3f4[3];
  int s6525c3f5;
  virtual void  v5(); // _ZN7S6525C32v5Ev
  ~S6525C3(); // tgen
  S6525C3(); // tgen
};
//SIG(-1 S6525C3) C1{ BC2{ v2 FD[6] Fp[6] Fl[6] Fs Fc Fp} BC3{ v3 v4 Fs:12 Fi Fc} v1 FD FL FC3 FL[2] Fp[3] Fi}


void  S6525C3 ::v5(){vfunc_called(this, "_ZN7S6525C32v5Ev");}
S6525C3 ::~S6525C3(){ note_dtor("S6525C3", this);} // tgen
S6525C3 ::S6525C3(){ note_ctor("S6525C3", this);} // tgen

static void Test_S6525C3()
{
  extern Class_Descriptor cd_S6525C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,55)];
    init_test(&cd_S6525C3, buf);
    S6525C3 *dp, &lv = *(dp=new (buf) S6525C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,216), "sizeof(S6525C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6525C3)");
    check_base_class_offset(lv, (S6525C2*), 0, "S6525C3");
    check_base_class_offset(lv, (S6525C4*), ABISELECT(224,132), "S6525C3");
    check_field_offset(lv, s6525c3f0, ABISELECT(256,148), "S6525C3.s6525c3f0");
    check_field_offset(lv, s6525c3f1, ABISELECT(272,160), "S6525C3.s6525c3f1");
    check_field_offset(lv, s6525c3f2, ABISELECT(280,168), "S6525C3.s6525c3f2");
    check_field_offset(lv, s6525c3f3, ABISELECT(304,184), "S6525C3.s6525c3f3");
    check_field_offset(lv, s6525c3f4, ABISELECT(320,200), "S6525C3.s6525c3f4");
    check_field_offset(lv, s6525c3f5, ABISELECT(344,212), "S6525C3.s6525c3f5");
    test_class_info(&lv, &cd_S6525C3);
    dp->~S6525C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6525C3(Test_S6525C3, "S6525C3", ABISELECT(352,216));

#else // __cplusplus

extern void _ZN7S6525C3C1Ev();
extern void _ZN7S6525C3D1Ev();
Name_Map name_map_S6525C3[] = {
  NSPAIR(_ZN7S6525C3C1Ev),
  NSPAIR(_ZN7S6525C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6525C2;
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
static Base_Class bases_S6525C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6525C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6525C4,    ABISELECT(224,132), //bcp->offset
    4, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6525C3[];
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C32v5Ev();
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY vtc_S6525C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C3[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6525C32v5Ev,
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI7S6525C3[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
extern VTBL_ENTRY _ZTI7S6525C3[];
extern  VTBL_ENTRY _ZTV7S6525C3[];
Class_Descriptor cd_S6525C3 = {  "S6525C3", // class name
  bases_S6525C3, 2,
  &(vtc_S6525C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,216), // object size
  NSPAIRA(_ZTI7S6525C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6525C3),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6525C6  {
  void *s6525c6f0;
  int s6525c6f1[2];
  void *s6525c6f2;
  int s6525c6f3;
  virtual void  v6(); // _ZN7S6525C62v6Ev
  ~S6525C6(); // tgen
  S6525C6(); // tgen
};
//SIG(-1 S6525C6) C1{ v1 Fp Fi[2] Fp Fi}


void  S6525C6 ::v6(){vfunc_called(this, "_ZN7S6525C62v6Ev");}
S6525C6 ::~S6525C6(){ note_dtor("S6525C6", this);} // tgen
S6525C6 ::S6525C6(){ note_ctor("S6525C6", this);} // tgen

static void Test_S6525C6()
{
  extern Class_Descriptor cd_S6525C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S6525C6, buf);
    S6525C6 *dp, &lv = *(dp=new (buf) S6525C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S6525C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6525C6)");
    check_field_offset(lv, s6525c6f0, ABISELECT(8,4), "S6525C6.s6525c6f0");
    check_field_offset(lv, s6525c6f1, ABISELECT(16,8), "S6525C6.s6525c6f1");
    check_field_offset(lv, s6525c6f2, ABISELECT(24,16), "S6525C6.s6525c6f2");
    check_field_offset(lv, s6525c6f3, ABISELECT(32,20), "S6525C6.s6525c6f3");
    test_class_info(&lv, &cd_S6525C6);
    dp->~S6525C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6525C6(Test_S6525C6, "S6525C6", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S6525C6C1Ev();
extern void _ZN7S6525C6D1Ev();
Name_Map name_map_S6525C6[] = {
  NSPAIR(_ZN7S6525C6C1Ev),
  NSPAIR(_ZN7S6525C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6525C6[];
extern void _ZN7S6525C62v6Ev();
static  VTBL_ENTRY vtc_S6525C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C6[0]),
  (VTBL_ENTRY)&_ZN7S6525C62v6Ev,
};
extern VTBL_ENTRY _ZTI7S6525C6[];
extern  VTBL_ENTRY _ZTV7S6525C6[];
Class_Descriptor cd_S6525C6 = {  "S6525C6", // class name
  0,0,//no base classes
  &(vtc_S6525C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S6525C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6525C6),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6525C5  : virtual S6525C6 , virtual S6525C2 , virtual S6525C4 , virtual S6525C3 {
  int s6525c5f0;
  ::S6525C2 s6525c5f1;
  int s6525c5f2;
  short s6525c5f3:2;
  void *s6525c5f4;
  int s6525c5f5;
  virtual  ~S6525C5(); // _ZN7S6525C5D2Ev
  S6525C5(); // tgen
};
//SIG(-1 S6525C5) C1{ VBC2{ v1 Fp Fi[2] Fp Fi} VBC3{ v2 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC4{ v3 v4 Fs:12 Fi Fc} VBC5{ BC3 BC4 v5 FD FL FC4 FL[2] Fp[3] Fi} vd Fi FC3 Fi Fs:2 Fp Fi}


 S6525C5 ::~S6525C5(){ note_dtor("S6525C5", this);}
S6525C5 ::S6525C5(){ note_ctor("S6525C5", this);} // tgen

static void Test_S6525C5()
{
  extern Class_Descriptor cd_S6525C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(58,137)];
    init_test(&cd_S6525C5, buf);
    S6525C5 *dp, &lv = *(dp=new (buf) S6525C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(912,544), "sizeof(S6525C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6525C5)");
    check_base_class_offset(lv, (S6525C6*), ABISELECT(264,156), "S6525C5");
    /*is_ambiguous_... S6525C5::S6525C2 */ AMB_check_base_class_offset(lv, (S6525C2*), ABISELECT(304,180), "S6525C5");
    /*is_ambiguous_... S6525C5::S6525C4 */ AMB_check_base_class_offset(lv, (S6525C4*), ABISELECT(528,312), "S6525C5");
    check_base_class_offset(lv, (S6525C2*)(S6525C3*), ABISELECT(560,328), "S6525C5");
    check_base_class_offset(lv, (S6525C4*)(S6525C3*), ABISELECT(784,460), "S6525C5");
    check_base_class_offset(lv, (S6525C3*), ABISELECT(560,328), "S6525C5");
    check_field_offset(lv, s6525c5f0, ABISELECT(8,4), "S6525C5.s6525c5f0");
    check_field_offset(lv, s6525c5f1, ABISELECT(16,8), "S6525C5.s6525c5f1");
    check_field_offset(lv, s6525c5f2, ABISELECT(240,140), "S6525C5.s6525c5f2");
    set_bf_and_test(lv, s6525c5f3, ABISELECT(244,144), 0, 2, 1, "S6525C5");
    set_bf_and_test(lv, s6525c5f3, ABISELECT(244,144), 0, 2, hide_sll(1LL<<1), "S6525C5");
    check_field_offset(lv, s6525c5f4, ABISELECT(248,148), "S6525C5.s6525c5f4");
    check_field_offset(lv, s6525c5f5, ABISELECT(256,152), "S6525C5.s6525c5f5");
    test_class_info(&lv, &cd_S6525C5);
    dp->~S6525C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6525C5(Test_S6525C5, "S6525C5", ABISELECT(912,544));

#else // __cplusplus

extern void _ZN7S6525C5C1Ev();
extern void _ZN7S6525C5D2Ev();
Name_Map name_map_S6525C5[] = {
  NSPAIR(_ZN7S6525C5C1Ev),
  NSPAIR(_ZN7S6525C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6525C6;
extern VTBL_ENTRY _ZTI7S6525C6[];
extern  VTBL_ENTRY _ZTV7S6525C6[];
extern Class_Descriptor cd_S6525C2;
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
extern Class_Descriptor cd_S6525C2;
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
extern Class_Descriptor cd_S6525C3;
extern VTBL_ENTRY _ZTI7S6525C3[];
extern  VTBL_ENTRY _ZTV7S6525C3[];
static Base_Class bases_S6525C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6525C6,    ABISELECT(264,156), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6525C2,    ABISELECT(304,180), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6525C4,    ABISELECT(528,312), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6525C2,    ABISELECT(560,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6525C4,    ABISELECT(784,460), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6525C3,    ABISELECT(560,328), //bcp->offset
    22, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6525C5[];
extern void _ZN7S6525C5D1Ev();
extern void _ZN7S6525C5D0Ev();
extern void _ZN7S6525C62v6Ev();
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C32v5Ev();
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY vtc_S6525C5[] = {
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6525C5D0Ev,
  0,
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C62v6Ev,
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  0,
  0,
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6525C32v5Ev,
  ABISELECT(-784,-460),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S6525C5[];
static  VTT_ENTRY vtt_S6525C5[] = {
  {&(_ZTV7S6525C5[6]),  6,34},
  {&(_ZTV7S6525C5[11]),  11,34},
  {&(_ZTV7S6525C5[15]),  15,34},
  {&(_ZTV7S6525C5[20]),  20,34},
  {&(_ZTV7S6525C5[28]),  28,34},
  {&(_ZTV7S6525C5[32]),  32,34},
};
extern VTBL_ENTRY _ZTI7S6525C5[];
extern  VTBL_ENTRY _ZTV7S6525C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6525C5[];
Class_Descriptor cd_S6525C5 = {  "S6525C5", // class name
  bases_S6525C5, 6,
  &(vtc_S6525C5[0]), // expected_vtbl_contents
  &(vtt_S6525C5[0]), // expected_vtt_contents
  ABISELECT(912,544), // object size
  NSPAIRA(_ZTI7S6525C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6525C5),34, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6525C5),6, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6525C7  : virtual S6525C5 , S6525C4 {
  int s6525c7f0[6];
  __tsi64 s6525c7f1;
  int s6525c7f2;
  void *s6525c7f3;
  long double s6525c7f4;
  virtual  ~S6525C7(); // _ZN7S6525C7D2Ev
  virtual void  v7(); // _ZN7S6525C72v7Ev
  S6525C7(); // tgen
};
//SIG(-1 S6525C7) C1{ VBC2{ VBC3{ v2 Fp Fi[2] Fp Fi} VBC4{ v3 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC5{ v4 v5 Fs:12 Fi Fc} VBC6{ BC4 BC5 v6 FD FL FC5 FL[2] Fp[3] Fi} vd Fi FC4 Fi Fs:2 Fp Fi} BC5 vd v1 Fi[6] FL Fi Fp FD}


 S6525C7 ::~S6525C7(){ note_dtor("S6525C7", this);}
void  S6525C7 ::v7(){vfunc_called(this, "_ZN7S6525C72v7Ev");}
S6525C7 ::S6525C7(){ note_ctor("S6525C7", this);} // tgen

static void Test_S6525C7()
{
  extern Class_Descriptor cd_S6525C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(64,154)];
    init_test(&cd_S6525C7, buf);
    S6525C7 *dp, &lv = *(dp=new (buf) S6525C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1008,612), "sizeof(S6525C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6525C7)");
    check_base_class_offset(lv, (S6525C6*)(S6525C5*), ABISELECT(360,224), "S6525C7");
    /*is_ambiguous_... S6525C5::S6525C2 */ AMB_check_base_class_offset(lv, (S6525C2*)(S6525C5*), ABISELECT(400,248), "S6525C7");
    /*is_ambiguous_... S6525C5::S6525C4 */ AMB_check_base_class_offset(lv, (S6525C4*)(S6525C5*), ABISELECT(624,380), "S6525C7");
    check_base_class_offset(lv, (S6525C2*)(S6525C3*), ABISELECT(656,396), "S6525C7");
    check_base_class_offset(lv, (S6525C4*)(S6525C3*), ABISELECT(880,528), "S6525C7");
    check_base_class_offset(lv, (S6525C3*)(S6525C5*), ABISELECT(656,396), "S6525C7");
    check_base_class_offset(lv, (S6525C5*), ABISELECT(96,68), "S6525C7");
    /*is_ambiguous_... S6525C7::S6525C4 */ AMB_check_base_class_offset(lv, (S6525C4*), 0, "S6525C7");
    check_field_offset(lv, s6525c7f0, ABISELECT(20,16), "S6525C7.s6525c7f0");
    check_field_offset(lv, s6525c7f1, ABISELECT(48,40), "S6525C7.s6525c7f1");
    check_field_offset(lv, s6525c7f2, ABISELECT(56,48), "S6525C7.s6525c7f2");
    check_field_offset(lv, s6525c7f3, ABISELECT(64,52), "S6525C7.s6525c7f3");
    check_field_offset(lv, s6525c7f4, ABISELECT(80,56), "S6525C7.s6525c7f4");
    test_class_info(&lv, &cd_S6525C7);
    dp->~S6525C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6525C7(Test_S6525C7, "S6525C7", ABISELECT(1008,612));

#else // __cplusplus

extern void _ZN7S6525C7C1Ev();
extern void _ZN7S6525C7D2Ev();
Name_Map name_map_S6525C7[] = {
  NSPAIR(_ZN7S6525C7C1Ev),
  NSPAIR(_ZN7S6525C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6525C6;
extern VTBL_ENTRY _ZTI7S6525C6[];
extern  VTBL_ENTRY _ZTV7S6525C6[];
extern Class_Descriptor cd_S6525C2;
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
extern Class_Descriptor cd_S6525C2;
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
extern Class_Descriptor cd_S6525C3;
extern VTBL_ENTRY _ZTI7S6525C3[];
extern  VTBL_ENTRY _ZTV7S6525C3[];
extern Class_Descriptor cd_S6525C5;
extern VTBL_ENTRY _ZTI7S6525C5[];
extern  VTBL_ENTRY _ZTV7S6525C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6525C5[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
static Base_Class bases_S6525C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6525C6,    ABISELECT(360,224), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6525C2,    ABISELECT(400,248), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6525C4,    ABISELECT(624,380), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6525C2,    ABISELECT(656,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6525C4,    ABISELECT(880,528), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6525C3,    ABISELECT(656,396), //bcp->offset
    35, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6525C5,    ABISELECT(96,68), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6525C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6525C7[];
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
extern void _ZN7S6525C7D1Ev();
extern void _ZN7S6525C7D0Ev();
extern void _ZN7S6525C72v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S6525C7D1Ev,_ZTv0_n28_N7S6525C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S6525C7D1Ev,_ZThn68_N7S6525C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S6525C7D0Ev,_ZTv0_n28_N7S6525C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S6525C7D0Ev,_ZThn68_N7S6525C7D0Ev)() __attribute__((weak));
extern void _ZN7S6525C62v6Ev();
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C32v5Ev();
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY vtc_S6525C7[] = {
  ABISELECT(656,396),
  ABISELECT(624,380),
  ABISELECT(400,248),
  ABISELECT(360,224),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
  (VTBL_ENTRY)&_ZN7S6525C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6525C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6525C72v7Ev,
  ABISELECT(-96,-68),
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6525C7D1Ev,_ZTv0_n28_N7S6525C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6525C7D0Ev,_ZTv0_n28_N7S6525C7D0Ev),
  0,
  ABISELECT(-360,-224),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C62v6Ev,
  0,
  ABISELECT(-400,-248),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  0,
  0,
  ABISELECT(-624,-380),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-656,-396),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6525C32v5Ev,
  ABISELECT(-880,-528),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S6525C7[];
extern void _ZN7S6525C5D1Ev();
extern void _ZN7S6525C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C5__7S6525C7[] = {
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6525C5D0Ev,
};
extern void _ZN7S6525C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C6__7S6525C5__7S6525C7[] = {
  0,
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C62v6Ev,
};
extern void _ZN7S6525C22v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C2__7S6525C5__7S6525C7[] = {
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
};
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C4__7S6525C5__7S6525C7[] = {
  0,
  0,
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C3__7S6525C5__7S6525C7[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6525C32v5Ev,
};
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C47S6525C3__A1__7S6525C5__7S6525C7[] = {
  ABISELECT(-784,-460),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
static  VTT_ENTRY vtt_S6525C7[] = {
  {&(_ZTV7S6525C7[7]),  7,47},
  {&(_ZTV7S6525C7[19]),  19,47},
  {&(_ZTV7S6525C7[24]),  24,47},
  {&(_ZTV7S6525C7[28]),  28,47},
  {&(_ZTV7S6525C7[33]),  33,47},
  {&(_ZTV7S6525C7[41]),  41,47},
  {&(_ZTV7S6525C7[45]),  45,47},
  {&(_tg__ZTV7S6525C5__7S6525C7[6]),  6,8},
  {&(_tg__ZTV7S6525C6__7S6525C5__7S6525C7[3]),  3,4},
  {&(_tg__ZTV7S6525C2__7S6525C5__7S6525C7[3]),  3,4},
  {&(_tg__ZTV7S6525C4__7S6525C5__7S6525C7[4]),  4,6},
  {&(_tg__ZTV7S6525C3__7S6525C5__7S6525C7[6]),  6,8},
  {&(_tg__ZTV7S6525C47S6525C3__A1__7S6525C5__7S6525C7[2]),  2,4},
};
extern VTBL_ENTRY _ZTI7S6525C7[];
extern  VTBL_ENTRY _ZTV7S6525C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6525C7[];
static VTBL_ENTRY alt_thunk_names214[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S6525C7D0Ev,_ZTv0_n28_N7S6525C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6525C7D0Ev,_ZThn68_N7S6525C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S6525C7D1Ev,_ZTv0_n28_N7S6525C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6525C7D1Ev,_ZThn68_N7S6525C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6525C7 = {  "S6525C7", // class name
  bases_S6525C7, 8,
  &(vtc_S6525C7[0]), // expected_vtbl_contents
  &(vtt_S6525C7[0]), // expected_vtt_contents
  ABISELECT(1008,612), // object size
  NSPAIRA(_ZTI7S6525C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6525C7),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6525C7),13, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names214,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6525C1  : S6525C2 , S6525C3 , virtual S6525C5 , virtual S6525C7 , S6525C6 {
  long double s6525c1f0;
  virtual  ~S6525C1(); // _ZN7S6525C1D2Ev
  virtual void  v1(); // _ZN7S6525C12v1Ev
  S6525C1(); // tgen
};
//SIG(1 S6525C1) C1{ BC2{ v2 FD[6] Fp[6] Fl[6] Fs Fc Fp} BC3{ BC2 BC4{ v3 v4 Fs:12 Fi Fc} v5 FD FL FC4 FL[2] Fp[3] Fi} VBC5{ VBC6{ v6 Fp Fi[2] Fp Fi} VBC2 VBC4 VBC3 vd Fi FC2 Fi Fs:2 Fp Fi} VBC7{ VBC5 BC4 vd v7 Fi[6] FL Fi Fp FD} BC6 vd v1 FD}


 S6525C1 ::~S6525C1(){ note_dtor("S6525C1", this);}
void  S6525C1 ::v1(){vfunc_called(this, "_ZN7S6525C12v1Ev");}
S6525C1 ::S6525C1(){ note_ctor("S6525C1", this);} // tgen

static void Test_S6525C1()
{
  extern Class_Descriptor cd_S6525C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(104,250)];
    init_test(&cd_S6525C1, buf);
    S6525C1 *dp, &lv = *(dp=new (buf) S6525C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1648,996), "sizeof(S6525C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6525C1)");
    /*is_ambiguous_... S6525C1::S6525C2 */ AMB_check_base_class_offset(lv, (S6525C2*), 0, "S6525C1");
    /*is_ambiguous_... S6525C1::S6525C3 */ AMB_check_base_class_offset(lv, (S6525C2*)(S6525C3*), ABISELECT(224,132), "S6525C1");
    /*is_ambiguous_... S6525C1::S6525C3 */ AMB_check_base_class_offset(lv, (S6525C4*)(S6525C3*), ABISELECT(448,264), "S6525C1");
    /*is_ambiguous_... S6525C1::S6525C3 */ AMB_check_base_class_offset(lv, (S6525C3*), ABISELECT(224,132), "S6525C1");
    check_base_class_offset(lv, (S6525C6*)(S6525C5*), ABISELECT(904,540), "S6525C1");
    /*is_ambiguous_... S6525C5::S6525C2 */ AMB_check_base_class_offset(lv, (S6525C2*)(S6525C5*), ABISELECT(944,564), "S6525C1");
    /*is_ambiguous_... S6525C5::S6525C4 */ AMB_check_base_class_offset(lv, (S6525C4*)(S6525C5*), ABISELECT(1168,696), "S6525C1");
    /*is_ambiguous_... S6525C1::S6525C3 */ AMB_check_base_class_offset(lv, (S6525C2*)(S6525C3*), ABISELECT(1200,712), "S6525C1");
    /*is_ambiguous_... S6525C1::S6525C3 */ AMB_check_base_class_offset(lv, (S6525C4*)(S6525C3*), ABISELECT(1424,844), "S6525C1");
    check_base_class_offset(lv, (S6525C3*)(S6525C5*), ABISELECT(1200,712), "S6525C1");
    check_base_class_offset(lv, (S6525C5*), ABISELECT(640,384), "S6525C1");
    check_base_class_offset(lv, (S6525C5*)(S6525C7*), ABISELECT(640,384), "S6525C1");
    /*is_ambiguous_... S6525C7::S6525C4 */ AMB_check_base_class_offset(lv, (S6525C4*)(S6525C7*), ABISELECT(1552,928), "S6525C1");
    check_base_class_offset(lv, (S6525C7*), ABISELECT(1552,928), "S6525C1");
    /*is_ambiguous_... S6525C1::S6525C6 */ AMB_check_base_class_offset(lv, (S6525C6*), ABISELECT(576,348), "S6525C1");
    check_field_offset(lv, s6525c1f0, ABISELECT(624,372), "S6525C1.s6525c1f0");
    test_class_info(&lv, &cd_S6525C1);
    dp->~S6525C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6525C1(Test_S6525C1, "S6525C1", ABISELECT(1648,996));

#else // __cplusplus

extern void _ZN7S6525C1C1Ev();
extern void _ZN7S6525C1D2Ev();
Name_Map name_map_S6525C1[] = {
  NSPAIR(_ZN7S6525C1C1Ev),
  NSPAIR(_ZN7S6525C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6525C2;
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
extern Class_Descriptor cd_S6525C2;
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
extern Class_Descriptor cd_S6525C3;
extern VTBL_ENTRY _ZTI7S6525C3[];
extern  VTBL_ENTRY _ZTV7S6525C3[];
extern Class_Descriptor cd_S6525C6;
extern VTBL_ENTRY _ZTI7S6525C6[];
extern  VTBL_ENTRY _ZTV7S6525C6[];
extern Class_Descriptor cd_S6525C2;
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
extern Class_Descriptor cd_S6525C2;
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
extern Class_Descriptor cd_S6525C3;
extern VTBL_ENTRY _ZTI7S6525C3[];
extern  VTBL_ENTRY _ZTV7S6525C3[];
extern Class_Descriptor cd_S6525C5;
extern VTBL_ENTRY _ZTI7S6525C5[];
extern  VTBL_ENTRY _ZTV7S6525C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6525C5[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
extern Class_Descriptor cd_S6525C7;
extern VTBL_ENTRY _ZTI7S6525C7[];
extern  VTBL_ENTRY _ZTV7S6525C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6525C7[];
extern Class_Descriptor cd_S6525C6;
extern VTBL_ENTRY _ZTI7S6525C6[];
extern  VTBL_ENTRY _ZTV7S6525C6[];
static Base_Class bases_S6525C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6525C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6525C2,    ABISELECT(224,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6525C4,    ABISELECT(448,264), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6525C3,    ABISELECT(224,132), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6525C6,    ABISELECT(904,540), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6525C2,    ABISELECT(944,564), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6525C4,    ABISELECT(1168,696), //bcp->offset
    40, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6525C2,    ABISELECT(1200,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6525C4,    ABISELECT(1424,844), //bcp->offset
    54, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6525C3,    ABISELECT(1200,712), //bcp->offset
    46, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6525C5,    ABISELECT(640,384), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6525C4,    ABISELECT(1552,928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6525C7,    ABISELECT(1552,928), //bcp->offset
    58, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6525C6,    ABISELECT(576,348), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6525C1[];
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C1D1Ev();
extern void _ZN7S6525C1D0Ev();
extern void _ZN7S6525C12v1Ev();
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C32v5Ev();
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
extern void _ZN7S6525C62v6Ev();
extern void ABISELECT(_ZTv0_n56_N7S6525C1D1Ev,_ZTv0_n28_N7S6525C1D1Ev)();
extern void ABISELECT(_ZThn640_N7S6525C1D1Ev,_ZThn384_N7S6525C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S6525C1D0Ev,_ZTv0_n28_N7S6525C1D0Ev)();
extern void ABISELECT(_ZThn640_N7S6525C1D0Ev,_ZThn384_N7S6525C1D0Ev)() __attribute__((weak));
extern void _ZN7S6525C62v6Ev();
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C32v5Ev();
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
extern void ABISELECT(_ZTv0_n80_N7S6525C1D1Ev,_ZTv0_n40_N7S6525C1D1Ev)();
extern void ABISELECT(_ZThn1552_N7S6525C1D1Ev,_ZThn928_N7S6525C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6525C1D0Ev,_ZTv0_n40_N7S6525C1D0Ev)();
extern void ABISELECT(_ZThn1552_N7S6525C1D0Ev,_ZThn928_N7S6525C1D0Ev)() __attribute__((weak));
extern void _ZN7S6525C72v7Ev();
static  VTBL_ENTRY vtc_S6525C1[] = {
  ABISELECT(1552,928),
  ABISELECT(1200,712),
  ABISELECT(1168,696),
  ABISELECT(944,564),
  ABISELECT(904,540),
  ABISELECT(640,384),
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6525C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6525C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6525C12v1Ev,
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6525C32v5Ev,
  ABISELECT(-448,-264),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
  ABISELECT(-576,-348),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C62v6Ev,
  ABISELECT(-640,-384),
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  ABISELECT(-640,-384),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6525C1D1Ev,_ZTv0_n28_N7S6525C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6525C1D0Ev,_ZTv0_n28_N7S6525C1D0Ev),
  0,
  ABISELECT(-904,-540),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C62v6Ev,
  0,
  ABISELECT(-944,-564),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  0,
  0,
  ABISELECT(-1168,-696),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-1200,-712),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6525C32v5Ev,
  ABISELECT(-1424,-844),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
  0,
  ABISELECT(-1552,-928),
  0,
  0,
  ABISELECT(-352,-216),
  ABISELECT(-384,-232),
  ABISELECT(-608,-364),
  ABISELECT(-648,-388),
  ABISELECT(-912,-544),
  ABISELECT(-1552,-928),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6525C1D1Ev,_ZTv0_n40_N7S6525C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6525C1D0Ev,_ZTv0_n40_N7S6525C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6525C72v7Ev,
};
extern VTBL_ENTRY _ZTV7S6525C1[];
extern void _ZN7S6525C5D1Ev();
extern void _ZN7S6525C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C5__7S6525C1[] = {
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6525C5D0Ev,
};
extern void _ZN7S6525C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C6__7S6525C5__7S6525C1[] = {
  0,
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C62v6Ev,
};
extern void _ZN7S6525C22v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C2__7S6525C5__7S6525C1[] = {
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
};
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C4__7S6525C5__7S6525C1[] = {
  0,
  0,
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C3__7S6525C5__7S6525C1[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6525C32v5Ev,
};
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C47S6525C3__A1__7S6525C5__7S6525C1[] = {
  ABISELECT(-784,-460),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
extern void _ZN7S6525C7D1Ev();
extern void _ZN7S6525C7D0Ev();
extern void _ZN7S6525C72v7Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C7__7S6525C1[] = {
  ABISELECT(-352,-216),
  ABISELECT(-384,-232),
  ABISELECT(-608,-364),
  ABISELECT(-648,-388),
  ABISELECT(-912,-544),
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
  (VTBL_ENTRY)&_ZN7S6525C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6525C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6525C72v7Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S6525C7D1Ev,_ZTv0_n28_N7S6525C7D1Ev)();
extern void ABISELECT(_ZTv0_n56_N7S6525C7D0Ev,_ZTv0_n28_N7S6525C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6525C5__7S6525C7__7S6525C1[] = {
  ABISELECT(912,544),
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  ABISELECT(912,544),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6525C7D1Ev,_ZTv0_n28_N7S6525C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6525C7D0Ev,_ZTv0_n28_N7S6525C7D0Ev),
};
extern void _ZN7S6525C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C6__7S6525C7__7S6525C1[] = {
  0,
  ABISELECT(648,388),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C62v6Ev,
};
extern void _ZN7S6525C22v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C2__7S6525C7__7S6525C1[] = {
  0,
  ABISELECT(608,364),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
};
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C4__7S6525C7__7S6525C1[] = {
  0,
  0,
  ABISELECT(384,232),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C3__7S6525C7__7S6525C1[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(352,216),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6525C32v5Ev,
};
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C47S6525C3__A1__7S6525C7__7S6525C1[] = {
  ABISELECT(128,84),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
static  VTT_ENTRY vtt_S6525C1[] = {
  {&(_ZTV7S6525C1[8]),  8,74},
  {&(_ZTV7S6525C1[30]),  30,74},
  {&(_ZTV7S6525C1[35]),  35,74},
  {&(_ZTV7S6525C1[39]),  39,74},
  {&(_ZTV7S6525C1[44]),  44,74},
  {&(_ZTV7S6525C1[52]),  52,74},
  {&(_ZTV7S6525C1[56]),  56,74},
  {&(_ZTV7S6525C1[69]),  69,74},
  {&(_tg__ZTV7S6525C5__7S6525C1[6]),  6,8},
  {&(_tg__ZTV7S6525C6__7S6525C5__7S6525C1[3]),  3,4},
  {&(_tg__ZTV7S6525C2__7S6525C5__7S6525C1[3]),  3,4},
  {&(_tg__ZTV7S6525C4__7S6525C5__7S6525C1[4]),  4,6},
  {&(_tg__ZTV7S6525C3__7S6525C5__7S6525C1[6]),  6,8},
  {&(_tg__ZTV7S6525C47S6525C3__A1__7S6525C5__7S6525C1[2]),  2,4},
  {&(_tg__ZTV7S6525C7__7S6525C1[7]),  7,12},
  {&(_tg__ZTV7S6525C5__7S6525C7__7S6525C1[7]),  7,9},
  {&(_tg__ZTV7S6525C6__7S6525C7__7S6525C1[3]),  3,4},
  {&(_tg__ZTV7S6525C2__7S6525C7__7S6525C1[3]),  3,4},
  {&(_tg__ZTV7S6525C4__7S6525C7__7S6525C1[4]),  4,6},
  {&(_tg__ZTV7S6525C3__7S6525C7__7S6525C1[6]),  6,8},
  {&(_tg__ZTV7S6525C47S6525C3__A1__7S6525C7__7S6525C1[2]),  2,4},
};
extern VTBL_ENTRY _ZTI7S6525C1[];
extern  VTBL_ENTRY _ZTV7S6525C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6525C1[];
static VTBL_ENTRY alt_thunk_names215[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6525C1D0Ev,_ZTv0_n40_N7S6525C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1552_N7S6525C1D0Ev,_ZThn928_N7S6525C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6525C1D1Ev,_ZTv0_n40_N7S6525C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1552_N7S6525C1D1Ev,_ZThn928_N7S6525C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S6525C1D0Ev,_ZTv0_n28_N7S6525C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S6525C1D0Ev,_ZThn384_N7S6525C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S6525C1D1Ev,_ZTv0_n28_N7S6525C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S6525C1D1Ev,_ZThn384_N7S6525C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6525C1 = {  "S6525C1", // class name
  bases_S6525C1, 14,
  &(vtc_S6525C1[0]), // expected_vtbl_contents
  &(vtt_S6525C1[0]), // expected_vtt_contents
  ABISELECT(1648,996), // object size
  NSPAIRA(_ZTI7S6525C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6525C1),74, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6525C1),21, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names215,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8581C2  {
  char s8581c2f0;
  int s8581c2f1;
  void *s8581c2f2[3];
  char s8581c2f3[3];
  ::S4228C19_nt s8581c2f4;
  char s8581c2f5;
  void *s8581c2f6;
  int s8581c2f7[2];
  virtual  ~S8581C2(); // _ZN7S8581C2D1Ev
  virtual void  v13(); // _ZN7S8581C23v13Ev
  virtual void  v14(); // _ZN7S8581C23v14Ev
  virtual void  v15(); // _ZN7S8581C23v15Ev
  virtual void  v16(); // _ZN7S8581C23v16Ev
  virtual void  v17(); // _ZN7S8581C23v17Ev
  virtual void  v18(); // _ZN7S8581C23v18Ev
  virtual void  v19(); // _ZN7S8581C23v19Ev
  virtual void  v20(); // _ZN7S8581C23v20Ev
  virtual void  v21(); // _ZN7S8581C23v21Ev
  virtual void  v22(); // _ZN7S8581C23v22Ev
  virtual void  v23(); // _ZN7S8581C23v23Ev
  virtual void  v24(); // _ZN7S8581C23v24Ev
  virtual void  v25(); // _ZN7S8581C23v25Ev
  virtual void  v26(); // _ZN7S8581C23v26Ev
  S8581C2(); // tgen
};
//SIG(-1 S8581C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fc Fi Fp[3] Fc[3] FC2{ m Fp Fi FC3{ m}} Fc Fp Fi[2]}


 S8581C2 ::~S8581C2(){ note_dtor("S8581C2", this);}
void  S8581C2 ::v13(){vfunc_called(this, "_ZN7S8581C23v13Ev");}
void  S8581C2 ::v14(){vfunc_called(this, "_ZN7S8581C23v14Ev");}
void  S8581C2 ::v15(){vfunc_called(this, "_ZN7S8581C23v15Ev");}
void  S8581C2 ::v16(){vfunc_called(this, "_ZN7S8581C23v16Ev");}
void  S8581C2 ::v17(){vfunc_called(this, "_ZN7S8581C23v17Ev");}
void  S8581C2 ::v18(){vfunc_called(this, "_ZN7S8581C23v18Ev");}
void  S8581C2 ::v19(){vfunc_called(this, "_ZN7S8581C23v19Ev");}
void  S8581C2 ::v20(){vfunc_called(this, "_ZN7S8581C23v20Ev");}
void  S8581C2 ::v21(){vfunc_called(this, "_ZN7S8581C23v21Ev");}
void  S8581C2 ::v22(){vfunc_called(this, "_ZN7S8581C23v22Ev");}
void  S8581C2 ::v23(){vfunc_called(this, "_ZN7S8581C23v23Ev");}
void  S8581C2 ::v24(){vfunc_called(this, "_ZN7S8581C23v24Ev");}
void  S8581C2 ::v25(){vfunc_called(this, "_ZN7S8581C23v25Ev");}
void  S8581C2 ::v26(){vfunc_called(this, "_ZN7S8581C23v26Ev");}
S8581C2 ::S8581C2(){ note_ctor("S8581C2", this);} // tgen

static void Test_S8581C2()
{
  extern Class_Descriptor cd_S8581C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S8581C2, buf);
    S8581C2 *dp, &lv = *(dp=new (buf) S8581C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S8581C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8581C2)");
    check_field_offset(lv, s8581c2f0, ABISELECT(8,4), "S8581C2.s8581c2f0");
    check_field_offset(lv, s8581c2f1, ABISELECT(12,8), "S8581C2.s8581c2f1");
    check_field_offset(lv, s8581c2f2, ABISELECT(16,12), "S8581C2.s8581c2f2");
    check_field_offset(lv, s8581c2f3, ABISELECT(40,24), "S8581C2.s8581c2f3");
    check_field_offset(lv, s8581c2f4, ABISELECT(48,28), "S8581C2.s8581c2f4");
    check_field_offset(lv, s8581c2f5, ABISELECT(64,40), "S8581C2.s8581c2f5");
    check_field_offset(lv, s8581c2f6, ABISELECT(72,44), "S8581C2.s8581c2f6");
    check_field_offset(lv, s8581c2f7, ABISELECT(80,48), "S8581C2.s8581c2f7");
    test_class_info(&lv, &cd_S8581C2);
    dp->~S8581C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8581C2(Test_S8581C2, "S8581C2", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S8581C2C1Ev();
extern void _ZN7S8581C2D1Ev();
Name_Map name_map_S8581C2[] = {
  NSPAIR(_ZN7S8581C2C1Ev),
  NSPAIR(_ZN7S8581C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8581C2[];
extern void _ZN7S8581C2D1Ev();
extern void _ZN7S8581C2D0Ev();
extern void _ZN7S8581C23v13Ev();
extern void _ZN7S8581C23v14Ev();
extern void _ZN7S8581C23v15Ev();
extern void _ZN7S8581C23v16Ev();
extern void _ZN7S8581C23v17Ev();
extern void _ZN7S8581C23v18Ev();
extern void _ZN7S8581C23v19Ev();
extern void _ZN7S8581C23v20Ev();
extern void _ZN7S8581C23v21Ev();
extern void _ZN7S8581C23v22Ev();
extern void _ZN7S8581C23v23Ev();
extern void _ZN7S8581C23v24Ev();
extern void _ZN7S8581C23v25Ev();
extern void _ZN7S8581C23v26Ev();
static  VTBL_ENTRY vtc_S8581C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8581C2[0]),
  (VTBL_ENTRY)&_ZN7S8581C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8581C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v25Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v26Ev,
};
extern VTBL_ENTRY _ZTI7S8581C2[];
extern  VTBL_ENTRY _ZTV7S8581C2[];
Class_Descriptor cd_S8581C2 = {  "S8581C2", // class name
  0,0,//no base classes
  &(vtc_S8581C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S8581C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8581C2),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8581C5  {
  virtual  ~S8581C5(); // _ZN7S8581C5D1Ev
  virtual void  v27(); // _ZN7S8581C53v27Ev
  S8581C5(); // tgen
};
//SIG(-1 S8581C5) C1{ vd v1}


 S8581C5 ::~S8581C5(){ note_dtor("S8581C5", this);}
void  S8581C5 ::v27(){vfunc_called(this, "_ZN7S8581C53v27Ev");}
S8581C5 ::S8581C5(){ note_ctor("S8581C5", this);} // tgen

static void Test_S8581C5()
{
  extern Class_Descriptor cd_S8581C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8581C5, buf);
    S8581C5 *dp, &lv = *(dp=new (buf) S8581C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8581C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8581C5)");
    test_class_info(&lv, &cd_S8581C5);
    dp->~S8581C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8581C5(Test_S8581C5, "S8581C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8581C5C1Ev();
extern void _ZN7S8581C5D1Ev();
Name_Map name_map_S8581C5[] = {
  NSPAIR(_ZN7S8581C5C1Ev),
  NSPAIR(_ZN7S8581C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8581C5[];
extern void _ZN7S8581C5D1Ev();
extern void _ZN7S8581C5D0Ev();
extern void _ZN7S8581C53v27Ev();
static  VTBL_ENTRY vtc_S8581C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8581C5[0]),
  (VTBL_ENTRY)&_ZN7S8581C5D1Ev,
  (VTBL_ENTRY)&_ZN7S8581C5D0Ev,
  (VTBL_ENTRY)&_ZN7S8581C53v27Ev,
};
extern VTBL_ENTRY _ZTI7S8581C5[];
extern  VTBL_ENTRY _ZTV7S8581C5[];
Class_Descriptor cd_S8581C5 = {  "S8581C5", // class name
  0,0,//no base classes
  &(vtc_S8581C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8581C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8581C5),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8581C1  : S8581C2 , S8581C5 {
  ::S4221C6_nt s8581c1f0;
  ::S4228C44 s8581c1f1;
  virtual  ~S8581C1(); // _ZN7S8581C1D1Ev
  virtual void  v1(); // _ZN7S8581C12v1Ev
  virtual void  v2(); // _ZN7S8581C12v2Ev
  virtual void  v3(); // _ZN7S8581C12v3Ev
  virtual void  v4(); // _ZN7S8581C12v4Ev
  virtual void  v5(); // _ZN7S8581C12v5Ev
  virtual void  v6(); // _ZN7S8581C12v6Ev
  virtual void  v7(); // _ZN7S8581C12v7Ev
  virtual void  v8(); // _ZN7S8581C12v8Ev
  virtual void  v9(); // _ZN7S8581C12v9Ev
  virtual void  v10(); // _ZN7S8581C13v10Ev
  virtual void  v11(); // _ZN7S8581C13v11Ev
  virtual void  v12(); // _ZN7S8581C13v12Ev
  S8581C1(); // tgen
};
//SIG(1 S8581C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 Fc Fi Fp[3] Fc[3] FC3{ m Fp Fi FC4{ m}} Fc Fp Fi[2]} BC5{ vd v27} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 FC6{ m Fp Fi FC7{ m}} FC8{ m Fp Fi[2] FC7}}


 S8581C1 ::~S8581C1(){ note_dtor("S8581C1", this);}
void  S8581C1 ::v1(){vfunc_called(this, "_ZN7S8581C12v1Ev");}
void  S8581C1 ::v2(){vfunc_called(this, "_ZN7S8581C12v2Ev");}
void  S8581C1 ::v3(){vfunc_called(this, "_ZN7S8581C12v3Ev");}
void  S8581C1 ::v4(){vfunc_called(this, "_ZN7S8581C12v4Ev");}
void  S8581C1 ::v5(){vfunc_called(this, "_ZN7S8581C12v5Ev");}
void  S8581C1 ::v6(){vfunc_called(this, "_ZN7S8581C12v6Ev");}
void  S8581C1 ::v7(){vfunc_called(this, "_ZN7S8581C12v7Ev");}
void  S8581C1 ::v8(){vfunc_called(this, "_ZN7S8581C12v8Ev");}
void  S8581C1 ::v9(){vfunc_called(this, "_ZN7S8581C12v9Ev");}
void  S8581C1 ::v10(){vfunc_called(this, "_ZN7S8581C13v10Ev");}
void  S8581C1 ::v11(){vfunc_called(this, "_ZN7S8581C13v11Ev");}
void  S8581C1 ::v12(){vfunc_called(this, "_ZN7S8581C13v12Ev");}
S8581C1 ::S8581C1(){ note_ctor("S8581C1", this);} // tgen

static void Test_S8581C1()
{
  extern Class_Descriptor cd_S8581C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S8581C1, buf);
    S8581C1 *dp, &lv = *(dp=new (buf) S8581C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S8581C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8581C1)");
    check_base_class_offset(lv, (S8581C2*), 0, "S8581C1");
    check_base_class_offset(lv, (S8581C5*), ABISELECT(88,56), "S8581C1");
    check_field_offset(lv, s8581c1f0, ABISELECT(96,60), "S8581C1.s8581c1f0");
    check_field_offset(lv, s8581c1f1, ABISELECT(112,72), "S8581C1.s8581c1f1");
    test_class_info(&lv, &cd_S8581C1);
    dp->~S8581C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8581C1(Test_S8581C1, "S8581C1", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN7S8581C1C1Ev();
extern void _ZN7S8581C1D1Ev();
Name_Map name_map_S8581C1[] = {
  NSPAIR(_ZN7S8581C1C1Ev),
  NSPAIR(_ZN7S8581C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8581C2;
extern VTBL_ENTRY _ZTI7S8581C2[];
extern  VTBL_ENTRY _ZTV7S8581C2[];
extern Class_Descriptor cd_S8581C5;
extern VTBL_ENTRY _ZTI7S8581C5[];
extern  VTBL_ENTRY _ZTV7S8581C5[];
static Base_Class bases_S8581C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8581C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8581C5,    ABISELECT(88,56), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8581C1[];
extern void _ZN7S8581C1D1Ev();
extern void _ZN7S8581C1D0Ev();
extern void _ZN7S8581C23v13Ev();
extern void _ZN7S8581C23v14Ev();
extern void _ZN7S8581C23v15Ev();
extern void _ZN7S8581C23v16Ev();
extern void _ZN7S8581C23v17Ev();
extern void _ZN7S8581C23v18Ev();
extern void _ZN7S8581C23v19Ev();
extern void _ZN7S8581C23v20Ev();
extern void _ZN7S8581C23v21Ev();
extern void _ZN7S8581C23v22Ev();
extern void _ZN7S8581C23v23Ev();
extern void _ZN7S8581C23v24Ev();
extern void _ZN7S8581C23v25Ev();
extern void _ZN7S8581C23v26Ev();
extern void _ZN7S8581C12v1Ev();
extern void _ZN7S8581C12v2Ev();
extern void _ZN7S8581C12v3Ev();
extern void _ZN7S8581C12v4Ev();
extern void _ZN7S8581C12v5Ev();
extern void _ZN7S8581C12v6Ev();
extern void _ZN7S8581C12v7Ev();
extern void _ZN7S8581C12v8Ev();
extern void _ZN7S8581C12v9Ev();
extern void _ZN7S8581C13v10Ev();
extern void _ZN7S8581C13v11Ev();
extern void _ZN7S8581C13v12Ev();
extern void ABISELECT(_ZThn88_N7S8581C1D1Ev,_ZThn56_N7S8581C1D1Ev)();
extern void ABISELECT(_ZThn88_N7S8581C1D0Ev,_ZThn56_N7S8581C1D0Ev)();
extern void _ZN7S8581C53v27Ev();
static  VTBL_ENTRY vtc_S8581C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8581C1[0]),
  (VTBL_ENTRY)&_ZN7S8581C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8581C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v25Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v26Ev,
  (VTBL_ENTRY)&_ZN7S8581C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8581C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8581C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8581C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8581C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8581C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8581C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8581C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8581C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8581C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8581C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8581C13v12Ev,
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI7S8581C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S8581C1D1Ev,_ZThn56_N7S8581C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S8581C1D0Ev,_ZThn56_N7S8581C1D0Ev),
  (VTBL_ENTRY)&_ZN7S8581C53v27Ev,
};
extern VTBL_ENTRY _ZTI7S8581C1[];
extern  VTBL_ENTRY _ZTV7S8581C1[];
Class_Descriptor cd_S8581C1 = {  "S8581C1", // class name
  bases_S8581C1, 2,
  &(vtc_S8581C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI7S8581C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S8581C1),35, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21154C6  : virtual S20760C9 {
  virtual  ~S21154C6(); // _ZN8S21154C6D2Ev
  S21154C6(); // tgen
};
//SIG(-1 S21154C6) C1{ VBC2{ vd m FL} vd}


 S21154C6 ::~S21154C6(){ note_dtor("S21154C6", this);}
S21154C6 ::S21154C6(){ note_ctor("S21154C6", this);} // tgen

static void Test_S21154C6()
{
  extern Class_Descriptor cd_S21154C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S21154C6, buf);
    S21154C6 *dp, &lv = *(dp=new (buf) S21154C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S21154C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21154C6)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S21154C6");
    test_class_info(&lv, &cd_S21154C6);
    dp->~S21154C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21154C6(Test_S21154C6, "S21154C6", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S21154C6C1Ev();
extern void _ZN8S21154C6D2Ev();
Name_Map name_map_S21154C6[] = {
  NSPAIR(_ZN8S21154C6C1Ev),
  NSPAIR(_ZN8S21154C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S21154C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21154C6[];
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S21154C6D1Ev,_ZThn4_N8S21154C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S21154C6D0Ev,_ZThn4_N8S21154C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21154C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21154C6[];
static  VTT_ENTRY vtt_S21154C6[] = {
  {&(_ZTV8S21154C6[3]),  3,10},
  {&(_ZTV8S21154C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
static VTBL_ENTRY alt_thunk_names216[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21154C6D0Ev,_ZThn4_N8S21154C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21154C6D1Ev,_ZThn4_N8S21154C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21154C6 = {  "S21154C6", // class name
  bases_S21154C6, 1,
  &(vtc_S21154C6[0]), // expected_vtbl_contents
  &(vtt_S21154C6[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S21154C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21154C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21154C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names216,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21154C4  : S20760C9 , virtual S20760C13 , S21154C6 {
  ::S20760C13 s21154c4f0;
  ~S21154C4(); // tgen
  S21154C4(); // tgen
};
//SIG(-1 S21154C4) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S21154C4 ::~S21154C4(){ note_dtor("S21154C4", this);} // tgen
S21154C4 ::S21154C4(){ note_ctor("S21154C4", this);} // tgen

static void Test_S21154C4()
{
  extern Class_Descriptor cd_S21154C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S21154C4, buf);
    S21154C4 *dp, &lv = *(dp=new (buf) S21154C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S21154C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21154C4)");
    /*is_ambiguous_... S21154C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S21154C4");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S21154C4");
    check_base_class_offset(lv, (S20760C9*)(S21154C6*), ABISELECT(88,72), "S21154C4");
    check_base_class_offset(lv, (S21154C6*), ABISELECT(16,12), "S21154C4");
    check_field_offset(lv, s21154c4f0, ABISELECT(24,16), "S21154C4.s21154c4f0");
    test_class_info(&lv, &cd_S21154C4);
    dp->~S21154C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21154C4(Test_S21154C4, "S21154C4", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S21154C4C1Ev();
extern void _ZN8S21154C4D1Ev();
Name_Map name_map_S21154C4[] = {
  NSPAIR(_ZN8S21154C4C1Ev),
  NSPAIR(_ZN8S21154C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
static Base_Class bases_S21154C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21154C6,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21154C4[];
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn88_N8S21154C4D1Ev,_ZThn72_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn88_N8S21154C4D0Ev,_ZThn72_N8S21154C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21154C4[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S21154C4[];
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C4[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZThn72_N8S21154C6D1Ev,_ZThn60_N8S21154C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
extern void ABISELECT(_ZThn72_N8S21154C6D0Ev,_ZThn60_N8S21154C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C6__8S21154C4[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
static  VTT_ENTRY vtt_S21154C4[] = {
  {&(_ZTV8S21154C4[4]),  4,21},
  {&(_tg__ZTV8S21154C6__8S21154C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C6__8S21154C4[3]),  3,5},
  {&(_ZTV8S21154C4[14]),  14,21},
  {&(_ZTV8S21154C4[9]),  9,21},
  {&(_ZTV8S21154C4[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
static VTBL_ENTRY alt_thunk_names217[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21154C6D0Ev,_ZThn60_N8S21154C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21154C6D1Ev,_ZThn60_N8S21154C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21154C4D0Ev,_ZThn72_N8S21154C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21154C4D1Ev,_ZThn72_N8S21154C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21154C4 = {  "S21154C4", // class name
  bases_S21154C4, 4,
  &(vtc_S21154C4[0]), // expected_vtbl_contents
  &(vtt_S21154C4[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S21154C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21154C4),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21154C4),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names217,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21154C2  : virtual S20760C13 , virtual S21154C4 {
  long double s21154c2f0;
  ~S21154C2(); // tgen
  S21154C2(); // tgen
};
//SIG(-1 S21154C2) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S21154C2 ::~S21154C2(){ note_dtor("S21154C2", this);} // tgen
S21154C2 ::S21154C2(){ note_ctor("S21154C2", this);} // tgen

static void Test_S21154C2()
{
  extern Class_Descriptor cd_S21154C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S21154C2, buf);
    S21154C2 *dp, &lv = *(dp=new (buf) S21154C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S21154C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21154C2)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S21154C2");
    check_base_class_offset(lv, (S20760C13*)(S21154C4*), ABISELECT(32,16), "S21154C2");
    /*is_ambiguous_... S21154C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C4*), ABISELECT(64,44), "S21154C2");
    check_base_class_offset(lv, (S20760C9*)(S21154C6*)(S21154C4*), ABISELECT(120,88), "S21154C2");
    check_base_class_offset(lv, (S21154C6*)(S21154C4*), ABISELECT(80,56), "S21154C2");
    check_base_class_offset(lv, (S21154C4*), ABISELECT(64,44), "S21154C2");
    check_field_offset(lv, s21154c2f0, ABISELECT(16,4), "S21154C2.s21154c2f0");
    test_class_info(&lv, &cd_S21154C2);
    dp->~S21154C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21154C2(Test_S21154C2, "S21154C2", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN8S21154C2C1Ev();
extern void _ZN8S21154C2D1Ev();
Name_Map name_map_S21154C2[] = {
  NSPAIR(_ZN8S21154C2C1Ev),
  NSPAIR(_ZN8S21154C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C4;
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
static Base_Class bases_S21154C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21154C6,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21154C4,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21154C2[];
extern void _ZN8S21154C2D1Ev();
extern void _ZN8S21154C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S21154C2D1Ev,_ZThn16_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S21154C2D0Ev,_ZThn16_N8S21154C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21154C2D1Ev,_ZThn44_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21154C2D0Ev,_ZThn44_N8S21154C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S21154C2D1Ev,_ZThn88_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn120_N8S21154C2D0Ev,_ZThn88_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21154C2[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&_ZN8S21154C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C2D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21154C2[];
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C2[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C2[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21154C6D1Ev,_ZThn32_N8S21154C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21154C6D0Ev,_ZThn32_N8S21154C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C68S21154C4__8S21154C2[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C4__8S21154C2[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C4__8S21154C2[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C4__8S21154C2[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
static  VTT_ENTRY vtt_S21154C2[] = {
  {&(_ZTV8S21154C2[5]),  5,29},
  {&(_ZTV8S21154C2[10]),  10,29},
  {&(_ZTV8S21154C2[17]),  17,29},
  {&(_ZTV8S21154C2[22]),  22,29},
  {&(_ZTV8S21154C2[27]),  27,29},
  {&(_tg__ZTV8S21154C4__8S21154C2[4]),  4,6},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C68S21154C4__8S21154C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C4__8S21154C2[3]),  3,5},
  {&(_tg__ZTV8S21154C6__8S21154C4__8S21154C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C4__8S21154C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21154C2[];
extern  VTBL_ENTRY _ZTV8S21154C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C2[];
static VTBL_ENTRY alt_thunk_names218[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21154C6D0Ev,_ZThn32_N8S21154C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21154C6D1Ev,_ZThn32_N8S21154C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C2D0Ev,_ZThn44_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C2D1Ev,_ZThn44_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21154C2D0Ev,_ZThn88_N8S21154C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21154C2D0Ev,_ZThn16_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21154C2D1Ev,_ZThn88_N8S21154C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21154C2D1Ev,_ZThn16_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21154C2 = {  "S21154C2", // class name
  bases_S21154C2, 5,
  &(vtc_S21154C2[0]), // expected_vtbl_contents
  &(vtt_S21154C2[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI8S21154C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21154C2),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21154C2),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names218,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21154C8  : S4161C4_nt , S21154C2 , S20760C22_nt , virtual S21154C6 {
  virtual  ~S21154C8(); // _ZN8S21154C8D2Ev
  S21154C8(); // tgen
};
//SIG(-1 S21154C8) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S21154C8 ::~S21154C8(){ note_dtor("S21154C8", this);}
S21154C8 ::S21154C8(){ note_ctor("S21154C8", this);} // tgen

static void Test_S21154C8()
{
  extern Class_Descriptor cd_S21154C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S21154C8, buf);
    S21154C8 *dp, &lv = *(dp=new (buf) S21154C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S21154C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21154C8)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S21154C8");
    check_base_class_offset(lv, (S20760C13*)(S21154C2*), ABISELECT(48,24), "S21154C8");
    check_base_class_offset(lv, (S20760C13*)(S21154C4*), ABISELECT(48,24), "S21154C8");
    /*is_ambiguous_... S21154C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C4*), ABISELECT(80,52), "S21154C8");
    check_base_class_offset(lv, (S20760C9*)(S21154C6*)(S21154C4*), ABISELECT(136,96), "S21154C8");
    /*is_ambiguous_... S21154C8::S21154C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C6*), ABISELECT(136,96), "S21154C8");
    check_base_class_offset(lv, (S21154C6*)(S21154C4*), ABISELECT(96,64), "S21154C8");
    check_base_class_offset(lv, (S21154C4*)(S21154C2*), ABISELECT(80,52), "S21154C8");
    check_base_class_offset(lv, (S21154C2*), 0, "S21154C8");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S21154C8");
    /*is_ambiguous_... S21154C8::S21154C6 */ AMB_check_base_class_offset(lv, (S21154C6*), ABISELECT(152,108), "S21154C8");
    test_class_info(&lv, &cd_S21154C8);
    dp->~S21154C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21154C8(Test_S21154C8, "S21154C8", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN8S21154C8C1Ev();
extern void _ZN8S21154C8D2Ev();
Name_Map name_map_S21154C8[] = {
  NSPAIR(_ZN8S21154C8C1Ev),
  NSPAIR(_ZN8S21154C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C4;
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
extern Class_Descriptor cd_S21154C2;
extern VTBL_ENTRY _ZTI8S21154C2[];
extern  VTBL_ENTRY _ZTV8S21154C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
static Base_Class bases_S21154C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21154C6,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21154C4,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21154C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21154C6,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21154C8[];
extern void _ZN8S21154C8D1Ev();
extern void _ZN8S21154C8D0Ev();
extern void ABISELECT(_ZThn40_N8S21154C8D1Ev,_ZThn20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S21154C8D0Ev,_ZThn20_N8S21154C8D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21154C8D1Ev,_ZThn24_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S21154C8D0Ev,_ZThn24_N8S21154C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S21154C8D1Ev,_ZThn52_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S21154C8D0Ev,_ZThn52_N8S21154C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S21154C8D1Ev,_ZThn96_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn136_N8S21154C8D0Ev,_ZThn96_N8S21154C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn152_N8S21154C8D1Ev,_ZThn108_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn152_N8S21154C8D0Ev,_ZThn108_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21154C8[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&_ZN8S21154C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C8D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S21154C8D1Ev,_ZThn20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S21154C8D0Ev,_ZThn20_N8S21154C8D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S21154C8[];
extern void _ZN8S21154C2D1Ev();
extern void _ZN8S21154C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C2__8S21154C8[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&_ZN8S21154C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S21154C2D1Ev,_ZThn24_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S21154C2D0Ev,_ZThn24_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C2__8S21154C8[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21154C2D1Ev,_ZThn52_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21154C2D0Ev,_ZThn52_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C2__8S21154C8[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C2__8S21154C8[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S21154C2D1Ev,_ZThn96_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S21154C2D0Ev,_ZThn96_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C2__8S21154C8[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C8[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C8[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21154C6D1Ev,_ZThn32_N8S21154C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21154C6D0Ev,_ZThn32_N8S21154C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C68S21154C4__8S21154C8[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C4__8S21154C8[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C4__8S21154C8[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C4__8S21154C8[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__8S21154C8[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C6__A1__8S21154C8[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
static  VTT_ENTRY vtt_S21154C8[] = {
  {&(_ZTV8S21154C8[6]),  6,40},
  {&(_tg__ZTV8S21154C2__8S21154C8[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21154C2__8S21154C8[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C2__8S21154C8[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C2__8S21154C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C2__8S21154C8[3]),  3,5},
  {&(_ZTV8S21154C8[15]),  15,40},
  {&(_ZTV8S21154C8[22]),  22,40},
  {&(_ZTV8S21154C8[27]),  27,40},
  {&(_ZTV8S21154C8[32]),  32,40},
  {&(_ZTV8S21154C8[38]),  38,40},
  {&(_tg__ZTV8S21154C4__8S21154C8[4]),  4,6},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C68S21154C4__8S21154C8[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C4__8S21154C8[3]),  3,5},
  {&(_tg__ZTV8S21154C6__8S21154C4__8S21154C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C4__8S21154C8[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__8S21154C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C6__A1__8S21154C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21154C8[];
extern  VTBL_ENTRY _ZTV8S21154C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C8[];
static VTBL_ENTRY alt_thunk_names219[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21154C6D0Ev,_ZThn32_N8S21154C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21154C6D1Ev,_ZThn32_N8S21154C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C2D0Ev,_ZThn52_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C2D1Ev,_ZThn52_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C2D0Ev,_ZThn96_N8S21154C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C2D0Ev,_ZThn24_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C2D1Ev,_ZThn96_N8S21154C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C2D1Ev,_ZThn24_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21154C8D0Ev,_ZThn108_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21154C8D1Ev,_ZThn108_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C8D0Ev,_ZThn52_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C8D1Ev,_ZThn52_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C8D0Ev,_ZThn96_N8S21154C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C8D0Ev,_ZThn24_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C8D1Ev,_ZThn96_N8S21154C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C8D1Ev,_ZThn24_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21154C8 = {  "S21154C8", // class name
  bases_S21154C8, 9,
  &(vtc_S21154C8[0]), // expected_vtbl_contents
  &(vtt_S21154C8[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI8S21154C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21154C8),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21154C8),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names219,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21154C7  : S20760C9 , S21154C8 {
  virtual  ~S21154C7(); // _ZN8S21154C7D2Ev
  S21154C7(); // tgen
};
//SIG(-1 S21154C7) C1{ BC2{ vd m FL} BC3{ BC4{ m Fp} BC5{ VBC6{ vd m Fi[6]} VBC7{ BC2 VBC6 BC8{ VBC2 vd} FC6} FD} BC9{ vd m} VBC8 vd} vd}


 S21154C7 ::~S21154C7(){ note_dtor("S21154C7", this);}
S21154C7 ::S21154C7(){ note_ctor("S21154C7", this);} // tgen

static void Test_S21154C7()
{
  extern Class_Descriptor cd_S21154C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,32)];
    init_test(&cd_S21154C7, buf);
    S21154C7 *dp, &lv = *(dp=new (buf) S21154C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S21154C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21154C7)");
    /*is_ambiguous_... S21154C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S21154C7");
    check_base_class_offset(lv, (S4161C4_nt*)(S21154C8*), ABISELECT(48,28), "S21154C7");
    check_base_class_offset(lv, (S20760C13*)(S21154C2*)(S21154C8*), ABISELECT(64,36), "S21154C7");
    check_base_class_offset(lv, (S20760C13*)(S21154C4*), ABISELECT(64,36), "S21154C7");
    /*is_ambiguous_... S21154C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C4*), ABISELECT(96,64), "S21154C7");
    check_base_class_offset(lv, (S20760C9*)(S21154C6*)(S21154C4*), ABISELECT(152,108), "S21154C7");
    /*is_ambiguous_... S21154C7::S21154C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C6*), ABISELECT(152,108), "S21154C7");
    check_base_class_offset(lv, (S21154C6*)(S21154C4*), ABISELECT(112,76), "S21154C7");
    check_base_class_offset(lv, (S21154C4*)(S21154C2*)(S21154C8*), ABISELECT(96,64), "S21154C7");
    check_base_class_offset(lv, (S21154C2*)(S21154C8*), ABISELECT(16,12), "S21154C7");
    check_base_class_offset(lv, (S20760C22_nt*)(S21154C8*), ABISELECT(56,32), "S21154C7");
    /*is_ambiguous_... S21154C8::S21154C6 */ AMB_check_base_class_offset(lv, (S21154C6*)(S21154C8*), ABISELECT(168,120), "S21154C7");
    check_base_class_offset(lv, (S21154C8*), ABISELECT(16,12), "S21154C7");
    test_class_info(&lv, &cd_S21154C7);
    dp->~S21154C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21154C7(Test_S21154C7, "S21154C7", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN8S21154C7C1Ev();
extern void _ZN8S21154C7D2Ev();
Name_Map name_map_S21154C7[] = {
  NSPAIR(_ZN8S21154C7C1Ev),
  NSPAIR(_ZN8S21154C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C4;
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
extern Class_Descriptor cd_S21154C2;
extern VTBL_ENTRY _ZTI8S21154C2[];
extern  VTBL_ENTRY _ZTV8S21154C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C8;
extern VTBL_ENTRY _ZTI8S21154C8[];
extern  VTBL_ENTRY _ZTV8S21154C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C8[];
static Base_Class bases_S21154C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(64,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(152,108), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21154C6,    ABISELECT(112,76), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21154C4,    ABISELECT(96,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21154C2,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21154C6,    ABISELECT(168,120), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21154C8,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21154C7[];
extern void _ZN8S21154C7D1Ev();
extern void _ZN8S21154C7D0Ev();
extern void ABISELECT(_ZThn16_N8S21154C7D1Ev,_ZThn12_N8S21154C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C7D0Ev,_ZThn12_N8S21154C7D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C7D1Ev,_ZThn32_N8S21154C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C7D0Ev,_ZThn32_N8S21154C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C7D1Ev,_ZTv0_n12_N8S21154C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S21154C7D1Ev,_ZThn36_N8S21154C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C7D0Ev,_ZTv0_n12_N8S21154C7D0Ev)();
extern void ABISELECT(_ZThn64_N8S21154C7D0Ev,_ZThn36_N8S21154C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C7D1Ev,_ZTv0_n20_N8S21154C7D1Ev)();
extern void ABISELECT(_ZThn96_N8S21154C7D1Ev,_ZThn64_N8S21154C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C7D0Ev,_ZTv0_n20_N8S21154C7D0Ev)();
extern void ABISELECT(_ZThn96_N8S21154C7D0Ev,_ZThn64_N8S21154C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21154C7D1Ev,_ZTvn12_n20_N8S21154C7D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C7D0Ev,_ZTvn12_n20_N8S21154C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C7D1Ev,_ZTv0_n12_N8S21154C7D1Ev)();
extern void ABISELECT(_ZThn152_N8S21154C7D1Ev,_ZThn108_N8S21154C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C7D0Ev,_ZTv0_n12_N8S21154C7D0Ev)();
extern void ABISELECT(_ZThn152_N8S21154C7D0Ev,_ZThn108_N8S21154C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C7D1Ev,_ZTv0_n16_N8S21154C7D1Ev)();
extern void ABISELECT(_ZThn168_N8S21154C7D1Ev,_ZThn120_N8S21154C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C7D0Ev,_ZTv0_n16_N8S21154C7D0Ev)();
extern void ABISELECT(_ZThn168_N8S21154C7D0Ev,_ZThn120_N8S21154C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21154C7[] = {
  ABISELECT(168,120),
  ABISELECT(152,108),
  ABISELECT(96,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&_ZN8S21154C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C7D0Ev,
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C7D1Ev,_ZThn12_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C7D0Ev,_ZThn12_N8S21154C7D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21154C7D1Ev,_ZThn32_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21154C7D0Ev,_ZThn32_N8S21154C7D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C7D1Ev,_ZTv0_n12_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C7D0Ev,_ZTv0_n12_N8S21154C7D0Ev),
  ABISELECT(-96,-64),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C7D1Ev,_ZTv0_n20_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C7D0Ev,_ZTv0_n20_N8S21154C7D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C7D1Ev,_ZTvn12_n20_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C7D0Ev,_ZTvn12_n20_N8S21154C7D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C7D1Ev,_ZTv0_n12_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C7D0Ev,_ZTv0_n12_N8S21154C7D0Ev),
  ABISELECT(-168,-120),
  ABISELECT(-16,-12),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C7D1Ev,_ZTv0_n16_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C7D0Ev,_ZTv0_n16_N8S21154C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S21154C7[];
extern void _ZN8S21154C8D1Ev();
extern void _ZN8S21154C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C8__8S21154C7[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&_ZN8S21154C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C8D0Ev,
};
extern void _ZN8S21154C2D1Ev();
extern void _ZN8S21154C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C28S21154C8__8S21154C7[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&_ZN8S21154C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S21154C2D1Ev,_ZThn24_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S21154C2D0Ev,_ZThn24_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C28S21154C8__8S21154C7[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21154C2D1Ev,_ZThn52_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21154C2D0Ev,_ZThn52_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C28S21154C8__8S21154C7[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C28S21154C8__8S21154C7[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S21154C2D1Ev,_ZThn96_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S21154C2D0Ev,_ZThn96_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C28S21154C8__8S21154C7[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21154C8D1Ev,_ZThn24_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S21154C8D0Ev,_ZThn24_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C8__8S21154C7[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S21154C8D1Ev,_ZThn52_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S21154C8D0Ev,_ZThn52_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C8__8S21154C7[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C8__8S21154C7[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S21154C8D1Ev,_ZThn96_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn136_N8S21154C8D0Ev,_ZThn96_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C8__8S21154C7[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn152_N8S21154C8D1Ev,_ZThn108_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn152_N8S21154C8D0Ev,_ZThn108_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__8S21154C8__8S21154C7[] = {
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev),
};
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C7[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C7[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21154C6D1Ev,_ZThn32_N8S21154C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21154C6D0Ev,_ZThn32_N8S21154C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C68S21154C4__8S21154C7[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C4__8S21154C7[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C4__8S21154C7[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C4__8S21154C7[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__8S21154C7[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C6__A1__8S21154C7[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
static  VTT_ENTRY vtt_S21154C7[] = {
  {&(_ZTV8S21154C7[6]),  6,48},
  {&(_tg__ZTV8S21154C8__8S21154C7[6]),  6,8},
  {&(_tg__ZTV8S21154C28S21154C8__8S21154C7[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21154C28S21154C8__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C28S21154C8__8S21154C7[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C28S21154C8__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C28S21154C8__8S21154C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C8__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C8__8S21154C7[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C8__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C8__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__8S21154C8__8S21154C7[4]),  4,6},
  {&(_ZTV8S21154C7[14]),  14,48},
  {&(_ZTV8S21154C7[23]),  23,48},
  {&(_ZTV8S21154C7[30]),  30,48},
  {&(_ZTV8S21154C7[35]),  35,48},
  {&(_ZTV8S21154C7[40]),  40,48},
  {&(_ZTV8S21154C7[46]),  46,48},
  {&(_tg__ZTV8S21154C4__8S21154C7[4]),  4,6},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C68S21154C4__8S21154C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C4__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S21154C6__8S21154C4__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C4__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C6__A1__8S21154C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21154C7[];
extern  VTBL_ENTRY _ZTV8S21154C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C7[];
static VTBL_ENTRY alt_thunk_names220[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21154C6D0Ev,_ZThn32_N8S21154C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21154C6D1Ev,_ZThn32_N8S21154C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21154C8D0Ev,_ZThn108_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21154C8D1Ev,_ZThn108_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C8D0Ev,_ZThn52_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C8D1Ev,_ZThn52_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C8D0Ev,_ZThn96_N8S21154C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C8D0Ev,_ZThn24_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C8D1Ev,_ZThn96_N8S21154C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C8D1Ev,_ZThn24_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C2D0Ev,_ZThn52_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C2D1Ev,_ZThn52_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C2D0Ev,_ZThn96_N8S21154C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C2D0Ev,_ZThn24_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C2D1Ev,_ZThn96_N8S21154C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C2D1Ev,_ZThn24_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C7D0Ev,_ZTv0_n16_N8S21154C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21154C7D0Ev,_ZThn120_N8S21154C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C7D1Ev,_ZTv0_n16_N8S21154C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21154C7D1Ev,_ZThn120_N8S21154C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C7D0Ev,_ZTv0_n20_N8S21154C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21154C7D0Ev,_ZThn64_N8S21154C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C7D1Ev,_ZTv0_n20_N8S21154C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21154C7D1Ev,_ZThn64_N8S21154C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C7D0Ev,_ZTv0_n12_N8S21154C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21154C7D0Ev,_ZThn108_N8S21154C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C7D0Ev,_ZThn36_N8S21154C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C7D1Ev,_ZTv0_n12_N8S21154C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21154C7D1Ev,_ZThn108_N8S21154C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C7D1Ev,_ZThn36_N8S21154C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21154C7 = {  "S21154C7", // class name
  bases_S21154C7, 11,
  &(vtc_S21154C7[0]), // expected_vtbl_contents
  &(vtt_S21154C7[0]), // expected_vtt_contents
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI8S21154C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21154C7),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21154C7),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names220,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21154C13  : virtual S4161C4_nt , virtual S20760C9 , virtual S21154C4 , S21154C8 , virtual S20760C5_nt {
  ~S21154C13(); // tgen
  S21154C13(); // tgen
};
//SIG(-1 S21154C13) C1{ VBC2{ m Fp} VBC3{ vd m FL} VBC4{ BC3 VBC5{ vd m Fi[6]} BC6{ VBC3 vd} FC5} BC7{ BC2 BC8{ VBC5 VBC4 FD} BC9{ vd m} VBC6 vd} VBC10{ vd m FL}}


S21154C13 ::~S21154C13(){ note_dtor("S21154C13", this);} // tgen
S21154C13 ::S21154C13(){ note_ctor("S21154C13", this);} // tgen

static void Test_S21154C13()
{
  extern Class_Descriptor cd_S21154C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,33)];
    init_test(&cd_S21154C13, buf);
    S21154C13 *dp, &lv = *(dp=new (buf) S21154C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,128), "sizeof(S21154C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21154C13)");
    /*is_ambiguous_... S21154C13::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(48,24), "S21154C13");
    /*is_ambiguous_... S21154C13::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(56,28), "S21154C13");
    check_base_class_offset(lv, (S20760C9*)(S21154C6*)(S21154C4*), ABISELECT(56,28), "S21154C13");
    /*is_ambiguous_... S21154C13::S21154C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C6*), ABISELECT(56,28), "S21154C13");
    /*is_ambiguous_... S21154C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C4*), ABISELECT(72,40), "S21154C13");
    check_base_class_offset(lv, (S20760C13*)(S21154C4*), ABISELECT(128,84), "S21154C13");
    check_base_class_offset(lv, (S20760C13*)(S21154C2*)(S21154C8*), ABISELECT(128,84), "S21154C13");
    check_base_class_offset(lv, (S21154C6*)(S21154C4*), ABISELECT(88,52), "S21154C13");
    check_base_class_offset(lv, (S21154C4*), ABISELECT(72,40), "S21154C13");
    check_base_class_offset(lv, (S21154C4*)(S21154C2*)(S21154C8*), ABISELECT(72,40), "S21154C13");
    check_base_class_offset(lv, (S4161C4_nt*)(S21154C8*), ABISELECT(32,16), "S21154C13");
    check_base_class_offset(lv, (S21154C2*)(S21154C8*), 0, "S21154C13");
    check_base_class_offset(lv, (S20760C22_nt*)(S21154C8*), ABISELECT(40,20), "S21154C13");
    /*is_ambiguous_... S21154C8::S21154C6 */ AMB_check_base_class_offset(lv, (S21154C6*)(S21154C8*), ABISELECT(160,112), "S21154C13");
    check_base_class_offset(lv, (S21154C8*), 0, "S21154C13");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(168,116), "S21154C13");
    test_class_info(&lv, &cd_S21154C13);
    dp->~S21154C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21154C13(Test_S21154C13, "S21154C13", ABISELECT(192,128));

#else // __cplusplus

extern void _ZN9S21154C13C1Ev();
extern void _ZN9S21154C13D1Ev();
Name_Map name_map_S21154C13[] = {
  NSPAIR(_ZN9S21154C13C1Ev),
  NSPAIR(_ZN9S21154C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C4;
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21154C2;
extern VTBL_ENTRY _ZTI8S21154C2[];
extern  VTBL_ENTRY _ZTV8S21154C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C8;
extern VTBL_ENTRY _ZTI8S21154C8[];
extern  VTBL_ENTRY _ZTV8S21154C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C8[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S21154C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(56,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(128,84), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21154C6,    ABISELECT(88,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21154C4,    ABISELECT(72,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21154C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21154C6,    ABISELECT(160,112), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21154C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C5_nt,    ABISELECT(168,116), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21154C13[];
extern void _ZN9S21154C13D1Ev();
extern void _ZN9S21154C13D0Ev();
extern void ABISELECT(_ZThn40_N9S21154C13D1Ev,_ZThn20_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S21154C13D0Ev,_ZThn20_N9S21154C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S21154C13D1Ev,_ZThn28_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn56_N9S21154C13D0Ev,_ZThn28_N9S21154C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21154C13D1Ev,_ZTv0_n20_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S21154C13D1Ev,_ZThn40_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21154C13D0Ev,_ZTv0_n20_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn72_N9S21154C13D0Ev,_ZThn40_N9S21154C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21154C13D1Ev,_ZTvn12_n20_N9S21154C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21154C13D0Ev,_ZTvn12_n20_N9S21154C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn128_N9S21154C13D1Ev,_ZThn84_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn128_N9S21154C13D0Ev,_ZThn84_N9S21154C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21154C13D1Ev,_ZTv0_n16_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn160_N9S21154C13D1Ev,_ZThn112_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21154C13D0Ev,_ZTv0_n16_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn160_N9S21154C13D0Ev,_ZThn112_N9S21154C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn168_N9S21154C13D1Ev,_ZThn116_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn168_N9S21154C13D0Ev,_ZThn116_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21154C13[] = {
  ABISELECT(168,116),
  ABISELECT(48,24),
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&_ZN9S21154C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21154C13D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S21154C13D1Ev,_ZThn20_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S21154C13D0Ev,_ZThn20_N9S21154C13D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C13D1Ev,_ZTv0_n20_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C13D0Ev,_ZTv0_n20_N9S21154C13D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C13D1Ev,_ZTvn12_n20_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C13D0Ev,_ZTvn12_n20_N9S21154C13D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev),
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C13D1Ev,_ZTv0_n16_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C13D0Ev,_ZTv0_n16_N9S21154C13D0Ev),
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S21154C13[];
extern void _ZN8S21154C8D1Ev();
extern void _ZN8S21154C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C8__9S21154C13[] = {
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&_ZN8S21154C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C8D0Ev,
};
extern void _ZN8S21154C2D1Ev();
extern void _ZN8S21154C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C28S21154C8__9S21154C13[] = {
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&_ZN8S21154C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S21154C2D1Ev,_ZThn84_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S21154C2D0Ev,_ZThn84_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C28S21154C8__9S21154C13[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S21154C2D1Ev,_ZThn40_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S21154C2D0Ev,_ZThn40_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C28S21154C8__9S21154C13[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C28S21154C8__9S21154C13[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C2D1Ev,_ZThn28_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C2D0Ev,_ZThn28_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C28S21154C8__9S21154C13[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S21154C8D1Ev,_ZThn84_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S21154C8D0Ev,_ZThn84_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C8__9S21154C13[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn72_N8S21154C8D1Ev,_ZThn40_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn72_N8S21154C8D0Ev,_ZThn40_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C8__9S21154C13[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C8__9S21154C13[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C8D1Ev,_ZThn28_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C8D0Ev,_ZThn28_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C8__9S21154C13[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn160_N8S21154C8D1Ev,_ZThn112_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn160_N8S21154C8D0Ev,_ZThn112_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__8S21154C8__9S21154C13[] = {
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev),
};
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C4__9S21154C13[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__9S21154C13[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C68S21154C4__9S21154C13[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C4__9S21154C13[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C4__9S21154C13[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C4__9S21154C13[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__9S21154C13[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C6__A1__9S21154C13[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
static  VTT_ENTRY vtt_S21154C13[] = {
  {&(_ZTV9S21154C13[8]),  8,47},
  {&(_tg__ZTV8S21154C8__9S21154C13[6]),  6,8},
  {&(_tg__ZTV8S21154C28S21154C8__9S21154C13[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21154C28S21154C8__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C28S21154C8__9S21154C13[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C28S21154C8__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C28S21154C8__9S21154C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C8__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C8__9S21154C13[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C8__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C8__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__8S21154C8__9S21154C13[4]),  4,6},
  {&(_ZTV9S21154C13[17]),  17,47},
  {&(_ZTV9S21154C13[24]),  24,47},
  {&(_ZTV9S21154C13[34]),  34,47},
  {&(_ZTV9S21154C13[29]),  29,47},
  {&(_ZTV9S21154C13[40]),  40,47},
  {&(_ZTV9S21154C13[45]),  45,47},
  {&(_tg__ZTV8S21154C4__9S21154C13[4]),  4,6},
  {&(_tg__ZTV8S21154C68S21154C4__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C68S21154C4__9S21154C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C4__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S21154C6__8S21154C4__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C4__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C6__A1__9S21154C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21154C13[];
extern  VTBL_ENTRY _ZTV9S21154C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21154C13[];
static VTBL_ENTRY alt_thunk_names221[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21154C8D0Ev,_ZThn112_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21154C8D1Ev,_ZThn112_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21154C8D0Ev,_ZThn40_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21154C8D1Ev,_ZThn40_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C8D0Ev,_ZThn28_N8S21154C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21154C8D0Ev,_ZThn84_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C8D1Ev,_ZThn28_N8S21154C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21154C8D1Ev,_ZThn84_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21154C2D0Ev,_ZThn40_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21154C2D1Ev,_ZThn40_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C2D0Ev,_ZThn28_N8S21154C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21154C2D0Ev,_ZThn84_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C2D1Ev,_ZThn28_N8S21154C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21154C2D1Ev,_ZThn84_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C13D0Ev,_ZTv0_n16_N9S21154C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21154C13D0Ev,_ZThn112_N9S21154C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C13D1Ev,_ZTv0_n16_N9S21154C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21154C13D1Ev,_ZThn112_N9S21154C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C13D0Ev,_ZTv0_n20_N9S21154C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21154C13D0Ev,_ZThn40_N9S21154C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C13D1Ev,_ZTv0_n20_N9S21154C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21154C13D1Ev,_ZThn40_N9S21154C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21154C13D0Ev,_ZThn116_N9S21154C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21154C13D0Ev,_ZThn84_N9S21154C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21154C13D0Ev,_ZThn28_N9S21154C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21154C13D1Ev,_ZThn116_N9S21154C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21154C13D1Ev,_ZThn84_N9S21154C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21154C13D1Ev,_ZThn28_N9S21154C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21154C13 = {  "S21154C13", // class name
  bases_S21154C13, 12,
  &(vtc_S21154C13[0]), // expected_vtbl_contents
  &(vtt_S21154C13[0]), // expected_vtt_contents
  ABISELECT(192,128), // object size
  NSPAIRA(_ZTI9S21154C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21154C13),47, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21154C13),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names221,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21154C15  : virtual S20760C13 , S21154C4 , virtual S4161C4_nt {
  ::S21154C13 s21154c15f0;
  ~S21154C15(); // tgen
  S21154C15(); // tgen
};
//SIG(-1 S21154C15) C1{ VBC2{ vd m Fi[6]} BC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} VBC6{ m Fp} FC7{ VBC6 VBC4 VBC3 BC8{ BC6 BC9{ VBC2 VBC3 FD} BC10{ vd m} VBC5 vd} VBC11{ vd m FL}}}


S21154C15 ::~S21154C15(){ note_dtor("S21154C15", this);} // tgen
S21154C15 ::S21154C15(){ note_ctor("S21154C15", this);} // tgen

static void Test_S21154C15()
{
  extern Class_Descriptor cd_S21154C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,55)];
    init_test(&cd_S21154C15, buf);
    S21154C15 *dp, &lv = *(dp=new (buf) S21154C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,216), "sizeof(S21154C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21154C15)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(256,172), "S21154C15");
    check_base_class_offset(lv, (S20760C13*)(S21154C4*), ABISELECT(256,172), "S21154C15");
    /*is_ambiguous_... S21154C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C4*), 0, "S21154C15");
    check_base_class_offset(lv, (S20760C9*)(S21154C6*)(S21154C4*), ABISELECT(288,200), "S21154C15");
    check_base_class_offset(lv, (S21154C6*)(S21154C4*), ABISELECT(16,12), "S21154C15");
    check_base_class_offset(lv, (S21154C4*), 0, "S21154C15");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(304,212), "S21154C15");
    check_field_offset(lv, s21154c15f0, ABISELECT(64,44), "S21154C15.s21154c15f0");
    test_class_info(&lv, &cd_S21154C15);
    dp->~S21154C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21154C15(Test_S21154C15, "S21154C15", ABISELECT(320,216));

#else // __cplusplus

extern void _ZN9S21154C15C1Ev();
extern void _ZN9S21154C15D1Ev();
Name_Map name_map_S21154C15[] = {
  NSPAIR(_ZN9S21154C15C1Ev),
  NSPAIR(_ZN9S21154C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C4;
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S21154C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(256,172), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(288,200), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21154C6,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21154C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21154C15[];
extern void _ZN9S21154C15D1Ev();
extern void _ZN9S21154C15D0Ev();
extern void ABISELECT(_ZThn16_N9S21154C15D1Ev,_ZThn12_N9S21154C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21154C15D0Ev,_ZThn12_N9S21154C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev)();
extern void ABISELECT(_ZThn256_N9S21154C15D1Ev,_ZThn172_N9S21154C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev)();
extern void ABISELECT(_ZThn256_N9S21154C15D0Ev,_ZThn172_N9S21154C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev)();
extern void ABISELECT(_ZThn288_N9S21154C15D1Ev,_ZThn200_N9S21154C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev)();
extern void ABISELECT(_ZThn288_N9S21154C15D0Ev,_ZThn200_N9S21154C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21154C15[] = {
  ABISELECT(304,212),
  ABISELECT(288,200),
  ABISELECT(256,172),
  0,
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&_ZN9S21154C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21154C15D0Ev,
  ABISELECT(272,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C15D1Ev,_ZThn12_N9S21154C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C15D0Ev,_ZThn12_N9S21154C15D0Ev),
  ABISELECT(-256,-172),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev),
  ABISELECT(-288,-200),
  ABISELECT(-288,-200),
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S21154C15[];
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C4__9S21154C15[] = {
  ABISELECT(288,200),
  ABISELECT(256,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__9S21154C15[] = {
  ABISELECT(272,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZThn272_N8S21154C6D1Ev,_ZThn188_N8S21154C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
extern void ABISELECT(_ZThn272_N8S21154C6D0Ev,_ZThn188_N8S21154C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C68S21154C4__9S21154C15[] = {
  ABISELECT(-272,-188),
  ABISELECT(-272,-188),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S21154C4D1Ev,_ZThn172_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S21154C4D0Ev,_ZThn172_N8S21154C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C4__9S21154C15[] = {
  ABISELECT(-256,-172),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C4__9S21154C15[] = {
  ABISELECT(272,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn288_N8S21154C4D1Ev,_ZThn200_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn288_N8S21154C4D0Ev,_ZThn200_N8S21154C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C4__9S21154C15[] = {
  ABISELECT(-288,-200),
  ABISELECT(-288,-200),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
static  VTT_ENTRY vtt_S21154C15[] = {
  {&(_ZTV9S21154C15[5]),  5,22},
  {&(_tg__ZTV8S21154C4__9S21154C15[4]),  4,6},
  {&(_tg__ZTV8S21154C68S21154C4__9S21154C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C68S21154C4__9S21154C15[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C4__9S21154C15[3]),  3,5},
  {&(_tg__ZTV8S21154C6__8S21154C4__9S21154C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C4__9S21154C15[3]),  3,5},
  {&(_ZTV9S21154C15[15]),  15,22},
  {&(_ZTV9S21154C15[10]),  10,22},
  {&(_ZTV9S21154C15[20]),  20,22},
};
extern VTBL_ENTRY _ZTI9S21154C15[];
extern  VTBL_ENTRY _ZTV9S21154C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21154C15[];
static VTBL_ENTRY alt_thunk_names222[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21154C4D0Ev,_ZThn200_N8S21154C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21154C4D0Ev,_ZThn172_N8S21154C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21154C4D1Ev,_ZThn200_N8S21154C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21154C4D1Ev,_ZThn172_N8S21154C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21154C6D0Ev,_ZThn188_N8S21154C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21154C6D1Ev,_ZThn188_N8S21154C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21154C15D0Ev,_ZThn200_N9S21154C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S21154C15D0Ev,_ZThn172_N9S21154C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21154C15D1Ev,_ZThn200_N9S21154C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S21154C15D1Ev,_ZThn172_N9S21154C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21154C15 = {  "S21154C15", // class name
  bases_S21154C15, 6,
  &(vtc_S21154C15[0]), // expected_vtbl_contents
  &(vtt_S21154C15[0]), // expected_vtt_contents
  ABISELECT(320,216), // object size
  NSPAIRA(_ZTI9S21154C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21154C15),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21154C15),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names222,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21154C11  : S4228C37 , S20760C9 , virtual S4161C4_nt , S21154C13 , virtual S21154C15 {
  int s21154c11f0;
  virtual  ~S21154C11(); // _ZN9S21154C11D2Ev
  S21154C11(); // tgen
};
//SIG(-1 S21154C11) C1{ BC2{ m} BC3{ vd m FL} VBC4{ m Fp} BC5{ VBC4 VBC3 VBC6{ BC3 VBC7{ vd m Fi[6]} BC8{ VBC3 vd} FC7} BC9{ BC4 BC10{ VBC7 VBC6 FD} BC11{ vd m} VBC8 vd} VBC12{ vd m FL}} VBC13{ VBC7 BC6 VBC4 FC5} vd Fi}


 S21154C11 ::~S21154C11(){ note_dtor("S21154C11", this);}
S21154C11 ::S21154C11(){ note_ctor("S21154C11", this);} // tgen

static void Test_S21154C11()
{
  extern Class_Descriptor cd_S21154C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,80)];
    init_test(&cd_S21154C11, buf);
    S21154C11 *dp, &lv = *(dp=new (buf) S21154C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,316), "sizeof(S21154C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21154C11)");
    check_base_class_offset(lv, (S4228C37*), 0, "S21154C11");
    /*is_ambiguous_... S21154C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S21154C11");
    /*is_ambiguous_... S21154C11::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(72,40), "S21154C11");
    /*is_ambiguous_... S21154C13::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S21154C13*), ABISELECT(72,40), "S21154C11");
    check_base_class_offset(lv, (S4161C4_nt*)(S21154C15*), ABISELECT(72,40), "S21154C11");
    /*is_ambiguous_... S21154C13::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C13*), ABISELECT(80,44), "S21154C11");
    /*is_ambiguous_... S21154C11::S21154C4 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C6*)(S21154C4*), ABISELECT(80,44), "S21154C11");
    /*is_ambiguous_... S21154C11::S21154C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C6*), ABISELECT(80,44), "S21154C11");
    check_base_class_offset(lv, (S20760C9*)(S21154C6*)(S21154C4*)(S21154C15*), ABISELECT(80,44), "S21154C11");
    /*is_ambiguous_... S21154C11::S21154C4 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C4*), ABISELECT(96,56), "S21154C11");
    /*is_ambiguous_... S21154C11::S21154C4 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21154C4*), ABISELECT(152,100), "S21154C11");
    check_base_class_offset(lv, (S20760C13*)(S21154C2*)(S21154C8*)(S21154C13*), ABISELECT(152,100), "S21154C11");
    check_base_class_offset(lv, (S20760C13*)(S21154C15*), ABISELECT(152,100), "S21154C11");
    check_base_class_offset(lv, (S20760C13*)(S21154C4*)(S21154C15*), ABISELECT(152,100), "S21154C11");
    /*is_ambiguous_... S21154C11::S21154C4 */ AMB_check_base_class_offset(lv, (S21154C6*)(S21154C4*), ABISELECT(112,68), "S21154C11");
    check_base_class_offset(lv, (S21154C4*)(S21154C13*), ABISELECT(96,56), "S21154C11");
    check_base_class_offset(lv, (S21154C4*)(S21154C2*)(S21154C8*)(S21154C13*), ABISELECT(96,56), "S21154C11");
    check_base_class_offset(lv, (S4161C4_nt*)(S21154C8*)(S21154C13*), ABISELECT(48,28), "S21154C11");
    check_base_class_offset(lv, (S21154C2*)(S21154C8*)(S21154C13*), ABISELECT(16,12), "S21154C11");
    check_base_class_offset(lv, (S20760C22_nt*)(S21154C8*)(S21154C13*), ABISELECT(56,32), "S21154C11");
    /*is_ambiguous_... S21154C8::S21154C6 */ AMB_check_base_class_offset(lv, (S21154C6*)(S21154C8*)(S21154C13*), ABISELECT(184,128), "S21154C11");
    check_base_class_offset(lv, (S21154C8*)(S21154C13*), ABISELECT(16,12), "S21154C11");
    check_base_class_offset(lv, (S20760C5_nt*)(S21154C13*), ABISELECT(192,132), "S21154C11");
    check_base_class_offset(lv, (S21154C13*), ABISELECT(16,12), "S21154C11");
    /*is_ambiguous_... S21154C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C4*)(S21154C15*), ABISELECT(208,144), "S21154C11");
    check_base_class_offset(lv, (S21154C6*)(S21154C4*)(S21154C15*), ABISELECT(224,156), "S21154C11");
    check_base_class_offset(lv, (S21154C4*)(S21154C15*), ABISELECT(208,144), "S21154C11");
    check_base_class_offset(lv, (S21154C15*), ABISELECT(208,144), "S21154C11");
    check_field_offset(lv, s21154c11f0, ABISELECT(64,36), "S21154C11.s21154c11f0");
    test_class_info(&lv, &cd_S21154C11);
    dp->~S21154C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21154C11(Test_S21154C11, "S21154C11", ABISELECT(464,316));

#else // __cplusplus

extern void _ZN9S21154C11C1Ev();
extern void _ZN9S21154C11D2Ev();
Name_Map name_map_S21154C11[] = {
  NSPAIR(_ZN9S21154C11C1Ev),
  NSPAIR(_ZN9S21154C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C4;
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21154C2;
extern VTBL_ENTRY _ZTI8S21154C2[];
extern  VTBL_ENTRY _ZTV8S21154C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C8;
extern VTBL_ENTRY _ZTI8S21154C8[];
extern  VTBL_ENTRY _ZTV8S21154C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C8[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21154C13;
extern VTBL_ENTRY _ZTI9S21154C13[];
extern  VTBL_ENTRY _ZTV9S21154C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21154C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C4;
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
extern Class_Descriptor cd_S21154C15;
extern VTBL_ENTRY _ZTI9S21154C15[];
extern  VTBL_ENTRY _ZTV9S21154C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21154C15[];
static Base_Class bases_S21154C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,100), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21154C6,    ABISELECT(112,68), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21154C4,    ABISELECT(96,56), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21154C2,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21154C6,    ABISELECT(184,128), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21154C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(192,132), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S21154C13,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21154C6,    ABISELECT(224,156), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21154C4,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21154C15,    ABISELECT(208,144), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21154C11[];
extern void _ZN9S21154C11D1Ev();
extern void _ZN9S21154C11D0Ev();
extern void ABISELECT(_ZThn16_N9S21154C11D1Ev,_ZThn12_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S21154C11D0Ev,_ZThn12_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn56_N9S21154C11D1Ev,_ZThn32_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S21154C11D0Ev,_ZThn32_N9S21154C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn80_N9S21154C11D1Ev,_ZThn44_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn80_N9S21154C11D0Ev,_ZThn44_N9S21154C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21154C11D1Ev,_ZTv0_n20_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn96_N9S21154C11D1Ev,_ZThn56_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21154C11D0Ev,_ZTv0_n20_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn96_N9S21154C11D0Ev,_ZThn56_N9S21154C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21154C11D1Ev,_ZTvn12_n20_N9S21154C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21154C11D0Ev,_ZTvn12_n20_N9S21154C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn152_N9S21154C11D1Ev,_ZThn100_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn152_N9S21154C11D0Ev,_ZThn100_N9S21154C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21154C11D1Ev,_ZTv0_n16_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn184_N9S21154C11D1Ev,_ZThn128_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21154C11D0Ev,_ZTv0_n16_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn184_N9S21154C11D0Ev,_ZThn128_N9S21154C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn192_N9S21154C11D1Ev,_ZThn132_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn192_N9S21154C11D0Ev,_ZThn132_N9S21154C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21154C11D1Ev,_ZTv0_n24_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn208_N9S21154C11D1Ev,_ZThn144_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21154C11D0Ev,_ZTv0_n24_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn208_N9S21154C11D0Ev,_ZThn144_N9S21154C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N9S21154C11D1Ev,_ZTvn12_n24_N9S21154C11D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S21154C11D0Ev,_ZTvn12_n24_N9S21154C11D0Ev)();
static  VTBL_ENTRY vtc_S21154C11[] = {
  ABISELECT(208,144),
  ABISELECT(192,132),
  ABISELECT(184,128),
  ABISELECT(152,100),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&_ZN9S21154C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21154C11D0Ev,
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C11D1Ev,_ZThn12_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C11D0Ev,_ZThn12_N9S21154C11D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21154C11D1Ev,_ZThn32_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21154C11D0Ev,_ZThn32_N9S21154C11D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C11D1Ev,_ZTv0_n20_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C11D0Ev,_ZTv0_n20_N9S21154C11D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C11D1Ev,_ZTvn12_n20_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C11D0Ev,_ZTvn12_n20_N9S21154C11D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev),
  ABISELECT(-184,-128),
  ABISELECT(-104,-84),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C11D1Ev,_ZTv0_n16_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C11D0Ev,_ZTv0_n16_N9S21154C11D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev),
  ABISELECT(-208,-144),
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21154C11D1Ev,_ZTv0_n24_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21154C11D0Ev,_ZTv0_n24_N9S21154C11D0Ev),
  ABISELECT(-144,-112),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S21154C11D1Ev,_ZTvn12_n24_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S21154C11D0Ev,_ZTvn12_n24_N9S21154C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S21154C11[];
extern void _ZN9S21154C13D1Ev();
extern void _ZN9S21154C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21154C13__9S21154C11[] = {
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&_ZN9S21154C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21154C13D0Ev,
};
extern void _ZN8S21154C8D1Ev();
extern void _ZN8S21154C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&_ZN8S21154C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C8D0Ev,
};
extern void _ZN8S21154C2D1Ev();
extern void _ZN8S21154C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C28S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&_ZN8S21154C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S21154C2D1Ev,_ZThn88_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S21154C2D0Ev,_ZThn88_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C28S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21154C2D1Ev,_ZThn44_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21154C2D0Ev,_ZThn44_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C28S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C28S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21154C2D1Ev,_ZThn32_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21154C2D0Ev,_ZThn32_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C28S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S21154C8D1Ev,_ZThn88_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn136_N8S21154C8D0Ev,_ZThn88_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S21154C8D1Ev,_ZThn44_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S21154C8D0Ev,_ZThn44_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S21154C8D1Ev,_ZThn32_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S21154C8D0Ev,_ZThn32_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn168_N8S21154C8D1Ev,_ZThn116_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn168_N8S21154C8D0Ev,_ZThn116_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__8S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S21154C13D1Ev,_ZThn32_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S21154C13D0Ev,_ZThn32_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21154C13__9S21154C11[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21154C13D1Ev,_ZTv0_n20_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn80_N9S21154C13D1Ev,_ZThn44_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21154C13D0Ev,_ZTv0_n20_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn80_N9S21154C13D0Ev,_ZThn44_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__9S21154C13__9S21154C11[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C13D1Ev,_ZTv0_n20_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C13D0Ev,_ZTv0_n20_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn136_N9S21154C13D1Ev,_ZThn88_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn136_N9S21154C13D0Ev,_ZThn88_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21154C13__9S21154C11[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21154C13D1Ev,_ZTvn12_n20_N9S21154C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21154C13D0Ev,_ZTvn12_n20_N9S21154C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__9S21154C13__9S21154C11[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C13D1Ev,_ZTvn12_n20_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C13D0Ev,_ZTvn12_n20_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21154C13D1Ev,_ZTv0_n16_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn168_N9S21154C13D1Ev,_ZThn116_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21154C13D0Ev,_ZTv0_n16_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn168_N9S21154C13D0Ev,_ZThn116_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__9S21154C13__9S21154C11[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C13D1Ev,_ZTv0_n16_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C13D0Ev,_ZTv0_n16_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn176_N9S21154C13D1Ev,_ZThn120_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn176_N9S21154C13D0Ev,_ZThn120_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21154C13__9S21154C11[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev),
};
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C4__9S21154C11[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__9S21154C11[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C68S21154C4__9S21154C11[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C4__9S21154C11[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C4__9S21154C11[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C4__9S21154C11[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__9S21154C11[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C6__A1__9S21154C11[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void _ZN9S21154C15D1Ev();
extern void _ZN9S21154C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21154C15__9S21154C11[] = {
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&_ZN9S21154C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21154C15D0Ev,
};
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C49S21154C15__A1__9S21154C11[] = {
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C49S21154C15__A2__9S21154C11[] = {
  ABISELECT(-144,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C68S21154C49S21154C15__A2__9S21154C11[] = {
  ABISELECT(144,112),
  ABISELECT(144,112),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C49S21154C15__A1__9S21154C11[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C49S21154C15__A1__9S21154C11[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C49S21154C15__A1__9S21154C11[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21154C15__9S21154C11[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21154C15D1Ev,_ZThn12_N9S21154C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21154C15D0Ev,_ZThn12_N9S21154C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__9S21154C15__9S21154C11[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C15D1Ev,_ZThn12_N9S21154C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C15D0Ev,_ZThn12_N9S21154C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21154C15__9S21154C11[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev),
};
static  VTT_ENTRY vtt_S21154C11[] = {
  {&(_ZTV9S21154C11[9]),  9,71},
  {&(_tg__ZTV9S21154C13__9S21154C11[8]),  8,10},
  {&(_tg__ZTV8S21154C89S21154C13__9S21154C11[6]),  6,8},
  {&(_tg__ZTV8S21154C28S21154C89S21154C13__9S21154C11[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21154C28S21154C89S21154C13__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C28S21154C89S21154C13__9S21154C11[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C28S21154C89S21154C13__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C28S21154C89S21154C13__9S21154C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C89S21154C13__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C89S21154C13__9S21154C11[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C89S21154C13__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C89S21154C13__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__8S21154C89S21154C13__9S21154C11[4]),  4,6},
  {&(_tg__ZTV8S20760C9__9S21154C13__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C4__9S21154C13__9S21154C11[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21154C13__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C68S21154C4__9S21154C13__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__9S21154C13__9S21154C11[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__9S21154C13__9S21154C11[3]),  3,5},
  {&(_ZTV9S21154C11[19]),  19,71},
  {&(_ZTV9S21154C11[28]),  28,71},
  {&(_ZTV9S21154C11[35]),  35,71},
  {&(_ZTV9S21154C11[45]),  45,71},
  {&(_ZTV9S21154C11[40]),  40,71},
  {&(_ZTV9S21154C11[51]),  51,71},
  {&(_ZTV9S21154C11[56]),  56,71},
  {&(_ZTV9S21154C11[64]),  64,71},
  {&(_ZTV9S21154C11[69]),  69,71},
  {&(_tg__ZTV8S21154C4__9S21154C11[4]),  4,6},
  {&(_tg__ZTV8S21154C68S21154C4__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C68S21154C4__9S21154C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C4__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C6__8S21154C4__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C4__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C6__A1__9S21154C11[3]),  3,5},
  {&(_tg__ZTV9S21154C15__9S21154C11[5]),  5,7},
  {&(_tg__ZTV8S21154C49S21154C15__A1__9S21154C11[4]),  4,6},
  {&(_tg__ZTV8S21154C68S21154C49S21154C15__A2__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C68S21154C49S21154C15__A2__9S21154C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C49S21154C15__A1__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C6__8S21154C49S21154C15__A1__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C49S21154C15__A1__9S21154C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21154C15__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C68S21154C4__9S21154C15__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21154C15__9S21154C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21154C11[];
extern  VTBL_ENTRY _ZTV9S21154C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21154C11[];
static VTBL_ENTRY alt_thunk_names223[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C13D0Ev,_ZTv0_n16_N9S21154C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21154C13D0Ev,_ZThn116_N9S21154C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C13D1Ev,_ZTv0_n16_N9S21154C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21154C13D1Ev,_ZThn116_N9S21154C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C13D0Ev,_ZTv0_n20_N9S21154C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21154C13D0Ev,_ZThn44_N9S21154C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C13D1Ev,_ZTv0_n20_N9S21154C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21154C13D1Ev,_ZThn44_N9S21154C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21154C13D0Ev,_ZThn120_N9S21154C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21154C13D0Ev,_ZThn88_N9S21154C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21154C13D0Ev,_ZThn32_N9S21154C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21154C13D1Ev,_ZThn120_N9S21154C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21154C13D1Ev,_ZThn88_N9S21154C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21154C13D1Ev,_ZThn32_N9S21154C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21154C8D0Ev,_ZThn116_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21154C8D1Ev,_ZThn116_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C8D0Ev,_ZThn44_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C8D1Ev,_ZThn44_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C8D0Ev,_ZThn32_N8S21154C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C8D0Ev,_ZThn88_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C8D1Ev,_ZThn32_N8S21154C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C8D1Ev,_ZThn88_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C2D0Ev,_ZThn44_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C2D1Ev,_ZThn44_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C2D0Ev,_ZThn32_N8S21154C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C2D0Ev,_ZThn88_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C2D1Ev,_ZThn32_N8S21154C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C2D1Ev,_ZThn88_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21154C11D0Ev,_ZTv0_n24_N9S21154C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S21154C11D0Ev,_ZThn144_N9S21154C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21154C11D1Ev,_ZTv0_n24_N9S21154C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S21154C11D1Ev,_ZThn144_N9S21154C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C11D0Ev,_ZTv0_n16_N9S21154C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21154C11D0Ev,_ZThn128_N9S21154C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C11D1Ev,_ZTv0_n16_N9S21154C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21154C11D1Ev,_ZThn128_N9S21154C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C11D0Ev,_ZTv0_n20_N9S21154C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21154C11D0Ev,_ZThn56_N9S21154C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C11D1Ev,_ZTv0_n20_N9S21154C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21154C11D1Ev,_ZThn56_N9S21154C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21154C11D0Ev,_ZThn132_N9S21154C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21154C11D0Ev,_ZThn100_N9S21154C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21154C11D0Ev,_ZThn44_N9S21154C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21154C11D1Ev,_ZThn132_N9S21154C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21154C11D1Ev,_ZThn100_N9S21154C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21154C11D1Ev,_ZThn44_N9S21154C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21154C11 = {  "S21154C11", // class name
  bases_S21154C11, 19,
  &(vtc_S21154C11[0]), // expected_vtbl_contents
  &(vtt_S21154C11[0]), // expected_vtt_contents
  ABISELECT(464,316), // object size
  NSPAIRA(_ZTI9S21154C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21154C11),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21154C11),46, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names223,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21154C1  : virtual S21154C2 , virtual S21154C7 , S21154C11 {
  virtual  ~S21154C1(); // _ZN8S21154C1D2Ev
  S21154C1(); // tgen
};
//SIG(1 S21154C1) C1{ VBC2{ VBC3{ vd m Fi[6]} VBC4{ BC5{ vd m FL} VBC3 BC6{ VBC5 vd} FC3} FD} VBC7{ BC5 BC8{ BC9{ m Fp} BC2 BC10{ vd m} VBC6 vd} vd} BC11{ BC12{ m} BC5 VBC9 BC13{ VBC9 VBC5 VBC4 BC8 VBC14{ vd m FL}} VBC15{ VBC3 BC4 VBC9 FC13} vd Fi} vd}


 S21154C1 ::~S21154C1(){ note_dtor("S21154C1", this);}
S21154C1 ::S21154C1(){ note_ctor("S21154C1", this);} // tgen

static void Test_S21154C1()
{
  extern Class_Descriptor cd_S21154C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(37,93)];
    init_test(&cd_S21154C1, buf);
    S21154C1 *dp, &lv = *(dp=new (buf) S21154C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(576,368), "sizeof(S21154C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21154C1)");
    /*is_ambiguous_... S21154C1::S21154C2 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21154C2*), ABISELECT(112,56), "S21154C1");
    /*is_ambiguous_... S21154C1::S21154C4 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21154C4*), ABISELECT(112,56), "S21154C1");
    check_base_class_offset(lv, (S20760C13*)(S21154C2*)(S21154C8*)(S21154C7*), ABISELECT(112,56), "S21154C1");
    check_base_class_offset(lv, (S20760C13*)(S21154C2*)(S21154C8*)(S21154C13*)(S21154C11*), ABISELECT(112,56), "S21154C1");
    check_base_class_offset(lv, (S20760C13*)(S21154C15*), ABISELECT(112,56), "S21154C1");
    check_base_class_offset(lv, (S20760C13*)(S21154C4*)(S21154C15*), ABISELECT(112,56), "S21154C1");
    /*is_ambiguous_... S21154C1::S21154C4 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C4*), ABISELECT(144,84), "S21154C1");
    /*is_ambiguous_... S21154C1::S21154C4 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C6*)(S21154C4*), ABISELECT(200,128), "S21154C1");
    /*is_ambiguous_... S21154C1::S21154C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C6*), ABISELECT(200,128), "S21154C1");
    /*is_ambiguous_... S21154C13::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C13*)(S21154C11*), ABISELECT(200,128), "S21154C1");
    check_base_class_offset(lv, (S20760C9*)(S21154C6*)(S21154C4*)(S21154C15*), ABISELECT(200,128), "S21154C1");
    /*is_ambiguous_... S21154C1::S21154C4 */ AMB_check_base_class_offset(lv, (S21154C6*)(S21154C4*), ABISELECT(160,96), "S21154C1");
    /*is_ambiguous_... S21154C1::S21154C2 */ AMB_check_base_class_offset(lv, (S21154C4*)(S21154C2*), ABISELECT(144,84), "S21154C1");
    check_base_class_offset(lv, (S21154C4*)(S21154C2*)(S21154C8*)(S21154C7*), ABISELECT(144,84), "S21154C1");
    check_base_class_offset(lv, (S21154C4*)(S21154C13*)(S21154C11*), ABISELECT(144,84), "S21154C1");
    check_base_class_offset(lv, (S21154C4*)(S21154C2*)(S21154C8*)(S21154C13*)(S21154C11*), ABISELECT(144,84), "S21154C1");
    /*is_ambiguous_... S21154C1::S21154C2 */ AMB_check_base_class_offset(lv, (S21154C2*), ABISELECT(80,40), "S21154C1");
    /*is_ambiguous_... S21154C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C7*), ABISELECT(224,140), "S21154C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21154C8*)(S21154C7*), ABISELECT(272,168), "S21154C1");
    check_base_class_offset(lv, (S21154C2*)(S21154C8*)(S21154C7*), ABISELECT(240,152), "S21154C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S21154C8*)(S21154C7*), ABISELECT(280,172), "S21154C1");
    /*is_ambiguous_... S21154C8::S21154C6 */ AMB_check_base_class_offset(lv, (S21154C6*)(S21154C8*)(S21154C7*), ABISELECT(288,176), "S21154C1");
    /*is_ambiguous_... S21154C8::S21154C6 */ AMB_check_base_class_offset(lv, (S21154C6*)(S21154C8*)(S21154C13*)(S21154C11*), ABISELECT(288,176), "S21154C1");
    check_base_class_offset(lv, (S21154C8*)(S21154C7*), ABISELECT(240,152), "S21154C1");
    check_base_class_offset(lv, (S21154C7*), ABISELECT(224,140), "S21154C1");
    check_base_class_offset(lv, (S4228C37*)(S21154C11*), 0, "S21154C1");
    /*is_ambiguous_... S21154C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C11*), 0, "S21154C1");
    /*is_ambiguous_... S21154C11::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S21154C11*), ABISELECT(296,180), "S21154C1");
    /*is_ambiguous_... S21154C13::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S21154C13*)(S21154C11*), ABISELECT(296,180), "S21154C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21154C15*), ABISELECT(296,180), "S21154C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21154C8*)(S21154C13*)(S21154C11*), ABISELECT(48,28), "S21154C1");
    check_base_class_offset(lv, (S21154C2*)(S21154C8*)(S21154C13*)(S21154C11*), ABISELECT(16,12), "S21154C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S21154C8*)(S21154C13*)(S21154C11*), ABISELECT(56,32), "S21154C1");
    check_base_class_offset(lv, (S21154C8*)(S21154C13*)(S21154C11*), ABISELECT(16,12), "S21154C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S21154C13*)(S21154C11*), ABISELECT(304,184), "S21154C1");
    check_base_class_offset(lv, (S21154C13*)(S21154C11*), ABISELECT(16,12), "S21154C1");
    /*is_ambiguous_... S21154C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C4*)(S21154C15*), ABISELECT(320,196), "S21154C1");
    check_base_class_offset(lv, (S21154C6*)(S21154C4*)(S21154C15*), ABISELECT(336,208), "S21154C1");
    check_base_class_offset(lv, (S21154C4*)(S21154C15*), ABISELECT(320,196), "S21154C1");
    check_base_class_offset(lv, (S21154C15*)(S21154C11*), ABISELECT(320,196), "S21154C1");
    check_base_class_offset(lv, (S21154C11*), 0, "S21154C1");
    test_class_info(&lv, &cd_S21154C1);
    dp->~S21154C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21154C1(Test_S21154C1, "S21154C1", ABISELECT(576,368));

#else // __cplusplus

extern void _ZN8S21154C1C1Ev();
extern void _ZN8S21154C1D2Ev();
Name_Map name_map_S21154C1[] = {
  NSPAIR(_ZN8S21154C1C1Ev),
  NSPAIR(_ZN8S21154C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C4;
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
extern Class_Descriptor cd_S21154C2;
extern VTBL_ENTRY _ZTI8S21154C2[];
extern  VTBL_ENTRY _ZTV8S21154C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C2[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21154C2;
extern VTBL_ENTRY _ZTI8S21154C2[];
extern  VTBL_ENTRY _ZTV8S21154C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C8;
extern VTBL_ENTRY _ZTI8S21154C8[];
extern  VTBL_ENTRY _ZTV8S21154C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C8[];
extern Class_Descriptor cd_S21154C7;
extern VTBL_ENTRY _ZTI8S21154C7[];
extern  VTBL_ENTRY _ZTV8S21154C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C7[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21154C2;
extern VTBL_ENTRY _ZTI8S21154C2[];
extern  VTBL_ENTRY _ZTV8S21154C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21154C8;
extern VTBL_ENTRY _ZTI8S21154C8[];
extern  VTBL_ENTRY _ZTV8S21154C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C8[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21154C13;
extern VTBL_ENTRY _ZTI9S21154C13[];
extern  VTBL_ENTRY _ZTV9S21154C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21154C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C4;
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
extern Class_Descriptor cd_S21154C15;
extern VTBL_ENTRY _ZTI9S21154C15[];
extern  VTBL_ENTRY _ZTV9S21154C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21154C15[];
extern Class_Descriptor cd_S21154C11;
extern VTBL_ENTRY _ZTI9S21154C11[];
extern  VTBL_ENTRY _ZTV9S21154C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21154C11[];
static Base_Class bases_S21154C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(112,56), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(200,128), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21154C6,    ABISELECT(160,96), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21154C4,    ABISELECT(144,84), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21154C2,    ABISELECT(80,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(272,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21154C2,    ABISELECT(240,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(280,172), //bcp->offset
    74, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21154C6,    ABISELECT(288,176), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21154C8,    ABISELECT(240,152), //bcp->offset
    66, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21154C7,    ABISELECT(224,140), //bcp->offset
    57, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(296,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21154C2,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21154C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(304,184), //bcp->offset
    84, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S21154C13,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(320,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S21154C6,    ABISELECT(336,208), //bcp->offset
    97, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S21154C4,    ABISELECT(320,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21154C15,    ABISELECT(320,196), //bcp->offset
    89, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S21154C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21154C1[];
extern void _ZN8S21154C1D1Ev();
extern void _ZN8S21154C1D0Ev();
extern void ABISELECT(_ZThn16_N8S21154C1D1Ev,_ZThn12_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C1D0Ev,_ZThn12_N8S21154C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C1D1Ev,_ZThn32_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C1D0Ev,_ZThn32_N8S21154C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S21154C1D1Ev,_ZTv0_n24_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S21154C1D1Ev,_ZThn40_N8S21154C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21154C1D0Ev,_ZTv0_n24_N8S21154C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S21154C1D0Ev,_ZThn40_N8S21154C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C1D1Ev,_ZTv0_n12_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S21154C1D1Ev,_ZThn56_N8S21154C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C1D0Ev,_ZTv0_n12_N8S21154C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S21154C1D0Ev,_ZThn56_N8S21154C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C1D1Ev,_ZTv0_n20_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S21154C1D1Ev,_ZThn84_N8S21154C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C1D0Ev,_ZTv0_n20_N8S21154C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S21154C1D0Ev,_ZThn84_N8S21154C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21154C1D1Ev,_ZTvn12_n20_N8S21154C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C1D0Ev,_ZTvn12_n20_N8S21154C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C1D1Ev,_ZTv0_n12_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn200_N8S21154C1D1Ev,_ZThn128_N8S21154C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C1D0Ev,_ZTv0_n12_N8S21154C1D0Ev)();
extern void ABISELECT(_ZThn200_N8S21154C1D0Ev,_ZThn128_N8S21154C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21154C1D1Ev,_ZTv0_n28_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S21154C1D1Ev,_ZThn140_N8S21154C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21154C1D0Ev,_ZTv0_n28_N8S21154C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S21154C1D0Ev,_ZThn140_N8S21154C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S21154C1D1Ev,_ZTvn12_n28_N8S21154C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21154C1D0Ev,_ZTvn12_n28_N8S21154C1D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21154C1D1Ev,_ZTvn32_n28_N8S21154C1D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21154C1D0Ev,_ZTvn32_n28_N8S21154C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21154C1D1Ev,_ZTv0_n16_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn288_N8S21154C1D1Ev,_ZThn176_N8S21154C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C1D0Ev,_ZTv0_n16_N8S21154C1D0Ev)();
extern void ABISELECT(_ZThn288_N8S21154C1D0Ev,_ZThn176_N8S21154C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C1D1Ev,_ZTv0_n12_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn304_N8S21154C1D1Ev,_ZThn184_N8S21154C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C1D0Ev,_ZTv0_n12_N8S21154C1D0Ev)();
extern void ABISELECT(_ZThn304_N8S21154C1D0Ev,_ZThn184_N8S21154C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21154C1D1Ev,_ZTv0_n24_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn320_N8S21154C1D1Ev,_ZThn196_N8S21154C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21154C1D0Ev,_ZTv0_n24_N8S21154C1D0Ev)();
extern void ABISELECT(_ZThn320_N8S21154C1D0Ev,_ZThn196_N8S21154C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S21154C1D1Ev,_ZTvn12_n24_N8S21154C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S21154C1D0Ev,_ZTvn12_n24_N8S21154C1D0Ev)();
static  VTBL_ENTRY vtc_S21154C1[] = {
  ABISELECT(224,140),
  ABISELECT(80,40),
  ABISELECT(320,196),
  ABISELECT(304,184),
  ABISELECT(288,176),
  ABISELECT(112,56),
  ABISELECT(144,84),
  ABISELECT(200,128),
  ABISELECT(296,180),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&_ZN8S21154C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C1D0Ev,
  ABISELECT(288,172),
  ABISELECT(280,168),
  ABISELECT(272,164),
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C1D1Ev,_ZThn12_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C1D0Ev,_ZThn12_N8S21154C1D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21154C1D1Ev,_ZThn32_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21154C1D0Ev,_ZThn32_N8S21154C1D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21154C1D1Ev,_ZTv0_n24_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21154C1D0Ev,_ZTv0_n24_N8S21154C1D0Ev),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C1D1Ev,_ZTv0_n12_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C1D0Ev,_ZTv0_n12_N8S21154C1D0Ev),
  ABISELECT(-144,-84),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C1D1Ev,_ZTv0_n20_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C1D0Ev,_ZTv0_n20_N8S21154C1D0Ev),
  ABISELECT(40,32),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C1D1Ev,_ZTvn12_n20_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C1D0Ev,_ZTvn12_n20_N8S21154C1D0Ev),
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C1D1Ev,_ZTv0_n12_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C1D0Ev,_ZTv0_n12_N8S21154C1D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21154C1D1Ev,_ZTv0_n28_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21154C1D0Ev,_ZTv0_n28_N8S21154C1D0Ev),
  ABISELECT(48,24),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-240,-152),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21154C1D1Ev,_ZTvn12_n28_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21154C1D0Ev,_ZTvn12_n28_N8S21154C1D0Ev),
  ABISELECT(-280,-172),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21154C1D1Ev,_ZTvn32_n28_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21154C1D0Ev,_ZTvn32_n28_N8S21154C1D0Ev),
  ABISELECT(-288,-176),
  ABISELECT(-88,-48),
  ABISELECT(-288,-176),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C1D1Ev,_ZTv0_n16_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C1D0Ev,_ZTv0_n16_N8S21154C1D0Ev),
  ABISELECT(-304,-184),
  ABISELECT(-304,-184),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C1D1Ev,_ZTv0_n12_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C1D0Ev,_ZTv0_n12_N8S21154C1D0Ev),
  ABISELECT(-320,-196),
  ABISELECT(-24,-16),
  ABISELECT(-120,-68),
  ABISELECT(-208,-140),
  ABISELECT(-320,-196),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21154C1D1Ev,_ZTv0_n24_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21154C1D0Ev,_ZTv0_n24_N8S21154C1D0Ev),
  ABISELECT(-136,-80),
  ABISELECT(-336,-208),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S21154C1D1Ev,_ZTvn12_n24_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S21154C1D0Ev,_ZTvn12_n24_N8S21154C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21154C1[];
extern void _ZN9S21154C11D1Ev();
extern void _ZN9S21154C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21154C11__8S21154C1[] = {
  ABISELECT(320,196),
  ABISELECT(304,184),
  ABISELECT(288,176),
  ABISELECT(112,56),
  ABISELECT(144,84),
  ABISELECT(200,128),
  ABISELECT(296,180),
  0,
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&_ZN9S21154C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21154C11D0Ev,
};
extern void _ZN9S21154C13D1Ev();
extern void _ZN9S21154C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21154C139S21154C11__8S21154C1[] = {
  ABISELECT(288,172),
  ABISELECT(280,168),
  ABISELECT(272,164),
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&_ZN9S21154C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21154C13D0Ev,
};
extern void _ZN8S21154C8D1Ev();
extern void _ZN8S21154C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C89S21154C139S21154C11__A1__8S21154C1[] = {
  ABISELECT(272,164),
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&_ZN8S21154C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C8D0Ev,
};
extern void _ZN8S21154C2D1Ev();
extern void _ZN8S21154C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[] = {
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&_ZN8S21154C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S21154C2D1Ev,_ZThn44_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S21154C2D0Ev,_ZThn44_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S21154C2D1Ev,_ZThn72_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S21154C2D0Ev,_ZThn72_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[] = {
  ABISELECT(40,32),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn184_N8S21154C2D1Ev,_ZThn116_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn184_N8S21154C2D0Ev,_ZThn116_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[] = {
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S21154C8D1Ev,_ZThn44_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S21154C8D0Ev,_ZThn44_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C89S21154C139S21154C11__A1__8S21154C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S21154C8D1Ev,_ZThn72_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S21154C8D0Ev,_ZThn72_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C89S21154C139S21154C11__A1__8S21154C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C89S21154C139S21154C11__A1__8S21154C1[] = {
  ABISELECT(40,32),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn184_N8S21154C8D1Ev,_ZThn116_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn184_N8S21154C8D0Ev,_ZThn116_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C89S21154C139S21154C11__A1__8S21154C1[] = {
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn272_N8S21154C8D1Ev,_ZThn164_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn272_N8S21154C8D0Ev,_ZThn164_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__8S21154C89S21154C139S21154C11__A1__8S21154C1[] = {
  ABISELECT(-272,-164),
  ABISELECT(-88,-48),
  ABISELECT(-272,-164),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn184_N9S21154C13D1Ev,_ZThn116_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn184_N9S21154C13D0Ev,_ZThn116_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21154C139S21154C11__8S21154C1[] = {
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21154C13D1Ev,_ZTv0_n20_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn128_N9S21154C13D1Ev,_ZThn72_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21154C13D0Ev,_ZTv0_n20_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn128_N9S21154C13D0Ev,_ZThn72_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__9S21154C139S21154C11__8S21154C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C13D1Ev,_ZTv0_n20_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C13D0Ev,_ZTv0_n20_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S21154C13D1Ev,_ZThn44_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S21154C13D0Ev,_ZThn44_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21154C139S21154C11__8S21154C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21154C13D1Ev,_ZTvn12_n20_N9S21154C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21154C13D0Ev,_ZTvn12_n20_N9S21154C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__9S21154C139S21154C11__8S21154C1[] = {
  ABISELECT(40,32),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C13D1Ev,_ZTvn12_n20_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C13D0Ev,_ZTvn12_n20_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21154C13D1Ev,_ZTv0_n16_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn272_N9S21154C13D1Ev,_ZThn164_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21154C13D0Ev,_ZTv0_n16_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn272_N9S21154C13D0Ev,_ZThn164_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__9S21154C139S21154C11__8S21154C1[] = {
  ABISELECT(-272,-164),
  ABISELECT(-88,-48),
  ABISELECT(-272,-164),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C13D1Ev,_ZTv0_n16_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C13D0Ev,_ZTv0_n16_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn288_N9S21154C13D1Ev,_ZThn172_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn288_N9S21154C13D0Ev,_ZThn172_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21154C139S21154C11__8S21154C1[] = {
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21154C11D1Ev,_ZThn12_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S21154C11D0Ev,_ZThn12_N9S21154C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21154C13__9S21154C11__8S21154C1[] = {
  ABISELECT(288,172),
  ABISELECT(280,168),
  ABISELECT(272,164),
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C11D1Ev,_ZThn12_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C11D0Ev,_ZThn12_N9S21154C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn200_N9S21154C11D1Ev,_ZThn128_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn200_N9S21154C11D0Ev,_ZThn128_N9S21154C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21154C11__8S21154C1[] = {
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21154C11D1Ev,_ZTv0_n20_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn144_N9S21154C11D1Ev,_ZThn84_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21154C11D0Ev,_ZTv0_n20_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn144_N9S21154C11D0Ev,_ZThn84_N9S21154C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__9S21154C11__8S21154C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C11D1Ev,_ZTv0_n20_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C11D0Ev,_ZTv0_n20_N9S21154C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S21154C11D1Ev,_ZThn56_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S21154C11D0Ev,_ZThn56_N9S21154C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21154C11__8S21154C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21154C11D1Ev,_ZTvn12_n20_N9S21154C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21154C11D0Ev,_ZTvn12_n20_N9S21154C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__9S21154C11__8S21154C1[] = {
  ABISELECT(40,32),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C11D1Ev,_ZTvn12_n20_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C11D0Ev,_ZTvn12_n20_N9S21154C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21154C11D1Ev,_ZTv0_n16_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn288_N9S21154C11D1Ev,_ZThn176_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21154C11D0Ev,_ZTv0_n16_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn288_N9S21154C11D0Ev,_ZThn176_N9S21154C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__9S21154C11__8S21154C1[] = {
  ABISELECT(-288,-176),
  ABISELECT(-88,-48),
  ABISELECT(-288,-176),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C11D1Ev,_ZTv0_n16_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C11D0Ev,_ZTv0_n16_N9S21154C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn304_N9S21154C11D1Ev,_ZThn184_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn304_N9S21154C11D0Ev,_ZThn184_N9S21154C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21154C11__8S21154C1[] = {
  ABISELECT(-304,-184),
  ABISELECT(-304,-184),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21154C11D1Ev,_ZTv0_n24_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn320_N9S21154C11D1Ev,_ZThn196_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21154C11D0Ev,_ZTv0_n24_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn320_N9S21154C11D0Ev,_ZThn196_N9S21154C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21154C15__9S21154C11__8S21154C1[] = {
  ABISELECT(-320,-196),
  ABISELECT(-24,-16),
  ABISELECT(-120,-68),
  ABISELECT(-208,-140),
  ABISELECT(-320,-196),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21154C11D1Ev,_ZTv0_n24_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21154C11D0Ev,_ZTv0_n24_N9S21154C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N9S21154C11D1Ev,_ZTvn12_n24_N9S21154C11D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S21154C11D0Ev,_ZTvn12_n24_N9S21154C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C49S21154C15__A2__9S21154C11__8S21154C1[] = {
  ABISELECT(-136,-80),
  ABISELECT(-336,-208),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S21154C11D1Ev,_ZTvn12_n24_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S21154C11D0Ev,_ZTvn12_n24_N9S21154C11D0Ev),
};
extern void _ZN8S21154C2D1Ev();
extern void _ZN8S21154C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C2__8S21154C1[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&_ZN8S21154C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S21154C2D1Ev,_ZThn16_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S21154C2D0Ev,_ZThn16_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C2__8S21154C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21154C2D1Ev,_ZThn44_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21154C2D0Ev,_ZThn44_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C2__8S21154C1[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C2__8S21154C1[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S21154C2D1Ev,_ZThn88_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn120_N8S21154C2D0Ev,_ZThn88_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C2__8S21154C1[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C1[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C1[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21154C6D1Ev,_ZThn32_N8S21154C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21154C6D0Ev,_ZThn32_N8S21154C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C68S21154C4__8S21154C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C4__8S21154C1[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C4__8S21154C1[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C4__8S21154C1[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void _ZN8S21154C7D1Ev();
extern void _ZN8S21154C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C7__8S21154C1[] = {
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&_ZN8S21154C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C7D0Ev,
};
extern void _ZN8S21154C8D1Ev();
extern void _ZN8S21154C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C88S21154C7__8S21154C1[] = {
  ABISELECT(48,24),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&_ZN8S21154C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C8D0Ev,
};
extern void _ZN8S21154C2D1Ev();
extern void _ZN8S21154C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C28S21154C88S21154C7__A1__8S21154C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&_ZN8S21154C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C28S21154C88S21154C7__A1__8S21154C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C28S21154C88S21154C7__A1__8S21154C1[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C28S21154C88S21154C7__A1__8S21154C1[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C28S21154C88S21154C7__A1__8S21154C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C88S21154C7__8S21154C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C88S21154C7__8S21154C1[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C88S21154C7__8S21154C1[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C88S21154C7__8S21154C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21154C8D1Ev,_ZThn24_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S21154C8D0Ev,_ZThn24_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__8S21154C88S21154C7__8S21154C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-88,-48),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C7D1Ev,_ZThn12_N8S21154C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C7D0Ev,_ZThn12_N8S21154C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C8__8S21154C7__8S21154C1[] = {
  ABISELECT(48,24),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C7D1Ev,_ZThn12_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C7D0Ev,_ZThn12_N8S21154C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C7D1Ev,_ZTv0_n12_N8S21154C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C7D0Ev,_ZTv0_n12_N8S21154C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C7__8S21154C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C7D1Ev,_ZTv0_n12_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C7D0Ev,_ZTv0_n12_N8S21154C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C7D1Ev,_ZTv0_n20_N8S21154C7D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21154C7D0Ev,_ZTv0_n20_N8S21154C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C7__8S21154C1[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C7D1Ev,_ZTv0_n20_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C7D0Ev,_ZTv0_n20_N8S21154C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C7D1Ev,_ZTvn12_n20_N8S21154C7D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C7D0Ev,_ZTvn12_n20_N8S21154C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C7__8S21154C1[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C7D1Ev,_ZTvn12_n20_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C7D0Ev,_ZTvn12_n20_N8S21154C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C7D1Ev,_ZTv0_n12_N8S21154C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C7D0Ev,_ZTv0_n12_N8S21154C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__8S21154C7__8S21154C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C7D1Ev,_ZTv0_n12_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C7D0Ev,_ZTv0_n12_N8S21154C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21154C7D1Ev,_ZTv0_n16_N8S21154C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S21154C7D1Ev,_ZThn36_N8S21154C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C7D0Ev,_ZTv0_n16_N8S21154C7D0Ev)();
extern void ABISELECT(_ZThn64_N8S21154C7D0Ev,_ZThn36_N8S21154C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__8S21154C7__8S21154C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-88,-48),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C7D1Ev,_ZTv0_n16_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C7D0Ev,_ZTv0_n16_N8S21154C7D0Ev),
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__8S21154C1[] = {
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C6__A1__8S21154C1[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void _ZN9S21154C15D1Ev();
extern void _ZN9S21154C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21154C15__8S21154C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-120,-68),
  ABISELECT(-208,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&_ZN9S21154C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21154C15D0Ev,
};
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C49S21154C15__A1__8S21154C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-208,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C49S21154C15__A2__8S21154C1[] = {
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C68S21154C49S21154C15__A2__8S21154C1[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C49S21154C15__A1__8S21154C1[] = {
  ABISELECT(208,140),
  ABISELECT(208,140),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C49S21154C15__A1__8S21154C1[] = {
  ABISELECT(-136,-80),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C49S21154C15__A1__8S21154C1[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21154C15__8S21154C1[] = {
  ABISELECT(208,140),
  ABISELECT(208,140),
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21154C15D1Ev,_ZThn12_N9S21154C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21154C15D0Ev,_ZThn12_N9S21154C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__9S21154C15__8S21154C1[] = {
  ABISELECT(-136,-80),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C15D1Ev,_ZThn12_N9S21154C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C15D0Ev,_ZThn12_N9S21154C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21154C15__8S21154C1[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev),
};
static  VTT_ENTRY vtt_S21154C1[] = {
  {&(_ZTV8S21154C1[11]),  11,102},
  {&(_tg__ZTV9S21154C11__8S21154C1[9]),  9,11},
  {&(_tg__ZTV9S21154C139S21154C11__8S21154C1[8]),  8,10},
  {&(_tg__ZTV8S21154C89S21154C139S21154C11__A1__8S21154C1[6]),  6,8},
  {&(_tg__ZTV8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C89S21154C139S21154C11__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C89S21154C139S21154C11__A1__8S21154C1[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C89S21154C139S21154C11__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C89S21154C139S21154C11__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__8S21154C89S21154C139S21154C11__A1__8S21154C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__9S21154C139S21154C11__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C4__9S21154C139S21154C11__8S21154C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21154C139S21154C11__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C68S21154C4__9S21154C139S21154C11__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__9S21154C139S21154C11__8S21154C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__9S21154C139S21154C11__8S21154C1[3]),  3,5},
  {&(_tg__ZTV9S21154C13__9S21154C11__8S21154C1[8]),  8,10},
  {&(_tg__ZTV8S20760C9__A1__9S21154C11__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C4__9S21154C11__8S21154C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21154C11__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C68S21154C4__9S21154C11__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__9S21154C11__8S21154C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__9S21154C11__8S21154C1[3]),  3,5},
  {&(_tg__ZTV9S21154C15__9S21154C11__8S21154C1[6]),  6,8},
  {&(_tg__ZTV8S21154C68S21154C49S21154C15__A2__9S21154C11__8S21154C1[3]),  3,5},
  {&(_ZTV8S21154C1[33]),  33,102},
  {&(_ZTV8S21154C1[38]),  38,102},
  {&(_ZTV8S21154C1[45]),  45,102},
  {&(_ZTV8S21154C1[50]),  50,102},
  {&(_ZTV8S21154C1[55]),  55,102},
  {&(_ZTV8S21154C1[64]),  64,102},
  {&(_ZTV8S21154C1[72]),  72,102},
  {&(_ZTV8S21154C1[76]),  76,102},
  {&(_ZTV8S21154C1[82]),  82,102},
  {&(_ZTV8S21154C1[21]),  21,102},
  {&(_ZTV8S21154C1[87]),  87,102},
  {&(_ZTV8S21154C1[95]),  95,102},
  {&(_ZTV8S21154C1[100]),  100,102},
  {&(_tg__ZTV8S21154C2__8S21154C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21154C2__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C2__8S21154C1[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C2__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C2__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C1[4]),  4,6},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C68S21154C4__8S21154C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C4__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C6__8S21154C4__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C4__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C7__8S21154C1[6]),  6,8},
  {&(_tg__ZTV8S21154C88S21154C7__8S21154C1[6]),  6,8},
  {&(_tg__ZTV8S21154C28S21154C88S21154C7__A1__8S21154C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21154C28S21154C88S21154C7__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C28S21154C88S21154C7__A1__8S21154C1[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C28S21154C88S21154C7__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C28S21154C88S21154C7__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C88S21154C7__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C88S21154C7__8S21154C1[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C88S21154C7__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C88S21154C7__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__8S21154C88S21154C7__8S21154C1[4]),  4,6},
  {&(_tg__ZTV8S21154C8__8S21154C7__8S21154C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__8S21154C7__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C7__8S21154C1[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C7__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__8S21154C7__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__8S21154C7__8S21154C1[4]),  4,6},
  {&(_tg__ZTV8S21154C6__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C6__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV9S21154C15__8S21154C1[5]),  5,7},
  {&(_tg__ZTV8S21154C49S21154C15__A1__8S21154C1[4]),  4,6},
  {&(_tg__ZTV8S21154C68S21154C49S21154C15__A2__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C68S21154C49S21154C15__A2__8S21154C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C49S21154C15__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C6__8S21154C49S21154C15__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C49S21154C15__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21154C15__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C68S21154C4__9S21154C15__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21154C15__8S21154C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21154C1[];
extern  VTBL_ENTRY _ZTV8S21154C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C1[];
static VTBL_ENTRY alt_thunk_names224[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C7D0Ev,_ZTv0_n16_N8S21154C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C7D0Ev,_ZThn36_N8S21154C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C7D1Ev,_ZTv0_n16_N8S21154C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C7D1Ev,_ZThn36_N8S21154C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21154C6D0Ev,_ZThn32_N8S21154C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21154C6D1Ev,_ZThn32_N8S21154C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21154C11D0Ev,_ZTv0_n24_N9S21154C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S21154C11D0Ev,_ZThn196_N9S21154C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21154C11D1Ev,_ZTv0_n24_N9S21154C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S21154C11D1Ev,_ZThn196_N9S21154C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C11D0Ev,_ZTv0_n16_N9S21154C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21154C11D0Ev,_ZThn176_N9S21154C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C11D1Ev,_ZTv0_n16_N9S21154C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21154C11D1Ev,_ZThn176_N9S21154C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C11D0Ev,_ZTv0_n20_N9S21154C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21154C11D0Ev,_ZThn84_N9S21154C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C11D1Ev,_ZTv0_n20_N9S21154C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21154C11D1Ev,_ZThn84_N9S21154C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S21154C11D0Ev,_ZThn184_N9S21154C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21154C11D0Ev,_ZThn56_N9S21154C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S21154C11D0Ev,_ZThn128_N9S21154C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S21154C11D1Ev,_ZThn184_N9S21154C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21154C11D1Ev,_ZThn56_N9S21154C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S21154C11D1Ev,_ZThn128_N9S21154C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C13D0Ev,_ZTv0_n16_N9S21154C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S21154C13D0Ev,_ZThn164_N9S21154C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C13D1Ev,_ZTv0_n16_N9S21154C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S21154C13D1Ev,_ZThn164_N9S21154C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C13D0Ev,_ZTv0_n20_N9S21154C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21154C13D0Ev,_ZThn72_N9S21154C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C13D1Ev,_ZTv0_n20_N9S21154C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21154C13D1Ev,_ZThn72_N9S21154C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21154C13D0Ev,_ZThn172_N9S21154C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21154C13D0Ev,_ZThn44_N9S21154C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21154C13D0Ev,_ZThn116_N9S21154C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21154C13D1Ev,_ZThn172_N9S21154C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21154C13D1Ev,_ZThn44_N9S21154C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21154C13D1Ev,_ZThn116_N9S21154C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C8D0Ev,_ZThn24_N8S21154C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21154C8D0Ev,_ZThn164_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C8D1Ev,_ZThn24_N8S21154C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21154C8D1Ev,_ZThn164_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21154C8D0Ev,_ZThn72_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21154C8D1Ev,_ZThn72_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21154C8D0Ev,_ZThn116_N8S21154C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21154C8D0Ev,_ZThn44_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21154C8D1Ev,_ZThn116_N8S21154C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21154C8D1Ev,_ZThn44_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C2D0Ev,_ZThn44_N8S21154C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21154C2D0Ev,_ZThn72_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C2D1Ev,_ZThn44_N8S21154C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21154C2D1Ev,_ZThn72_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21154C2D0Ev,_ZThn88_N8S21154C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21154C2D0Ev,_ZThn16_N8S21154C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21154C2D0Ev,_ZThn116_N8S21154C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21154C2D0Ev,_ZThn44_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21154C2D1Ev,_ZThn88_N8S21154C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21154C2D1Ev,_ZThn16_N8S21154C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21154C2D1Ev,_ZThn116_N8S21154C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21154C2D1Ev,_ZThn44_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C1D0Ev,_ZTv0_n16_N8S21154C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21154C1D0Ev,_ZThn176_N8S21154C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C1D1Ev,_ZTv0_n16_N8S21154C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21154C1D1Ev,_ZThn176_N8S21154C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21154C1D0Ev,_ZTv0_n28_N8S21154C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21154C1D0Ev,_ZThn140_N8S21154C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21154C1D1Ev,_ZTv0_n28_N8S21154C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21154C1D1Ev,_ZThn140_N8S21154C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C1D0Ev,_ZTv0_n20_N8S21154C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21154C1D0Ev,_ZThn84_N8S21154C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C1D1Ev,_ZTv0_n20_N8S21154C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21154C1D1Ev,_ZThn84_N8S21154C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C1D0Ev,_ZTv0_n12_N8S21154C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21154C1D0Ev,_ZThn184_N8S21154C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21154C1D0Ev,_ZThn128_N8S21154C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21154C1D0Ev,_ZThn56_N8S21154C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C1D1Ev,_ZTv0_n12_N8S21154C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21154C1D1Ev,_ZThn184_N8S21154C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21154C1D1Ev,_ZThn128_N8S21154C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21154C1D1Ev,_ZThn56_N8S21154C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21154C1D0Ev,_ZTv0_n24_N8S21154C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21154C1D0Ev,_ZThn196_N8S21154C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C1D0Ev,_ZThn40_N8S21154C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21154C1D1Ev,_ZTv0_n24_N8S21154C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21154C1D1Ev,_ZThn196_N8S21154C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C1D1Ev,_ZThn40_N8S21154C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21154C1 = {  "S21154C1", // class name
  bases_S21154C1, 27,
  &(vtc_S21154C1[0]), // expected_vtbl_contents
  &(vtt_S21154C1[0]), // expected_vtt_contents
  ABISELECT(576,368), // object size
  NSPAIRA(_ZTI8S21154C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21154C1),102, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21154C1),83, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names224,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21153C6  : virtual S20760C9 {
  virtual  ~S21153C6(); // _ZN8S21153C6D2Ev
  S21153C6(); // tgen
};
//SIG(-1 S21153C6) C1{ VBC2{ vd m FL} vd}


 S21153C6 ::~S21153C6(){ note_dtor("S21153C6", this);}
S21153C6 ::S21153C6(){ note_ctor("S21153C6", this);} // tgen

static void Test_S21153C6()
{
  extern Class_Descriptor cd_S21153C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S21153C6, buf);
    S21153C6 *dp, &lv = *(dp=new (buf) S21153C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S21153C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21153C6)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S21153C6");
    test_class_info(&lv, &cd_S21153C6);
    dp->~S21153C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21153C6(Test_S21153C6, "S21153C6", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S21153C6C1Ev();
extern void _ZN8S21153C6D2Ev();
Name_Map name_map_S21153C6[] = {
  NSPAIR(_ZN8S21153C6C1Ev),
  NSPAIR(_ZN8S21153C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S21153C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21153C6[];
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S21153C6D1Ev,_ZThn4_N8S21153C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S21153C6D0Ev,_ZThn4_N8S21153C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21153C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21153C6[];
static  VTT_ENTRY vtt_S21153C6[] = {
  {&(_ZTV8S21153C6[3]),  3,10},
  {&(_ZTV8S21153C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
static VTBL_ENTRY alt_thunk_names225[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21153C6D0Ev,_ZThn4_N8S21153C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21153C6D1Ev,_ZThn4_N8S21153C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21153C6 = {  "S21153C6", // class name
  bases_S21153C6, 1,
  &(vtc_S21153C6[0]), // expected_vtbl_contents
  &(vtt_S21153C6[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S21153C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21153C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21153C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names225,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21153C4  : S20760C9 , virtual S20760C13 , S21153C6 {
  ::S20760C13 s21153c4f0;
  ~S21153C4(); // tgen
  S21153C4(); // tgen
};
//SIG(-1 S21153C4) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S21153C4 ::~S21153C4(){ note_dtor("S21153C4", this);} // tgen
S21153C4 ::S21153C4(){ note_ctor("S21153C4", this);} // tgen

static void Test_S21153C4()
{
  extern Class_Descriptor cd_S21153C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S21153C4, buf);
    S21153C4 *dp, &lv = *(dp=new (buf) S21153C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S21153C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21153C4)");
    /*is_ambiguous_... S21153C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S21153C4");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S21153C4");
    check_base_class_offset(lv, (S20760C9*)(S21153C6*), ABISELECT(88,72), "S21153C4");
    check_base_class_offset(lv, (S21153C6*), ABISELECT(16,12), "S21153C4");
    check_field_offset(lv, s21153c4f0, ABISELECT(24,16), "S21153C4.s21153c4f0");
    test_class_info(&lv, &cd_S21153C4);
    dp->~S21153C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21153C4(Test_S21153C4, "S21153C4", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S21153C4C1Ev();
extern void _ZN8S21153C4D1Ev();
Name_Map name_map_S21153C4[] = {
  NSPAIR(_ZN8S21153C4C1Ev),
  NSPAIR(_ZN8S21153C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
static Base_Class bases_S21153C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21153C6,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21153C4[];
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn88_N8S21153C4D1Ev,_ZThn72_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn88_N8S21153C4D0Ev,_ZThn72_N8S21153C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21153C4[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S21153C4[];
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C4[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZThn72_N8S21153C6D1Ev,_ZThn60_N8S21153C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
extern void ABISELECT(_ZThn72_N8S21153C6D0Ev,_ZThn60_N8S21153C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C6__8S21153C4[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
static  VTT_ENTRY vtt_S21153C4[] = {
  {&(_ZTV8S21153C4[4]),  4,21},
  {&(_tg__ZTV8S21153C6__8S21153C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C6__8S21153C4[3]),  3,5},
  {&(_ZTV8S21153C4[14]),  14,21},
  {&(_ZTV8S21153C4[9]),  9,21},
  {&(_ZTV8S21153C4[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
static VTBL_ENTRY alt_thunk_names226[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21153C6D0Ev,_ZThn60_N8S21153C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21153C6D1Ev,_ZThn60_N8S21153C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21153C4D0Ev,_ZThn72_N8S21153C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21153C4D1Ev,_ZThn72_N8S21153C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21153C4 = {  "S21153C4", // class name
  bases_S21153C4, 4,
  &(vtc_S21153C4[0]), // expected_vtbl_contents
  &(vtt_S21153C4[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S21153C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21153C4),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21153C4),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names226,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21153C2  : virtual S20760C13 , virtual S21153C4 {
  long double s21153c2f0;
  ~S21153C2(); // tgen
  S21153C2(); // tgen
};
//SIG(-1 S21153C2) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S21153C2 ::~S21153C2(){ note_dtor("S21153C2", this);} // tgen
S21153C2 ::S21153C2(){ note_ctor("S21153C2", this);} // tgen

static void Test_S21153C2()
{
  extern Class_Descriptor cd_S21153C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S21153C2, buf);
    S21153C2 *dp, &lv = *(dp=new (buf) S21153C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S21153C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21153C2)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S21153C2");
    check_base_class_offset(lv, (S20760C13*)(S21153C4*), ABISELECT(32,16), "S21153C2");
    /*is_ambiguous_... S21153C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C4*), ABISELECT(64,44), "S21153C2");
    check_base_class_offset(lv, (S20760C9*)(S21153C6*)(S21153C4*), ABISELECT(120,88), "S21153C2");
    check_base_class_offset(lv, (S21153C6*)(S21153C4*), ABISELECT(80,56), "S21153C2");
    check_base_class_offset(lv, (S21153C4*), ABISELECT(64,44), "S21153C2");
    check_field_offset(lv, s21153c2f0, ABISELECT(16,4), "S21153C2.s21153c2f0");
    test_class_info(&lv, &cd_S21153C2);
    dp->~S21153C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21153C2(Test_S21153C2, "S21153C2", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN8S21153C2C1Ev();
extern void _ZN8S21153C2D1Ev();
Name_Map name_map_S21153C2[] = {
  NSPAIR(_ZN8S21153C2C1Ev),
  NSPAIR(_ZN8S21153C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C4;
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
static Base_Class bases_S21153C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21153C6,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21153C4,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21153C2[];
extern void _ZN8S21153C2D1Ev();
extern void _ZN8S21153C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S21153C2D1Ev,_ZThn16_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S21153C2D0Ev,_ZThn16_N8S21153C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21153C2D1Ev,_ZThn44_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21153C2D0Ev,_ZThn44_N8S21153C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S21153C2D1Ev,_ZThn88_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn120_N8S21153C2D0Ev,_ZThn88_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21153C2[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&_ZN8S21153C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C2D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21153C2[];
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C2[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C2[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21153C6D1Ev,_ZThn32_N8S21153C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21153C6D0Ev,_ZThn32_N8S21153C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C68S21153C4__8S21153C2[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C4__8S21153C2[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C4__8S21153C2[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C4__8S21153C2[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
static  VTT_ENTRY vtt_S21153C2[] = {
  {&(_ZTV8S21153C2[5]),  5,29},
  {&(_ZTV8S21153C2[10]),  10,29},
  {&(_ZTV8S21153C2[17]),  17,29},
  {&(_ZTV8S21153C2[22]),  22,29},
  {&(_ZTV8S21153C2[27]),  27,29},
  {&(_tg__ZTV8S21153C4__8S21153C2[4]),  4,6},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C68S21153C4__8S21153C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C4__8S21153C2[3]),  3,5},
  {&(_tg__ZTV8S21153C6__8S21153C4__8S21153C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C4__8S21153C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21153C2[];
extern  VTBL_ENTRY _ZTV8S21153C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C2[];
static VTBL_ENTRY alt_thunk_names227[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21153C6D0Ev,_ZThn32_N8S21153C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21153C6D1Ev,_ZThn32_N8S21153C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C2D0Ev,_ZThn44_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C2D1Ev,_ZThn44_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21153C2D0Ev,_ZThn88_N8S21153C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21153C2D0Ev,_ZThn16_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21153C2D1Ev,_ZThn88_N8S21153C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21153C2D1Ev,_ZThn16_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21153C2 = {  "S21153C2", // class name
  bases_S21153C2, 5,
  &(vtc_S21153C2[0]), // expected_vtbl_contents
  &(vtt_S21153C2[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI8S21153C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21153C2),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21153C2),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names227,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21153C8  : S4161C4_nt , S21153C2 , S20760C22_nt , virtual S21153C6 {
  virtual  ~S21153C8(); // _ZN8S21153C8D2Ev
  S21153C8(); // tgen
};
//SIG(-1 S21153C8) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S21153C8 ::~S21153C8(){ note_dtor("S21153C8", this);}
S21153C8 ::S21153C8(){ note_ctor("S21153C8", this);} // tgen

static void Test_S21153C8()
{
  extern Class_Descriptor cd_S21153C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S21153C8, buf);
    S21153C8 *dp, &lv = *(dp=new (buf) S21153C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S21153C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21153C8)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S21153C8");
    check_base_class_offset(lv, (S20760C13*)(S21153C2*), ABISELECT(48,24), "S21153C8");
    check_base_class_offset(lv, (S20760C13*)(S21153C4*), ABISELECT(48,24), "S21153C8");
    /*is_ambiguous_... S21153C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C4*), ABISELECT(80,52), "S21153C8");
    check_base_class_offset(lv, (S20760C9*)(S21153C6*)(S21153C4*), ABISELECT(136,96), "S21153C8");
    /*is_ambiguous_... S21153C8::S21153C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C6*), ABISELECT(136,96), "S21153C8");
    check_base_class_offset(lv, (S21153C6*)(S21153C4*), ABISELECT(96,64), "S21153C8");
    check_base_class_offset(lv, (S21153C4*)(S21153C2*), ABISELECT(80,52), "S21153C8");
    check_base_class_offset(lv, (S21153C2*), 0, "S21153C8");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S21153C8");
    /*is_ambiguous_... S21153C8::S21153C6 */ AMB_check_base_class_offset(lv, (S21153C6*), ABISELECT(152,108), "S21153C8");
    test_class_info(&lv, &cd_S21153C8);
    dp->~S21153C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21153C8(Test_S21153C8, "S21153C8", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN8S21153C8C1Ev();
extern void _ZN8S21153C8D2Ev();
Name_Map name_map_S21153C8[] = {
  NSPAIR(_ZN8S21153C8C1Ev),
  NSPAIR(_ZN8S21153C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C4;
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
extern Class_Descriptor cd_S21153C2;
extern VTBL_ENTRY _ZTI8S21153C2[];
extern  VTBL_ENTRY _ZTV8S21153C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
static Base_Class bases_S21153C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21153C6,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21153C4,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21153C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21153C6,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21153C8[];
extern void _ZN8S21153C8D1Ev();
extern void _ZN8S21153C8D0Ev();
extern void ABISELECT(_ZThn40_N8S21153C8D1Ev,_ZThn20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S21153C8D0Ev,_ZThn20_N8S21153C8D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21153C8D1Ev,_ZThn24_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S21153C8D0Ev,_ZThn24_N8S21153C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S21153C8D1Ev,_ZThn52_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S21153C8D0Ev,_ZThn52_N8S21153C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S21153C8D1Ev,_ZThn96_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn136_N8S21153C8D0Ev,_ZThn96_N8S21153C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn152_N8S21153C8D1Ev,_ZThn108_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn152_N8S21153C8D0Ev,_ZThn108_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21153C8[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&_ZN8S21153C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C8D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S21153C8D1Ev,_ZThn20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S21153C8D0Ev,_ZThn20_N8S21153C8D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S21153C8[];
extern void _ZN8S21153C2D1Ev();
extern void _ZN8S21153C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C2__8S21153C8[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&_ZN8S21153C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S21153C2D1Ev,_ZThn24_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S21153C2D0Ev,_ZThn24_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C2__8S21153C8[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21153C2D1Ev,_ZThn52_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21153C2D0Ev,_ZThn52_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C2__8S21153C8[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C2__8S21153C8[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S21153C2D1Ev,_ZThn96_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S21153C2D0Ev,_ZThn96_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C2__8S21153C8[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C8[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C8[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21153C6D1Ev,_ZThn32_N8S21153C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21153C6D0Ev,_ZThn32_N8S21153C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C68S21153C4__8S21153C8[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C4__8S21153C8[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C4__8S21153C8[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C4__8S21153C8[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__8S21153C8[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C6__A1__8S21153C8[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
static  VTT_ENTRY vtt_S21153C8[] = {
  {&(_ZTV8S21153C8[6]),  6,40},
  {&(_tg__ZTV8S21153C2__8S21153C8[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21153C2__8S21153C8[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C2__8S21153C8[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C2__8S21153C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C2__8S21153C8[3]),  3,5},
  {&(_ZTV8S21153C8[15]),  15,40},
  {&(_ZTV8S21153C8[22]),  22,40},
  {&(_ZTV8S21153C8[27]),  27,40},
  {&(_ZTV8S21153C8[32]),  32,40},
  {&(_ZTV8S21153C8[38]),  38,40},
  {&(_tg__ZTV8S21153C4__8S21153C8[4]),  4,6},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C68S21153C4__8S21153C8[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C4__8S21153C8[3]),  3,5},
  {&(_tg__ZTV8S21153C6__8S21153C4__8S21153C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C4__8S21153C8[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__8S21153C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C6__A1__8S21153C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21153C8[];
extern  VTBL_ENTRY _ZTV8S21153C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C8[];
static VTBL_ENTRY alt_thunk_names228[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21153C6D0Ev,_ZThn32_N8S21153C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21153C6D1Ev,_ZThn32_N8S21153C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C2D0Ev,_ZThn52_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C2D1Ev,_ZThn52_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C2D0Ev,_ZThn96_N8S21153C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C2D0Ev,_ZThn24_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C2D1Ev,_ZThn96_N8S21153C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C2D1Ev,_ZThn24_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21153C8D0Ev,_ZThn108_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21153C8D1Ev,_ZThn108_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C8D0Ev,_ZThn52_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C8D1Ev,_ZThn52_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C8D0Ev,_ZThn96_N8S21153C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C8D0Ev,_ZThn24_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C8D1Ev,_ZThn96_N8S21153C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C8D1Ev,_ZThn24_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21153C8 = {  "S21153C8", // class name
  bases_S21153C8, 9,
  &(vtc_S21153C8[0]), // expected_vtbl_contents
  &(vtt_S21153C8[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI8S21153C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21153C8),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21153C8),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names228,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21153C7  : S20760C9 , S21153C8 {
  virtual  ~S21153C7(); // _ZN8S21153C7D2Ev
  S21153C7(); // tgen
};
//SIG(-1 S21153C7) C1{ BC2{ vd m FL} BC3{ BC4{ m Fp} BC5{ VBC6{ vd m Fi[6]} VBC7{ BC2 VBC6 BC8{ VBC2 vd} FC6} FD} BC9{ vd m} VBC8 vd} vd}


 S21153C7 ::~S21153C7(){ note_dtor("S21153C7", this);}
S21153C7 ::S21153C7(){ note_ctor("S21153C7", this);} // tgen

static void Test_S21153C7()
{
  extern Class_Descriptor cd_S21153C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,32)];
    init_test(&cd_S21153C7, buf);
    S21153C7 *dp, &lv = *(dp=new (buf) S21153C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S21153C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21153C7)");
    /*is_ambiguous_... S21153C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S21153C7");
    check_base_class_offset(lv, (S4161C4_nt*)(S21153C8*), ABISELECT(48,28), "S21153C7");
    check_base_class_offset(lv, (S20760C13*)(S21153C2*)(S21153C8*), ABISELECT(64,36), "S21153C7");
    check_base_class_offset(lv, (S20760C13*)(S21153C4*), ABISELECT(64,36), "S21153C7");
    /*is_ambiguous_... S21153C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C4*), ABISELECT(96,64), "S21153C7");
    check_base_class_offset(lv, (S20760C9*)(S21153C6*)(S21153C4*), ABISELECT(152,108), "S21153C7");
    /*is_ambiguous_... S21153C7::S21153C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C6*), ABISELECT(152,108), "S21153C7");
    check_base_class_offset(lv, (S21153C6*)(S21153C4*), ABISELECT(112,76), "S21153C7");
    check_base_class_offset(lv, (S21153C4*)(S21153C2*)(S21153C8*), ABISELECT(96,64), "S21153C7");
    check_base_class_offset(lv, (S21153C2*)(S21153C8*), ABISELECT(16,12), "S21153C7");
    check_base_class_offset(lv, (S20760C22_nt*)(S21153C8*), ABISELECT(56,32), "S21153C7");
    /*is_ambiguous_... S21153C8::S21153C6 */ AMB_check_base_class_offset(lv, (S21153C6*)(S21153C8*), ABISELECT(168,120), "S21153C7");
    check_base_class_offset(lv, (S21153C8*), ABISELECT(16,12), "S21153C7");
    test_class_info(&lv, &cd_S21153C7);
    dp->~S21153C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21153C7(Test_S21153C7, "S21153C7", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN8S21153C7C1Ev();
extern void _ZN8S21153C7D2Ev();
Name_Map name_map_S21153C7[] = {
  NSPAIR(_ZN8S21153C7C1Ev),
  NSPAIR(_ZN8S21153C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C4;
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
extern Class_Descriptor cd_S21153C2;
extern VTBL_ENTRY _ZTI8S21153C2[];
extern  VTBL_ENTRY _ZTV8S21153C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C8;
extern VTBL_ENTRY _ZTI8S21153C8[];
extern  VTBL_ENTRY _ZTV8S21153C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C8[];
static Base_Class bases_S21153C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(64,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(152,108), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21153C6,    ABISELECT(112,76), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21153C4,    ABISELECT(96,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21153C2,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21153C6,    ABISELECT(168,120), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21153C8,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21153C7[];
extern void _ZN8S21153C7D1Ev();
extern void _ZN8S21153C7D0Ev();
extern void ABISELECT(_ZThn16_N8S21153C7D1Ev,_ZThn12_N8S21153C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C7D0Ev,_ZThn12_N8S21153C7D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C7D1Ev,_ZThn32_N8S21153C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C7D0Ev,_ZThn32_N8S21153C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C7D1Ev,_ZTv0_n12_N8S21153C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S21153C7D1Ev,_ZThn36_N8S21153C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C7D0Ev,_ZTv0_n12_N8S21153C7D0Ev)();
extern void ABISELECT(_ZThn64_N8S21153C7D0Ev,_ZThn36_N8S21153C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C7D1Ev,_ZTv0_n20_N8S21153C7D1Ev)();
extern void ABISELECT(_ZThn96_N8S21153C7D1Ev,_ZThn64_N8S21153C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C7D0Ev,_ZTv0_n20_N8S21153C7D0Ev)();
extern void ABISELECT(_ZThn96_N8S21153C7D0Ev,_ZThn64_N8S21153C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21153C7D1Ev,_ZTvn12_n20_N8S21153C7D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C7D0Ev,_ZTvn12_n20_N8S21153C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C7D1Ev,_ZTv0_n12_N8S21153C7D1Ev)();
extern void ABISELECT(_ZThn152_N8S21153C7D1Ev,_ZThn108_N8S21153C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C7D0Ev,_ZTv0_n12_N8S21153C7D0Ev)();
extern void ABISELECT(_ZThn152_N8S21153C7D0Ev,_ZThn108_N8S21153C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C7D1Ev,_ZTv0_n16_N8S21153C7D1Ev)();
extern void ABISELECT(_ZThn168_N8S21153C7D1Ev,_ZThn120_N8S21153C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C7D0Ev,_ZTv0_n16_N8S21153C7D0Ev)();
extern void ABISELECT(_ZThn168_N8S21153C7D0Ev,_ZThn120_N8S21153C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21153C7[] = {
  ABISELECT(168,120),
  ABISELECT(152,108),
  ABISELECT(96,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&_ZN8S21153C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C7D0Ev,
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C7D1Ev,_ZThn12_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C7D0Ev,_ZThn12_N8S21153C7D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21153C7D1Ev,_ZThn32_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21153C7D0Ev,_ZThn32_N8S21153C7D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C7D1Ev,_ZTv0_n12_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C7D0Ev,_ZTv0_n12_N8S21153C7D0Ev),
  ABISELECT(-96,-64),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C7D1Ev,_ZTv0_n20_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C7D0Ev,_ZTv0_n20_N8S21153C7D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C7D1Ev,_ZTvn12_n20_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C7D0Ev,_ZTvn12_n20_N8S21153C7D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C7D1Ev,_ZTv0_n12_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C7D0Ev,_ZTv0_n12_N8S21153C7D0Ev),
  ABISELECT(-168,-120),
  ABISELECT(-16,-12),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C7D1Ev,_ZTv0_n16_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C7D0Ev,_ZTv0_n16_N8S21153C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S21153C7[];
extern void _ZN8S21153C8D1Ev();
extern void _ZN8S21153C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C8__8S21153C7[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&_ZN8S21153C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C8D0Ev,
};
extern void _ZN8S21153C2D1Ev();
extern void _ZN8S21153C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C28S21153C8__8S21153C7[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&_ZN8S21153C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S21153C2D1Ev,_ZThn24_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S21153C2D0Ev,_ZThn24_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C28S21153C8__8S21153C7[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21153C2D1Ev,_ZThn52_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21153C2D0Ev,_ZThn52_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C28S21153C8__8S21153C7[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C28S21153C8__8S21153C7[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S21153C2D1Ev,_ZThn96_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S21153C2D0Ev,_ZThn96_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C28S21153C8__8S21153C7[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21153C8D1Ev,_ZThn24_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S21153C8D0Ev,_ZThn24_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C8__8S21153C7[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S21153C8D1Ev,_ZThn52_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S21153C8D0Ev,_ZThn52_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C8__8S21153C7[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C8__8S21153C7[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S21153C8D1Ev,_ZThn96_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn136_N8S21153C8D0Ev,_ZThn96_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C8__8S21153C7[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn152_N8S21153C8D1Ev,_ZThn108_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn152_N8S21153C8D0Ev,_ZThn108_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__8S21153C8__8S21153C7[] = {
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev),
};
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C7[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C7[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21153C6D1Ev,_ZThn32_N8S21153C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21153C6D0Ev,_ZThn32_N8S21153C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C68S21153C4__8S21153C7[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C4__8S21153C7[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C4__8S21153C7[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C4__8S21153C7[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__8S21153C7[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C6__A1__8S21153C7[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
static  VTT_ENTRY vtt_S21153C7[] = {
  {&(_ZTV8S21153C7[6]),  6,48},
  {&(_tg__ZTV8S21153C8__8S21153C7[6]),  6,8},
  {&(_tg__ZTV8S21153C28S21153C8__8S21153C7[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21153C28S21153C8__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C28S21153C8__8S21153C7[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C28S21153C8__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C28S21153C8__8S21153C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C8__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C8__8S21153C7[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C8__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C8__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__8S21153C8__8S21153C7[4]),  4,6},
  {&(_ZTV8S21153C7[14]),  14,48},
  {&(_ZTV8S21153C7[23]),  23,48},
  {&(_ZTV8S21153C7[30]),  30,48},
  {&(_ZTV8S21153C7[35]),  35,48},
  {&(_ZTV8S21153C7[40]),  40,48},
  {&(_ZTV8S21153C7[46]),  46,48},
  {&(_tg__ZTV8S21153C4__8S21153C7[4]),  4,6},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C68S21153C4__8S21153C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C4__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S21153C6__8S21153C4__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C4__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C6__A1__8S21153C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21153C7[];
extern  VTBL_ENTRY _ZTV8S21153C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C7[];
static VTBL_ENTRY alt_thunk_names229[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21153C6D0Ev,_ZThn32_N8S21153C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21153C6D1Ev,_ZThn32_N8S21153C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21153C8D0Ev,_ZThn108_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21153C8D1Ev,_ZThn108_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C8D0Ev,_ZThn52_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C8D1Ev,_ZThn52_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C8D0Ev,_ZThn96_N8S21153C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C8D0Ev,_ZThn24_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C8D1Ev,_ZThn96_N8S21153C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C8D1Ev,_ZThn24_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C2D0Ev,_ZThn52_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C2D1Ev,_ZThn52_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C2D0Ev,_ZThn96_N8S21153C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C2D0Ev,_ZThn24_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C2D1Ev,_ZThn96_N8S21153C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C2D1Ev,_ZThn24_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C7D0Ev,_ZTv0_n16_N8S21153C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21153C7D0Ev,_ZThn120_N8S21153C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C7D1Ev,_ZTv0_n16_N8S21153C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21153C7D1Ev,_ZThn120_N8S21153C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C7D0Ev,_ZTv0_n20_N8S21153C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21153C7D0Ev,_ZThn64_N8S21153C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C7D1Ev,_ZTv0_n20_N8S21153C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21153C7D1Ev,_ZThn64_N8S21153C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C7D0Ev,_ZTv0_n12_N8S21153C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21153C7D0Ev,_ZThn108_N8S21153C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C7D0Ev,_ZThn36_N8S21153C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C7D1Ev,_ZTv0_n12_N8S21153C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21153C7D1Ev,_ZThn108_N8S21153C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C7D1Ev,_ZThn36_N8S21153C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21153C7 = {  "S21153C7", // class name
  bases_S21153C7, 11,
  &(vtc_S21153C7[0]), // expected_vtbl_contents
  &(vtt_S21153C7[0]), // expected_vtt_contents
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI8S21153C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21153C7),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21153C7),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names229,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21153C13  : virtual S4161C4_nt , virtual S20760C9 , virtual S21153C4 , S21153C8 , virtual S20759C5_nt {
  ~S21153C13(); // tgen
  S21153C13(); // tgen
};
//SIG(-1 S21153C13) C1{ VBC2{ m Fp} VBC3{ vd m FL} VBC4{ BC3 VBC5{ vd m Fi[6]} BC6{ VBC3 vd} FC5} BC7{ BC2 BC8{ VBC5 VBC4 FD} BC9{ vd m} VBC6 vd} VBC10{ vd m Fl}}


S21153C13 ::~S21153C13(){ note_dtor("S21153C13", this);} // tgen
S21153C13 ::S21153C13(){ note_ctor("S21153C13", this);} // tgen

static void Test_S21153C13()
{
  extern Class_Descriptor cd_S21153C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,32)];
    init_test(&cd_S21153C13, buf);
    S21153C13 *dp, &lv = *(dp=new (buf) S21153C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,124), "sizeof(S21153C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21153C13)");
    /*is_ambiguous_... S21153C13::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(48,24), "S21153C13");
    /*is_ambiguous_... S21153C13::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(56,28), "S21153C13");
    check_base_class_offset(lv, (S20760C9*)(S21153C6*)(S21153C4*), ABISELECT(56,28), "S21153C13");
    /*is_ambiguous_... S21153C13::S21153C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C6*), ABISELECT(56,28), "S21153C13");
    /*is_ambiguous_... S21153C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C4*), ABISELECT(72,40), "S21153C13");
    check_base_class_offset(lv, (S20760C13*)(S21153C4*), ABISELECT(128,84), "S21153C13");
    check_base_class_offset(lv, (S20760C13*)(S21153C2*)(S21153C8*), ABISELECT(128,84), "S21153C13");
    check_base_class_offset(lv, (S21153C6*)(S21153C4*), ABISELECT(88,52), "S21153C13");
    check_base_class_offset(lv, (S21153C4*), ABISELECT(72,40), "S21153C13");
    check_base_class_offset(lv, (S21153C4*)(S21153C2*)(S21153C8*), ABISELECT(72,40), "S21153C13");
    check_base_class_offset(lv, (S4161C4_nt*)(S21153C8*), ABISELECT(32,16), "S21153C13");
    check_base_class_offset(lv, (S21153C2*)(S21153C8*), 0, "S21153C13");
    check_base_class_offset(lv, (S20760C22_nt*)(S21153C8*), ABISELECT(40,20), "S21153C13");
    /*is_ambiguous_... S21153C8::S21153C6 */ AMB_check_base_class_offset(lv, (S21153C6*)(S21153C8*), ABISELECT(160,112), "S21153C13");
    check_base_class_offset(lv, (S21153C8*), 0, "S21153C13");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(168,116), "S21153C13");
    test_class_info(&lv, &cd_S21153C13);
    dp->~S21153C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21153C13(Test_S21153C13, "S21153C13", ABISELECT(192,124));

#else // __cplusplus

extern void _ZN9S21153C13C1Ev();
extern void _ZN9S21153C13D1Ev();
Name_Map name_map_S21153C13[] = {
  NSPAIR(_ZN9S21153C13C1Ev),
  NSPAIR(_ZN9S21153C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C4;
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21153C2;
extern VTBL_ENTRY _ZTI8S21153C2[];
extern  VTBL_ENTRY _ZTV8S21153C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C8;
extern VTBL_ENTRY _ZTI8S21153C8[];
extern  VTBL_ENTRY _ZTV8S21153C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C8[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S21153C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(56,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(128,84), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21153C6,    ABISELECT(88,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21153C4,    ABISELECT(72,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21153C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21153C6,    ABISELECT(160,112), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21153C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20759C5_nt,    ABISELECT(168,116), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21153C13[];
extern void _ZN9S21153C13D1Ev();
extern void _ZN9S21153C13D0Ev();
extern void ABISELECT(_ZThn40_N9S21153C13D1Ev,_ZThn20_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S21153C13D0Ev,_ZThn20_N9S21153C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S21153C13D1Ev,_ZThn28_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn56_N9S21153C13D0Ev,_ZThn28_N9S21153C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21153C13D1Ev,_ZTv0_n20_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S21153C13D1Ev,_ZThn40_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21153C13D0Ev,_ZTv0_n20_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn72_N9S21153C13D0Ev,_ZThn40_N9S21153C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21153C13D1Ev,_ZTvn12_n20_N9S21153C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21153C13D0Ev,_ZTvn12_n20_N9S21153C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn128_N9S21153C13D1Ev,_ZThn84_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn128_N9S21153C13D0Ev,_ZThn84_N9S21153C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21153C13D1Ev,_ZTv0_n16_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn160_N9S21153C13D1Ev,_ZThn112_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21153C13D0Ev,_ZTv0_n16_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn160_N9S21153C13D0Ev,_ZThn112_N9S21153C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn168_N9S21153C13D1Ev,_ZThn116_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn168_N9S21153C13D0Ev,_ZThn116_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21153C13[] = {
  ABISELECT(168,116),
  ABISELECT(48,24),
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&_ZN9S21153C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21153C13D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S21153C13D1Ev,_ZThn20_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S21153C13D0Ev,_ZThn20_N9S21153C13D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C13D1Ev,_ZTv0_n20_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C13D0Ev,_ZTv0_n20_N9S21153C13D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C13D1Ev,_ZTvn12_n20_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C13D0Ev,_ZTvn12_n20_N9S21153C13D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev),
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C13D1Ev,_ZTv0_n16_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C13D0Ev,_ZTv0_n16_N9S21153C13D0Ev),
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S21153C13[];
extern void _ZN8S21153C8D1Ev();
extern void _ZN8S21153C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C8__9S21153C13[] = {
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&_ZN8S21153C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C8D0Ev,
};
extern void _ZN8S21153C2D1Ev();
extern void _ZN8S21153C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C28S21153C8__9S21153C13[] = {
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&_ZN8S21153C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S21153C2D1Ev,_ZThn84_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S21153C2D0Ev,_ZThn84_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C28S21153C8__9S21153C13[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S21153C2D1Ev,_ZThn40_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S21153C2D0Ev,_ZThn40_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C28S21153C8__9S21153C13[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C28S21153C8__9S21153C13[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C2D1Ev,_ZThn28_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C2D0Ev,_ZThn28_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C28S21153C8__9S21153C13[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S21153C8D1Ev,_ZThn84_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S21153C8D0Ev,_ZThn84_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C8__9S21153C13[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn72_N8S21153C8D1Ev,_ZThn40_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn72_N8S21153C8D0Ev,_ZThn40_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C8__9S21153C13[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C8__9S21153C13[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C8D1Ev,_ZThn28_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C8D0Ev,_ZThn28_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C8__9S21153C13[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn160_N8S21153C8D1Ev,_ZThn112_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn160_N8S21153C8D0Ev,_ZThn112_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__8S21153C8__9S21153C13[] = {
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev),
};
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C4__9S21153C13[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__9S21153C13[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C68S21153C4__9S21153C13[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C4__9S21153C13[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C4__9S21153C13[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C4__9S21153C13[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__9S21153C13[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C6__A1__9S21153C13[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
static  VTT_ENTRY vtt_S21153C13[] = {
  {&(_ZTV9S21153C13[8]),  8,47},
  {&(_tg__ZTV8S21153C8__9S21153C13[6]),  6,8},
  {&(_tg__ZTV8S21153C28S21153C8__9S21153C13[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21153C28S21153C8__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C28S21153C8__9S21153C13[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C28S21153C8__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C28S21153C8__9S21153C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C8__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C8__9S21153C13[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C8__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C8__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__8S21153C8__9S21153C13[4]),  4,6},
  {&(_ZTV9S21153C13[17]),  17,47},
  {&(_ZTV9S21153C13[24]),  24,47},
  {&(_ZTV9S21153C13[34]),  34,47},
  {&(_ZTV9S21153C13[29]),  29,47},
  {&(_ZTV9S21153C13[40]),  40,47},
  {&(_ZTV9S21153C13[45]),  45,47},
  {&(_tg__ZTV8S21153C4__9S21153C13[4]),  4,6},
  {&(_tg__ZTV8S21153C68S21153C4__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C68S21153C4__9S21153C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C4__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S21153C6__8S21153C4__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C4__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C6__A1__9S21153C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21153C13[];
extern  VTBL_ENTRY _ZTV9S21153C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21153C13[];
static VTBL_ENTRY alt_thunk_names230[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21153C8D0Ev,_ZThn112_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21153C8D1Ev,_ZThn112_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21153C8D0Ev,_ZThn40_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21153C8D1Ev,_ZThn40_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C8D0Ev,_ZThn28_N8S21153C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21153C8D0Ev,_ZThn84_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C8D1Ev,_ZThn28_N8S21153C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21153C8D1Ev,_ZThn84_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21153C2D0Ev,_ZThn40_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21153C2D1Ev,_ZThn40_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C2D0Ev,_ZThn28_N8S21153C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21153C2D0Ev,_ZThn84_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C2D1Ev,_ZThn28_N8S21153C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21153C2D1Ev,_ZThn84_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C13D0Ev,_ZTv0_n16_N9S21153C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21153C13D0Ev,_ZThn112_N9S21153C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C13D1Ev,_ZTv0_n16_N9S21153C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21153C13D1Ev,_ZThn112_N9S21153C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C13D0Ev,_ZTv0_n20_N9S21153C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21153C13D0Ev,_ZThn40_N9S21153C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C13D1Ev,_ZTv0_n20_N9S21153C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21153C13D1Ev,_ZThn40_N9S21153C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21153C13D0Ev,_ZThn116_N9S21153C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21153C13D0Ev,_ZThn84_N9S21153C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21153C13D0Ev,_ZThn28_N9S21153C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21153C13D1Ev,_ZThn116_N9S21153C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21153C13D1Ev,_ZThn84_N9S21153C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21153C13D1Ev,_ZThn28_N9S21153C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21153C13 = {  "S21153C13", // class name
  bases_S21153C13, 12,
  &(vtc_S21153C13[0]), // expected_vtbl_contents
  &(vtt_S21153C13[0]), // expected_vtt_contents
  ABISELECT(192,124), // object size
  NSPAIRA(_ZTI9S21153C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21153C13),47, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21153C13),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names230,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21153C15  : virtual S20760C13 , S21153C4 , virtual S4161C4_nt {
  ::S21153C13 s21153c15f0;
  ~S21153C15(); // tgen
  S21153C15(); // tgen
};
//SIG(-1 S21153C15) C1{ VBC2{ vd m Fi[6]} BC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} VBC6{ m Fp} FC7{ VBC6 VBC4 VBC3 BC8{ BC6 BC9{ VBC2 VBC3 FD} BC10{ vd m} VBC5 vd} VBC11{ vd m Fl}}}


S21153C15 ::~S21153C15(){ note_dtor("S21153C15", this);} // tgen
S21153C15 ::S21153C15(){ note_ctor("S21153C15", this);} // tgen

static void Test_S21153C15()
{
  extern Class_Descriptor cd_S21153C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,54)];
    init_test(&cd_S21153C15, buf);
    S21153C15 *dp, &lv = *(dp=new (buf) S21153C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,212), "sizeof(S21153C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21153C15)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(256,168), "S21153C15");
    check_base_class_offset(lv, (S20760C13*)(S21153C4*), ABISELECT(256,168), "S21153C15");
    /*is_ambiguous_... S21153C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C4*), 0, "S21153C15");
    check_base_class_offset(lv, (S20760C9*)(S21153C6*)(S21153C4*), ABISELECT(288,196), "S21153C15");
    check_base_class_offset(lv, (S21153C6*)(S21153C4*), ABISELECT(16,12), "S21153C15");
    check_base_class_offset(lv, (S21153C4*), 0, "S21153C15");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(304,208), "S21153C15");
    check_field_offset(lv, s21153c15f0, ABISELECT(64,44), "S21153C15.s21153c15f0");
    test_class_info(&lv, &cd_S21153C15);
    dp->~S21153C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21153C15(Test_S21153C15, "S21153C15", ABISELECT(320,212));

#else // __cplusplus

extern void _ZN9S21153C15C1Ev();
extern void _ZN9S21153C15D1Ev();
Name_Map name_map_S21153C15[] = {
  NSPAIR(_ZN9S21153C15C1Ev),
  NSPAIR(_ZN9S21153C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C4;
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S21153C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(256,168), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(288,196), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21153C6,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21153C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21153C15[];
extern void _ZN9S21153C15D1Ev();
extern void _ZN9S21153C15D0Ev();
extern void ABISELECT(_ZThn16_N9S21153C15D1Ev,_ZThn12_N9S21153C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21153C15D0Ev,_ZThn12_N9S21153C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev)();
extern void ABISELECT(_ZThn256_N9S21153C15D1Ev,_ZThn168_N9S21153C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev)();
extern void ABISELECT(_ZThn256_N9S21153C15D0Ev,_ZThn168_N9S21153C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev)();
extern void ABISELECT(_ZThn288_N9S21153C15D1Ev,_ZThn196_N9S21153C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev)();
extern void ABISELECT(_ZThn288_N9S21153C15D0Ev,_ZThn196_N9S21153C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21153C15[] = {
  ABISELECT(304,208),
  ABISELECT(288,196),
  ABISELECT(256,168),
  0,
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&_ZN9S21153C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21153C15D0Ev,
  ABISELECT(272,184),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C15D1Ev,_ZThn12_N9S21153C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C15D0Ev,_ZThn12_N9S21153C15D0Ev),
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev),
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S21153C15[];
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C4__9S21153C15[] = {
  ABISELECT(288,196),
  ABISELECT(256,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__9S21153C15[] = {
  ABISELECT(272,184),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZThn272_N8S21153C6D1Ev,_ZThn184_N8S21153C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
extern void ABISELECT(_ZThn272_N8S21153C6D0Ev,_ZThn184_N8S21153C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C68S21153C4__9S21153C15[] = {
  ABISELECT(-272,-184),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S21153C4D1Ev,_ZThn168_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S21153C4D0Ev,_ZThn168_N8S21153C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C4__9S21153C15[] = {
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C4__9S21153C15[] = {
  ABISELECT(272,184),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn288_N8S21153C4D1Ev,_ZThn196_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn288_N8S21153C4D0Ev,_ZThn196_N8S21153C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C4__9S21153C15[] = {
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
static  VTT_ENTRY vtt_S21153C15[] = {
  {&(_ZTV9S21153C15[5]),  5,22},
  {&(_tg__ZTV8S21153C4__9S21153C15[4]),  4,6},
  {&(_tg__ZTV8S21153C68S21153C4__9S21153C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C68S21153C4__9S21153C15[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C4__9S21153C15[3]),  3,5},
  {&(_tg__ZTV8S21153C6__8S21153C4__9S21153C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C4__9S21153C15[3]),  3,5},
  {&(_ZTV9S21153C15[15]),  15,22},
  {&(_ZTV9S21153C15[10]),  10,22},
  {&(_ZTV9S21153C15[20]),  20,22},
};
extern VTBL_ENTRY _ZTI9S21153C15[];
extern  VTBL_ENTRY _ZTV9S21153C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21153C15[];
static VTBL_ENTRY alt_thunk_names231[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21153C4D0Ev,_ZThn196_N8S21153C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21153C4D0Ev,_ZThn168_N8S21153C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21153C4D1Ev,_ZThn196_N8S21153C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21153C4D1Ev,_ZThn168_N8S21153C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21153C6D0Ev,_ZThn184_N8S21153C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21153C6D1Ev,_ZThn184_N8S21153C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21153C15D0Ev,_ZThn196_N9S21153C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S21153C15D0Ev,_ZThn168_N9S21153C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21153C15D1Ev,_ZThn196_N9S21153C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S21153C15D1Ev,_ZThn168_N9S21153C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21153C15 = {  "S21153C15", // class name
  bases_S21153C15, 6,
  &(vtc_S21153C15[0]), // expected_vtbl_contents
  &(vtt_S21153C15[0]), // expected_vtt_contents
  ABISELECT(320,212), // object size
  NSPAIRA(_ZTI9S21153C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21153C15),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21153C15),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names231,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21153C11  : S4228C37 , S20760C9 , virtual S4161C4_nt , S21153C13 , virtual S21153C15 {
  int s21153c11f0;
  virtual  ~S21153C11(); // _ZN9S21153C11D2Ev
  S21153C11(); // tgen
};
//SIG(-1 S21153C11) C1{ BC2{ m} BC3{ vd m FL} VBC4{ m Fp} BC5{ VBC4 VBC3 VBC6{ BC3 VBC7{ vd m Fi[6]} BC8{ VBC3 vd} FC7} BC9{ BC4 BC10{ VBC7 VBC6 FD} BC11{ vd m} VBC8 vd} VBC12{ vd m Fl}} VBC13{ VBC7 BC6 VBC4 FC5} vd Fi}


 S21153C11 ::~S21153C11(){ note_dtor("S21153C11", this);}
S21153C11 ::S21153C11(){ note_ctor("S21153C11", this);} // tgen

static void Test_S21153C11()
{
  extern Class_Descriptor cd_S21153C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,78)];
    init_test(&cd_S21153C11, buf);
    S21153C11 *dp, &lv = *(dp=new (buf) S21153C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S21153C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21153C11)");
    check_base_class_offset(lv, (S4228C37*), 0, "S21153C11");
    /*is_ambiguous_... S21153C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S21153C11");
    /*is_ambiguous_... S21153C11::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(72,40), "S21153C11");
    /*is_ambiguous_... S21153C13::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S21153C13*), ABISELECT(72,40), "S21153C11");
    check_base_class_offset(lv, (S4161C4_nt*)(S21153C15*), ABISELECT(72,40), "S21153C11");
    /*is_ambiguous_... S21153C13::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C13*), ABISELECT(80,44), "S21153C11");
    /*is_ambiguous_... S21153C11::S21153C4 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C6*)(S21153C4*), ABISELECT(80,44), "S21153C11");
    /*is_ambiguous_... S21153C11::S21153C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C6*), ABISELECT(80,44), "S21153C11");
    check_base_class_offset(lv, (S20760C9*)(S21153C6*)(S21153C4*)(S21153C15*), ABISELECT(80,44), "S21153C11");
    /*is_ambiguous_... S21153C11::S21153C4 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C4*), ABISELECT(96,56), "S21153C11");
    /*is_ambiguous_... S21153C11::S21153C4 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21153C4*), ABISELECT(152,100), "S21153C11");
    check_base_class_offset(lv, (S20760C13*)(S21153C2*)(S21153C8*)(S21153C13*), ABISELECT(152,100), "S21153C11");
    check_base_class_offset(lv, (S20760C13*)(S21153C15*), ABISELECT(152,100), "S21153C11");
    check_base_class_offset(lv, (S20760C13*)(S21153C4*)(S21153C15*), ABISELECT(152,100), "S21153C11");
    /*is_ambiguous_... S21153C11::S21153C4 */ AMB_check_base_class_offset(lv, (S21153C6*)(S21153C4*), ABISELECT(112,68), "S21153C11");
    check_base_class_offset(lv, (S21153C4*)(S21153C13*), ABISELECT(96,56), "S21153C11");
    check_base_class_offset(lv, (S21153C4*)(S21153C2*)(S21153C8*)(S21153C13*), ABISELECT(96,56), "S21153C11");
    check_base_class_offset(lv, (S4161C4_nt*)(S21153C8*)(S21153C13*), ABISELECT(48,28), "S21153C11");
    check_base_class_offset(lv, (S21153C2*)(S21153C8*)(S21153C13*), ABISELECT(16,12), "S21153C11");
    check_base_class_offset(lv, (S20760C22_nt*)(S21153C8*)(S21153C13*), ABISELECT(56,32), "S21153C11");
    /*is_ambiguous_... S21153C8::S21153C6 */ AMB_check_base_class_offset(lv, (S21153C6*)(S21153C8*)(S21153C13*), ABISELECT(184,128), "S21153C11");
    check_base_class_offset(lv, (S21153C8*)(S21153C13*), ABISELECT(16,12), "S21153C11");
    check_base_class_offset(lv, (S20759C5_nt*)(S21153C13*), ABISELECT(192,132), "S21153C11");
    check_base_class_offset(lv, (S21153C13*), ABISELECT(16,12), "S21153C11");
    /*is_ambiguous_... S21153C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C4*)(S21153C15*), ABISELECT(208,140), "S21153C11");
    check_base_class_offset(lv, (S21153C6*)(S21153C4*)(S21153C15*), ABISELECT(224,152), "S21153C11");
    check_base_class_offset(lv, (S21153C4*)(S21153C15*), ABISELECT(208,140), "S21153C11");
    check_base_class_offset(lv, (S21153C15*), ABISELECT(208,140), "S21153C11");
    check_field_offset(lv, s21153c11f0, ABISELECT(64,36), "S21153C11.s21153c11f0");
    test_class_info(&lv, &cd_S21153C11);
    dp->~S21153C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21153C11(Test_S21153C11, "S21153C11", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN9S21153C11C1Ev();
extern void _ZN9S21153C11D2Ev();
Name_Map name_map_S21153C11[] = {
  NSPAIR(_ZN9S21153C11C1Ev),
  NSPAIR(_ZN9S21153C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C4;
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21153C2;
extern VTBL_ENTRY _ZTI8S21153C2[];
extern  VTBL_ENTRY _ZTV8S21153C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C8;
extern VTBL_ENTRY _ZTI8S21153C8[];
extern  VTBL_ENTRY _ZTV8S21153C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C8[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S21153C13;
extern VTBL_ENTRY _ZTI9S21153C13[];
extern  VTBL_ENTRY _ZTV9S21153C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21153C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C4;
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
extern Class_Descriptor cd_S21153C15;
extern VTBL_ENTRY _ZTI9S21153C15[];
extern  VTBL_ENTRY _ZTV9S21153C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21153C15[];
static Base_Class bases_S21153C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,100), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21153C6,    ABISELECT(112,68), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21153C4,    ABISELECT(96,56), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21153C2,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21153C6,    ABISELECT(184,128), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21153C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20759C5_nt,    ABISELECT(192,132), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S21153C13,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21153C6,    ABISELECT(224,152), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21153C4,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21153C15,    ABISELECT(208,140), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21153C11[];
extern void _ZN9S21153C11D1Ev();
extern void _ZN9S21153C11D0Ev();
extern void ABISELECT(_ZThn16_N9S21153C11D1Ev,_ZThn12_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S21153C11D0Ev,_ZThn12_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn56_N9S21153C11D1Ev,_ZThn32_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S21153C11D0Ev,_ZThn32_N9S21153C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn80_N9S21153C11D1Ev,_ZThn44_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn80_N9S21153C11D0Ev,_ZThn44_N9S21153C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21153C11D1Ev,_ZTv0_n20_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn96_N9S21153C11D1Ev,_ZThn56_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21153C11D0Ev,_ZTv0_n20_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn96_N9S21153C11D0Ev,_ZThn56_N9S21153C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21153C11D1Ev,_ZTvn12_n20_N9S21153C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21153C11D0Ev,_ZTvn12_n20_N9S21153C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn152_N9S21153C11D1Ev,_ZThn100_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn152_N9S21153C11D0Ev,_ZThn100_N9S21153C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21153C11D1Ev,_ZTv0_n16_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn184_N9S21153C11D1Ev,_ZThn128_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21153C11D0Ev,_ZTv0_n16_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn184_N9S21153C11D0Ev,_ZThn128_N9S21153C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn192_N9S21153C11D1Ev,_ZThn132_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn192_N9S21153C11D0Ev,_ZThn132_N9S21153C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21153C11D1Ev,_ZTv0_n24_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn208_N9S21153C11D1Ev,_ZThn140_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21153C11D0Ev,_ZTv0_n24_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn208_N9S21153C11D0Ev,_ZThn140_N9S21153C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N9S21153C11D1Ev,_ZTvn12_n24_N9S21153C11D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S21153C11D0Ev,_ZTvn12_n24_N9S21153C11D0Ev)();
static  VTBL_ENTRY vtc_S21153C11[] = {
  ABISELECT(208,140),
  ABISELECT(192,132),
  ABISELECT(184,128),
  ABISELECT(152,100),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&_ZN9S21153C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21153C11D0Ev,
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C11D1Ev,_ZThn12_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C11D0Ev,_ZThn12_N9S21153C11D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21153C11D1Ev,_ZThn32_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21153C11D0Ev,_ZThn32_N9S21153C11D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C11D1Ev,_ZTv0_n20_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C11D0Ev,_ZTv0_n20_N9S21153C11D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C11D1Ev,_ZTvn12_n20_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C11D0Ev,_ZTvn12_n20_N9S21153C11D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev),
  ABISELECT(-184,-128),
  ABISELECT(-104,-84),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C11D1Ev,_ZTv0_n16_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C11D0Ev,_ZTv0_n16_N9S21153C11D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev),
  ABISELECT(-208,-140),
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21153C11D1Ev,_ZTv0_n24_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21153C11D0Ev,_ZTv0_n24_N9S21153C11D0Ev),
  ABISELECT(-144,-108),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S21153C11D1Ev,_ZTvn12_n24_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S21153C11D0Ev,_ZTvn12_n24_N9S21153C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S21153C11[];
extern void _ZN9S21153C13D1Ev();
extern void _ZN9S21153C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21153C13__9S21153C11[] = {
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&_ZN9S21153C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21153C13D0Ev,
};
extern void _ZN8S21153C8D1Ev();
extern void _ZN8S21153C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&_ZN8S21153C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C8D0Ev,
};
extern void _ZN8S21153C2D1Ev();
extern void _ZN8S21153C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C28S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&_ZN8S21153C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S21153C2D1Ev,_ZThn88_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S21153C2D0Ev,_ZThn88_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C28S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21153C2D1Ev,_ZThn44_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21153C2D0Ev,_ZThn44_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C28S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C28S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21153C2D1Ev,_ZThn32_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21153C2D0Ev,_ZThn32_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C28S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S21153C8D1Ev,_ZThn88_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn136_N8S21153C8D0Ev,_ZThn88_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S21153C8D1Ev,_ZThn44_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S21153C8D0Ev,_ZThn44_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S21153C8D1Ev,_ZThn32_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S21153C8D0Ev,_ZThn32_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn168_N8S21153C8D1Ev,_ZThn116_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn168_N8S21153C8D0Ev,_ZThn116_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__8S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S21153C13D1Ev,_ZThn32_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S21153C13D0Ev,_ZThn32_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21153C13__9S21153C11[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21153C13D1Ev,_ZTv0_n20_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn80_N9S21153C13D1Ev,_ZThn44_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21153C13D0Ev,_ZTv0_n20_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn80_N9S21153C13D0Ev,_ZThn44_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__9S21153C13__9S21153C11[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C13D1Ev,_ZTv0_n20_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C13D0Ev,_ZTv0_n20_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn136_N9S21153C13D1Ev,_ZThn88_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn136_N9S21153C13D0Ev,_ZThn88_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21153C13__9S21153C11[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21153C13D1Ev,_ZTvn12_n20_N9S21153C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21153C13D0Ev,_ZTvn12_n20_N9S21153C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__9S21153C13__9S21153C11[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C13D1Ev,_ZTvn12_n20_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C13D0Ev,_ZTvn12_n20_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21153C13D1Ev,_ZTv0_n16_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn168_N9S21153C13D1Ev,_ZThn116_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21153C13D0Ev,_ZTv0_n16_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn168_N9S21153C13D0Ev,_ZThn116_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__9S21153C13__9S21153C11[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C13D1Ev,_ZTv0_n16_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C13D0Ev,_ZTv0_n16_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn176_N9S21153C13D1Ev,_ZThn120_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn176_N9S21153C13D0Ev,_ZThn120_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S21153C13__9S21153C11[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev),
};
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C4__9S21153C11[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__9S21153C11[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C68S21153C4__9S21153C11[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C4__9S21153C11[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C4__9S21153C11[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C4__9S21153C11[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__9S21153C11[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C6__A1__9S21153C11[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void _ZN9S21153C15D1Ev();
extern void _ZN9S21153C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21153C15__9S21153C11[] = {
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&_ZN9S21153C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21153C15D0Ev,
};
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C49S21153C15__A1__9S21153C11[] = {
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C49S21153C15__A2__9S21153C11[] = {
  ABISELECT(-144,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C68S21153C49S21153C15__A2__9S21153C11[] = {
  ABISELECT(144,108),
  ABISELECT(144,108),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C49S21153C15__A1__9S21153C11[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C49S21153C15__A1__9S21153C11[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C49S21153C15__A1__9S21153C11[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21153C15__9S21153C11[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21153C15D1Ev,_ZThn12_N9S21153C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21153C15D0Ev,_ZThn12_N9S21153C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__9S21153C15__9S21153C11[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C15D1Ev,_ZThn12_N9S21153C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C15D0Ev,_ZThn12_N9S21153C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21153C15__9S21153C11[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev),
};
static  VTT_ENTRY vtt_S21153C11[] = {
  {&(_ZTV9S21153C11[9]),  9,71},
  {&(_tg__ZTV9S21153C13__9S21153C11[8]),  8,10},
  {&(_tg__ZTV8S21153C89S21153C13__9S21153C11[6]),  6,8},
  {&(_tg__ZTV8S21153C28S21153C89S21153C13__9S21153C11[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21153C28S21153C89S21153C13__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C28S21153C89S21153C13__9S21153C11[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C28S21153C89S21153C13__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C28S21153C89S21153C13__9S21153C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C89S21153C13__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C89S21153C13__9S21153C11[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C89S21153C13__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C89S21153C13__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__8S21153C89S21153C13__9S21153C11[4]),  4,6},
  {&(_tg__ZTV8S20760C9__9S21153C13__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C4__9S21153C13__9S21153C11[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21153C13__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C68S21153C4__9S21153C13__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__9S21153C13__9S21153C11[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__9S21153C13__9S21153C11[3]),  3,5},
  {&(_ZTV9S21153C11[19]),  19,71},
  {&(_ZTV9S21153C11[28]),  28,71},
  {&(_ZTV9S21153C11[35]),  35,71},
  {&(_ZTV9S21153C11[45]),  45,71},
  {&(_ZTV9S21153C11[40]),  40,71},
  {&(_ZTV9S21153C11[51]),  51,71},
  {&(_ZTV9S21153C11[56]),  56,71},
  {&(_ZTV9S21153C11[64]),  64,71},
  {&(_ZTV9S21153C11[69]),  69,71},
  {&(_tg__ZTV8S21153C4__9S21153C11[4]),  4,6},
  {&(_tg__ZTV8S21153C68S21153C4__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C68S21153C4__9S21153C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C4__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C6__8S21153C4__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C4__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C6__A1__9S21153C11[3]),  3,5},
  {&(_tg__ZTV9S21153C15__9S21153C11[5]),  5,7},
  {&(_tg__ZTV8S21153C49S21153C15__A1__9S21153C11[4]),  4,6},
  {&(_tg__ZTV8S21153C68S21153C49S21153C15__A2__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C68S21153C49S21153C15__A2__9S21153C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C49S21153C15__A1__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C6__8S21153C49S21153C15__A1__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C49S21153C15__A1__9S21153C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21153C15__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C68S21153C4__9S21153C15__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21153C15__9S21153C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21153C11[];
extern  VTBL_ENTRY _ZTV9S21153C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21153C11[];
static VTBL_ENTRY alt_thunk_names232[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C13D0Ev,_ZTv0_n16_N9S21153C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21153C13D0Ev,_ZThn116_N9S21153C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C13D1Ev,_ZTv0_n16_N9S21153C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21153C13D1Ev,_ZThn116_N9S21153C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C13D0Ev,_ZTv0_n20_N9S21153C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21153C13D0Ev,_ZThn44_N9S21153C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C13D1Ev,_ZTv0_n20_N9S21153C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21153C13D1Ev,_ZThn44_N9S21153C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21153C13D0Ev,_ZThn120_N9S21153C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21153C13D0Ev,_ZThn88_N9S21153C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21153C13D0Ev,_ZThn32_N9S21153C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21153C13D1Ev,_ZThn120_N9S21153C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21153C13D1Ev,_ZThn88_N9S21153C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21153C13D1Ev,_ZThn32_N9S21153C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21153C8D0Ev,_ZThn116_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21153C8D1Ev,_ZThn116_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C8D0Ev,_ZThn44_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C8D1Ev,_ZThn44_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C8D0Ev,_ZThn32_N8S21153C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C8D0Ev,_ZThn88_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C8D1Ev,_ZThn32_N8S21153C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C8D1Ev,_ZThn88_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C2D0Ev,_ZThn44_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C2D1Ev,_ZThn44_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C2D0Ev,_ZThn32_N8S21153C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C2D0Ev,_ZThn88_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C2D1Ev,_ZThn32_N8S21153C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C2D1Ev,_ZThn88_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21153C11D0Ev,_ZTv0_n24_N9S21153C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S21153C11D0Ev,_ZThn140_N9S21153C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21153C11D1Ev,_ZTv0_n24_N9S21153C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S21153C11D1Ev,_ZThn140_N9S21153C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C11D0Ev,_ZTv0_n16_N9S21153C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21153C11D0Ev,_ZThn128_N9S21153C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C11D1Ev,_ZTv0_n16_N9S21153C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21153C11D1Ev,_ZThn128_N9S21153C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C11D0Ev,_ZTv0_n20_N9S21153C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21153C11D0Ev,_ZThn56_N9S21153C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C11D1Ev,_ZTv0_n20_N9S21153C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21153C11D1Ev,_ZThn56_N9S21153C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21153C11D0Ev,_ZThn132_N9S21153C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21153C11D0Ev,_ZThn100_N9S21153C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21153C11D0Ev,_ZThn44_N9S21153C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21153C11D1Ev,_ZThn132_N9S21153C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21153C11D1Ev,_ZThn100_N9S21153C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21153C11D1Ev,_ZThn44_N9S21153C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21153C11 = {  "S21153C11", // class name
  bases_S21153C11, 19,
  &(vtc_S21153C11[0]), // expected_vtbl_contents
  &(vtt_S21153C11[0]), // expected_vtt_contents
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI9S21153C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21153C11),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21153C11),46, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names232,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21153C1  : virtual S21153C2 , virtual S21153C7 , S21153C11 {
  virtual  ~S21153C1(); // _ZN8S21153C1D2Ev
  S21153C1(); // tgen
};
//SIG(1 S21153C1) C1{ VBC2{ VBC3{ vd m Fi[6]} VBC4{ BC5{ vd m FL} VBC3 BC6{ VBC5 vd} FC3} FD} VBC7{ BC5 BC8{ BC9{ m Fp} BC2 BC10{ vd m} VBC6 vd} vd} BC11{ BC12{ m} BC5 VBC9 BC13{ VBC9 VBC5 VBC4 BC8 VBC14{ vd m Fl}} VBC15{ VBC3 BC4 VBC9 FC13} vd Fi} vd}


 S21153C1 ::~S21153C1(){ note_dtor("S21153C1", this);}
S21153C1 ::S21153C1(){ note_ctor("S21153C1", this);} // tgen

static void Test_S21153C1()
{
  extern Class_Descriptor cd_S21153C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(37,91)];
    init_test(&cd_S21153C1, buf);
    S21153C1 *dp, &lv = *(dp=new (buf) S21153C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(576,360), "sizeof(S21153C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21153C1)");
    /*is_ambiguous_... S21153C1::S21153C2 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21153C2*), ABISELECT(112,56), "S21153C1");
    /*is_ambiguous_... S21153C1::S21153C4 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21153C4*), ABISELECT(112,56), "S21153C1");
    check_base_class_offset(lv, (S20760C13*)(S21153C2*)(S21153C8*)(S21153C7*), ABISELECT(112,56), "S21153C1");
    check_base_class_offset(lv, (S20760C13*)(S21153C2*)(S21153C8*)(S21153C13*)(S21153C11*), ABISELECT(112,56), "S21153C1");
    check_base_class_offset(lv, (S20760C13*)(S21153C15*), ABISELECT(112,56), "S21153C1");
    check_base_class_offset(lv, (S20760C13*)(S21153C4*)(S21153C15*), ABISELECT(112,56), "S21153C1");
    /*is_ambiguous_... S21153C1::S21153C4 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C4*), ABISELECT(144,84), "S21153C1");
    /*is_ambiguous_... S21153C1::S21153C4 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C6*)(S21153C4*), ABISELECT(200,128), "S21153C1");
    /*is_ambiguous_... S21153C1::S21153C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C6*), ABISELECT(200,128), "S21153C1");
    /*is_ambiguous_... S21153C13::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C13*)(S21153C11*), ABISELECT(200,128), "S21153C1");
    check_base_class_offset(lv, (S20760C9*)(S21153C6*)(S21153C4*)(S21153C15*), ABISELECT(200,128), "S21153C1");
    /*is_ambiguous_... S21153C1::S21153C4 */ AMB_check_base_class_offset(lv, (S21153C6*)(S21153C4*), ABISELECT(160,96), "S21153C1");
    /*is_ambiguous_... S21153C1::S21153C2 */ AMB_check_base_class_offset(lv, (S21153C4*)(S21153C2*), ABISELECT(144,84), "S21153C1");
    check_base_class_offset(lv, (S21153C4*)(S21153C2*)(S21153C8*)(S21153C7*), ABISELECT(144,84), "S21153C1");
    check_base_class_offset(lv, (S21153C4*)(S21153C13*)(S21153C11*), ABISELECT(144,84), "S21153C1");
    check_base_class_offset(lv, (S21153C4*)(S21153C2*)(S21153C8*)(S21153C13*)(S21153C11*), ABISELECT(144,84), "S21153C1");
    /*is_ambiguous_... S21153C1::S21153C2 */ AMB_check_base_class_offset(lv, (S21153C2*), ABISELECT(80,40), "S21153C1");
    /*is_ambiguous_... S21153C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C7*), ABISELECT(224,140), "S21153C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21153C8*)(S21153C7*), ABISELECT(272,168), "S21153C1");
    check_base_class_offset(lv, (S21153C2*)(S21153C8*)(S21153C7*), ABISELECT(240,152), "S21153C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S21153C8*)(S21153C7*), ABISELECT(280,172), "S21153C1");
    /*is_ambiguous_... S21153C8::S21153C6 */ AMB_check_base_class_offset(lv, (S21153C6*)(S21153C8*)(S21153C7*), ABISELECT(288,176), "S21153C1");
    /*is_ambiguous_... S21153C8::S21153C6 */ AMB_check_base_class_offset(lv, (S21153C6*)(S21153C8*)(S21153C13*)(S21153C11*), ABISELECT(288,176), "S21153C1");
    check_base_class_offset(lv, (S21153C8*)(S21153C7*), ABISELECT(240,152), "S21153C1");
    check_base_class_offset(lv, (S21153C7*), ABISELECT(224,140), "S21153C1");
    check_base_class_offset(lv, (S4228C37*)(S21153C11*), 0, "S21153C1");
    /*is_ambiguous_... S21153C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C11*), 0, "S21153C1");
    /*is_ambiguous_... S21153C11::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S21153C11*), ABISELECT(296,180), "S21153C1");
    /*is_ambiguous_... S21153C13::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S21153C13*)(S21153C11*), ABISELECT(296,180), "S21153C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21153C15*), ABISELECT(296,180), "S21153C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21153C8*)(S21153C13*)(S21153C11*), ABISELECT(48,28), "S21153C1");
    check_base_class_offset(lv, (S21153C2*)(S21153C8*)(S21153C13*)(S21153C11*), ABISELECT(16,12), "S21153C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S21153C8*)(S21153C13*)(S21153C11*), ABISELECT(56,32), "S21153C1");
    check_base_class_offset(lv, (S21153C8*)(S21153C13*)(S21153C11*), ABISELECT(16,12), "S21153C1");
    check_base_class_offset(lv, (S20759C5_nt*)(S21153C13*)(S21153C11*), ABISELECT(304,184), "S21153C1");
    check_base_class_offset(lv, (S21153C13*)(S21153C11*), ABISELECT(16,12), "S21153C1");
    /*is_ambiguous_... S21153C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C4*)(S21153C15*), ABISELECT(320,192), "S21153C1");
    check_base_class_offset(lv, (S21153C6*)(S21153C4*)(S21153C15*), ABISELECT(336,204), "S21153C1");
    check_base_class_offset(lv, (S21153C4*)(S21153C15*), ABISELECT(320,192), "S21153C1");
    check_base_class_offset(lv, (S21153C15*)(S21153C11*), ABISELECT(320,192), "S21153C1");
    check_base_class_offset(lv, (S21153C11*), 0, "S21153C1");
    test_class_info(&lv, &cd_S21153C1);
    dp->~S21153C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21153C1(Test_S21153C1, "S21153C1", ABISELECT(576,360));

#else // __cplusplus

extern void _ZN8S21153C1C1Ev();
extern void _ZN8S21153C1D2Ev();
Name_Map name_map_S21153C1[] = {
  NSPAIR(_ZN8S21153C1C1Ev),
  NSPAIR(_ZN8S21153C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C4;
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
extern Class_Descriptor cd_S21153C2;
extern VTBL_ENTRY _ZTI8S21153C2[];
extern  VTBL_ENTRY _ZTV8S21153C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C2[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21153C2;
extern VTBL_ENTRY _ZTI8S21153C2[];
extern  VTBL_ENTRY _ZTV8S21153C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C8;
extern VTBL_ENTRY _ZTI8S21153C8[];
extern  VTBL_ENTRY _ZTV8S21153C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C8[];
extern Class_Descriptor cd_S21153C7;
extern VTBL_ENTRY _ZTI8S21153C7[];
extern  VTBL_ENTRY _ZTV8S21153C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C7[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21153C2;
extern VTBL_ENTRY _ZTI8S21153C2[];
extern  VTBL_ENTRY _ZTV8S21153C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21153C8;
extern VTBL_ENTRY _ZTI8S21153C8[];
extern  VTBL_ENTRY _ZTV8S21153C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C8[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S21153C13;
extern VTBL_ENTRY _ZTI9S21153C13[];
extern  VTBL_ENTRY _ZTV9S21153C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21153C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C4;
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
extern Class_Descriptor cd_S21153C15;
extern VTBL_ENTRY _ZTI9S21153C15[];
extern  VTBL_ENTRY _ZTV9S21153C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21153C15[];
extern Class_Descriptor cd_S21153C11;
extern VTBL_ENTRY _ZTI9S21153C11[];
extern  VTBL_ENTRY _ZTV9S21153C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21153C11[];
static Base_Class bases_S21153C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(112,56), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(200,128), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21153C6,    ABISELECT(160,96), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21153C4,    ABISELECT(144,84), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21153C2,    ABISELECT(80,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(272,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21153C2,    ABISELECT(240,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(280,172), //bcp->offset
    74, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21153C6,    ABISELECT(288,176), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21153C8,    ABISELECT(240,152), //bcp->offset
    66, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21153C7,    ABISELECT(224,140), //bcp->offset
    57, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(296,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21153C2,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21153C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20759C5_nt,    ABISELECT(304,184), //bcp->offset
    84, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S21153C13,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(320,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S21153C6,    ABISELECT(336,204), //bcp->offset
    97, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S21153C4,    ABISELECT(320,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21153C15,    ABISELECT(320,192), //bcp->offset
    89, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S21153C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21153C1[];
extern void _ZN8S21153C1D1Ev();
extern void _ZN8S21153C1D0Ev();
extern void ABISELECT(_ZThn16_N8S21153C1D1Ev,_ZThn12_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C1D0Ev,_ZThn12_N8S21153C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C1D1Ev,_ZThn32_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C1D0Ev,_ZThn32_N8S21153C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S21153C1D1Ev,_ZTv0_n24_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S21153C1D1Ev,_ZThn40_N8S21153C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21153C1D0Ev,_ZTv0_n24_N8S21153C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S21153C1D0Ev,_ZThn40_N8S21153C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C1D1Ev,_ZTv0_n12_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S21153C1D1Ev,_ZThn56_N8S21153C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C1D0Ev,_ZTv0_n12_N8S21153C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S21153C1D0Ev,_ZThn56_N8S21153C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C1D1Ev,_ZTv0_n20_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S21153C1D1Ev,_ZThn84_N8S21153C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C1D0Ev,_ZTv0_n20_N8S21153C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S21153C1D0Ev,_ZThn84_N8S21153C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21153C1D1Ev,_ZTvn12_n20_N8S21153C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C1D0Ev,_ZTvn12_n20_N8S21153C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C1D1Ev,_ZTv0_n12_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn200_N8S21153C1D1Ev,_ZThn128_N8S21153C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C1D0Ev,_ZTv0_n12_N8S21153C1D0Ev)();
extern void ABISELECT(_ZThn200_N8S21153C1D0Ev,_ZThn128_N8S21153C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21153C1D1Ev,_ZTv0_n28_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S21153C1D1Ev,_ZThn140_N8S21153C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21153C1D0Ev,_ZTv0_n28_N8S21153C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S21153C1D0Ev,_ZThn140_N8S21153C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S21153C1D1Ev,_ZTvn12_n28_N8S21153C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21153C1D0Ev,_ZTvn12_n28_N8S21153C1D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21153C1D1Ev,_ZTvn32_n28_N8S21153C1D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21153C1D0Ev,_ZTvn32_n28_N8S21153C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21153C1D1Ev,_ZTv0_n16_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn288_N8S21153C1D1Ev,_ZThn176_N8S21153C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C1D0Ev,_ZTv0_n16_N8S21153C1D0Ev)();
extern void ABISELECT(_ZThn288_N8S21153C1D0Ev,_ZThn176_N8S21153C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C1D1Ev,_ZTv0_n12_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn304_N8S21153C1D1Ev,_ZThn184_N8S21153C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C1D0Ev,_ZTv0_n12_N8S21153C1D0Ev)();
extern void ABISELECT(_ZThn304_N8S21153C1D0Ev,_ZThn184_N8S21153C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21153C1D1Ev,_ZTv0_n24_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn320_N8S21153C1D1Ev,_ZThn192_N8S21153C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21153C1D0Ev,_ZTv0_n24_N8S21153C1D0Ev)();
extern void ABISELECT(_ZThn320_N8S21153C1D0Ev,_ZThn192_N8S21153C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S21153C1D1Ev,_ZTvn12_n24_N8S21153C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S21153C1D0Ev,_ZTvn12_n24_N8S21153C1D0Ev)();
static  VTBL_ENTRY vtc_S21153C1[] = {
  ABISELECT(224,140),
  ABISELECT(80,40),
  ABISELECT(320,192),
  ABISELECT(304,184),
  ABISELECT(288,176),
  ABISELECT(112,56),
  ABISELECT(144,84),
  ABISELECT(200,128),
  ABISELECT(296,180),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&_ZN8S21153C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C1D0Ev,
  ABISELECT(288,172),
  ABISELECT(280,168),
  ABISELECT(272,164),
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C1D1Ev,_ZThn12_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C1D0Ev,_ZThn12_N8S21153C1D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21153C1D1Ev,_ZThn32_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21153C1D0Ev,_ZThn32_N8S21153C1D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21153C1D1Ev,_ZTv0_n24_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21153C1D0Ev,_ZTv0_n24_N8S21153C1D0Ev),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C1D1Ev,_ZTv0_n12_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C1D0Ev,_ZTv0_n12_N8S21153C1D0Ev),
  ABISELECT(-144,-84),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C1D1Ev,_ZTv0_n20_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C1D0Ev,_ZTv0_n20_N8S21153C1D0Ev),
  ABISELECT(40,32),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C1D1Ev,_ZTvn12_n20_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C1D0Ev,_ZTvn12_n20_N8S21153C1D0Ev),
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C1D1Ev,_ZTv0_n12_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C1D0Ev,_ZTv0_n12_N8S21153C1D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21153C1D1Ev,_ZTv0_n28_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21153C1D0Ev,_ZTv0_n28_N8S21153C1D0Ev),
  ABISELECT(48,24),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-240,-152),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21153C1D1Ev,_ZTvn12_n28_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21153C1D0Ev,_ZTvn12_n28_N8S21153C1D0Ev),
  ABISELECT(-280,-172),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21153C1D1Ev,_ZTvn32_n28_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21153C1D0Ev,_ZTvn32_n28_N8S21153C1D0Ev),
  ABISELECT(-288,-176),
  ABISELECT(-88,-48),
  ABISELECT(-288,-176),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C1D1Ev,_ZTv0_n16_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C1D0Ev,_ZTv0_n16_N8S21153C1D0Ev),
  ABISELECT(-304,-184),
  ABISELECT(-304,-184),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C1D1Ev,_ZTv0_n12_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C1D0Ev,_ZTv0_n12_N8S21153C1D0Ev),
  ABISELECT(-320,-192),
  ABISELECT(-24,-12),
  ABISELECT(-120,-64),
  ABISELECT(-208,-136),
  ABISELECT(-320,-192),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21153C1D1Ev,_ZTv0_n24_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21153C1D0Ev,_ZTv0_n24_N8S21153C1D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-336,-204),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S21153C1D1Ev,_ZTvn12_n24_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S21153C1D0Ev,_ZTvn12_n24_N8S21153C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21153C1[];
extern void _ZN9S21153C11D1Ev();
extern void _ZN9S21153C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21153C11__8S21153C1[] = {
  ABISELECT(320,192),
  ABISELECT(304,184),
  ABISELECT(288,176),
  ABISELECT(112,56),
  ABISELECT(144,84),
  ABISELECT(200,128),
  ABISELECT(296,180),
  0,
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&_ZN9S21153C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21153C11D0Ev,
};
extern void _ZN9S21153C13D1Ev();
extern void _ZN9S21153C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21153C139S21153C11__8S21153C1[] = {
  ABISELECT(288,172),
  ABISELECT(280,168),
  ABISELECT(272,164),
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&_ZN9S21153C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21153C13D0Ev,
};
extern void _ZN8S21153C8D1Ev();
extern void _ZN8S21153C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C89S21153C139S21153C11__A1__8S21153C1[] = {
  ABISELECT(272,164),
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&_ZN8S21153C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C8D0Ev,
};
extern void _ZN8S21153C2D1Ev();
extern void _ZN8S21153C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[] = {
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&_ZN8S21153C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S21153C2D1Ev,_ZThn44_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S21153C2D0Ev,_ZThn44_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S21153C2D1Ev,_ZThn72_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S21153C2D0Ev,_ZThn72_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[] = {
  ABISELECT(40,32),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn184_N8S21153C2D1Ev,_ZThn116_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn184_N8S21153C2D0Ev,_ZThn116_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[] = {
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S21153C8D1Ev,_ZThn44_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S21153C8D0Ev,_ZThn44_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C89S21153C139S21153C11__A1__8S21153C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S21153C8D1Ev,_ZThn72_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S21153C8D0Ev,_ZThn72_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C89S21153C139S21153C11__A1__8S21153C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C89S21153C139S21153C11__A1__8S21153C1[] = {
  ABISELECT(40,32),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn184_N8S21153C8D1Ev,_ZThn116_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn184_N8S21153C8D0Ev,_ZThn116_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C89S21153C139S21153C11__A1__8S21153C1[] = {
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn272_N8S21153C8D1Ev,_ZThn164_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn272_N8S21153C8D0Ev,_ZThn164_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__8S21153C89S21153C139S21153C11__A1__8S21153C1[] = {
  ABISELECT(-272,-164),
  ABISELECT(-88,-48),
  ABISELECT(-272,-164),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn184_N9S21153C13D1Ev,_ZThn116_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn184_N9S21153C13D0Ev,_ZThn116_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21153C139S21153C11__8S21153C1[] = {
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21153C13D1Ev,_ZTv0_n20_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn128_N9S21153C13D1Ev,_ZThn72_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21153C13D0Ev,_ZTv0_n20_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn128_N9S21153C13D0Ev,_ZThn72_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__9S21153C139S21153C11__8S21153C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C13D1Ev,_ZTv0_n20_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C13D0Ev,_ZTv0_n20_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S21153C13D1Ev,_ZThn44_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S21153C13D0Ev,_ZThn44_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21153C139S21153C11__8S21153C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21153C13D1Ev,_ZTvn12_n20_N9S21153C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21153C13D0Ev,_ZTvn12_n20_N9S21153C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__9S21153C139S21153C11__8S21153C1[] = {
  ABISELECT(40,32),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C13D1Ev,_ZTvn12_n20_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C13D0Ev,_ZTvn12_n20_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21153C13D1Ev,_ZTv0_n16_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn272_N9S21153C13D1Ev,_ZThn164_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21153C13D0Ev,_ZTv0_n16_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn272_N9S21153C13D0Ev,_ZThn164_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__9S21153C139S21153C11__8S21153C1[] = {
  ABISELECT(-272,-164),
  ABISELECT(-88,-48),
  ABISELECT(-272,-164),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C13D1Ev,_ZTv0_n16_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C13D0Ev,_ZTv0_n16_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn288_N9S21153C13D1Ev,_ZThn172_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn288_N9S21153C13D0Ev,_ZThn172_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S21153C139S21153C11__8S21153C1[] = {
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21153C11D1Ev,_ZThn12_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S21153C11D0Ev,_ZThn12_N9S21153C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21153C13__9S21153C11__8S21153C1[] = {
  ABISELECT(288,172),
  ABISELECT(280,168),
  ABISELECT(272,164),
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C11D1Ev,_ZThn12_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C11D0Ev,_ZThn12_N9S21153C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn200_N9S21153C11D1Ev,_ZThn128_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn200_N9S21153C11D0Ev,_ZThn128_N9S21153C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21153C11__8S21153C1[] = {
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21153C11D1Ev,_ZTv0_n20_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn144_N9S21153C11D1Ev,_ZThn84_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21153C11D0Ev,_ZTv0_n20_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn144_N9S21153C11D0Ev,_ZThn84_N9S21153C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__9S21153C11__8S21153C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C11D1Ev,_ZTv0_n20_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C11D0Ev,_ZTv0_n20_N9S21153C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S21153C11D1Ev,_ZThn56_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S21153C11D0Ev,_ZThn56_N9S21153C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21153C11__8S21153C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21153C11D1Ev,_ZTvn12_n20_N9S21153C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21153C11D0Ev,_ZTvn12_n20_N9S21153C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__9S21153C11__8S21153C1[] = {
  ABISELECT(40,32),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C11D1Ev,_ZTvn12_n20_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C11D0Ev,_ZTvn12_n20_N9S21153C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21153C11D1Ev,_ZTv0_n16_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn288_N9S21153C11D1Ev,_ZThn176_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21153C11D0Ev,_ZTv0_n16_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn288_N9S21153C11D0Ev,_ZThn176_N9S21153C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__9S21153C11__8S21153C1[] = {
  ABISELECT(-288,-176),
  ABISELECT(-88,-48),
  ABISELECT(-288,-176),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C11D1Ev,_ZTv0_n16_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C11D0Ev,_ZTv0_n16_N9S21153C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn304_N9S21153C11D1Ev,_ZThn184_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn304_N9S21153C11D0Ev,_ZThn184_N9S21153C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S21153C11__8S21153C1[] = {
  ABISELECT(-304,-184),
  ABISELECT(-304,-184),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21153C11D1Ev,_ZTv0_n24_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn320_N9S21153C11D1Ev,_ZThn192_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21153C11D0Ev,_ZTv0_n24_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn320_N9S21153C11D0Ev,_ZThn192_N9S21153C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21153C15__9S21153C11__8S21153C1[] = {
  ABISELECT(-320,-192),
  ABISELECT(-24,-12),
  ABISELECT(-120,-64),
  ABISELECT(-208,-136),
  ABISELECT(-320,-192),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21153C11D1Ev,_ZTv0_n24_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21153C11D0Ev,_ZTv0_n24_N9S21153C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N9S21153C11D1Ev,_ZTvn12_n24_N9S21153C11D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S21153C11D0Ev,_ZTvn12_n24_N9S21153C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C49S21153C15__A2__9S21153C11__8S21153C1[] = {
  ABISELECT(-136,-76),
  ABISELECT(-336,-204),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S21153C11D1Ev,_ZTvn12_n24_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S21153C11D0Ev,_ZTvn12_n24_N9S21153C11D0Ev),
};
extern void _ZN8S21153C2D1Ev();
extern void _ZN8S21153C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C2__8S21153C1[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&_ZN8S21153C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S21153C2D1Ev,_ZThn16_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S21153C2D0Ev,_ZThn16_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C2__8S21153C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21153C2D1Ev,_ZThn44_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21153C2D0Ev,_ZThn44_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C2__8S21153C1[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C2__8S21153C1[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S21153C2D1Ev,_ZThn88_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn120_N8S21153C2D0Ev,_ZThn88_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C2__8S21153C1[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C1[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C1[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21153C6D1Ev,_ZThn32_N8S21153C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21153C6D0Ev,_ZThn32_N8S21153C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C68S21153C4__8S21153C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C4__8S21153C1[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C4__8S21153C1[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C4__8S21153C1[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void _ZN8S21153C7D1Ev();
extern void _ZN8S21153C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C7__8S21153C1[] = {
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&_ZN8S21153C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C7D0Ev,
};
extern void _ZN8S21153C8D1Ev();
extern void _ZN8S21153C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C88S21153C7__8S21153C1[] = {
  ABISELECT(48,24),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&_ZN8S21153C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C8D0Ev,
};
extern void _ZN8S21153C2D1Ev();
extern void _ZN8S21153C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C28S21153C88S21153C7__A1__8S21153C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&_ZN8S21153C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C28S21153C88S21153C7__A1__8S21153C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C28S21153C88S21153C7__A1__8S21153C1[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C28S21153C88S21153C7__A1__8S21153C1[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C28S21153C88S21153C7__A1__8S21153C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C88S21153C7__8S21153C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C88S21153C7__8S21153C1[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C88S21153C7__8S21153C1[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C88S21153C7__8S21153C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21153C8D1Ev,_ZThn24_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S21153C8D0Ev,_ZThn24_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__8S21153C88S21153C7__8S21153C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-88,-48),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C7D1Ev,_ZThn12_N8S21153C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C7D0Ev,_ZThn12_N8S21153C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C8__8S21153C7__8S21153C1[] = {
  ABISELECT(48,24),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C7D1Ev,_ZThn12_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C7D0Ev,_ZThn12_N8S21153C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C7D1Ev,_ZTv0_n12_N8S21153C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C7D0Ev,_ZTv0_n12_N8S21153C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C7__8S21153C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C7D1Ev,_ZTv0_n12_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C7D0Ev,_ZTv0_n12_N8S21153C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C7D1Ev,_ZTv0_n20_N8S21153C7D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21153C7D0Ev,_ZTv0_n20_N8S21153C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C7__8S21153C1[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C7D1Ev,_ZTv0_n20_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C7D0Ev,_ZTv0_n20_N8S21153C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C7D1Ev,_ZTvn12_n20_N8S21153C7D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C7D0Ev,_ZTvn12_n20_N8S21153C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C7__8S21153C1[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C7D1Ev,_ZTvn12_n20_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C7D0Ev,_ZTvn12_n20_N8S21153C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C7D1Ev,_ZTv0_n12_N8S21153C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C7D0Ev,_ZTv0_n12_N8S21153C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__8S21153C7__8S21153C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C7D1Ev,_ZTv0_n12_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C7D0Ev,_ZTv0_n12_N8S21153C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21153C7D1Ev,_ZTv0_n16_N8S21153C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S21153C7D1Ev,_ZThn36_N8S21153C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C7D0Ev,_ZTv0_n16_N8S21153C7D0Ev)();
extern void ABISELECT(_ZThn64_N8S21153C7D0Ev,_ZThn36_N8S21153C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__8S21153C7__8S21153C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-88,-48),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C7D1Ev,_ZTv0_n16_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C7D0Ev,_ZTv0_n16_N8S21153C7D0Ev),
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__8S21153C1[] = {
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C6__A1__8S21153C1[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void _ZN9S21153C15D1Ev();
extern void _ZN9S21153C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21153C15__8S21153C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-120,-64),
  ABISELECT(-208,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&_ZN9S21153C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21153C15D0Ev,
};
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C49S21153C15__A1__8S21153C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-208,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C49S21153C15__A2__8S21153C1[] = {
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C68S21153C49S21153C15__A2__8S21153C1[] = {
  ABISELECT(136,76),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C49S21153C15__A1__8S21153C1[] = {
  ABISELECT(208,136),
  ABISELECT(208,136),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C49S21153C15__A1__8S21153C1[] = {
  ABISELECT(-136,-76),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C49S21153C15__A1__8S21153C1[] = {
  ABISELECT(120,64),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21153C15__8S21153C1[] = {
  ABISELECT(208,136),
  ABISELECT(208,136),
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21153C15D1Ev,_ZThn12_N9S21153C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21153C15D0Ev,_ZThn12_N9S21153C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__9S21153C15__8S21153C1[] = {
  ABISELECT(-136,-76),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C15D1Ev,_ZThn12_N9S21153C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C15D0Ev,_ZThn12_N9S21153C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21153C15__8S21153C1[] = {
  ABISELECT(120,64),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev),
};
static  VTT_ENTRY vtt_S21153C1[] = {
  {&(_ZTV8S21153C1[11]),  11,102},
  {&(_tg__ZTV9S21153C11__8S21153C1[9]),  9,11},
  {&(_tg__ZTV9S21153C139S21153C11__8S21153C1[8]),  8,10},
  {&(_tg__ZTV8S21153C89S21153C139S21153C11__A1__8S21153C1[6]),  6,8},
  {&(_tg__ZTV8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C89S21153C139S21153C11__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C89S21153C139S21153C11__A1__8S21153C1[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C89S21153C139S21153C11__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C89S21153C139S21153C11__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__8S21153C89S21153C139S21153C11__A1__8S21153C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__9S21153C139S21153C11__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C4__9S21153C139S21153C11__8S21153C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21153C139S21153C11__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C68S21153C4__9S21153C139S21153C11__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__9S21153C139S21153C11__8S21153C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__9S21153C139S21153C11__8S21153C1[3]),  3,5},
  {&(_tg__ZTV9S21153C13__9S21153C11__8S21153C1[8]),  8,10},
  {&(_tg__ZTV8S20760C9__A1__9S21153C11__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C4__9S21153C11__8S21153C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21153C11__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C68S21153C4__9S21153C11__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__9S21153C11__8S21153C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__9S21153C11__8S21153C1[3]),  3,5},
  {&(_tg__ZTV9S21153C15__9S21153C11__8S21153C1[6]),  6,8},
  {&(_tg__ZTV8S21153C68S21153C49S21153C15__A2__9S21153C11__8S21153C1[3]),  3,5},
  {&(_ZTV8S21153C1[33]),  33,102},
  {&(_ZTV8S21153C1[38]),  38,102},
  {&(_ZTV8S21153C1[45]),  45,102},
  {&(_ZTV8S21153C1[50]),  50,102},
  {&(_ZTV8S21153C1[55]),  55,102},
  {&(_ZTV8S21153C1[64]),  64,102},
  {&(_ZTV8S21153C1[72]),  72,102},
  {&(_ZTV8S21153C1[76]),  76,102},
  {&(_ZTV8S21153C1[82]),  82,102},
  {&(_ZTV8S21153C1[21]),  21,102},
  {&(_ZTV8S21153C1[87]),  87,102},
  {&(_ZTV8S21153C1[95]),  95,102},
  {&(_ZTV8S21153C1[100]),  100,102},
  {&(_tg__ZTV8S21153C2__8S21153C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21153C2__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C2__8S21153C1[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C2__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C2__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C1[4]),  4,6},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C68S21153C4__8S21153C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C4__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C6__8S21153C4__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C4__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C7__8S21153C1[6]),  6,8},
  {&(_tg__ZTV8S21153C88S21153C7__8S21153C1[6]),  6,8},
  {&(_tg__ZTV8S21153C28S21153C88S21153C7__A1__8S21153C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21153C28S21153C88S21153C7__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C28S21153C88S21153C7__A1__8S21153C1[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C28S21153C88S21153C7__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C28S21153C88S21153C7__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C88S21153C7__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C88S21153C7__8S21153C1[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C88S21153C7__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C88S21153C7__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__8S21153C88S21153C7__8S21153C1[4]),  4,6},
  {&(_tg__ZTV8S21153C8__8S21153C7__8S21153C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__8S21153C7__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C7__8S21153C1[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C7__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__8S21153C7__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__8S21153C7__8S21153C1[4]),  4,6},
  {&(_tg__ZTV8S21153C6__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C6__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV9S21153C15__8S21153C1[5]),  5,7},
  {&(_tg__ZTV8S21153C49S21153C15__A1__8S21153C1[4]),  4,6},
  {&(_tg__ZTV8S21153C68S21153C49S21153C15__A2__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C68S21153C49S21153C15__A2__8S21153C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C49S21153C15__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C6__8S21153C49S21153C15__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C49S21153C15__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21153C15__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C68S21153C4__9S21153C15__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21153C15__8S21153C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21153C1[];
extern  VTBL_ENTRY _ZTV8S21153C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C1[];
static VTBL_ENTRY alt_thunk_names233[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C7D0Ev,_ZTv0_n16_N8S21153C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C7D0Ev,_ZThn36_N8S21153C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C7D1Ev,_ZTv0_n16_N8S21153C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C7D1Ev,_ZThn36_N8S21153C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21153C6D0Ev,_ZThn32_N8S21153C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21153C6D1Ev,_ZThn32_N8S21153C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21153C11D0Ev,_ZTv0_n24_N9S21153C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S21153C11D0Ev,_ZThn192_N9S21153C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21153C11D1Ev,_ZTv0_n24_N9S21153C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S21153C11D1Ev,_ZThn192_N9S21153C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C11D0Ev,_ZTv0_n16_N9S21153C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21153C11D0Ev,_ZThn176_N9S21153C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C11D1Ev,_ZTv0_n16_N9S21153C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21153C11D1Ev,_ZThn176_N9S21153C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C11D0Ev,_ZTv0_n20_N9S21153C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21153C11D0Ev,_ZThn84_N9S21153C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C11D1Ev,_ZTv0_n20_N9S21153C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21153C11D1Ev,_ZThn84_N9S21153C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S21153C11D0Ev,_ZThn184_N9S21153C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21153C11D0Ev,_ZThn56_N9S21153C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S21153C11D0Ev,_ZThn128_N9S21153C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S21153C11D1Ev,_ZThn184_N9S21153C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21153C11D1Ev,_ZThn56_N9S21153C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S21153C11D1Ev,_ZThn128_N9S21153C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C13D0Ev,_ZTv0_n16_N9S21153C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S21153C13D0Ev,_ZThn164_N9S21153C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C13D1Ev,_ZTv0_n16_N9S21153C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S21153C13D1Ev,_ZThn164_N9S21153C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C13D0Ev,_ZTv0_n20_N9S21153C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21153C13D0Ev,_ZThn72_N9S21153C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C13D1Ev,_ZTv0_n20_N9S21153C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21153C13D1Ev,_ZThn72_N9S21153C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21153C13D0Ev,_ZThn172_N9S21153C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21153C13D0Ev,_ZThn44_N9S21153C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21153C13D0Ev,_ZThn116_N9S21153C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21153C13D1Ev,_ZThn172_N9S21153C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21153C13D1Ev,_ZThn44_N9S21153C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21153C13D1Ev,_ZThn116_N9S21153C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C8D0Ev,_ZThn24_N8S21153C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21153C8D0Ev,_ZThn164_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C8D1Ev,_ZThn24_N8S21153C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21153C8D1Ev,_ZThn164_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21153C8D0Ev,_ZThn72_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21153C8D1Ev,_ZThn72_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21153C8D0Ev,_ZThn116_N8S21153C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21153C8D0Ev,_ZThn44_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21153C8D1Ev,_ZThn116_N8S21153C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21153C8D1Ev,_ZThn44_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C2D0Ev,_ZThn44_N8S21153C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21153C2D0Ev,_ZThn72_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C2D1Ev,_ZThn44_N8S21153C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21153C2D1Ev,_ZThn72_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21153C2D0Ev,_ZThn88_N8S21153C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21153C2D0Ev,_ZThn16_N8S21153C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21153C2D0Ev,_ZThn116_N8S21153C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21153C2D0Ev,_ZThn44_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21153C2D1Ev,_ZThn88_N8S21153C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21153C2D1Ev,_ZThn16_N8S21153C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21153C2D1Ev,_ZThn116_N8S21153C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21153C2D1Ev,_ZThn44_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C1D0Ev,_ZTv0_n16_N8S21153C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21153C1D0Ev,_ZThn176_N8S21153C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C1D1Ev,_ZTv0_n16_N8S21153C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21153C1D1Ev,_ZThn176_N8S21153C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21153C1D0Ev,_ZTv0_n28_N8S21153C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21153C1D0Ev,_ZThn140_N8S21153C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21153C1D1Ev,_ZTv0_n28_N8S21153C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21153C1D1Ev,_ZThn140_N8S21153C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C1D0Ev,_ZTv0_n20_N8S21153C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21153C1D0Ev,_ZThn84_N8S21153C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C1D1Ev,_ZTv0_n20_N8S21153C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21153C1D1Ev,_ZThn84_N8S21153C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C1D0Ev,_ZTv0_n12_N8S21153C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21153C1D0Ev,_ZThn184_N8S21153C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21153C1D0Ev,_ZThn128_N8S21153C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21153C1D0Ev,_ZThn56_N8S21153C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C1D1Ev,_ZTv0_n12_N8S21153C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21153C1D1Ev,_ZThn184_N8S21153C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21153C1D1Ev,_ZThn128_N8S21153C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21153C1D1Ev,_ZThn56_N8S21153C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21153C1D0Ev,_ZTv0_n24_N8S21153C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21153C1D0Ev,_ZThn192_N8S21153C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C1D0Ev,_ZThn40_N8S21153C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21153C1D1Ev,_ZTv0_n24_N8S21153C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21153C1D1Ev,_ZThn192_N8S21153C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C1D1Ev,_ZThn40_N8S21153C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21153C1 = {  "S21153C1", // class name
  bases_S21153C1, 27,
  &(vtc_S21153C1[0]), // expected_vtbl_contents
  &(vtt_S21153C1[0]), // expected_vtt_contents
  ABISELECT(576,360), // object size
  NSPAIRA(_ZTI8S21153C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21153C1),102, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21153C1),83, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names233,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S393C4  : S3423C8_nt {
};
//SIG(-1 S393C4) C1{ BC2{ m Fi}}



static void Test_S393C4()
{
  extern Class_Descriptor cd_S393C4;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S393C4, buf);
    S393C4 &lv = *(new (buf) S393C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S393C4)");
    check2(__alignof__(lv), 4, "__alignof__(S393C4)");
    check_base_class_offset(lv, (S3423C8_nt*), 0, "S393C4");
    test_class_info(&lv, &cd_S393C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS393C4(Test_S393C4, "S393C4", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
static Base_Class bases_S393C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S393C4[];
Class_Descriptor cd_S393C4 = {  "S393C4", // class name
  bases_S393C4, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI6S393C4),ABISELECT(24,12), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S393C3  : S393C4 {
  ::S4161C4_nt s393c3f0;
  void *s393c3f1;
  virtual  ~S393C3(); // _ZN6S393C3D1Ev
  virtual void  v3(); // _ZN6S393C32v3Ev
  virtual void  v4(); // _ZN6S393C32v4Ev
  virtual void  v5(); // _ZN6S393C32v5Ev
  virtual void  v6(); // _ZN6S393C32v6Ev
  virtual void  v7(); // _ZN6S393C32v7Ev
  virtual void  v8(); // _ZN6S393C32v8Ev
  virtual void  v9(); // _ZN6S393C32v9Ev
  virtual void  v10(); // _ZN6S393C33v10Ev
  virtual void  v11(); // _ZN6S393C33v11Ev
  virtual void  v12(); // _ZN6S393C33v12Ev
  virtual void  v13(); // _ZN6S393C33v13Ev
  virtual void  v14(); // _ZN6S393C33v14Ev
  virtual void  v15(); // _ZN6S393C33v15Ev
  virtual void  v16(); // _ZN6S393C33v16Ev
  virtual void  v17(); // _ZN6S393C33v17Ev
  virtual void  v18(); // _ZN6S393C33v18Ev
  virtual void  v19(); // _ZN6S393C33v19Ev
  virtual void  v20(); // _ZN6S393C33v20Ev
  virtual void  v21(); // _ZN6S393C33v21Ev
  virtual void  v22(); // _ZN6S393C33v22Ev
  virtual void  v23(); // _ZN6S393C33v23Ev
  virtual void  v24(); // _ZN6S393C33v24Ev
  virtual void  v25(); // _ZN6S393C33v25Ev
  S393C3(); // tgen
};
//SIG(-1 S393C3) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 FC4{ m Fp} Fp}


 S393C3 ::~S393C3(){ note_dtor("S393C3", this);}
void  S393C3 ::v3(){vfunc_called(this, "_ZN6S393C32v3Ev");}
void  S393C3 ::v4(){vfunc_called(this, "_ZN6S393C32v4Ev");}
void  S393C3 ::v5(){vfunc_called(this, "_ZN6S393C32v5Ev");}
void  S393C3 ::v6(){vfunc_called(this, "_ZN6S393C32v6Ev");}
void  S393C3 ::v7(){vfunc_called(this, "_ZN6S393C32v7Ev");}
void  S393C3 ::v8(){vfunc_called(this, "_ZN6S393C32v8Ev");}
void  S393C3 ::v9(){vfunc_called(this, "_ZN6S393C32v9Ev");}
void  S393C3 ::v10(){vfunc_called(this, "_ZN6S393C33v10Ev");}
void  S393C3 ::v11(){vfunc_called(this, "_ZN6S393C33v11Ev");}
void  S393C3 ::v12(){vfunc_called(this, "_ZN6S393C33v12Ev");}
void  S393C3 ::v13(){vfunc_called(this, "_ZN6S393C33v13Ev");}
void  S393C3 ::v14(){vfunc_called(this, "_ZN6S393C33v14Ev");}
void  S393C3 ::v15(){vfunc_called(this, "_ZN6S393C33v15Ev");}
void  S393C3 ::v16(){vfunc_called(this, "_ZN6S393C33v16Ev");}
void  S393C3 ::v17(){vfunc_called(this, "_ZN6S393C33v17Ev");}
void  S393C3 ::v18(){vfunc_called(this, "_ZN6S393C33v18Ev");}
void  S393C3 ::v19(){vfunc_called(this, "_ZN6S393C33v19Ev");}
void  S393C3 ::v20(){vfunc_called(this, "_ZN6S393C33v20Ev");}
void  S393C3 ::v21(){vfunc_called(this, "_ZN6S393C33v21Ev");}
void  S393C3 ::v22(){vfunc_called(this, "_ZN6S393C33v22Ev");}
void  S393C3 ::v23(){vfunc_called(this, "_ZN6S393C33v23Ev");}
void  S393C3 ::v24(){vfunc_called(this, "_ZN6S393C33v24Ev");}
void  S393C3 ::v25(){vfunc_called(this, "_ZN6S393C33v25Ev");}
S393C3 ::S393C3(){ note_ctor("S393C3", this);} // tgen

static void Test_S393C3()
{
  extern Class_Descriptor cd_S393C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S393C3, buf);
    S393C3 *dp, &lv = *(dp=new (buf) S393C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S393C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S393C3)");
    check_base_class_offset(lv, (S3423C8_nt*)(S393C4*), ABISELECT(8,4), "S393C3");
    check_base_class_offset(lv, (S393C4*), ABISELECT(8,4), "S393C3");
    check_field_offset(lv, s393c3f0, ABISELECT(16,8), "S393C3.s393c3f0");
    check_field_offset(lv, s393c3f1, ABISELECT(24,12), "S393C3.s393c3f1");
    test_class_info(&lv, &cd_S393C3);
    dp->~S393C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS393C3(Test_S393C3, "S393C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN6S393C3C1Ev();
extern void _ZN6S393C3D1Ev();
Name_Map name_map_S393C3[] = {
  NSPAIR(_ZN6S393C3C1Ev),
  NSPAIR(_ZN6S393C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S393C4;
extern VTBL_ENTRY _ZTI6S393C4[];
static Base_Class bases_S393C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S393C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S393C3[];
extern void _ZN6S393C3D1Ev();
extern void _ZN6S393C3D0Ev();
extern void _ZN6S393C32v3Ev();
extern void _ZN6S393C32v4Ev();
extern void _ZN6S393C32v5Ev();
extern void _ZN6S393C32v6Ev();
extern void _ZN6S393C32v7Ev();
extern void _ZN6S393C32v8Ev();
extern void _ZN6S393C32v9Ev();
extern void _ZN6S393C33v10Ev();
extern void _ZN6S393C33v11Ev();
extern void _ZN6S393C33v12Ev();
extern void _ZN6S393C33v13Ev();
extern void _ZN6S393C33v14Ev();
extern void _ZN6S393C33v15Ev();
extern void _ZN6S393C33v16Ev();
extern void _ZN6S393C33v17Ev();
extern void _ZN6S393C33v18Ev();
extern void _ZN6S393C33v19Ev();
extern void _ZN6S393C33v20Ev();
extern void _ZN6S393C33v21Ev();
extern void _ZN6S393C33v22Ev();
extern void _ZN6S393C33v23Ev();
extern void _ZN6S393C33v24Ev();
extern void _ZN6S393C33v25Ev();
static  VTBL_ENTRY vtc_S393C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S393C3[0]),
  (VTBL_ENTRY)&_ZN6S393C3D1Ev,
  (VTBL_ENTRY)&_ZN6S393C3D0Ev,
  (VTBL_ENTRY)&_ZN6S393C32v3Ev,
  (VTBL_ENTRY)&_ZN6S393C32v4Ev,
  (VTBL_ENTRY)&_ZN6S393C32v5Ev,
  (VTBL_ENTRY)&_ZN6S393C32v6Ev,
  (VTBL_ENTRY)&_ZN6S393C32v7Ev,
  (VTBL_ENTRY)&_ZN6S393C32v8Ev,
  (VTBL_ENTRY)&_ZN6S393C32v9Ev,
  (VTBL_ENTRY)&_ZN6S393C33v10Ev,
  (VTBL_ENTRY)&_ZN6S393C33v11Ev,
  (VTBL_ENTRY)&_ZN6S393C33v12Ev,
  (VTBL_ENTRY)&_ZN6S393C33v13Ev,
  (VTBL_ENTRY)&_ZN6S393C33v14Ev,
  (VTBL_ENTRY)&_ZN6S393C33v15Ev,
  (VTBL_ENTRY)&_ZN6S393C33v16Ev,
  (VTBL_ENTRY)&_ZN6S393C33v17Ev,
  (VTBL_ENTRY)&_ZN6S393C33v18Ev,
  (VTBL_ENTRY)&_ZN6S393C33v19Ev,
  (VTBL_ENTRY)&_ZN6S393C33v20Ev,
  (VTBL_ENTRY)&_ZN6S393C33v21Ev,
  (VTBL_ENTRY)&_ZN6S393C33v22Ev,
  (VTBL_ENTRY)&_ZN6S393C33v23Ev,
  (VTBL_ENTRY)&_ZN6S393C33v24Ev,
  (VTBL_ENTRY)&_ZN6S393C33v25Ev,
};
extern VTBL_ENTRY _ZTI6S393C3[];
extern  VTBL_ENTRY _ZTV6S393C3[];
Class_Descriptor cd_S393C3 = {  "S393C3", // class name
  bases_S393C3, 2,
  &(vtc_S393C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI6S393C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV6S393C3),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S393C2  : S393C3 {
  ::S3423C4_nt s393c2f0;
  virtual void  v26(); // _ZN6S393C23v26Ev
  virtual void  v27(); // _ZN6S393C23v27Ev
  virtual void  v28(); // _ZN6S393C23v28Ev
  virtual void  v29(); // _ZN6S393C23v29Ev
  virtual void  v30(); // _ZN6S393C23v30Ev
  virtual void  v31(); // _ZN6S393C23v31Ev
  virtual void  v32(); // _ZN6S393C23v32Ev
  virtual void  v33(); // _ZN6S393C23v33Ev
  virtual void  v34(); // _ZN6S393C23v34Ev
  virtual void  v35(); // _ZN6S393C23v35Ev
  virtual void  v36(); // _ZN6S393C23v36Ev
  ~S393C2(); // tgen
  S393C2(); // tgen
};
//SIG(-1 S393C2) C1{ BC2{ BC3{ BC4{ m Fi}} vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 FC5{ m Fp} Fp} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 FC6{ m Fi[2]}}


void  S393C2 ::v26(){vfunc_called(this, "_ZN6S393C23v26Ev");}
void  S393C2 ::v27(){vfunc_called(this, "_ZN6S393C23v27Ev");}
void  S393C2 ::v28(){vfunc_called(this, "_ZN6S393C23v28Ev");}
void  S393C2 ::v29(){vfunc_called(this, "_ZN6S393C23v29Ev");}
void  S393C2 ::v30(){vfunc_called(this, "_ZN6S393C23v30Ev");}
void  S393C2 ::v31(){vfunc_called(this, "_ZN6S393C23v31Ev");}
void  S393C2 ::v32(){vfunc_called(this, "_ZN6S393C23v32Ev");}
void  S393C2 ::v33(){vfunc_called(this, "_ZN6S393C23v33Ev");}
void  S393C2 ::v34(){vfunc_called(this, "_ZN6S393C23v34Ev");}
void  S393C2 ::v35(){vfunc_called(this, "_ZN6S393C23v35Ev");}
void  S393C2 ::v36(){vfunc_called(this, "_ZN6S393C23v36Ev");}
S393C2 ::~S393C2(){ note_dtor("S393C2", this);} // tgen
S393C2 ::S393C2(){ note_ctor("S393C2", this);} // tgen

static void Test_S393C2()
{
  extern Class_Descriptor cd_S393C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S393C2, buf);
    S393C2 *dp, &lv = *(dp=new (buf) S393C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S393C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S393C2)");
    check_base_class_offset(lv, (S3423C8_nt*)(S393C4*)(S393C3*), ABISELECT(8,4), "S393C2");
    check_base_class_offset(lv, (S393C4*)(S393C3*), ABISELECT(8,4), "S393C2");
    check_base_class_offset(lv, (S393C3*), 0, "S393C2");
    check_field_offset(lv, s393c2f0, ABISELECT(32,16), "S393C2.s393c2f0");
    test_class_info(&lv, &cd_S393C2);
    dp->~S393C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS393C2(Test_S393C2, "S393C2", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN6S393C2C1Ev();
extern void _ZN6S393C2D1Ev();
Name_Map name_map_S393C2[] = {
  NSPAIR(_ZN6S393C2C1Ev),
  NSPAIR(_ZN6S393C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S393C4;
extern VTBL_ENTRY _ZTI6S393C4[];
extern Class_Descriptor cd_S393C3;
extern VTBL_ENTRY _ZTI6S393C3[];
extern  VTBL_ENTRY _ZTV6S393C3[];
static Base_Class bases_S393C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S393C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S393C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S393C2[];
extern void _ZN6S393C2D1Ev();
extern void _ZN6S393C2D0Ev();
extern void _ZN6S393C32v3Ev();
extern void _ZN6S393C32v4Ev();
extern void _ZN6S393C32v5Ev();
extern void _ZN6S393C32v6Ev();
extern void _ZN6S393C32v7Ev();
extern void _ZN6S393C32v8Ev();
extern void _ZN6S393C32v9Ev();
extern void _ZN6S393C33v10Ev();
extern void _ZN6S393C33v11Ev();
extern void _ZN6S393C33v12Ev();
extern void _ZN6S393C33v13Ev();
extern void _ZN6S393C33v14Ev();
extern void _ZN6S393C33v15Ev();
extern void _ZN6S393C33v16Ev();
extern void _ZN6S393C33v17Ev();
extern void _ZN6S393C33v18Ev();
extern void _ZN6S393C33v19Ev();
extern void _ZN6S393C33v20Ev();
extern void _ZN6S393C33v21Ev();
extern void _ZN6S393C33v22Ev();
extern void _ZN6S393C33v23Ev();
extern void _ZN6S393C33v24Ev();
extern void _ZN6S393C33v25Ev();
extern void _ZN6S393C23v26Ev();
extern void _ZN6S393C23v27Ev();
extern void _ZN6S393C23v28Ev();
extern void _ZN6S393C23v29Ev();
extern void _ZN6S393C23v30Ev();
extern void _ZN6S393C23v31Ev();
extern void _ZN6S393C23v32Ev();
extern void _ZN6S393C23v33Ev();
extern void _ZN6S393C23v34Ev();
extern void _ZN6S393C23v35Ev();
extern void _ZN6S393C23v36Ev();
static  VTBL_ENTRY vtc_S393C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S393C2[0]),
  (VTBL_ENTRY)&_ZN6S393C2D1Ev,
  (VTBL_ENTRY)&_ZN6S393C2D0Ev,
  (VTBL_ENTRY)&_ZN6S393C32v3Ev,
  (VTBL_ENTRY)&_ZN6S393C32v4Ev,
  (VTBL_ENTRY)&_ZN6S393C32v5Ev,
  (VTBL_ENTRY)&_ZN6S393C32v6Ev,
  (VTBL_ENTRY)&_ZN6S393C32v7Ev,
  (VTBL_ENTRY)&_ZN6S393C32v8Ev,
  (VTBL_ENTRY)&_ZN6S393C32v9Ev,
  (VTBL_ENTRY)&_ZN6S393C33v10Ev,
  (VTBL_ENTRY)&_ZN6S393C33v11Ev,
  (VTBL_ENTRY)&_ZN6S393C33v12Ev,
  (VTBL_ENTRY)&_ZN6S393C33v13Ev,
  (VTBL_ENTRY)&_ZN6S393C33v14Ev,
  (VTBL_ENTRY)&_ZN6S393C33v15Ev,
  (VTBL_ENTRY)&_ZN6S393C33v16Ev,
  (VTBL_ENTRY)&_ZN6S393C33v17Ev,
  (VTBL_ENTRY)&_ZN6S393C33v18Ev,
  (VTBL_ENTRY)&_ZN6S393C33v19Ev,
  (VTBL_ENTRY)&_ZN6S393C33v20Ev,
  (VTBL_ENTRY)&_ZN6S393C33v21Ev,
  (VTBL_ENTRY)&_ZN6S393C33v22Ev,
  (VTBL_ENTRY)&_ZN6S393C33v23Ev,
  (VTBL_ENTRY)&_ZN6S393C33v24Ev,
  (VTBL_ENTRY)&_ZN6S393C33v25Ev,
  (VTBL_ENTRY)&_ZN6S393C23v26Ev,
  (VTBL_ENTRY)&_ZN6S393C23v27Ev,
  (VTBL_ENTRY)&_ZN6S393C23v28Ev,
  (VTBL_ENTRY)&_ZN6S393C23v29Ev,
  (VTBL_ENTRY)&_ZN6S393C23v30Ev,
  (VTBL_ENTRY)&_ZN6S393C23v31Ev,
  (VTBL_ENTRY)&_ZN6S393C23v32Ev,
  (VTBL_ENTRY)&_ZN6S393C23v33Ev,
  (VTBL_ENTRY)&_ZN6S393C23v34Ev,
  (VTBL_ENTRY)&_ZN6S393C23v35Ev,
  (VTBL_ENTRY)&_ZN6S393C23v36Ev,
};
extern VTBL_ENTRY _ZTI6S393C2[];
extern  VTBL_ENTRY _ZTV6S393C2[];
Class_Descriptor cd_S393C2 = {  "S393C2", // class name
  bases_S393C2, 3,
  &(vtc_S393C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI6S393C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S393C2),38, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S393C8_nt  {
  void *s393c8f0;
  void  mf393c8(); // _ZN9S393C8_nt7mf393c8Ev
};
//SIG(-1 S393C8_nt) C1{ m Fp}


void  S393C8_nt ::mf393c8(){}

//skip512 S393C8_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S393C1  : S393C2 {
  ::S393C8_nt s393c1f0;
  virtual  ~S393C1(); // _ZN6S393C1D1Ev
  virtual void  v1(); // _ZN6S393C12v1Ev
  virtual void  v2(); // _ZN6S393C12v2Ev
  S393C1(); // tgen
};
//SIG(1 S393C1) C1{ BC2{ BC3{ BC4{ BC5{ m Fi}} vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 FC6{ m Fp} Fp} v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 FC7{ m Fi[2]}} vd v1 v2 FC8{ m Fp}}


 S393C1 ::~S393C1(){ note_dtor("S393C1", this);}
void  S393C1 ::v1(){vfunc_called(this, "_ZN6S393C12v1Ev");}
void  S393C1 ::v2(){vfunc_called(this, "_ZN6S393C12v2Ev");}
S393C1 ::S393C1(){ note_ctor("S393C1", this);} // tgen

static void Test_S393C1()
{
  extern Class_Descriptor cd_S393C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S393C1, buf);
    S393C1 *dp, &lv = *(dp=new (buf) S393C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S393C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S393C1)");
    check_base_class_offset(lv, (S3423C8_nt*)(S393C4*)(S393C3*)(S393C2*), ABISELECT(8,4), "S393C1");
    check_base_class_offset(lv, (S393C4*)(S393C3*)(S393C2*), ABISELECT(8,4), "S393C1");
    check_base_class_offset(lv, (S393C3*)(S393C2*), 0, "S393C1");
    check_base_class_offset(lv, (S393C2*), 0, "S393C1");
    check_field_offset(lv, s393c1f0, ABISELECT(40,24), "S393C1.s393c1f0");
    test_class_info(&lv, &cd_S393C1);
    dp->~S393C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS393C1(Test_S393C1, "S393C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN6S393C1C1Ev();
extern void _ZN6S393C1D1Ev();
Name_Map name_map_S393C1[] = {
  NSPAIR(_ZN6S393C1C1Ev),
  NSPAIR(_ZN6S393C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S393C4;
extern VTBL_ENTRY _ZTI6S393C4[];
extern Class_Descriptor cd_S393C3;
extern VTBL_ENTRY _ZTI6S393C3[];
extern  VTBL_ENTRY _ZTV6S393C3[];
extern Class_Descriptor cd_S393C2;
extern VTBL_ENTRY _ZTI6S393C2[];
extern  VTBL_ENTRY _ZTV6S393C2[];
static Base_Class bases_S393C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S393C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S393C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S393C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S393C1[];
extern void _ZN6S393C1D1Ev();
extern void _ZN6S393C1D0Ev();
extern void _ZN6S393C32v3Ev();
extern void _ZN6S393C32v4Ev();
extern void _ZN6S393C32v5Ev();
extern void _ZN6S393C32v6Ev();
extern void _ZN6S393C32v7Ev();
extern void _ZN6S393C32v8Ev();
extern void _ZN6S393C32v9Ev();
extern void _ZN6S393C33v10Ev();
extern void _ZN6S393C33v11Ev();
extern void _ZN6S393C33v12Ev();
extern void _ZN6S393C33v13Ev();
extern void _ZN6S393C33v14Ev();
extern void _ZN6S393C33v15Ev();
extern void _ZN6S393C33v16Ev();
extern void _ZN6S393C33v17Ev();
extern void _ZN6S393C33v18Ev();
extern void _ZN6S393C33v19Ev();
extern void _ZN6S393C33v20Ev();
extern void _ZN6S393C33v21Ev();
extern void _ZN6S393C33v22Ev();
extern void _ZN6S393C33v23Ev();
extern void _ZN6S393C33v24Ev();
extern void _ZN6S393C33v25Ev();
extern void _ZN6S393C23v26Ev();
extern void _ZN6S393C23v27Ev();
extern void _ZN6S393C23v28Ev();
extern void _ZN6S393C23v29Ev();
extern void _ZN6S393C23v30Ev();
extern void _ZN6S393C23v31Ev();
extern void _ZN6S393C23v32Ev();
extern void _ZN6S393C23v33Ev();
extern void _ZN6S393C23v34Ev();
extern void _ZN6S393C23v35Ev();
extern void _ZN6S393C23v36Ev();
extern void _ZN6S393C12v1Ev();
extern void _ZN6S393C12v2Ev();
static  VTBL_ENTRY vtc_S393C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S393C1[0]),
  (VTBL_ENTRY)&_ZN6S393C1D1Ev,
  (VTBL_ENTRY)&_ZN6S393C1D0Ev,
  (VTBL_ENTRY)&_ZN6S393C32v3Ev,
  (VTBL_ENTRY)&_ZN6S393C32v4Ev,
  (VTBL_ENTRY)&_ZN6S393C32v5Ev,
  (VTBL_ENTRY)&_ZN6S393C32v6Ev,
  (VTBL_ENTRY)&_ZN6S393C32v7Ev,
  (VTBL_ENTRY)&_ZN6S393C32v8Ev,
  (VTBL_ENTRY)&_ZN6S393C32v9Ev,
  (VTBL_ENTRY)&_ZN6S393C33v10Ev,
  (VTBL_ENTRY)&_ZN6S393C33v11Ev,
  (VTBL_ENTRY)&_ZN6S393C33v12Ev,
  (VTBL_ENTRY)&_ZN6S393C33v13Ev,
  (VTBL_ENTRY)&_ZN6S393C33v14Ev,
  (VTBL_ENTRY)&_ZN6S393C33v15Ev,
  (VTBL_ENTRY)&_ZN6S393C33v16Ev,
  (VTBL_ENTRY)&_ZN6S393C33v17Ev,
  (VTBL_ENTRY)&_ZN6S393C33v18Ev,
  (VTBL_ENTRY)&_ZN6S393C33v19Ev,
  (VTBL_ENTRY)&_ZN6S393C33v20Ev,
  (VTBL_ENTRY)&_ZN6S393C33v21Ev,
  (VTBL_ENTRY)&_ZN6S393C33v22Ev,
  (VTBL_ENTRY)&_ZN6S393C33v23Ev,
  (VTBL_ENTRY)&_ZN6S393C33v24Ev,
  (VTBL_ENTRY)&_ZN6S393C33v25Ev,
  (VTBL_ENTRY)&_ZN6S393C23v26Ev,
  (VTBL_ENTRY)&_ZN6S393C23v27Ev,
  (VTBL_ENTRY)&_ZN6S393C23v28Ev,
  (VTBL_ENTRY)&_ZN6S393C23v29Ev,
  (VTBL_ENTRY)&_ZN6S393C23v30Ev,
  (VTBL_ENTRY)&_ZN6S393C23v31Ev,
  (VTBL_ENTRY)&_ZN6S393C23v32Ev,
  (VTBL_ENTRY)&_ZN6S393C23v33Ev,
  (VTBL_ENTRY)&_ZN6S393C23v34Ev,
  (VTBL_ENTRY)&_ZN6S393C23v35Ev,
  (VTBL_ENTRY)&_ZN6S393C23v36Ev,
  (VTBL_ENTRY)&_ZN6S393C12v1Ev,
  (VTBL_ENTRY)&_ZN6S393C12v2Ev,
};
extern VTBL_ENTRY _ZTI6S393C1[];
extern  VTBL_ENTRY _ZTV6S393C1[];
Class_Descriptor cd_S393C1 = {  "S393C1", // class name
  bases_S393C1, 4,
  &(vtc_S393C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI6S393C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S393C1),40, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C3  : virtual S4228C37 , S4228C27 {
  ~S7755C3(); // tgen
  S7755C3(); // tgen
};
//SIG(-1 S7755C3) C1{ VBC2{ m} BC3{ m}}


S7755C3 ::~S7755C3(){ note_dtor("S7755C3", this);} // tgen
S7755C3 ::S7755C3(){ note_ctor("S7755C3", this);} // tgen

static void Test_S7755C3()
{
  extern Class_Descriptor cd_S7755C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7755C3, buf);
    S7755C3 *dp, &lv = *(dp=new (buf) S7755C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7755C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C3)");
    check_base_class_offset(lv, (S4228C37*), 0, "S7755C3");
    check_base_class_offset(lv, (S4228C27*), 0, "S7755C3");
    test_class_info(&lv, &cd_S7755C3);
    dp->~S7755C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C3(Test_S7755C3, "S7755C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7755C3C1Ev();
extern void _ZN7S7755C3D1Ev();
Name_Map name_map_S7755C3[] = {
  NSPAIR(_ZN7S7755C3C1Ev),
  NSPAIR(_ZN7S7755C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7755C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7755C3[];
static  VTBL_ENTRY vtc_S7755C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C3[0]),
};
extern VTBL_ENTRY _ZTV7S7755C3[];
static  VTT_ENTRY vtt_S7755C3[] = {
  {&(_ZTV7S7755C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7755C3[];
extern  VTBL_ENTRY _ZTV7S7755C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C3[];
Class_Descriptor cd_S7755C3 = {  "S7755C3", // class name
  bases_S7755C3, 2,
  &(vtc_S7755C3[0]), // expected_vtbl_contents
  &(vtt_S7755C3[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7755C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7755C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7755C3),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C2  : virtual S7755C3 {
  virtual  ~S7755C2(); // _ZN7S7755C2D2Ev
  S7755C2(); // tgen
};
//SIG(-1 S7755C2) C1{ VBC2{ VBC3{ m} BC4{ m}} vd}


 S7755C2 ::~S7755C2(){ note_dtor("S7755C2", this);}
S7755C2 ::S7755C2(){ note_ctor("S7755C2", this);} // tgen

static void Test_S7755C2()
{
  extern Class_Descriptor cd_S7755C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7755C2, buf);
    S7755C2 *dp, &lv = *(dp=new (buf) S7755C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7755C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C2)");
    check_base_class_offset(lv, (S4228C37*)(S7755C3*), 0, "S7755C2");
    check_base_class_offset(lv, (S4228C27*)(S7755C3*), 0, "S7755C2");
    check_base_class_offset(lv, (S7755C3*), 0, "S7755C2");
    test_class_info(&lv, &cd_S7755C2);
    dp->~S7755C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C2(Test_S7755C2, "S7755C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7755C2C1Ev();
extern void _ZN7S7755C2D2Ev();
Name_Map name_map_S7755C2[] = {
  NSPAIR(_ZN7S7755C2C1Ev),
  NSPAIR(_ZN7S7755C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C3;
extern VTBL_ENTRY _ZTI7S7755C3[];
extern  VTBL_ENTRY _ZTV7S7755C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C3[];
static Base_Class bases_S7755C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7755C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7755C2[];
extern void _ZN7S7755C2D1Ev();
extern void _ZN7S7755C2D0Ev();
static  VTBL_ENTRY vtc_S7755C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C2[0]),
  (VTBL_ENTRY)&_ZN7S7755C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7755C2D0Ev,
};
extern VTBL_ENTRY _ZTV7S7755C2[];
static  VTBL_ENTRY _tg__ZTV7S7755C3__7S7755C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C3[0]),
};
static  VTT_ENTRY vtt_S7755C2[] = {
  {&(_ZTV7S7755C2[4]),  4,6},
  {&(_ZTV7S7755C2[4]),  4,6},
  {&(_tg__ZTV7S7755C3__7S7755C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7755C2[];
extern  VTBL_ENTRY _ZTV7S7755C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C2[];
Class_Descriptor cd_S7755C2 = {  "S7755C2", // class name
  bases_S7755C2, 3,
  &(vtc_S7755C2[0]), // expected_vtbl_contents
  &(vtt_S7755C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7755C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7755C2),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7755C2),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C8  : S4228C37 , virtual S4228C27 {
  ::S4228C37 s7755c8f0;
  ~S7755C8(); // tgen
  S7755C8(); // tgen
};
//SIG(-1 S7755C8) C1{ BC2{ m} VBC3{ m} FC2}


S7755C8 ::~S7755C8(){ note_dtor("S7755C8", this);} // tgen
S7755C8 ::S7755C8(){ note_ctor("S7755C8", this);} // tgen

static void Test_S7755C8()
{
  extern Class_Descriptor cd_S7755C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7755C8, buf);
    S7755C8 *dp, &lv = *(dp=new (buf) S7755C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7755C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C8)");
    check_base_class_offset(lv, (S4228C37*), 0, "S7755C8");
    check_base_class_offset(lv, (S4228C27*), 0, "S7755C8");
    check_field_offset(lv, s7755c8f0, ABISELECT(8,4), "S7755C8.s7755c8f0");
    test_class_info(&lv, &cd_S7755C8);
    dp->~S7755C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C8(Test_S7755C8, "S7755C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7755C8C1Ev();
extern void _ZN7S7755C8D1Ev();
Name_Map name_map_S7755C8[] = {
  NSPAIR(_ZN7S7755C8C1Ev),
  NSPAIR(_ZN7S7755C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7755C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7755C8[];
static  VTBL_ENTRY vtc_S7755C8[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
extern VTBL_ENTRY _ZTV7S7755C8[];
static  VTT_ENTRY vtt_S7755C8[] = {
  {&(_ZTV7S7755C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
Class_Descriptor cd_S7755C8 = {  "S7755C8", // class name
  bases_S7755C8, 2,
  &(vtc_S7755C8[0]), // expected_vtbl_contents
  &(vtt_S7755C8[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7755C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7755C8),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7755C8),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C7  : S4228C27 , S7755C3 , S7755C8 {
  virtual  ~S7755C7(); // _ZN7S7755C7D2Ev
  S7755C7(); // tgen
};
//SIG(-1 S7755C7) C1{ BC2{ m} BC3{ VBC4{ m} BC2} BC5{ BC4 VBC2 FC4} vd}


 S7755C7 ::~S7755C7(){ note_dtor("S7755C7", this);}
S7755C7 ::S7755C7(){ note_ctor("S7755C7", this);} // tgen

static void Test_S7755C7()
{
  extern Class_Descriptor cd_S7755C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7755C7, buf);
    S7755C7 *dp, &lv = *(dp=new (buf) S7755C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7755C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C7)");
    /*is_ambiguous_... S7755C7::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), ABISELECT(8,4), "S7755C7");
    check_base_class_offset(lv, (S4228C37*)(S7755C3*), 0, "S7755C7");
    check_base_class_offset(lv, (S4228C27*)(S7755C3*), 0, "S7755C7");
    check_base_class_offset(lv, (S7755C3*), 0, "S7755C7");
    check_base_class_offset(lv, (S4228C37*)(S7755C8*), ABISELECT(8,4), "S7755C7");
    check_base_class_offset(lv, (S4228C27*)(S7755C8*), ABISELECT(17,9), "S7755C7");
    check_base_class_offset(lv, (S7755C8*), ABISELECT(8,4), "S7755C7");
    test_class_info(&lv, &cd_S7755C7);
    dp->~S7755C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C7(Test_S7755C7, "S7755C7", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7755C7C1Ev();
extern void _ZN7S7755C7D2Ev();
Name_Map name_map_S7755C7[] = {
  NSPAIR(_ZN7S7755C7C1Ev),
  NSPAIR(_ZN7S7755C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C3;
extern VTBL_ENTRY _ZTI7S7755C3[];
extern  VTBL_ENTRY _ZTV7S7755C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C3[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
static Base_Class bases_S7755C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7755C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7755C8,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7755C7[];
extern void _ZN7S7755C7D1Ev();
extern void _ZN7S7755C7D0Ev();
static  VTBL_ENTRY vtc_S7755C7[] = {
  ABISELECT(17,9),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C7[0]),
  (VTBL_ENTRY)&_ZN7S7755C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7755C7D0Ev,
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7755C7[0]),
};
extern VTBL_ENTRY _ZTV7S7755C7[];
static  VTBL_ENTRY _tg__ZTV7S7755C3__7S7755C7[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C7[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
static  VTT_ENTRY vtt_S7755C7[] = {
  {&(_ZTV7S7755C7[4]),  4,9},
  {&(_tg__ZTV7S7755C3__7S7755C7[3]),  3,3},
  {&(_tg__ZTV7S7755C8__7S7755C7[3]),  3,3},
  {&(_ZTV7S7755C7[9]),  9,9},
};
extern VTBL_ENTRY _ZTI7S7755C7[];
extern  VTBL_ENTRY _ZTV7S7755C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C7[];
Class_Descriptor cd_S7755C7 = {  "S7755C7", // class name
  bases_S7755C7, 7,
  &(vtc_S7755C7[0]), // expected_vtbl_contents
  &(vtt_S7755C7[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7755C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7755C7),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7755C7),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C9  : S4228C27 , virtual S4228C37 , virtual S7755C8 {
  void *s7755c9f0;
  ~S7755C9(); // tgen
  S7755C9(); // tgen
};
//SIG(-1 S7755C9) C1{ BC2{ m} VBC3{ m} VBC4{ BC3 VBC2 FC3} Fp}


S7755C9 ::~S7755C9(){ note_dtor("S7755C9", this);} // tgen
S7755C9 ::S7755C9(){ note_ctor("S7755C9", this);} // tgen

static void Test_S7755C9()
{
  extern Class_Descriptor cd_S7755C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7755C9, buf);
    S7755C9 *dp, &lv = *(dp=new (buf) S7755C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7755C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C9)");
    /*is_ambiguous_... S7755C9::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), 0, "S7755C9");
    /*is_ambiguous_... S7755C9::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), 0, "S7755C9");
    check_base_class_offset(lv, (S4228C37*)(S7755C8*), ABISELECT(16,8), "S7755C9");
    check_base_class_offset(lv, (S4228C27*)(S7755C8*), ABISELECT(25,13), "S7755C9");
    check_base_class_offset(lv, (S7755C8*), ABISELECT(16,8), "S7755C9");
    check_field_offset(lv, s7755c9f0, ABISELECT(8,4), "S7755C9.s7755c9f0");
    test_class_info(&lv, &cd_S7755C9);
    dp->~S7755C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C9(Test_S7755C9, "S7755C9", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7755C9C1Ev();
extern void _ZN7S7755C9D1Ev();
Name_Map name_map_S7755C9[] = {
  NSPAIR(_ZN7S7755C9C1Ev),
  NSPAIR(_ZN7S7755C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
static Base_Class bases_S7755C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7755C8,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7755C9[];
static  VTBL_ENTRY vtc_S7755C9[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
extern VTBL_ENTRY _ZTV7S7755C9[];
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C9[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
static  VTT_ENTRY vtt_S7755C9[] = {
  {&(_ZTV7S7755C9[5]),  5,8},
  {&(_ZTV7S7755C9[8]),  8,8},
  {&(_tg__ZTV7S7755C8__7S7755C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
Class_Descriptor cd_S7755C9 = {  "S7755C9", // class name
  bases_S7755C9, 5,
  &(vtc_S7755C9[0]), // expected_vtbl_contents
  &(vtt_S7755C9[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7755C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7755C9),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7755C9),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C10  : virtual S7755C9 {
  char s7755c10f0:8;
  ~S7755C10(); // tgen
  S7755C10(); // tgen
};
//SIG(-1 S7755C10) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} Fc:8}


S7755C10 ::~S7755C10(){ note_dtor("S7755C10", this);} // tgen
S7755C10 ::S7755C10(){ note_ctor("S7755C10", this);} // tgen

static void Test_S7755C10()
{
  extern Class_Descriptor cd_S7755C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S7755C10, buf);
    S7755C10 *dp, &lv = *(dp=new (buf) S7755C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S7755C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C10)");
    /*is_ambiguous_... S7755C9::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*), ABISELECT(16,8), "S7755C10");
    /*is_ambiguous_... S7755C9::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*), 0, "S7755C10");
    check_base_class_offset(lv, (S4228C37*)(S7755C8*), ABISELECT(32,16), "S7755C10");
    check_base_class_offset(lv, (S4228C27*)(S7755C8*), 0, "S7755C10");
    check_base_class_offset(lv, (S7755C8*)(S7755C9*), ABISELECT(32,16), "S7755C10");
    check_base_class_offset(lv, (S7755C9*), ABISELECT(16,8), "S7755C10");
    set_bf_and_test(lv, s7755c10f0, ABISELECT(8,4), 0, 8, 1, "S7755C10");
    set_bf_and_test(lv, s7755c10f0, ABISELECT(8,4), 0, 8, hide_sll(1LL<<7), "S7755C10");
    test_class_info(&lv, &cd_S7755C10);
    dp->~S7755C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C10(Test_S7755C10, "S7755C10", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S7755C10C1Ev();
extern void _ZN8S7755C10D1Ev();
Name_Map name_map_S7755C10[] = {
  NSPAIR(_ZN8S7755C10C1Ev),
  NSPAIR(_ZN8S7755C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
static Base_Class bases_S7755C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7755C8,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7755C9,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7755C10[];
static  VTBL_ENTRY vtc_S7755C10[] = {
  0,
  ABISELECT(32,16),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C10[0]),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7755C10[0]),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7755C10[0]),
};
extern VTBL_ENTRY _ZTV8S7755C10[];
static  VTBL_ENTRY _tg__ZTV7S7755C9__8S7755C10[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C9__8S7755C10[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C10[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
static  VTT_ENTRY vtt_S7755C10[] = {
  {&(_ZTV8S7755C10[6]),  6,14},
  {&(_ZTV8S7755C10[11]),  11,14},
  {&(_ZTV8S7755C10[14]),  14,14},
  {&(_tg__ZTV7S7755C9__8S7755C10[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C9__8S7755C10[3]),  3,3},
  {&(_tg__ZTV7S7755C8__8S7755C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7755C10[];
extern  VTBL_ENTRY _ZTV8S7755C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C10[];
Class_Descriptor cd_S7755C10 = {  "S7755C10", // class name
  bases_S7755C10, 6,
  &(vtc_S7755C10[0]), // expected_vtbl_contents
  &(vtt_S7755C10[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S7755C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7755C10),14, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7755C10),6, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C13  : S3423C8_nt , virtual S7755C8 , S7755C9 , S4228C27 {
  char s7755c13f0;
  virtual  ~S7755C13(); // _ZN8S7755C13D2Ev
  S7755C13(); // tgen
};
//SIG(-1 S7755C13) C1{ BC2{ m Fi} VBC3{ BC4{ m} VBC5{ m} FC4} BC6{ BC5 VBC4 VBC3 Fp} BC5 vd Fc}


 S7755C13 ::~S7755C13(){ note_dtor("S7755C13", this);}
S7755C13 ::S7755C13(){ note_ctor("S7755C13", this);} // tgen

static void Test_S7755C13()
{
  extern Class_Descriptor cd_S7755C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7755C13, buf);
    S7755C13 *dp, &lv = *(dp=new (buf) S7755C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7755C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C13)");
    check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(16,8), "S7755C13");
    check_base_class_offset(lv, (S4228C37*)(S7755C8*), ABISELECT(24,16), "S7755C13");
    check_base_class_offset(lv, (S4228C27*)(S7755C8*), ABISELECT(33,21), "S7755C13");
    check_base_class_offset(lv, (S7755C8*), ABISELECT(24,16), "S7755C13");
    check_base_class_offset(lv, (S7755C8*)(S7755C9*), ABISELECT(24,16), "S7755C13");
    /*is_ambiguous_... S7755C9::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*), 0, "S7755C13");
    /*is_ambiguous_... S7755C9::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*), 0, "S7755C13");
    check_base_class_offset(lv, (S7755C9*), 0, "S7755C13");
    /*is_ambiguous_... S7755C13::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), ABISELECT(20,12), "S7755C13");
    check_field_offset(lv, s7755c13f0, ABISELECT(20,12), "S7755C13.s7755c13f0");
    test_class_info(&lv, &cd_S7755C13);
    dp->~S7755C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C13(Test_S7755C13, "S7755C13", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S7755C13C1Ev();
extern void _ZN8S7755C13D2Ev();
Name_Map name_map_S7755C13[] = {
  NSPAIR(_ZN8S7755C13C1Ev),
  NSPAIR(_ZN8S7755C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7755C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(33,21), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7755C8,    ABISELECT(24,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7755C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7755C13[];
extern void _ZN8S7755C13D1Ev();
extern void _ZN8S7755C13D0Ev();
static  VTBL_ENTRY vtc_S7755C13[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C13[0]),
  (VTBL_ENTRY)&_ZN8S7755C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C13D0Ev,
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7755C13[0]),
};
extern VTBL_ENTRY _ZTV8S7755C13[];
static  VTBL_ENTRY _tg__ZTV7S7755C9__8S7755C13[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C9__8S7755C13[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C13[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
static  VTT_ENTRY vtt_S7755C13[] = {
  {&(_ZTV8S7755C13[5]),  5,10},
  {&(_tg__ZTV7S7755C9__8S7755C13[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C9__8S7755C13[3]),  3,3},
  {&(_ZTV8S7755C13[10]),  10,10},
  {&(_tg__ZTV7S7755C8__8S7755C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7755C13[];
extern  VTBL_ENTRY _ZTV8S7755C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C13[];
Class_Descriptor cd_S7755C13 = {  "S7755C13", // class name
  bases_S7755C13, 8,
  &(vtc_S7755C13[0]), // expected_vtbl_contents
  &(vtt_S7755C13[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S7755C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7755C13),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7755C13),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C12  : virtual S7755C13 {
  int s7755c12f0;
  virtual  ~S7755C12(); // _ZN8S7755C12D2Ev
  S7755C12(); // tgen
};
//SIG(-1 S7755C12) C1{ VBC2{ BC3{ m Fi} VBC4{ BC5{ m} VBC6{ m} FC5} BC7{ BC6 VBC5 VBC4 Fp} BC6 vd Fc} vd Fi}


 S7755C12 ::~S7755C12(){ note_dtor("S7755C12", this);}
S7755C12 ::S7755C12(){ note_ctor("S7755C12", this);} // tgen

static void Test_S7755C12()
{
  extern Class_Descriptor cd_S7755C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7755C12, buf);
    S7755C12 *dp, &lv = *(dp=new (buf) S7755C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7755C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C12)");
    check_base_class_offset(lv, (S3423C8_nt*)(S7755C13*), ABISELECT(32,16), "S7755C12");
    check_base_class_offset(lv, (S4228C37*)(S7755C8*), ABISELECT(40,24), "S7755C12");
    check_base_class_offset(lv, (S4228C27*)(S7755C8*), 0, "S7755C12");
    check_base_class_offset(lv, (S7755C8*)(S7755C13*), ABISELECT(40,24), "S7755C12");
    check_base_class_offset(lv, (S7755C8*)(S7755C9*)(S7755C13*), ABISELECT(40,24), "S7755C12");
    /*is_ambiguous_... S7755C9::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*)(S7755C13*), ABISELECT(16,8), "S7755C12");
    /*is_ambiguous_... S7755C9::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*)(S7755C13*), 0, "S7755C12");
    check_base_class_offset(lv, (S7755C9*)(S7755C13*), ABISELECT(16,8), "S7755C12");
    /*is_ambiguous_... S7755C13::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C13*), ABISELECT(36,20), "S7755C12");
    check_base_class_offset(lv, (S7755C13*), ABISELECT(16,8), "S7755C12");
    check_field_offset(lv, s7755c12f0, ABISELECT(8,4), "S7755C12.s7755c12f0");
    test_class_info(&lv, &cd_S7755C12);
    dp->~S7755C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C12(Test_S7755C12, "S7755C12", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S7755C12C1Ev();
extern void _ZN8S7755C12D2Ev();
Name_Map name_map_S7755C12[] = {
  NSPAIR(_ZN8S7755C12C1Ev),
  NSPAIR(_ZN8S7755C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C13;
extern VTBL_ENTRY _ZTI8S7755C13[];
extern  VTBL_ENTRY _ZTV8S7755C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C13[];
static Base_Class bases_S7755C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7755C8,    ABISELECT(40,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7755C9,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(36,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7755C13,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7755C12[];
extern void _ZN8S7755C12D1Ev();
extern void _ZN8S7755C12D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S7755C12D1Ev,_ZTv0_n24_N8S7755C12D1Ev)();
extern void ABISELECT(_ZThn16_N8S7755C12D1Ev,_ZThn8_N8S7755C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7755C12D0Ev,_ZTv0_n24_N8S7755C12D0Ev)();
extern void ABISELECT(_ZThn16_N8S7755C12D0Ev,_ZThn8_N8S7755C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7755C12[] = {
  0,
  0,
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C12[0]),
  (VTBL_ENTRY)&_ZN8S7755C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C12D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7755C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C12D1Ev,_ZTv0_n24_N8S7755C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C12D0Ev,_ZTv0_n24_N8S7755C12D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7755C12[0]),
};
extern VTBL_ENTRY _ZTV8S7755C12[];
extern void _ZN8S7755C13D1Ev();
extern void _ZN8S7755C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7755C13__8S7755C12[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C13[0]),
  (VTBL_ENTRY)&_ZN8S7755C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7755C98S7755C13__8S7755C12[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C98S7755C13__8S7755C12[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C13__8S7755C12[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7755C13[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C12[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
static  VTT_ENTRY vtt_S7755C12[] = {
  {&(_ZTV8S7755C12[6]),  6,19},
  {&(_ZTV8S7755C12[14]),  14,19},
  {&(_ZTV8S7755C12[19]),  19,19},
  {&(_tg__ZTV8S7755C13__8S7755C12[5]),  5,7},
  {&(_tg__ZTV7S7755C98S7755C13__8S7755C12[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C98S7755C13__8S7755C12[3]),  3,3},
  {&(_tg__ZTV7S7755C8__8S7755C13__8S7755C12[3]),  3,3},
  {&(_tg__ZTV7S7755C8__8S7755C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7755C12[];
extern  VTBL_ENTRY _ZTV8S7755C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C12[];
static VTBL_ENTRY alt_thunk_names234[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C12D0Ev,_ZTv0_n24_N8S7755C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7755C12D0Ev,_ZThn8_N8S7755C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C12D1Ev,_ZTv0_n24_N8S7755C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7755C12D1Ev,_ZThn8_N8S7755C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7755C12 = {  "S7755C12", // class name
  bases_S7755C12, 9,
  &(vtc_S7755C12[0]), // expected_vtbl_contents
  &(vtt_S7755C12[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S7755C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7755C12),19, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7755C12),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names234,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C6  : virtual S7755C7 , virtual S7755C9 , S7755C10 , virtual S3423C8_nt , S7755C12 {
  ~S7755C6(); // tgen
  S7755C6(); // tgen
};
//SIG(-1 S7755C6) C1{ VBC2{ BC3{ m} BC4{ VBC5{ m} BC3} BC6{ BC5 VBC3 FC5} vd} VBC7{ BC3 VBC5 VBC6 Fp} BC8{ VBC7 Fc:8} VBC9{ m Fi} BC10{ VBC11{ BC9 VBC6 BC7 BC3 vd Fc} vd Fi}}


S7755C6 ::~S7755C6(){ note_dtor("S7755C6", this);} // tgen
S7755C6 ::S7755C6(){ note_ctor("S7755C6", this);} // tgen

static void Test_S7755C6()
{
  extern Class_Descriptor cd_S7755C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,17)];
    init_test(&cd_S7755C6, buf);
    S7755C6 *dp, &lv = *(dp=new (buf) S7755C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S7755C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C6)");
    /*is_ambiguous_... S7755C7::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C7*), ABISELECT(40,20), "S7755C6");
    check_base_class_offset(lv, (S4228C37*)(S7755C3*)(S7755C7*), 0, "S7755C6");
    /*is_ambiguous_... S7755C6::S7755C9 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*), 0, "S7755C6");
    /*is_ambiguous_... S7755C9::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*)(S7755C13*), 0, "S7755C6");
    check_base_class_offset(lv, (S4228C27*)(S7755C3*)(S7755C7*), ABISELECT(32,16), "S7755C6");
    check_base_class_offset(lv, (S7755C3*)(S7755C7*), ABISELECT(32,16), "S7755C6");
    check_base_class_offset(lv, (S4228C37*)(S7755C8*)(S7755C7*), ABISELECT(40,20), "S7755C6");
    check_base_class_offset(lv, (S4228C27*)(S7755C8*)(S7755C7*), 0, "S7755C6");
    /*is_ambiguous_... S7755C6::S7755C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C8*), 0, "S7755C6");
    check_base_class_offset(lv, (S7755C8*)(S7755C7*), ABISELECT(40,20), "S7755C6");
    check_base_class_offset(lv, (S7755C7*), ABISELECT(32,16), "S7755C6");
    /*is_ambiguous_... S7755C6::S7755C9 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*), ABISELECT(56,28), "S7755C6");
    /*is_ambiguous_... S7755C6::S7755C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C8*), ABISELECT(72,36), "S7755C6");
    /*is_ambiguous_... S7755C6::S7755C9 */ AMB_check_base_class_offset(lv, (S7755C8*)(S7755C9*), ABISELECT(72,36), "S7755C6");
    check_base_class_offset(lv, (S7755C8*)(S7755C13*), ABISELECT(72,36), "S7755C6");
    check_base_class_offset(lv, (S7755C8*)(S7755C9*)(S7755C13*), ABISELECT(72,36), "S7755C6");
    /*is_ambiguous_... S7755C6::S7755C9 */ AMB_check_base_class_offset(lv, (S7755C9*), ABISELECT(56,28), "S7755C6");
    check_base_class_offset(lv, (S7755C9*)(S7755C10*), ABISELECT(56,28), "S7755C6");
    check_base_class_offset(lv, (S7755C10*), 0, "S7755C6");
    /*is_ambiguous_... S7755C6::S3423C8_nt */ AMB_check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(84,44), "S7755C6");
    check_base_class_offset(lv, (S3423C8_nt*)(S7755C13*), ABISELECT(104,56), "S7755C6");
    /*is_ambiguous_... S7755C9::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*)(S7755C13*), ABISELECT(88,48), "S7755C6");
    check_base_class_offset(lv, (S7755C9*)(S7755C13*), ABISELECT(88,48), "S7755C6");
    /*is_ambiguous_... S7755C13::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C13*), ABISELECT(108,60), "S7755C6");
    check_base_class_offset(lv, (S7755C13*)(S7755C12*), ABISELECT(88,48), "S7755C6");
    check_base_class_offset(lv, (S7755C12*), ABISELECT(16,8), "S7755C6");
    test_class_info(&lv, &cd_S7755C6);
    dp->~S7755C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C6(Test_S7755C6, "S7755C6", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN7S7755C6C1Ev();
extern void _ZN7S7755C6D1Ev();
Name_Map name_map_S7755C6[] = {
  NSPAIR(_ZN7S7755C6C1Ev),
  NSPAIR(_ZN7S7755C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C3;
extern VTBL_ENTRY _ZTI7S7755C3[];
extern  VTBL_ENTRY _ZTV7S7755C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C3[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
extern Class_Descriptor cd_S7755C7;
extern VTBL_ENTRY _ZTI7S7755C7[];
extern  VTBL_ENTRY _ZTV7S7755C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C7[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
extern Class_Descriptor cd_S7755C10;
extern VTBL_ENTRY _ZTI8S7755C10[];
extern  VTBL_ENTRY _ZTV8S7755C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C10[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C13;
extern VTBL_ENTRY _ZTI8S7755C13[];
extern  VTBL_ENTRY _ZTV8S7755C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C13[];
extern Class_Descriptor cd_S7755C12;
extern VTBL_ENTRY _ZTI8S7755C12[];
extern  VTBL_ENTRY _ZTV8S7755C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C12[];
static Base_Class bases_S7755C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7755C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7755C8,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7755C7,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7755C8,    ABISELECT(72,36), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7755C9,    ABISELECT(56,28), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7755C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3423C8_nt,    ABISELECT(84,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3423C8_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7755C9,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(108,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7755C13,    ABISELECT(88,48), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S7755C12,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7755C6[];
extern void _ZN7S7755C6D1Ev();
extern void _ZN7S7755C6D0Ev();
extern void ABISELECT(_ZThn16_N7S7755C6D1Ev,_ZThn8_N7S7755C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7755C6D0Ev,_ZThn8_N7S7755C6D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7755C6D1Ev,_ZTv0_n20_N7S7755C6D1Ev)();
extern void ABISELECT(_ZThn32_N7S7755C6D1Ev,_ZThn16_N7S7755C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7755C6D0Ev,_ZTv0_n20_N7S7755C6D0Ev)();
extern void ABISELECT(_ZThn32_N7S7755C6D0Ev,_ZThn16_N7S7755C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7755C6D1Ev,_ZTv0_n24_N7S7755C6D1Ev)();
extern void ABISELECT(_ZThn88_N7S7755C6D1Ev,_ZThn48_N7S7755C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7755C6D0Ev,_ZTv0_n24_N7S7755C6D0Ev)();
extern void ABISELECT(_ZThn88_N7S7755C6D0Ev,_ZThn48_N7S7755C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7755C6[] = {
  ABISELECT(88,48),
  ABISELECT(84,44),
  ABISELECT(32,16),
  0,
  ABISELECT(72,36),
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  (VTBL_ENTRY)&_ZN7S7755C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7755C6D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7755C6D1Ev,_ZThn8_N7S7755C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7755C6D0Ev,_ZThn8_N7S7755C6D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7755C6D1Ev,_ZTv0_n20_N7S7755C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7755C6D0Ev,_ZTv0_n20_N7S7755C6D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7755C6D1Ev,_ZTv0_n24_N7S7755C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7755C6D0Ev,_ZTv0_n24_N7S7755C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S7755C6[];
static  VTBL_ENTRY _tg__ZTV8S7755C10__7S7755C6[] = {
  0,
  ABISELECT(72,36),
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C9__8S7755C10__7S7755C6[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7755C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C10__7S7755C6[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S7755C10[0]),
};
extern void _ZN8S7755C12D1Ev();
extern void _ZN8S7755C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7755C12__7S7755C6[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C12[0]),
  (VTBL_ENTRY)&_ZN8S7755C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C12D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7755C12D1Ev,_ZTv0_n24_N8S7755C12D1Ev)();
extern void ABISELECT(_ZThn72_N8S7755C12D1Ev,_ZThn40_N8S7755C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7755C12D0Ev,_ZTv0_n24_N8S7755C12D0Ev)();
extern void ABISELECT(_ZThn72_N8S7755C12D0Ev,_ZThn40_N8S7755C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7755C13__8S7755C12__7S7755C6[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7755C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C12D1Ev,_ZTv0_n24_N8S7755C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C12D0Ev,_ZTv0_n24_N8S7755C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C12__7S7755C6[] = {
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7755C12[0]),
};
extern void _ZN7S7755C7D1Ev();
extern void _ZN7S7755C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7755C7__7S7755C6[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C7[0]),
  (VTBL_ENTRY)&_ZN7S7755C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7755C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7755C37S7755C7__7S7755C6[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C87S7755C7__7S7755C6[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C7__7S7755C6[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7755C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C9__7S7755C6[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C9__7S7755C6[] = {
  ABISELECT(-72,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__A1__7S7755C6[] = {
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
extern void _ZN8S7755C13D1Ev();
extern void _ZN8S7755C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7755C13__7S7755C6[] = {
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C13[0]),
  (VTBL_ENTRY)&_ZN8S7755C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7755C98S7755C13__A1__7S7755C6[] = {
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C98S7755C13__A1__7S7755C6[] = {
  ABISELECT(-72,-36),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C13__7S7755C6[] = {
  ABISELECT(-72,-36),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7755C13[0]),
};
static  VTT_ENTRY vtt_S7755C6[] = {
  {&(_ZTV7S7755C6[9]),  9,45},
  {&(_tg__ZTV8S7755C10__7S7755C6[6]),  6,6},
  {&(_tg__ZTV7S7755C9__8S7755C10__7S7755C6[5]),  5,5},
  {&(_tg__ZTV7S7755C8__8S7755C10__7S7755C6[3]),  3,3},
  {&(_tg__ZTV8S7755C12__7S7755C6[6]),  6,8},
  {&(_tg__ZTV8S7755C13__8S7755C12__7S7755C6[6]),  6,8},
  {&(_tg__ZTV7S7755C8__8S7755C12__7S7755C6[3]),  3,3},
  {&(_ZTV7S7755C6[24]),  24,45},
  {&(_ZTV7S7755C6[29]),  29,45},
  {&(_ZTV7S7755C6[34]),  34,45},
  {&(_ZTV7S7755C6[37]),  37,45},
  {&(_ZTV7S7755C6[17]),  17,45},
  {&(_ZTV7S7755C6[43]),  43,45},
  {&(_tg__ZTV7S7755C7__7S7755C6[4]),  4,6},
  {&(_tg__ZTV7S7755C37S7755C7__7S7755C6[3]),  3,3},
  {&(_tg__ZTV7S7755C87S7755C7__7S7755C6[3]),  3,3},
  {&(_tg__ZTV7S7755C8__7S7755C7__7S7755C6[3]),  3,3},
  {&(_tg__ZTV7S7755C9__7S7755C6[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C9__7S7755C6[3]),  3,3},
  {&(_tg__ZTV7S7755C8__A1__7S7755C6[3]),  3,3},
  {&(_tg__ZTV8S7755C13__7S7755C6[5]),  5,7},
  {&(_tg__ZTV7S7755C98S7755C13__A1__7S7755C6[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C98S7755C13__A1__7S7755C6[3]),  3,3},
  {&(_tg__ZTV7S7755C8__8S7755C13__7S7755C6[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7755C6[];
extern  VTBL_ENTRY _ZTV7S7755C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C6[];
static VTBL_ENTRY alt_thunk_names235[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C12D0Ev,_ZTv0_n24_N8S7755C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7755C12D0Ev,_ZThn40_N8S7755C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C12D1Ev,_ZTv0_n24_N8S7755C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7755C12D1Ev,_ZThn40_N8S7755C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7755C6D0Ev,_ZTv0_n24_N7S7755C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7755C6D0Ev,_ZThn48_N7S7755C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7755C6D1Ev,_ZTv0_n24_N7S7755C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7755C6D1Ev,_ZThn48_N7S7755C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7755C6D0Ev,_ZTv0_n20_N7S7755C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7755C6D0Ev,_ZThn16_N7S7755C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7755C6D1Ev,_ZTv0_n20_N7S7755C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7755C6D1Ev,_ZThn16_N7S7755C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7755C6 = {  "S7755C6", // class name
  bases_S7755C6, 20,
  &(vtc_S7755C6[0]), // expected_vtbl_contents
  &(vtt_S7755C6[0]), // expected_vtt_contents
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI7S7755C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7755C6),45, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7755C6),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names235,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C15  : S7755C9 {
  __tsi64 s7755c15f0[10];
  virtual  ~S7755C15(); // _ZN8S7755C15D2Ev
  S7755C15(); // tgen
};
//SIG(-1 S7755C15) C1{ BC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} vd FL[10]}


 S7755C15 ::~S7755C15(){ note_dtor("S7755C15", this);}
S7755C15 ::S7755C15(){ note_ctor("S7755C15", this);} // tgen

static void Test_S7755C15()
{
  extern Class_Descriptor cd_S7755C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,25)];
    init_test(&cd_S7755C15, buf);
    S7755C15 *dp, &lv = *(dp=new (buf) S7755C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,96), "sizeof(S7755C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C15)");
    /*is_ambiguous_... S7755C9::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*), 0, "S7755C15");
    /*is_ambiguous_... S7755C9::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*), 0, "S7755C15");
    check_base_class_offset(lv, (S4228C37*)(S7755C8*), ABISELECT(96,88), "S7755C15");
    check_base_class_offset(lv, (S4228C27*)(S7755C8*), ABISELECT(105,93), "S7755C15");
    check_base_class_offset(lv, (S7755C8*)(S7755C9*), ABISELECT(96,88), "S7755C15");
    check_base_class_offset(lv, (S7755C9*), 0, "S7755C15");
    check_field_offset(lv, s7755c15f0, ABISELECT(16,8), "S7755C15.s7755c15f0");
    test_class_info(&lv, &cd_S7755C15);
    dp->~S7755C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C15(Test_S7755C15, "S7755C15", ABISELECT(112,96));

#else // __cplusplus

extern void _ZN8S7755C15C1Ev();
extern void _ZN8S7755C15D2Ev();
Name_Map name_map_S7755C15[] = {
  NSPAIR(_ZN8S7755C15C1Ev),
  NSPAIR(_ZN8S7755C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
static Base_Class bases_S7755C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(96,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(105,93), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7755C8,    ABISELECT(96,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7755C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7755C15[];
extern void _ZN8S7755C15D1Ev();
extern void _ZN8S7755C15D0Ev();
static  VTBL_ENTRY vtc_S7755C15[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C15[0]),
  (VTBL_ENTRY)&_ZN8S7755C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C15D0Ev,
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI8S7755C15[0]),
};
extern VTBL_ENTRY _ZTV8S7755C15[];
static  VTBL_ENTRY _tg__ZTV7S7755C9__8S7755C15[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C9__8S7755C15[] = {
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C15[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
static  VTT_ENTRY vtt_S7755C15[] = {
  {&(_ZTV8S7755C15[5]),  5,10},
  {&(_tg__ZTV7S7755C9__8S7755C15[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C9__8S7755C15[3]),  3,3},
  {&(_ZTV8S7755C15[10]),  10,10},
  {&(_tg__ZTV7S7755C8__8S7755C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7755C15[];
extern  VTBL_ENTRY _ZTV8S7755C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C15[];
Class_Descriptor cd_S7755C15 = {  "S7755C15", // class name
  bases_S7755C15, 6,
  &(vtc_S7755C15[0]), // expected_vtbl_contents
  &(vtt_S7755C15[0]), // expected_vtt_contents
  ABISELECT(112,96), // object size
  NSPAIRA(_ZTI8S7755C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7755C15),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7755C15),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C14  : virtual S7755C15 , virtual S7755C9 {
  __tsi64 s7755c14f0;
  virtual  ~S7755C14(); // _ZN8S7755C14D2Ev
  S7755C14(); // tgen
};
//SIG(-1 S7755C14) C1{ VBC2{ BC3{ BC4{ m} VBC5{ m} VBC6{ BC5 VBC4 FC5} Fp} vd FL[10]} VBC3 vd FL}


 S7755C14 ::~S7755C14(){ note_dtor("S7755C14", this);}
S7755C14 ::S7755C14(){ note_ctor("S7755C14", this);} // tgen

static void Test_S7755C14()
{
  extern Class_Descriptor cd_S7755C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,30)];
    init_test(&cd_S7755C14, buf);
    S7755C14 *dp, &lv = *(dp=new (buf) S7755C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S7755C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C14)");
    /*is_ambiguous_... S7755C9::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*)(S7755C15*), ABISELECT(16,12), "S7755C14");
    /*is_ambiguous_... S7755C9::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*)(S7755C15*), 0, "S7755C14");
    /*is_ambiguous_... S7755C14::S7755C9 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*), 0, "S7755C14");
    check_base_class_offset(lv, (S4228C37*)(S7755C8*), ABISELECT(112,100), "S7755C14");
    check_base_class_offset(lv, (S4228C27*)(S7755C8*), 0, "S7755C14");
    check_base_class_offset(lv, (S7755C8*)(S7755C9*)(S7755C15*), ABISELECT(112,100), "S7755C14");
    /*is_ambiguous_... S7755C14::S7755C9 */ AMB_check_base_class_offset(lv, (S7755C8*)(S7755C9*), ABISELECT(112,100), "S7755C14");
    check_base_class_offset(lv, (S7755C9*)(S7755C15*), ABISELECT(16,12), "S7755C14");
    check_base_class_offset(lv, (S7755C15*), ABISELECT(16,12), "S7755C14");
    /*is_ambiguous_... S7755C14::S7755C9 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*), ABISELECT(128,108), "S7755C14");
    /*is_ambiguous_... S7755C14::S7755C9 */ AMB_check_base_class_offset(lv, (S7755C9*), ABISELECT(128,108), "S7755C14");
    check_field_offset(lv, s7755c14f0, ABISELECT(8,4), "S7755C14.s7755c14f0");
    test_class_info(&lv, &cd_S7755C14);
    dp->~S7755C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C14(Test_S7755C14, "S7755C14", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN8S7755C14C1Ev();
extern void _ZN8S7755C14D2Ev();
Name_Map name_map_S7755C14[] = {
  NSPAIR(_ZN8S7755C14C1Ev),
  NSPAIR(_ZN8S7755C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
extern Class_Descriptor cd_S7755C15;
extern VTBL_ENTRY _ZTI8S7755C15[];
extern  VTBL_ENTRY _ZTV8S7755C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C15[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
static Base_Class bases_S7755C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(112,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7755C8,    ABISELECT(112,100), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7755C9,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7755C15,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    ABISELECT(128,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7755C9,    ABISELECT(128,108), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7755C14[];
extern void _ZN8S7755C14D1Ev();
extern void _ZN8S7755C14D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S7755C14D1Ev,_ZTv0_n24_N8S7755C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S7755C14D1Ev,_ZThn12_N8S7755C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7755C14D0Ev,_ZTv0_n24_N8S7755C14D0Ev)();
extern void ABISELECT(_ZThn16_N8S7755C14D0Ev,_ZThn12_N8S7755C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7755C14[] = {
  ABISELECT(128,108),
  0,
  ABISELECT(112,100),
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C14[0]),
  (VTBL_ENTRY)&_ZN8S7755C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C14D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(96,88),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7755C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C14D1Ev,_ZTv0_n24_N8S7755C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C14D0Ev,_ZTv0_n24_N8S7755C14D0Ev),
  ABISELECT(-112,-100),
  ABISELECT(-112,-100),
  (VTBL_ENTRY)&(_ZTI8S7755C14[0]),
  ABISELECT(-128,-108),
  ABISELECT(-16,-8),
  ABISELECT(-128,-108),
  ABISELECT(-128,-108),
  (VTBL_ENTRY)&(_ZTI8S7755C14[0]),
};
extern VTBL_ENTRY _ZTV8S7755C14[];
extern void _ZN8S7755C15D1Ev();
extern void _ZN8S7755C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7755C15__8S7755C14[] = {
  ABISELECT(-16,-12),
  ABISELECT(96,88),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C15[0]),
  (VTBL_ENTRY)&_ZN8S7755C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7755C98S7755C15__8S7755C14[] = {
  ABISELECT(-16,-12),
  ABISELECT(96,88),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C98S7755C15__8S7755C14[] = {
  ABISELECT(-112,-100),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C15__8S7755C14[] = {
  ABISELECT(-112,-100),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI8S7755C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C14[] = {
  ABISELECT(-112,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C9__A1__8S7755C14[] = {
  ABISELECT(-128,-108),
  ABISELECT(-16,-8),
  ABISELECT(-128,-108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C9__A1__8S7755C14[] = {
  ABISELECT(-112,-100),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTT_ENTRY vtt_S7755C14[] = {
  {&(_ZTV8S7755C14[7]),  7,25},
  {&(_ZTV8S7755C14[15]),  15,25},
  {&(_ZTV8S7755C14[20]),  20,25},
  {&(_ZTV8S7755C14[25]),  25,25},
  {&(_tg__ZTV8S7755C15__8S7755C14[5]),  5,7},
  {&(_tg__ZTV7S7755C98S7755C15__8S7755C14[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C98S7755C15__8S7755C14[3]),  3,3},
  {&(_tg__ZTV7S7755C8__8S7755C15__8S7755C14[3]),  3,3},
  {&(_tg__ZTV7S7755C8__8S7755C14[3]),  3,3},
  {&(_tg__ZTV7S7755C9__A1__8S7755C14[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C9__A1__8S7755C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7755C14[];
extern  VTBL_ENTRY _ZTV8S7755C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C14[];
static VTBL_ENTRY alt_thunk_names236[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C14D0Ev,_ZTv0_n24_N8S7755C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7755C14D0Ev,_ZThn12_N8S7755C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C14D1Ev,_ZTv0_n24_N8S7755C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7755C14D1Ev,_ZThn12_N8S7755C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7755C14 = {  "S7755C14", // class name
  bases_S7755C14, 9,
  &(vtc_S7755C14[0]), // expected_vtbl_contents
  &(vtt_S7755C14[0]), // expected_vtt_contents
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI8S7755C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7755C14),25, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7755C14),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names236,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C1  : S7755C2 , S7755C6 , S7755C14 {
  ::S19763C18_nt s7755c1f0;
  ~S7755C1(); // tgen
  S7755C1(); // tgen
};
//SIG(1 S7755C1) C1{ BC2{ VBC3{ VBC4{ m} BC5{ m}} vd} BC6{ VBC7{ BC5 BC3 BC8{ BC4 VBC5 FC4} vd} VBC9{ BC5 VBC4 VBC8 Fp} BC10{ VBC9 Fc:8} VBC11{ m Fi} BC12{ VBC13{ BC11 VBC8 BC9 BC5 vd Fc} vd Fi}} BC14{ VBC15{ BC9 vd FL[10]} VBC9 vd FL} FC16{}}


S7755C1 ::~S7755C1(){ note_dtor("S7755C1", this);} // tgen
S7755C1 ::S7755C1(){ note_ctor("S7755C1", this);} // tgen

static void Test_S7755C1()
{
  extern Class_Descriptor cd_S7755C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,44)];
    init_test(&cd_S7755C1, buf);
    S7755C1 *dp, &lv = *(dp=new (buf) S7755C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,172), "sizeof(S7755C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C1)");
    /*is_ambiguous_... S7755C1::S7755C3 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C3*), 0, "S7755C1");
    check_base_class_offset(lv, (S4228C37*)(S7755C3*)(S7755C7*), 0, "S7755C1");
    /*is_ambiguous_... S7755C1::S7755C9 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*), 0, "S7755C1");
    /*is_ambiguous_... S7755C9::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*)(S7755C13*), 0, "S7755C1");
    /*is_ambiguous_... S7755C9::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*)(S7755C15*), 0, "S7755C1");
    /*is_ambiguous_... S7755C1::S7755C3 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C3*), 0, "S7755C1");
    check_base_class_offset(lv, (S7755C3*)(S7755C2*), 0, "S7755C1");
    check_base_class_offset(lv, (S7755C2*), 0, "S7755C1");
    /*is_ambiguous_... S7755C7::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C7*), ABISELECT(72,40), "S7755C1");
    check_base_class_offset(lv, (S4228C27*)(S7755C3*)(S7755C7*), ABISELECT(64,36), "S7755C1");
    check_base_class_offset(lv, (S7755C3*)(S7755C7*), ABISELECT(64,36), "S7755C1");
    check_base_class_offset(lv, (S4228C37*)(S7755C8*)(S7755C7*), ABISELECT(72,40), "S7755C1");
    check_base_class_offset(lv, (S4228C27*)(S7755C8*)(S7755C7*), ABISELECT(81,45), "S7755C1");
    /*is_ambiguous_... S7755C1::S7755C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C8*), ABISELECT(81,45), "S7755C1");
    check_base_class_offset(lv, (S7755C8*)(S7755C7*), ABISELECT(72,40), "S7755C1");
    check_base_class_offset(lv, (S7755C7*)(S7755C6*), ABISELECT(64,36), "S7755C1");
    /*is_ambiguous_... S7755C1::S7755C9 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*), ABISELECT(88,48), "S7755C1");
    /*is_ambiguous_... S7755C1::S7755C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C8*), ABISELECT(104,56), "S7755C1");
    /*is_ambiguous_... S7755C1::S7755C9 */ AMB_check_base_class_offset(lv, (S7755C8*)(S7755C9*), ABISELECT(104,56), "S7755C1");
    check_base_class_offset(lv, (S7755C8*)(S7755C13*), ABISELECT(104,56), "S7755C1");
    check_base_class_offset(lv, (S7755C8*)(S7755C9*)(S7755C13*), ABISELECT(104,56), "S7755C1");
    check_base_class_offset(lv, (S7755C8*)(S7755C9*)(S7755C15*), ABISELECT(104,56), "S7755C1");
    /*is_ambiguous_... S7755C6::S7755C9 */ AMB_check_base_class_offset(lv, (S7755C9*)(S7755C6*), ABISELECT(88,48), "S7755C1");
    check_base_class_offset(lv, (S7755C9*)(S7755C10*)(S7755C6*), ABISELECT(88,48), "S7755C1");
    /*is_ambiguous_... S7755C14::S7755C9 */ AMB_check_base_class_offset(lv, (S7755C9*)(S7755C14*), ABISELECT(88,48), "S7755C1");
    check_base_class_offset(lv, (S7755C10*)(S7755C6*), ABISELECT(8,4), "S7755C1");
    /*is_ambiguous_... S7755C6::S3423C8_nt */ AMB_check_base_class_offset(lv, (S3423C8_nt*)(S7755C6*), ABISELECT(116,64), "S7755C1");
    check_base_class_offset(lv, (S3423C8_nt*)(S7755C13*), ABISELECT(136,76), "S7755C1");
    /*is_ambiguous_... S7755C9::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*)(S7755C13*), ABISELECT(120,68), "S7755C1");
    check_base_class_offset(lv, (S7755C9*)(S7755C13*), ABISELECT(120,68), "S7755C1");
    /*is_ambiguous_... S7755C13::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C13*), ABISELECT(140,80), "S7755C1");
    check_base_class_offset(lv, (S7755C13*)(S7755C12*)(S7755C6*), ABISELECT(120,68), "S7755C1");
    check_base_class_offset(lv, (S7755C12*)(S7755C6*), ABISELECT(24,12), "S7755C1");
    check_base_class_offset(lv, (S7755C6*), ABISELECT(8,4), "S7755C1");
    /*is_ambiguous_... S7755C9::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*)(S7755C15*), ABISELECT(144,84), "S7755C1");
    check_base_class_offset(lv, (S7755C9*)(S7755C15*), ABISELECT(144,84), "S7755C1");
    check_base_class_offset(lv, (S7755C15*)(S7755C14*), ABISELECT(144,84), "S7755C1");
    check_base_class_offset(lv, (S7755C14*), ABISELECT(40,20), "S7755C1");
    check_field_offset(lv, s7755c1f0, ABISELECT(56,32), "S7755C1.s7755c1f0");
    test_class_info(&lv, &cd_S7755C1);
    dp->~S7755C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C1(Test_S7755C1, "S7755C1", ABISELECT(240,172));

#else // __cplusplus

extern void _ZN7S7755C1C1Ev();
extern void _ZN7S7755C1D1Ev();
Name_Map name_map_S7755C1[] = {
  NSPAIR(_ZN7S7755C1C1Ev),
  NSPAIR(_ZN7S7755C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C3;
extern VTBL_ENTRY _ZTI7S7755C3[];
extern  VTBL_ENTRY _ZTV7S7755C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C3[];
extern Class_Descriptor cd_S7755C2;
extern VTBL_ENTRY _ZTI7S7755C2[];
extern  VTBL_ENTRY _ZTV7S7755C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C2[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C3;
extern VTBL_ENTRY _ZTI7S7755C3[];
extern  VTBL_ENTRY _ZTV7S7755C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C3[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
extern Class_Descriptor cd_S7755C7;
extern VTBL_ENTRY _ZTI7S7755C7[];
extern  VTBL_ENTRY _ZTV7S7755C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C7[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
extern Class_Descriptor cd_S7755C10;
extern VTBL_ENTRY _ZTI8S7755C10[];
extern  VTBL_ENTRY _ZTV8S7755C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C10[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C13;
extern VTBL_ENTRY _ZTI8S7755C13[];
extern  VTBL_ENTRY _ZTV8S7755C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C13[];
extern Class_Descriptor cd_S7755C12;
extern VTBL_ENTRY _ZTI8S7755C12[];
extern  VTBL_ENTRY _ZTV8S7755C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C12[];
extern Class_Descriptor cd_S7755C6;
extern VTBL_ENTRY _ZTI7S7755C6[];
extern  VTBL_ENTRY _ZTV7S7755C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C6[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
extern Class_Descriptor cd_S7755C15;
extern VTBL_ENTRY _ZTI8S7755C15[];
extern  VTBL_ENTRY _ZTV8S7755C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C15[];
extern Class_Descriptor cd_S7755C14;
extern VTBL_ENTRY _ZTI8S7755C14[];
extern  VTBL_ENTRY _ZTV8S7755C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C14[];
static Base_Class bases_S7755C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7755C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7755C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7755C3,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(81,45), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7755C8,    ABISELECT(72,40), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7755C7,    ABISELECT(64,36), //bcp->offset
    41, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7755C8,    ABISELECT(104,56), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7755C9,    ABISELECT(88,48), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7755C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(116,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S3423C8_nt,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7755C9,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(140,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7755C13,    ABISELECT(120,68), //bcp->offset
    59, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7755C12,    ABISELECT(24,12), //bcp->offset
    24, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7755C6,    ABISELECT(8,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7755C9,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7755C15,    ABISELECT(144,84), //bcp->offset
    67, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7755C14,    ABISELECT(40,20), //bcp->offset
    32, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7755C1[];
extern void _ZN7S7755C1D1Ev();
extern void _ZN7S7755C1D0Ev();
extern void ABISELECT(_ZThn8_N7S7755C1D1Ev,_ZThn4_N7S7755C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S7755C1D0Ev,_ZThn4_N7S7755C1D0Ev)();
extern void ABISELECT(_ZThn24_N7S7755C1D1Ev,_ZThn12_N7S7755C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S7755C1D0Ev,_ZThn12_N7S7755C1D0Ev)();
extern void ABISELECT(_ZThn40_N7S7755C1D1Ev,_ZThn20_N7S7755C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S7755C1D0Ev,_ZThn20_N7S7755C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7755C1D1Ev,_ZTv0_n20_N7S7755C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S7755C1D1Ev,_ZThn36_N7S7755C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7755C1D0Ev,_ZTv0_n20_N7S7755C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S7755C1D0Ev,_ZThn36_N7S7755C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7755C1D1Ev,_ZTv0_n24_N7S7755C1D1Ev)();
extern void ABISELECT(_ZThn120_N7S7755C1D1Ev,_ZThn68_N7S7755C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7755C1D0Ev,_ZTv0_n24_N7S7755C1D0Ev)();
extern void ABISELECT(_ZThn120_N7S7755C1D0Ev,_ZThn68_N7S7755C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7755C1D1Ev,_ZTv0_n24_N7S7755C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S7755C1D1Ev,_ZThn84_N7S7755C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7755C1D0Ev,_ZTv0_n24_N7S7755C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S7755C1D0Ev,_ZThn84_N7S7755C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7755C1[] = {
  ABISELECT(144,84),
  ABISELECT(120,68),
  ABISELECT(116,64),
  ABISELECT(104,56),
  ABISELECT(88,48),
  ABISELECT(81,45),
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  (VTBL_ENTRY)&_ZN7S7755C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7755C1D0Ev,
  ABISELECT(112,64),
  ABISELECT(108,60),
  ABISELECT(56,32),
  ABISELECT(73,41),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7755C1D1Ev,_ZThn4_N7S7755C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7755C1D0Ev,_ZThn4_N7S7755C1D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(57,33),
  ABISELECT(80,44),
  ABISELECT(96,56),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7755C1D1Ev,_ZThn12_N7S7755C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7755C1D0Ev,_ZThn12_N7S7755C1D0Ev),
  ABISELECT(48,28),
  ABISELECT(41,25),
  ABISELECT(64,36),
  ABISELECT(-40,-20),
  ABISELECT(104,64),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7755C1D1Ev,_ZThn20_N7S7755C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7755C1D0Ev,_ZThn20_N7S7755C1D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(17,9),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7755C1D1Ev,_ZTv0_n20_N7S7755C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7755C1D0Ev,_ZTv0_n20_N7S7755C1D0Ev),
  ABISELECT(9,5),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  ABISELECT(-23,-11),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  ABISELECT(-120,-68),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7755C1D1Ev,_ZTv0_n24_N7S7755C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7755C1D0Ev,_ZTv0_n24_N7S7755C1D0Ev),
  ABISELECT(-144,-84),
  ABISELECT(-63,-39),
  ABISELECT(-40,-28),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7755C1D1Ev,_ZTv0_n24_N7S7755C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7755C1D0Ev,_ZTv0_n24_N7S7755C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7755C1[];
extern void _ZN7S7755C2D1Ev();
extern void _ZN7S7755C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7755C2__7S7755C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C2[0]),
  (VTBL_ENTRY)&_ZN7S7755C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7755C2D0Ev,
};
extern void _ZN7S7755C6D1Ev();
extern void _ZN7S7755C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7755C6__7S7755C1[] = {
  ABISELECT(112,64),
  ABISELECT(108,60),
  ABISELECT(56,32),
  ABISELECT(73,41),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  (VTBL_ENTRY)&_ZN7S7755C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7755C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7755C107S7755C6__7S7755C1[] = {
  ABISELECT(73,41),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C9__8S7755C107S7755C6__7S7755C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7755C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C107S7755C6__7S7755C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7755C10[0]),
};
extern void _ZN8S7755C12D1Ev();
extern void _ZN8S7755C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7755C127S7755C6__7S7755C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(57,33),
  ABISELECT(80,44),
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C12[0]),
  (VTBL_ENTRY)&_ZN8S7755C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C12D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7755C12D1Ev,_ZTv0_n24_N8S7755C12D1Ev)();
extern void ABISELECT(_ZThn96_N8S7755C12D1Ev,_ZThn56_N8S7755C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7755C12D0Ev,_ZTv0_n24_N8S7755C12D0Ev)();
extern void ABISELECT(_ZThn96_N8S7755C12D0Ev,_ZThn56_N8S7755C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7755C13__8S7755C127S7755C6__7S7755C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7755C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C12D1Ev,_ZTv0_n24_N8S7755C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C12D0Ev,_ZTv0_n24_N8S7755C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C127S7755C6__7S7755C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7755C12[0]),
};
extern void ABISELECT(_ZTv0_n40_N7S7755C6D1Ev,_ZTv0_n20_N7S7755C6D1Ev)();
extern void ABISELECT(_ZThn56_N7S7755C6D1Ev,_ZThn32_N7S7755C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7755C6D0Ev,_ZTv0_n20_N7S7755C6D0Ev)();
extern void ABISELECT(_ZThn56_N7S7755C6D0Ev,_ZThn32_N7S7755C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7755C7__7S7755C6__7S7755C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(17,9),
  ABISELECT(-64,-36),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7755C6D1Ev,_ZTv0_n20_N7S7755C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7755C6D0Ev,_ZTv0_n20_N7S7755C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7755C87S7755C7__7S7755C6__7S7755C1[] = {
  ABISELECT(9,5),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C9__7S7755C6__7S7755C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__A1__7S7755C6__7S7755C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
};
extern void ABISELECT(_ZThn16_N7S7755C6D1Ev,_ZThn8_N7S7755C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7755C6D0Ev,_ZThn8_N7S7755C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7755C12__7S7755C6__7S7755C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(57,33),
  ABISELECT(80,44),
  ABISELECT(96,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7755C6D1Ev,_ZThn8_N7S7755C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7755C6D0Ev,_ZThn8_N7S7755C6D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7755C6D1Ev,_ZTv0_n24_N7S7755C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7755C6D1Ev,_ZThn64_N7S7755C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7755C6D0Ev,_ZTv0_n24_N7S7755C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S7755C6D0Ev,_ZThn64_N7S7755C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7755C13__7S7755C6__7S7755C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7755C6D1Ev,_ZTv0_n24_N7S7755C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7755C6D0Ev,_ZTv0_n24_N7S7755C6D0Ev),
};
extern void _ZN8S7755C14D1Ev();
extern void _ZN8S7755C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7755C14__7S7755C1[] = {
  ABISELECT(48,28),
  ABISELECT(41,25),
  ABISELECT(64,36),
  ABISELECT(-40,-20),
  ABISELECT(104,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C14[0]),
  (VTBL_ENTRY)&_ZN8S7755C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C14D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7755C14D1Ev,_ZTv0_n24_N8S7755C14D1Ev)();
extern void ABISELECT(_ZThn104_N8S7755C14D1Ev,_ZThn64_N8S7755C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7755C14D0Ev,_ZTv0_n24_N8S7755C14D0Ev)();
extern void ABISELECT(_ZThn104_N8S7755C14D0Ev,_ZThn64_N8S7755C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7755C15__8S7755C14__7S7755C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-63,-39),
  ABISELECT(-40,-28),
  ABISELECT(-144,-84),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S7755C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C14D1Ev,_ZTv0_n24_N8S7755C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C14D0Ev,_ZTv0_n24_N8S7755C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C14__7S7755C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7755C14[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C9__A1__8S7755C14__7S7755C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7755C14[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C3__7S7755C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C3[0]),
};
extern void _ZN7S7755C7D1Ev();
extern void _ZN7S7755C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7755C7__7S7755C1[] = {
  ABISELECT(17,9),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C7[0]),
  (VTBL_ENTRY)&_ZN7S7755C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7755C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7755C37S7755C7__A1__7S7755C1[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C87S7755C7__7S7755C1[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C7__7S7755C1[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7755C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C9__7S7755C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C9__7S7755C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__A1__7S7755C1[] = {
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
extern void _ZN8S7755C13D1Ev();
extern void _ZN8S7755C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7755C13__7S7755C1[] = {
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C13[0]),
  (VTBL_ENTRY)&_ZN8S7755C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7755C98S7755C13__A1__7S7755C1[] = {
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C98S7755C13__A1__7S7755C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C13__7S7755C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7755C13[0]),
};
extern void _ZN8S7755C15D1Ev();
extern void _ZN8S7755C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7755C15__7S7755C1[] = {
  ABISELECT(-63,-39),
  ABISELECT(-40,-28),
  ABISELECT(-144,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C15[0]),
  (VTBL_ENTRY)&_ZN8S7755C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7755C98S7755C15__A2__7S7755C1[] = {
  ABISELECT(-63,-39),
  ABISELECT(-40,-28),
  ABISELECT(-144,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C98S7755C15__A2__7S7755C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C15__7S7755C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI8S7755C15[0]),
};
static  VTT_ENTRY vtt_S7755C1[] = {
  {&(_ZTV7S7755C1[11]),  11,75},
  {&(_tg__ZTV7S7755C2__7S7755C1[4]),  4,6},
  {&(_tg__ZTV7S7755C2__7S7755C1[4]),  4,6},
  {&(_tg__ZTV7S7755C6__7S7755C1[9]),  9,11},
  {&(_tg__ZTV8S7755C107S7755C6__7S7755C1[6]),  6,6},
  {&(_tg__ZTV7S7755C9__8S7755C107S7755C6__7S7755C1[5]),  5,5},
  {&(_tg__ZTV7S7755C8__8S7755C107S7755C6__7S7755C1[3]),  3,3},
  {&(_tg__ZTV8S7755C127S7755C6__7S7755C1[6]),  6,8},
  {&(_tg__ZTV8S7755C13__8S7755C127S7755C6__7S7755C1[6]),  6,8},
  {&(_tg__ZTV7S7755C8__8S7755C127S7755C6__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C7__7S7755C6__7S7755C1[5]),  5,7},
  {&(_tg__ZTV7S7755C87S7755C7__7S7755C6__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C9__7S7755C6__7S7755C1[5]),  5,5},
  {&(_tg__ZTV7S7755C8__A1__7S7755C6__7S7755C1[3]),  3,3},
  {&(_tg__ZTV8S7755C12__7S7755C6__7S7755C1[6]),  6,8},
  {&(_tg__ZTV8S7755C13__7S7755C6__7S7755C1[6]),  6,8},
  {&(_tg__ZTV8S7755C14__7S7755C1[7]),  7,9},
  {&(_tg__ZTV8S7755C15__8S7755C14__7S7755C1[6]),  6,8},
  {&(_tg__ZTV7S7755C8__8S7755C14__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C9__A1__8S7755C14__7S7755C1[5]),  5,5},
  {&(_ZTV7S7755C1[11]),  11,75},
  {&(_ZTV7S7755C1[22]),  22,75},
  {&(_ZTV7S7755C1[46]),  46,75},
  {&(_ZTV7S7755C1[51]),  51,75},
  {&(_ZTV7S7755C1[56]),  56,75},
  {&(_ZTV7S7755C1[59]),  59,75},
  {&(_ZTV7S7755C1[30]),  30,75},
  {&(_ZTV7S7755C1[65]),  65,75},
  {&(_ZTV7S7755C1[39]),  39,75},
  {&(_ZTV7S7755C1[73]),  73,75},
  {&(_tg__ZTV7S7755C3__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C7__7S7755C1[4]),  4,6},
  {&(_tg__ZTV7S7755C37S7755C7__A1__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C87S7755C7__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C8__7S7755C7__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C9__7S7755C1[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C9__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C8__A1__7S7755C1[3]),  3,3},
  {&(_tg__ZTV8S7755C13__7S7755C1[5]),  5,7},
  {&(_tg__ZTV7S7755C98S7755C13__A1__7S7755C1[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C98S7755C13__A1__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C8__8S7755C13__7S7755C1[3]),  3,3},
  {&(_tg__ZTV8S7755C15__7S7755C1[5]),  5,7},
  {&(_tg__ZTV7S7755C98S7755C15__A2__7S7755C1[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C98S7755C15__A2__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C8__8S7755C15__7S7755C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7755C1[];
extern  VTBL_ENTRY _ZTV7S7755C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C1[];
static VTBL_ENTRY alt_thunk_names237[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C14D0Ev,_ZTv0_n24_N8S7755C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7755C14D0Ev,_ZThn64_N8S7755C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C14D1Ev,_ZTv0_n24_N8S7755C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7755C14D1Ev,_ZThn64_N8S7755C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7755C6D0Ev,_ZTv0_n24_N7S7755C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7755C6D0Ev,_ZThn64_N7S7755C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7755C6D1Ev,_ZTv0_n24_N7S7755C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7755C6D1Ev,_ZThn64_N7S7755C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7755C6D0Ev,_ZTv0_n20_N7S7755C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7755C6D0Ev,_ZThn32_N7S7755C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7755C6D1Ev,_ZTv0_n20_N7S7755C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7755C6D1Ev,_ZThn32_N7S7755C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C12D0Ev,_ZTv0_n24_N8S7755C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7755C12D0Ev,_ZThn56_N8S7755C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C12D1Ev,_ZTv0_n24_N8S7755C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7755C12D1Ev,_ZThn56_N8S7755C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7755C1D0Ev,_ZTv0_n24_N7S7755C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7755C1D0Ev,_ZThn84_N7S7755C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7755C1D0Ev,_ZThn68_N7S7755C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7755C1D1Ev,_ZTv0_n24_N7S7755C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7755C1D1Ev,_ZThn84_N7S7755C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7755C1D1Ev,_ZThn68_N7S7755C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7755C1D0Ev,_ZTv0_n20_N7S7755C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7755C1D0Ev,_ZThn36_N7S7755C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7755C1D1Ev,_ZTv0_n20_N7S7755C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7755C1D1Ev,_ZThn36_N7S7755C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7755C1 = {  "S7755C1", // class name
  bases_S7755C1, 28,
  &(vtc_S7755C1[0]), // expected_vtbl_contents
  &(vtt_S7755C1[0]), // expected_vtt_contents
  ABISELECT(240,172), // object size
  NSPAIRA(_ZTI7S7755C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7755C1),75, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7755C1),46, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names237,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C7  : S4228C27 , virtual S4228C37 {
  ::S4228C27 s7208c7f0;
  ~S7208C7(); // tgen
  S7208C7(); // tgen
};
//SIG(-1 S7208C7) C1{ BC2{ m} VBC3{ m} FC2}


S7208C7 ::~S7208C7(){ note_dtor("S7208C7", this);} // tgen
S7208C7 ::S7208C7(){ note_ctor("S7208C7", this);} // tgen

static void Test_S7208C7()
{
  extern Class_Descriptor cd_S7208C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7208C7, buf);
    S7208C7 *dp, &lv = *(dp=new (buf) S7208C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7208C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C7)");
    check_base_class_offset(lv, (S4228C27*), 0, "S7208C7");
    check_base_class_offset(lv, (S4228C37*), 0, "S7208C7");
    check_field_offset(lv, s7208c7f0, ABISELECT(8,4), "S7208C7.s7208c7f0");
    test_class_info(&lv, &cd_S7208C7);
    dp->~S7208C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C7(Test_S7208C7, "S7208C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7208C7C1Ev();
extern void _ZN7S7208C7D1Ev();
Name_Map name_map_S7208C7[] = {
  NSPAIR(_ZN7S7208C7C1Ev),
  NSPAIR(_ZN7S7208C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S7208C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7208C7[];
static  VTBL_ENTRY vtc_S7208C7[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
extern VTBL_ENTRY _ZTV7S7208C7[];
static  VTT_ENTRY vtt_S7208C7[] = {
  {&(_ZTV7S7208C7[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
Class_Descriptor cd_S7208C7 = {  "S7208C7", // class name
  bases_S7208C7, 2,
  &(vtc_S7208C7[0]), // expected_vtbl_contents
  &(vtt_S7208C7[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7208C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7208C7),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7208C7),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C4  : S4228C37 , virtual S4228C27 , virtual S7208C7 {
  void *s7208c4f0;
  ~S7208C4(); // tgen
  S7208C4(); // tgen
};
//SIG(-1 S7208C4) C1{ BC2{ m} VBC3{ m} VBC4{ BC3 VBC2 FC3} Fp}


S7208C4 ::~S7208C4(){ note_dtor("S7208C4", this);} // tgen
S7208C4 ::S7208C4(){ note_ctor("S7208C4", this);} // tgen

static void Test_S7208C4()
{
  extern Class_Descriptor cd_S7208C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7208C4, buf);
    S7208C4 *dp, &lv = *(dp=new (buf) S7208C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7208C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C4)");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), 0, "S7208C4");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), 0, "S7208C4");
    check_base_class_offset(lv, (S4228C27*)(S7208C7*), ABISELECT(16,8), "S7208C4");
    check_base_class_offset(lv, (S4228C37*)(S7208C7*), ABISELECT(25,13), "S7208C4");
    check_base_class_offset(lv, (S7208C7*), ABISELECT(16,8), "S7208C4");
    check_field_offset(lv, s7208c4f0, ABISELECT(8,4), "S7208C4.s7208c4f0");
    test_class_info(&lv, &cd_S7208C4);
    dp->~S7208C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C4(Test_S7208C4, "S7208C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7208C4C1Ev();
extern void _ZN7S7208C4D1Ev();
Name_Map name_map_S7208C4[] = {
  NSPAIR(_ZN7S7208C4C1Ev),
  NSPAIR(_ZN7S7208C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
static Base_Class bases_S7208C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7208C7,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7208C4[];
static  VTBL_ENTRY vtc_S7208C4[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
extern VTBL_ENTRY _ZTV7S7208C4[];
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C4[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
static  VTT_ENTRY vtt_S7208C4[] = {
  {&(_ZTV7S7208C4[5]),  5,8},
  {&(_ZTV7S7208C4[8]),  8,8},
  {&(_tg__ZTV7S7208C7__7S7208C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
Class_Descriptor cd_S7208C4 = {  "S7208C4", // class name
  bases_S7208C4, 5,
  &(vtc_S7208C4[0]), // expected_vtbl_contents
  &(vtt_S7208C4[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7208C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7208C4),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7208C4),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C8  : S3423C8_nt , virtual S7208C7 , S7208C4 , S4228C37 {
  char s7208c8f0;
  virtual  ~S7208C8(); // _ZN7S7208C8D2Ev
  S7208C8(); // tgen
};
//SIG(-1 S7208C8) C1{ BC2{ m Fi} VBC3{ BC4{ m} VBC5{ m} FC4} BC6{ BC5 VBC4 VBC3 Fp} BC5 vd Fc}


 S7208C8 ::~S7208C8(){ note_dtor("S7208C8", this);}
S7208C8 ::S7208C8(){ note_ctor("S7208C8", this);} // tgen

static void Test_S7208C8()
{
  extern Class_Descriptor cd_S7208C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7208C8, buf);
    S7208C8 *dp, &lv = *(dp=new (buf) S7208C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7208C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C8)");
    check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(16,8), "S7208C8");
    check_base_class_offset(lv, (S4228C27*)(S7208C7*), ABISELECT(24,16), "S7208C8");
    check_base_class_offset(lv, (S4228C37*)(S7208C7*), ABISELECT(33,21), "S7208C8");
    check_base_class_offset(lv, (S7208C7*), ABISELECT(24,16), "S7208C8");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*), ABISELECT(24,16), "S7208C8");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*), 0, "S7208C8");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*), 0, "S7208C8");
    check_base_class_offset(lv, (S7208C4*), 0, "S7208C8");
    /*is_ambiguous_... S7208C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), ABISELECT(20,12), "S7208C8");
    check_field_offset(lv, s7208c8f0, ABISELECT(20,12), "S7208C8.s7208c8f0");
    test_class_info(&lv, &cd_S7208C8);
    dp->~S7208C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C8(Test_S7208C8, "S7208C8", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7208C8C1Ev();
extern void _ZN7S7208C8D2Ev();
Name_Map name_map_S7208C8[] = {
  NSPAIR(_ZN7S7208C8C1Ev),
  NSPAIR(_ZN7S7208C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S7208C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(33,21), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7208C7,    ABISELECT(24,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7208C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7208C8[];
extern void _ZN7S7208C8D1Ev();
extern void _ZN7S7208C8D0Ev();
static  VTBL_ENTRY vtc_S7208C8[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
  (VTBL_ENTRY)&_ZN7S7208C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C8D0Ev,
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
};
extern VTBL_ENTRY _ZTV7S7208C8[];
static  VTBL_ENTRY _tg__ZTV7S7208C4__7S7208C8[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C4__7S7208C8[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C8[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
static  VTT_ENTRY vtt_S7208C8[] = {
  {&(_ZTV7S7208C8[5]),  5,10},
  {&(_tg__ZTV7S7208C4__7S7208C8[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C4__7S7208C8[3]),  3,3},
  {&(_ZTV7S7208C8[10]),  10,10},
  {&(_tg__ZTV7S7208C7__7S7208C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7208C8[];
extern  VTBL_ENTRY _ZTV7S7208C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C8[];
Class_Descriptor cd_S7208C8 = {  "S7208C8", // class name
  bases_S7208C8, 8,
  &(vtc_S7208C8[0]), // expected_vtbl_contents
  &(vtt_S7208C8[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7208C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7208C8),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7208C8),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C10  : virtual S7208C8 {
  int s7208c10f0;
  virtual  ~S7208C10(); // _ZN8S7208C10D2Ev
  S7208C10(); // tgen
};
//SIG(-1 S7208C10) C1{ VBC2{ BC3{ m Fi} VBC4{ BC5{ m} VBC6{ m} FC5} BC7{ BC6 VBC5 VBC4 Fp} BC6 vd Fc} vd Fi}


 S7208C10 ::~S7208C10(){ note_dtor("S7208C10", this);}
S7208C10 ::S7208C10(){ note_ctor("S7208C10", this);} // tgen

static void Test_S7208C10()
{
  extern Class_Descriptor cd_S7208C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7208C10, buf);
    S7208C10 *dp, &lv = *(dp=new (buf) S7208C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7208C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C10)");
    check_base_class_offset(lv, (S3423C8_nt*)(S7208C8*), ABISELECT(32,16), "S7208C10");
    check_base_class_offset(lv, (S4228C27*)(S7208C7*), ABISELECT(40,24), "S7208C10");
    check_base_class_offset(lv, (S4228C37*)(S7208C7*), 0, "S7208C10");
    check_base_class_offset(lv, (S7208C7*)(S7208C8*), ABISELECT(40,24), "S7208C10");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C8*), ABISELECT(40,24), "S7208C10");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C8*), ABISELECT(16,8), "S7208C10");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C8*), 0, "S7208C10");
    check_base_class_offset(lv, (S7208C4*)(S7208C8*), ABISELECT(16,8), "S7208C10");
    /*is_ambiguous_... S7208C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C8*), ABISELECT(36,20), "S7208C10");
    check_base_class_offset(lv, (S7208C8*), ABISELECT(16,8), "S7208C10");
    check_field_offset(lv, s7208c10f0, ABISELECT(8,4), "S7208C10.s7208c10f0");
    test_class_info(&lv, &cd_S7208C10);
    dp->~S7208C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C10(Test_S7208C10, "S7208C10", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S7208C10C1Ev();
extern void _ZN8S7208C10D2Ev();
Name_Map name_map_S7208C10[] = {
  NSPAIR(_ZN8S7208C10C1Ev),
  NSPAIR(_ZN8S7208C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C8;
extern VTBL_ENTRY _ZTI7S7208C8[];
extern  VTBL_ENTRY _ZTV7S7208C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C8[];
static Base_Class bases_S7208C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7208C7,    ABISELECT(40,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7208C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(36,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7208C8,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7208C10[];
extern void _ZN8S7208C10D1Ev();
extern void _ZN8S7208C10D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S7208C10D1Ev,_ZThn8_N8S7208C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev)();
extern void ABISELECT(_ZThn16_N8S7208C10D0Ev,_ZThn8_N8S7208C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7208C10[] = {
  0,
  0,
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&_ZN8S7208C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C10D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
};
extern VTBL_ENTRY _ZTV8S7208C10[];
extern void _ZN7S7208C8D1Ev();
extern void _ZN7S7208C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7208C8__8S7208C10[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
  (VTBL_ENTRY)&_ZN7S7208C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C47S7208C8__8S7208C10[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C47S7208C8__8S7208C10[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C8__8S7208C10[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C10[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
static  VTT_ENTRY vtt_S7208C10[] = {
  {&(_ZTV8S7208C10[6]),  6,19},
  {&(_ZTV8S7208C10[14]),  14,19},
  {&(_ZTV8S7208C10[19]),  19,19},
  {&(_tg__ZTV7S7208C8__8S7208C10[5]),  5,7},
  {&(_tg__ZTV7S7208C47S7208C8__8S7208C10[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C47S7208C8__8S7208C10[3]),  3,3},
  {&(_tg__ZTV7S7208C7__7S7208C8__8S7208C10[3]),  3,3},
  {&(_tg__ZTV7S7208C7__8S7208C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7208C10[];
extern  VTBL_ENTRY _ZTV8S7208C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C10[];
static VTBL_ENTRY alt_thunk_names238[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7208C10D0Ev,_ZThn8_N8S7208C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7208C10D1Ev,_ZThn8_N8S7208C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7208C10 = {  "S7208C10", // class name
  bases_S7208C10, 9,
  &(vtc_S7208C10[0]), // expected_vtbl_contents
  &(vtt_S7208C10[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S7208C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7208C10),19, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7208C10),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names238,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C12  : virtual S4228C27 , S4228C37 {
  ~S7208C12(); // tgen
  S7208C12(); // tgen
};
//SIG(-1 S7208C12) C1{ VBC2{ m} BC3{ m}}


S7208C12 ::~S7208C12(){ note_dtor("S7208C12", this);} // tgen
S7208C12 ::S7208C12(){ note_ctor("S7208C12", this);} // tgen

static void Test_S7208C12()
{
  extern Class_Descriptor cd_S7208C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7208C12, buf);
    S7208C12 *dp, &lv = *(dp=new (buf) S7208C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7208C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C12)");
    check_base_class_offset(lv, (S4228C27*), 0, "S7208C12");
    check_base_class_offset(lv, (S4228C37*), 0, "S7208C12");
    test_class_info(&lv, &cd_S7208C12);
    dp->~S7208C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C12(Test_S7208C12, "S7208C12", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7208C12C1Ev();
extern void _ZN8S7208C12D1Ev();
Name_Map name_map_S7208C12[] = {
  NSPAIR(_ZN8S7208C12C1Ev),
  NSPAIR(_ZN8S7208C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S7208C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7208C12[];
static  VTBL_ENTRY vtc_S7208C12[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C12[0]),
};
extern VTBL_ENTRY _ZTV8S7208C12[];
static  VTT_ENTRY vtt_S7208C12[] = {
  {&(_ZTV8S7208C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7208C12[];
extern  VTBL_ENTRY _ZTV8S7208C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C12[];
Class_Descriptor cd_S7208C12 = {  "S7208C12", // class name
  bases_S7208C12, 2,
  &(vtc_S7208C12[0]), // expected_vtbl_contents
  &(vtt_S7208C12[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7208C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7208C12),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7208C12),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C11  : S4228C37 , S7208C12 , S7208C7 {
  virtual  ~S7208C11(); // _ZN8S7208C11D2Ev
  S7208C11(); // tgen
};
//SIG(-1 S7208C11) C1{ BC2{ m} BC3{ VBC4{ m} BC2} BC5{ BC4 VBC2 FC4} vd}


 S7208C11 ::~S7208C11(){ note_dtor("S7208C11", this);}
S7208C11 ::S7208C11(){ note_ctor("S7208C11", this);} // tgen

static void Test_S7208C11()
{
  extern Class_Descriptor cd_S7208C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7208C11, buf);
    S7208C11 *dp, &lv = *(dp=new (buf) S7208C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7208C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C11)");
    /*is_ambiguous_... S7208C11::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), ABISELECT(8,4), "S7208C11");
    check_base_class_offset(lv, (S4228C27*)(S7208C12*), 0, "S7208C11");
    check_base_class_offset(lv, (S4228C37*)(S7208C12*), 0, "S7208C11");
    check_base_class_offset(lv, (S7208C12*), 0, "S7208C11");
    check_base_class_offset(lv, (S4228C27*)(S7208C7*), ABISELECT(8,4), "S7208C11");
    check_base_class_offset(lv, (S4228C37*)(S7208C7*), ABISELECT(17,9), "S7208C11");
    check_base_class_offset(lv, (S7208C7*), ABISELECT(8,4), "S7208C11");
    test_class_info(&lv, &cd_S7208C11);
    dp->~S7208C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C11(Test_S7208C11, "S7208C11", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S7208C11C1Ev();
extern void _ZN8S7208C11D2Ev();
Name_Map name_map_S7208C11[] = {
  NSPAIR(_ZN8S7208C11C1Ev),
  NSPAIR(_ZN8S7208C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C12;
extern VTBL_ENTRY _ZTI8S7208C12[];
extern  VTBL_ENTRY _ZTV8S7208C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C12[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
static Base_Class bases_S7208C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7208C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7208C7,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7208C11[];
extern void _ZN8S7208C11D1Ev();
extern void _ZN8S7208C11D0Ev();
static  VTBL_ENTRY vtc_S7208C11[] = {
  ABISELECT(17,9),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C11[0]),
  (VTBL_ENTRY)&_ZN8S7208C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C11D0Ev,
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7208C11[0]),
};
extern VTBL_ENTRY _ZTV8S7208C11[];
static  VTBL_ENTRY _tg__ZTV8S7208C12__8S7208C11[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C11[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
static  VTT_ENTRY vtt_S7208C11[] = {
  {&(_ZTV8S7208C11[4]),  4,9},
  {&(_tg__ZTV8S7208C12__8S7208C11[3]),  3,3},
  {&(_tg__ZTV7S7208C7__8S7208C11[3]),  3,3},
  {&(_ZTV8S7208C11[9]),  9,9},
};
extern VTBL_ENTRY _ZTI8S7208C11[];
extern  VTBL_ENTRY _ZTV8S7208C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C11[];
Class_Descriptor cd_S7208C11 = {  "S7208C11", // class name
  bases_S7208C11, 7,
  &(vtc_S7208C11[0]), // expected_vtbl_contents
  &(vtt_S7208C11[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S7208C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7208C11),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7208C11),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C3  : S7208C4 , virtual S7208C8 , virtual S7208C10 , S4228C37 , virtual S7208C11 {
  int s7208c3f0[8];
  ~S7208C3(); // tgen
  S7208C3(); // tgen
};
//SIG(-1 S7208C3) C1{ BC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} VBC6{ BC7{ m Fi} VBC5 BC2 BC3 vd Fc} VBC8{ VBC6 vd Fi} BC3 VBC9{ BC3 BC10{ VBC4 BC3} BC5 vd} Fi[8]}


S7208C3 ::~S7208C3(){ note_dtor("S7208C3", this);} // tgen
S7208C3 ::S7208C3(){ note_ctor("S7208C3", this);} // tgen

static void Test_S7208C3()
{
  extern Class_Descriptor cd_S7208C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S7208C3, buf);
    S7208C3 *dp, &lv = *(dp=new (buf) S7208C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S7208C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C3)");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*), 0, "S7208C3");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*), 0, "S7208C3");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C8*), 0, "S7208C3");
    check_base_class_offset(lv, (S4228C27*)(S7208C12*)(S7208C11*), 0, "S7208C3");
    /*is_ambiguous_... S7208C3::S7208C7 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C7*), ABISELECT(48,40), "S7208C3");
    /*is_ambiguous_... S7208C3::S7208C7 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C7*), ABISELECT(57,45), "S7208C3");
    check_base_class_offset(lv, (S4228C37*)(S7208C7*)(S7208C11*), ABISELECT(57,45), "S7208C3");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S7208C7*)(S7208C4*), ABISELECT(48,40), "S7208C3");
    check_base_class_offset(lv, (S7208C7*)(S7208C8*), ABISELECT(48,40), "S7208C3");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C8*), ABISELECT(48,40), "S7208C3");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S7208C4*), 0, "S7208C3");
    check_base_class_offset(lv, (S3423C8_nt*)(S7208C8*), ABISELECT(80,56), "S7208C3");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C8*), ABISELECT(64,48), "S7208C3");
    check_base_class_offset(lv, (S7208C4*)(S7208C8*), ABISELECT(64,48), "S7208C3");
    /*is_ambiguous_... S7208C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C8*), ABISELECT(84,60), "S7208C3");
    check_base_class_offset(lv, (S7208C8*), ABISELECT(64,48), "S7208C3");
    check_base_class_offset(lv, (S7208C8*)(S7208C10*), ABISELECT(64,48), "S7208C3");
    check_base_class_offset(lv, (S7208C10*), ABISELECT(88,64), "S7208C3");
    /*is_ambiguous_... S7208C3::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), ABISELECT(16,8), "S7208C3");
    /*is_ambiguous_... S7208C11::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C11*), ABISELECT(112,76), "S7208C3");
    check_base_class_offset(lv, (S4228C37*)(S7208C12*)(S7208C11*), ABISELECT(104,72), "S7208C3");
    check_base_class_offset(lv, (S7208C12*)(S7208C11*), ABISELECT(104,72), "S7208C3");
    check_base_class_offset(lv, (S4228C27*)(S7208C7*)(S7208C11*), ABISELECT(112,76), "S7208C3");
    check_base_class_offset(lv, (S7208C7*)(S7208C11*), ABISELECT(112,76), "S7208C3");
    check_base_class_offset(lv, (S7208C11*), ABISELECT(104,72), "S7208C3");
    check_field_offset(lv, s7208c3f0, ABISELECT(16,8), "S7208C3.s7208c3f0");
    test_class_info(&lv, &cd_S7208C3);
    dp->~S7208C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C3(Test_S7208C3, "S7208C3", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN7S7208C3C1Ev();
extern void _ZN7S7208C3D1Ev();
Name_Map name_map_S7208C3[] = {
  NSPAIR(_ZN7S7208C3C1Ev),
  NSPAIR(_ZN7S7208C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C8;
extern VTBL_ENTRY _ZTI7S7208C8[];
extern  VTBL_ENTRY _ZTV7S7208C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C8[];
extern Class_Descriptor cd_S7208C10;
extern VTBL_ENTRY _ZTI8S7208C10[];
extern  VTBL_ENTRY _ZTV8S7208C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C10[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C12;
extern VTBL_ENTRY _ZTI8S7208C12[];
extern  VTBL_ENTRY _ZTV8S7208C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C12[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S7208C11;
extern VTBL_ENTRY _ZTI8S7208C11[];
extern  VTBL_ENTRY _ZTV8S7208C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C11[];
static Base_Class bases_S7208C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(48,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(57,45), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7208C7,    ABISELECT(48,40), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7208C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3423C8_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(64,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7208C4,    ABISELECT(64,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(84,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7208C8,    ABISELECT(64,48), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7208C10,    ABISELECT(88,64), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7208C12,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7208C7,    ABISELECT(112,76), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7208C11,    ABISELECT(104,72), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7208C3[];
extern void _ZN7S7208C3D1Ev();
extern void _ZN7S7208C3D0Ev();
extern void ABISELECT(_ZTv0_n48_N7S7208C3D1Ev,_ZTv0_n24_N7S7208C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S7208C3D1Ev,_ZThn48_N7S7208C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C3D0Ev,_ZTv0_n24_N7S7208C3D0Ev)();
extern void ABISELECT(_ZThn64_N7S7208C3D0Ev,_ZThn48_N7S7208C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7208C3D1Ev,_ZTv0_n28_N7S7208C3D1Ev)();
extern void ABISELECT(_ZThn88_N7S7208C3D1Ev,_ZThn64_N7S7208C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7208C3D0Ev,_ZTv0_n28_N7S7208C3D0Ev)();
extern void ABISELECT(_ZThn88_N7S7208C3D0Ev,_ZThn64_N7S7208C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7208C3D1Ev,_ZTv0_n20_N7S7208C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7208C3D1Ev,_ZThn72_N7S7208C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7208C3D0Ev,_ZTv0_n20_N7S7208C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7208C3D0Ev,_ZThn72_N7S7208C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7208C3[] = {
  ABISELECT(104,72),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(57,45),
  ABISELECT(48,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&_ZN7S7208C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C3D0Ev,
  ABISELECT(9,5),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  ABISELECT(-64,-48),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-48),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C3D1Ev,_ZTv0_n24_N7S7208C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C3D0Ev,_ZTv0_n24_N7S7208C3D0Ev),
  ABISELECT(-88,-64),
  ABISELECT(-88,-64),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C3D1Ev,_ZTv0_n28_N7S7208C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C3D0Ev,_ZTv0_n28_N7S7208C3D0Ev),
  ABISELECT(-104,-72),
  ABISELECT(-47,-27),
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C3D1Ev,_ZTv0_n20_N7S7208C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C3D0Ev,_ZTv0_n20_N7S7208C3D0Ev),
  ABISELECT(-55,-31),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
};
extern VTBL_ENTRY _ZTV7S7208C3[];
static  VTBL_ENTRY _tg__ZTV7S7208C4__7S7208C3[] = {
  ABISELECT(57,45),
  ABISELECT(48,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C4__7S7208C3[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C3[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
extern void _ZN7S7208C8D1Ev();
extern void _ZN7S7208C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7208C8__7S7208C3[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
  (VTBL_ENTRY)&_ZN7S7208C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C47S7208C8__A1__7S7208C3[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C47S7208C8__A1__7S7208C3[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C8__7S7208C3[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
};
extern void _ZN8S7208C10D1Ev();
extern void _ZN8S7208C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C10__7S7208C3[] = {
  ABISELECT(-88,-64),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&_ZN8S7208C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C10D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7208C8__8S7208C10__7S7208C3[] = {
  ABISELECT(24,16),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-48),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C10__7S7208C3[] = {
  ABISELECT(9,5),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
};
extern void _ZN8S7208C11D1Ev();
extern void _ZN8S7208C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C11__7S7208C3[] = {
  ABISELECT(-47,-27),
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C11[0]),
  (VTBL_ENTRY)&_ZN8S7208C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7208C128S7208C11__7S7208C3[] = {
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C78S7208C11__A1__7S7208C3[] = {
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C11__7S7208C3[] = {
  ABISELECT(-55,-31),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7208C11[0]),
};
static  VTT_ENTRY vtt_S7208C3[] = {
  {&(_ZTV7S7208C3[8]),  8,40},
  {&(_tg__ZTV7S7208C4__7S7208C3[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C4__7S7208C3[3]),  3,3},
  {&(_ZTV7S7208C3[13]),  13,40},
  {&(_ZTV7S7208C3[19]),  19,40},
  {&(_ZTV7S7208C3[28]),  28,40},
  {&(_ZTV7S7208C3[35]),  35,40},
  {&(_ZTV7S7208C3[40]),  40,40},
  {&(_tg__ZTV7S7208C7__7S7208C3[3]),  3,3},
  {&(_tg__ZTV7S7208C8__7S7208C3[5]),  5,7},
  {&(_tg__ZTV7S7208C47S7208C8__A1__7S7208C3[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C47S7208C8__A1__7S7208C3[3]),  3,3},
  {&(_tg__ZTV7S7208C7__7S7208C8__7S7208C3[3]),  3,3},
  {&(_tg__ZTV8S7208C10__7S7208C3[6]),  6,8},
  {&(_tg__ZTV7S7208C8__8S7208C10__7S7208C3[6]),  6,8},
  {&(_tg__ZTV7S7208C7__8S7208C10__7S7208C3[3]),  3,3},
  {&(_tg__ZTV8S7208C11__7S7208C3[4]),  4,6},
  {&(_tg__ZTV8S7208C128S7208C11__7S7208C3[3]),  3,3},
  {&(_tg__ZTV7S7208C78S7208C11__A1__7S7208C3[3]),  3,3},
  {&(_tg__ZTV7S7208C7__8S7208C11__7S7208C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7208C3[];
extern  VTBL_ENTRY _ZTV7S7208C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C3[];
static VTBL_ENTRY alt_thunk_names239[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C3D0Ev,_ZTv0_n20_N7S7208C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C3D0Ev,_ZThn72_N7S7208C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C3D1Ev,_ZTv0_n20_N7S7208C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C3D1Ev,_ZThn72_N7S7208C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C3D0Ev,_ZTv0_n28_N7S7208C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7208C3D0Ev,_ZThn64_N7S7208C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C3D1Ev,_ZTv0_n28_N7S7208C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7208C3D1Ev,_ZThn64_N7S7208C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C3D0Ev,_ZTv0_n24_N7S7208C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7208C3D0Ev,_ZThn48_N7S7208C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C3D1Ev,_ZTv0_n24_N7S7208C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7208C3D1Ev,_ZThn48_N7S7208C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7208C3 = {  "S7208C3", // class name
  bases_S7208C3, 19,
  &(vtc_S7208C3[0]), // expected_vtbl_contents
  &(vtt_S7208C3[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI7S7208C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7208C3),40, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7208C3),20, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names239,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C15  : S7208C4 {
  __tsi64 s7208c15f0[10];
  virtual  ~S7208C15(); // _ZN8S7208C15D2Ev
  S7208C15(); // tgen
};
//SIG(-1 S7208C15) C1{ BC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} vd FL[10]}


 S7208C15 ::~S7208C15(){ note_dtor("S7208C15", this);}
S7208C15 ::S7208C15(){ note_ctor("S7208C15", this);} // tgen

static void Test_S7208C15()
{
  extern Class_Descriptor cd_S7208C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,25)];
    init_test(&cd_S7208C15, buf);
    S7208C15 *dp, &lv = *(dp=new (buf) S7208C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,96), "sizeof(S7208C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C15)");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*), 0, "S7208C15");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*), 0, "S7208C15");
    check_base_class_offset(lv, (S4228C27*)(S7208C7*), ABISELECT(96,88), "S7208C15");
    check_base_class_offset(lv, (S4228C37*)(S7208C7*), ABISELECT(105,93), "S7208C15");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*), ABISELECT(96,88), "S7208C15");
    check_base_class_offset(lv, (S7208C4*), 0, "S7208C15");
    check_field_offset(lv, s7208c15f0, ABISELECT(16,8), "S7208C15.s7208c15f0");
    test_class_info(&lv, &cd_S7208C15);
    dp->~S7208C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C15(Test_S7208C15, "S7208C15", ABISELECT(112,96));

#else // __cplusplus

extern void _ZN8S7208C15C1Ev();
extern void _ZN8S7208C15D2Ev();
Name_Map name_map_S7208C15[] = {
  NSPAIR(_ZN8S7208C15C1Ev),
  NSPAIR(_ZN8S7208C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
static Base_Class bases_S7208C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(96,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(105,93), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7208C7,    ABISELECT(96,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7208C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7208C15[];
extern void _ZN8S7208C15D1Ev();
extern void _ZN8S7208C15D0Ev();
static  VTBL_ENTRY vtc_S7208C15[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C15[0]),
  (VTBL_ENTRY)&_ZN8S7208C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C15D0Ev,
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI8S7208C15[0]),
};
extern VTBL_ENTRY _ZTV8S7208C15[];
static  VTBL_ENTRY _tg__ZTV7S7208C4__8S7208C15[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C4__8S7208C15[] = {
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C15[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
static  VTT_ENTRY vtt_S7208C15[] = {
  {&(_ZTV8S7208C15[5]),  5,10},
  {&(_tg__ZTV7S7208C4__8S7208C15[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C4__8S7208C15[3]),  3,3},
  {&(_ZTV8S7208C15[10]),  10,10},
  {&(_tg__ZTV7S7208C7__8S7208C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7208C15[];
extern  VTBL_ENTRY _ZTV8S7208C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C15[];
Class_Descriptor cd_S7208C15 = {  "S7208C15", // class name
  bases_S7208C15, 6,
  &(vtc_S7208C15[0]), // expected_vtbl_contents
  &(vtt_S7208C15[0]), // expected_vtt_contents
  ABISELECT(112,96), // object size
  NSPAIRA(_ZTI8S7208C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7208C15),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7208C15),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C13  : virtual S4228C23 , virtual S7208C10 , virtual S7208C12 , virtual S7208C15 {
  virtual  ~S7208C13(); // _ZN8S7208C13D2Ev
  S7208C13(); // tgen
};
//SIG(-1 S7208C13) C1{ VBC2{ m} VBC3{ VBC4{ BC5{ m Fi} VBC6{ BC7{ m} VBC8{ m} FC7} BC9{ BC8 VBC7 VBC6 Fp} BC8 vd Fc} vd Fi} VBC10{ VBC7 BC8} VBC11{ BC9 vd FL[10]} vd}


 S7208C13 ::~S7208C13(){ note_dtor("S7208C13", this);}
S7208C13 ::S7208C13(){ note_ctor("S7208C13", this);} // tgen

static void Test_S7208C13()
{
  extern Class_Descriptor cd_S7208C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,32)];
    init_test(&cd_S7208C13, buf);
    S7208C13 *dp, &lv = *(dp=new (buf) S7208C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S7208C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C13)");
    check_base_class_offset(lv, (S4228C23*), 0, "S7208C13");
    check_base_class_offset(lv, (S3423C8_nt*)(S7208C8*), ABISELECT(40,20), "S7208C13");
    check_base_class_offset(lv, (S4228C27*)(S7208C7*), ABISELECT(48,28), "S7208C13");
    check_base_class_offset(lv, (S4228C37*)(S7208C7*), ABISELECT(57,33), "S7208C13");
    check_base_class_offset(lv, (S7208C7*)(S7208C8*), ABISELECT(48,28), "S7208C13");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C8*), ABISELECT(48,28), "S7208C13");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C15*), ABISELECT(48,28), "S7208C13");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C8*), ABISELECT(24,12), "S7208C13");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C8*), 0, "S7208C13");
    check_base_class_offset(lv, (S4228C27*)(S7208C12*), 0, "S7208C13");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C15*), 0, "S7208C13");
    check_base_class_offset(lv, (S7208C4*)(S7208C8*), ABISELECT(24,12), "S7208C13");
    /*is_ambiguous_... S7208C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C8*), ABISELECT(44,24), "S7208C13");
    check_base_class_offset(lv, (S7208C8*)(S7208C10*), ABISELECT(24,12), "S7208C13");
    check_base_class_offset(lv, (S7208C10*), ABISELECT(8,4), "S7208C13");
    check_base_class_offset(lv, (S4228C37*)(S7208C12*), 0, "S7208C13");
    check_base_class_offset(lv, (S7208C12*), 0, "S7208C13");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C15*), ABISELECT(64,36), "S7208C13");
    check_base_class_offset(lv, (S7208C4*)(S7208C15*), ABISELECT(64,36), "S7208C13");
    check_base_class_offset(lv, (S7208C15*), ABISELECT(64,36), "S7208C13");
    test_class_info(&lv, &cd_S7208C13);
    dp->~S7208C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C13(Test_S7208C13, "S7208C13", ABISELECT(160,124));

#else // __cplusplus

extern void _ZN8S7208C13C1Ev();
extern void _ZN8S7208C13D2Ev();
Name_Map name_map_S7208C13[] = {
  NSPAIR(_ZN8S7208C13C1Ev),
  NSPAIR(_ZN8S7208C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C8;
extern VTBL_ENTRY _ZTI7S7208C8[];
extern  VTBL_ENTRY _ZTV7S7208C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C8[];
extern Class_Descriptor cd_S7208C10;
extern VTBL_ENTRY _ZTI8S7208C10[];
extern  VTBL_ENTRY _ZTV8S7208C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C10[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C12;
extern VTBL_ENTRY _ZTI8S7208C12[];
extern  VTBL_ENTRY _ZTV8S7208C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C12[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S7208C15;
extern VTBL_ENTRY _ZTI8S7208C15[];
extern  VTBL_ENTRY _ZTV8S7208C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C15[];
static Base_Class bases_S7208C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3423C8_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7208C7,    ABISELECT(48,28), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7208C4,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(44,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7208C8,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7208C10,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7208C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7208C4,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7208C15,    ABISELECT(64,36), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7208C13[];
extern void _ZN8S7208C13D1Ev();
extern void _ZN8S7208C13D0Ev();
extern void ABISELECT(_ZTv0_n56_N8S7208C13D1Ev,_ZTv0_n28_N8S7208C13D1Ev)();
extern void ABISELECT(_ZThn8_N8S7208C13D1Ev,_ZThn4_N8S7208C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7208C13D0Ev,_ZTv0_n28_N8S7208C13D0Ev)();
extern void ABISELECT(_ZThn8_N8S7208C13D0Ev,_ZThn4_N8S7208C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev)();
extern void ABISELECT(_ZThn24_N8S7208C13D1Ev,_ZThn12_N8S7208C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev)();
extern void ABISELECT(_ZThn24_N8S7208C13D0Ev,_ZThn12_N8S7208C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S7208C13D1Ev,_ZThn36_N8S7208C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S7208C13D0Ev,_ZThn36_N8S7208C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7208C13[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(57,33),
  ABISELECT(48,28),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&_ZN8S7208C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C13D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7208C13D1Ev,_ZTv0_n28_N8S7208C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7208C13D0Ev,_ZTv0_n28_N8S7208C13D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  ABISELECT(-64,-36),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S7208C13[];
extern void _ZN8S7208C10D1Ev();
extern void _ZN8S7208C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C10__8S7208C13[] = {
  ABISELECT(-8,-4),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&_ZN8S7208C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C10D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S7208C10D1Ev,_ZThn8_N8S7208C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev)();
extern void ABISELECT(_ZThn16_N8S7208C10D0Ev,_ZThn8_N8S7208C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7208C8__8S7208C10__8S7208C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C10__8S7208C13[] = {
  ABISELECT(9,5),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
};
extern void _ZN7S7208C8D1Ev();
extern void _ZN7S7208C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7208C8__8S7208C13[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
  (VTBL_ENTRY)&_ZN7S7208C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C47S7208C8__8S7208C13[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C47S7208C8__8S7208C13[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C8__8S7208C13[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C13[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7208C12__8S7208C13[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C12[0]),
};
extern void _ZN8S7208C15D1Ev();
extern void _ZN8S7208C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C15__8S7208C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C15[0]),
  (VTBL_ENTRY)&_ZN8S7208C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C48S7208C15__A1__8S7208C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C48S7208C15__A1__8S7208C13[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C15__8S7208C13[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7208C15[0]),
};
static  VTT_ENTRY vtt_S7208C13[] = {
  {&(_ZTV8S7208C13[10]),  10,40},
  {&(_ZTV8S7208C13[19]),  19,40},
  {&(_ZTV8S7208C13[27]),  27,40},
  {&(_ZTV8S7208C13[32]),  32,40},
  {&(_ZTV8S7208C13[10]),  10,40},
  {&(_ZTV8S7208C13[38]),  38,40},
  {&(_tg__ZTV8S7208C10__8S7208C13[6]),  6,8},
  {&(_tg__ZTV7S7208C8__8S7208C10__8S7208C13[6]),  6,8},
  {&(_tg__ZTV7S7208C7__8S7208C10__8S7208C13[3]),  3,3},
  {&(_tg__ZTV7S7208C8__8S7208C13[5]),  5,7},
  {&(_tg__ZTV7S7208C47S7208C8__8S7208C13[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C47S7208C8__8S7208C13[3]),  3,3},
  {&(_tg__ZTV7S7208C7__7S7208C8__8S7208C13[3]),  3,3},
  {&(_tg__ZTV7S7208C7__8S7208C13[3]),  3,3},
  {&(_tg__ZTV8S7208C12__8S7208C13[3]),  3,3},
  {&(_tg__ZTV8S7208C15__8S7208C13[5]),  5,7},
  {&(_tg__ZTV7S7208C48S7208C15__A1__8S7208C13[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C48S7208C15__A1__8S7208C13[3]),  3,3},
  {&(_tg__ZTV7S7208C7__8S7208C15__8S7208C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7208C13[];
extern  VTBL_ENTRY _ZTV8S7208C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C13[];
static VTBL_ENTRY alt_thunk_names240[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7208C10D0Ev,_ZThn8_N8S7208C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7208C10D1Ev,_ZThn8_N8S7208C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7208C13D0Ev,_ZThn36_N8S7208C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7208C13D0Ev,_ZThn12_N8S7208C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7208C13D1Ev,_ZThn36_N8S7208C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7208C13D1Ev,_ZThn12_N8S7208C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7208C13D0Ev,_ZTv0_n28_N8S7208C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7208C13D0Ev,_ZThn4_N8S7208C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7208C13D1Ev,_ZTv0_n28_N8S7208C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7208C13D1Ev,_ZThn4_N8S7208C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7208C13 = {  "S7208C13", // class name
  bases_S7208C13, 16,
  &(vtc_S7208C13[0]), // expected_vtbl_contents
  &(vtt_S7208C13[0]), // expected_vtt_contents
  ABISELECT(160,124), // object size
  NSPAIRA(_ZTI8S7208C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7208C13),40, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7208C13),19, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names240,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C2  : virtual S7208C3 , virtual S7208C13 {
  virtual  ~S7208C2(); // _ZN7S7208C2D2Ev
  S7208C2(); // tgen
};
//SIG(-1 S7208C2) C1{ VBC2{ BC3{ BC4{ m} VBC5{ m} VBC6{ BC5 VBC4 FC5} Fp} VBC7{ BC8{ m Fi} VBC6 BC3 BC4 vd Fc} VBC9{ VBC7 vd Fi} BC4 VBC10{ BC4 BC11{ VBC5 BC4} BC6 vd} Fi[8]} VBC12{ VBC13{ m} VBC9 VBC11 VBC14{ BC3 vd FL[10]} vd} vd}


 S7208C2 ::~S7208C2(){ note_dtor("S7208C2", this);}
S7208C2 ::S7208C2(){ note_ctor("S7208C2", this);} // tgen

static void Test_S7208C2()
{
  extern Class_Descriptor cd_S7208C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,45)];
    init_test(&cd_S7208C2, buf);
    S7208C2 *dp, &lv = *(dp=new (buf) S7208C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,176), "sizeof(S7208C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C2)");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C3*), ABISELECT(8,4), "S7208C2");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C3*), 0, "S7208C2");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C8*), 0, "S7208C2");
    check_base_class_offset(lv, (S4228C27*)(S7208C12*)(S7208C11*), 0, "S7208C2");
    /*is_ambiguous_... S7208C2::S7208C12 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C12*), 0, "S7208C2");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C15*), 0, "S7208C2");
    /*is_ambiguous_... S7208C2::S7208C7 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C7*), ABISELECT(56,44), "S7208C2");
    /*is_ambiguous_... S7208C2::S7208C7 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C7*), ABISELECT(65,49), "S7208C2");
    check_base_class_offset(lv, (S4228C37*)(S7208C7*)(S7208C11*), ABISELECT(65,49), "S7208C2");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C3*), ABISELECT(56,44), "S7208C2");
    check_base_class_offset(lv, (S7208C7*)(S7208C8*), ABISELECT(56,44), "S7208C2");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C8*), ABISELECT(56,44), "S7208C2");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C15*), ABISELECT(56,44), "S7208C2");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S7208C4*)(S7208C3*), ABISELECT(8,4), "S7208C2");
    check_base_class_offset(lv, (S3423C8_nt*)(S7208C8*), ABISELECT(88,60), "S7208C2");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C8*), ABISELECT(72,52), "S7208C2");
    check_base_class_offset(lv, (S7208C4*)(S7208C8*), ABISELECT(72,52), "S7208C2");
    /*is_ambiguous_... S7208C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C8*), ABISELECT(92,64), "S7208C2");
    check_base_class_offset(lv, (S7208C8*)(S7208C3*), ABISELECT(72,52), "S7208C2");
    check_base_class_offset(lv, (S7208C8*)(S7208C10*), ABISELECT(72,52), "S7208C2");
    check_base_class_offset(lv, (S7208C10*)(S7208C3*), ABISELECT(96,68), "S7208C2");
    check_base_class_offset(lv, (S7208C10*)(S7208C13*), ABISELECT(96,68), "S7208C2");
    /*is_ambiguous_... S7208C3::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C3*), ABISELECT(24,12), "S7208C2");
    /*is_ambiguous_... S7208C11::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C11*), ABISELECT(120,80), "S7208C2");
    check_base_class_offset(lv, (S4228C37*)(S7208C12*)(S7208C11*), ABISELECT(112,76), "S7208C2");
    check_base_class_offset(lv, (S7208C12*)(S7208C11*), ABISELECT(112,76), "S7208C2");
    check_base_class_offset(lv, (S4228C27*)(S7208C7*)(S7208C11*), ABISELECT(120,80), "S7208C2");
    check_base_class_offset(lv, (S7208C7*)(S7208C11*), ABISELECT(120,80), "S7208C2");
    check_base_class_offset(lv, (S7208C11*)(S7208C3*), ABISELECT(112,76), "S7208C2");
    check_base_class_offset(lv, (S7208C3*), ABISELECT(8,4), "S7208C2");
    check_base_class_offset(lv, (S4228C23*)(S7208C13*), 0, "S7208C2");
    /*is_ambiguous_... S7208C2::S7208C12 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C12*), 0, "S7208C2");
    check_base_class_offset(lv, (S7208C12*)(S7208C13*), 0, "S7208C2");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C15*), ABISELECT(136,88), "S7208C2");
    check_base_class_offset(lv, (S7208C4*)(S7208C15*), ABISELECT(136,88), "S7208C2");
    check_base_class_offset(lv, (S7208C15*)(S7208C13*), ABISELECT(136,88), "S7208C2");
    check_base_class_offset(lv, (S7208C13*), 0, "S7208C2");
    test_class_info(&lv, &cd_S7208C2);
    dp->~S7208C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C2(Test_S7208C2, "S7208C2", ABISELECT(232,176));

#else // __cplusplus

extern void _ZN7S7208C2C1Ev();
extern void _ZN7S7208C2D2Ev();
Name_Map name_map_S7208C2[] = {
  NSPAIR(_ZN7S7208C2C1Ev),
  NSPAIR(_ZN7S7208C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C8;
extern VTBL_ENTRY _ZTI7S7208C8[];
extern  VTBL_ENTRY _ZTV7S7208C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C8[];
extern Class_Descriptor cd_S7208C10;
extern VTBL_ENTRY _ZTI8S7208C10[];
extern  VTBL_ENTRY _ZTV8S7208C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C10[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C12;
extern VTBL_ENTRY _ZTI8S7208C12[];
extern  VTBL_ENTRY _ZTV8S7208C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C12[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S7208C11;
extern VTBL_ENTRY _ZTI8S7208C11[];
extern  VTBL_ENTRY _ZTV8S7208C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C11[];
extern Class_Descriptor cd_S7208C3;
extern VTBL_ENTRY _ZTI7S7208C3[];
extern  VTBL_ENTRY _ZTV7S7208C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C3[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C12;
extern VTBL_ENTRY _ZTI8S7208C12[];
extern  VTBL_ENTRY _ZTV8S7208C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C12[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S7208C15;
extern VTBL_ENTRY _ZTI8S7208C15[];
extern  VTBL_ENTRY _ZTV8S7208C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C15[];
extern Class_Descriptor cd_S7208C13;
extern VTBL_ENTRY _ZTI8S7208C13[];
extern  VTBL_ENTRY _ZTV8S7208C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C13[];
static Base_Class bases_S7208C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(65,49), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7208C7,    ABISELECT(56,44), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7208C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(88,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7208C4,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(92,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7208C8,    ABISELECT(72,52), //bcp->offset
    30, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7208C10,    ABISELECT(96,68), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7208C12,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7208C7,    ABISELECT(120,80), //bcp->offset
    54, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7208C11,    ABISELECT(112,76), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S7208C3,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7208C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(136,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7208C4,    ABISELECT(136,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7208C15,    ABISELECT(136,88), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7208C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7208C2[];
extern void _ZN7S7208C2D1Ev();
extern void _ZN7S7208C2D0Ev();
extern void ABISELECT(_ZTv0_n72_N7S7208C2D1Ev,_ZTv0_n36_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S7208C2D1Ev,_ZThn4_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7208C2D0Ev,_ZTv0_n36_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn8_N7S7208C2D0Ev,_ZThn4_N7S7208C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn72_N7S7208C2D1Ev,_ZThn52_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn72_N7S7208C2D0Ev,_ZThn52_N7S7208C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7208C2D1Ev,_ZTv0_n28_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S7208C2D1Ev,_ZThn68_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7208C2D0Ev,_ZTv0_n28_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S7208C2D0Ev,_ZThn68_N7S7208C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7208C2D1Ev,_ZTv0_n20_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7208C2D1Ev,_ZThn76_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7208C2D0Ev,_ZTv0_n20_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S7208C2D0Ev,_ZThn76_N7S7208C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn136_N7S7208C2D1Ev,_ZThn88_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn136_N7S7208C2D0Ev,_ZThn88_N7S7208C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7208C2[] = {
  0,
  ABISELECT(112,76),
  ABISELECT(8,4),
  0,
  ABISELECT(136,88),
  0,
  ABISELECT(65,49),
  ABISELECT(56,44),
  ABISELECT(72,52),
  ABISELECT(96,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&_ZN7S7208C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C2D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(104,72),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(57,45),
  ABISELECT(48,40),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7208C2D1Ev,_ZTv0_n36_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7208C2D0Ev,_ZTv0_n36_N7S7208C2D0Ev),
  ABISELECT(9,5),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  ABISELECT(-72,-52),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-52),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(-96,-68),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C2D1Ev,_ZTv0_n28_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C2D0Ev,_ZTv0_n28_N7S7208C2D0Ev),
  ABISELECT(-112,-76),
  ABISELECT(-47,-27),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C2D1Ev,_ZTv0_n20_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C2D0Ev,_ZTv0_n20_N7S7208C2D0Ev),
  ABISELECT(-55,-31),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  ABISELECT(-136,-88),
  ABISELECT(-71,-39),
  ABISELECT(-80,-44),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7208C2[];
extern void _ZN7S7208C3D1Ev();
extern void _ZN7S7208C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7208C3__7S7208C2[] = {
  ABISELECT(104,72),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(57,45),
  ABISELECT(48,40),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&_ZN7S7208C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C47S7208C3__7S7208C2[] = {
  ABISELECT(57,45),
  ABISELECT(48,40),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C47S7208C3__7S7208C2[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C3__7S7208C2[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
};
extern void ABISELECT(_ZTv0_n48_N7S7208C3D1Ev,_ZTv0_n24_N7S7208C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S7208C3D1Ev,_ZThn48_N7S7208C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C3D0Ev,_ZTv0_n24_N7S7208C3D0Ev)();
extern void ABISELECT(_ZThn64_N7S7208C3D0Ev,_ZThn48_N7S7208C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7208C8__7S7208C3__7S7208C2[] = {
  ABISELECT(-64,-48),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-52),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C3D1Ev,_ZTv0_n24_N7S7208C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C3D0Ev,_ZTv0_n24_N7S7208C3D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N7S7208C3D1Ev,_ZTv0_n28_N7S7208C3D1Ev)();
extern void ABISELECT(_ZThn88_N7S7208C3D1Ev,_ZThn64_N7S7208C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7208C3D0Ev,_ZTv0_n28_N7S7208C3D0Ev)();
extern void ABISELECT(_ZThn88_N7S7208C3D0Ev,_ZThn64_N7S7208C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C10__7S7208C3__7S7208C2[] = {
  ABISELECT(-88,-64),
  ABISELECT(-96,-68),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C3D1Ev,_ZTv0_n28_N7S7208C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C3D0Ev,_ZTv0_n28_N7S7208C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7208C3D1Ev,_ZTv0_n20_N7S7208C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7208C3D1Ev,_ZThn72_N7S7208C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7208C3D0Ev,_ZTv0_n20_N7S7208C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7208C3D0Ev,_ZThn72_N7S7208C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C11__7S7208C3__7S7208C2[] = {
  ABISELECT(-104,-72),
  ABISELECT(-47,-27),
  ABISELECT(-112,-76),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C3D1Ev,_ZTv0_n20_N7S7208C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C3D0Ev,_ZTv0_n20_N7S7208C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C78S7208C11__A1__7S7208C3__7S7208C2[] = {
  ABISELECT(-55,-31),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C2[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
extern void _ZN7S7208C8D1Ev();
extern void _ZN7S7208C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7208C8__7S7208C2[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
  (VTBL_ENTRY)&_ZN7S7208C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C47S7208C8__A1__7S7208C2[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C47S7208C8__A1__7S7208C2[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C8__7S7208C2[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
};
extern void _ZN8S7208C10D1Ev();
extern void _ZN8S7208C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C10__7S7208C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&_ZN8S7208C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C10D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7208C8__8S7208C10__7S7208C2[] = {
  ABISELECT(24,16),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-52),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C10__7S7208C2[] = {
  ABISELECT(9,5),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
};
extern void _ZN8S7208C11D1Ev();
extern void _ZN8S7208C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C11__7S7208C2[] = {
  ABISELECT(-47,-27),
  ABISELECT(-112,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C11[0]),
  (VTBL_ENTRY)&_ZN8S7208C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7208C128S7208C11__7S7208C2[] = {
  ABISELECT(-112,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C78S7208C11__A1__7S7208C2[] = {
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C11__7S7208C2[] = {
  ABISELECT(-55,-31),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7208C11[0]),
};
extern void _ZN8S7208C13D1Ev();
extern void _ZN8S7208C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C13__7S7208C2[] = {
  ABISELECT(136,88),
  0,
  ABISELECT(65,49),
  ABISELECT(56,44),
  ABISELECT(72,52),
  ABISELECT(96,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&_ZN8S7208C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C13D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S7208C13D1Ev,_ZTv0_n28_N8S7208C13D1Ev)();
extern void ABISELECT(_ZThn96_N8S7208C13D1Ev,_ZThn68_N8S7208C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7208C13D0Ev,_ZTv0_n28_N8S7208C13D0Ev)();
extern void ABISELECT(_ZThn96_N8S7208C13D0Ev,_ZThn68_N8S7208C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C10__8S7208C13__7S7208C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(-96,-68),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7208C13D1Ev,_ZTv0_n28_N8S7208C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7208C13D0Ev,_ZTv0_n28_N8S7208C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev)();
extern void ABISELECT(_ZThn72_N8S7208C13D1Ev,_ZThn52_N8S7208C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev)();
extern void ABISELECT(_ZThn72_N8S7208C13D0Ev,_ZThn52_N8S7208C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7208C8__8S7208C13__7S7208C2[] = {
  ABISELECT(-72,-52),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-52),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C13__7S7208C2[] = {
  ABISELECT(9,5),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
};
extern void ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev)();
extern void ABISELECT(_ZThn136_N8S7208C13D1Ev,_ZThn88_N8S7208C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev)();
extern void ABISELECT(_ZThn136_N8S7208C13D0Ev,_ZThn88_N8S7208C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C15__8S7208C13__7S7208C2[] = {
  ABISELECT(-136,-88),
  ABISELECT(-71,-39),
  ABISELECT(-80,-44),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7208C12__A1__7S7208C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C12[0]),
};
extern void _ZN8S7208C15D1Ev();
extern void _ZN8S7208C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C15__7S7208C2[] = {
  ABISELECT(-71,-39),
  ABISELECT(-80,-44),
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C15[0]),
  (VTBL_ENTRY)&_ZN8S7208C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C48S7208C15__A2__7S7208C2[] = {
  ABISELECT(-71,-39),
  ABISELECT(-80,-44),
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C48S7208C15__A2__7S7208C2[] = {
  ABISELECT(9,5),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C15__7S7208C2[] = {
  ABISELECT(9,5),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7208C15[0]),
};
static  VTT_ENTRY vtt_S7208C2[] = {
  {&(_ZTV7S7208C2[14]),  14,65},
  {&(_ZTV7S7208C2[25]),  25,65},
  {&(_ZTV7S7208C2[30]),  30,65},
  {&(_ZTV7S7208C2[36]),  36,65},
  {&(_ZTV7S7208C2[45]),  45,65},
  {&(_ZTV7S7208C2[52]),  52,65},
  {&(_ZTV7S7208C2[57]),  57,65},
  {&(_ZTV7S7208C2[14]),  14,65},
  {&(_ZTV7S7208C2[14]),  14,65},
  {&(_ZTV7S7208C2[63]),  63,65},
  {&(_tg__ZTV7S7208C3__7S7208C2[8]),  8,10},
  {&(_tg__ZTV7S7208C47S7208C3__7S7208C2[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C47S7208C3__7S7208C2[3]),  3,3},
  {&(_tg__ZTV7S7208C7__7S7208C3__7S7208C2[3]),  3,3},
  {&(_tg__ZTV7S7208C8__7S7208C3__7S7208C2[6]),  6,8},
  {&(_tg__ZTV8S7208C10__7S7208C3__7S7208C2[7]),  7,9},
  {&(_tg__ZTV8S7208C11__7S7208C3__7S7208C2[5]),  5,7},
  {&(_tg__ZTV7S7208C78S7208C11__A1__7S7208C3__7S7208C2[3]),  3,3},
  {&(_tg__ZTV7S7208C7__7S7208C2[3]),  3,3},
  {&(_tg__ZTV7S7208C8__7S7208C2[5]),  5,7},
  {&(_tg__ZTV7S7208C47S7208C8__A1__7S7208C2[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C47S7208C8__A1__7S7208C2[3]),  3,3},
  {&(_tg__ZTV7S7208C7__7S7208C8__7S7208C2[3]),  3,3},
  {&(_tg__ZTV8S7208C10__7S7208C2[6]),  6,8},
  {&(_tg__ZTV7S7208C8__8S7208C10__7S7208C2[6]),  6,8},
  {&(_tg__ZTV7S7208C7__8S7208C10__7S7208C2[3]),  3,3},
  {&(_tg__ZTV8S7208C11__7S7208C2[4]),  4,6},
  {&(_tg__ZTV8S7208C128S7208C11__7S7208C2[3]),  3,3},
  {&(_tg__ZTV7S7208C78S7208C11__A1__7S7208C2[3]),  3,3},
  {&(_tg__ZTV7S7208C7__8S7208C11__7S7208C2[3]),  3,3},
  {&(_tg__ZTV8S7208C13__7S7208C2[10]),  10,12},
  {&(_tg__ZTV8S7208C10__8S7208C13__7S7208C2[7]),  7,9},
  {&(_tg__ZTV7S7208C8__8S7208C13__7S7208C2[6]),  6,8},
  {&(_tg__ZTV7S7208C7__8S7208C13__7S7208C2[3]),  3,3},
  {&(_tg__ZTV8S7208C13__7S7208C2[10]),  10,12},
  {&(_tg__ZTV8S7208C15__8S7208C13__7S7208C2[6]),  6,8},
  {&(_tg__ZTV8S7208C12__A1__7S7208C2[3]),  3,3},
  {&(_tg__ZTV8S7208C15__7S7208C2[5]),  5,7},
  {&(_tg__ZTV7S7208C48S7208C15__A2__7S7208C2[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C48S7208C15__A2__7S7208C2[3]),  3,3},
  {&(_tg__ZTV7S7208C7__8S7208C15__7S7208C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7208C2[];
extern  VTBL_ENTRY _ZTV7S7208C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C2[];
static VTBL_ENTRY alt_thunk_names241[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7208C13D0Ev,_ZThn88_N8S7208C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7208C13D0Ev,_ZThn52_N8S7208C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7208C13D1Ev,_ZThn88_N8S7208C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7208C13D1Ev,_ZThn52_N8S7208C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7208C13D0Ev,_ZTv0_n28_N8S7208C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7208C13D0Ev,_ZThn68_N8S7208C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7208C13D1Ev,_ZTv0_n28_N8S7208C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7208C13D1Ev,_ZThn68_N8S7208C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C3D0Ev,_ZTv0_n20_N7S7208C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C3D0Ev,_ZThn72_N7S7208C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C3D1Ev,_ZTv0_n20_N7S7208C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C3D1Ev,_ZThn72_N7S7208C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C3D0Ev,_ZTv0_n28_N7S7208C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7208C3D0Ev,_ZThn64_N7S7208C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C3D1Ev,_ZTv0_n28_N7S7208C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7208C3D1Ev,_ZThn64_N7S7208C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C3D0Ev,_ZTv0_n24_N7S7208C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7208C3D0Ev,_ZThn48_N7S7208C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C3D1Ev,_ZTv0_n24_N7S7208C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7208C3D1Ev,_ZThn48_N7S7208C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C2D0Ev,_ZTv0_n20_N7S7208C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7208C2D0Ev,_ZThn76_N7S7208C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C2D1Ev,_ZTv0_n20_N7S7208C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7208C2D1Ev,_ZThn76_N7S7208C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C2D0Ev,_ZTv0_n28_N7S7208C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7208C2D0Ev,_ZThn68_N7S7208C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C2D1Ev,_ZTv0_n28_N7S7208C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7208C2D1Ev,_ZThn68_N7S7208C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7208C2D0Ev,_ZThn88_N7S7208C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7208C2D0Ev,_ZThn52_N7S7208C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7208C2D1Ev,_ZThn88_N7S7208C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7208C2D1Ev,_ZThn52_N7S7208C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7208C2D0Ev,_ZTv0_n36_N7S7208C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7208C2D0Ev,_ZThn4_N7S7208C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7208C2D1Ev,_ZTv0_n36_N7S7208C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7208C2D1Ev,_ZThn4_N7S7208C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7208C2 = {  "S7208C2", // class name
  bases_S7208C2, 27,
  &(vtc_S7208C2[0]), // expected_vtbl_contents
  &(vtt_S7208C2[0]), // expected_vtt_contents
  ABISELECT(232,176), // object size
  NSPAIRA(_ZTI7S7208C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7208C2),65, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7208C2),41, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names241,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C1  : S7208C2 {
  ::S3423C8_nt s7208c1f0;
  ~S7208C1(); // tgen
  S7208C1(); // tgen
};
//SIG(1 S7208C1) C1{ BC2{ VBC3{ BC4{ BC5{ m} VBC6{ m} VBC7{ BC6 VBC5 FC6} Fp} VBC8{ BC9{ m Fi} VBC7 BC4 BC5 vd Fc} VBC10{ VBC8 vd Fi} BC5 VBC11{ BC5 BC12{ VBC6 BC5} BC7 vd} Fi[8]} VBC13{ VBC14{ m} VBC10 VBC12 VBC15{ BC4 vd FL[10]} vd} vd} FC9}


S7208C1 ::~S7208C1(){ note_dtor("S7208C1", this);} // tgen
S7208C1 ::S7208C1(){ note_ctor("S7208C1", this);} // tgen

static void Test_S7208C1()
{
  extern Class_Descriptor cd_S7208C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,46)];
    init_test(&cd_S7208C1, buf);
    S7208C1 *dp, &lv = *(dp=new (buf) S7208C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,180), "sizeof(S7208C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C1)");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C3*), ABISELECT(16,8), "S7208C1");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C3*), 0, "S7208C1");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C8*), 0, "S7208C1");
    check_base_class_offset(lv, (S4228C27*)(S7208C12*)(S7208C11*), 0, "S7208C1");
    /*is_ambiguous_... S7208C1::S7208C12 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C12*), 0, "S7208C1");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C15*), 0, "S7208C1");
    /*is_ambiguous_... S7208C1::S7208C7 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C7*), ABISELECT(64,48), "S7208C1");
    /*is_ambiguous_... S7208C1::S7208C7 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C7*), ABISELECT(73,53), "S7208C1");
    check_base_class_offset(lv, (S4228C37*)(S7208C7*)(S7208C11*), ABISELECT(73,53), "S7208C1");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C3*), ABISELECT(64,48), "S7208C1");
    check_base_class_offset(lv, (S7208C7*)(S7208C8*), ABISELECT(64,48), "S7208C1");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C8*), ABISELECT(64,48), "S7208C1");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C15*), ABISELECT(64,48), "S7208C1");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S7208C4*)(S7208C3*), ABISELECT(16,8), "S7208C1");
    check_base_class_offset(lv, (S3423C8_nt*)(S7208C8*), ABISELECT(96,64), "S7208C1");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C8*), ABISELECT(80,56), "S7208C1");
    check_base_class_offset(lv, (S7208C4*)(S7208C8*), ABISELECT(80,56), "S7208C1");
    /*is_ambiguous_... S7208C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C8*), ABISELECT(100,68), "S7208C1");
    check_base_class_offset(lv, (S7208C8*)(S7208C3*), ABISELECT(80,56), "S7208C1");
    check_base_class_offset(lv, (S7208C8*)(S7208C10*), ABISELECT(80,56), "S7208C1");
    check_base_class_offset(lv, (S7208C10*)(S7208C3*), ABISELECT(104,72), "S7208C1");
    check_base_class_offset(lv, (S7208C10*)(S7208C13*), ABISELECT(104,72), "S7208C1");
    /*is_ambiguous_... S7208C3::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C3*), ABISELECT(32,16), "S7208C1");
    /*is_ambiguous_... S7208C11::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C11*), ABISELECT(128,84), "S7208C1");
    check_base_class_offset(lv, (S4228C37*)(S7208C12*)(S7208C11*), ABISELECT(120,80), "S7208C1");
    check_base_class_offset(lv, (S7208C12*)(S7208C11*), ABISELECT(120,80), "S7208C1");
    check_base_class_offset(lv, (S4228C27*)(S7208C7*)(S7208C11*), ABISELECT(128,84), "S7208C1");
    check_base_class_offset(lv, (S7208C7*)(S7208C11*), ABISELECT(128,84), "S7208C1");
    check_base_class_offset(lv, (S7208C11*)(S7208C3*), ABISELECT(120,80), "S7208C1");
    check_base_class_offset(lv, (S7208C3*)(S7208C2*), ABISELECT(16,8), "S7208C1");
    check_base_class_offset(lv, (S4228C23*)(S7208C13*), 0, "S7208C1");
    /*is_ambiguous_... S7208C1::S7208C12 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C12*), 0, "S7208C1");
    check_base_class_offset(lv, (S7208C12*)(S7208C13*), 0, "S7208C1");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C15*), ABISELECT(144,92), "S7208C1");
    check_base_class_offset(lv, (S7208C4*)(S7208C15*), ABISELECT(144,92), "S7208C1");
    check_base_class_offset(lv, (S7208C15*)(S7208C13*), ABISELECT(144,92), "S7208C1");
    check_base_class_offset(lv, (S7208C13*)(S7208C2*), 0, "S7208C1");
    check_base_class_offset(lv, (S7208C2*), 0, "S7208C1");
    check_field_offset(lv, s7208c1f0, ABISELECT(8,4), "S7208C1.s7208c1f0");
    test_class_info(&lv, &cd_S7208C1);
    dp->~S7208C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C1(Test_S7208C1, "S7208C1", ABISELECT(240,180));

#else // __cplusplus

extern void _ZN7S7208C1C1Ev();
extern void _ZN7S7208C1D1Ev();
Name_Map name_map_S7208C1[] = {
  NSPAIR(_ZN7S7208C1C1Ev),
  NSPAIR(_ZN7S7208C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C8;
extern VTBL_ENTRY _ZTI7S7208C8[];
extern  VTBL_ENTRY _ZTV7S7208C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C8[];
extern Class_Descriptor cd_S7208C10;
extern VTBL_ENTRY _ZTI8S7208C10[];
extern  VTBL_ENTRY _ZTV8S7208C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C10[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C12;
extern VTBL_ENTRY _ZTI8S7208C12[];
extern  VTBL_ENTRY _ZTV8S7208C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C12[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S7208C11;
extern VTBL_ENTRY _ZTI8S7208C11[];
extern  VTBL_ENTRY _ZTV8S7208C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C11[];
extern Class_Descriptor cd_S7208C3;
extern VTBL_ENTRY _ZTI7S7208C3[];
extern  VTBL_ENTRY _ZTV7S7208C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C3[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C12;
extern VTBL_ENTRY _ZTI8S7208C12[];
extern  VTBL_ENTRY _ZTV8S7208C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C12[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S7208C15;
extern VTBL_ENTRY _ZTI8S7208C15[];
extern  VTBL_ENTRY _ZTV8S7208C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C15[];
extern Class_Descriptor cd_S7208C13;
extern VTBL_ENTRY _ZTI8S7208C13[];
extern  VTBL_ENTRY _ZTV8S7208C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C13[];
extern Class_Descriptor cd_S7208C2;
extern VTBL_ENTRY _ZTI7S7208C2[];
extern  VTBL_ENTRY _ZTV7S7208C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C2[];
static Base_Class bases_S7208C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(64,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(73,53), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7208C7,    ABISELECT(64,48), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7208C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7208C4,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(100,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7208C8,    ABISELECT(80,56), //bcp->offset
    30, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7208C10,    ABISELECT(104,72), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7208C12,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7208C7,    ABISELECT(128,84), //bcp->offset
    54, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7208C11,    ABISELECT(120,80), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S7208C3,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7208C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(144,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7208C4,    ABISELECT(144,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7208C15,    ABISELECT(144,92), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7208C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7208C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7208C1[];
extern void _ZN7S7208C1D1Ev();
extern void _ZN7S7208C1D0Ev();
extern void ABISELECT(_ZTv0_n72_N7S7208C1D1Ev,_ZTv0_n36_N7S7208C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7208C1D1Ev,_ZThn8_N7S7208C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7208C1D0Ev,_ZTv0_n36_N7S7208C1D0Ev)();
extern void ABISELECT(_ZThn16_N7S7208C1D0Ev,_ZThn8_N7S7208C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C1D1Ev,_ZTv0_n24_N7S7208C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S7208C1D1Ev,_ZThn56_N7S7208C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C1D0Ev,_ZTv0_n24_N7S7208C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S7208C1D0Ev,_ZThn56_N7S7208C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7208C1D1Ev,_ZTv0_n28_N7S7208C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S7208C1D1Ev,_ZThn72_N7S7208C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7208C1D0Ev,_ZTv0_n28_N7S7208C1D0Ev)();
extern void ABISELECT(_ZThn104_N7S7208C1D0Ev,_ZThn72_N7S7208C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7208C1D1Ev,_ZTv0_n20_N7S7208C1D1Ev)();
extern void ABISELECT(_ZThn120_N7S7208C1D1Ev,_ZThn80_N7S7208C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7208C1D0Ev,_ZTv0_n20_N7S7208C1D0Ev)();
extern void ABISELECT(_ZThn120_N7S7208C1D0Ev,_ZThn80_N7S7208C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C1D1Ev,_ZTv0_n24_N7S7208C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S7208C1D1Ev,_ZThn92_N7S7208C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C1D0Ev,_ZTv0_n24_N7S7208C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S7208C1D0Ev,_ZThn92_N7S7208C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7208C1[] = {
  0,
  ABISELECT(120,80),
  ABISELECT(16,8),
  0,
  ABISELECT(144,92),
  0,
  ABISELECT(73,53),
  ABISELECT(64,48),
  ABISELECT(80,56),
  ABISELECT(104,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C1[0]),
  (VTBL_ENTRY)&_ZN7S7208C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C1D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(104,72),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(57,45),
  ABISELECT(48,40),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7208C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7208C1D1Ev,_ZTv0_n36_N7S7208C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7208C1D0Ev,_ZTv0_n36_N7S7208C1D0Ev),
  ABISELECT(9,5),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S7208C1[0]),
  ABISELECT(-80,-56),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI7S7208C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C1D1Ev,_ZTv0_n24_N7S7208C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C1D0Ev,_ZTv0_n24_N7S7208C1D0Ev),
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S7208C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C1D1Ev,_ZTv0_n28_N7S7208C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C1D0Ev,_ZTv0_n28_N7S7208C1D0Ev),
  ABISELECT(-120,-80),
  ABISELECT(-47,-27),
  ABISELECT(-120,-80),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI7S7208C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C1D1Ev,_ZTv0_n20_N7S7208C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C1D0Ev,_ZTv0_n20_N7S7208C1D0Ev),
  ABISELECT(-55,-31),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI7S7208C1[0]),
  ABISELECT(-144,-92),
  ABISELECT(-71,-39),
  ABISELECT(-80,-44),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S7208C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C1D1Ev,_ZTv0_n24_N7S7208C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C1D0Ev,_ZTv0_n24_N7S7208C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7208C1[];
extern void _ZN7S7208C2D1Ev();
extern void _ZN7S7208C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7208C2__7S7208C1[] = {
  0,
  ABISELECT(120,80),
  ABISELECT(16,8),
  0,
  ABISELECT(144,92),
  0,
  ABISELECT(73,53),
  ABISELECT(64,48),
  ABISELECT(80,56),
  ABISELECT(104,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&_ZN7S7208C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C2D0Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7208C2D1Ev,_ZTv0_n36_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7208C2D1Ev,_ZThn8_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7208C2D0Ev,_ZTv0_n36_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7208C2D0Ev,_ZThn8_N7S7208C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7208C3__7S7208C2__7S7208C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(104,72),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(57,45),
  ABISELECT(48,40),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7208C2D1Ev,_ZTv0_n36_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7208C2D0Ev,_ZTv0_n36_N7S7208C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C2__7S7208C1[] = {
  ABISELECT(9,5),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
};
extern void ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S7208C2D1Ev,_ZThn56_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S7208C2D0Ev,_ZThn56_N7S7208C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7208C8__7S7208C2__7S7208C1[] = {
  ABISELECT(-80,-56),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N7S7208C2D1Ev,_ZTv0_n28_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn104_N7S7208C2D1Ev,_ZThn72_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7208C2D0Ev,_ZTv0_n28_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn104_N7S7208C2D0Ev,_ZThn72_N7S7208C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C10__7S7208C2__7S7208C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C2D1Ev,_ZTv0_n28_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C2D0Ev,_ZTv0_n28_N7S7208C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7208C2D1Ev,_ZTv0_n20_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn120_N7S7208C2D1Ev,_ZThn80_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7208C2D0Ev,_ZTv0_n20_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn120_N7S7208C2D0Ev,_ZThn80_N7S7208C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C11__7S7208C2__7S7208C1[] = {
  ABISELECT(-120,-80),
  ABISELECT(-47,-27),
  ABISELECT(-120,-80),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C2D1Ev,_ZTv0_n20_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C2D0Ev,_ZTv0_n20_N7S7208C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C78S7208C11__A1__7S7208C2__7S7208C1[] = {
  ABISELECT(-55,-31),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
};
extern void ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn144_N7S7208C2D1Ev,_ZThn92_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn144_N7S7208C2D0Ev,_ZThn92_N7S7208C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C15__7S7208C2__7S7208C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-71,-39),
  ABISELECT(-80,-44),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev),
};
extern void _ZN7S7208C3D1Ev();
extern void _ZN7S7208C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7208C3__7S7208C1[] = {
  ABISELECT(104,72),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(57,45),
  ABISELECT(48,40),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&_ZN7S7208C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C47S7208C3__7S7208C1[] = {
  ABISELECT(57,45),
  ABISELECT(48,40),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C47S7208C3__7S7208C1[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C3__7S7208C1[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
};
extern void ABISELECT(_ZTv0_n48_N7S7208C3D1Ev,_ZTv0_n24_N7S7208C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S7208C3D1Ev,_ZThn48_N7S7208C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C3D0Ev,_ZTv0_n24_N7S7208C3D0Ev)();
extern void ABISELECT(_ZThn64_N7S7208C3D0Ev,_ZThn48_N7S7208C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7208C8__7S7208C3__7S7208C1[] = {
  ABISELECT(-64,-48),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-80,-56),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C3D1Ev,_ZTv0_n24_N7S7208C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C3D0Ev,_ZTv0_n24_N7S7208C3D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N7S7208C3D1Ev,_ZTv0_n28_N7S7208C3D1Ev)();
extern void ABISELECT(_ZThn88_N7S7208C3D1Ev,_ZThn64_N7S7208C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7208C3D0Ev,_ZTv0_n28_N7S7208C3D0Ev)();
extern void ABISELECT(_ZThn88_N7S7208C3D0Ev,_ZThn64_N7S7208C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C10__7S7208C3__7S7208C1[] = {
  ABISELECT(-88,-64),
  ABISELECT(-104,-72),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C3D1Ev,_ZTv0_n28_N7S7208C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C3D0Ev,_ZTv0_n28_N7S7208C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7208C3D1Ev,_ZTv0_n20_N7S7208C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7208C3D1Ev,_ZThn72_N7S7208C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7208C3D0Ev,_ZTv0_n20_N7S7208C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7208C3D0Ev,_ZThn72_N7S7208C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C11__7S7208C3__7S7208C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-47,-27),
  ABISELECT(-120,-80),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C3D1Ev,_ZTv0_n20_N7S7208C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C3D0Ev,_ZTv0_n20_N7S7208C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C78S7208C11__A1__7S7208C3__7S7208C1[] = {
  ABISELECT(-55,-31),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C1[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
extern void _ZN7S7208C8D1Ev();
extern void _ZN7S7208C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7208C8__7S7208C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-80,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
  (VTBL_ENTRY)&_ZN7S7208C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C47S7208C8__A1__7S7208C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-80,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C47S7208C8__A1__7S7208C1[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C8__7S7208C1[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
};
extern void _ZN8S7208C10D1Ev();
extern void _ZN8S7208C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C10__7S7208C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&_ZN8S7208C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C10D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7208C8__8S7208C10__7S7208C1[] = {
  ABISELECT(24,16),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-80,-56),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C10__7S7208C1[] = {
  ABISELECT(9,5),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
};
extern void _ZN8S7208C11D1Ev();
extern void _ZN8S7208C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C11__7S7208C1[] = {
  ABISELECT(-47,-27),
  ABISELECT(-120,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C11[0]),
  (VTBL_ENTRY)&_ZN8S7208C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7208C128S7208C11__7S7208C1[] = {
  ABISELECT(-120,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C78S7208C11__A1__7S7208C1[] = {
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C11__7S7208C1[] = {
  ABISELECT(-55,-31),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7208C11[0]),
};
extern void _ZN8S7208C13D1Ev();
extern void _ZN8S7208C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C13__7S7208C1[] = {
  ABISELECT(144,92),
  0,
  ABISELECT(73,53),
  ABISELECT(64,48),
  ABISELECT(80,56),
  ABISELECT(104,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&_ZN8S7208C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C13D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S7208C13D1Ev,_ZTv0_n28_N8S7208C13D1Ev)();
extern void ABISELECT(_ZThn104_N8S7208C13D1Ev,_ZThn72_N8S7208C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7208C13D0Ev,_ZTv0_n28_N8S7208C13D0Ev)();
extern void ABISELECT(_ZThn104_N8S7208C13D0Ev,_ZThn72_N8S7208C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C10__8S7208C13__7S7208C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7208C13D1Ev,_ZTv0_n28_N8S7208C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7208C13D0Ev,_ZTv0_n28_N8S7208C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S7208C13D1Ev,_ZThn56_N8S7208C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev)();
extern void ABISELECT(_ZThn80_N8S7208C13D0Ev,_ZThn56_N8S7208C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7208C8__8S7208C13__7S7208C1[] = {
  ABISELECT(-80,-56),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C13__7S7208C1[] = {
  ABISELECT(9,5),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
};
extern void ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev)();
extern void ABISELECT(_ZThn144_N8S7208C13D1Ev,_ZThn92_N8S7208C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev)();
extern void ABISELECT(_ZThn144_N8S7208C13D0Ev,_ZThn92_N8S7208C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C15__8S7208C13__7S7208C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-71,-39),
  ABISELECT(-80,-44),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7208C12__A1__7S7208C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C12[0]),
};
extern void _ZN8S7208C15D1Ev();
extern void _ZN8S7208C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C15__7S7208C1[] = {
  ABISELECT(-71,-39),
  ABISELECT(-80,-44),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C15[0]),
  (VTBL_ENTRY)&_ZN8S7208C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C48S7208C15__A2__7S7208C1[] = {
  ABISELECT(-71,-39),
  ABISELECT(-80,-44),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C48S7208C15__A2__7S7208C1[] = {
  ABISELECT(9,5),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C15__7S7208C1[] = {
  ABISELECT(9,5),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7208C15[0]),
};
static  VTT_ENTRY vtt_S7208C1[] = {
  {&(_ZTV7S7208C1[14]),  14,65},
  {&(_tg__ZTV7S7208C2__7S7208C1[14]),  14,16},
  {&(_tg__ZTV7S7208C3__7S7208C2__7S7208C1[9]),  9,11},
  {&(_tg__ZTV7S7208C7__7S7208C2__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C8__7S7208C2__7S7208C1[6]),  6,8},
  {&(_tg__ZTV8S7208C10__7S7208C2__7S7208C1[7]),  7,9},
  {&(_tg__ZTV8S7208C11__7S7208C2__7S7208C1[5]),  5,7},
  {&(_tg__ZTV7S7208C78S7208C11__A1__7S7208C2__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C2__7S7208C1[14]),  14,16},
  {&(_tg__ZTV7S7208C2__7S7208C1[14]),  14,16},
  {&(_tg__ZTV8S7208C15__7S7208C2__7S7208C1[6]),  6,8},
  {&(_ZTV7S7208C1[25]),  25,65},
  {&(_ZTV7S7208C1[30]),  30,65},
  {&(_ZTV7S7208C1[36]),  36,65},
  {&(_ZTV7S7208C1[45]),  45,65},
  {&(_ZTV7S7208C1[52]),  52,65},
  {&(_ZTV7S7208C1[57]),  57,65},
  {&(_ZTV7S7208C1[14]),  14,65},
  {&(_ZTV7S7208C1[14]),  14,65},
  {&(_ZTV7S7208C1[63]),  63,65},
  {&(_tg__ZTV7S7208C3__7S7208C1[8]),  8,10},
  {&(_tg__ZTV7S7208C47S7208C3__7S7208C1[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C47S7208C3__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C7__7S7208C3__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C8__7S7208C3__7S7208C1[6]),  6,8},
  {&(_tg__ZTV8S7208C10__7S7208C3__7S7208C1[7]),  7,9},
  {&(_tg__ZTV8S7208C11__7S7208C3__7S7208C1[5]),  5,7},
  {&(_tg__ZTV7S7208C78S7208C11__A1__7S7208C3__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C7__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C8__7S7208C1[5]),  5,7},
  {&(_tg__ZTV7S7208C47S7208C8__A1__7S7208C1[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C47S7208C8__A1__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C7__7S7208C8__7S7208C1[3]),  3,3},
  {&(_tg__ZTV8S7208C10__7S7208C1[6]),  6,8},
  {&(_tg__ZTV7S7208C8__8S7208C10__7S7208C1[6]),  6,8},
  {&(_tg__ZTV7S7208C7__8S7208C10__7S7208C1[3]),  3,3},
  {&(_tg__ZTV8S7208C11__7S7208C1[4]),  4,6},
  {&(_tg__ZTV8S7208C128S7208C11__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C78S7208C11__A1__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C7__8S7208C11__7S7208C1[3]),  3,3},
  {&(_tg__ZTV8S7208C13__7S7208C1[10]),  10,12},
  {&(_tg__ZTV8S7208C10__8S7208C13__7S7208C1[7]),  7,9},
  {&(_tg__ZTV7S7208C8__8S7208C13__7S7208C1[6]),  6,8},
  {&(_tg__ZTV7S7208C7__8S7208C13__7S7208C1[3]),  3,3},
  {&(_tg__ZTV8S7208C13__7S7208C1[10]),  10,12},
  {&(_tg__ZTV8S7208C15__8S7208C13__7S7208C1[6]),  6,8},
  {&(_tg__ZTV8S7208C12__A1__7S7208C1[3]),  3,3},
  {&(_tg__ZTV8S7208C15__7S7208C1[5]),  5,7},
  {&(_tg__ZTV7S7208C48S7208C15__A2__7S7208C1[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C48S7208C15__A2__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C7__8S7208C15__7S7208C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7208C1[];
extern  VTBL_ENTRY _ZTV7S7208C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C1[];
static VTBL_ENTRY alt_thunk_names242[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7208C13D0Ev,_ZThn92_N8S7208C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7208C13D0Ev,_ZThn56_N8S7208C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7208C13D1Ev,_ZThn92_N8S7208C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7208C13D1Ev,_ZThn56_N8S7208C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7208C13D0Ev,_ZTv0_n28_N8S7208C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7208C13D0Ev,_ZThn72_N8S7208C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7208C13D1Ev,_ZTv0_n28_N8S7208C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7208C13D1Ev,_ZThn72_N8S7208C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C3D0Ev,_ZTv0_n20_N7S7208C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C3D0Ev,_ZThn72_N7S7208C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C3D1Ev,_ZTv0_n20_N7S7208C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C3D1Ev,_ZThn72_N7S7208C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C3D0Ev,_ZTv0_n28_N7S7208C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7208C3D0Ev,_ZThn64_N7S7208C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C3D1Ev,_ZTv0_n28_N7S7208C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7208C3D1Ev,_ZThn64_N7S7208C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C3D0Ev,_ZTv0_n24_N7S7208C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7208C3D0Ev,_ZThn48_N7S7208C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C3D1Ev,_ZTv0_n24_N7S7208C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7208C3D1Ev,_ZThn48_N7S7208C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C2D0Ev,_ZTv0_n20_N7S7208C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7208C2D0Ev,_ZThn80_N7S7208C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C2D1Ev,_ZTv0_n20_N7S7208C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7208C2D1Ev,_ZThn80_N7S7208C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C2D0Ev,_ZTv0_n28_N7S7208C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C2D0Ev,_ZThn72_N7S7208C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C2D1Ev,_ZTv0_n28_N7S7208C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C2D1Ev,_ZThn72_N7S7208C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7208C2D0Ev,_ZThn92_N7S7208C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7208C2D0Ev,_ZThn56_N7S7208C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7208C2D1Ev,_ZThn92_N7S7208C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7208C2D1Ev,_ZThn56_N7S7208C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7208C2D0Ev,_ZTv0_n36_N7S7208C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7208C2D0Ev,_ZThn8_N7S7208C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7208C2D1Ev,_ZTv0_n36_N7S7208C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7208C2D1Ev,_ZThn8_N7S7208C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C1D0Ev,_ZTv0_n20_N7S7208C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7208C1D0Ev,_ZThn80_N7S7208C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C1D1Ev,_ZTv0_n20_N7S7208C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7208C1D1Ev,_ZThn80_N7S7208C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C1D0Ev,_ZTv0_n28_N7S7208C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C1D0Ev,_ZThn72_N7S7208C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C1D1Ev,_ZTv0_n28_N7S7208C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C1D1Ev,_ZThn72_N7S7208C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C1D0Ev,_ZTv0_n24_N7S7208C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7208C1D0Ev,_ZThn92_N7S7208C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7208C1D0Ev,_ZThn56_N7S7208C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C1D1Ev,_ZTv0_n24_N7S7208C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7208C1D1Ev,_ZThn92_N7S7208C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7208C1D1Ev,_ZThn56_N7S7208C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7208C1D0Ev,_ZTv0_n36_N7S7208C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7208C1D0Ev,_ZThn8_N7S7208C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7208C1D1Ev,_ZTv0_n36_N7S7208C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7208C1D1Ev,_ZThn8_N7S7208C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7208C1 = {  "S7208C1", // class name
  bases_S7208C1, 28,
  &(vtc_S7208C1[0]), // expected_vtbl_contents
  &(vtt_S7208C1[0]), // expected_vtt_contents
  ABISELECT(240,180), // object size
  NSPAIRA(_ZTI7S7208C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7208C1),65, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7208C1),51, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names242,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7290C3  : S4228C37 , virtual S4228C27 {
  ::S4228C37 s7290c3f0;
  ~S7290C3(); // tgen
  S7290C3(); // tgen
};
//SIG(-1 S7290C3) C1{ BC2{ m} VBC3{ m} FC2}


S7290C3 ::~S7290C3(){ note_dtor("S7290C3", this);} // tgen
S7290C3 ::S7290C3(){ note_ctor("S7290C3", this);} // tgen

static void Test_S7290C3()
{
  extern Class_Descriptor cd_S7290C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7290C3, buf);
    S7290C3 *dp, &lv = *(dp=new (buf) S7290C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7290C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C3)");
    check_base_class_offset(lv, (S4228C37*), 0, "S7290C3");
    check_base_class_offset(lv, (S4228C27*), 0, "S7290C3");
    check_field_offset(lv, s7290c3f0, ABISELECT(8,4), "S7290C3.s7290c3f0");
    test_class_info(&lv, &cd_S7290C3);
    dp->~S7290C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C3(Test_S7290C3, "S7290C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7290C3C1Ev();
extern void _ZN7S7290C3D1Ev();
Name_Map name_map_S7290C3[] = {
  NSPAIR(_ZN7S7290C3C1Ev),
  NSPAIR(_ZN7S7290C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7290C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7290C3[];
static  VTBL_ENTRY vtc_S7290C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C3[0]),
};
extern VTBL_ENTRY _ZTV7S7290C3[];
static  VTT_ENTRY vtt_S7290C3[] = {
  {&(_ZTV7S7290C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7290C3[];
extern  VTBL_ENTRY _ZTV7S7290C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C3[];
Class_Descriptor cd_S7290C3 = {  "S7290C3", // class name
  bases_S7290C3, 2,
  &(vtc_S7290C3[0]), // expected_vtbl_contents
  &(vtt_S7290C3[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7290C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7290C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7290C3),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7290C6  : virtual S4228C37 , S4228C27 {
  ~S7290C6(); // tgen
  S7290C6(); // tgen
};
//SIG(-1 S7290C6) C1{ VBC2{ m} BC3{ m}}


S7290C6 ::~S7290C6(){ note_dtor("S7290C6", this);} // tgen
S7290C6 ::S7290C6(){ note_ctor("S7290C6", this);} // tgen

static void Test_S7290C6()
{
  extern Class_Descriptor cd_S7290C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7290C6, buf);
    S7290C6 *dp, &lv = *(dp=new (buf) S7290C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7290C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C6)");
    check_base_class_offset(lv, (S4228C37*), 0, "S7290C6");
    check_base_class_offset(lv, (S4228C27*), 0, "S7290C6");
    test_class_info(&lv, &cd_S7290C6);
    dp->~S7290C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C6(Test_S7290C6, "S7290C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7290C6C1Ev();
extern void _ZN7S7290C6D1Ev();
Name_Map name_map_S7290C6[] = {
  NSPAIR(_ZN7S7290C6C1Ev),
  NSPAIR(_ZN7S7290C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7290C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7290C6[];
static  VTBL_ENTRY vtc_S7290C6[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C6[0]),
};
extern VTBL_ENTRY _ZTV7S7290C6[];
static  VTT_ENTRY vtt_S7290C6[] = {
  {&(_ZTV7S7290C6[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7290C6[];
extern  VTBL_ENTRY _ZTV7S7290C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C6[];
Class_Descriptor cd_S7290C6 = {  "S7290C6", // class name
  bases_S7290C6, 2,
  &(vtc_S7290C6[0]), // expected_vtbl_contents
  &(vtt_S7290C6[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7290C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7290C6),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7290C6),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7290C2  : virtual S7290C3 , S7290C6 {
  void *s7290c2f0;
  ~S7290C2(); // tgen
  S7290C2(); // tgen
};
//SIG(-1 S7290C2) C1{ VBC2{ BC3{ m} VBC4{ m} FC3} BC5{ VBC3 BC4} Fp}


S7290C2 ::~S7290C2(){ note_dtor("S7290C2", this);} // tgen
S7290C2 ::S7290C2(){ note_ctor("S7290C2", this);} // tgen

static void Test_S7290C2()
{
  extern Class_Descriptor cd_S7290C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7290C2, buf);
    S7290C2 *dp, &lv = *(dp=new (buf) S7290C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7290C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C2)");
    check_base_class_offset(lv, (S4228C37*)(S7290C3*), ABISELECT(16,8), "S7290C2");
    check_base_class_offset(lv, (S4228C27*)(S7290C3*), ABISELECT(25,13), "S7290C2");
    check_base_class_offset(lv, (S7290C3*), ABISELECT(16,8), "S7290C2");
    check_base_class_offset(lv, (S4228C37*)(S7290C6*), 0, "S7290C2");
    check_base_class_offset(lv, (S4228C27*)(S7290C6*), 0, "S7290C2");
    check_base_class_offset(lv, (S7290C6*), 0, "S7290C2");
    check_field_offset(lv, s7290c2f0, ABISELECT(8,4), "S7290C2.s7290c2f0");
    test_class_info(&lv, &cd_S7290C2);
    dp->~S7290C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C2(Test_S7290C2, "S7290C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7290C2C1Ev();
extern void _ZN7S7290C2D1Ev();
Name_Map name_map_S7290C2[] = {
  NSPAIR(_ZN7S7290C2C1Ev),
  NSPAIR(_ZN7S7290C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C3;
extern VTBL_ENTRY _ZTI7S7290C3[];
extern  VTBL_ENTRY _ZTV7S7290C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C3[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C6;
extern VTBL_ENTRY _ZTI7S7290C6[];
extern  VTBL_ENTRY _ZTV7S7290C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C6[];
static Base_Class bases_S7290C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7290C3,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7290C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7290C2[];
static  VTBL_ENTRY vtc_S7290C2[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C2[0]),
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7290C2[0]),
};
extern VTBL_ENTRY _ZTV7S7290C2[];
static  VTBL_ENTRY _tg__ZTV7S7290C6__7S7290C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__7S7290C2[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C3[0]),
};
static  VTT_ENTRY vtt_S7290C2[] = {
  {&(_ZTV7S7290C2[5]),  5,8},
  {&(_tg__ZTV7S7290C6__7S7290C2[3]),  3,3},
  {&(_ZTV7S7290C2[8]),  8,8},
  {&(_tg__ZTV7S7290C3__7S7290C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7290C2[];
extern  VTBL_ENTRY _ZTV7S7290C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C2[];
Class_Descriptor cd_S7290C2 = {  "S7290C2", // class name
  bases_S7290C2, 6,
  &(vtc_S7290C2[0]), // expected_vtbl_contents
  &(vtt_S7290C2[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7290C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7290C2),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7290C2),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7290C7  : S7290C6 , S3423C8_nt {
  ~S7290C7(); // tgen
  S7290C7(); // tgen
};
//SIG(-1 S7290C7) C1{ BC2{ VBC3{ m} BC4{ m}} BC5{ m Fi}}


S7290C7 ::~S7290C7(){ note_dtor("S7290C7", this);} // tgen
S7290C7 ::S7290C7(){ note_ctor("S7290C7", this);} // tgen

static void Test_S7290C7()
{
  extern Class_Descriptor cd_S7290C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7290C7, buf);
    S7290C7 *dp, &lv = *(dp=new (buf) S7290C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7290C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C7)");
    check_base_class_offset(lv, (S4228C37*)(S7290C6*), 0, "S7290C7");
    check_base_class_offset(lv, (S4228C27*)(S7290C6*), 0, "S7290C7");
    check_base_class_offset(lv, (S7290C6*), 0, "S7290C7");
    check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(8,4), "S7290C7");
    test_class_info(&lv, &cd_S7290C7);
    dp->~S7290C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C7(Test_S7290C7, "S7290C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7290C7C1Ev();
extern void _ZN7S7290C7D1Ev();
Name_Map name_map_S7290C7[] = {
  NSPAIR(_ZN7S7290C7C1Ev),
  NSPAIR(_ZN7S7290C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C6;
extern VTBL_ENTRY _ZTI7S7290C6[];
extern  VTBL_ENTRY _ZTV7S7290C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C6[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
static Base_Class bases_S7290C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7290C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3423C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7290C7[];
static  VTBL_ENTRY vtc_S7290C7[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C7[0]),
};
extern VTBL_ENTRY _ZTV7S7290C7[];
static  VTBL_ENTRY _tg__ZTV7S7290C6__7S7290C7[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C6[0]),
};
static  VTT_ENTRY vtt_S7290C7[] = {
  {&(_ZTV7S7290C7[3]),  3,3},
  {&(_tg__ZTV7S7290C6__7S7290C7[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7290C7[];
extern  VTBL_ENTRY _ZTV7S7290C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C7[];
Class_Descriptor cd_S7290C7 = {  "S7290C7", // class name
  bases_S7290C7, 4,
  &(vtc_S7290C7[0]), // expected_vtbl_contents
  &(vtt_S7290C7[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7290C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7290C7),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7290C7),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7290C10  : S4228C27 , virtual S4228C37 , virtual S7290C3 {
  void *s7290c10f0;
  ~S7290C10(); // tgen
  S7290C10(); // tgen
};
//SIG(-1 S7290C10) C1{ BC2{ m} VBC3{ m} VBC4{ BC3 VBC2 FC3} Fp}


S7290C10 ::~S7290C10(){ note_dtor("S7290C10", this);} // tgen
S7290C10 ::S7290C10(){ note_ctor("S7290C10", this);} // tgen

static void Test_S7290C10()
{
  extern Class_Descriptor cd_S7290C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7290C10, buf);
    S7290C10 *dp, &lv = *(dp=new (buf) S7290C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7290C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C10)");
    /*is_ambiguous_... S7290C10::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), 0, "S7290C10");
    /*is_ambiguous_... S7290C10::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), 0, "S7290C10");
    check_base_class_offset(lv, (S4228C37*)(S7290C3*), ABISELECT(16,8), "S7290C10");
    check_base_class_offset(lv, (S4228C27*)(S7290C3*), ABISELECT(25,13), "S7290C10");
    check_base_class_offset(lv, (S7290C3*), ABISELECT(16,8), "S7290C10");
    check_field_offset(lv, s7290c10f0, ABISELECT(8,4), "S7290C10.s7290c10f0");
    test_class_info(&lv, &cd_S7290C10);
    dp->~S7290C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C10(Test_S7290C10, "S7290C10", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S7290C10C1Ev();
extern void _ZN8S7290C10D1Ev();
Name_Map name_map_S7290C10[] = {
  NSPAIR(_ZN8S7290C10C1Ev),
  NSPAIR(_ZN8S7290C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C3;
extern VTBL_ENTRY _ZTI7S7290C3[];
extern  VTBL_ENTRY _ZTV7S7290C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C3[];
static Base_Class bases_S7290C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7290C3,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7290C10[];
static  VTBL_ENTRY vtc_S7290C10[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
extern VTBL_ENTRY _ZTV8S7290C10[];
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C10[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C3[0]),
};
static  VTT_ENTRY vtt_S7290C10[] = {
  {&(_ZTV8S7290C10[5]),  5,8},
  {&(_ZTV8S7290C10[8]),  8,8},
  {&(_tg__ZTV7S7290C3__8S7290C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
Class_Descriptor cd_S7290C10 = {  "S7290C10", // class name
  bases_S7290C10, 5,
  &(vtc_S7290C10[0]), // expected_vtbl_contents
  &(vtt_S7290C10[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S7290C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7290C10),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7290C10),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7290C9  : virtual S7290C10 {
  char s7290c9f0:8;
  ~S7290C9(); // tgen
  S7290C9(); // tgen
};
//SIG(-1 S7290C9) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} Fc:8}


S7290C9 ::~S7290C9(){ note_dtor("S7290C9", this);} // tgen
S7290C9 ::S7290C9(){ note_ctor("S7290C9", this);} // tgen

static void Test_S7290C9()
{
  extern Class_Descriptor cd_S7290C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S7290C9, buf);
    S7290C9 *dp, &lv = *(dp=new (buf) S7290C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S7290C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C9)");
    /*is_ambiguous_... S7290C10::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C10*), ABISELECT(16,8), "S7290C9");
    /*is_ambiguous_... S7290C10::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C10*), 0, "S7290C9");
    check_base_class_offset(lv, (S4228C37*)(S7290C3*), ABISELECT(32,16), "S7290C9");
    check_base_class_offset(lv, (S4228C27*)(S7290C3*), 0, "S7290C9");
    check_base_class_offset(lv, (S7290C3*)(S7290C10*), ABISELECT(32,16), "S7290C9");
    check_base_class_offset(lv, (S7290C10*), ABISELECT(16,8), "S7290C9");
    set_bf_and_test(lv, s7290c9f0, ABISELECT(8,4), 0, 8, 1, "S7290C9");
    set_bf_and_test(lv, s7290c9f0, ABISELECT(8,4), 0, 8, hide_sll(1LL<<7), "S7290C9");
    test_class_info(&lv, &cd_S7290C9);
    dp->~S7290C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C9(Test_S7290C9, "S7290C9", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S7290C9C1Ev();
extern void _ZN7S7290C9D1Ev();
Name_Map name_map_S7290C9[] = {
  NSPAIR(_ZN7S7290C9C1Ev),
  NSPAIR(_ZN7S7290C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C3;
extern VTBL_ENTRY _ZTI7S7290C3[];
extern  VTBL_ENTRY _ZTV7S7290C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C3[];
extern Class_Descriptor cd_S7290C10;
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
static Base_Class bases_S7290C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7290C3,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7290C10,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7290C9[];
static  VTBL_ENTRY vtc_S7290C9[] = {
  0,
  ABISELECT(32,16),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C9[0]),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7290C9[0]),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7290C9[0]),
};
extern VTBL_ENTRY _ZTV7S7290C9[];
static  VTBL_ENTRY _tg__ZTV8S7290C10__7S7290C9[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C10__7S7290C9[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__7S7290C9[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C3[0]),
};
static  VTT_ENTRY vtt_S7290C9[] = {
  {&(_ZTV7S7290C9[6]),  6,14},
  {&(_ZTV7S7290C9[11]),  11,14},
  {&(_ZTV7S7290C9[14]),  14,14},
  {&(_tg__ZTV8S7290C10__7S7290C9[5]),  5,5},
  {&(_tg__ZTV7S7290C3__8S7290C10__7S7290C9[3]),  3,3},
  {&(_tg__ZTV7S7290C3__7S7290C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7290C9[];
extern  VTBL_ENTRY _ZTV7S7290C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C9[];
Class_Descriptor cd_S7290C9 = {  "S7290C9", // class name
  bases_S7290C9, 6,
  &(vtc_S7290C9[0]), // expected_vtbl_contents
  &(vtt_S7290C9[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S7290C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7290C9),14, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7290C9),6, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7290C11  : S7290C10 {
  __tsi64 s7290c11f0[10];
  virtual  ~S7290C11(); // _ZN8S7290C11D2Ev
  S7290C11(); // tgen
};
//SIG(-1 S7290C11) C1{ BC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} vd FL[10]}


 S7290C11 ::~S7290C11(){ note_dtor("S7290C11", this);}
S7290C11 ::S7290C11(){ note_ctor("S7290C11", this);} // tgen

static void Test_S7290C11()
{
  extern Class_Descriptor cd_S7290C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,25)];
    init_test(&cd_S7290C11, buf);
    S7290C11 *dp, &lv = *(dp=new (buf) S7290C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,96), "sizeof(S7290C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C11)");
    /*is_ambiguous_... S7290C10::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C10*), 0, "S7290C11");
    /*is_ambiguous_... S7290C10::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C10*), 0, "S7290C11");
    check_base_class_offset(lv, (S4228C37*)(S7290C3*), ABISELECT(96,88), "S7290C11");
    check_base_class_offset(lv, (S4228C27*)(S7290C3*), ABISELECT(105,93), "S7290C11");
    check_base_class_offset(lv, (S7290C3*)(S7290C10*), ABISELECT(96,88), "S7290C11");
    check_base_class_offset(lv, (S7290C10*), 0, "S7290C11");
    check_field_offset(lv, s7290c11f0, ABISELECT(16,8), "S7290C11.s7290c11f0");
    test_class_info(&lv, &cd_S7290C11);
    dp->~S7290C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C11(Test_S7290C11, "S7290C11", ABISELECT(112,96));

#else // __cplusplus

extern void _ZN8S7290C11C1Ev();
extern void _ZN8S7290C11D2Ev();
Name_Map name_map_S7290C11[] = {
  NSPAIR(_ZN8S7290C11C1Ev),
  NSPAIR(_ZN8S7290C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C3;
extern VTBL_ENTRY _ZTI7S7290C3[];
extern  VTBL_ENTRY _ZTV7S7290C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C3[];
extern Class_Descriptor cd_S7290C10;
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
static Base_Class bases_S7290C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(96,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(105,93), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7290C3,    ABISELECT(96,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7290C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7290C11[];
extern void _ZN8S7290C11D1Ev();
extern void _ZN8S7290C11D0Ev();
static  VTBL_ENTRY vtc_S7290C11[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C11[0]),
  (VTBL_ENTRY)&_ZN8S7290C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C11D0Ev,
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI8S7290C11[0]),
};
extern VTBL_ENTRY _ZTV8S7290C11[];
static  VTBL_ENTRY _tg__ZTV8S7290C10__8S7290C11[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C10__8S7290C11[] = {
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C11[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C3[0]),
};
static  VTT_ENTRY vtt_S7290C11[] = {
  {&(_ZTV8S7290C11[5]),  5,10},
  {&(_tg__ZTV8S7290C10__8S7290C11[5]),  5,5},
  {&(_tg__ZTV7S7290C3__8S7290C10__8S7290C11[3]),  3,3},
  {&(_ZTV8S7290C11[10]),  10,10},
  {&(_tg__ZTV7S7290C3__8S7290C11[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7290C11[];
extern  VTBL_ENTRY _ZTV8S7290C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C11[];
Class_Descriptor cd_S7290C11 = {  "S7290C11", // class name
  bases_S7290C11, 6,
  &(vtc_S7290C11[0]), // expected_vtbl_contents
  &(vtt_S7290C11[0]), // expected_vtt_contents
  ABISELECT(112,96), // object size
  NSPAIRA(_ZTI8S7290C11),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7290C11),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7290C11),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7290C15  : S3423C8_nt , virtual S7290C3 , S7290C10 , S4228C27 {
  char s7290c15f0;
  virtual  ~S7290C15(); // _ZN8S7290C15D2Ev
  S7290C15(); // tgen
};
//SIG(-1 S7290C15) C1{ BC2{ m Fi} VBC3{ BC4{ m} VBC5{ m} FC4} BC6{ BC5 VBC4 VBC3 Fp} BC5 vd Fc}


 S7290C15 ::~S7290C15(){ note_dtor("S7290C15", this);}
S7290C15 ::S7290C15(){ note_ctor("S7290C15", this);} // tgen

static void Test_S7290C15()
{
  extern Class_Descriptor cd_S7290C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7290C15, buf);
    S7290C15 *dp, &lv = *(dp=new (buf) S7290C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7290C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C15)");
    check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(16,8), "S7290C15");
    check_base_class_offset(lv, (S4228C37*)(S7290C3*), ABISELECT(24,16), "S7290C15");
    check_base_class_offset(lv, (S4228C27*)(S7290C3*), ABISELECT(33,21), "S7290C15");
    check_base_class_offset(lv, (S7290C3*), ABISELECT(24,16), "S7290C15");
    check_base_class_offset(lv, (S7290C3*)(S7290C10*), ABISELECT(24,16), "S7290C15");
    /*is_ambiguous_... S7290C10::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C10*), 0, "S7290C15");
    /*is_ambiguous_... S7290C10::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C10*), 0, "S7290C15");
    check_base_class_offset(lv, (S7290C10*), 0, "S7290C15");
    /*is_ambiguous_... S7290C15::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), ABISELECT(20,12), "S7290C15");
    check_field_offset(lv, s7290c15f0, ABISELECT(20,12), "S7290C15.s7290c15f0");
    test_class_info(&lv, &cd_S7290C15);
    dp->~S7290C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C15(Test_S7290C15, "S7290C15", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S7290C15C1Ev();
extern void _ZN8S7290C15D2Ev();
Name_Map name_map_S7290C15[] = {
  NSPAIR(_ZN8S7290C15C1Ev),
  NSPAIR(_ZN8S7290C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C3;
extern VTBL_ENTRY _ZTI7S7290C3[];
extern  VTBL_ENTRY _ZTV7S7290C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C3[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7290C10;
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7290C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(33,21), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7290C3,    ABISELECT(24,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7290C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7290C15[];
extern void _ZN8S7290C15D1Ev();
extern void _ZN8S7290C15D0Ev();
static  VTBL_ENTRY vtc_S7290C15[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C15[0]),
  (VTBL_ENTRY)&_ZN8S7290C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C15D0Ev,
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7290C15[0]),
};
extern VTBL_ENTRY _ZTV8S7290C15[];
static  VTBL_ENTRY _tg__ZTV8S7290C10__8S7290C15[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C10__8S7290C15[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C15[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C3[0]),
};
static  VTT_ENTRY vtt_S7290C15[] = {
  {&(_ZTV8S7290C15[5]),  5,10},
  {&(_tg__ZTV8S7290C10__8S7290C15[5]),  5,5},
  {&(_tg__ZTV7S7290C3__8S7290C10__8S7290C15[3]),  3,3},
  {&(_ZTV8S7290C15[10]),  10,10},
  {&(_tg__ZTV7S7290C3__8S7290C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7290C15[];
extern  VTBL_ENTRY _ZTV8S7290C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C15[];
Class_Descriptor cd_S7290C15 = {  "S7290C15", // class name
  bases_S7290C15, 8,
  &(vtc_S7290C15[0]), // expected_vtbl_contents
  &(vtt_S7290C15[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S7290C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7290C15),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7290C15),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7290C14  : virtual S7290C15 {
  int s7290c14f0;
  virtual  ~S7290C14(); // _ZN8S7290C14D2Ev
  S7290C14(); // tgen
};
//SIG(-1 S7290C14) C1{ VBC2{ BC3{ m Fi} VBC4{ BC5{ m} VBC6{ m} FC5} BC7{ BC6 VBC5 VBC4 Fp} BC6 vd Fc} vd Fi}


 S7290C14 ::~S7290C14(){ note_dtor("S7290C14", this);}
S7290C14 ::S7290C14(){ note_ctor("S7290C14", this);} // tgen

static void Test_S7290C14()
{
  extern Class_Descriptor cd_S7290C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7290C14, buf);
    S7290C14 *dp, &lv = *(dp=new (buf) S7290C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7290C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C14)");
    check_base_class_offset(lv, (S3423C8_nt*)(S7290C15*), ABISELECT(32,16), "S7290C14");
    check_base_class_offset(lv, (S4228C37*)(S7290C3*), ABISELECT(40,24), "S7290C14");
    check_base_class_offset(lv, (S4228C27*)(S7290C3*), 0, "S7290C14");
    check_base_class_offset(lv, (S7290C3*)(S7290C15*), ABISELECT(40,24), "S7290C14");
    check_base_class_offset(lv, (S7290C3*)(S7290C10*)(S7290C15*), ABISELECT(40,24), "S7290C14");
    /*is_ambiguous_... S7290C10::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C10*)(S7290C15*), ABISELECT(16,8), "S7290C14");
    /*is_ambiguous_... S7290C10::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C10*)(S7290C15*), 0, "S7290C14");
    check_base_class_offset(lv, (S7290C10*)(S7290C15*), ABISELECT(16,8), "S7290C14");
    /*is_ambiguous_... S7290C15::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C15*), ABISELECT(36,20), "S7290C14");
    check_base_class_offset(lv, (S7290C15*), ABISELECT(16,8), "S7290C14");
    check_field_offset(lv, s7290c14f0, ABISELECT(8,4), "S7290C14.s7290c14f0");
    test_class_info(&lv, &cd_S7290C14);
    dp->~S7290C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C14(Test_S7290C14, "S7290C14", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S7290C14C1Ev();
extern void _ZN8S7290C14D2Ev();
Name_Map name_map_S7290C14[] = {
  NSPAIR(_ZN8S7290C14C1Ev),
  NSPAIR(_ZN8S7290C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C3;
extern VTBL_ENTRY _ZTI7S7290C3[];
extern  VTBL_ENTRY _ZTV7S7290C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C3[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7290C10;
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C15;
extern VTBL_ENTRY _ZTI8S7290C15[];
extern  VTBL_ENTRY _ZTV8S7290C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C15[];
static Base_Class bases_S7290C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7290C3,    ABISELECT(40,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7290C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(36,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7290C15,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7290C14[];
extern void _ZN8S7290C14D1Ev();
extern void _ZN8S7290C14D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S7290C14D1Ev,_ZTv0_n24_N8S7290C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S7290C14D1Ev,_ZThn8_N8S7290C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7290C14D0Ev,_ZTv0_n24_N8S7290C14D0Ev)();
extern void ABISELECT(_ZThn16_N8S7290C14D0Ev,_ZThn8_N8S7290C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7290C14[] = {
  0,
  0,
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C14[0]),
  (VTBL_ENTRY)&_ZN8S7290C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C14D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7290C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C14D1Ev,_ZTv0_n24_N8S7290C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C14D0Ev,_ZTv0_n24_N8S7290C14D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7290C14[0]),
};
extern VTBL_ENTRY _ZTV8S7290C14[];
extern void _ZN8S7290C15D1Ev();
extern void _ZN8S7290C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7290C15__8S7290C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C15[0]),
  (VTBL_ENTRY)&_ZN8S7290C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7290C108S7290C15__8S7290C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C108S7290C15__8S7290C14[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C15__8S7290C14[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7290C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C14[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C3[0]),
};
static  VTT_ENTRY vtt_S7290C14[] = {
  {&(_ZTV8S7290C14[6]),  6,19},
  {&(_ZTV8S7290C14[14]),  14,19},
  {&(_ZTV8S7290C14[19]),  19,19},
  {&(_tg__ZTV8S7290C15__8S7290C14[5]),  5,7},
  {&(_tg__ZTV8S7290C108S7290C15__8S7290C14[5]),  5,5},
  {&(_tg__ZTV7S7290C3__8S7290C108S7290C15__8S7290C14[3]),  3,3},
  {&(_tg__ZTV7S7290C3__8S7290C15__8S7290C14[3]),  3,3},
  {&(_tg__ZTV7S7290C3__8S7290C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7290C14[];
extern  VTBL_ENTRY _ZTV8S7290C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C14[];
static VTBL_ENTRY alt_thunk_names243[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C14D0Ev,_ZTv0_n24_N8S7290C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7290C14D0Ev,_ZThn8_N8S7290C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C14D1Ev,_ZTv0_n24_N8S7290C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7290C14D1Ev,_ZThn8_N8S7290C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7290C14 = {  "S7290C14", // class name
  bases_S7290C14, 9,
  &(vtc_S7290C14[0]), // expected_vtbl_contents
  &(vtt_S7290C14[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S7290C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7290C14),19, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7290C14),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names243,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7290C12  : virtual S4228C23 , virtual S7290C14 , virtual S7290C6 , virtual S7290C11 {
  virtual  ~S7290C12(); // _ZN8S7290C12D2Ev
  S7290C12(); // tgen
};
//SIG(-1 S7290C12) C1{ VBC2{ m} VBC3{ VBC4{ BC5{ m Fi} VBC6{ BC7{ m} VBC8{ m} FC7} BC9{ BC8 VBC7 VBC6 Fp} BC8 vd Fc} vd Fi} VBC10{ VBC7 BC8} VBC11{ BC9 vd FL[10]} vd}


 S7290C12 ::~S7290C12(){ note_dtor("S7290C12", this);}
S7290C12 ::S7290C12(){ note_ctor("S7290C12", this);} // tgen

static void Test_S7290C12()
{
  extern Class_Descriptor cd_S7290C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,32)];
    init_test(&cd_S7290C12, buf);
    S7290C12 *dp, &lv = *(dp=new (buf) S7290C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S7290C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C12)");
    check_base_class_offset(lv, (S4228C23*), 0, "S7290C12");
    check_base_class_offset(lv, (S3423C8_nt*)(S7290C15*), ABISELECT(40,20), "S7290C12");
    check_base_class_offset(lv, (S4228C37*)(S7290C3*), ABISELECT(48,28), "S7290C12");
    check_base_class_offset(lv, (S4228C27*)(S7290C3*), ABISELECT(57,33), "S7290C12");
    check_base_class_offset(lv, (S7290C3*)(S7290C15*), ABISELECT(48,28), "S7290C12");
    check_base_class_offset(lv, (S7290C3*)(S7290C10*)(S7290C15*), ABISELECT(48,28), "S7290C12");
    check_base_class_offset(lv, (S7290C3*)(S7290C10*)(S7290C11*), ABISELECT(48,28), "S7290C12");
    /*is_ambiguous_... S7290C10::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C10*)(S7290C15*), ABISELECT(24,12), "S7290C12");
    /*is_ambiguous_... S7290C10::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C10*)(S7290C15*), 0, "S7290C12");
    check_base_class_offset(lv, (S4228C37*)(S7290C6*), 0, "S7290C12");
    /*is_ambiguous_... S7290C10::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C10*)(S7290C11*), 0, "S7290C12");
    check_base_class_offset(lv, (S7290C10*)(S7290C15*), ABISELECT(24,12), "S7290C12");
    /*is_ambiguous_... S7290C15::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C15*), ABISELECT(44,24), "S7290C12");
    check_base_class_offset(lv, (S7290C15*)(S7290C14*), ABISELECT(24,12), "S7290C12");
    check_base_class_offset(lv, (S7290C14*), ABISELECT(8,4), "S7290C12");
    check_base_class_offset(lv, (S4228C27*)(S7290C6*), 0, "S7290C12");
    check_base_class_offset(lv, (S7290C6*), 0, "S7290C12");
    /*is_ambiguous_... S7290C10::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C10*)(S7290C11*), ABISELECT(64,36), "S7290C12");
    check_base_class_offset(lv, (S7290C10*)(S7290C11*), ABISELECT(64,36), "S7290C12");
    check_base_class_offset(lv, (S7290C11*), ABISELECT(64,36), "S7290C12");
    test_class_info(&lv, &cd_S7290C12);
    dp->~S7290C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C12(Test_S7290C12, "S7290C12", ABISELECT(160,124));

#else // __cplusplus

extern void _ZN8S7290C12C1Ev();
extern void _ZN8S7290C12D2Ev();
Name_Map name_map_S7290C12[] = {
  NSPAIR(_ZN8S7290C12C1Ev),
  NSPAIR(_ZN8S7290C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C3;
extern VTBL_ENTRY _ZTI7S7290C3[];
extern  VTBL_ENTRY _ZTV7S7290C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C3[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7290C10;
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C15;
extern VTBL_ENTRY _ZTI8S7290C15[];
extern  VTBL_ENTRY _ZTV8S7290C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C15[];
extern Class_Descriptor cd_S7290C14;
extern VTBL_ENTRY _ZTI8S7290C14[];
extern  VTBL_ENTRY _ZTV8S7290C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C14[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C6;
extern VTBL_ENTRY _ZTI7S7290C6[];
extern  VTBL_ENTRY _ZTV7S7290C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C6[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C10;
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
extern Class_Descriptor cd_S7290C11;
extern VTBL_ENTRY _ZTI8S7290C11[];
extern  VTBL_ENTRY _ZTV8S7290C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C11[];
static Base_Class bases_S7290C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3423C8_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7290C3,    ABISELECT(48,28), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7290C10,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(44,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7290C15,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7290C14,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7290C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7290C10,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7290C11,    ABISELECT(64,36), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7290C12[];
extern void _ZN8S7290C12D1Ev();
extern void _ZN8S7290C12D0Ev();
extern void ABISELECT(_ZTv0_n56_N8S7290C12D1Ev,_ZTv0_n28_N8S7290C12D1Ev)();
extern void ABISELECT(_ZThn8_N8S7290C12D1Ev,_ZThn4_N8S7290C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7290C12D0Ev,_ZTv0_n28_N8S7290C12D0Ev)();
extern void ABISELECT(_ZThn8_N8S7290C12D0Ev,_ZThn4_N8S7290C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev)();
extern void ABISELECT(_ZThn24_N8S7290C12D1Ev,_ZThn12_N8S7290C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev)();
extern void ABISELECT(_ZThn24_N8S7290C12D0Ev,_ZThn12_N8S7290C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev)();
extern void ABISELECT(_ZThn64_N8S7290C12D1Ev,_ZThn36_N8S7290C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev)();
extern void ABISELECT(_ZThn64_N8S7290C12D0Ev,_ZThn36_N8S7290C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7290C12[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(57,33),
  ABISELECT(48,28),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
  (VTBL_ENTRY)&_ZN8S7290C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C12D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7290C12D1Ev,_ZTv0_n28_N8S7290C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7290C12D0Ev,_ZTv0_n28_N8S7290C12D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
  ABISELECT(-64,-36),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S7290C12[];
extern void _ZN8S7290C14D1Ev();
extern void _ZN8S7290C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7290C14__8S7290C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C14[0]),
  (VTBL_ENTRY)&_ZN8S7290C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C14D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7290C14D1Ev,_ZTv0_n24_N8S7290C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S7290C14D1Ev,_ZThn8_N8S7290C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7290C14D0Ev,_ZTv0_n24_N8S7290C14D0Ev)();
extern void ABISELECT(_ZThn16_N8S7290C14D0Ev,_ZThn8_N8S7290C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7290C15__8S7290C14__8S7290C12[] = {
  ABISELECT(-16,-8),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7290C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C14D1Ev,_ZTv0_n24_N8S7290C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C14D0Ev,_ZTv0_n24_N8S7290C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C14__8S7290C12[] = {
  ABISELECT(9,5),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7290C14[0]),
};
extern void _ZN8S7290C15D1Ev();
extern void _ZN8S7290C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7290C15__8S7290C12[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C15[0]),
  (VTBL_ENTRY)&_ZN8S7290C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7290C108S7290C15__8S7290C12[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C108S7290C15__8S7290C12[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C15__8S7290C12[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7290C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C12[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C6__8S7290C12[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C6[0]),
};
extern void _ZN8S7290C11D1Ev();
extern void _ZN8S7290C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7290C11__8S7290C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C11[0]),
  (VTBL_ENTRY)&_ZN8S7290C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7290C108S7290C11__A1__8S7290C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C108S7290C11__A1__8S7290C12[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C11__8S7290C12[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7290C11[0]),
};
static  VTT_ENTRY vtt_S7290C12[] = {
  {&(_ZTV8S7290C12[10]),  10,40},
  {&(_ZTV8S7290C12[19]),  19,40},
  {&(_ZTV8S7290C12[27]),  27,40},
  {&(_ZTV8S7290C12[32]),  32,40},
  {&(_ZTV8S7290C12[10]),  10,40},
  {&(_ZTV8S7290C12[38]),  38,40},
  {&(_tg__ZTV8S7290C14__8S7290C12[6]),  6,8},
  {&(_tg__ZTV8S7290C15__8S7290C14__8S7290C12[6]),  6,8},
  {&(_tg__ZTV7S7290C3__8S7290C14__8S7290C12[3]),  3,3},
  {&(_tg__ZTV8S7290C15__8S7290C12[5]),  5,7},
  {&(_tg__ZTV8S7290C108S7290C15__8S7290C12[5]),  5,5},
  {&(_tg__ZTV7S7290C3__8S7290C108S7290C15__8S7290C12[3]),  3,3},
  {&(_tg__ZTV7S7290C3__8S7290C15__8S7290C12[3]),  3,3},
  {&(_tg__ZTV7S7290C3__8S7290C12[3]),  3,3},
  {&(_tg__ZTV7S7290C6__8S7290C12[3]),  3,3},
  {&(_tg__ZTV8S7290C11__8S7290C12[5]),  5,7},
  {&(_tg__ZTV8S7290C108S7290C11__A1__8S7290C12[5]),  5,5},
  {&(_tg__ZTV7S7290C3__8S7290C108S7290C11__A1__8S7290C12[3]),  3,3},
  {&(_tg__ZTV7S7290C3__8S7290C11__8S7290C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7290C12[];
extern  VTBL_ENTRY _ZTV8S7290C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C12[];
static VTBL_ENTRY alt_thunk_names244[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C14D0Ev,_ZTv0_n24_N8S7290C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7290C14D0Ev,_ZThn8_N8S7290C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C14D1Ev,_ZTv0_n24_N8S7290C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7290C14D1Ev,_ZThn8_N8S7290C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7290C12D0Ev,_ZThn36_N8S7290C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7290C12D0Ev,_ZThn12_N8S7290C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7290C12D1Ev,_ZThn36_N8S7290C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7290C12D1Ev,_ZThn12_N8S7290C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7290C12D0Ev,_ZTv0_n28_N8S7290C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7290C12D0Ev,_ZThn4_N8S7290C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7290C12D1Ev,_ZTv0_n28_N8S7290C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7290C12D1Ev,_ZThn4_N8S7290C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7290C12 = {  "S7290C12", // class name
  bases_S7290C12, 16,
  &(vtc_S7290C12[0]), // expected_vtbl_contents
  &(vtt_S7290C12[0]), // expected_vtt_contents
  ABISELECT(160,124), // object size
  NSPAIRA(_ZTI8S7290C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7290C12),40, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7290C12),19, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names244,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7290C1  : S7290C2 , S7290C7 , virtual S7290C9 , virtual S7290C11 , S7290C12 {
  ::S19763C18_nt s7290c1f0;
  virtual  ~S7290C1(); // _ZN7S7290C1D2Ev
  S7290C1(); // tgen
};
//SIG(1 S7290C1) C1{ BC2{ VBC3{ BC4{ m} VBC5{ m} FC4} BC6{ VBC4 BC5} Fp} BC7{ BC6 BC8{ m Fi}} VBC9{ VBC10{ BC5 VBC4 VBC3 Fp} Fc:8} VBC11{ BC10 vd FL[10]} BC12{ VBC13{ m} VBC14{ VBC15{ BC8 VBC3 BC10 BC5 vd Fc} vd Fi} VBC6 VBC11 vd} vd FC16{}}


 S7290C1 ::~S7290C1(){ note_dtor("S7290C1", this);}
S7290C1 ::S7290C1(){ note_ctor("S7290C1", this);} // tgen

static void Test_S7290C1()
{
  extern Class_Descriptor cd_S7290C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,41)];
    init_test(&cd_S7290C1, buf);
    S7290C1 *dp, &lv = *(dp=new (buf) S7290C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,160), "sizeof(S7290C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C1)");
    check_base_class_offset(lv, (S4228C37*)(S7290C3*), ABISELECT(48,24), "S7290C1");
    check_base_class_offset(lv, (S4228C27*)(S7290C3*), ABISELECT(57,29), "S7290C1");
    check_base_class_offset(lv, (S7290C3*)(S7290C2*), ABISELECT(48,24), "S7290C1");
    /*is_ambiguous_... S7290C1::S7290C10 */ AMB_check_base_class_offset(lv, (S7290C3*)(S7290C10*), ABISELECT(48,24), "S7290C1");
    check_base_class_offset(lv, (S7290C3*)(S7290C10*)(S7290C11*), ABISELECT(48,24), "S7290C1");
    check_base_class_offset(lv, (S7290C3*)(S7290C15*), ABISELECT(48,24), "S7290C1");
    check_base_class_offset(lv, (S7290C3*)(S7290C10*)(S7290C15*), ABISELECT(48,24), "S7290C1");
    check_base_class_offset(lv, (S4228C37*)(S7290C6*)(S7290C2*), 0, "S7290C1");
    check_base_class_offset(lv, (S4228C37*)(S7290C6*)(S7290C7*), 0, "S7290C1");
    /*is_ambiguous_... S7290C1::S7290C10 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C10*), 0, "S7290C1");
    /*is_ambiguous_... S7290C10::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C10*)(S7290C11*), 0, "S7290C1");
    /*is_ambiguous_... S7290C10::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C10*)(S7290C15*), 0, "S7290C1");
    /*is_ambiguous_... S7290C1::S7290C6 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C6*), 0, "S7290C1");
    check_base_class_offset(lv, (S4228C27*)(S7290C6*)(S7290C2*), 0, "S7290C1");
    check_base_class_offset(lv, (S7290C6*)(S7290C2*), 0, "S7290C1");
    check_base_class_offset(lv, (S7290C2*), 0, "S7290C1");
    check_base_class_offset(lv, (S4228C27*)(S7290C6*)(S7290C7*), ABISELECT(16,8), "S7290C1");
    check_base_class_offset(lv, (S7290C6*)(S7290C7*), ABISELECT(16,8), "S7290C1");
    check_base_class_offset(lv, (S3423C8_nt*)(S7290C7*), ABISELECT(24,12), "S7290C1");
    check_base_class_offset(lv, (S7290C7*), ABISELECT(16,8), "S7290C1");
    /*is_ambiguous_... S7290C1::S7290C10 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C10*), ABISELECT(80,40), "S7290C1");
    check_base_class_offset(lv, (S7290C10*)(S7290C9*), ABISELECT(80,40), "S7290C1");
    check_base_class_offset(lv, (S7290C9*), ABISELECT(64,32), "S7290C1");
    /*is_ambiguous_... S7290C10::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C10*)(S7290C11*), ABISELECT(96,48), "S7290C1");
    check_base_class_offset(lv, (S7290C10*)(S7290C11*), ABISELECT(96,48), "S7290C1");
    check_base_class_offset(lv, (S7290C11*), ABISELECT(96,48), "S7290C1");
    check_base_class_offset(lv, (S7290C11*)(S7290C12*), ABISELECT(96,48), "S7290C1");
    check_base_class_offset(lv, (S4228C23*)(S7290C12*), 0, "S7290C1");
    check_base_class_offset(lv, (S3423C8_nt*)(S7290C15*), ABISELECT(224,152), "S7290C1");
    /*is_ambiguous_... S7290C10::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C10*)(S7290C15*), ABISELECT(208,144), "S7290C1");
    check_base_class_offset(lv, (S7290C10*)(S7290C15*), ABISELECT(208,144), "S7290C1");
    /*is_ambiguous_... S7290C15::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C15*), ABISELECT(228,156), "S7290C1");
    check_base_class_offset(lv, (S7290C15*)(S7290C14*), ABISELECT(208,144), "S7290C1");
    check_base_class_offset(lv, (S7290C14*)(S7290C12*), ABISELECT(192,136), "S7290C1");
    /*is_ambiguous_... S7290C1::S7290C6 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C6*), ABISELECT(32,16), "S7290C1");
    check_base_class_offset(lv, (S7290C6*)(S7290C12*), ABISELECT(32,16), "S7290C1");
    check_base_class_offset(lv, (S7290C12*), ABISELECT(32,16), "S7290C1");
    check_field_offset(lv, s7290c1f0, ABISELECT(40,20), "S7290C1.s7290c1f0");
    test_class_info(&lv, &cd_S7290C1);
    dp->~S7290C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C1(Test_S7290C1, "S7290C1", ABISELECT(232,160));

#else // __cplusplus

extern void _ZN7S7290C1C1Ev();
extern void _ZN7S7290C1D2Ev();
Name_Map name_map_S7290C1[] = {
  NSPAIR(_ZN7S7290C1C1Ev),
  NSPAIR(_ZN7S7290C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C3;
extern VTBL_ENTRY _ZTI7S7290C3[];
extern  VTBL_ENTRY _ZTV7S7290C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C3[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C6;
extern VTBL_ENTRY _ZTI7S7290C6[];
extern  VTBL_ENTRY _ZTV7S7290C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C6[];
extern Class_Descriptor cd_S7290C2;
extern VTBL_ENTRY _ZTI7S7290C2[];
extern  VTBL_ENTRY _ZTV7S7290C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C2[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C6;
extern VTBL_ENTRY _ZTI7S7290C6[];
extern  VTBL_ENTRY _ZTV7S7290C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C6[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S7290C7;
extern VTBL_ENTRY _ZTI7S7290C7[];
extern  VTBL_ENTRY _ZTV7S7290C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C7[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C10;
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
extern Class_Descriptor cd_S7290C9;
extern VTBL_ENTRY _ZTI7S7290C9[];
extern  VTBL_ENTRY _ZTV7S7290C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C10;
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
extern Class_Descriptor cd_S7290C11;
extern VTBL_ENTRY _ZTI8S7290C11[];
extern  VTBL_ENTRY _ZTV8S7290C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C11[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C10;
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C15;
extern VTBL_ENTRY _ZTI8S7290C15[];
extern  VTBL_ENTRY _ZTV8S7290C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C15[];
extern Class_Descriptor cd_S7290C14;
extern VTBL_ENTRY _ZTI8S7290C14[];
extern  VTBL_ENTRY _ZTV8S7290C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C14[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C6;
extern VTBL_ENTRY _ZTI7S7290C6[];
extern  VTBL_ENTRY _ZTV7S7290C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C6[];
extern Class_Descriptor cd_S7290C12;
extern VTBL_ENTRY _ZTI8S7290C12[];
extern  VTBL_ENTRY _ZTV8S7290C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C12[];
static Base_Class bases_S7290C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(57,29), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7290C3,    ABISELECT(48,24), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7290C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7290C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7290C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7290C7,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7290C10,    ABISELECT(80,40), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7290C9,    ABISELECT(64,32), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7290C10,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7290C11,    ABISELECT(96,48), //bcp->offset
    43, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S3423C8_nt,    ABISELECT(224,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7290C10,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(228,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7290C15,    ABISELECT(208,144), //bcp->offset
    60, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7290C14,    ABISELECT(192,136), //bcp->offset
    51, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7290C6,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7290C12,    ABISELECT(32,16), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7290C1[];
extern void _ZN7S7290C1D1Ev();
extern void _ZN7S7290C1D0Ev();
extern void ABISELECT(_ZThn32_N7S7290C1D1Ev,_ZThn16_N7S7290C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7290C1D0Ev,_ZThn16_N7S7290C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7290C1D1Ev,_ZTv0_n24_N7S7290C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S7290C1D1Ev,_ZThn48_N7S7290C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7290C1D0Ev,_ZTv0_n24_N7S7290C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S7290C1D0Ev,_ZThn48_N7S7290C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7290C1D1Ev,_ZTv0_n28_N7S7290C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S7290C1D1Ev,_ZThn136_N7S7290C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7290C1D0Ev,_ZTv0_n28_N7S7290C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S7290C1D0Ev,_ZThn136_N7S7290C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7290C1D1Ev,_ZTv0_n24_N7S7290C1D1Ev)();
extern void ABISELECT(_ZThn208_N7S7290C1D1Ev,_ZThn144_N7S7290C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7290C1D0Ev,_ZTv0_n24_N7S7290C1D0Ev)();
extern void ABISELECT(_ZThn208_N7S7290C1D0Ev,_ZThn144_N7S7290C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7290C1[] = {
  ABISELECT(32,16),
  ABISELECT(208,144),
  ABISELECT(192,136),
  0,
  ABISELECT(96,48),
  ABISELECT(80,40),
  ABISELECT(64,32),
  ABISELECT(57,29),
  ABISELECT(48,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C1[0]),
  (VTBL_ENTRY)&_ZN7S7290C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7290C1D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7290C1[0]),
  ABISELECT(64,32),
  0,
  ABISELECT(25,13),
  ABISELECT(16,8),
  ABISELECT(176,128),
  ABISELECT(160,120),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7290C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7290C1D1Ev,_ZThn16_N7S7290C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7290C1D0Ev,_ZThn16_N7S7290C1D0Ev),
  ABISELECT(9,5),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7290C1[0]),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7290C1[0]),
  ABISELECT(-23,-11),
  ABISELECT(-32,-16),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7290C1[0]),
  ABISELECT(-96,-48),
  ABISELECT(-39,-19),
  ABISELECT(-48,-24),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S7290C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7290C1D1Ev,_ZTv0_n24_N7S7290C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7290C1D0Ev,_ZTv0_n24_N7S7290C1D0Ev),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-135,-107),
  ABISELECT(-144,-112),
  ABISELECT(16,8),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI7S7290C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7290C1D1Ev,_ZTv0_n28_N7S7290C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7290C1D0Ev,_ZTv0_n28_N7S7290C1D0Ev),
  ABISELECT(-208,-144),
  ABISELECT(-151,-115),
  ABISELECT(-160,-120),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI7S7290C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7290C1D1Ev,_ZTv0_n24_N7S7290C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7290C1D0Ev,_ZTv0_n24_N7S7290C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7290C1[];
static  VTBL_ENTRY _tg__ZTV7S7290C2__7S7290C1[] = {
  ABISELECT(57,29),
  ABISELECT(48,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C67S7290C2__7S7290C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__7S7290C2__7S7290C1[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7290C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C7__7S7290C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C67S7290C7__A1__7S7290C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C6[0]),
};
extern void _ZN8S7290C12D1Ev();
extern void _ZN8S7290C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7290C12__7S7290C1[] = {
  ABISELECT(64,32),
  0,
  ABISELECT(25,13),
  ABISELECT(16,8),
  ABISELECT(176,128),
  ABISELECT(160,120),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
  (VTBL_ENTRY)&_ZN8S7290C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C12D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S7290C12D1Ev,_ZTv0_n28_N8S7290C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S7290C12D1Ev,_ZThn120_N8S7290C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7290C12D0Ev,_ZTv0_n28_N8S7290C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S7290C12D0Ev,_ZThn120_N8S7290C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7290C14__8S7290C12__7S7290C1[] = {
  ABISELECT(-160,-120),
  ABISELECT(-192,-136),
  ABISELECT(-135,-107),
  ABISELECT(-144,-112),
  ABISELECT(16,8),
  ABISELECT(-160,-120),
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7290C12D1Ev,_ZTv0_n28_N8S7290C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7290C12D0Ev,_ZTv0_n28_N8S7290C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev)();
extern void ABISELECT(_ZThn176_N8S7290C12D1Ev,_ZThn128_N8S7290C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev)();
extern void ABISELECT(_ZThn176_N8S7290C12D0Ev,_ZThn128_N8S7290C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7290C15__8S7290C12__7S7290C1[] = {
  ABISELECT(-176,-128),
  ABISELECT(-151,-115),
  ABISELECT(-160,-120),
  ABISELECT(-208,-144),
  ABISELECT(-176,-128),
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C12__7S7290C1[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
};
extern void ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev)();
extern void ABISELECT(_ZThn64_N8S7290C12D1Ev,_ZThn32_N8S7290C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev)();
extern void ABISELECT(_ZThn64_N8S7290C12D0Ev,_ZThn32_N8S7290C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7290C11__8S7290C12__7S7290C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-39,-19),
  ABISELECT(-48,-24),
  ABISELECT(-96,-48),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__7S7290C1[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C9__7S7290C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7290C10__7S7290C9__7S7290C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-32,-16),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7290C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__7S7290C9__7S7290C1[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7290C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7290C10__7S7290C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-32,-16),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C10__7S7290C1[] = {
  ABISELECT(9,5),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
extern void _ZN8S7290C11D1Ev();
extern void _ZN8S7290C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7290C11__7S7290C1[] = {
  ABISELECT(-39,-19),
  ABISELECT(-48,-24),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C11[0]),
  (VTBL_ENTRY)&_ZN8S7290C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7290C108S7290C11__A1__7S7290C1[] = {
  ABISELECT(-39,-19),
  ABISELECT(-48,-24),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C108S7290C11__A1__7S7290C1[] = {
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C11__7S7290C1[] = {
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7290C11[0]),
};
extern void _ZN8S7290C14D1Ev();
extern void _ZN8S7290C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7290C14__7S7290C1[] = {
  ABISELECT(-192,-136),
  ABISELECT(-135,-107),
  ABISELECT(-144,-112),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C14[0]),
  (VTBL_ENTRY)&_ZN8S7290C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C14D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7290C14D1Ev,_ZTv0_n24_N8S7290C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S7290C14D1Ev,_ZThn8_N8S7290C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7290C14D0Ev,_ZTv0_n24_N8S7290C14D0Ev)();
extern void ABISELECT(_ZThn16_N8S7290C14D0Ev,_ZThn8_N8S7290C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7290C15__8S7290C14__7S7290C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-151,-115),
  ABISELECT(-160,-120),
  ABISELECT(-208,-144),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7290C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C14D1Ev,_ZTv0_n24_N8S7290C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C14D0Ev,_ZTv0_n24_N8S7290C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C14__7S7290C1[] = {
  ABISELECT(9,5),
  ABISELECT(144,112),
  (VTBL_ENTRY)&(_ZTI8S7290C14[0]),
};
extern void _ZN8S7290C15D1Ev();
extern void _ZN8S7290C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7290C15__7S7290C1[] = {
  ABISELECT(-151,-115),
  ABISELECT(-160,-120),
  ABISELECT(-208,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C15[0]),
  (VTBL_ENTRY)&_ZN8S7290C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7290C108S7290C15__A2__7S7290C1[] = {
  ABISELECT(-151,-115),
  ABISELECT(-160,-120),
  ABISELECT(-208,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C108S7290C15__A2__7S7290C1[] = {
  ABISELECT(9,5),
  ABISELECT(160,120),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C15__7S7290C1[] = {
  ABISELECT(9,5),
  ABISELECT(160,120),
  (VTBL_ENTRY)&(_ZTI8S7290C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C6__A2__7S7290C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C6[0]),
};
static  VTT_ENTRY vtt_S7290C1[] = {
  {&(_ZTV7S7290C1[12]),  12,68},
  {&(_tg__ZTV7S7290C2__7S7290C1[5]),  5,5},
  {&(_tg__ZTV7S7290C67S7290C2__7S7290C1[3]),  3,3},
  {&(_tg__ZTV7S7290C3__7S7290C2__7S7290C1[3]),  3,3},
  {&(_tg__ZTV7S7290C7__7S7290C1[3]),  3,3},
  {&(_tg__ZTV7S7290C67S7290C7__A1__7S7290C1[3]),  3,3},
  {&(_tg__ZTV8S7290C12__7S7290C1[10]),  10,12},
  {&(_tg__ZTV8S7290C14__8S7290C12__7S7290C1[7]),  7,9},
  {&(_tg__ZTV8S7290C15__8S7290C12__7S7290C1[6]),  6,8},
  {&(_tg__ZTV7S7290C3__8S7290C12__7S7290C1[3]),  3,3},
  {&(_tg__ZTV8S7290C12__7S7290C1[10]),  10,12},
  {&(_tg__ZTV8S7290C11__8S7290C12__7S7290C1[6]),  6,8},
  {&(_ZTV7S7290C1[32]),  32,68},
  {&(_ZTV7S7290C1[17]),  17,68},
  {&(_ZTV7S7290C1[38]),  38,68},
  {&(_ZTV7S7290C1[43]),  43,68},
  {&(_ZTV7S7290C1[49]),  49,68},
  {&(_ZTV7S7290C1[27]),  27,68},
  {&(_ZTV7S7290C1[58]),  58,68},
  {&(_ZTV7S7290C1[66]),  66,68},
  {&(_ZTV7S7290C1[27]),  27,68},
  {&(_tg__ZTV7S7290C3__7S7290C1[3]),  3,3},
  {&(_tg__ZTV7S7290C9__7S7290C1[6]),  6,6},
  {&(_tg__ZTV8S7290C10__7S7290C9__7S7290C1[5]),  5,5},
  {&(_tg__ZTV7S7290C3__7S7290C9__7S7290C1[3]),  3,3},
  {&(_tg__ZTV8S7290C10__7S7290C1[5]),  5,5},
  {&(_tg__ZTV7S7290C3__8S7290C10__7S7290C1[3]),  3,3},
  {&(_tg__ZTV8S7290C11__7S7290C1[5]),  5,7},
  {&(_tg__ZTV8S7290C108S7290C11__A1__7S7290C1[5]),  5,5},
  {&(_tg__ZTV7S7290C3__8S7290C108S7290C11__A1__7S7290C1[3]),  3,3},
  {&(_tg__ZTV7S7290C3__8S7290C11__7S7290C1[3]),  3,3},
  {&(_tg__ZTV8S7290C14__7S7290C1[6]),  6,8},
  {&(_tg__ZTV8S7290C15__8S7290C14__7S7290C1[6]),  6,8},
  {&(_tg__ZTV7S7290C3__8S7290C14__7S7290C1[3]),  3,3},
  {&(_tg__ZTV8S7290C15__7S7290C1[5]),  5,7},
  {&(_tg__ZTV8S7290C108S7290C15__A2__7S7290C1[5]),  5,5},
  {&(_tg__ZTV7S7290C3__8S7290C108S7290C15__A2__7S7290C1[3]),  3,3},
  {&(_tg__ZTV7S7290C3__8S7290C15__7S7290C1[3]),  3,3},
  {&(_tg__ZTV7S7290C6__A2__7S7290C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7290C1[];
extern  VTBL_ENTRY _ZTV7S7290C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C1[];
static VTBL_ENTRY alt_thunk_names245[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C14D0Ev,_ZTv0_n24_N8S7290C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7290C14D0Ev,_ZThn8_N8S7290C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C14D1Ev,_ZTv0_n24_N8S7290C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7290C14D1Ev,_ZThn8_N8S7290C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7290C12D0Ev,_ZThn32_N8S7290C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7290C12D0Ev,_ZThn128_N8S7290C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7290C12D1Ev,_ZThn32_N8S7290C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7290C12D1Ev,_ZThn128_N8S7290C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7290C12D0Ev,_ZTv0_n28_N8S7290C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7290C12D0Ev,_ZThn120_N8S7290C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7290C12D1Ev,_ZTv0_n28_N8S7290C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7290C12D1Ev,_ZThn120_N8S7290C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7290C1D0Ev,_ZTv0_n28_N7S7290C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7290C1D0Ev,_ZThn136_N7S7290C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7290C1D1Ev,_ZTv0_n28_N7S7290C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7290C1D1Ev,_ZThn136_N7S7290C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7290C1D0Ev,_ZTv0_n24_N7S7290C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7290C1D0Ev,_ZThn144_N7S7290C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7290C1D0Ev,_ZThn48_N7S7290C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7290C1D1Ev,_ZTv0_n24_N7S7290C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7290C1D1Ev,_ZThn144_N7S7290C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7290C1D1Ev,_ZThn48_N7S7290C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7290C1 = {  "S7290C1", // class name
  bases_S7290C1, 27,
  &(vtc_S7290C1[0]), // expected_vtbl_contents
  &(vtt_S7290C1[0]), // expected_vtt_contents
  ABISELECT(232,160), // object size
  NSPAIRA(_ZTI7S7290C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7290C1),68, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7290C1),39, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names245,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2840C9  : virtual S20760C9 {
  virtual  ~S2840C9(); // _ZN7S2840C9D2Ev
  S2840C9(); // tgen
};
//SIG(-1 S2840C9) C1{ VBC2{ vd m FL} vd}


 S2840C9 ::~S2840C9(){ note_dtor("S2840C9", this);}
S2840C9 ::S2840C9(){ note_ctor("S2840C9", this);} // tgen

static void Test_S2840C9()
{
  extern Class_Descriptor cd_S2840C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S2840C9, buf);
    S2840C9 *dp, &lv = *(dp=new (buf) S2840C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S2840C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2840C9)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S2840C9");
    test_class_info(&lv, &cd_S2840C9);
    dp->~S2840C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2840C9(Test_S2840C9, "S2840C9", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S2840C9C1Ev();
extern void _ZN7S2840C9D2Ev();
Name_Map name_map_S2840C9[] = {
  NSPAIR(_ZN7S2840C9C1Ev),
  NSPAIR(_ZN7S2840C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S2840C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2840C9[];
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZThn8_N7S2840C9D1Ev,_ZThn4_N7S2840C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
extern void ABISELECT(_ZThn8_N7S2840C9D0Ev,_ZThn4_N7S2840C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2840C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S2840C9[];
static  VTT_ENTRY vtt_S2840C9[] = {
  {&(_ZTV7S2840C9[3]),  3,10},
  {&(_ZTV7S2840C9[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
static VTBL_ENTRY alt_thunk_names246[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2840C9D0Ev,_ZThn4_N7S2840C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2840C9D1Ev,_ZThn4_N7S2840C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2840C9 = {  "S2840C9", // class name
  bases_S2840C9, 1,
  &(vtc_S2840C9[0]), // expected_vtbl_contents
  &(vtt_S2840C9[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S2840C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2840C9),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2840C9),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names246,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2840C7  : S20760C9 , virtual S20760C13 , S2840C9 {
  ::S20760C13 s2840c7f0;
  ~S2840C7(); // tgen
  S2840C7(); // tgen
};
//SIG(-1 S2840C7) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S2840C7 ::~S2840C7(){ note_dtor("S2840C7", this);} // tgen
S2840C7 ::S2840C7(){ note_ctor("S2840C7", this);} // tgen

static void Test_S2840C7()
{
  extern Class_Descriptor cd_S2840C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S2840C7, buf);
    S2840C7 *dp, &lv = *(dp=new (buf) S2840C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S2840C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2840C7)");
    /*is_ambiguous_... S2840C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S2840C7");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S2840C7");
    check_base_class_offset(lv, (S20760C9*)(S2840C9*), ABISELECT(88,72), "S2840C7");
    check_base_class_offset(lv, (S2840C9*), ABISELECT(16,12), "S2840C7");
    check_field_offset(lv, s2840c7f0, ABISELECT(24,16), "S2840C7.s2840c7f0");
    test_class_info(&lv, &cd_S2840C7);
    dp->~S2840C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2840C7(Test_S2840C7, "S2840C7", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN7S2840C7C1Ev();
extern void _ZN7S2840C7D1Ev();
Name_Map name_map_S2840C7[] = {
  NSPAIR(_ZN7S2840C7C1Ev),
  NSPAIR(_ZN7S2840C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
static Base_Class bases_S2840C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S2840C9,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2840C7[];
extern void _ZN7S2840C7D1Ev();
extern void _ZN7S2840C7D0Ev();
extern void ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn88_N7S2840C7D1Ev,_ZThn72_N7S2840C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZThn88_N7S2840C7D0Ev,_ZThn72_N7S2840C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2840C7[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&_ZN7S2840C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C7D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern VTBL_ENTRY _ZTV7S2840C7[];
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C9__7S2840C7[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZThn72_N7S2840C9D1Ev,_ZThn60_N7S2840C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
extern void ABISELECT(_ZThn72_N7S2840C9D0Ev,_ZThn60_N7S2840C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C9__7S2840C7[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
static  VTT_ENTRY vtt_S2840C7[] = {
  {&(_ZTV7S2840C7[4]),  4,21},
  {&(_tg__ZTV7S2840C9__7S2840C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C9__7S2840C7[3]),  3,5},
  {&(_ZTV7S2840C7[14]),  14,21},
  {&(_ZTV7S2840C7[9]),  9,21},
  {&(_ZTV7S2840C7[19]),  19,21},
};
extern VTBL_ENTRY _ZTI7S2840C7[];
extern  VTBL_ENTRY _ZTV7S2840C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C7[];
static VTBL_ENTRY alt_thunk_names247[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2840C9D0Ev,_ZThn60_N7S2840C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2840C9D1Ev,_ZThn60_N7S2840C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S2840C7D0Ev,_ZThn72_N7S2840C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S2840C7D1Ev,_ZThn72_N7S2840C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2840C7 = {  "S2840C7", // class name
  bases_S2840C7, 4,
  &(vtc_S2840C7[0]), // expected_vtbl_contents
  &(vtt_S2840C7[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI7S2840C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S2840C7),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2840C7),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names247,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2840C11  : virtual S20760C13 , virtual S2840C7 {
  long double s2840c11f0;
  ~S2840C11(); // tgen
  S2840C11(); // tgen
};
//SIG(-1 S2840C11) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S2840C11 ::~S2840C11(){ note_dtor("S2840C11", this);} // tgen
S2840C11 ::S2840C11(){ note_ctor("S2840C11", this);} // tgen

static void Test_S2840C11()
{
  extern Class_Descriptor cd_S2840C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S2840C11, buf);
    S2840C11 *dp, &lv = *(dp=new (buf) S2840C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S2840C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2840C11)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S2840C11");
    check_base_class_offset(lv, (S20760C13*)(S2840C7*), ABISELECT(32,16), "S2840C11");
    /*is_ambiguous_... S2840C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C7*), ABISELECT(64,44), "S2840C11");
    check_base_class_offset(lv, (S20760C9*)(S2840C9*)(S2840C7*), ABISELECT(120,88), "S2840C11");
    check_base_class_offset(lv, (S2840C9*)(S2840C7*), ABISELECT(80,56), "S2840C11");
    check_base_class_offset(lv, (S2840C7*), ABISELECT(64,44), "S2840C11");
    check_field_offset(lv, s2840c11f0, ABISELECT(16,4), "S2840C11.s2840c11f0");
    test_class_info(&lv, &cd_S2840C11);
    dp->~S2840C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2840C11(Test_S2840C11, "S2840C11", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN8S2840C11C1Ev();
extern void _ZN8S2840C11D1Ev();
Name_Map name_map_S2840C11[] = {
  NSPAIR(_ZN8S2840C11C1Ev),
  NSPAIR(_ZN8S2840C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C7;
extern VTBL_ENTRY _ZTI7S2840C7[];
extern  VTBL_ENTRY _ZTV7S2840C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C7[];
static Base_Class bases_S2840C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S2840C9,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2840C7,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2840C11[];
extern void _ZN8S2840C11D1Ev();
extern void _ZN8S2840C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn32_N8S2840C11D1Ev,_ZThn16_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn32_N8S2840C11D0Ev,_ZThn16_N8S2840C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn64_N8S2840C11D1Ev,_ZThn44_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn64_N8S2840C11D0Ev,_ZThn44_N8S2840C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn120_N8S2840C11D1Ev,_ZThn88_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn120_N8S2840C11D0Ev,_ZThn88_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2840C11[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&_ZN8S2840C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C11D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S2840C11[];
extern void _ZN7S2840C7D1Ev();
extern void _ZN7S2840C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C11[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&_ZN7S2840C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C7D0Ev,
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C11[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZThn40_N7S2840C9D1Ev,_ZThn32_N7S2840C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
extern void ABISELECT(_ZThn40_N7S2840C9D0Ev,_ZThn32_N7S2840C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C97S2840C7__8S2840C11[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C7__8S2840C11[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C9__7S2840C7__8S2840C11[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2840C7__8S2840C11[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
static  VTT_ENTRY vtt_S2840C11[] = {
  {&(_ZTV8S2840C11[5]),  5,29},
  {&(_ZTV8S2840C11[10]),  10,29},
  {&(_ZTV8S2840C11[17]),  17,29},
  {&(_ZTV8S2840C11[22]),  22,29},
  {&(_ZTV8S2840C11[27]),  27,29},
  {&(_tg__ZTV7S2840C7__8S2840C11[4]),  4,6},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C97S2840C7__8S2840C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2840C7__8S2840C11[3]),  3,5},
  {&(_tg__ZTV7S2840C9__7S2840C7__8S2840C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2840C7__8S2840C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S2840C11[];
extern  VTBL_ENTRY _ZTV8S2840C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C11[];
static VTBL_ENTRY alt_thunk_names248[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2840C9D0Ev,_ZThn32_N7S2840C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2840C9D1Ev,_ZThn32_N7S2840C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C11D0Ev,_ZThn44_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C11D1Ev,_ZThn44_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S2840C11D0Ev,_ZThn88_N8S2840C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S2840C11D0Ev,_ZThn16_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S2840C11D1Ev,_ZThn88_N8S2840C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S2840C11D1Ev,_ZThn16_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2840C11 = {  "S2840C11", // class name
  bases_S2840C11, 5,
  &(vtc_S2840C11[0]), // expected_vtbl_contents
  &(vtt_S2840C11[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI8S2840C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S2840C11),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2840C11),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names248,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2840C10  : S4161C4_nt , S2840C11 , S20760C22_nt , virtual S2840C9 {
  virtual  ~S2840C10(); // _ZN8S2840C10D2Ev
  S2840C10(); // tgen
};
//SIG(-1 S2840C10) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S2840C10 ::~S2840C10(){ note_dtor("S2840C10", this);}
S2840C10 ::S2840C10(){ note_ctor("S2840C10", this);} // tgen

static void Test_S2840C10()
{
  extern Class_Descriptor cd_S2840C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S2840C10, buf);
    S2840C10 *dp, &lv = *(dp=new (buf) S2840C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S2840C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2840C10)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S2840C10");
    check_base_class_offset(lv, (S20760C13*)(S2840C11*), ABISELECT(48,24), "S2840C10");
    check_base_class_offset(lv, (S20760C13*)(S2840C7*), ABISELECT(48,24), "S2840C10");
    /*is_ambiguous_... S2840C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C7*), ABISELECT(80,52), "S2840C10");
    check_base_class_offset(lv, (S20760C9*)(S2840C9*)(S2840C7*), ABISELECT(136,96), "S2840C10");
    /*is_ambiguous_... S2840C10::S2840C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C9*), ABISELECT(136,96), "S2840C10");
    check_base_class_offset(lv, (S2840C9*)(S2840C7*), ABISELECT(96,64), "S2840C10");
    check_base_class_offset(lv, (S2840C7*)(S2840C11*), ABISELECT(80,52), "S2840C10");
    check_base_class_offset(lv, (S2840C11*), 0, "S2840C10");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S2840C10");
    /*is_ambiguous_... S2840C10::S2840C9 */ AMB_check_base_class_offset(lv, (S2840C9*), ABISELECT(152,108), "S2840C10");
    test_class_info(&lv, &cd_S2840C10);
    dp->~S2840C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2840C10(Test_S2840C10, "S2840C10", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN8S2840C10C1Ev();
extern void _ZN8S2840C10D2Ev();
Name_Map name_map_S2840C10[] = {
  NSPAIR(_ZN8S2840C10C1Ev),
  NSPAIR(_ZN8S2840C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C7;
extern VTBL_ENTRY _ZTI7S2840C7[];
extern  VTBL_ENTRY _ZTV7S2840C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C7[];
extern Class_Descriptor cd_S2840C11;
extern VTBL_ENTRY _ZTI8S2840C11[];
extern  VTBL_ENTRY _ZTV8S2840C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C11[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
static Base_Class bases_S2840C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S2840C9,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2840C7,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S2840C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2840C9,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2840C10[];
extern void _ZN8S2840C10D1Ev();
extern void _ZN8S2840C10D0Ev();
extern void ABISELECT(_ZThn40_N8S2840C10D1Ev,_ZThn20_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S2840C10D0Ev,_ZThn20_N8S2840C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S2840C10D1Ev,_ZThn24_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn48_N8S2840C10D0Ev,_ZThn24_N8S2840C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S2840C10D1Ev,_ZThn52_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S2840C10D0Ev,_ZThn52_N8S2840C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S2840C10D1Ev,_ZTvn12_n20_N8S2840C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2840C10D0Ev,_ZTvn12_n20_N8S2840C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S2840C10D1Ev,_ZThn96_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S2840C10D0Ev,_ZThn96_N8S2840C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn152_N8S2840C10D1Ev,_ZThn108_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn152_N8S2840C10D0Ev,_ZThn108_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2840C10[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&_ZN8S2840C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C10D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S2840C10D1Ev,_ZThn20_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S2840C10D0Ev,_ZThn20_N8S2840C10D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C10D1Ev,_ZTvn12_n20_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C10D0Ev,_ZTvn12_n20_N8S2840C10D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S2840C10[];
extern void _ZN8S2840C11D1Ev();
extern void _ZN8S2840C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2840C11__8S2840C10[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&_ZN8S2840C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn48_N8S2840C11D1Ev,_ZThn24_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn48_N8S2840C11D0Ev,_ZThn24_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2840C11__8S2840C10[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn80_N8S2840C11D1Ev,_ZThn52_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn80_N8S2840C11D0Ev,_ZThn52_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C11__8S2840C10[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C11__8S2840C10[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn136_N8S2840C11D1Ev,_ZThn96_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn136_N8S2840C11D0Ev,_ZThn96_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2840C11__8S2840C10[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
};
extern void _ZN7S2840C7D1Ev();
extern void _ZN7S2840C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C10[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&_ZN7S2840C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C7D0Ev,
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C10[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZThn40_N7S2840C9D1Ev,_ZThn32_N7S2840C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
extern void ABISELECT(_ZThn40_N7S2840C9D0Ev,_ZThn32_N7S2840C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C97S2840C7__8S2840C10[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C7__8S2840C10[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C9__7S2840C7__8S2840C10[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2840C7__8S2840C10[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__8S2840C10[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C9__A1__8S2840C10[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
static  VTT_ENTRY vtt_S2840C10[] = {
  {&(_ZTV8S2840C10[6]),  6,40},
  {&(_tg__ZTV8S2840C11__8S2840C10[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S2840C11__8S2840C10[3]),  3,5},
  {&(_tg__ZTV7S2840C7__8S2840C11__8S2840C10[5]),  5,7},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C11__8S2840C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2840C11__8S2840C10[3]),  3,5},
  {&(_ZTV8S2840C10[15]),  15,40},
  {&(_ZTV8S2840C10[22]),  22,40},
  {&(_ZTV8S2840C10[27]),  27,40},
  {&(_ZTV8S2840C10[32]),  32,40},
  {&(_ZTV8S2840C10[38]),  38,40},
  {&(_tg__ZTV7S2840C7__8S2840C10[4]),  4,6},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C97S2840C7__8S2840C10[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2840C7__8S2840C10[3]),  3,5},
  {&(_tg__ZTV7S2840C9__7S2840C7__8S2840C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2840C7__8S2840C10[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__8S2840C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C9__A1__8S2840C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S2840C10[];
extern  VTBL_ENTRY _ZTV8S2840C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C10[];
static VTBL_ENTRY alt_thunk_names249[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2840C9D0Ev,_ZThn32_N7S2840C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2840C9D1Ev,_ZThn32_N7S2840C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C11D0Ev,_ZThn52_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C11D1Ev,_ZThn52_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C11D0Ev,_ZThn96_N8S2840C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S2840C11D0Ev,_ZThn24_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C11D1Ev,_ZThn96_N8S2840C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S2840C11D1Ev,_ZThn24_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S2840C10D0Ev,_ZThn108_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S2840C10D1Ev,_ZThn108_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C10D0Ev,_ZThn52_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C10D1Ev,_ZThn52_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C10D0Ev,_ZThn96_N8S2840C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S2840C10D0Ev,_ZThn24_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C10D1Ev,_ZThn96_N8S2840C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S2840C10D1Ev,_ZThn24_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2840C10 = {  "S2840C10", // class name
  bases_S2840C10, 9,
  &(vtc_S2840C10[0]), // expected_vtbl_contents
  &(vtt_S2840C10[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI8S2840C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S2840C10),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2840C10),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names249,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2840C6  : virtual S4161C4_nt , virtual S20760C9 , virtual S2840C7 , S2840C10 , virtual S20760C5_nt {
  ~S2840C6(); // tgen
  S2840C6(); // tgen
};
//SIG(-1 S2840C6) C1{ VBC2{ m Fp} VBC3{ vd m FL} VBC4{ BC3 VBC5{ vd m Fi[6]} BC6{ VBC3 vd} FC5} BC7{ BC2 BC8{ VBC5 VBC4 FD} BC9{ vd m} VBC6 vd} VBC10{ vd m FL}}


S2840C6 ::~S2840C6(){ note_dtor("S2840C6", this);} // tgen
S2840C6 ::S2840C6(){ note_ctor("S2840C6", this);} // tgen

static void Test_S2840C6()
{
  extern Class_Descriptor cd_S2840C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,33)];
    init_test(&cd_S2840C6, buf);
    S2840C6 *dp, &lv = *(dp=new (buf) S2840C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,128), "sizeof(S2840C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2840C6)");
    /*is_ambiguous_... S2840C6::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(48,24), "S2840C6");
    /*is_ambiguous_... S2840C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(56,28), "S2840C6");
    check_base_class_offset(lv, (S20760C9*)(S2840C9*)(S2840C7*), ABISELECT(56,28), "S2840C6");
    /*is_ambiguous_... S2840C6::S2840C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C9*), ABISELECT(56,28), "S2840C6");
    /*is_ambiguous_... S2840C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C7*), ABISELECT(72,40), "S2840C6");
    check_base_class_offset(lv, (S20760C13*)(S2840C7*), ABISELECT(128,84), "S2840C6");
    check_base_class_offset(lv, (S20760C13*)(S2840C11*)(S2840C10*), ABISELECT(128,84), "S2840C6");
    check_base_class_offset(lv, (S2840C9*)(S2840C7*), ABISELECT(88,52), "S2840C6");
    check_base_class_offset(lv, (S2840C7*), ABISELECT(72,40), "S2840C6");
    check_base_class_offset(lv, (S2840C7*)(S2840C11*)(S2840C10*), ABISELECT(72,40), "S2840C6");
    check_base_class_offset(lv, (S4161C4_nt*)(S2840C10*), ABISELECT(32,16), "S2840C6");
    check_base_class_offset(lv, (S2840C11*)(S2840C10*), 0, "S2840C6");
    check_base_class_offset(lv, (S20760C22_nt*)(S2840C10*), ABISELECT(40,20), "S2840C6");
    /*is_ambiguous_... S2840C10::S2840C9 */ AMB_check_base_class_offset(lv, (S2840C9*)(S2840C10*), ABISELECT(160,112), "S2840C6");
    check_base_class_offset(lv, (S2840C10*), 0, "S2840C6");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(168,116), "S2840C6");
    test_class_info(&lv, &cd_S2840C6);
    dp->~S2840C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2840C6(Test_S2840C6, "S2840C6", ABISELECT(192,128));

#else // __cplusplus

extern void _ZN7S2840C6C1Ev();
extern void _ZN7S2840C6D1Ev();
Name_Map name_map_S2840C6[] = {
  NSPAIR(_ZN7S2840C6C1Ev),
  NSPAIR(_ZN7S2840C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C7;
extern VTBL_ENTRY _ZTI7S2840C7[];
extern  VTBL_ENTRY _ZTV7S2840C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C7[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S2840C11;
extern VTBL_ENTRY _ZTI8S2840C11[];
extern  VTBL_ENTRY _ZTV8S2840C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C11[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C10;
extern VTBL_ENTRY _ZTI8S2840C10[];
extern  VTBL_ENTRY _ZTV8S2840C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C10[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S2840C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(56,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(128,84), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S2840C9,    ABISELECT(88,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2840C7,    ABISELECT(72,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S2840C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S2840C9,    ABISELECT(160,112), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S2840C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C5_nt,    ABISELECT(168,116), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2840C6[];
extern void _ZN7S2840C6D1Ev();
extern void _ZN7S2840C6D0Ev();
extern void ABISELECT(_ZThn40_N7S2840C6D1Ev,_ZThn20_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn40_N7S2840C6D0Ev,_ZThn20_N7S2840C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn56_N7S2840C6D1Ev,_ZThn28_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn56_N7S2840C6D0Ev,_ZThn28_N7S2840C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2840C6D1Ev,_ZTv0_n20_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn72_N7S2840C6D1Ev,_ZThn40_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2840C6D0Ev,_ZTv0_n20_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn72_N7S2840C6D0Ev,_ZThn40_N7S2840C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S2840C6D1Ev,_ZTvn12_n20_N7S2840C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2840C6D0Ev,_ZTvn12_n20_N7S2840C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn128_N7S2840C6D1Ev,_ZThn84_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn128_N7S2840C6D0Ev,_ZThn84_N7S2840C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2840C6D1Ev,_ZTv0_n16_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn160_N7S2840C6D1Ev,_ZThn112_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2840C6D0Ev,_ZTv0_n16_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn160_N7S2840C6D0Ev,_ZThn112_N7S2840C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn168_N7S2840C6D1Ev,_ZThn116_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn168_N7S2840C6D0Ev,_ZThn116_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2840C6[] = {
  ABISELECT(168,116),
  ABISELECT(48,24),
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&_ZN7S2840C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C6D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2840C6D1Ev,_ZThn20_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2840C6D0Ev,_ZThn20_N7S2840C6D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C6D1Ev,_ZTv0_n20_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C6D0Ev,_ZTv0_n20_N7S2840C6D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C6D1Ev,_ZTvn12_n20_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C6D0Ev,_ZTvn12_n20_N7S2840C6D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev),
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C6D1Ev,_ZTv0_n16_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C6D0Ev,_ZTv0_n16_N7S2840C6D0Ev),
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S2840C6[];
extern void _ZN8S2840C10D1Ev();
extern void _ZN8S2840C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2840C10__7S2840C6[] = {
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&_ZN8S2840C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C10D0Ev,
};
extern void _ZN8S2840C11D1Ev();
extern void _ZN8S2840C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2840C118S2840C10__7S2840C6[] = {
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&_ZN8S2840C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn128_N8S2840C11D1Ev,_ZThn84_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn128_N8S2840C11D0Ev,_ZThn84_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2840C118S2840C10__7S2840C6[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn72_N8S2840C11D1Ev,_ZThn40_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn72_N8S2840C11D0Ev,_ZThn40_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C118S2840C10__7S2840C6[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C118S2840C10__7S2840C6[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S2840C11D1Ev,_ZThn28_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S2840C11D0Ev,_ZThn28_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2840C118S2840C10__7S2840C6[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S2840C10D1Ev,_ZThn84_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S2840C10D0Ev,_ZThn84_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2840C10__7S2840C6[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn72_N8S2840C10D1Ev,_ZThn40_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn72_N8S2840C10D0Ev,_ZThn40_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C10__7S2840C6[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2840C10D1Ev,_ZTvn12_n20_N8S2840C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2840C10D0Ev,_ZTvn12_n20_N8S2840C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C10__7S2840C6[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C10D1Ev,_ZTvn12_n20_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C10D0Ev,_ZTvn12_n20_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S2840C10D1Ev,_ZThn28_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn56_N8S2840C10D0Ev,_ZThn28_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2840C10__7S2840C6[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn160_N8S2840C10D1Ev,_ZThn112_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn160_N8S2840C10D0Ev,_ZThn112_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__8S2840C10__7S2840C6[] = {
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev),
};
extern void _ZN7S2840C7D1Ev();
extern void _ZN7S2840C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C7__7S2840C6[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&_ZN7S2840C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C7D0Ev,
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__7S2840C6[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C97S2840C7__7S2840C6[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C7__7S2840C6[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C9__7S2840C7__7S2840C6[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2840C7__7S2840C6[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__7S2840C6[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C9__A1__7S2840C6[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
static  VTT_ENTRY vtt_S2840C6[] = {
  {&(_ZTV7S2840C6[8]),  8,47},
  {&(_tg__ZTV8S2840C10__7S2840C6[6]),  6,8},
  {&(_tg__ZTV8S2840C118S2840C10__7S2840C6[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S2840C118S2840C10__7S2840C6[3]),  3,5},
  {&(_tg__ZTV7S2840C7__8S2840C118S2840C10__7S2840C6[5]),  5,7},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C118S2840C10__7S2840C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2840C118S2840C10__7S2840C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2840C10__7S2840C6[3]),  3,5},
  {&(_tg__ZTV7S2840C7__8S2840C10__7S2840C6[5]),  5,7},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C10__7S2840C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2840C10__7S2840C6[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__8S2840C10__7S2840C6[4]),  4,6},
  {&(_ZTV7S2840C6[17]),  17,47},
  {&(_ZTV7S2840C6[24]),  24,47},
  {&(_ZTV7S2840C6[34]),  34,47},
  {&(_ZTV7S2840C6[29]),  29,47},
  {&(_ZTV7S2840C6[40]),  40,47},
  {&(_ZTV7S2840C6[45]),  45,47},
  {&(_tg__ZTV7S2840C7__7S2840C6[4]),  4,6},
  {&(_tg__ZTV7S2840C97S2840C7__7S2840C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C97S2840C7__7S2840C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2840C7__7S2840C6[3]),  3,5},
  {&(_tg__ZTV7S2840C9__7S2840C7__7S2840C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2840C7__7S2840C6[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__7S2840C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C9__A1__7S2840C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2840C6[];
extern  VTBL_ENTRY _ZTV7S2840C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C6[];
static VTBL_ENTRY alt_thunk_names250[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S2840C10D0Ev,_ZThn112_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S2840C10D1Ev,_ZThn112_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S2840C10D0Ev,_ZThn40_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S2840C10D1Ev,_ZThn40_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S2840C10D0Ev,_ZThn28_N8S2840C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2840C10D0Ev,_ZThn84_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S2840C10D1Ev,_ZThn28_N8S2840C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2840C10D1Ev,_ZThn84_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S2840C11D0Ev,_ZThn40_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S2840C11D1Ev,_ZThn40_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S2840C11D0Ev,_ZThn28_N8S2840C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2840C11D0Ev,_ZThn84_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S2840C11D1Ev,_ZThn28_N8S2840C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2840C11D1Ev,_ZThn84_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C6D0Ev,_ZTv0_n16_N7S2840C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2840C6D0Ev,_ZThn112_N7S2840C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C6D1Ev,_ZTv0_n16_N7S2840C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2840C6D1Ev,_ZThn112_N7S2840C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C6D0Ev,_ZTv0_n20_N7S2840C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2840C6D0Ev,_ZThn40_N7S2840C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C6D1Ev,_ZTv0_n20_N7S2840C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2840C6D1Ev,_ZThn40_N7S2840C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2840C6D0Ev,_ZThn116_N7S2840C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2840C6D0Ev,_ZThn84_N7S2840C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C6D0Ev,_ZThn28_N7S2840C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2840C6D1Ev,_ZThn116_N7S2840C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2840C6D1Ev,_ZThn84_N7S2840C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C6D1Ev,_ZThn28_N7S2840C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2840C6 = {  "S2840C6", // class name
  bases_S2840C6, 12,
  &(vtc_S2840C6[0]), // expected_vtbl_contents
  &(vtt_S2840C6[0]), // expected_vtt_contents
  ABISELECT(192,128), // object size
  NSPAIRA(_ZTI7S2840C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S2840C6),47, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2840C6),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names250,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2840C14  : virtual S20760C13 , S2840C7 , virtual S4161C4_nt {
  ::S2840C6 s2840c14f0;
  ~S2840C14(); // tgen
  S2840C14(); // tgen
};
//SIG(-1 S2840C14) C1{ VBC2{ vd m Fi[6]} BC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} VBC6{ m Fp} FC7{ VBC6 VBC4 VBC3 BC8{ BC6 BC9{ VBC2 VBC3 FD} BC10{ vd m} VBC5 vd} VBC11{ vd m FL}}}


S2840C14 ::~S2840C14(){ note_dtor("S2840C14", this);} // tgen
S2840C14 ::S2840C14(){ note_ctor("S2840C14", this);} // tgen

static void Test_S2840C14()
{
  extern Class_Descriptor cd_S2840C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,55)];
    init_test(&cd_S2840C14, buf);
    S2840C14 *dp, &lv = *(dp=new (buf) S2840C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,216), "sizeof(S2840C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2840C14)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(256,172), "S2840C14");
    check_base_class_offset(lv, (S20760C13*)(S2840C7*), ABISELECT(256,172), "S2840C14");
    /*is_ambiguous_... S2840C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C7*), 0, "S2840C14");
    check_base_class_offset(lv, (S20760C9*)(S2840C9*)(S2840C7*), ABISELECT(288,200), "S2840C14");
    check_base_class_offset(lv, (S2840C9*)(S2840C7*), ABISELECT(16,12), "S2840C14");
    check_base_class_offset(lv, (S2840C7*), 0, "S2840C14");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(304,212), "S2840C14");
    check_field_offset(lv, s2840c14f0, ABISELECT(64,44), "S2840C14.s2840c14f0");
    test_class_info(&lv, &cd_S2840C14);
    dp->~S2840C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2840C14(Test_S2840C14, "S2840C14", ABISELECT(320,216));

#else // __cplusplus

extern void _ZN8S2840C14C1Ev();
extern void _ZN8S2840C14D1Ev();
Name_Map name_map_S2840C14[] = {
  NSPAIR(_ZN8S2840C14C1Ev),
  NSPAIR(_ZN8S2840C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C7;
extern VTBL_ENTRY _ZTI7S2840C7[];
extern  VTBL_ENTRY _ZTV7S2840C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C7[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S2840C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(256,172), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(288,200), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S2840C9,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2840C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2840C14[];
extern void _ZN8S2840C14D1Ev();
extern void _ZN8S2840C14D0Ev();
extern void ABISELECT(_ZThn16_N8S2840C14D1Ev,_ZThn12_N8S2840C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S2840C14D0Ev,_ZThn12_N8S2840C14D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2840C14D1Ev,_ZThn172_N8S2840C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev)();
extern void ABISELECT(_ZThn256_N8S2840C14D0Ev,_ZThn172_N8S2840C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev)();
extern void ABISELECT(_ZThn288_N8S2840C14D1Ev,_ZThn200_N8S2840C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev)();
extern void ABISELECT(_ZThn288_N8S2840C14D0Ev,_ZThn200_N8S2840C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2840C14[] = {
  ABISELECT(304,212),
  ABISELECT(288,200),
  ABISELECT(256,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&_ZN8S2840C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C14D0Ev,
  ABISELECT(272,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2840C14D1Ev,_ZThn12_N8S2840C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2840C14D0Ev,_ZThn12_N8S2840C14D0Ev),
  ABISELECT(-256,-172),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev),
  ABISELECT(-288,-200),
  ABISELECT(-288,-200),
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S2840C14[];
extern void _ZN7S2840C7D1Ev();
extern void _ZN7S2840C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C14[] = {
  ABISELECT(288,200),
  ABISELECT(256,172),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&_ZN7S2840C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C7D0Ev,
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C14[] = {
  ABISELECT(272,188),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZThn272_N7S2840C9D1Ev,_ZThn188_N7S2840C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
extern void ABISELECT(_ZThn272_N7S2840C9D0Ev,_ZThn188_N7S2840C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C97S2840C7__8S2840C14[] = {
  ABISELECT(-272,-188),
  ABISELECT(-272,-188),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn256_N7S2840C7D1Ev,_ZThn172_N7S2840C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZThn256_N7S2840C7D0Ev,_ZThn172_N7S2840C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C7__8S2840C14[] = {
  ABISELECT(-256,-172),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C9__7S2840C7__8S2840C14[] = {
  ABISELECT(272,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn288_N7S2840C7D1Ev,_ZThn200_N7S2840C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZThn288_N7S2840C7D0Ev,_ZThn200_N7S2840C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2840C7__8S2840C14[] = {
  ABISELECT(-288,-200),
  ABISELECT(-288,-200),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
static  VTT_ENTRY vtt_S2840C14[] = {
  {&(_ZTV8S2840C14[5]),  5,22},
  {&(_tg__ZTV7S2840C7__8S2840C14[4]),  4,6},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C97S2840C7__8S2840C14[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2840C7__8S2840C14[3]),  3,5},
  {&(_tg__ZTV7S2840C9__7S2840C7__8S2840C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2840C7__8S2840C14[3]),  3,5},
  {&(_ZTV8S2840C14[15]),  15,22},
  {&(_ZTV8S2840C14[10]),  10,22},
  {&(_ZTV8S2840C14[20]),  20,22},
};
extern VTBL_ENTRY _ZTI8S2840C14[];
extern  VTBL_ENTRY _ZTV8S2840C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C14[];
static VTBL_ENTRY alt_thunk_names251[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S2840C7D0Ev,_ZThn200_N7S2840C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S2840C7D0Ev,_ZThn172_N7S2840C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S2840C7D1Ev,_ZThn200_N7S2840C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S2840C7D1Ev,_ZThn172_N7S2840C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S2840C9D0Ev,_ZThn188_N7S2840C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S2840C9D1Ev,_ZThn188_N7S2840C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S2840C14D0Ev,_ZThn200_N8S2840C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S2840C14D0Ev,_ZThn172_N8S2840C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S2840C14D1Ev,_ZThn200_N8S2840C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S2840C14D1Ev,_ZThn172_N8S2840C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2840C14 = {  "S2840C14", // class name
  bases_S2840C14, 6,
  &(vtc_S2840C14[0]), // expected_vtbl_contents
  &(vtt_S2840C14[0]), // expected_vtt_contents
  ABISELECT(320,216), // object size
  NSPAIRA(_ZTI8S2840C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S2840C14),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2840C14),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names251,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2840C2  : S4228C37 , S20760C9 , virtual S4161C4_nt , S2840C6 , virtual S2840C14 {
  int s2840c2f0;
  virtual  ~S2840C2(); // _ZN7S2840C2D2Ev
  S2840C2(); // tgen
};
//SIG(-1 S2840C2) C1{ BC2{ m} BC3{ vd m FL} VBC4{ m Fp} BC5{ VBC4 VBC3 VBC6{ BC3 VBC7{ vd m Fi[6]} BC8{ VBC3 vd} FC7} BC9{ BC4 BC10{ VBC7 VBC6 FD} BC11{ vd m} VBC8 vd} VBC12{ vd m FL}} VBC13{ VBC7 BC6 VBC4 FC5} vd Fi}


 S2840C2 ::~S2840C2(){ note_dtor("S2840C2", this);}
S2840C2 ::S2840C2(){ note_ctor("S2840C2", this);} // tgen

static void Test_S2840C2()
{
  extern Class_Descriptor cd_S2840C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,80)];
    init_test(&cd_S2840C2, buf);
    S2840C2 *dp, &lv = *(dp=new (buf) S2840C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,316), "sizeof(S2840C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2840C2)");
    check_base_class_offset(lv, (S4228C37*), 0, "S2840C2");
    /*is_ambiguous_... S2840C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S2840C2");
    /*is_ambiguous_... S2840C2::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(72,40), "S2840C2");
    /*is_ambiguous_... S2840C6::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S2840C6*), ABISELECT(72,40), "S2840C2");
    check_base_class_offset(lv, (S4161C4_nt*)(S2840C14*), ABISELECT(72,40), "S2840C2");
    /*is_ambiguous_... S2840C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C6*), ABISELECT(80,44), "S2840C2");
    /*is_ambiguous_... S2840C2::S2840C7 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C9*)(S2840C7*), ABISELECT(80,44), "S2840C2");
    /*is_ambiguous_... S2840C2::S2840C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C9*), ABISELECT(80,44), "S2840C2");
    check_base_class_offset(lv, (S20760C9*)(S2840C9*)(S2840C7*)(S2840C14*), ABISELECT(80,44), "S2840C2");
    /*is_ambiguous_... S2840C2::S2840C7 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C7*), ABISELECT(96,56), "S2840C2");
    /*is_ambiguous_... S2840C2::S2840C7 */ AMB_check_base_class_offset(lv, (S20760C13*)(S2840C7*), ABISELECT(152,100), "S2840C2");
    check_base_class_offset(lv, (S20760C13*)(S2840C11*)(S2840C10*)(S2840C6*), ABISELECT(152,100), "S2840C2");
    check_base_class_offset(lv, (S20760C13*)(S2840C14*), ABISELECT(152,100), "S2840C2");
    check_base_class_offset(lv, (S20760C13*)(S2840C7*)(S2840C14*), ABISELECT(152,100), "S2840C2");
    /*is_ambiguous_... S2840C2::S2840C7 */ AMB_check_base_class_offset(lv, (S2840C9*)(S2840C7*), ABISELECT(112,68), "S2840C2");
    check_base_class_offset(lv, (S2840C7*)(S2840C6*), ABISELECT(96,56), "S2840C2");
    check_base_class_offset(lv, (S2840C7*)(S2840C11*)(S2840C10*)(S2840C6*), ABISELECT(96,56), "S2840C2");
    check_base_class_offset(lv, (S4161C4_nt*)(S2840C10*)(S2840C6*), ABISELECT(48,28), "S2840C2");
    check_base_class_offset(lv, (S2840C11*)(S2840C10*)(S2840C6*), ABISELECT(16,12), "S2840C2");
    check_base_class_offset(lv, (S20760C22_nt*)(S2840C10*)(S2840C6*), ABISELECT(56,32), "S2840C2");
    /*is_ambiguous_... S2840C10::S2840C9 */ AMB_check_base_class_offset(lv, (S2840C9*)(S2840C10*)(S2840C6*), ABISELECT(184,128), "S2840C2");
    check_base_class_offset(lv, (S2840C10*)(S2840C6*), ABISELECT(16,12), "S2840C2");
    check_base_class_offset(lv, (S20760C5_nt*)(S2840C6*), ABISELECT(192,132), "S2840C2");
    check_base_class_offset(lv, (S2840C6*), ABISELECT(16,12), "S2840C2");
    /*is_ambiguous_... S2840C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C7*)(S2840C14*), ABISELECT(208,144), "S2840C2");
    check_base_class_offset(lv, (S2840C9*)(S2840C7*)(S2840C14*), ABISELECT(224,156), "S2840C2");
    check_base_class_offset(lv, (S2840C7*)(S2840C14*), ABISELECT(208,144), "S2840C2");
    check_base_class_offset(lv, (S2840C14*), ABISELECT(208,144), "S2840C2");
    check_field_offset(lv, s2840c2f0, ABISELECT(64,36), "S2840C2.s2840c2f0");
    test_class_info(&lv, &cd_S2840C2);
    dp->~S2840C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2840C2(Test_S2840C2, "S2840C2", ABISELECT(464,316));

#else // __cplusplus

extern void _ZN7S2840C2C1Ev();
extern void _ZN7S2840C2D2Ev();
Name_Map name_map_S2840C2[] = {
  NSPAIR(_ZN7S2840C2C1Ev),
  NSPAIR(_ZN7S2840C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C7;
extern VTBL_ENTRY _ZTI7S2840C7[];
extern  VTBL_ENTRY _ZTV7S2840C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C7[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S2840C11;
extern VTBL_ENTRY _ZTI8S2840C11[];
extern  VTBL_ENTRY _ZTV8S2840C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C11[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C10;
extern VTBL_ENTRY _ZTI8S2840C10[];
extern  VTBL_ENTRY _ZTV8S2840C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C10[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S2840C6;
extern VTBL_ENTRY _ZTI7S2840C6[];
extern  VTBL_ENTRY _ZTV7S2840C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C6[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C7;
extern VTBL_ENTRY _ZTI7S2840C7[];
extern  VTBL_ENTRY _ZTV7S2840C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C7[];
extern Class_Descriptor cd_S2840C14;
extern VTBL_ENTRY _ZTI8S2840C14[];
extern  VTBL_ENTRY _ZTV8S2840C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C14[];
static Base_Class bases_S2840C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,100), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S2840C9,    ABISELECT(112,68), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2840C7,    ABISELECT(96,56), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2840C11,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2840C9,    ABISELECT(184,128), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S2840C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(192,132), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S2840C6,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2840C9,    ABISELECT(224,156), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2840C7,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S2840C14,    ABISELECT(208,144), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2840C2[];
extern void _ZN7S2840C2D1Ev();
extern void _ZN7S2840C2D0Ev();
extern void ABISELECT(_ZThn16_N7S2840C2D1Ev,_ZThn12_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C2D0Ev,_ZThn12_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S2840C2D1Ev,_ZThn32_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S2840C2D0Ev,_ZThn32_N7S2840C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S2840C2D1Ev,_ZThn44_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S2840C2D0Ev,_ZThn44_N7S2840C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2840C2D1Ev,_ZTv0_n20_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S2840C2D1Ev,_ZThn56_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2840C2D0Ev,_ZTv0_n20_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S2840C2D0Ev,_ZThn56_N7S2840C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S2840C2D1Ev,_ZTvn12_n20_N7S2840C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2840C2D0Ev,_ZTvn12_n20_N7S2840C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn152_N7S2840C2D1Ev,_ZThn100_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn152_N7S2840C2D0Ev,_ZThn100_N7S2840C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2840C2D1Ev,_ZTv0_n16_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn184_N7S2840C2D1Ev,_ZThn128_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2840C2D0Ev,_ZTv0_n16_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn184_N7S2840C2D0Ev,_ZThn128_N7S2840C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn192_N7S2840C2D1Ev,_ZThn132_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn192_N7S2840C2D0Ev,_ZThn132_N7S2840C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2840C2D1Ev,_ZTv0_n24_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn208_N7S2840C2D1Ev,_ZThn144_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2840C2D0Ev,_ZTv0_n24_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn208_N7S2840C2D0Ev,_ZThn144_N7S2840C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S2840C2D1Ev,_ZTvn12_n24_N7S2840C2D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S2840C2D0Ev,_ZTvn12_n24_N7S2840C2D0Ev)();
static  VTBL_ENTRY vtc_S2840C2[] = {
  ABISELECT(208,144),
  ABISELECT(192,132),
  ABISELECT(184,128),
  ABISELECT(152,100),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&_ZN7S2840C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C2D0Ev,
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C2D1Ev,_ZThn12_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C2D0Ev,_ZThn12_N7S2840C2D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S2840C2D1Ev,_ZThn32_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S2840C2D0Ev,_ZThn32_N7S2840C2D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C2D1Ev,_ZTv0_n20_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C2D0Ev,_ZTv0_n20_N7S2840C2D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C2D1Ev,_ZTvn12_n20_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C2D0Ev,_ZTvn12_n20_N7S2840C2D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev),
  ABISELECT(-184,-128),
  ABISELECT(-104,-84),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C2D1Ev,_ZTv0_n16_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C2D0Ev,_ZTv0_n16_N7S2840C2D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev),
  ABISELECT(-208,-144),
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2840C2D1Ev,_ZTv0_n24_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2840C2D0Ev,_ZTv0_n24_N7S2840C2D0Ev),
  ABISELECT(-144,-112),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2840C2D1Ev,_ZTvn12_n24_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2840C2D0Ev,_ZTvn12_n24_N7S2840C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S2840C2[];
extern void _ZN7S2840C6D1Ev();
extern void _ZN7S2840C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C6__7S2840C2[] = {
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&_ZN7S2840C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C6D0Ev,
};
extern void _ZN8S2840C10D1Ev();
extern void _ZN8S2840C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&_ZN8S2840C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C10D0Ev,
};
extern void _ZN8S2840C11D1Ev();
extern void _ZN8S2840C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2840C118S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&_ZN8S2840C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn136_N8S2840C11D1Ev,_ZThn88_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn136_N8S2840C11D0Ev,_ZThn88_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2840C118S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn80_N8S2840C11D1Ev,_ZThn44_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn80_N8S2840C11D0Ev,_ZThn44_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C118S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C118S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn64_N8S2840C11D1Ev,_ZThn32_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn64_N8S2840C11D0Ev,_ZThn32_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2840C118S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S2840C10D1Ev,_ZThn88_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S2840C10D0Ev,_ZThn88_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S2840C10D1Ev,_ZThn44_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S2840C10D0Ev,_ZThn44_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2840C10D1Ev,_ZTvn12_n20_N8S2840C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2840C10D0Ev,_ZTvn12_n20_N8S2840C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C10D1Ev,_ZTvn12_n20_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C10D0Ev,_ZTvn12_n20_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S2840C10D1Ev,_ZThn32_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S2840C10D0Ev,_ZThn32_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S2840C10D1Ev,_ZThn116_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S2840C10D0Ev,_ZThn116_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__8S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn64_N7S2840C6D1Ev,_ZThn32_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn64_N7S2840C6D0Ev,_ZThn32_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C6__7S2840C2[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S2840C6D1Ev,_ZTv0_n20_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn80_N7S2840C6D1Ev,_ZThn44_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2840C6D0Ev,_ZTv0_n20_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn80_N7S2840C6D0Ev,_ZThn44_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__7S2840C6__7S2840C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C6D1Ev,_ZTv0_n20_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C6D0Ev,_ZTv0_n20_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn136_N7S2840C6D1Ev,_ZThn88_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn136_N7S2840C6D0Ev,_ZThn88_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C6__7S2840C2[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N7S2840C6D1Ev,_ZTvn12_n20_N7S2840C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2840C6D0Ev,_ZTvn12_n20_N7S2840C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__7S2840C6__7S2840C2[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C6D1Ev,_ZTvn12_n20_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C6D0Ev,_ZTvn12_n20_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2840C6D1Ev,_ZTv0_n16_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn168_N7S2840C6D1Ev,_ZThn116_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2840C6D0Ev,_ZTv0_n16_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn168_N7S2840C6D0Ev,_ZThn116_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__7S2840C6__7S2840C2[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C6D1Ev,_ZTv0_n16_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C6D0Ev,_ZTv0_n16_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn176_N7S2840C6D1Ev,_ZThn120_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn176_N7S2840C6D0Ev,_ZThn120_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__7S2840C6__7S2840C2[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev),
};
extern void _ZN7S2840C7D1Ev();
extern void _ZN7S2840C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C7__7S2840C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&_ZN7S2840C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C7D0Ev,
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__7S2840C2[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C97S2840C7__7S2840C2[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C7__7S2840C2[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C9__7S2840C7__7S2840C2[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2840C7__7S2840C2[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__7S2840C2[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C9__A1__7S2840C2[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void _ZN8S2840C14D1Ev();
extern void _ZN8S2840C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2840C14__7S2840C2[] = {
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&_ZN8S2840C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C14D0Ev,
};
extern void _ZN7S2840C7D1Ev();
extern void _ZN7S2840C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C78S2840C14__A1__7S2840C2[] = {
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&_ZN7S2840C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C7D0Ev,
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C78S2840C14__A2__7S2840C2[] = {
  ABISELECT(-144,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C97S2840C78S2840C14__A2__7S2840C2[] = {
  ABISELECT(144,112),
  ABISELECT(144,112),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C78S2840C14__A1__7S2840C2[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C9__7S2840C78S2840C14__A1__7S2840C2[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2840C78S2840C14__A1__7S2840C2[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2840C14__7S2840C2[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev),
};
extern void ABISELECT(_ZThn16_N8S2840C14D1Ev,_ZThn12_N8S2840C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S2840C14D0Ev,_ZThn12_N8S2840C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C14__7S2840C2[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2840C14D1Ev,_ZThn12_N8S2840C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2840C14D0Ev,_ZThn12_N8S2840C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2840C14__7S2840C2[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev),
};
static  VTT_ENTRY vtt_S2840C2[] = {
  {&(_ZTV7S2840C2[9]),  9,71},
  {&(_tg__ZTV7S2840C6__7S2840C2[8]),  8,10},
  {&(_tg__ZTV8S2840C107S2840C6__7S2840C2[6]),  6,8},
  {&(_tg__ZTV8S2840C118S2840C107S2840C6__7S2840C2[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S2840C118S2840C107S2840C6__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C7__8S2840C118S2840C107S2840C6__7S2840C2[5]),  5,7},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C118S2840C107S2840C6__7S2840C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2840C118S2840C107S2840C6__7S2840C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2840C107S2840C6__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C7__8S2840C107S2840C6__7S2840C2[5]),  5,7},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C107S2840C6__7S2840C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2840C107S2840C6__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__8S2840C107S2840C6__7S2840C2[4]),  4,6},
  {&(_tg__ZTV8S20760C9__7S2840C6__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C7__7S2840C6__7S2840C2[5]),  5,7},
  {&(_tg__ZTV9S20760C13__7S2840C6__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C97S2840C7__7S2840C6__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__7S2840C6__7S2840C2[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__7S2840C6__7S2840C2[3]),  3,5},
  {&(_ZTV7S2840C2[19]),  19,71},
  {&(_ZTV7S2840C2[28]),  28,71},
  {&(_ZTV7S2840C2[35]),  35,71},
  {&(_ZTV7S2840C2[45]),  45,71},
  {&(_ZTV7S2840C2[40]),  40,71},
  {&(_ZTV7S2840C2[51]),  51,71},
  {&(_ZTV7S2840C2[56]),  56,71},
  {&(_ZTV7S2840C2[64]),  64,71},
  {&(_ZTV7S2840C2[69]),  69,71},
  {&(_tg__ZTV7S2840C7__7S2840C2[4]),  4,6},
  {&(_tg__ZTV7S2840C97S2840C7__7S2840C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C97S2840C7__7S2840C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2840C7__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C9__7S2840C7__7S2840C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2840C7__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__7S2840C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C9__A1__7S2840C2[3]),  3,5},
  {&(_tg__ZTV8S2840C14__7S2840C2[5]),  5,7},
  {&(_tg__ZTV7S2840C78S2840C14__A1__7S2840C2[4]),  4,6},
  {&(_tg__ZTV7S2840C97S2840C78S2840C14__A2__7S2840C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C97S2840C78S2840C14__A2__7S2840C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2840C78S2840C14__A1__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C9__7S2840C78S2840C14__A1__7S2840C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2840C78S2840C14__A1__7S2840C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2840C14__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C14__7S2840C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2840C14__7S2840C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2840C2[];
extern  VTBL_ENTRY _ZTV7S2840C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C2[];
static VTBL_ENTRY alt_thunk_names252[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C6D0Ev,_ZTv0_n16_N7S2840C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2840C6D0Ev,_ZThn116_N7S2840C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C6D1Ev,_ZTv0_n16_N7S2840C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2840C6D1Ev,_ZThn116_N7S2840C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C6D0Ev,_ZTv0_n20_N7S2840C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C6D0Ev,_ZThn44_N7S2840C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C6D1Ev,_ZTv0_n20_N7S2840C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C6D1Ev,_ZThn44_N7S2840C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S2840C6D0Ev,_ZThn120_N7S2840C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S2840C6D0Ev,_ZThn88_N7S2840C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2840C6D0Ev,_ZThn32_N7S2840C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S2840C6D1Ev,_ZThn120_N7S2840C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S2840C6D1Ev,_ZThn88_N7S2840C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2840C6D1Ev,_ZThn32_N7S2840C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S2840C10D0Ev,_ZThn116_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S2840C10D1Ev,_ZThn116_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C10D0Ev,_ZThn44_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C10D1Ev,_ZThn44_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C10D0Ev,_ZThn32_N8S2840C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C10D0Ev,_ZThn88_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C10D1Ev,_ZThn32_N8S2840C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C10D1Ev,_ZThn88_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C11D0Ev,_ZThn44_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C11D1Ev,_ZThn44_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C11D0Ev,_ZThn32_N8S2840C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C11D0Ev,_ZThn88_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C11D1Ev,_ZThn32_N8S2840C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C11D1Ev,_ZThn88_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2840C2D0Ev,_ZTv0_n24_N7S2840C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2840C2D0Ev,_ZThn144_N7S2840C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2840C2D1Ev,_ZTv0_n24_N7S2840C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2840C2D1Ev,_ZThn144_N7S2840C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C2D0Ev,_ZTv0_n16_N7S2840C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2840C2D0Ev,_ZThn128_N7S2840C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C2D1Ev,_ZTv0_n16_N7S2840C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2840C2D1Ev,_ZThn128_N7S2840C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C2D0Ev,_ZTv0_n20_N7S2840C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2840C2D0Ev,_ZThn56_N7S2840C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C2D1Ev,_ZTv0_n20_N7S2840C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2840C2D1Ev,_ZThn56_N7S2840C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2840C2D0Ev,_ZThn132_N7S2840C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2840C2D0Ev,_ZThn100_N7S2840C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C2D0Ev,_ZThn44_N7S2840C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2840C2D1Ev,_ZThn132_N7S2840C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2840C2D1Ev,_ZThn100_N7S2840C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C2D1Ev,_ZThn44_N7S2840C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2840C2 = {  "S2840C2", // class name
  bases_S2840C2, 19,
  &(vtc_S2840C2[0]), // expected_vtbl_contents
  &(vtt_S2840C2[0]), // expected_vtt_contents
  ABISELECT(464,316), // object size
  NSPAIRA(_ZTI7S2840C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S2840C2),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2840C2),46, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names252,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S2840C15_nt  {
  int s2840c15f0;
  void  mf2840c15(); // _ZN11S2840C15_nt9mf2840c15Ev
};
//SIG(1 S2840C15_nt) U1{ m Fi}

#endif // __cplusplus
#ifdef __cplusplus

struct  S2840C1  : S2840C2 {
  ::S2840C15_nt s2840c1f0;
  ~S2840C1(); // tgen
  S2840C1(); // tgen
};
//SIG(1 S2840C1) C1{ BC2{ BC3{ m} BC4{ vd m FL} VBC5{ m Fp} BC6{ VBC5 VBC4 VBC7{ BC4 VBC8{ vd m Fi[6]} BC9{ VBC4 vd} FC8} BC10{ BC5 BC11{ VBC8 VBC7 FD} BC12{ vd m} VBC9 vd} VBC13{ vd m FL}} VBC14{ VBC8 BC7 VBC5 FC6} vd Fi} FU15{ m Fi}}


S2840C1 ::~S2840C1(){ note_dtor("S2840C1", this);} // tgen
S2840C1 ::S2840C1(){ note_ctor("S2840C1", this);} // tgen

static void Test_S2840C1()
{
  extern Class_Descriptor cd_S2840C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,81)];
    init_test(&cd_S2840C1, buf);
    S2840C1 *dp, &lv = *(dp=new (buf) S2840C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,320), "sizeof(S2840C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2840C1)");
    check_base_class_offset(lv, (S4228C37*)(S2840C2*), 0, "S2840C1");
    /*is_ambiguous_... S2840C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C2*), 0, "S2840C1");
    /*is_ambiguous_... S2840C2::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S2840C2*), ABISELECT(72,44), "S2840C1");
    /*is_ambiguous_... S2840C6::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S2840C6*)(S2840C2*), ABISELECT(72,44), "S2840C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S2840C14*), ABISELECT(72,44), "S2840C1");
    /*is_ambiguous_... S2840C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C6*)(S2840C2*), ABISELECT(80,48), "S2840C1");
    /*is_ambiguous_... S2840C1::S2840C7 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C9*)(S2840C7*), ABISELECT(80,48), "S2840C1");
    /*is_ambiguous_... S2840C1::S2840C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C9*), ABISELECT(80,48), "S2840C1");
    check_base_class_offset(lv, (S20760C9*)(S2840C9*)(S2840C7*)(S2840C14*), ABISELECT(80,48), "S2840C1");
    /*is_ambiguous_... S2840C1::S2840C7 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C7*), ABISELECT(96,60), "S2840C1");
    /*is_ambiguous_... S2840C1::S2840C7 */ AMB_check_base_class_offset(lv, (S20760C13*)(S2840C7*), ABISELECT(152,104), "S2840C1");
    check_base_class_offset(lv, (S20760C13*)(S2840C11*)(S2840C10*)(S2840C6*)(S2840C2*), ABISELECT(152,104), "S2840C1");
    check_base_class_offset(lv, (S20760C13*)(S2840C14*), ABISELECT(152,104), "S2840C1");
    check_base_class_offset(lv, (S20760C13*)(S2840C7*)(S2840C14*), ABISELECT(152,104), "S2840C1");
    /*is_ambiguous_... S2840C1::S2840C7 */ AMB_check_base_class_offset(lv, (S2840C9*)(S2840C7*), ABISELECT(112,72), "S2840C1");
    check_base_class_offset(lv, (S2840C7*)(S2840C6*)(S2840C2*), ABISELECT(96,60), "S2840C1");
    check_base_class_offset(lv, (S2840C7*)(S2840C11*)(S2840C10*)(S2840C6*)(S2840C2*), ABISELECT(96,60), "S2840C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S2840C10*)(S2840C6*)(S2840C2*), ABISELECT(48,28), "S2840C1");
    check_base_class_offset(lv, (S2840C11*)(S2840C10*)(S2840C6*)(S2840C2*), ABISELECT(16,12), "S2840C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S2840C10*)(S2840C6*)(S2840C2*), ABISELECT(56,32), "S2840C1");
    /*is_ambiguous_... S2840C10::S2840C9 */ AMB_check_base_class_offset(lv, (S2840C9*)(S2840C10*)(S2840C6*)(S2840C2*), ABISELECT(184,132), "S2840C1");
    check_base_class_offset(lv, (S2840C10*)(S2840C6*)(S2840C2*), ABISELECT(16,12), "S2840C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S2840C6*)(S2840C2*), ABISELECT(192,136), "S2840C1");
    check_base_class_offset(lv, (S2840C6*)(S2840C2*), ABISELECT(16,12), "S2840C1");
    /*is_ambiguous_... S2840C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C7*)(S2840C14*), ABISELECT(208,148), "S2840C1");
    check_base_class_offset(lv, (S2840C9*)(S2840C7*)(S2840C14*), ABISELECT(224,160), "S2840C1");
    check_base_class_offset(lv, (S2840C7*)(S2840C14*), ABISELECT(208,148), "S2840C1");
    check_base_class_offset(lv, (S2840C14*)(S2840C2*), ABISELECT(208,148), "S2840C1");
    check_base_class_offset(lv, (S2840C2*), 0, "S2840C1");
    check_field_offset(lv, s2840c1f0, ABISELECT(68,40), "S2840C1.s2840c1f0");
    test_class_info(&lv, &cd_S2840C1);
    dp->~S2840C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2840C1(Test_S2840C1, "S2840C1", ABISELECT(464,320));

#else // __cplusplus

extern void _ZN7S2840C1C1Ev();
extern void _ZN7S2840C1D1Ev();
Name_Map name_map_S2840C1[] = {
  NSPAIR(_ZN7S2840C1C1Ev),
  NSPAIR(_ZN7S2840C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C7;
extern VTBL_ENTRY _ZTI7S2840C7[];
extern  VTBL_ENTRY _ZTV7S2840C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C7[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S2840C11;
extern VTBL_ENTRY _ZTI8S2840C11[];
extern  VTBL_ENTRY _ZTV8S2840C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C11[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C10;
extern VTBL_ENTRY _ZTI8S2840C10[];
extern  VTBL_ENTRY _ZTV8S2840C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C10[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S2840C6;
extern VTBL_ENTRY _ZTI7S2840C6[];
extern  VTBL_ENTRY _ZTV7S2840C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C6[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C7;
extern VTBL_ENTRY _ZTI7S2840C7[];
extern  VTBL_ENTRY _ZTV7S2840C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C7[];
extern Class_Descriptor cd_S2840C14;
extern VTBL_ENTRY _ZTI8S2840C14[];
extern  VTBL_ENTRY _ZTV8S2840C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C14[];
extern Class_Descriptor cd_S2840C2;
extern VTBL_ENTRY _ZTI7S2840C2[];
extern  VTBL_ENTRY _ZTV7S2840C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C2[];
static Base_Class bases_S2840C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,48), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,104), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S2840C9,    ABISELECT(112,72), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2840C7,    ABISELECT(96,60), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2840C11,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2840C9,    ABISELECT(184,132), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S2840C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(192,136), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S2840C6,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(208,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2840C9,    ABISELECT(224,160), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2840C7,    ABISELECT(208,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S2840C14,    ABISELECT(208,148), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S2840C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2840C1[];
extern void _ZN7S2840C1D1Ev();
extern void _ZN7S2840C1D0Ev();
extern void ABISELECT(_ZThn16_N7S2840C1D1Ev,_ZThn12_N7S2840C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C1D0Ev,_ZThn12_N7S2840C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S2840C1D1Ev,_ZThn32_N7S2840C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S2840C1D0Ev,_ZThn32_N7S2840C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C1D1Ev,_ZTv0_n12_N7S2840C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S2840C1D1Ev,_ZThn48_N7S2840C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C1D0Ev,_ZTv0_n12_N7S2840C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S2840C1D0Ev,_ZThn48_N7S2840C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2840C1D1Ev,_ZTv0_n20_N7S2840C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S2840C1D1Ev,_ZThn60_N7S2840C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2840C1D0Ev,_ZTv0_n20_N7S2840C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S2840C1D0Ev,_ZThn60_N7S2840C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S2840C1D1Ev,_ZTvn12_n20_N7S2840C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2840C1D0Ev,_ZTvn12_n20_N7S2840C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C1D1Ev,_ZTv0_n12_N7S2840C1D1Ev)();
extern void ABISELECT(_ZThn152_N7S2840C1D1Ev,_ZThn104_N7S2840C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C1D0Ev,_ZTv0_n12_N7S2840C1D0Ev)();
extern void ABISELECT(_ZThn152_N7S2840C1D0Ev,_ZThn104_N7S2840C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2840C1D1Ev,_ZTv0_n16_N7S2840C1D1Ev)();
extern void ABISELECT(_ZThn184_N7S2840C1D1Ev,_ZThn132_N7S2840C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2840C1D0Ev,_ZTv0_n16_N7S2840C1D0Ev)();
extern void ABISELECT(_ZThn184_N7S2840C1D0Ev,_ZThn132_N7S2840C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C1D1Ev,_ZTv0_n12_N7S2840C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S2840C1D1Ev,_ZThn136_N7S2840C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C1D0Ev,_ZTv0_n12_N7S2840C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S2840C1D0Ev,_ZThn136_N7S2840C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2840C1D1Ev,_ZTv0_n24_N7S2840C1D1Ev)();
extern void ABISELECT(_ZThn208_N7S2840C1D1Ev,_ZThn148_N7S2840C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2840C1D0Ev,_ZTv0_n24_N7S2840C1D0Ev)();
extern void ABISELECT(_ZThn208_N7S2840C1D0Ev,_ZThn148_N7S2840C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S2840C1D1Ev,_ZTvn12_n24_N7S2840C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S2840C1D0Ev,_ZTvn12_n24_N7S2840C1D0Ev)();
static  VTBL_ENTRY vtc_S2840C1[] = {
  ABISELECT(208,148),
  ABISELECT(192,136),
  ABISELECT(184,132),
  ABISELECT(152,104),
  ABISELECT(96,60),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&_ZN7S2840C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C1D0Ev,
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C1D1Ev,_ZThn12_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C1D0Ev,_ZThn12_N7S2840C1D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S2840C1D1Ev,_ZThn32_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S2840C1D0Ev,_ZThn32_N7S2840C1D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C1D1Ev,_ZTv0_n12_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C1D0Ev,_ZTv0_n12_N7S2840C1D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C1D1Ev,_ZTv0_n20_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C1D0Ev,_ZTv0_n20_N7S2840C1D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C1D1Ev,_ZTvn12_n20_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C1D0Ev,_ZTvn12_n20_N7S2840C1D0Ev),
  ABISELECT(-152,-104),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C1D1Ev,_ZTv0_n12_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C1D0Ev,_ZTv0_n12_N7S2840C1D0Ev),
  ABISELECT(-184,-132),
  ABISELECT(-104,-84),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C1D1Ev,_ZTv0_n16_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C1D0Ev,_ZTv0_n16_N7S2840C1D0Ev),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C1D1Ev,_ZTv0_n12_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C1D0Ev,_ZTv0_n12_N7S2840C1D0Ev),
  ABISELECT(-208,-148),
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2840C1D1Ev,_ZTv0_n24_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2840C1D0Ev,_ZTv0_n24_N7S2840C1D0Ev),
  ABISELECT(-144,-112),
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2840C1D1Ev,_ZTvn12_n24_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2840C1D0Ev,_ZTvn12_n24_N7S2840C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S2840C1[];
extern void _ZN7S2840C2D1Ev();
extern void _ZN7S2840C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C2__7S2840C1[] = {
  ABISELECT(208,148),
  ABISELECT(192,136),
  ABISELECT(184,132),
  ABISELECT(152,104),
  ABISELECT(96,60),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&_ZN7S2840C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C2D0Ev,
};
extern void _ZN7S2840C6D1Ev();
extern void _ZN7S2840C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&_ZN7S2840C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C6D0Ev,
};
extern void _ZN8S2840C10D1Ev();
extern void _ZN8S2840C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&_ZN8S2840C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C10D0Ev,
};
extern void _ZN8S2840C11D1Ev();
extern void _ZN8S2840C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2840C118S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&_ZN8S2840C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn136_N8S2840C11D1Ev,_ZThn92_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn136_N8S2840C11D0Ev,_ZThn92_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2840C118S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn80_N8S2840C11D1Ev,_ZThn48_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn80_N8S2840C11D0Ev,_ZThn48_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C118S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C118S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn64_N8S2840C11D1Ev,_ZThn36_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn64_N8S2840C11D0Ev,_ZThn36_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2840C118S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S2840C10D1Ev,_ZThn92_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S2840C10D0Ev,_ZThn92_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S2840C10D1Ev,_ZThn48_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S2840C10D0Ev,_ZThn48_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2840C10D1Ev,_ZTvn12_n20_N8S2840C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2840C10D0Ev,_ZTvn12_n20_N8S2840C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C10D1Ev,_ZTvn12_n20_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C10D0Ev,_ZTvn12_n20_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S2840C10D1Ev,_ZThn36_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S2840C10D0Ev,_ZThn36_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S2840C10D1Ev,_ZThn120_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S2840C10D0Ev,_ZThn120_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__8S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-168,-120),
  ABISELECT(-104,-84),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn64_N7S2840C6D1Ev,_ZThn36_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn64_N7S2840C6D0Ev,_ZThn36_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S2840C6D1Ev,_ZTv0_n20_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn80_N7S2840C6D1Ev,_ZThn48_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2840C6D0Ev,_ZTv0_n20_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn80_N7S2840C6D0Ev,_ZThn48_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__7S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C6D1Ev,_ZTv0_n20_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C6D0Ev,_ZTv0_n20_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn136_N7S2840C6D1Ev,_ZThn92_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn136_N7S2840C6D0Ev,_ZThn92_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N7S2840C6D1Ev,_ZTvn12_n20_N7S2840C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2840C6D0Ev,_ZTvn12_n20_N7S2840C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__7S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C6D1Ev,_ZTvn12_n20_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C6D0Ev,_ZTvn12_n20_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2840C6D1Ev,_ZTv0_n16_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn168_N7S2840C6D1Ev,_ZThn120_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2840C6D0Ev,_ZTv0_n16_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn168_N7S2840C6D0Ev,_ZThn120_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__7S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-168,-120),
  ABISELECT(-104,-84),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C6D1Ev,_ZTv0_n16_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C6D0Ev,_ZTv0_n16_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn176_N7S2840C6D1Ev,_ZThn124_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn176_N7S2840C6D0Ev,_ZThn124_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__7S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-176,-124),
  ABISELECT(-176,-124),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2840C2D1Ev,_ZThn12_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C2D0Ev,_ZThn12_N7S2840C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C6__7S2840C2__7S2840C1[] = {
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C2D1Ev,_ZThn12_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C2D0Ev,_ZThn12_N7S2840C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S2840C2D1Ev,_ZThn48_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S2840C2D0Ev,_ZThn48_N7S2840C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2840C2__7S2840C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S2840C2D1Ev,_ZTv0_n20_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S2840C2D1Ev,_ZThn60_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2840C2D0Ev,_ZTv0_n20_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S2840C2D0Ev,_ZThn60_N7S2840C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__7S2840C2__7S2840C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C2D1Ev,_ZTv0_n20_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C2D0Ev,_ZTv0_n20_N7S2840C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn152_N7S2840C2D1Ev,_ZThn104_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn152_N7S2840C2D0Ev,_ZThn104_N7S2840C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C2__7S2840C1[] = {
  ABISELECT(-152,-104),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N7S2840C2D1Ev,_ZTvn12_n20_N7S2840C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2840C2D0Ev,_ZTvn12_n20_N7S2840C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__7S2840C2__7S2840C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C2D1Ev,_ZTvn12_n20_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C2D0Ev,_ZTvn12_n20_N7S2840C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2840C2D1Ev,_ZTv0_n16_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn184_N7S2840C2D1Ev,_ZThn132_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2840C2D0Ev,_ZTv0_n16_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn184_N7S2840C2D0Ev,_ZThn132_N7S2840C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__7S2840C2__7S2840C1[] = {
  ABISELECT(-184,-132),
  ABISELECT(-104,-84),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C2D1Ev,_ZTv0_n16_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C2D0Ev,_ZTv0_n16_N7S2840C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn192_N7S2840C2D1Ev,_ZThn136_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn192_N7S2840C2D0Ev,_ZThn136_N7S2840C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__7S2840C2__7S2840C1[] = {
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2840C2D1Ev,_ZTv0_n24_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn208_N7S2840C2D1Ev,_ZThn148_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2840C2D0Ev,_ZTv0_n24_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn208_N7S2840C2D0Ev,_ZThn148_N7S2840C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2840C14__7S2840C2__7S2840C1[] = {
  ABISELECT(-208,-148),
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2840C2D1Ev,_ZTv0_n24_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2840C2D0Ev,_ZTv0_n24_N7S2840C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N7S2840C2D1Ev,_ZTvn12_n24_N7S2840C2D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S2840C2D0Ev,_ZTvn12_n24_N7S2840C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C78S2840C14__A2__7S2840C2__7S2840C1[] = {
  ABISELECT(-144,-112),
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2840C2D1Ev,_ZTvn12_n24_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2840C2D0Ev,_ZTvn12_n24_N7S2840C2D0Ev),
};
extern void _ZN7S2840C7D1Ev();
extern void _ZN7S2840C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C7__7S2840C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&_ZN7S2840C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C7D0Ev,
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__7S2840C1[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C97S2840C7__7S2840C1[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C7__7S2840C1[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C9__7S2840C7__7S2840C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2840C7__7S2840C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__7S2840C1[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C9__A1__7S2840C1[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void _ZN8S2840C14D1Ev();
extern void _ZN8S2840C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2840C14__7S2840C1[] = {
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&_ZN8S2840C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C14D0Ev,
};
extern void _ZN7S2840C7D1Ev();
extern void _ZN7S2840C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C78S2840C14__A1__7S2840C1[] = {
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&_ZN7S2840C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C7D0Ev,
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C78S2840C14__A2__7S2840C1[] = {
  ABISELECT(-144,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C97S2840C78S2840C14__A2__7S2840C1[] = {
  ABISELECT(144,112),
  ABISELECT(144,112),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C78S2840C14__A1__7S2840C1[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C9__7S2840C78S2840C14__A1__7S2840C1[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2840C78S2840C14__A1__7S2840C1[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2840C14__7S2840C1[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev),
};
extern void ABISELECT(_ZThn16_N8S2840C14D1Ev,_ZThn12_N8S2840C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S2840C14D0Ev,_ZThn12_N8S2840C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C14__7S2840C1[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2840C14D1Ev,_ZThn12_N8S2840C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2840C14D0Ev,_ZThn12_N8S2840C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2840C14__7S2840C1[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev),
};
static  VTT_ENTRY vtt_S2840C1[] = {
  {&(_ZTV7S2840C1[9]),  9,71},
  {&(_tg__ZTV7S2840C2__7S2840C1[9]),  9,11},
  {&(_tg__ZTV7S2840C67S2840C2__7S2840C1[8]),  8,10},
  {&(_tg__ZTV8S2840C107S2840C67S2840C2__7S2840C1[6]),  6,8},
  {&(_tg__ZTV8S2840C118S2840C107S2840C67S2840C2__7S2840C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S2840C118S2840C107S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C7__8S2840C118S2840C107S2840C67S2840C2__7S2840C1[5]),  5,7},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C118S2840C107S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2840C118S2840C107S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2840C107S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C7__8S2840C107S2840C67S2840C2__7S2840C1[5]),  5,7},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C107S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2840C107S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__8S2840C107S2840C67S2840C2__7S2840C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__7S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C7__7S2840C67S2840C2__7S2840C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__7S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C97S2840C7__7S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__7S2840C67S2840C2__7S2840C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__7S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C6__7S2840C2__7S2840C1[8]),  8,10},
  {&(_tg__ZTV8S20760C9__A1__7S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C7__7S2840C2__7S2840C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__7S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C97S2840C7__7S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__7S2840C2__7S2840C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__7S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S2840C14__7S2840C2__7S2840C1[6]),  6,8},
  {&(_tg__ZTV7S2840C97S2840C78S2840C14__A2__7S2840C2__7S2840C1[3]),  3,5},
  {&(_ZTV7S2840C1[19]),  19,71},
  {&(_ZTV7S2840C1[28]),  28,71},
  {&(_ZTV7S2840C1[35]),  35,71},
  {&(_ZTV7S2840C1[45]),  45,71},
  {&(_ZTV7S2840C1[40]),  40,71},
  {&(_ZTV7S2840C1[51]),  51,71},
  {&(_ZTV7S2840C1[56]),  56,71},
  {&(_ZTV7S2840C1[64]),  64,71},
  {&(_ZTV7S2840C1[69]),  69,71},
  {&(_tg__ZTV7S2840C7__7S2840C1[4]),  4,6},
  {&(_tg__ZTV7S2840C97S2840C7__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C97S2840C7__7S2840C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2840C7__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C9__7S2840C7__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2840C7__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C9__A1__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S2840C14__7S2840C1[5]),  5,7},
  {&(_tg__ZTV7S2840C78S2840C14__A1__7S2840C1[4]),  4,6},
  {&(_tg__ZTV7S2840C97S2840C78S2840C14__A2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C97S2840C78S2840C14__A2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2840C78S2840C14__A1__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C9__7S2840C78S2840C14__A1__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2840C78S2840C14__A1__7S2840C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2840C14__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C14__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2840C14__7S2840C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2840C1[];
extern  VTBL_ENTRY _ZTV7S2840C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C1[];
static VTBL_ENTRY alt_thunk_names253[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2840C2D0Ev,_ZTv0_n24_N7S2840C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2840C2D0Ev,_ZThn148_N7S2840C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2840C2D1Ev,_ZTv0_n24_N7S2840C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2840C2D1Ev,_ZThn148_N7S2840C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C2D0Ev,_ZTv0_n16_N7S2840C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2840C2D0Ev,_ZThn132_N7S2840C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C2D1Ev,_ZTv0_n16_N7S2840C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2840C2D1Ev,_ZThn132_N7S2840C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C2D0Ev,_ZTv0_n20_N7S2840C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2840C2D0Ev,_ZThn60_N7S2840C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C2D1Ev,_ZTv0_n20_N7S2840C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2840C2D1Ev,_ZThn60_N7S2840C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2840C2D0Ev,_ZThn136_N7S2840C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2840C2D0Ev,_ZThn104_N7S2840C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C2D0Ev,_ZThn48_N7S2840C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2840C2D1Ev,_ZThn136_N7S2840C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2840C2D1Ev,_ZThn104_N7S2840C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C2D1Ev,_ZThn48_N7S2840C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C6D0Ev,_ZTv0_n16_N7S2840C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2840C6D0Ev,_ZThn120_N7S2840C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C6D1Ev,_ZTv0_n16_N7S2840C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2840C6D1Ev,_ZThn120_N7S2840C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C6D0Ev,_ZTv0_n20_N7S2840C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C6D0Ev,_ZThn48_N7S2840C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C6D1Ev,_ZTv0_n20_N7S2840C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C6D1Ev,_ZThn48_N7S2840C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S2840C6D0Ev,_ZThn124_N7S2840C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S2840C6D0Ev,_ZThn92_N7S2840C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2840C6D0Ev,_ZThn36_N7S2840C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S2840C6D1Ev,_ZThn124_N7S2840C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S2840C6D1Ev,_ZThn92_N7S2840C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2840C6D1Ev,_ZThn36_N7S2840C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S2840C10D0Ev,_ZThn120_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S2840C10D1Ev,_ZThn120_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C10D0Ev,_ZThn48_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C10D1Ev,_ZThn48_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C10D0Ev,_ZThn36_N8S2840C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C10D0Ev,_ZThn92_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C10D1Ev,_ZThn36_N8S2840C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C10D1Ev,_ZThn92_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C11D0Ev,_ZThn48_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C11D1Ev,_ZThn48_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C11D0Ev,_ZThn36_N8S2840C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C11D0Ev,_ZThn92_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C11D1Ev,_ZThn36_N8S2840C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C11D1Ev,_ZThn92_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2840C1D0Ev,_ZTv0_n24_N7S2840C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2840C1D0Ev,_ZThn148_N7S2840C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2840C1D1Ev,_ZTv0_n24_N7S2840C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2840C1D1Ev,_ZThn148_N7S2840C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C1D0Ev,_ZTv0_n16_N7S2840C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2840C1D0Ev,_ZThn132_N7S2840C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C1D1Ev,_ZTv0_n16_N7S2840C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2840C1D1Ev,_ZThn132_N7S2840C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C1D0Ev,_ZTv0_n20_N7S2840C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2840C1D0Ev,_ZThn60_N7S2840C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C1D1Ev,_ZTv0_n20_N7S2840C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2840C1D1Ev,_ZThn60_N7S2840C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C1D0Ev,_ZTv0_n12_N7S2840C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2840C1D0Ev,_ZThn136_N7S2840C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2840C1D0Ev,_ZThn104_N7S2840C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C1D0Ev,_ZThn48_N7S2840C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C1D1Ev,_ZTv0_n12_N7S2840C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2840C1D1Ev,_ZThn136_N7S2840C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2840C1D1Ev,_ZThn104_N7S2840C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C1D1Ev,_ZThn48_N7S2840C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2840C1 = {  "S2840C1", // class name
  bases_S2840C1, 20,
  &(vtc_S2840C1[0]), // expected_vtbl_contents
  &(vtt_S2840C1[0]), // expected_vtt_contents
  ABISELECT(464,320), // object size
  NSPAIRA(_ZTI7S2840C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2840C1),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2840C1),56, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names253,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2839C9  : virtual S20760C9 {
  virtual  ~S2839C9(); // _ZN7S2839C9D2Ev
  S2839C9(); // tgen
};
//SIG(-1 S2839C9) C1{ VBC2{ vd m FL} vd}


 S2839C9 ::~S2839C9(){ note_dtor("S2839C9", this);}
S2839C9 ::S2839C9(){ note_ctor("S2839C9", this);} // tgen

static void Test_S2839C9()
{
  extern Class_Descriptor cd_S2839C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S2839C9, buf);
    S2839C9 *dp, &lv = *(dp=new (buf) S2839C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S2839C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2839C9)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S2839C9");
    test_class_info(&lv, &cd_S2839C9);
    dp->~S2839C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2839C9(Test_S2839C9, "S2839C9", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S2839C9C1Ev();
extern void _ZN7S2839C9D2Ev();
Name_Map name_map_S2839C9[] = {
  NSPAIR(_ZN7S2839C9C1Ev),
  NSPAIR(_ZN7S2839C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S2839C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2839C9[];
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZThn8_N7S2839C9D1Ev,_ZThn4_N7S2839C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
extern void ABISELECT(_ZThn8_N7S2839C9D0Ev,_ZThn4_N7S2839C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2839C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S2839C9[];
static  VTT_ENTRY vtt_S2839C9[] = {
  {&(_ZTV7S2839C9[3]),  3,10},
  {&(_ZTV7S2839C9[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
static VTBL_ENTRY alt_thunk_names254[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2839C9D0Ev,_ZThn4_N7S2839C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2839C9D1Ev,_ZThn4_N7S2839C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2839C9 = {  "S2839C9", // class name
  bases_S2839C9, 1,
  &(vtc_S2839C9[0]), // expected_vtbl_contents
  &(vtt_S2839C9[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S2839C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2839C9),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2839C9),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names254,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2839C7  : S20760C9 , virtual S20760C13 , S2839C9 {
  ::S20760C13 s2839c7f0;
  ~S2839C7(); // tgen
  S2839C7(); // tgen
};
//SIG(-1 S2839C7) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S2839C7 ::~S2839C7(){ note_dtor("S2839C7", this);} // tgen
S2839C7 ::S2839C7(){ note_ctor("S2839C7", this);} // tgen

static void Test_S2839C7()
{
  extern Class_Descriptor cd_S2839C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S2839C7, buf);
    S2839C7 *dp, &lv = *(dp=new (buf) S2839C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S2839C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2839C7)");
    /*is_ambiguous_... S2839C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S2839C7");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S2839C7");
    check_base_class_offset(lv, (S20760C9*)(S2839C9*), ABISELECT(88,72), "S2839C7");
    check_base_class_offset(lv, (S2839C9*), ABISELECT(16,12), "S2839C7");
    check_field_offset(lv, s2839c7f0, ABISELECT(24,16), "S2839C7.s2839c7f0");
    test_class_info(&lv, &cd_S2839C7);
    dp->~S2839C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2839C7(Test_S2839C7, "S2839C7", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN7S2839C7C1Ev();
extern void _ZN7S2839C7D1Ev();
Name_Map name_map_S2839C7[] = {
  NSPAIR(_ZN7S2839C7C1Ev),
  NSPAIR(_ZN7S2839C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
static Base_Class bases_S2839C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S2839C9,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2839C7[];
extern void _ZN7S2839C7D1Ev();
extern void _ZN7S2839C7D0Ev();
extern void ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn88_N7S2839C7D1Ev,_ZThn72_N7S2839C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZThn88_N7S2839C7D0Ev,_ZThn72_N7S2839C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2839C7[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&_ZN7S2839C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C7D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern VTBL_ENTRY _ZTV7S2839C7[];
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C9__7S2839C7[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZThn72_N7S2839C9D1Ev,_ZThn60_N7S2839C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
extern void ABISELECT(_ZThn72_N7S2839C9D0Ev,_ZThn60_N7S2839C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C9__7S2839C7[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
static  VTT_ENTRY vtt_S2839C7[] = {
  {&(_ZTV7S2839C7[4]),  4,21},
  {&(_tg__ZTV7S2839C9__7S2839C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C9__7S2839C7[3]),  3,5},
  {&(_ZTV7S2839C7[14]),  14,21},
  {&(_ZTV7S2839C7[9]),  9,21},
  {&(_ZTV7S2839C7[19]),  19,21},
};
extern VTBL_ENTRY _ZTI7S2839C7[];
extern  VTBL_ENTRY _ZTV7S2839C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C7[];
static VTBL_ENTRY alt_thunk_names255[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2839C9D0Ev,_ZThn60_N7S2839C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2839C9D1Ev,_ZThn60_N7S2839C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S2839C7D0Ev,_ZThn72_N7S2839C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S2839C7D1Ev,_ZThn72_N7S2839C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2839C7 = {  "S2839C7", // class name
  bases_S2839C7, 4,
  &(vtc_S2839C7[0]), // expected_vtbl_contents
  &(vtt_S2839C7[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI7S2839C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S2839C7),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2839C7),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names255,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2839C11  : virtual S20760C13 , virtual S2839C7 {
  long double s2839c11f0;
  ~S2839C11(); // tgen
  S2839C11(); // tgen
};
//SIG(-1 S2839C11) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S2839C11 ::~S2839C11(){ note_dtor("S2839C11", this);} // tgen
S2839C11 ::S2839C11(){ note_ctor("S2839C11", this);} // tgen

static void Test_S2839C11()
{
  extern Class_Descriptor cd_S2839C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S2839C11, buf);
    S2839C11 *dp, &lv = *(dp=new (buf) S2839C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S2839C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2839C11)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S2839C11");
    check_base_class_offset(lv, (S20760C13*)(S2839C7*), ABISELECT(32,16), "S2839C11");
    /*is_ambiguous_... S2839C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C7*), ABISELECT(64,44), "S2839C11");
    check_base_class_offset(lv, (S20760C9*)(S2839C9*)(S2839C7*), ABISELECT(120,88), "S2839C11");
    check_base_class_offset(lv, (S2839C9*)(S2839C7*), ABISELECT(80,56), "S2839C11");
    check_base_class_offset(lv, (S2839C7*), ABISELECT(64,44), "S2839C11");
    check_field_offset(lv, s2839c11f0, ABISELECT(16,4), "S2839C11.s2839c11f0");
    test_class_info(&lv, &cd_S2839C11);
    dp->~S2839C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2839C11(Test_S2839C11, "S2839C11", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN8S2839C11C1Ev();
extern void _ZN8S2839C11D1Ev();
Name_Map name_map_S2839C11[] = {
  NSPAIR(_ZN8S2839C11C1Ev),
  NSPAIR(_ZN8S2839C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C7;
extern VTBL_ENTRY _ZTI7S2839C7[];
extern  VTBL_ENTRY _ZTV7S2839C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C7[];
static Base_Class bases_S2839C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S2839C9,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2839C7,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2839C11[];
extern void _ZN8S2839C11D1Ev();
extern void _ZN8S2839C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn32_N8S2839C11D1Ev,_ZThn16_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn32_N8S2839C11D0Ev,_ZThn16_N8S2839C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn64_N8S2839C11D1Ev,_ZThn44_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn64_N8S2839C11D0Ev,_ZThn44_N8S2839C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn120_N8S2839C11D1Ev,_ZThn88_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn120_N8S2839C11D0Ev,_ZThn88_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2839C11[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&_ZN8S2839C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C11D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S2839C11[];
extern void _ZN7S2839C7D1Ev();
extern void _ZN7S2839C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C11[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&_ZN7S2839C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C7D0Ev,
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C11[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZThn40_N7S2839C9D1Ev,_ZThn32_N7S2839C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
extern void ABISELECT(_ZThn40_N7S2839C9D0Ev,_ZThn32_N7S2839C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C97S2839C7__8S2839C11[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C7__8S2839C11[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C9__7S2839C7__8S2839C11[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2839C7__8S2839C11[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
static  VTT_ENTRY vtt_S2839C11[] = {
  {&(_ZTV8S2839C11[5]),  5,29},
  {&(_ZTV8S2839C11[10]),  10,29},
  {&(_ZTV8S2839C11[17]),  17,29},
  {&(_ZTV8S2839C11[22]),  22,29},
  {&(_ZTV8S2839C11[27]),  27,29},
  {&(_tg__ZTV7S2839C7__8S2839C11[4]),  4,6},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C97S2839C7__8S2839C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2839C7__8S2839C11[3]),  3,5},
  {&(_tg__ZTV7S2839C9__7S2839C7__8S2839C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2839C7__8S2839C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S2839C11[];
extern  VTBL_ENTRY _ZTV8S2839C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C11[];
static VTBL_ENTRY alt_thunk_names256[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2839C9D0Ev,_ZThn32_N7S2839C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2839C9D1Ev,_ZThn32_N7S2839C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C11D0Ev,_ZThn44_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C11D1Ev,_ZThn44_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S2839C11D0Ev,_ZThn88_N8S2839C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S2839C11D0Ev,_ZThn16_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S2839C11D1Ev,_ZThn88_N8S2839C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S2839C11D1Ev,_ZThn16_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2839C11 = {  "S2839C11", // class name
  bases_S2839C11, 5,
  &(vtc_S2839C11[0]), // expected_vtbl_contents
  &(vtt_S2839C11[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI8S2839C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S2839C11),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2839C11),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names256,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2839C10  : S4161C4_nt , S2839C11 , S20760C22_nt , virtual S2839C9 {
  virtual  ~S2839C10(); // _ZN8S2839C10D2Ev
  S2839C10(); // tgen
};
//SIG(-1 S2839C10) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S2839C10 ::~S2839C10(){ note_dtor("S2839C10", this);}
S2839C10 ::S2839C10(){ note_ctor("S2839C10", this);} // tgen

static void Test_S2839C10()
{
  extern Class_Descriptor cd_S2839C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S2839C10, buf);
    S2839C10 *dp, &lv = *(dp=new (buf) S2839C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S2839C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2839C10)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S2839C10");
    check_base_class_offset(lv, (S20760C13*)(S2839C11*), ABISELECT(48,24), "S2839C10");
    check_base_class_offset(lv, (S20760C13*)(S2839C7*), ABISELECT(48,24), "S2839C10");
    /*is_ambiguous_... S2839C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C7*), ABISELECT(80,52), "S2839C10");
    check_base_class_offset(lv, (S20760C9*)(S2839C9*)(S2839C7*), ABISELECT(136,96), "S2839C10");
    /*is_ambiguous_... S2839C10::S2839C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C9*), ABISELECT(136,96), "S2839C10");
    check_base_class_offset(lv, (S2839C9*)(S2839C7*), ABISELECT(96,64), "S2839C10");
    check_base_class_offset(lv, (S2839C7*)(S2839C11*), ABISELECT(80,52), "S2839C10");
    check_base_class_offset(lv, (S2839C11*), 0, "S2839C10");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S2839C10");
    /*is_ambiguous_... S2839C10::S2839C9 */ AMB_check_base_class_offset(lv, (S2839C9*), ABISELECT(152,108), "S2839C10");
    test_class_info(&lv, &cd_S2839C10);
    dp->~S2839C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2839C10(Test_S2839C10, "S2839C10", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN8S2839C10C1Ev();
extern void _ZN8S2839C10D2Ev();
Name_Map name_map_S2839C10[] = {
  NSPAIR(_ZN8S2839C10C1Ev),
  NSPAIR(_ZN8S2839C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C7;
extern VTBL_ENTRY _ZTI7S2839C7[];
extern  VTBL_ENTRY _ZTV7S2839C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C7[];
extern Class_Descriptor cd_S2839C11;
extern VTBL_ENTRY _ZTI8S2839C11[];
extern  VTBL_ENTRY _ZTV8S2839C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C11[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
static Base_Class bases_S2839C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S2839C9,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2839C7,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S2839C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2839C9,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2839C10[];
extern void _ZN8S2839C10D1Ev();
extern void _ZN8S2839C10D0Ev();
extern void ABISELECT(_ZThn40_N8S2839C10D1Ev,_ZThn20_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S2839C10D0Ev,_ZThn20_N8S2839C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S2839C10D1Ev,_ZThn24_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn48_N8S2839C10D0Ev,_ZThn24_N8S2839C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S2839C10D1Ev,_ZThn52_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S2839C10D0Ev,_ZThn52_N8S2839C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S2839C10D1Ev,_ZTvn12_n20_N8S2839C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2839C10D0Ev,_ZTvn12_n20_N8S2839C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S2839C10D1Ev,_ZThn96_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S2839C10D0Ev,_ZThn96_N8S2839C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn152_N8S2839C10D1Ev,_ZThn108_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn152_N8S2839C10D0Ev,_ZThn108_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2839C10[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&_ZN8S2839C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C10D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S2839C10D1Ev,_ZThn20_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S2839C10D0Ev,_ZThn20_N8S2839C10D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C10D1Ev,_ZTvn12_n20_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C10D0Ev,_ZTvn12_n20_N8S2839C10D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S2839C10[];
extern void _ZN8S2839C11D1Ev();
extern void _ZN8S2839C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2839C11__8S2839C10[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&_ZN8S2839C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn48_N8S2839C11D1Ev,_ZThn24_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn48_N8S2839C11D0Ev,_ZThn24_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2839C11__8S2839C10[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn80_N8S2839C11D1Ev,_ZThn52_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn80_N8S2839C11D0Ev,_ZThn52_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C11__8S2839C10[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C11__8S2839C10[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn136_N8S2839C11D1Ev,_ZThn96_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn136_N8S2839C11D0Ev,_ZThn96_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2839C11__8S2839C10[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
};
extern void _ZN7S2839C7D1Ev();
extern void _ZN7S2839C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C10[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&_ZN7S2839C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C7D0Ev,
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C10[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZThn40_N7S2839C9D1Ev,_ZThn32_N7S2839C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
extern void ABISELECT(_ZThn40_N7S2839C9D0Ev,_ZThn32_N7S2839C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C97S2839C7__8S2839C10[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C7__8S2839C10[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C9__7S2839C7__8S2839C10[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2839C7__8S2839C10[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__8S2839C10[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C9__A1__8S2839C10[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
static  VTT_ENTRY vtt_S2839C10[] = {
  {&(_ZTV8S2839C10[6]),  6,40},
  {&(_tg__ZTV8S2839C11__8S2839C10[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S2839C11__8S2839C10[3]),  3,5},
  {&(_tg__ZTV7S2839C7__8S2839C11__8S2839C10[5]),  5,7},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C11__8S2839C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2839C11__8S2839C10[3]),  3,5},
  {&(_ZTV8S2839C10[15]),  15,40},
  {&(_ZTV8S2839C10[22]),  22,40},
  {&(_ZTV8S2839C10[27]),  27,40},
  {&(_ZTV8S2839C10[32]),  32,40},
  {&(_ZTV8S2839C10[38]),  38,40},
  {&(_tg__ZTV7S2839C7__8S2839C10[4]),  4,6},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C97S2839C7__8S2839C10[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2839C7__8S2839C10[3]),  3,5},
  {&(_tg__ZTV7S2839C9__7S2839C7__8S2839C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2839C7__8S2839C10[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__8S2839C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C9__A1__8S2839C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S2839C10[];
extern  VTBL_ENTRY _ZTV8S2839C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C10[];
static VTBL_ENTRY alt_thunk_names257[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2839C9D0Ev,_ZThn32_N7S2839C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2839C9D1Ev,_ZThn32_N7S2839C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C11D0Ev,_ZThn52_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C11D1Ev,_ZThn52_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C11D0Ev,_ZThn96_N8S2839C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S2839C11D0Ev,_ZThn24_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C11D1Ev,_ZThn96_N8S2839C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S2839C11D1Ev,_ZThn24_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S2839C10D0Ev,_ZThn108_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S2839C10D1Ev,_ZThn108_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C10D0Ev,_ZThn52_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C10D1Ev,_ZThn52_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C10D0Ev,_ZThn96_N8S2839C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S2839C10D0Ev,_ZThn24_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C10D1Ev,_ZThn96_N8S2839C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S2839C10D1Ev,_ZThn24_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2839C10 = {  "S2839C10", // class name
  bases_S2839C10, 9,
  &(vtc_S2839C10[0]), // expected_vtbl_contents
  &(vtt_S2839C10[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI8S2839C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S2839C10),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2839C10),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names257,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2839C6  : virtual S4161C4_nt , virtual S20760C9 , virtual S2839C7 , S2839C10 , virtual S20759C5_nt {
  ~S2839C6(); // tgen
  S2839C6(); // tgen
};
//SIG(-1 S2839C6) C1{ VBC2{ m Fp} VBC3{ vd m FL} VBC4{ BC3 VBC5{ vd m Fi[6]} BC6{ VBC3 vd} FC5} BC7{ BC2 BC8{ VBC5 VBC4 FD} BC9{ vd m} VBC6 vd} VBC10{ vd m Fl}}


S2839C6 ::~S2839C6(){ note_dtor("S2839C6", this);} // tgen
S2839C6 ::S2839C6(){ note_ctor("S2839C6", this);} // tgen

static void Test_S2839C6()
{
  extern Class_Descriptor cd_S2839C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,32)];
    init_test(&cd_S2839C6, buf);
    S2839C6 *dp, &lv = *(dp=new (buf) S2839C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,124), "sizeof(S2839C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2839C6)");
    /*is_ambiguous_... S2839C6::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(48,24), "S2839C6");
    /*is_ambiguous_... S2839C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(56,28), "S2839C6");
    check_base_class_offset(lv, (S20760C9*)(S2839C9*)(S2839C7*), ABISELECT(56,28), "S2839C6");
    /*is_ambiguous_... S2839C6::S2839C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C9*), ABISELECT(56,28), "S2839C6");
    /*is_ambiguous_... S2839C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C7*), ABISELECT(72,40), "S2839C6");
    check_base_class_offset(lv, (S20760C13*)(S2839C7*), ABISELECT(128,84), "S2839C6");
    check_base_class_offset(lv, (S20760C13*)(S2839C11*)(S2839C10*), ABISELECT(128,84), "S2839C6");
    check_base_class_offset(lv, (S2839C9*)(S2839C7*), ABISELECT(88,52), "S2839C6");
    check_base_class_offset(lv, (S2839C7*), ABISELECT(72,40), "S2839C6");
    check_base_class_offset(lv, (S2839C7*)(S2839C11*)(S2839C10*), ABISELECT(72,40), "S2839C6");
    check_base_class_offset(lv, (S4161C4_nt*)(S2839C10*), ABISELECT(32,16), "S2839C6");
    check_base_class_offset(lv, (S2839C11*)(S2839C10*), 0, "S2839C6");
    check_base_class_offset(lv, (S20760C22_nt*)(S2839C10*), ABISELECT(40,20), "S2839C6");
    /*is_ambiguous_... S2839C10::S2839C9 */ AMB_check_base_class_offset(lv, (S2839C9*)(S2839C10*), ABISELECT(160,112), "S2839C6");
    check_base_class_offset(lv, (S2839C10*), 0, "S2839C6");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(168,116), "S2839C6");
    test_class_info(&lv, &cd_S2839C6);
    dp->~S2839C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2839C6(Test_S2839C6, "S2839C6", ABISELECT(192,124));

#else // __cplusplus

extern void _ZN7S2839C6C1Ev();
extern void _ZN7S2839C6D1Ev();
Name_Map name_map_S2839C6[] = {
  NSPAIR(_ZN7S2839C6C1Ev),
  NSPAIR(_ZN7S2839C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C7;
extern VTBL_ENTRY _ZTI7S2839C7[];
extern  VTBL_ENTRY _ZTV7S2839C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C7[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S2839C11;
extern VTBL_ENTRY _ZTI8S2839C11[];
extern  VTBL_ENTRY _ZTV8S2839C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C11[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C10;
extern VTBL_ENTRY _ZTI8S2839C10[];
extern  VTBL_ENTRY _ZTV8S2839C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C10[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S2839C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(56,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(128,84), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S2839C9,    ABISELECT(88,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2839C7,    ABISELECT(72,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S2839C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S2839C9,    ABISELECT(160,112), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S2839C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20759C5_nt,    ABISELECT(168,116), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2839C6[];
extern void _ZN7S2839C6D1Ev();
extern void _ZN7S2839C6D0Ev();
extern void ABISELECT(_ZThn40_N7S2839C6D1Ev,_ZThn20_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn40_N7S2839C6D0Ev,_ZThn20_N7S2839C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn56_N7S2839C6D1Ev,_ZThn28_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn56_N7S2839C6D0Ev,_ZThn28_N7S2839C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2839C6D1Ev,_ZTv0_n20_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn72_N7S2839C6D1Ev,_ZThn40_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2839C6D0Ev,_ZTv0_n20_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn72_N7S2839C6D0Ev,_ZThn40_N7S2839C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S2839C6D1Ev,_ZTvn12_n20_N7S2839C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2839C6D0Ev,_ZTvn12_n20_N7S2839C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn128_N7S2839C6D1Ev,_ZThn84_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn128_N7S2839C6D0Ev,_ZThn84_N7S2839C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2839C6D1Ev,_ZTv0_n16_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn160_N7S2839C6D1Ev,_ZThn112_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2839C6D0Ev,_ZTv0_n16_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn160_N7S2839C6D0Ev,_ZThn112_N7S2839C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn168_N7S2839C6D1Ev,_ZThn116_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn168_N7S2839C6D0Ev,_ZThn116_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2839C6[] = {
  ABISELECT(168,116),
  ABISELECT(48,24),
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&_ZN7S2839C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C6D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2839C6D1Ev,_ZThn20_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2839C6D0Ev,_ZThn20_N7S2839C6D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C6D1Ev,_ZTv0_n20_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C6D0Ev,_ZTv0_n20_N7S2839C6D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C6D1Ev,_ZTvn12_n20_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C6D0Ev,_ZTvn12_n20_N7S2839C6D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev),
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C6D1Ev,_ZTv0_n16_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C6D0Ev,_ZTv0_n16_N7S2839C6D0Ev),
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S2839C6[];
extern void _ZN8S2839C10D1Ev();
extern void _ZN8S2839C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2839C10__7S2839C6[] = {
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&_ZN8S2839C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C10D0Ev,
};
extern void _ZN8S2839C11D1Ev();
extern void _ZN8S2839C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2839C118S2839C10__7S2839C6[] = {
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&_ZN8S2839C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn128_N8S2839C11D1Ev,_ZThn84_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn128_N8S2839C11D0Ev,_ZThn84_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2839C118S2839C10__7S2839C6[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn72_N8S2839C11D1Ev,_ZThn40_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn72_N8S2839C11D0Ev,_ZThn40_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C118S2839C10__7S2839C6[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C118S2839C10__7S2839C6[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S2839C11D1Ev,_ZThn28_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S2839C11D0Ev,_ZThn28_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2839C118S2839C10__7S2839C6[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S2839C10D1Ev,_ZThn84_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S2839C10D0Ev,_ZThn84_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2839C10__7S2839C6[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn72_N8S2839C10D1Ev,_ZThn40_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn72_N8S2839C10D0Ev,_ZThn40_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C10__7S2839C6[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2839C10D1Ev,_ZTvn12_n20_N8S2839C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2839C10D0Ev,_ZTvn12_n20_N8S2839C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C10__7S2839C6[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C10D1Ev,_ZTvn12_n20_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C10D0Ev,_ZTvn12_n20_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S2839C10D1Ev,_ZThn28_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn56_N8S2839C10D0Ev,_ZThn28_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2839C10__7S2839C6[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn160_N8S2839C10D1Ev,_ZThn112_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn160_N8S2839C10D0Ev,_ZThn112_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__8S2839C10__7S2839C6[] = {
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev),
};
extern void _ZN7S2839C7D1Ev();
extern void _ZN7S2839C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C7__7S2839C6[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&_ZN7S2839C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C7D0Ev,
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__7S2839C6[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C97S2839C7__7S2839C6[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C7__7S2839C6[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C9__7S2839C7__7S2839C6[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2839C7__7S2839C6[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__7S2839C6[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C9__A1__7S2839C6[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
static  VTT_ENTRY vtt_S2839C6[] = {
  {&(_ZTV7S2839C6[8]),  8,47},
  {&(_tg__ZTV8S2839C10__7S2839C6[6]),  6,8},
  {&(_tg__ZTV8S2839C118S2839C10__7S2839C6[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S2839C118S2839C10__7S2839C6[3]),  3,5},
  {&(_tg__ZTV7S2839C7__8S2839C118S2839C10__7S2839C6[5]),  5,7},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C118S2839C10__7S2839C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2839C118S2839C10__7S2839C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2839C10__7S2839C6[3]),  3,5},
  {&(_tg__ZTV7S2839C7__8S2839C10__7S2839C6[5]),  5,7},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C10__7S2839C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2839C10__7S2839C6[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__8S2839C10__7S2839C6[4]),  4,6},
  {&(_ZTV7S2839C6[17]),  17,47},
  {&(_ZTV7S2839C6[24]),  24,47},
  {&(_ZTV7S2839C6[34]),  34,47},
  {&(_ZTV7S2839C6[29]),  29,47},
  {&(_ZTV7S2839C6[40]),  40,47},
  {&(_ZTV7S2839C6[45]),  45,47},
  {&(_tg__ZTV7S2839C7__7S2839C6[4]),  4,6},
  {&(_tg__ZTV7S2839C97S2839C7__7S2839C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C97S2839C7__7S2839C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2839C7__7S2839C6[3]),  3,5},
  {&(_tg__ZTV7S2839C9__7S2839C7__7S2839C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2839C7__7S2839C6[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__7S2839C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C9__A1__7S2839C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2839C6[];
extern  VTBL_ENTRY _ZTV7S2839C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C6[];
static VTBL_ENTRY alt_thunk_names258[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S2839C10D0Ev,_ZThn112_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S2839C10D1Ev,_ZThn112_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S2839C10D0Ev,_ZThn40_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S2839C10D1Ev,_ZThn40_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S2839C10D0Ev,_ZThn28_N8S2839C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2839C10D0Ev,_ZThn84_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S2839C10D1Ev,_ZThn28_N8S2839C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2839C10D1Ev,_ZThn84_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S2839C11D0Ev,_ZThn40_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S2839C11D1Ev,_ZThn40_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S2839C11D0Ev,_ZThn28_N8S2839C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2839C11D0Ev,_ZThn84_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S2839C11D1Ev,_ZThn28_N8S2839C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2839C11D1Ev,_ZThn84_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C6D0Ev,_ZTv0_n16_N7S2839C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2839C6D0Ev,_ZThn112_N7S2839C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C6D1Ev,_ZTv0_n16_N7S2839C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2839C6D1Ev,_ZThn112_N7S2839C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C6D0Ev,_ZTv0_n20_N7S2839C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2839C6D0Ev,_ZThn40_N7S2839C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C6D1Ev,_ZTv0_n20_N7S2839C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2839C6D1Ev,_ZThn40_N7S2839C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2839C6D0Ev,_ZThn116_N7S2839C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2839C6D0Ev,_ZThn84_N7S2839C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C6D0Ev,_ZThn28_N7S2839C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2839C6D1Ev,_ZThn116_N7S2839C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2839C6D1Ev,_ZThn84_N7S2839C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C6D1Ev,_ZThn28_N7S2839C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2839C6 = {  "S2839C6", // class name
  bases_S2839C6, 12,
  &(vtc_S2839C6[0]), // expected_vtbl_contents
  &(vtt_S2839C6[0]), // expected_vtt_contents
  ABISELECT(192,124), // object size
  NSPAIRA(_ZTI7S2839C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S2839C6),47, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2839C6),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names258,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2839C14  : virtual S20760C13 , S2839C7 , virtual S4161C4_nt {
  ::S2839C6 s2839c14f0;
  ~S2839C14(); // tgen
  S2839C14(); // tgen
};
//SIG(-1 S2839C14) C1{ VBC2{ vd m Fi[6]} BC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} VBC6{ m Fp} FC7{ VBC6 VBC4 VBC3 BC8{ BC6 BC9{ VBC2 VBC3 FD} BC10{ vd m} VBC5 vd} VBC11{ vd m Fl}}}


S2839C14 ::~S2839C14(){ note_dtor("S2839C14", this);} // tgen
S2839C14 ::S2839C14(){ note_ctor("S2839C14", this);} // tgen

static void Test_S2839C14()
{
  extern Class_Descriptor cd_S2839C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,54)];
    init_test(&cd_S2839C14, buf);
    S2839C14 *dp, &lv = *(dp=new (buf) S2839C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,212), "sizeof(S2839C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2839C14)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(256,168), "S2839C14");
    check_base_class_offset(lv, (S20760C13*)(S2839C7*), ABISELECT(256,168), "S2839C14");
    /*is_ambiguous_... S2839C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C7*), 0, "S2839C14");
    check_base_class_offset(lv, (S20760C9*)(S2839C9*)(S2839C7*), ABISELECT(288,196), "S2839C14");
    check_base_class_offset(lv, (S2839C9*)(S2839C7*), ABISELECT(16,12), "S2839C14");
    check_base_class_offset(lv, (S2839C7*), 0, "S2839C14");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(304,208), "S2839C14");
    check_field_offset(lv, s2839c14f0, ABISELECT(64,44), "S2839C14.s2839c14f0");
    test_class_info(&lv, &cd_S2839C14);
    dp->~S2839C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2839C14(Test_S2839C14, "S2839C14", ABISELECT(320,212));

#else // __cplusplus

extern void _ZN8S2839C14C1Ev();
extern void _ZN8S2839C14D1Ev();
Name_Map name_map_S2839C14[] = {
  NSPAIR(_ZN8S2839C14C1Ev),
  NSPAIR(_ZN8S2839C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C7;
extern VTBL_ENTRY _ZTI7S2839C7[];
extern  VTBL_ENTRY _ZTV7S2839C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C7[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S2839C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(256,168), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(288,196), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S2839C9,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2839C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2839C14[];
extern void _ZN8S2839C14D1Ev();
extern void _ZN8S2839C14D0Ev();
extern void ABISELECT(_ZThn16_N8S2839C14D1Ev,_ZThn12_N8S2839C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S2839C14D0Ev,_ZThn12_N8S2839C14D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2839C14D1Ev,_ZThn168_N8S2839C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev)();
extern void ABISELECT(_ZThn256_N8S2839C14D0Ev,_ZThn168_N8S2839C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev)();
extern void ABISELECT(_ZThn288_N8S2839C14D1Ev,_ZThn196_N8S2839C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev)();
extern void ABISELECT(_ZThn288_N8S2839C14D0Ev,_ZThn196_N8S2839C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2839C14[] = {
  ABISELECT(304,208),
  ABISELECT(288,196),
  ABISELECT(256,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&_ZN8S2839C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C14D0Ev,
  ABISELECT(272,184),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2839C14D1Ev,_ZThn12_N8S2839C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2839C14D0Ev,_ZThn12_N8S2839C14D0Ev),
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev),
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S2839C14[];
extern void _ZN7S2839C7D1Ev();
extern void _ZN7S2839C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C14[] = {
  ABISELECT(288,196),
  ABISELECT(256,168),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&_ZN7S2839C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C7D0Ev,
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C14[] = {
  ABISELECT(272,184),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZThn272_N7S2839C9D1Ev,_ZThn184_N7S2839C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
extern void ABISELECT(_ZThn272_N7S2839C9D0Ev,_ZThn184_N7S2839C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C97S2839C7__8S2839C14[] = {
  ABISELECT(-272,-184),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn256_N7S2839C7D1Ev,_ZThn168_N7S2839C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZThn256_N7S2839C7D0Ev,_ZThn168_N7S2839C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C7__8S2839C14[] = {
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C9__7S2839C7__8S2839C14[] = {
  ABISELECT(272,184),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn288_N7S2839C7D1Ev,_ZThn196_N7S2839C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZThn288_N7S2839C7D0Ev,_ZThn196_N7S2839C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2839C7__8S2839C14[] = {
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
static  VTT_ENTRY vtt_S2839C14[] = {
  {&(_ZTV8S2839C14[5]),  5,22},
  {&(_tg__ZTV7S2839C7__8S2839C14[4]),  4,6},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C97S2839C7__8S2839C14[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2839C7__8S2839C14[3]),  3,5},
  {&(_tg__ZTV7S2839C9__7S2839C7__8S2839C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2839C7__8S2839C14[3]),  3,5},
  {&(_ZTV8S2839C14[15]),  15,22},
  {&(_ZTV8S2839C14[10]),  10,22},
  {&(_ZTV8S2839C14[20]),  20,22},
};
extern VTBL_ENTRY _ZTI8S2839C14[];
extern  VTBL_ENTRY _ZTV8S2839C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C14[];
static VTBL_ENTRY alt_thunk_names259[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S2839C7D0Ev,_ZThn196_N7S2839C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S2839C7D0Ev,_ZThn168_N7S2839C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S2839C7D1Ev,_ZThn196_N7S2839C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S2839C7D1Ev,_ZThn168_N7S2839C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S2839C9D0Ev,_ZThn184_N7S2839C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S2839C9D1Ev,_ZThn184_N7S2839C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S2839C14D0Ev,_ZThn196_N8S2839C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S2839C14D0Ev,_ZThn168_N8S2839C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S2839C14D1Ev,_ZThn196_N8S2839C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S2839C14D1Ev,_ZThn168_N8S2839C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2839C14 = {  "S2839C14", // class name
  bases_S2839C14, 6,
  &(vtc_S2839C14[0]), // expected_vtbl_contents
  &(vtt_S2839C14[0]), // expected_vtt_contents
  ABISELECT(320,212), // object size
  NSPAIRA(_ZTI8S2839C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S2839C14),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2839C14),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names259,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2839C2  : S4228C37 , S20760C9 , virtual S4161C4_nt , S2839C6 , virtual S2839C14 {
  int s2839c2f0;
  virtual  ~S2839C2(); // _ZN7S2839C2D2Ev
  S2839C2(); // tgen
};
//SIG(-1 S2839C2) C1{ BC2{ m} BC3{ vd m FL} VBC4{ m Fp} BC5{ VBC4 VBC3 VBC6{ BC3 VBC7{ vd m Fi[6]} BC8{ VBC3 vd} FC7} BC9{ BC4 BC10{ VBC7 VBC6 FD} BC11{ vd m} VBC8 vd} VBC12{ vd m Fl}} VBC13{ VBC7 BC6 VBC4 FC5} vd Fi}


 S2839C2 ::~S2839C2(){ note_dtor("S2839C2", this);}
S2839C2 ::S2839C2(){ note_ctor("S2839C2", this);} // tgen

static void Test_S2839C2()
{
  extern Class_Descriptor cd_S2839C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,78)];
    init_test(&cd_S2839C2, buf);
    S2839C2 *dp, &lv = *(dp=new (buf) S2839C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S2839C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2839C2)");
    check_base_class_offset(lv, (S4228C37*), 0, "S2839C2");
    /*is_ambiguous_... S2839C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S2839C2");
    /*is_ambiguous_... S2839C2::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(72,40), "S2839C2");
    /*is_ambiguous_... S2839C6::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S2839C6*), ABISELECT(72,40), "S2839C2");
    check_base_class_offset(lv, (S4161C4_nt*)(S2839C14*), ABISELECT(72,40), "S2839C2");
    /*is_ambiguous_... S2839C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C6*), ABISELECT(80,44), "S2839C2");
    /*is_ambiguous_... S2839C2::S2839C7 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C9*)(S2839C7*), ABISELECT(80,44), "S2839C2");
    /*is_ambiguous_... S2839C2::S2839C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C9*), ABISELECT(80,44), "S2839C2");
    check_base_class_offset(lv, (S20760C9*)(S2839C9*)(S2839C7*)(S2839C14*), ABISELECT(80,44), "S2839C2");
    /*is_ambiguous_... S2839C2::S2839C7 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C7*), ABISELECT(96,56), "S2839C2");
    /*is_ambiguous_... S2839C2::S2839C7 */ AMB_check_base_class_offset(lv, (S20760C13*)(S2839C7*), ABISELECT(152,100), "S2839C2");
    check_base_class_offset(lv, (S20760C13*)(S2839C11*)(S2839C10*)(S2839C6*), ABISELECT(152,100), "S2839C2");
    check_base_class_offset(lv, (S20760C13*)(S2839C14*), ABISELECT(152,100), "S2839C2");
    check_base_class_offset(lv, (S20760C13*)(S2839C7*)(S2839C14*), ABISELECT(152,100), "S2839C2");
    /*is_ambiguous_... S2839C2::S2839C7 */ AMB_check_base_class_offset(lv, (S2839C9*)(S2839C7*), ABISELECT(112,68), "S2839C2");
    check_base_class_offset(lv, (S2839C7*)(S2839C6*), ABISELECT(96,56), "S2839C2");
    check_base_class_offset(lv, (S2839C7*)(S2839C11*)(S2839C10*)(S2839C6*), ABISELECT(96,56), "S2839C2");
    check_base_class_offset(lv, (S4161C4_nt*)(S2839C10*)(S2839C6*), ABISELECT(48,28), "S2839C2");
    check_base_class_offset(lv, (S2839C11*)(S2839C10*)(S2839C6*), ABISELECT(16,12), "S2839C2");
    check_base_class_offset(lv, (S20760C22_nt*)(S2839C10*)(S2839C6*), ABISELECT(56,32), "S2839C2");
    /*is_ambiguous_... S2839C10::S2839C9 */ AMB_check_base_class_offset(lv, (S2839C9*)(S2839C10*)(S2839C6*), ABISELECT(184,128), "S2839C2");
    check_base_class_offset(lv, (S2839C10*)(S2839C6*), ABISELECT(16,12), "S2839C2");
    check_base_class_offset(lv, (S20759C5_nt*)(S2839C6*), ABISELECT(192,132), "S2839C2");
    check_base_class_offset(lv, (S2839C6*), ABISELECT(16,12), "S2839C2");
    /*is_ambiguous_... S2839C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C7*)(S2839C14*), ABISELECT(208,140), "S2839C2");
    check_base_class_offset(lv, (S2839C9*)(S2839C7*)(S2839C14*), ABISELECT(224,152), "S2839C2");
    check_base_class_offset(lv, (S2839C7*)(S2839C14*), ABISELECT(208,140), "S2839C2");
    check_base_class_offset(lv, (S2839C14*), ABISELECT(208,140), "S2839C2");
    check_field_offset(lv, s2839c2f0, ABISELECT(64,36), "S2839C2.s2839c2f0");
    test_class_info(&lv, &cd_S2839C2);
    dp->~S2839C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2839C2(Test_S2839C2, "S2839C2", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN7S2839C2C1Ev();
extern void _ZN7S2839C2D2Ev();
Name_Map name_map_S2839C2[] = {
  NSPAIR(_ZN7S2839C2C1Ev),
  NSPAIR(_ZN7S2839C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C7;
extern VTBL_ENTRY _ZTI7S2839C7[];
extern  VTBL_ENTRY _ZTV7S2839C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C7[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S2839C11;
extern VTBL_ENTRY _ZTI8S2839C11[];
extern  VTBL_ENTRY _ZTV8S2839C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C11[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C10;
extern VTBL_ENTRY _ZTI8S2839C10[];
extern  VTBL_ENTRY _ZTV8S2839C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C10[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S2839C6;
extern VTBL_ENTRY _ZTI7S2839C6[];
extern  VTBL_ENTRY _ZTV7S2839C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C6[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C7;
extern VTBL_ENTRY _ZTI7S2839C7[];
extern  VTBL_ENTRY _ZTV7S2839C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C7[];
extern Class_Descriptor cd_S2839C14;
extern VTBL_ENTRY _ZTI8S2839C14[];
extern  VTBL_ENTRY _ZTV8S2839C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C14[];
static Base_Class bases_S2839C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,100), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S2839C9,    ABISELECT(112,68), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2839C7,    ABISELECT(96,56), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2839C11,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2839C9,    ABISELECT(184,128), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S2839C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20759C5_nt,    ABISELECT(192,132), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S2839C6,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2839C9,    ABISELECT(224,152), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2839C7,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S2839C14,    ABISELECT(208,140), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2839C2[];
extern void _ZN7S2839C2D1Ev();
extern void _ZN7S2839C2D0Ev();
extern void ABISELECT(_ZThn16_N7S2839C2D1Ev,_ZThn12_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C2D0Ev,_ZThn12_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S2839C2D1Ev,_ZThn32_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S2839C2D0Ev,_ZThn32_N7S2839C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S2839C2D1Ev,_ZThn44_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S2839C2D0Ev,_ZThn44_N7S2839C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2839C2D1Ev,_ZTv0_n20_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S2839C2D1Ev,_ZThn56_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2839C2D0Ev,_ZTv0_n20_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S2839C2D0Ev,_ZThn56_N7S2839C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S2839C2D1Ev,_ZTvn12_n20_N7S2839C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2839C2D0Ev,_ZTvn12_n20_N7S2839C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn152_N7S2839C2D1Ev,_ZThn100_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn152_N7S2839C2D0Ev,_ZThn100_N7S2839C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2839C2D1Ev,_ZTv0_n16_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn184_N7S2839C2D1Ev,_ZThn128_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2839C2D0Ev,_ZTv0_n16_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn184_N7S2839C2D0Ev,_ZThn128_N7S2839C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn192_N7S2839C2D1Ev,_ZThn132_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn192_N7S2839C2D0Ev,_ZThn132_N7S2839C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2839C2D1Ev,_ZTv0_n24_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn208_N7S2839C2D1Ev,_ZThn140_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2839C2D0Ev,_ZTv0_n24_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn208_N7S2839C2D0Ev,_ZThn140_N7S2839C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S2839C2D1Ev,_ZTvn12_n24_N7S2839C2D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S2839C2D0Ev,_ZTvn12_n24_N7S2839C2D0Ev)();
static  VTBL_ENTRY vtc_S2839C2[] = {
  ABISELECT(208,140),
  ABISELECT(192,132),
  ABISELECT(184,128),
  ABISELECT(152,100),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&_ZN7S2839C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C2D0Ev,
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C2D1Ev,_ZThn12_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C2D0Ev,_ZThn12_N7S2839C2D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S2839C2D1Ev,_ZThn32_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S2839C2D0Ev,_ZThn32_N7S2839C2D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C2D1Ev,_ZTv0_n20_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C2D0Ev,_ZTv0_n20_N7S2839C2D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C2D1Ev,_ZTvn12_n20_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C2D0Ev,_ZTvn12_n20_N7S2839C2D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev),
  ABISELECT(-184,-128),
  ABISELECT(-104,-84),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C2D1Ev,_ZTv0_n16_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C2D0Ev,_ZTv0_n16_N7S2839C2D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev),
  ABISELECT(-208,-140),
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2839C2D1Ev,_ZTv0_n24_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2839C2D0Ev,_ZTv0_n24_N7S2839C2D0Ev),
  ABISELECT(-144,-108),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2839C2D1Ev,_ZTvn12_n24_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2839C2D0Ev,_ZTvn12_n24_N7S2839C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S2839C2[];
extern void _ZN7S2839C6D1Ev();
extern void _ZN7S2839C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C6__7S2839C2[] = {
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&_ZN7S2839C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C6D0Ev,
};
extern void _ZN8S2839C10D1Ev();
extern void _ZN8S2839C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&_ZN8S2839C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C10D0Ev,
};
extern void _ZN8S2839C11D1Ev();
extern void _ZN8S2839C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2839C118S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&_ZN8S2839C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn136_N8S2839C11D1Ev,_ZThn88_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn136_N8S2839C11D0Ev,_ZThn88_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2839C118S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn80_N8S2839C11D1Ev,_ZThn44_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn80_N8S2839C11D0Ev,_ZThn44_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C118S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C118S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn64_N8S2839C11D1Ev,_ZThn32_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn64_N8S2839C11D0Ev,_ZThn32_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2839C118S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S2839C10D1Ev,_ZThn88_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S2839C10D0Ev,_ZThn88_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S2839C10D1Ev,_ZThn44_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S2839C10D0Ev,_ZThn44_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2839C10D1Ev,_ZTvn12_n20_N8S2839C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2839C10D0Ev,_ZTvn12_n20_N8S2839C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C10D1Ev,_ZTvn12_n20_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C10D0Ev,_ZTvn12_n20_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S2839C10D1Ev,_ZThn32_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S2839C10D0Ev,_ZThn32_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S2839C10D1Ev,_ZThn116_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S2839C10D0Ev,_ZThn116_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__8S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn64_N7S2839C6D1Ev,_ZThn32_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn64_N7S2839C6D0Ev,_ZThn32_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C6__7S2839C2[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S2839C6D1Ev,_ZTv0_n20_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn80_N7S2839C6D1Ev,_ZThn44_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2839C6D0Ev,_ZTv0_n20_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn80_N7S2839C6D0Ev,_ZThn44_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__7S2839C6__7S2839C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C6D1Ev,_ZTv0_n20_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C6D0Ev,_ZTv0_n20_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn136_N7S2839C6D1Ev,_ZThn88_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn136_N7S2839C6D0Ev,_ZThn88_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C6__7S2839C2[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N7S2839C6D1Ev,_ZTvn12_n20_N7S2839C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2839C6D0Ev,_ZTvn12_n20_N7S2839C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__7S2839C6__7S2839C2[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C6D1Ev,_ZTvn12_n20_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C6D0Ev,_ZTvn12_n20_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2839C6D1Ev,_ZTv0_n16_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn168_N7S2839C6D1Ev,_ZThn116_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2839C6D0Ev,_ZTv0_n16_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn168_N7S2839C6D0Ev,_ZThn116_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__7S2839C6__7S2839C2[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C6D1Ev,_ZTv0_n16_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C6D0Ev,_ZTv0_n16_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn176_N7S2839C6D1Ev,_ZThn120_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn176_N7S2839C6D0Ev,_ZThn120_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__7S2839C6__7S2839C2[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev),
};
extern void _ZN7S2839C7D1Ev();
extern void _ZN7S2839C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C7__7S2839C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&_ZN7S2839C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C7D0Ev,
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__7S2839C2[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C97S2839C7__7S2839C2[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C7__7S2839C2[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C9__7S2839C7__7S2839C2[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2839C7__7S2839C2[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__7S2839C2[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C9__A1__7S2839C2[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void _ZN8S2839C14D1Ev();
extern void _ZN8S2839C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2839C14__7S2839C2[] = {
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&_ZN8S2839C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C14D0Ev,
};
extern void _ZN7S2839C7D1Ev();
extern void _ZN7S2839C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C78S2839C14__A1__7S2839C2[] = {
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&_ZN7S2839C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C7D0Ev,
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C78S2839C14__A2__7S2839C2[] = {
  ABISELECT(-144,-108),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C97S2839C78S2839C14__A2__7S2839C2[] = {
  ABISELECT(144,108),
  ABISELECT(144,108),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C78S2839C14__A1__7S2839C2[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C9__7S2839C78S2839C14__A1__7S2839C2[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2839C78S2839C14__A1__7S2839C2[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2839C14__7S2839C2[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev),
};
extern void ABISELECT(_ZThn16_N8S2839C14D1Ev,_ZThn12_N8S2839C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S2839C14D0Ev,_ZThn12_N8S2839C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C14__7S2839C2[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2839C14D1Ev,_ZThn12_N8S2839C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2839C14D0Ev,_ZThn12_N8S2839C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2839C14__7S2839C2[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev),
};
static  VTT_ENTRY vtt_S2839C2[] = {
  {&(_ZTV7S2839C2[9]),  9,71},
  {&(_tg__ZTV7S2839C6__7S2839C2[8]),  8,10},
  {&(_tg__ZTV8S2839C107S2839C6__7S2839C2[6]),  6,8},
  {&(_tg__ZTV8S2839C118S2839C107S2839C6__7S2839C2[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S2839C118S2839C107S2839C6__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C7__8S2839C118S2839C107S2839C6__7S2839C2[5]),  5,7},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C118S2839C107S2839C6__7S2839C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2839C118S2839C107S2839C6__7S2839C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2839C107S2839C6__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C7__8S2839C107S2839C6__7S2839C2[5]),  5,7},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C107S2839C6__7S2839C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2839C107S2839C6__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__8S2839C107S2839C6__7S2839C2[4]),  4,6},
  {&(_tg__ZTV8S20760C9__7S2839C6__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C7__7S2839C6__7S2839C2[5]),  5,7},
  {&(_tg__ZTV9S20760C13__7S2839C6__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C97S2839C7__7S2839C6__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__7S2839C6__7S2839C2[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__7S2839C6__7S2839C2[3]),  3,5},
  {&(_ZTV7S2839C2[19]),  19,71},
  {&(_ZTV7S2839C2[28]),  28,71},
  {&(_ZTV7S2839C2[35]),  35,71},
  {&(_ZTV7S2839C2[45]),  45,71},
  {&(_ZTV7S2839C2[40]),  40,71},
  {&(_ZTV7S2839C2[51]),  51,71},
  {&(_ZTV7S2839C2[56]),  56,71},
  {&(_ZTV7S2839C2[64]),  64,71},
  {&(_ZTV7S2839C2[69]),  69,71},
  {&(_tg__ZTV7S2839C7__7S2839C2[4]),  4,6},
  {&(_tg__ZTV7S2839C97S2839C7__7S2839C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C97S2839C7__7S2839C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2839C7__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C9__7S2839C7__7S2839C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2839C7__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__7S2839C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C9__A1__7S2839C2[3]),  3,5},
  {&(_tg__ZTV8S2839C14__7S2839C2[5]),  5,7},
  {&(_tg__ZTV7S2839C78S2839C14__A1__7S2839C2[4]),  4,6},
  {&(_tg__ZTV7S2839C97S2839C78S2839C14__A2__7S2839C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C97S2839C78S2839C14__A2__7S2839C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2839C78S2839C14__A1__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C9__7S2839C78S2839C14__A1__7S2839C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2839C78S2839C14__A1__7S2839C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2839C14__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C14__7S2839C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2839C14__7S2839C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2839C2[];
extern  VTBL_ENTRY _ZTV7S2839C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C2[];
static VTBL_ENTRY alt_thunk_names260[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C6D0Ev,_ZTv0_n16_N7S2839C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2839C6D0Ev,_ZThn116_N7S2839C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C6D1Ev,_ZTv0_n16_N7S2839C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2839C6D1Ev,_ZThn116_N7S2839C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C6D0Ev,_ZTv0_n20_N7S2839C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C6D0Ev,_ZThn44_N7S2839C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C6D1Ev,_ZTv0_n20_N7S2839C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C6D1Ev,_ZThn44_N7S2839C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S2839C6D0Ev,_ZThn120_N7S2839C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S2839C6D0Ev,_ZThn88_N7S2839C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2839C6D0Ev,_ZThn32_N7S2839C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S2839C6D1Ev,_ZThn120_N7S2839C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S2839C6D1Ev,_ZThn88_N7S2839C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2839C6D1Ev,_ZThn32_N7S2839C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S2839C10D0Ev,_ZThn116_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S2839C10D1Ev,_ZThn116_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C10D0Ev,_ZThn44_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C10D1Ev,_ZThn44_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C10D0Ev,_ZThn32_N8S2839C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C10D0Ev,_ZThn88_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C10D1Ev,_ZThn32_N8S2839C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C10D1Ev,_ZThn88_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C11D0Ev,_ZThn44_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C11D1Ev,_ZThn44_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C11D0Ev,_ZThn32_N8S2839C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C11D0Ev,_ZThn88_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C11D1Ev,_ZThn32_N8S2839C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C11D1Ev,_ZThn88_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2839C2D0Ev,_ZTv0_n24_N7S2839C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2839C2D0Ev,_ZThn140_N7S2839C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2839C2D1Ev,_ZTv0_n24_N7S2839C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2839C2D1Ev,_ZThn140_N7S2839C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C2D0Ev,_ZTv0_n16_N7S2839C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2839C2D0Ev,_ZThn128_N7S2839C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C2D1Ev,_ZTv0_n16_N7S2839C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2839C2D1Ev,_ZThn128_N7S2839C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C2D0Ev,_ZTv0_n20_N7S2839C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2839C2D0Ev,_ZThn56_N7S2839C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C2D1Ev,_ZTv0_n20_N7S2839C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2839C2D1Ev,_ZThn56_N7S2839C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2839C2D0Ev,_ZThn132_N7S2839C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2839C2D0Ev,_ZThn100_N7S2839C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C2D0Ev,_ZThn44_N7S2839C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2839C2D1Ev,_ZThn132_N7S2839C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2839C2D1Ev,_ZThn100_N7S2839C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C2D1Ev,_ZThn44_N7S2839C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2839C2 = {  "S2839C2", // class name
  bases_S2839C2, 19,
  &(vtc_S2839C2[0]), // expected_vtbl_contents
  &(vtt_S2839C2[0]), // expected_vtt_contents
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI7S2839C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S2839C2),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2839C2),46, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names260,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2839C1  : S2839C2 {
  ::S2840C15_nt s2839c1f0;
  ~S2839C1(); // tgen
  S2839C1(); // tgen
};
//SIG(1 S2839C1) C1{ BC2{ BC3{ m} BC4{ vd m FL} VBC5{ m Fp} BC6{ VBC5 VBC4 VBC7{ BC4 VBC8{ vd m Fi[6]} BC9{ VBC4 vd} FC8} BC10{ BC5 BC11{ VBC8 VBC7 FD} BC12{ vd m} VBC9 vd} VBC13{ vd m Fl}} VBC14{ VBC8 BC7 VBC5 FC6} vd Fi} FU15{ m Fi}}


S2839C1 ::~S2839C1(){ note_dtor("S2839C1", this);} // tgen
S2839C1 ::S2839C1(){ note_ctor("S2839C1", this);} // tgen

static void Test_S2839C1()
{
  extern Class_Descriptor cd_S2839C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,79)];
    init_test(&cd_S2839C1, buf);
    S2839C1 *dp, &lv = *(dp=new (buf) S2839C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,312), "sizeof(S2839C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2839C1)");
    check_base_class_offset(lv, (S4228C37*)(S2839C2*), 0, "S2839C1");
    /*is_ambiguous_... S2839C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C2*), 0, "S2839C1");
    /*is_ambiguous_... S2839C2::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S2839C2*), ABISELECT(72,44), "S2839C1");
    /*is_ambiguous_... S2839C6::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S2839C6*)(S2839C2*), ABISELECT(72,44), "S2839C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S2839C14*), ABISELECT(72,44), "S2839C1");
    /*is_ambiguous_... S2839C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C6*)(S2839C2*), ABISELECT(80,48), "S2839C1");
    /*is_ambiguous_... S2839C1::S2839C7 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C9*)(S2839C7*), ABISELECT(80,48), "S2839C1");
    /*is_ambiguous_... S2839C1::S2839C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C9*), ABISELECT(80,48), "S2839C1");
    check_base_class_offset(lv, (S20760C9*)(S2839C9*)(S2839C7*)(S2839C14*), ABISELECT(80,48), "S2839C1");
    /*is_ambiguous_... S2839C1::S2839C7 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C7*), ABISELECT(96,60), "S2839C1");
    /*is_ambiguous_... S2839C1::S2839C7 */ AMB_check_base_class_offset(lv, (S20760C13*)(S2839C7*), ABISELECT(152,104), "S2839C1");
    check_base_class_offset(lv, (S20760C13*)(S2839C11*)(S2839C10*)(S2839C6*)(S2839C2*), ABISELECT(152,104), "S2839C1");
    check_base_class_offset(lv, (S20760C13*)(S2839C14*), ABISELECT(152,104), "S2839C1");
    check_base_class_offset(lv, (S20760C13*)(S2839C7*)(S2839C14*), ABISELECT(152,104), "S2839C1");
    /*is_ambiguous_... S2839C1::S2839C7 */ AMB_check_base_class_offset(lv, (S2839C9*)(S2839C7*), ABISELECT(112,72), "S2839C1");
    check_base_class_offset(lv, (S2839C7*)(S2839C6*)(S2839C2*), ABISELECT(96,60), "S2839C1");
    check_base_class_offset(lv, (S2839C7*)(S2839C11*)(S2839C10*)(S2839C6*)(S2839C2*), ABISELECT(96,60), "S2839C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S2839C10*)(S2839C6*)(S2839C2*), ABISELECT(48,28), "S2839C1");
    check_base_class_offset(lv, (S2839C11*)(S2839C10*)(S2839C6*)(S2839C2*), ABISELECT(16,12), "S2839C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S2839C10*)(S2839C6*)(S2839C2*), ABISELECT(56,32), "S2839C1");
    /*is_ambiguous_... S2839C10::S2839C9 */ AMB_check_base_class_offset(lv, (S2839C9*)(S2839C10*)(S2839C6*)(S2839C2*), ABISELECT(184,132), "S2839C1");
    check_base_class_offset(lv, (S2839C10*)(S2839C6*)(S2839C2*), ABISELECT(16,12), "S2839C1");
    check_base_class_offset(lv, (S20759C5_nt*)(S2839C6*)(S2839C2*), ABISELECT(192,136), "S2839C1");
    check_base_class_offset(lv, (S2839C6*)(S2839C2*), ABISELECT(16,12), "S2839C1");
    /*is_ambiguous_... S2839C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C7*)(S2839C14*), ABISELECT(208,144), "S2839C1");
    check_base_class_offset(lv, (S2839C9*)(S2839C7*)(S2839C14*), ABISELECT(224,156), "S2839C1");
    check_base_class_offset(lv, (S2839C7*)(S2839C14*), ABISELECT(208,144), "S2839C1");
    check_base_class_offset(lv, (S2839C14*)(S2839C2*), ABISELECT(208,144), "S2839C1");
    check_base_class_offset(lv, (S2839C2*), 0, "S2839C1");
    check_field_offset(lv, s2839c1f0, ABISELECT(68,40), "S2839C1.s2839c1f0");
    test_class_info(&lv, &cd_S2839C1);
    dp->~S2839C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2839C1(Test_S2839C1, "S2839C1", ABISELECT(464,312));

#else // __cplusplus

extern void _ZN7S2839C1C1Ev();
extern void _ZN7S2839C1D1Ev();
Name_Map name_map_S2839C1[] = {
  NSPAIR(_ZN7S2839C1C1Ev),
  NSPAIR(_ZN7S2839C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C7;
extern VTBL_ENTRY _ZTI7S2839C7[];
extern  VTBL_ENTRY _ZTV7S2839C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C7[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S2839C11;
extern VTBL_ENTRY _ZTI8S2839C11[];
extern  VTBL_ENTRY _ZTV8S2839C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C11[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C10;
extern VTBL_ENTRY _ZTI8S2839C10[];
extern  VTBL_ENTRY _ZTV8S2839C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C10[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S2839C6;
extern VTBL_ENTRY _ZTI7S2839C6[];
extern  VTBL_ENTRY _ZTV7S2839C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C6[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C7;
extern VTBL_ENTRY _ZTI7S2839C7[];
extern  VTBL_ENTRY _ZTV7S2839C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C7[];
extern Class_Descriptor cd_S2839C14;
extern VTBL_ENTRY _ZTI8S2839C14[];
extern  VTBL_ENTRY _ZTV8S2839C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C14[];
extern Class_Descriptor cd_S2839C2;
extern VTBL_ENTRY _ZTI7S2839C2[];
extern  VTBL_ENTRY _ZTV7S2839C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C2[];
static Base_Class bases_S2839C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,48), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,104), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S2839C9,    ABISELECT(112,72), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2839C7,    ABISELECT(96,60), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2839C11,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2839C9,    ABISELECT(184,132), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S2839C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20759C5_nt,    ABISELECT(192,136), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S2839C6,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2839C9,    ABISELECT(224,156), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2839C7,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S2839C14,    ABISELECT(208,144), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S2839C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2839C1[];
extern void _ZN7S2839C1D1Ev();
extern void _ZN7S2839C1D0Ev();
extern void ABISELECT(_ZThn16_N7S2839C1D1Ev,_ZThn12_N7S2839C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C1D0Ev,_ZThn12_N7S2839C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S2839C1D1Ev,_ZThn32_N7S2839C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S2839C1D0Ev,_ZThn32_N7S2839C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C1D1Ev,_ZTv0_n12_N7S2839C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S2839C1D1Ev,_ZThn48_N7S2839C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C1D0Ev,_ZTv0_n12_N7S2839C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S2839C1D0Ev,_ZThn48_N7S2839C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2839C1D1Ev,_ZTv0_n20_N7S2839C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S2839C1D1Ev,_ZThn60_N7S2839C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2839C1D0Ev,_ZTv0_n20_N7S2839C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S2839C1D0Ev,_ZThn60_N7S2839C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S2839C1D1Ev,_ZTvn12_n20_N7S2839C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2839C1D0Ev,_ZTvn12_n20_N7S2839C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C1D1Ev,_ZTv0_n12_N7S2839C1D1Ev)();
extern void ABISELECT(_ZThn152_N7S2839C1D1Ev,_ZThn104_N7S2839C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C1D0Ev,_ZTv0_n12_N7S2839C1D0Ev)();
extern void ABISELECT(_ZThn152_N7S2839C1D0Ev,_ZThn104_N7S2839C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2839C1D1Ev,_ZTv0_n16_N7S2839C1D1Ev)();
extern void ABISELECT(_ZThn184_N7S2839C1D1Ev,_ZThn132_N7S2839C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2839C1D0Ev,_ZTv0_n16_N7S2839C1D0Ev)();
extern void ABISELECT(_ZThn184_N7S2839C1D0Ev,_ZThn132_N7S2839C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C1D1Ev,_ZTv0_n12_N7S2839C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S2839C1D1Ev,_ZThn136_N7S2839C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C1D0Ev,_ZTv0_n12_N7S2839C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S2839C1D0Ev,_ZThn136_N7S2839C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2839C1D1Ev,_ZTv0_n24_N7S2839C1D1Ev)();
extern void ABISELECT(_ZThn208_N7S2839C1D1Ev,_ZThn144_N7S2839C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2839C1D0Ev,_ZTv0_n24_N7S2839C1D0Ev)();
extern void ABISELECT(_ZThn208_N7S2839C1D0Ev,_ZThn144_N7S2839C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S2839C1D1Ev,_ZTvn12_n24_N7S2839C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S2839C1D0Ev,_ZTvn12_n24_N7S2839C1D0Ev)();
static  VTBL_ENTRY vtc_S2839C1[] = {
  ABISELECT(208,144),
  ABISELECT(192,136),
  ABISELECT(184,132),
  ABISELECT(152,104),
  ABISELECT(96,60),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&_ZN7S2839C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C1D0Ev,
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C1D1Ev,_ZThn12_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C1D0Ev,_ZThn12_N7S2839C1D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S2839C1D1Ev,_ZThn32_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S2839C1D0Ev,_ZThn32_N7S2839C1D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C1D1Ev,_ZTv0_n12_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C1D0Ev,_ZTv0_n12_N7S2839C1D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C1D1Ev,_ZTv0_n20_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C1D0Ev,_ZTv0_n20_N7S2839C1D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C1D1Ev,_ZTvn12_n20_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C1D0Ev,_ZTvn12_n20_N7S2839C1D0Ev),
  ABISELECT(-152,-104),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C1D1Ev,_ZTv0_n12_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C1D0Ev,_ZTv0_n12_N7S2839C1D0Ev),
  ABISELECT(-184,-132),
  ABISELECT(-104,-84),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C1D1Ev,_ZTv0_n16_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C1D0Ev,_ZTv0_n16_N7S2839C1D0Ev),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C1D1Ev,_ZTv0_n12_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C1D0Ev,_ZTv0_n12_N7S2839C1D0Ev),
  ABISELECT(-208,-144),
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2839C1D1Ev,_ZTv0_n24_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2839C1D0Ev,_ZTv0_n24_N7S2839C1D0Ev),
  ABISELECT(-144,-108),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2839C1D1Ev,_ZTvn12_n24_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2839C1D0Ev,_ZTvn12_n24_N7S2839C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S2839C1[];
extern void _ZN7S2839C2D1Ev();
extern void _ZN7S2839C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C2__7S2839C1[] = {
  ABISELECT(208,144),
  ABISELECT(192,136),
  ABISELECT(184,132),
  ABISELECT(152,104),
  ABISELECT(96,60),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&_ZN7S2839C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C2D0Ev,
};
extern void _ZN7S2839C6D1Ev();
extern void _ZN7S2839C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&_ZN7S2839C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C6D0Ev,
};
extern void _ZN8S2839C10D1Ev();
extern void _ZN8S2839C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&_ZN8S2839C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C10D0Ev,
};
extern void _ZN8S2839C11D1Ev();
extern void _ZN8S2839C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2839C118S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&_ZN8S2839C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn136_N8S2839C11D1Ev,_ZThn92_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn136_N8S2839C11D0Ev,_ZThn92_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2839C118S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn80_N8S2839C11D1Ev,_ZThn48_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn80_N8S2839C11D0Ev,_ZThn48_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C118S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C118S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn64_N8S2839C11D1Ev,_ZThn36_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn64_N8S2839C11D0Ev,_ZThn36_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2839C118S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S2839C10D1Ev,_ZThn92_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S2839C10D0Ev,_ZThn92_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S2839C10D1Ev,_ZThn48_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S2839C10D0Ev,_ZThn48_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2839C10D1Ev,_ZTvn12_n20_N8S2839C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2839C10D0Ev,_ZTvn12_n20_N8S2839C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C10D1Ev,_ZTvn12_n20_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C10D0Ev,_ZTvn12_n20_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S2839C10D1Ev,_ZThn36_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S2839C10D0Ev,_ZThn36_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S2839C10D1Ev,_ZThn120_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S2839C10D0Ev,_ZThn120_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__8S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-168,-120),
  ABISELECT(-104,-84),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn64_N7S2839C6D1Ev,_ZThn36_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn64_N7S2839C6D0Ev,_ZThn36_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S2839C6D1Ev,_ZTv0_n20_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn80_N7S2839C6D1Ev,_ZThn48_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2839C6D0Ev,_ZTv0_n20_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn80_N7S2839C6D0Ev,_ZThn48_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__7S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C6D1Ev,_ZTv0_n20_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C6D0Ev,_ZTv0_n20_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn136_N7S2839C6D1Ev,_ZThn92_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn136_N7S2839C6D0Ev,_ZThn92_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N7S2839C6D1Ev,_ZTvn12_n20_N7S2839C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2839C6D0Ev,_ZTvn12_n20_N7S2839C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__7S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C6D1Ev,_ZTvn12_n20_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C6D0Ev,_ZTvn12_n20_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2839C6D1Ev,_ZTv0_n16_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn168_N7S2839C6D1Ev,_ZThn120_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2839C6D0Ev,_ZTv0_n16_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn168_N7S2839C6D0Ev,_ZThn120_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__7S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-168,-120),
  ABISELECT(-104,-84),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C6D1Ev,_ZTv0_n16_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C6D0Ev,_ZTv0_n16_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn176_N7S2839C6D1Ev,_ZThn124_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn176_N7S2839C6D0Ev,_ZThn124_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__7S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-176,-124),
  ABISELECT(-176,-124),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2839C2D1Ev,_ZThn12_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C2D0Ev,_ZThn12_N7S2839C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C6__7S2839C2__7S2839C1[] = {
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C2D1Ev,_ZThn12_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C2D0Ev,_ZThn12_N7S2839C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S2839C2D1Ev,_ZThn48_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S2839C2D0Ev,_ZThn48_N7S2839C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2839C2__7S2839C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S2839C2D1Ev,_ZTv0_n20_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S2839C2D1Ev,_ZThn60_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2839C2D0Ev,_ZTv0_n20_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S2839C2D0Ev,_ZThn60_N7S2839C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__7S2839C2__7S2839C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C2D1Ev,_ZTv0_n20_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C2D0Ev,_ZTv0_n20_N7S2839C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn152_N7S2839C2D1Ev,_ZThn104_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn152_N7S2839C2D0Ev,_ZThn104_N7S2839C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C2__7S2839C1[] = {
  ABISELECT(-152,-104),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N7S2839C2D1Ev,_ZTvn12_n20_N7S2839C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2839C2D0Ev,_ZTvn12_n20_N7S2839C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__7S2839C2__7S2839C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C2D1Ev,_ZTvn12_n20_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C2D0Ev,_ZTvn12_n20_N7S2839C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2839C2D1Ev,_ZTv0_n16_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn184_N7S2839C2D1Ev,_ZThn132_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2839C2D0Ev,_ZTv0_n16_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn184_N7S2839C2D0Ev,_ZThn132_N7S2839C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__7S2839C2__7S2839C1[] = {
  ABISELECT(-184,-132),
  ABISELECT(-104,-84),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C2D1Ev,_ZTv0_n16_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C2D0Ev,_ZTv0_n16_N7S2839C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn192_N7S2839C2D1Ev,_ZThn136_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn192_N7S2839C2D0Ev,_ZThn136_N7S2839C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__7S2839C2__7S2839C1[] = {
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2839C2D1Ev,_ZTv0_n24_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn208_N7S2839C2D1Ev,_ZThn144_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2839C2D0Ev,_ZTv0_n24_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn208_N7S2839C2D0Ev,_ZThn144_N7S2839C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2839C14__7S2839C2__7S2839C1[] = {
  ABISELECT(-208,-144),
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2839C2D1Ev,_ZTv0_n24_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2839C2D0Ev,_ZTv0_n24_N7S2839C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N7S2839C2D1Ev,_ZTvn12_n24_N7S2839C2D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S2839C2D0Ev,_ZTvn12_n24_N7S2839C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C78S2839C14__A2__7S2839C2__7S2839C1[] = {
  ABISELECT(-144,-108),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2839C2D1Ev,_ZTvn12_n24_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2839C2D0Ev,_ZTvn12_n24_N7S2839C2D0Ev),
};
extern void _ZN7S2839C7D1Ev();
extern void _ZN7S2839C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C7__7S2839C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&_ZN7S2839C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C7D0Ev,
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__7S2839C1[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C97S2839C7__7S2839C1[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C7__7S2839C1[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C9__7S2839C7__7S2839C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2839C7__7S2839C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__7S2839C1[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C9__A1__7S2839C1[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void _ZN8S2839C14D1Ev();
extern void _ZN8S2839C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2839C14__7S2839C1[] = {
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&_ZN8S2839C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C14D0Ev,
};
extern void _ZN7S2839C7D1Ev();
extern void _ZN7S2839C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C78S2839C14__A1__7S2839C1[] = {
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&_ZN7S2839C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C7D0Ev,
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C78S2839C14__A2__7S2839C1[] = {
  ABISELECT(-144,-108),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C97S2839C78S2839C14__A2__7S2839C1[] = {
  ABISELECT(144,108),
  ABISELECT(144,108),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C78S2839C14__A1__7S2839C1[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C9__7S2839C78S2839C14__A1__7S2839C1[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2839C78S2839C14__A1__7S2839C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2839C14__7S2839C1[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev),
};
extern void ABISELECT(_ZThn16_N8S2839C14D1Ev,_ZThn12_N8S2839C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S2839C14D0Ev,_ZThn12_N8S2839C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C14__7S2839C1[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2839C14D1Ev,_ZThn12_N8S2839C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2839C14D0Ev,_ZThn12_N8S2839C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2839C14__7S2839C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev),
};
static  VTT_ENTRY vtt_S2839C1[] = {
  {&(_ZTV7S2839C1[9]),  9,71},
  {&(_tg__ZTV7S2839C2__7S2839C1[9]),  9,11},
  {&(_tg__ZTV7S2839C67S2839C2__7S2839C1[8]),  8,10},
  {&(_tg__ZTV8S2839C107S2839C67S2839C2__7S2839C1[6]),  6,8},
  {&(_tg__ZTV8S2839C118S2839C107S2839C67S2839C2__7S2839C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S2839C118S2839C107S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C7__8S2839C118S2839C107S2839C67S2839C2__7S2839C1[5]),  5,7},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C118S2839C107S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2839C118S2839C107S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2839C107S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C7__8S2839C107S2839C67S2839C2__7S2839C1[5]),  5,7},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C107S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2839C107S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__8S2839C107S2839C67S2839C2__7S2839C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__7S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C7__7S2839C67S2839C2__7S2839C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__7S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C97S2839C7__7S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__7S2839C67S2839C2__7S2839C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__7S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C6__7S2839C2__7S2839C1[8]),  8,10},
  {&(_tg__ZTV8S20760C9__A1__7S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C7__7S2839C2__7S2839C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__7S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C97S2839C7__7S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__7S2839C2__7S2839C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__7S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S2839C14__7S2839C2__7S2839C1[6]),  6,8},
  {&(_tg__ZTV7S2839C97S2839C78S2839C14__A2__7S2839C2__7S2839C1[3]),  3,5},
  {&(_ZTV7S2839C1[19]),  19,71},
  {&(_ZTV7S2839C1[28]),  28,71},
  {&(_ZTV7S2839C1[35]),  35,71},
  {&(_ZTV7S2839C1[45]),  45,71},
  {&(_ZTV7S2839C1[40]),  40,71},
  {&(_ZTV7S2839C1[51]),  51,71},
  {&(_ZTV7S2839C1[56]),  56,71},
  {&(_ZTV7S2839C1[64]),  64,71},
  {&(_ZTV7S2839C1[69]),  69,71},
  {&(_tg__ZTV7S2839C7__7S2839C1[4]),  4,6},
  {&(_tg__ZTV7S2839C97S2839C7__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C97S2839C7__7S2839C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2839C7__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C9__7S2839C7__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2839C7__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C9__A1__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S2839C14__7S2839C1[5]),  5,7},
  {&(_tg__ZTV7S2839C78S2839C14__A1__7S2839C1[4]),  4,6},
  {&(_tg__ZTV7S2839C97S2839C78S2839C14__A2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C97S2839C78S2839C14__A2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2839C78S2839C14__A1__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C9__7S2839C78S2839C14__A1__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2839C78S2839C14__A1__7S2839C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2839C14__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C14__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2839C14__7S2839C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2839C1[];
extern  VTBL_ENTRY _ZTV7S2839C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C1[];
static VTBL_ENTRY alt_thunk_names261[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2839C2D0Ev,_ZTv0_n24_N7S2839C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2839C2D0Ev,_ZThn144_N7S2839C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2839C2D1Ev,_ZTv0_n24_N7S2839C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2839C2D1Ev,_ZThn144_N7S2839C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C2D0Ev,_ZTv0_n16_N7S2839C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2839C2D0Ev,_ZThn132_N7S2839C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C2D1Ev,_ZTv0_n16_N7S2839C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2839C2D1Ev,_ZThn132_N7S2839C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C2D0Ev,_ZTv0_n20_N7S2839C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2839C2D0Ev,_ZThn60_N7S2839C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C2D1Ev,_ZTv0_n20_N7S2839C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2839C2D1Ev,_ZThn60_N7S2839C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2839C2D0Ev,_ZThn136_N7S2839C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2839C2D0Ev,_ZThn104_N7S2839C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C2D0Ev,_ZThn48_N7S2839C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2839C2D1Ev,_ZThn136_N7S2839C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2839C2D1Ev,_ZThn104_N7S2839C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C2D1Ev,_ZThn48_N7S2839C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C6D0Ev,_ZTv0_n16_N7S2839C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2839C6D0Ev,_ZThn120_N7S2839C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C6D1Ev,_ZTv0_n16_N7S2839C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2839C6D1Ev,_ZThn120_N7S2839C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C6D0Ev,_ZTv0_n20_N7S2839C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C6D0Ev,_ZThn48_N7S2839C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C6D1Ev,_ZTv0_n20_N7S2839C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C6D1Ev,_ZThn48_N7S2839C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S2839C6D0Ev,_ZThn124_N7S2839C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S2839C6D0Ev,_ZThn92_N7S2839C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2839C6D0Ev,_ZThn36_N7S2839C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S2839C6D1Ev,_ZThn124_N7S2839C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S2839C6D1Ev,_ZThn92_N7S2839C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2839C6D1Ev,_ZThn36_N7S2839C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S2839C10D0Ev,_ZThn120_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S2839C10D1Ev,_ZThn120_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C10D0Ev,_ZThn48_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C10D1Ev,_ZThn48_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C10D0Ev,_ZThn36_N8S2839C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C10D0Ev,_ZThn92_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C10D1Ev,_ZThn36_N8S2839C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C10D1Ev,_ZThn92_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C11D0Ev,_ZThn48_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C11D1Ev,_ZThn48_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C11D0Ev,_ZThn36_N8S2839C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C11D0Ev,_ZThn92_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C11D1Ev,_ZThn36_N8S2839C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C11D1Ev,_ZThn92_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2839C1D0Ev,_ZTv0_n24_N7S2839C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2839C1D0Ev,_ZThn144_N7S2839C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2839C1D1Ev,_ZTv0_n24_N7S2839C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2839C1D1Ev,_ZThn144_N7S2839C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C1D0Ev,_ZTv0_n16_N7S2839C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2839C1D0Ev,_ZThn132_N7S2839C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C1D1Ev,_ZTv0_n16_N7S2839C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2839C1D1Ev,_ZThn132_N7S2839C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C1D0Ev,_ZTv0_n20_N7S2839C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2839C1D0Ev,_ZThn60_N7S2839C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C1D1Ev,_ZTv0_n20_N7S2839C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2839C1D1Ev,_ZThn60_N7S2839C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C1D0Ev,_ZTv0_n12_N7S2839C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2839C1D0Ev,_ZThn136_N7S2839C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2839C1D0Ev,_ZThn104_N7S2839C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C1D0Ev,_ZThn48_N7S2839C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C1D1Ev,_ZTv0_n12_N7S2839C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2839C1D1Ev,_ZThn136_N7S2839C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2839C1D1Ev,_ZThn104_N7S2839C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C1D1Ev,_ZThn48_N7S2839C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2839C1 = {  "S2839C1", // class name
  bases_S2839C1, 20,
  &(vtc_S2839C1[0]), // expected_vtbl_contents
  &(vtt_S2839C1[0]), // expected_vtt_contents
  ABISELECT(464,312), // object size
  NSPAIRA(_ZTI7S2839C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2839C1),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2839C1),56, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names261,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19115C6  : virtual S20760C9 {
  virtual  ~S19115C6(); // _ZN8S19115C6D2Ev
  S19115C6(); // tgen
};
//SIG(-1 S19115C6) C1{ VBC2{ vd m FL} vd}


 S19115C6 ::~S19115C6(){ note_dtor("S19115C6", this);}
S19115C6 ::S19115C6(){ note_ctor("S19115C6", this);} // tgen

static void Test_S19115C6()
{
  extern Class_Descriptor cd_S19115C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19115C6, buf);
    S19115C6 *dp, &lv = *(dp=new (buf) S19115C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19115C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19115C6)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S19115C6");
    test_class_info(&lv, &cd_S19115C6);
    dp->~S19115C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19115C6(Test_S19115C6, "S19115C6", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19115C6C1Ev();
extern void _ZN8S19115C6D2Ev();
Name_Map name_map_S19115C6[] = {
  NSPAIR(_ZN8S19115C6C1Ev),
  NSPAIR(_ZN8S19115C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S19115C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19115C6[];
extern void _ZN8S19115C6D1Ev();
extern void _ZN8S19115C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S19115C6D1Ev,_ZThn4_N8S19115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S19115C6D0Ev,_ZThn4_N8S19115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19115C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&_ZN8S19115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C6D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19115C6[];
static  VTT_ENTRY vtt_S19115C6[] = {
  {&(_ZTV8S19115C6[3]),  3,10},
  {&(_ZTV8S19115C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19115C6[];
extern  VTBL_ENTRY _ZTV8S19115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C6[];
static VTBL_ENTRY alt_thunk_names262[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19115C6D0Ev,_ZThn4_N8S19115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19115C6D1Ev,_ZThn4_N8S19115C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19115C6 = {  "S19115C6", // class name
  bases_S19115C6, 1,
  &(vtc_S19115C6[0]), // expected_vtbl_contents
  &(vtt_S19115C6[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19115C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19115C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19115C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names262,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19115C3  : S20760C9 , virtual S20760C13 , S19115C6 {
  ::S20760C13 s19115c3f0;
  ~S19115C3(); // tgen
  S19115C3(); // tgen
};
//SIG(-1 S19115C3) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S19115C3 ::~S19115C3(){ note_dtor("S19115C3", this);} // tgen
S19115C3 ::S19115C3(){ note_ctor("S19115C3", this);} // tgen

static void Test_S19115C3()
{
  extern Class_Descriptor cd_S19115C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S19115C3, buf);
    S19115C3 *dp, &lv = *(dp=new (buf) S19115C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S19115C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19115C3)");
    /*is_ambiguous_... S19115C3::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S19115C3");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S19115C3");
    check_base_class_offset(lv, (S20760C9*)(S19115C6*), ABISELECT(88,72), "S19115C3");
    check_base_class_offset(lv, (S19115C6*), ABISELECT(16,12), "S19115C3");
    check_field_offset(lv, s19115c3f0, ABISELECT(24,16), "S19115C3.s19115c3f0");
    test_class_info(&lv, &cd_S19115C3);
    dp->~S19115C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19115C3(Test_S19115C3, "S19115C3", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S19115C3C1Ev();
extern void _ZN8S19115C3D1Ev();
Name_Map name_map_S19115C3[] = {
  NSPAIR(_ZN8S19115C3C1Ev),
  NSPAIR(_ZN8S19115C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19115C6;
extern VTBL_ENTRY _ZTI8S19115C6[];
extern  VTBL_ENTRY _ZTV8S19115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C6[];
static Base_Class bases_S19115C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19115C6,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19115C3[];
extern void _ZN8S19115C3D1Ev();
extern void _ZN8S19115C3D0Ev();
extern void ABISELECT(_ZThn16_N8S19115C3D1Ev,_ZThn12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19115C3D0Ev,_ZThn12_N8S19115C3D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn56_N8S19115C3D1Ev,_ZThn44_N8S19115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev)();
extern void ABISELECT(_ZThn56_N8S19115C3D0Ev,_ZThn44_N8S19115C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn88_N8S19115C3D1Ev,_ZThn72_N8S19115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev)();
extern void ABISELECT(_ZThn88_N8S19115C3D0Ev,_ZThn72_N8S19115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19115C3[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&_ZN8S19115C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C3D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C3D1Ev,_ZThn12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C3D0Ev,_ZThn12_N8S19115C3D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19115C3[];
extern void _ZN8S19115C6D1Ev();
extern void _ZN8S19115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C6__8S19115C3[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&_ZN8S19115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev)();
extern void ABISELECT(_ZThn72_N8S19115C6D1Ev,_ZThn60_N8S19115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev)();
extern void ABISELECT(_ZThn72_N8S19115C6D0Ev,_ZThn60_N8S19115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19115C6__8S19115C3[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev),
};
static  VTT_ENTRY vtt_S19115C3[] = {
  {&(_ZTV8S19115C3[4]),  4,21},
  {&(_tg__ZTV8S19115C6__8S19115C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19115C6__8S19115C3[3]),  3,5},
  {&(_ZTV8S19115C3[14]),  14,21},
  {&(_ZTV8S19115C3[9]),  9,21},
  {&(_ZTV8S19115C3[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S19115C3[];
extern  VTBL_ENTRY _ZTV8S19115C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C3[];
static VTBL_ENTRY alt_thunk_names263[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19115C6D0Ev,_ZThn60_N8S19115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19115C6D1Ev,_ZThn60_N8S19115C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19115C3D0Ev,_ZThn72_N8S19115C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19115C3D0Ev,_ZThn44_N8S19115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19115C3D1Ev,_ZThn72_N8S19115C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19115C3D1Ev,_ZThn44_N8S19115C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19115C3 = {  "S19115C3", // class name
  bases_S19115C3, 4,
  &(vtc_S19115C3[0]), // expected_vtbl_contents
  &(vtt_S19115C3[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S19115C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19115C3),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19115C3),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names263,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19115C7  : S20760C13 , virtual S4228C37 , virtual S4228C27 {
  short s19115c7f0;
  ~S19115C7(); // tgen
  S19115C7(); // tgen
};
//SIG(-1 S19115C7) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S19115C7 ::~S19115C7(){ note_dtor("S19115C7", this);} // tgen
S19115C7 ::S19115C7(){ note_ctor("S19115C7", this);} // tgen

static void Test_S19115C7()
{
  extern Class_Descriptor cd_S19115C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S19115C7, buf);
    S19115C7 *dp, &lv = *(dp=new (buf) S19115C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S19115C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19115C7)");
    check_base_class_offset(lv, (S20760C13*), 0, "S19115C7");
    check_base_class_offset(lv, (S4228C37*), 0, "S19115C7");
    check_base_class_offset(lv, (S4228C27*), 0, "S19115C7");
    check_field_offset(lv, s19115c7f0, ABISELECT(32,28), "S19115C7.s19115c7f0");
    test_class_info(&lv, &cd_S19115C7);
    dp->~S19115C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19115C7(Test_S19115C7, "S19115C7", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN8S19115C7C1Ev();
extern void _ZN8S19115C7D1Ev();
Name_Map name_map_S19115C7[] = {
  NSPAIR(_ZN8S19115C7C1Ev),
  NSPAIR(_ZN8S19115C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S19115C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19115C7[];
extern void _ZN8S19115C7D1Ev();
extern void _ZN8S19115C7D0Ev();
static  VTBL_ENTRY vtc_S19115C7[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C7[0]),
  (VTBL_ENTRY)&_ZN8S19115C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C7D0Ev,
};
extern VTBL_ENTRY _ZTV8S19115C7[];
static  VTT_ENTRY vtt_S19115C7[] = {
  {&(_ZTV8S19115C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19115C7[];
extern  VTBL_ENTRY _ZTV8S19115C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C7[];
Class_Descriptor cd_S19115C7 = {  "S19115C7", // class name
  bases_S19115C7, 3,
  &(vtc_S19115C7[0]), // expected_vtbl_contents
  &(vtt_S19115C7[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI8S19115C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19115C7),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19115C7),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19115C2  : S19115C3 , S19115C7 , virtual S19115C6 {
  virtual  ~S19115C2(); // _ZN8S19115C2D2Ev
  S19115C2(); // tgen
};
//SIG(-1 S19115C2) C1{ BC2{ BC3{ vd m FL} VBC4{ vd m Fi[6]} BC5{ VBC3 vd} FC4} BC6{ BC4 VBC7{ m} VBC8{ m} Fs} VBC5 vd}


 S19115C2 ::~S19115C2(){ note_dtor("S19115C2", this);}
S19115C2 ::S19115C2(){ note_ctor("S19115C2", this);} // tgen

static void Test_S19115C2()
{
  extern Class_Descriptor cd_S19115C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,31)];
    init_test(&cd_S19115C2, buf);
    S19115C2 *dp, &lv = *(dp=new (buf) S19115C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,120), "sizeof(S19115C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19115C2)");
    /*is_ambiguous_... S19115C3::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19115C3*), 0, "S19115C2");
    check_base_class_offset(lv, (S20760C13*)(S19115C3*), ABISELECT(96,76), "S19115C2");
    check_base_class_offset(lv, (S20760C9*)(S19115C6*)(S19115C3*), ABISELECT(128,104), "S19115C2");
    /*is_ambiguous_... S19115C2::S19115C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19115C6*), ABISELECT(128,104), "S19115C2");
    check_base_class_offset(lv, (S19115C6*)(S19115C3*), ABISELECT(16,12), "S19115C2");
    check_base_class_offset(lv, (S19115C3*), 0, "S19115C2");
    check_base_class_offset(lv, (S20760C13*)(S19115C7*), ABISELECT(56,44), "S19115C2");
    check_base_class_offset(lv, (S4228C37*)(S19115C7*), 0, "S19115C2");
    check_base_class_offset(lv, (S4228C27*)(S19115C7*), 0, "S19115C2");
    check_base_class_offset(lv, (S19115C7*), ABISELECT(56,44), "S19115C2");
    /*is_ambiguous_... S19115C2::S19115C6 */ AMB_check_base_class_offset(lv, (S19115C6*), ABISELECT(144,116), "S19115C2");
    test_class_info(&lv, &cd_S19115C2);
    dp->~S19115C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19115C2(Test_S19115C2, "S19115C2", ABISELECT(152,120));

#else // __cplusplus

extern void _ZN8S19115C2C1Ev();
extern void _ZN8S19115C2D2Ev();
Name_Map name_map_S19115C2[] = {
  NSPAIR(_ZN8S19115C2C1Ev),
  NSPAIR(_ZN8S19115C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19115C6;
extern VTBL_ENTRY _ZTI8S19115C6[];
extern  VTBL_ENTRY _ZTV8S19115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C6[];
extern Class_Descriptor cd_S19115C3;
extern VTBL_ENTRY _ZTI8S19115C3[];
extern  VTBL_ENTRY _ZTV8S19115C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C3[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19115C7;
extern VTBL_ENTRY _ZTI8S19115C7[];
extern  VTBL_ENTRY _ZTV8S19115C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C7[];
extern Class_Descriptor cd_S19115C6;
extern VTBL_ENTRY _ZTI8S19115C6[];
extern  VTBL_ENTRY _ZTV8S19115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C6[];
static Base_Class bases_S19115C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(96,76), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(128,104), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19115C6,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19115C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19115C7,    ABISELECT(56,44), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19115C6,    ABISELECT(144,116), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19115C2[];
extern void _ZN8S19115C2D1Ev();
extern void _ZN8S19115C2D0Ev();
extern void ABISELECT(_ZThn16_N8S19115C2D1Ev,_ZThn12_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19115C2D0Ev,_ZThn12_N8S19115C2D0Ev)();
extern void ABISELECT(_ZThn56_N8S19115C2D1Ev,_ZThn44_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S19115C2D0Ev,_ZThn44_N8S19115C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S19115C2D1Ev,_ZThn76_N8S19115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S19115C2D0Ev,_ZThn76_N8S19115C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S19115C2D1Ev,_ZThn104_N8S19115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S19115C2D0Ev,_ZThn104_N8S19115C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19115C2D1Ev,_ZTv0_n16_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn144_N8S19115C2D1Ev,_ZThn116_N8S19115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19115C2D0Ev,_ZTv0_n16_N8S19115C2D0Ev)();
extern void ABISELECT(_ZThn144_N8S19115C2D0Ev,_ZThn116_N8S19115C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19115C2[] = {
  ABISELECT(144,116),
  0,
  0,
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&_ZN8S19115C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C2D0Ev,
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C2D1Ev,_ZThn12_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C2D0Ev,_ZThn12_N8S19115C2D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19115C2D1Ev,_ZThn44_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19115C2D0Ev,_ZThn44_N8S19115C2D0Ev),
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev),
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev),
  ABISELECT(-144,-116),
  ABISELECT(-16,-12),
  ABISELECT(-144,-116),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C2D1Ev,_ZTv0_n16_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C2D0Ev,_ZTv0_n16_N8S19115C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19115C2[];
extern void _ZN8S19115C3D1Ev();
extern void _ZN8S19115C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C3__8S19115C2[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&_ZN8S19115C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C3D0Ev,
};
extern void _ZN8S19115C6D1Ev();
extern void _ZN8S19115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C68S19115C3__8S19115C2[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&_ZN8S19115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19115C6D1Ev,_ZThn92_N8S19115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19115C6D0Ev,_ZThn92_N8S19115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19115C68S19115C3__8S19115C2[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S19115C3D1Ev,_ZThn76_N8S19115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S19115C3D0Ev,_ZThn76_N8S19115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19115C3__8S19115C2[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19115C3D1Ev,_ZThn12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19115C3D0Ev,_ZThn12_N8S19115C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C6__8S19115C3__8S19115C2[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C3D1Ev,_ZThn12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C3D0Ev,_ZThn12_N8S19115C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S19115C3D1Ev,_ZThn104_N8S19115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S19115C3D0Ev,_ZThn104_N8S19115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19115C3__8S19115C2[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev),
};
extern void _ZN8S19115C7D1Ev();
extern void _ZN8S19115C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C7__8S19115C2[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C7[0]),
  (VTBL_ENTRY)&_ZN8S19115C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C7D0Ev,
};
extern void _ZN8S19115C6D1Ev();
extern void _ZN8S19115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C6__A1__8S19115C2[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&_ZN8S19115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19115C6__A1__8S19115C2[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev),
};
static  VTT_ENTRY vtt_S19115C2[] = {
  {&(_ZTV8S19115C2[7]),  7,36},
  {&(_tg__ZTV8S19115C3__8S19115C2[4]),  4,6},
  {&(_tg__ZTV8S19115C68S19115C3__8S19115C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19115C68S19115C3__8S19115C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19115C3__8S19115C2[3]),  3,5},
  {&(_tg__ZTV8S19115C6__8S19115C3__8S19115C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19115C3__8S19115C2[3]),  3,5},
  {&(_tg__ZTV8S19115C7__8S19115C2[4]),  4,6},
  {&(_ZTV8S19115C2[23]),  23,36},
  {&(_ZTV8S19115C2[12]),  12,36},
  {&(_ZTV8S19115C2[28]),  28,36},
  {&(_ZTV8S19115C2[18]),  18,36},
  {&(_ZTV8S19115C2[34]),  34,36},
  {&(_tg__ZTV8S19115C6__A1__8S19115C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19115C6__A1__8S19115C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19115C2[];
extern  VTBL_ENTRY _ZTV8S19115C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C2[];
static VTBL_ENTRY alt_thunk_names264[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C3D0Ev,_ZThn104_N8S19115C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C3D0Ev,_ZThn76_N8S19115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C3D1Ev,_ZThn104_N8S19115C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C3D1Ev,_ZThn76_N8S19115C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19115C6D0Ev,_ZThn92_N8S19115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19115C6D1Ev,_ZThn92_N8S19115C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19115C2D0Ev,_ZTv0_n16_N8S19115C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19115C2D0Ev,_ZThn116_N8S19115C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19115C2D1Ev,_ZTv0_n16_N8S19115C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19115C2D1Ev,_ZThn116_N8S19115C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C2D0Ev,_ZThn104_N8S19115C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C2D0Ev,_ZThn76_N8S19115C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C2D1Ev,_ZThn104_N8S19115C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C2D1Ev,_ZThn76_N8S19115C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19115C2 = {  "S19115C2", // class name
  bases_S19115C2, 10,
  &(vtc_S19115C2[0]), // expected_vtbl_contents
  &(vtt_S19115C2[0]), // expected_vtt_contents
  ABISELECT(152,120), // object size
  NSPAIRA(_ZTI8S19115C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19115C2),36, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19115C2),15, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names264,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19115C12  {
  ::S20760C9 s19115c12f0[10];
  void  mf19115c12(); // _ZN9S19115C1210mf19115c12Ev
};
//SIG(-1 S19115C12) C1{ m FC2{ vd m FL}[10]}


void  S19115C12 ::mf19115c12(){}

static void Test_S19115C12()
{
  {
    init_simple_test("S19115C12");
    S19115C12 lv;
    check2(sizeof(lv), ABISELECT(160,120), "sizeof(S19115C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19115C12)");
    check_field_offset(lv, s19115c12f0, 0, "S19115C12.s19115c12f0");
  }
}
static Arrange_To_Call_Me vS19115C12(Test_S19115C12, "S19115C12", ABISELECT(160,120));

#else // __cplusplus

extern VTBL_ENTRY _ZTI9S19115C12[];
VTBL_ENTRY *P__ZTI9S19115C12 = _ZTI9S19115C12; 
Class_Descriptor cd_S19115C12 = {  "S19115C12", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(160,120), // object size
  NSPAIRA(_ZTI9S19115C12),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19115C10  : virtual S19115C2 , S4161C4_nt , S19115C12 {
  int s19115c10f0;
  virtual  ~S19115C10(); // _ZN9S19115C10D2Ev
  S19115C10(); // tgen
};
//SIG(-1 S19115C10) C1{ VBC2{ BC3{ BC4{ vd m FL} VBC5{ vd m Fi[6]} BC6{ VBC4 vd} FC5} BC7{ BC5 VBC8{ m} VBC9{ m} Fs} VBC6 vd} BC10{ m Fp} BC11{ m FC4[10]} vd Fi}


 S19115C10 ::~S19115C10(){ note_dtor("S19115C10", this);}
S19115C10 ::S19115C10(){ note_ctor("S19115C10", this);} // tgen

static void Test_S19115C10()
{
  extern Class_Descriptor cd_S19115C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,63)];
    init_test(&cd_S19115C10, buf);
    S19115C10 *dp, &lv = *(dp=new (buf) S19115C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,248), "sizeof(S19115C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19115C10)");
    /*is_ambiguous_... S19115C3::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19115C3*)(S19115C2*), ABISELECT(184,132), "S19115C10");
    check_base_class_offset(lv, (S20760C13*)(S19115C3*)(S19115C2*), ABISELECT(280,208), "S19115C10");
    check_base_class_offset(lv, (S20760C9*)(S19115C6*)(S19115C3*)(S19115C2*), ABISELECT(312,236), "S19115C10");
    /*is_ambiguous_... S19115C10::S19115C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19115C6*), ABISELECT(312,236), "S19115C10");
    check_base_class_offset(lv, (S19115C6*)(S19115C3*)(S19115C2*), ABISELECT(200,144), "S19115C10");
    check_base_class_offset(lv, (S19115C3*)(S19115C2*), ABISELECT(184,132), "S19115C10");
    check_base_class_offset(lv, (S20760C13*)(S19115C7*)(S19115C2*), ABISELECT(240,176), "S19115C10");
    check_base_class_offset(lv, (S4228C37*)(S19115C7*)(S19115C2*), 0, "S19115C10");
    check_base_class_offset(lv, (S4228C27*)(S19115C7*)(S19115C2*), 0, "S19115C10");
    check_base_class_offset(lv, (S19115C7*)(S19115C2*), ABISELECT(240,176), "S19115C10");
    /*is_ambiguous_... S19115C2::S19115C6 */ AMB_check_base_class_offset(lv, (S19115C6*)(S19115C2*), 0, "S19115C10");
    check_base_class_offset(lv, (S19115C2*), ABISELECT(184,132), "S19115C10");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(8,4), "S19115C10");
    check_base_class_offset(lv, (S19115C12*), ABISELECT(16,8), "S19115C10");
    check_field_offset(lv, s19115c10f0, ABISELECT(176,128), "S19115C10.s19115c10f0");
    test_class_info(&lv, &cd_S19115C10);
    dp->~S19115C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19115C10(Test_S19115C10, "S19115C10", ABISELECT(328,248));

#else // __cplusplus

extern void _ZN9S19115C10C1Ev();
extern void _ZN9S19115C10D2Ev();
Name_Map name_map_S19115C10[] = {
  NSPAIR(_ZN9S19115C10C1Ev),
  NSPAIR(_ZN9S19115C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19115C6;
extern VTBL_ENTRY _ZTI8S19115C6[];
extern  VTBL_ENTRY _ZTV8S19115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C6[];
extern Class_Descriptor cd_S19115C3;
extern VTBL_ENTRY _ZTI8S19115C3[];
extern  VTBL_ENTRY _ZTV8S19115C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C3[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19115C7;
extern VTBL_ENTRY _ZTI8S19115C7[];
extern  VTBL_ENTRY _ZTV8S19115C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C7[];
extern Class_Descriptor cd_S19115C6;
extern VTBL_ENTRY _ZTI8S19115C6[];
extern  VTBL_ENTRY _ZTV8S19115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C6[];
extern Class_Descriptor cd_S19115C2;
extern VTBL_ENTRY _ZTI8S19115C2[];
extern  VTBL_ENTRY _ZTV8S19115C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C2[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
static Base_Class bases_S19115C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(184,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(280,208), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(312,236), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19115C6,    ABISELECT(200,144), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19115C3,    ABISELECT(184,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(240,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19115C7,    ABISELECT(240,176), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19115C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19115C2,    ABISELECT(184,132), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19115C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19115C10[];
extern void ABISELECT(_ZTv0_n32_N9S19115C10D1Ev,_ZTv0_n16_N9S19115C10D1Ev)();
extern void _ZN9S19115C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19115C10D0Ev,_ZTv0_n16_N9S19115C10D0Ev)();
extern void _ZN9S19115C10D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19115C10D1Ev,_ZTv0_n32_N9S19115C10D1Ev)();
extern void ABISELECT(_ZThn184_N9S19115C10D1Ev,_ZThn132_N9S19115C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19115C10D0Ev,_ZTv0_n32_N9S19115C10D0Ev)();
extern void ABISELECT(_ZThn184_N9S19115C10D0Ev,_ZThn132_N9S19115C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N9S19115C10D1Ev,_ZTvn12_n32_N9S19115C10D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N9S19115C10D0Ev,_ZTvn12_n32_N9S19115C10D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N9S19115C10D1Ev,_ZTvn44_n32_N9S19115C10D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N9S19115C10D0Ev,_ZTvn44_n32_N9S19115C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev)();
extern void ABISELECT(_ZThn280_N9S19115C10D1Ev,_ZThn208_N9S19115C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev)();
extern void ABISELECT(_ZThn280_N9S19115C10D0Ev,_ZThn208_N9S19115C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev)();
extern void ABISELECT(_ZThn312_N9S19115C10D1Ev,_ZThn236_N9S19115C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev)();
extern void ABISELECT(_ZThn312_N9S19115C10D0Ev,_ZThn236_N9S19115C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19115C10[] = {
  0,
  0,
  0,
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19115C10D1Ev,_ZTv0_n16_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19115C10D0Ev,_ZTv0_n16_N9S19115C10D0Ev),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19115C10D1Ev,_ZTv0_n32_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19115C10D0Ev,_ZTv0_n32_N9S19115C10D0Ev),
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N9S19115C10D1Ev,_ZTvn12_n32_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N9S19115C10D0Ev,_ZTvn12_n32_N9S19115C10D0Ev),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N9S19115C10D1Ev,_ZTvn44_n32_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N9S19115C10D0Ev,_ZTvn44_n32_N9S19115C10D0Ev),
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev),
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19115C10[];
extern void _ZN8S19115C2D1Ev();
extern void _ZN8S19115C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C2__9S19115C10[] = {
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&_ZN8S19115C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C2D0Ev,
};
extern void _ZN8S19115C3D1Ev();
extern void _ZN8S19115C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C38S19115C2__9S19115C10[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&_ZN8S19115C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C3D0Ev,
};
extern void _ZN8S19115C6D1Ev();
extern void _ZN8S19115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C68S19115C38S19115C2__9S19115C10[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&_ZN8S19115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19115C6D1Ev,_ZThn92_N8S19115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19115C6D0Ev,_ZThn92_N8S19115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19115C68S19115C38S19115C2__9S19115C10[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S19115C3D1Ev,_ZThn76_N8S19115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S19115C3D0Ev,_ZThn76_N8S19115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19115C38S19115C2__9S19115C10[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19115C3D1Ev,_ZThn12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19115C3D0Ev,_ZThn12_N8S19115C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C6__8S19115C38S19115C2__9S19115C10[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C3D1Ev,_ZThn12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C3D0Ev,_ZThn12_N8S19115C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S19115C3D1Ev,_ZThn104_N8S19115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S19115C3D0Ev,_ZThn104_N8S19115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19115C38S19115C2__9S19115C10[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev),
};
extern void _ZN8S19115C7D1Ev();
extern void _ZN8S19115C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C78S19115C2__9S19115C10[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C7[0]),
  (VTBL_ENTRY)&_ZN8S19115C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S19115C2D1Ev,_ZThn76_N8S19115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S19115C2D0Ev,_ZThn76_N8S19115C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19115C2__9S19115C10[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19115C2D1Ev,_ZThn12_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19115C2D0Ev,_ZThn12_N8S19115C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C68S19115C3__8S19115C2__9S19115C10[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C2D1Ev,_ZThn12_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C2D0Ev,_ZThn12_N8S19115C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S19115C2D1Ev,_ZThn104_N8S19115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S19115C2D0Ev,_ZThn104_N8S19115C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19115C2__9S19115C10[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19115C2D1Ev,_ZThn44_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S19115C2D0Ev,_ZThn44_N8S19115C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C7__8S19115C2__9S19115C10[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19115C2D1Ev,_ZThn44_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19115C2D0Ev,_ZThn44_N8S19115C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19115C2D1Ev,_ZTv0_n16_N8S19115C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19115C2D0Ev,_ZTv0_n16_N8S19115C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C6__A1__8S19115C2__9S19115C10[] = {
  ABISELECT(184,132),
  ABISELECT(312,236),
  ABISELECT(184,132),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C2D1Ev,_ZTv0_n16_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C2D0Ev,_ZTv0_n16_N8S19115C2D0Ev),
};
extern void _ZN8S19115C6D1Ev();
extern void _ZN8S19115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C6__A1__9S19115C10[] = {
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&_ZN8S19115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev)();
extern void ABISELECT(_ZThn312_N8S19115C6D1Ev,_ZThn236_N8S19115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev)();
extern void ABISELECT(_ZThn312_N8S19115C6D0Ev,_ZThn236_N8S19115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19115C6__A1__9S19115C10[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev),
};
static  VTT_ENTRY vtt_S19115C10[] = {
  {&(_ZTV9S19115C10[9]),  9,42},
  {&(_ZTV9S19115C10[19]),  19,42},
  {&(_ZTV9S19115C10[35]),  35,42},
  {&(_ZTV9S19115C10[24]),  24,42},
  {&(_ZTV9S19115C10[40]),  40,42},
  {&(_ZTV9S19115C10[30]),  30,42},
  {&(_ZTV9S19115C10[9]),  9,42},
  {&(_tg__ZTV8S19115C2__9S19115C10[7]),  7,9},
  {&(_tg__ZTV8S19115C38S19115C2__9S19115C10[4]),  4,6},
  {&(_tg__ZTV8S19115C68S19115C38S19115C2__9S19115C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19115C68S19115C38S19115C2__9S19115C10[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19115C38S19115C2__9S19115C10[3]),  3,5},
  {&(_tg__ZTV8S19115C6__8S19115C38S19115C2__9S19115C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19115C38S19115C2__9S19115C10[3]),  3,5},
  {&(_tg__ZTV8S19115C78S19115C2__9S19115C10[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19115C2__9S19115C10[3]),  3,5},
  {&(_tg__ZTV8S19115C68S19115C3__8S19115C2__9S19115C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19115C2__9S19115C10[3]),  3,5},
  {&(_tg__ZTV8S19115C7__8S19115C2__9S19115C10[4]),  4,6},
  {&(_tg__ZTV8S19115C6__A1__8S19115C2__9S19115C10[4]),  4,6},
  {&(_tg__ZTV8S19115C6__A1__9S19115C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19115C6__A1__9S19115C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19115C10[];
extern  VTBL_ENTRY _ZTV9S19115C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19115C10[];
static VTBL_ENTRY alt_thunk_names265[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C2D0Ev,_ZThn104_N8S19115C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C2D0Ev,_ZThn76_N8S19115C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C2D1Ev,_ZThn104_N8S19115C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C2D1Ev,_ZThn76_N8S19115C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C3D0Ev,_ZThn104_N8S19115C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C3D0Ev,_ZThn76_N8S19115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C3D1Ev,_ZThn104_N8S19115C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C3D1Ev,_ZThn76_N8S19115C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19115C6D0Ev,_ZThn236_N8S19115C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19115C6D0Ev,_ZThn92_N8S19115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19115C6D1Ev,_ZThn236_N8S19115C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19115C6D1Ev,_ZThn92_N8S19115C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19115C10D0Ev,_ZThn236_N9S19115C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S19115C10D0Ev,_ZThn208_N9S19115C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19115C10D1Ev,_ZThn236_N9S19115C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S19115C10D1Ev,_ZThn208_N9S19115C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19115C10D0Ev,_ZTv0_n32_N9S19115C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19115C10D0Ev,_ZThn132_N9S19115C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19115C10D1Ev,_ZTv0_n32_N9S19115C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19115C10D1Ev,_ZThn132_N9S19115C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19115C10D0Ev,_ZTv0_n16_N9S19115C10D0Ev), // 
  (VTBL_ENTRY)_ZN9S19115C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19115C10D1Ev,_ZTv0_n16_N9S19115C10D1Ev), // 
  (VTBL_ENTRY)_ZN9S19115C10D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19115C10 = {  "S19115C10", // class name
  bases_S19115C10, 13,
  &(vtc_S19115C10[0]), // expected_vtbl_contents
  &(vtt_S19115C10[0]), // expected_vtt_contents
  ABISELECT(328,248), // object size
  NSPAIRA(_ZTI9S19115C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19115C10),42, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19115C10),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names265,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19115C14  : virtual S20760C9 {
  ::S4228C27 s19115c14f0;
  virtual  ~S19115C14(); // _ZN9S19115C14D2Ev
  S19115C14(); // tgen
};
//SIG(-1 S19115C14) C1{ VBC2{ vd m FL} vd FC3{ m}}


 S19115C14 ::~S19115C14(){ note_dtor("S19115C14", this);}
S19115C14 ::S19115C14(){ note_ctor("S19115C14", this);} // tgen

static void Test_S19115C14()
{
  extern Class_Descriptor cd_S19115C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19115C14, buf);
    S19115C14 *dp, &lv = *(dp=new (buf) S19115C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19115C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19115C14)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(16,8), "S19115C14");
    check_field_offset(lv, s19115c14f0, ABISELECT(8,4), "S19115C14.s19115c14f0");
    test_class_info(&lv, &cd_S19115C14);
    dp->~S19115C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19115C14(Test_S19115C14, "S19115C14", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S19115C14C1Ev();
extern void _ZN9S19115C14D2Ev();
Name_Map name_map_S19115C14[] = {
  NSPAIR(_ZN9S19115C14C1Ev),
  NSPAIR(_ZN9S19115C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S19115C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19115C14[];
extern void _ZN9S19115C14D1Ev();
extern void _ZN9S19115C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19115C14D1Ev,_ZTv0_n12_N9S19115C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S19115C14D1Ev,_ZThn8_N9S19115C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C14D0Ev,_ZTv0_n12_N9S19115C14D0Ev)();
extern void ABISELECT(_ZThn16_N9S19115C14D0Ev,_ZThn8_N9S19115C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19115C14[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19115C14[0]),
  (VTBL_ENTRY)&_ZN9S19115C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19115C14D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19115C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C14D1Ev,_ZTv0_n12_N9S19115C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C14D0Ev,_ZTv0_n12_N9S19115C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S19115C14[];
static  VTT_ENTRY vtt_S19115C14[] = {
  {&(_ZTV9S19115C14[3]),  3,10},
  {&(_ZTV9S19115C14[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S19115C14[];
extern  VTBL_ENTRY _ZTV9S19115C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19115C14[];
static VTBL_ENTRY alt_thunk_names266[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C14D0Ev,_ZTv0_n12_N9S19115C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19115C14D0Ev,_ZThn8_N9S19115C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C14D1Ev,_ZTv0_n12_N9S19115C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19115C14D1Ev,_ZThn8_N9S19115C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19115C14 = {  "S19115C14", // class name
  bases_S19115C14, 1,
  &(vtc_S19115C14[0]), // expected_vtbl_contents
  &(vtt_S19115C14[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S19115C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19115C14),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19115C14),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names266,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19115C13  : virtual S19115C14 , virtual S4228C23 , S19115C7 {
  int s19115c13f0;
  virtual  ~S19115C13(); // _ZN9S19115C13D2Ev
  S19115C13(); // tgen
};
//SIG(-1 S19115C13) C1{ VBC2{ VBC3{ vd m FL} vd FC4{ m}} VBC5{ m} BC6{ BC7{ vd m Fi[6]} VBC8{ m} VBC4 Fs} vd Fi}


 S19115C13 ::~S19115C13(){ note_dtor("S19115C13", this);}
S19115C13 ::S19115C13(){ note_ctor("S19115C13", this);} // tgen

static void Test_S19115C13()
{
  extern Class_Descriptor cd_S19115C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S19115C13, buf);
    S19115C13 *dp, &lv = *(dp=new (buf) S19115C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S19115C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19115C13)");
    check_base_class_offset(lv, (S20760C9*)(S19115C14*), ABISELECT(56,44), "S19115C13");
    check_base_class_offset(lv, (S19115C14*), ABISELECT(40,36), "S19115C13");
    check_base_class_offset(lv, (S4228C23*), 0, "S19115C13");
    check_base_class_offset(lv, (S20760C13*)(S19115C7*), 0, "S19115C13");
    check_base_class_offset(lv, (S4228C37*)(S19115C7*), 0, "S19115C13");
    check_base_class_offset(lv, (S4228C27*)(S19115C7*), 0, "S19115C13");
    check_base_class_offset(lv, (S19115C7*), 0, "S19115C13");
    check_field_offset(lv, s19115c13f0, ABISELECT(36,32), "S19115C13.s19115c13f0");
    test_class_info(&lv, &cd_S19115C13);
    dp->~S19115C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19115C13(Test_S19115C13, "S19115C13", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN9S19115C13C1Ev();
extern void _ZN9S19115C13D2Ev();
Name_Map name_map_S19115C13[] = {
  NSPAIR(_ZN9S19115C13C1Ev),
  NSPAIR(_ZN9S19115C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19115C14;
extern VTBL_ENTRY _ZTI9S19115C14[];
extern  VTBL_ENTRY _ZTV9S19115C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19115C14[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19115C7;
extern VTBL_ENTRY _ZTI8S19115C7[];
extern  VTBL_ENTRY _ZTV8S19115C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C7[];
static Base_Class bases_S19115C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(56,44), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19115C14,    ABISELECT(40,36), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19115C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19115C13[];
extern void _ZN9S19115C13D1Ev();
extern void _ZN9S19115C13D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19115C13D1Ev,_ZTv0_n16_N9S19115C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S19115C13D1Ev,_ZThn36_N9S19115C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19115C13D0Ev,_ZTv0_n16_N9S19115C13D0Ev)();
extern void ABISELECT(_ZThn40_N9S19115C13D0Ev,_ZThn36_N9S19115C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C13D1Ev,_ZTv0_n12_N9S19115C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19115C13D1Ev,_ZThn44_N9S19115C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C13D0Ev,_ZTv0_n12_N9S19115C13D0Ev)();
extern void ABISELECT(_ZThn56_N9S19115C13D0Ev,_ZThn44_N9S19115C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19115C13[] = {
  0,
  ABISELECT(56,44),
  ABISELECT(40,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19115C13[0]),
  (VTBL_ENTRY)&_ZN9S19115C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19115C13D0Ev,
  ABISELECT(-40,-36),
  ABISELECT(16,8),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI9S19115C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19115C13D1Ev,_ZTv0_n16_N9S19115C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19115C13D0Ev,_ZTv0_n16_N9S19115C13D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S19115C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C13D1Ev,_ZTv0_n12_N9S19115C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C13D0Ev,_ZTv0_n12_N9S19115C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19115C13[];
extern void _ZN8S19115C7D1Ev();
extern void _ZN8S19115C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C7__9S19115C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C7[0]),
  (VTBL_ENTRY)&_ZN8S19115C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C7D0Ev,
};
extern void _ZN9S19115C14D1Ev();
extern void _ZN9S19115C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19115C14__9S19115C13[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19115C14[0]),
  (VTBL_ENTRY)&_ZN9S19115C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19115C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19115C14D1Ev,_ZTv0_n12_N9S19115C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S19115C14D1Ev,_ZThn8_N9S19115C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C14D0Ev,_ZTv0_n12_N9S19115C14D0Ev)();
extern void ABISELECT(_ZThn16_N9S19115C14D0Ev,_ZThn8_N9S19115C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19115C14__9S19115C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19115C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C14D1Ev,_ZTv0_n12_N9S19115C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C14D0Ev,_ZTv0_n12_N9S19115C14D0Ev),
};
static  VTT_ENTRY vtt_S19115C13[] = {
  {&(_ZTV9S19115C13[7]),  7,20},
  {&(_tg__ZTV8S19115C7__9S19115C13[4]),  4,6},
  {&(_ZTV9S19115C13[13]),  13,20},
  {&(_ZTV9S19115C13[18]),  18,20},
  {&(_tg__ZTV9S19115C14__9S19115C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19115C14__9S19115C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19115C13[];
extern  VTBL_ENTRY _ZTV9S19115C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19115C13[];
static VTBL_ENTRY alt_thunk_names267[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C14D0Ev,_ZTv0_n12_N9S19115C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19115C14D0Ev,_ZThn8_N9S19115C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C14D1Ev,_ZTv0_n12_N9S19115C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19115C14D1Ev,_ZThn8_N9S19115C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C13D0Ev,_ZTv0_n12_N9S19115C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19115C13D0Ev,_ZThn44_N9S19115C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C13D1Ev,_ZTv0_n12_N9S19115C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19115C13D1Ev,_ZThn44_N9S19115C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19115C13D0Ev,_ZTv0_n16_N9S19115C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19115C13D0Ev,_ZThn36_N9S19115C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19115C13D1Ev,_ZTv0_n16_N9S19115C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19115C13D1Ev,_ZThn36_N9S19115C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19115C13 = {  "S19115C13", // class name
  bases_S19115C13, 7,
  &(vtc_S19115C13[0]), // expected_vtbl_contents
  &(vtt_S19115C13[0]), // expected_vtt_contents
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI9S19115C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19115C13),20, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19115C13),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names267,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19115C1  : virtual S19115C2 , S19115C10 , S19115C13 {
  ::S20759C5_nt s19115c1f0;
  ~S19115C1(); // tgen
  S19115C1(); // tgen
};
//SIG(1 S19115C1) C1{ VBC2{ BC3{ BC4{ vd m FL} VBC5{ vd m Fi[6]} BC6{ VBC4 vd} FC5} BC7{ BC5 VBC8{ m} VBC9{ m} Fs} VBC6 vd} BC10{ VBC2 BC11{ m Fp} BC12{ m FC4[10]} vd Fi} BC13{ VBC14{ VBC4 vd FC9} VBC15{ m} BC7 vd Fi} FC16{ vd m Fl}}


S19115C1 ::~S19115C1(){ note_dtor("S19115C1", this);} // tgen
S19115C1 ::S19115C1(){ note_ctor("S19115C1", this);} // tgen

static void Test_S19115C1()
{
  extern Class_Descriptor cd_S19115C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(51,76)];
    init_test(&cd_S19115C1, buf);
    S19115C1 *dp, &lv = *(dp=new (buf) S19115C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(400,300), "sizeof(S19115C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19115C1)");
    /*is_ambiguous_... S19115C3::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19115C3*)(S19115C2*), ABISELECT(240,176), "S19115C1");
    check_base_class_offset(lv, (S20760C13*)(S19115C3*)(S19115C2*), ABISELECT(336,252), "S19115C1");
    check_base_class_offset(lv, (S20760C9*)(S19115C6*)(S19115C3*)(S19115C2*), ABISELECT(368,280), "S19115C1");
    /*is_ambiguous_... S19115C1::S19115C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19115C6*), ABISELECT(368,280), "S19115C1");
    check_base_class_offset(lv, (S20760C9*)(S19115C14*), ABISELECT(368,280), "S19115C1");
    check_base_class_offset(lv, (S19115C6*)(S19115C3*)(S19115C2*), ABISELECT(256,188), "S19115C1");
    check_base_class_offset(lv, (S19115C3*)(S19115C2*), ABISELECT(240,176), "S19115C1");
    check_base_class_offset(lv, (S20760C13*)(S19115C7*)(S19115C2*), ABISELECT(296,220), "S19115C1");
    check_base_class_offset(lv, (S4228C37*)(S19115C7*)(S19115C2*), 0, "S19115C1");
    check_base_class_offset(lv, (S4228C37*)(S19115C7*)(S19115C13*), 0, "S19115C1");
    check_base_class_offset(lv, (S4228C27*)(S19115C7*)(S19115C2*), 0, "S19115C1");
    check_base_class_offset(lv, (S4228C27*)(S19115C7*)(S19115C13*), 0, "S19115C1");
    check_base_class_offset(lv, (S19115C7*)(S19115C2*), ABISELECT(296,220), "S19115C1");
    /*is_ambiguous_... S19115C2::S19115C6 */ AMB_check_base_class_offset(lv, (S19115C6*)(S19115C2*), 0, "S19115C1");
    check_base_class_offset(lv, (S19115C2*), ABISELECT(240,176), "S19115C1");
    check_base_class_offset(lv, (S19115C2*)(S19115C10*), ABISELECT(240,176), "S19115C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S19115C10*), ABISELECT(8,4), "S19115C1");
    check_base_class_offset(lv, (S19115C12*)(S19115C10*), ABISELECT(16,8), "S19115C1");
    check_base_class_offset(lv, (S19115C10*), 0, "S19115C1");
    check_base_class_offset(lv, (S19115C14*)(S19115C13*), ABISELECT(384,292), "S19115C1");
    check_base_class_offset(lv, (S4228C23*)(S19115C13*), 0, "S19115C1");
    check_base_class_offset(lv, (S20760C13*)(S19115C7*)(S19115C13*), ABISELECT(184,132), "S19115C1");
    check_base_class_offset(lv, (S19115C7*)(S19115C13*), ABISELECT(184,132), "S19115C1");
    check_base_class_offset(lv, (S19115C13*), ABISELECT(184,132), "S19115C1");
    check_field_offset(lv, s19115c1f0, ABISELECT(224,168), "S19115C1.s19115c1f0");
    test_class_info(&lv, &cd_S19115C1);
    dp->~S19115C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19115C1(Test_S19115C1, "S19115C1", ABISELECT(400,300));

#else // __cplusplus

extern void _ZN8S19115C1C1Ev();
extern void _ZN8S19115C1D1Ev();
Name_Map name_map_S19115C1[] = {
  NSPAIR(_ZN8S19115C1C1Ev),
  NSPAIR(_ZN8S19115C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19115C6;
extern VTBL_ENTRY _ZTI8S19115C6[];
extern  VTBL_ENTRY _ZTV8S19115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C6[];
extern Class_Descriptor cd_S19115C3;
extern VTBL_ENTRY _ZTI8S19115C3[];
extern  VTBL_ENTRY _ZTV8S19115C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C3[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19115C7;
extern VTBL_ENTRY _ZTI8S19115C7[];
extern  VTBL_ENTRY _ZTV8S19115C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C7[];
extern Class_Descriptor cd_S19115C6;
extern VTBL_ENTRY _ZTI8S19115C6[];
extern  VTBL_ENTRY _ZTV8S19115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C6[];
extern Class_Descriptor cd_S19115C2;
extern VTBL_ENTRY _ZTI8S19115C2[];
extern  VTBL_ENTRY _ZTV8S19115C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C2[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S19115C10;
extern VTBL_ENTRY _ZTI9S19115C10[];
extern  VTBL_ENTRY _ZTV9S19115C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19115C10[];
extern Class_Descriptor cd_S19115C14;
extern VTBL_ENTRY _ZTI9S19115C14[];
extern  VTBL_ENTRY _ZTV9S19115C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19115C14[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S19115C7;
extern VTBL_ENTRY _ZTI8S19115C7[];
extern  VTBL_ENTRY _ZTV8S19115C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C7[];
extern Class_Descriptor cd_S19115C13;
extern VTBL_ENTRY _ZTI9S19115C13[];
extern  VTBL_ENTRY _ZTV9S19115C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19115C13[];
static Base_Class bases_S19115C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(240,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(336,252), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(368,280), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19115C6,    ABISELECT(256,188), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19115C3,    ABISELECT(240,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(296,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19115C7,    ABISELECT(296,220), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19115C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19115C2,    ABISELECT(240,176), //bcp->offset
    22, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19115C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19115C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19115C14,    ABISELECT(384,292), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20760C13,    ABISELECT(184,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19115C7,    ABISELECT(184,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19115C13,    ABISELECT(184,132), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19115C1[];
extern void ABISELECT(_ZTv0_n32_N8S19115C1D1Ev,_ZTv0_n16_N8S19115C1D1Ev)();
extern void _ZN8S19115C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19115C1D0Ev,_ZTv0_n16_N8S19115C1D0Ev)();
extern void _ZN8S19115C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZThn184_N8S19115C1D1Ev,_ZThn132_N8S19115C1D1Ev)();
extern void ABISELECT(_ZThn184_N8S19115C1D0Ev,_ZThn132_N8S19115C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19115C1D1Ev,_ZTv0_n32_N8S19115C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S19115C1D1Ev,_ZThn176_N8S19115C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19115C1D0Ev,_ZTv0_n32_N8S19115C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S19115C1D0Ev,_ZThn176_N8S19115C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S19115C1D1Ev,_ZTvn12_n32_N8S19115C1D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19115C1D0Ev,_ZTvn12_n32_N8S19115C1D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19115C1D1Ev,_ZTvn44_n32_N8S19115C1D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19115C1D0Ev,_ZTvn44_n32_N8S19115C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19115C1D1Ev,_ZTv0_n12_N8S19115C1D1Ev)();
extern void ABISELECT(_ZThn336_N8S19115C1D1Ev,_ZThn252_N8S19115C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C1D0Ev,_ZTv0_n12_N8S19115C1D0Ev)();
extern void ABISELECT(_ZThn336_N8S19115C1D0Ev,_ZThn252_N8S19115C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C1D1Ev,_ZTv0_n12_N8S19115C1D1Ev)();
extern void ABISELECT(_ZThn368_N8S19115C1D1Ev,_ZThn280_N8S19115C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C1D0Ev,_ZTv0_n12_N8S19115C1D0Ev)();
extern void ABISELECT(_ZThn368_N8S19115C1D0Ev,_ZThn280_N8S19115C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19115C1D1Ev,_ZTv0_n16_N8S19115C1D1Ev)();
extern void ABISELECT(_ZThn384_N8S19115C1D1Ev,_ZThn292_N8S19115C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19115C1D0Ev,_ZTv0_n16_N8S19115C1D0Ev)();
extern void ABISELECT(_ZThn384_N8S19115C1D0Ev,_ZThn292_N8S19115C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19115C1[] = {
  0,
  ABISELECT(384,292),
  0,
  0,
  0,
  ABISELECT(336,252),
  ABISELECT(240,176),
  0,
  ABISELECT(368,280),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C1D1Ev,_ZTv0_n16_N8S19115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C1D0Ev,_ZTv0_n16_N8S19115C1D0Ev),
  ABISELECT(-184,-132),
  ABISELECT(184,148),
  ABISELECT(200,160),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S19115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn184_N8S19115C1D1Ev,_ZThn132_N8S19115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn184_N8S19115C1D0Ev,_ZThn132_N8S19115C1D0Ev),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S19115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19115C1D1Ev,_ZTv0_n32_N8S19115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19115C1D0Ev,_ZTv0_n32_N8S19115C1D0Ev),
  ABISELECT(112,92),
  ABISELECT(-256,-188),
  (VTBL_ENTRY)&(_ZTI8S19115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19115C1D1Ev,_ZTvn12_n32_N8S19115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19115C1D0Ev,_ZTvn12_n32_N8S19115C1D0Ev),
  ABISELECT(-296,-220),
  ABISELECT(-296,-220),
  ABISELECT(-296,-220),
  (VTBL_ENTRY)&(_ZTI8S19115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19115C1D1Ev,_ZTvn44_n32_N8S19115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19115C1D0Ev,_ZTvn44_n32_N8S19115C1D0Ev),
  ABISELECT(-336,-252),
  ABISELECT(-336,-252),
  (VTBL_ENTRY)&(_ZTI8S19115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C1D1Ev,_ZTv0_n12_N8S19115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C1D0Ev,_ZTv0_n12_N8S19115C1D0Ev),
  ABISELECT(-368,-280),
  ABISELECT(-368,-280),
  (VTBL_ENTRY)&(_ZTI8S19115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C1D1Ev,_ZTv0_n12_N8S19115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C1D0Ev,_ZTv0_n12_N8S19115C1D0Ev),
  ABISELECT(-384,-292),
  ABISELECT(-16,-12),
  ABISELECT(-384,-292),
  (VTBL_ENTRY)&(_ZTI8S19115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C1D1Ev,_ZTv0_n16_N8S19115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C1D0Ev,_ZTv0_n16_N8S19115C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19115C1[];
extern void ABISELECT(_ZTv0_n32_N9S19115C10D1Ev,_ZTv0_n16_N9S19115C10D1Ev)();
extern void _ZN9S19115C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19115C10D0Ev,_ZTv0_n16_N9S19115C10D0Ev)();
extern void _ZN9S19115C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19115C10__8S19115C1[] = {
  0,
  0,
  0,
  ABISELECT(336,252),
  ABISELECT(240,176),
  0,
  ABISELECT(368,280),
  0,
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19115C10D1Ev,_ZTv0_n16_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19115C10D0Ev,_ZTv0_n16_N9S19115C10D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19115C10D1Ev,_ZTv0_n32_N9S19115C10D1Ev)();
extern void ABISELECT(_ZThn240_N9S19115C10D1Ev,_ZThn176_N9S19115C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19115C10D0Ev,_ZTv0_n32_N9S19115C10D0Ev)();
extern void ABISELECT(_ZThn240_N9S19115C10D0Ev,_ZThn176_N9S19115C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19115C2__9S19115C10__8S19115C1[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19115C10D1Ev,_ZTv0_n32_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19115C10D0Ev,_ZTv0_n32_N9S19115C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev)();
extern void ABISELECT(_ZThn336_N9S19115C10D1Ev,_ZThn252_N9S19115C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev)();
extern void ABISELECT(_ZThn336_N9S19115C10D0Ev,_ZThn252_N9S19115C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S19115C10__8S19115C1[] = {
  ABISELECT(-336,-252),
  ABISELECT(-336,-252),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N9S19115C10D1Ev,_ZTvn12_n32_N9S19115C10D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N9S19115C10D0Ev,_ZTvn12_n32_N9S19115C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C68S19115C38S19115C2__9S19115C10__8S19115C1[] = {
  ABISELECT(112,92),
  ABISELECT(-256,-188),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N9S19115C10D1Ev,_ZTvn12_n32_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N9S19115C10D0Ev,_ZTvn12_n32_N9S19115C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev)();
extern void ABISELECT(_ZThn368_N9S19115C10D1Ev,_ZThn280_N9S19115C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev)();
extern void ABISELECT(_ZThn368_N9S19115C10D0Ev,_ZThn280_N9S19115C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S19115C10__8S19115C1[] = {
  ABISELECT(-368,-280),
  ABISELECT(-368,-280),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N9S19115C10D1Ev,_ZTvn44_n32_N9S19115C10D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N9S19115C10D0Ev,_ZTvn44_n32_N9S19115C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C78S19115C2__9S19115C10__8S19115C1[] = {
  ABISELECT(-296,-220),
  ABISELECT(-296,-220),
  ABISELECT(-296,-220),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N9S19115C10D1Ev,_ZTvn44_n32_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N9S19115C10D0Ev,_ZTvn44_n32_N9S19115C10D0Ev),
};
extern void _ZN9S19115C13D1Ev();
extern void _ZN9S19115C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19115C13__8S19115C1[] = {
  ABISELECT(-184,-132),
  ABISELECT(184,148),
  ABISELECT(200,160),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  0,
  (VTBL_ENTRY)&(_ZTI9S19115C13[0]),
  (VTBL_ENTRY)&_ZN9S19115C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19115C13D0Ev,
};
extern void _ZN8S19115C7D1Ev();
extern void _ZN8S19115C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C79S19115C13__A1__8S19115C1[] = {
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C7[0]),
  (VTBL_ENTRY)&_ZN8S19115C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19115C13D1Ev,_ZTv0_n16_N9S19115C13D1Ev)();
extern void ABISELECT(_ZThn200_N9S19115C13D1Ev,_ZThn160_N9S19115C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19115C13D0Ev,_ZTv0_n16_N9S19115C13D0Ev)();
extern void ABISELECT(_ZThn200_N9S19115C13D0Ev,_ZThn160_N9S19115C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19115C14__9S19115C13__8S19115C1[] = {
  ABISELECT(-200,-160),
  ABISELECT(-16,-12),
  ABISELECT(-200,-160),
  (VTBL_ENTRY)&(_ZTI9S19115C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19115C13D1Ev,_ZTv0_n16_N9S19115C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19115C13D0Ev,_ZTv0_n16_N9S19115C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19115C13D1Ev,_ZTv0_n12_N9S19115C13D1Ev)();
extern void ABISELECT(_ZThn184_N9S19115C13D1Ev,_ZThn148_N9S19115C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C13D0Ev,_ZTv0_n12_N9S19115C13D0Ev)();
extern void ABISELECT(_ZThn184_N9S19115C13D0Ev,_ZThn148_N9S19115C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19115C13__8S19115C1[] = {
  ABISELECT(-184,-148),
  ABISELECT(-184,-148),
  (VTBL_ENTRY)&(_ZTI9S19115C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C13D1Ev,_ZTv0_n12_N9S19115C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C13D0Ev,_ZTv0_n12_N9S19115C13D0Ev),
};
extern void _ZN8S19115C2D1Ev();
extern void _ZN8S19115C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C2__8S19115C1[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&_ZN8S19115C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C2D0Ev,
};
extern void _ZN8S19115C3D1Ev();
extern void _ZN8S19115C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C38S19115C2__8S19115C1[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&_ZN8S19115C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C3D0Ev,
};
extern void _ZN8S19115C6D1Ev();
extern void _ZN8S19115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C68S19115C38S19115C2__8S19115C1[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&_ZN8S19115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19115C6D1Ev,_ZThn92_N8S19115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19115C6D0Ev,_ZThn92_N8S19115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19115C68S19115C38S19115C2__8S19115C1[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S19115C3D1Ev,_ZThn76_N8S19115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S19115C3D0Ev,_ZThn76_N8S19115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19115C38S19115C2__8S19115C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19115C3D1Ev,_ZThn12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19115C3D0Ev,_ZThn12_N8S19115C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C6__8S19115C38S19115C2__8S19115C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C3D1Ev,_ZThn12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C3D0Ev,_ZThn12_N8S19115C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S19115C3D1Ev,_ZThn104_N8S19115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S19115C3D0Ev,_ZThn104_N8S19115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19115C38S19115C2__8S19115C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev),
};
extern void _ZN8S19115C7D1Ev();
extern void _ZN8S19115C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C78S19115C2__8S19115C1[] = {
  ABISELECT(-296,-220),
  ABISELECT(-296,-220),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C7[0]),
  (VTBL_ENTRY)&_ZN8S19115C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S19115C2D1Ev,_ZThn76_N8S19115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S19115C2D0Ev,_ZThn76_N8S19115C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19115C2__8S19115C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19115C2D1Ev,_ZThn12_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19115C2D0Ev,_ZThn12_N8S19115C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C68S19115C3__8S19115C2__8S19115C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C2D1Ev,_ZThn12_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C2D0Ev,_ZThn12_N8S19115C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S19115C2D1Ev,_ZThn104_N8S19115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S19115C2D0Ev,_ZThn104_N8S19115C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19115C2__8S19115C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19115C2D1Ev,_ZThn44_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S19115C2D0Ev,_ZThn44_N8S19115C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C7__8S19115C2__8S19115C1[] = {
  ABISELECT(-296,-220),
  ABISELECT(-296,-220),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19115C2D1Ev,_ZThn44_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19115C2D0Ev,_ZThn44_N8S19115C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19115C2D1Ev,_ZTv0_n16_N8S19115C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19115C2D0Ev,_ZTv0_n16_N8S19115C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C6__A1__8S19115C2__8S19115C1[] = {
  ABISELECT(240,176),
  ABISELECT(368,280),
  ABISELECT(240,176),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C2D1Ev,_ZTv0_n16_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C2D0Ev,_ZTv0_n16_N8S19115C2D0Ev),
};
extern void _ZN8S19115C6D1Ev();
extern void _ZN8S19115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C6__A1__8S19115C1[] = {
  ABISELECT(368,280),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&_ZN8S19115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev)();
extern void ABISELECT(_ZThn368_N8S19115C6D1Ev,_ZThn280_N8S19115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev)();
extern void ABISELECT(_ZThn368_N8S19115C6D0Ev,_ZThn280_N8S19115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19115C6__A1__8S19115C1[] = {
  ABISELECT(-368,-280),
  ABISELECT(-368,-280),
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev),
};
extern void _ZN9S19115C14D1Ev();
extern void _ZN9S19115C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19115C14__8S19115C1[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19115C14[0]),
  (VTBL_ENTRY)&_ZN9S19115C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19115C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19115C14D1Ev,_ZTv0_n12_N9S19115C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19115C14D0Ev,_ZTv0_n12_N9S19115C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19115C14__8S19115C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19115C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C14D1Ev,_ZTv0_n12_N9S19115C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C14D0Ev,_ZTv0_n12_N9S19115C14D0Ev),
};
static  VTT_ENTRY vtt_S19115C1[] = {
  {&(_ZTV8S19115C1[11]),  11,59},
  {&(_tg__ZTV9S19115C10__8S19115C1[9]),  9,11},
  {&(_tg__ZTV8S19115C2__9S19115C10__8S19115C1[8]),  8,10},
  {&(_tg__ZTV9S20760C13__9S19115C10__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S19115C68S19115C38S19115C2__9S19115C10__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S19115C10__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S19115C78S19115C2__9S19115C10__8S19115C1[4]),  4,6},
  {&(_tg__ZTV9S19115C10__8S19115C1[9]),  9,11},
  {&(_tg__ZTV9S19115C13__8S19115C1[7]),  7,9},
  {&(_tg__ZTV8S19115C79S19115C13__A1__8S19115C1[4]),  4,6},
  {&(_tg__ZTV9S19115C14__9S19115C13__8S19115C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__9S19115C13__8S19115C1[3]),  3,5},
  {&(_ZTV8S19115C1[30]),  30,59},
  {&(_ZTV8S19115C1[46]),  46,59},
  {&(_ZTV8S19115C1[35]),  35,59},
  {&(_ZTV8S19115C1[51]),  51,59},
  {&(_ZTV8S19115C1[41]),  41,59},
  {&(_ZTV8S19115C1[11]),  11,59},
  {&(_ZTV8S19115C1[20]),  20,59},
  {&(_ZTV8S19115C1[57]),  57,59},
  {&(_tg__ZTV8S19115C2__8S19115C1[7]),  7,9},
  {&(_tg__ZTV8S19115C38S19115C2__8S19115C1[4]),  4,6},
  {&(_tg__ZTV8S19115C68S19115C38S19115C2__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19115C68S19115C38S19115C2__8S19115C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19115C38S19115C2__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S19115C6__8S19115C38S19115C2__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19115C38S19115C2__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S19115C78S19115C2__8S19115C1[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19115C2__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S19115C68S19115C3__8S19115C2__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19115C2__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S19115C7__8S19115C2__8S19115C1[4]),  4,6},
  {&(_tg__ZTV8S19115C6__A1__8S19115C2__8S19115C1[4]),  4,6},
  {&(_tg__ZTV8S19115C6__A1__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19115C6__A1__8S19115C1[3]),  3,5},
  {&(_tg__ZTV9S19115C14__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19115C14__8S19115C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19115C1[];
extern  VTBL_ENTRY _ZTV8S19115C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C1[];
static VTBL_ENTRY alt_thunk_names268[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C2D0Ev,_ZThn104_N8S19115C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C2D0Ev,_ZThn76_N8S19115C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C2D1Ev,_ZThn104_N8S19115C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C2D1Ev,_ZThn76_N8S19115C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C3D0Ev,_ZThn104_N8S19115C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C3D0Ev,_ZThn76_N8S19115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C3D1Ev,_ZThn104_N8S19115C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C3D1Ev,_ZThn76_N8S19115C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19115C6D0Ev,_ZThn280_N8S19115C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19115C6D0Ev,_ZThn92_N8S19115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19115C6D1Ev,_ZThn280_N8S19115C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19115C6D1Ev,_ZThn92_N8S19115C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C13D0Ev,_ZTv0_n12_N9S19115C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19115C13D0Ev,_ZThn148_N9S19115C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C13D1Ev,_ZTv0_n12_N9S19115C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19115C13D1Ev,_ZThn148_N9S19115C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19115C13D0Ev,_ZTv0_n16_N9S19115C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S19115C13D0Ev,_ZThn160_N9S19115C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19115C13D1Ev,_ZTv0_n16_N9S19115C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S19115C13D1Ev,_ZThn160_N9S19115C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19115C10D0Ev,_ZThn280_N9S19115C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19115C10D0Ev,_ZThn252_N9S19115C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19115C10D1Ev,_ZThn280_N9S19115C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19115C10D1Ev,_ZThn252_N9S19115C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19115C10D0Ev,_ZTv0_n32_N9S19115C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S19115C10D0Ev,_ZThn176_N9S19115C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19115C10D1Ev,_ZTv0_n32_N9S19115C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S19115C10D1Ev,_ZThn176_N9S19115C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19115C10D0Ev,_ZTv0_n16_N9S19115C10D0Ev), // 
  (VTBL_ENTRY)_ZN9S19115C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19115C10D1Ev,_ZTv0_n16_N9S19115C10D1Ev), // 
  (VTBL_ENTRY)_ZN9S19115C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C1D0Ev,_ZTv0_n12_N8S19115C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19115C1D0Ev,_ZThn280_N8S19115C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19115C1D0Ev,_ZThn252_N8S19115C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C1D1Ev,_ZTv0_n12_N8S19115C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19115C1D1Ev,_ZThn280_N8S19115C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19115C1D1Ev,_ZThn252_N8S19115C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19115C1D0Ev,_ZTv0_n32_N8S19115C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19115C1D0Ev,_ZThn176_N8S19115C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19115C1D1Ev,_ZTv0_n32_N8S19115C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19115C1D1Ev,_ZThn176_N8S19115C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19115C1D0Ev,_ZTv0_n16_N8S19115C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S19115C1D0Ev,_ZThn292_N8S19115C1D0Ev),
  (VTBL_ENTRY)_ZN8S19115C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19115C1D1Ev,_ZTv0_n16_N8S19115C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S19115C1D1Ev,_ZThn292_N8S19115C1D1Ev),
  (VTBL_ENTRY)_ZN8S19115C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19115C1 = {  "S19115C1", // class name
  bases_S19115C1, 19,
  &(vtc_S19115C1[0]), // expected_vtbl_contents
  &(vtt_S19115C1[0]), // expected_vtt_contents
  ABISELECT(400,300), // object size
  NSPAIRA(_ZTI8S19115C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19115C1),59, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19115C1),37, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names268,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5251C3  {
  char s5251c3f0;
  int s5251c3f1;
  void *s5251c3f2[3];
  char s5251c3f3[3];
  ::S4228C19_nt s5251c3f4;
  char s5251c3f5;
  void *s5251c3f6;
  int s5251c3f7[2];
  virtual  ~S5251C3(); // _ZN7S5251C3D1Ev
  virtual void  v5(); // _ZN7S5251C32v5Ev
  virtual void  v6(); // _ZN7S5251C32v6Ev
  virtual void  v7(); // _ZN7S5251C32v7Ev
  virtual void  v8(); // _ZN7S5251C32v8Ev
  virtual void  v9(); // _ZN7S5251C32v9Ev
  virtual void  v10(); // _ZN7S5251C33v10Ev
  virtual void  v11(); // _ZN7S5251C33v11Ev
  virtual void  v12(); // _ZN7S5251C33v12Ev
  virtual void  v13(); // _ZN7S5251C33v13Ev
  virtual void  v14(); // _ZN7S5251C33v14Ev
  virtual void  v15(); // _ZN7S5251C33v15Ev
  virtual void  v16(); // _ZN7S5251C33v16Ev
  virtual void  v17(); // _ZN7S5251C33v17Ev
  virtual void  v18(); // _ZN7S5251C33v18Ev
  S5251C3(); // tgen
};
//SIG(-1 S5251C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fc Fi Fp[3] Fc[3] FC2{ m Fp Fi FC3{ m}} Fc Fp Fi[2]}


 S5251C3 ::~S5251C3(){ note_dtor("S5251C3", this);}
void  S5251C3 ::v5(){vfunc_called(this, "_ZN7S5251C32v5Ev");}
void  S5251C3 ::v6(){vfunc_called(this, "_ZN7S5251C32v6Ev");}
void  S5251C3 ::v7(){vfunc_called(this, "_ZN7S5251C32v7Ev");}
void  S5251C3 ::v8(){vfunc_called(this, "_ZN7S5251C32v8Ev");}
void  S5251C3 ::v9(){vfunc_called(this, "_ZN7S5251C32v9Ev");}
void  S5251C3 ::v10(){vfunc_called(this, "_ZN7S5251C33v10Ev");}
void  S5251C3 ::v11(){vfunc_called(this, "_ZN7S5251C33v11Ev");}
void  S5251C3 ::v12(){vfunc_called(this, "_ZN7S5251C33v12Ev");}
void  S5251C3 ::v13(){vfunc_called(this, "_ZN7S5251C33v13Ev");}
void  S5251C3 ::v14(){vfunc_called(this, "_ZN7S5251C33v14Ev");}
void  S5251C3 ::v15(){vfunc_called(this, "_ZN7S5251C33v15Ev");}
void  S5251C3 ::v16(){vfunc_called(this, "_ZN7S5251C33v16Ev");}
void  S5251C3 ::v17(){vfunc_called(this, "_ZN7S5251C33v17Ev");}
void  S5251C3 ::v18(){vfunc_called(this, "_ZN7S5251C33v18Ev");}
S5251C3 ::S5251C3(){ note_ctor("S5251C3", this);} // tgen

static void Test_S5251C3()
{
  extern Class_Descriptor cd_S5251C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S5251C3, buf);
    S5251C3 *dp, &lv = *(dp=new (buf) S5251C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S5251C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5251C3)");
    check_field_offset(lv, s5251c3f0, ABISELECT(8,4), "S5251C3.s5251c3f0");
    check_field_offset(lv, s5251c3f1, ABISELECT(12,8), "S5251C3.s5251c3f1");
    check_field_offset(lv, s5251c3f2, ABISELECT(16,12), "S5251C3.s5251c3f2");
    check_field_offset(lv, s5251c3f3, ABISELECT(40,24), "S5251C3.s5251c3f3");
    check_field_offset(lv, s5251c3f4, ABISELECT(48,28), "S5251C3.s5251c3f4");
    check_field_offset(lv, s5251c3f5, ABISELECT(64,40), "S5251C3.s5251c3f5");
    check_field_offset(lv, s5251c3f6, ABISELECT(72,44), "S5251C3.s5251c3f6");
    check_field_offset(lv, s5251c3f7, ABISELECT(80,48), "S5251C3.s5251c3f7");
    test_class_info(&lv, &cd_S5251C3);
    dp->~S5251C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5251C3(Test_S5251C3, "S5251C3", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S5251C3C1Ev();
extern void _ZN7S5251C3D1Ev();
Name_Map name_map_S5251C3[] = {
  NSPAIR(_ZN7S5251C3C1Ev),
  NSPAIR(_ZN7S5251C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5251C3[];
extern void _ZN7S5251C3D1Ev();
extern void _ZN7S5251C3D0Ev();
extern void _ZN7S5251C32v5Ev();
extern void _ZN7S5251C32v6Ev();
extern void _ZN7S5251C32v7Ev();
extern void _ZN7S5251C32v8Ev();
extern void _ZN7S5251C32v9Ev();
extern void _ZN7S5251C33v10Ev();
extern void _ZN7S5251C33v11Ev();
extern void _ZN7S5251C33v12Ev();
extern void _ZN7S5251C33v13Ev();
extern void _ZN7S5251C33v14Ev();
extern void _ZN7S5251C33v15Ev();
extern void _ZN7S5251C33v16Ev();
extern void _ZN7S5251C33v17Ev();
extern void _ZN7S5251C33v18Ev();
static  VTBL_ENTRY vtc_S5251C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5251C3[0]),
  (VTBL_ENTRY)&_ZN7S5251C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5251C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v18Ev,
};
extern VTBL_ENTRY _ZTI7S5251C3[];
extern  VTBL_ENTRY _ZTV7S5251C3[];
Class_Descriptor cd_S5251C3 = {  "S5251C3", // class name
  0,0,//no base classes
  &(vtc_S5251C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S5251C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5251C3),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5251C2  : S5251C3 {
  char s5251c2f0;
  void *s5251c2f1[2];
  virtual  ~S5251C2(); // _ZN7S5251C2D1Ev
  virtual void  v19(); // _ZN7S5251C23v19Ev
  S5251C2(); // tgen
};
//SIG(-1 S5251C2) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fc Fi Fp[3] Fc[3] FC3{ m Fp Fi FC4{ m}} Fc Fp Fi[2]} vd v1 Fc Fp[2]}


 S5251C2 ::~S5251C2(){ note_dtor("S5251C2", this);}
void  S5251C2 ::v19(){vfunc_called(this, "_ZN7S5251C23v19Ev");}
S5251C2 ::S5251C2(){ note_ctor("S5251C2", this);} // tgen

static void Test_S5251C2()
{
  extern Class_Descriptor cd_S5251C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,18)];
    init_test(&cd_S5251C2, buf);
    S5251C2 *dp, &lv = *(dp=new (buf) S5251C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S5251C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5251C2)");
    check_base_class_offset(lv, (S5251C3*), 0, "S5251C2");
    check_field_offset(lv, s5251c2f0, ABISELECT(88,56), "S5251C2.s5251c2f0");
    check_field_offset(lv, s5251c2f1, ABISELECT(96,60), "S5251C2.s5251c2f1");
    test_class_info(&lv, &cd_S5251C2);
    dp->~S5251C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5251C2(Test_S5251C2, "S5251C2", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN7S5251C2C1Ev();
extern void _ZN7S5251C2D1Ev();
Name_Map name_map_S5251C2[] = {
  NSPAIR(_ZN7S5251C2C1Ev),
  NSPAIR(_ZN7S5251C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5251C3;
extern VTBL_ENTRY _ZTI7S5251C3[];
extern  VTBL_ENTRY _ZTV7S5251C3[];
static Base_Class bases_S5251C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5251C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5251C2[];
extern void _ZN7S5251C2D1Ev();
extern void _ZN7S5251C2D0Ev();
extern void _ZN7S5251C32v5Ev();
extern void _ZN7S5251C32v6Ev();
extern void _ZN7S5251C32v7Ev();
extern void _ZN7S5251C32v8Ev();
extern void _ZN7S5251C32v9Ev();
extern void _ZN7S5251C33v10Ev();
extern void _ZN7S5251C33v11Ev();
extern void _ZN7S5251C33v12Ev();
extern void _ZN7S5251C33v13Ev();
extern void _ZN7S5251C33v14Ev();
extern void _ZN7S5251C33v15Ev();
extern void _ZN7S5251C33v16Ev();
extern void _ZN7S5251C33v17Ev();
extern void _ZN7S5251C33v18Ev();
extern void _ZN7S5251C23v19Ev();
static  VTBL_ENTRY vtc_S5251C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5251C2[0]),
  (VTBL_ENTRY)&_ZN7S5251C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5251C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5251C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S5251C2[];
extern  VTBL_ENTRY _ZTV7S5251C2[];
Class_Descriptor cd_S5251C2 = {  "S5251C2", // class name
  bases_S5251C2, 1,
  &(vtc_S5251C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI7S5251C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5251C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5251C1  : S5251C2 {
  void *s5251c1f0[4];
  ::S4228C44 s5251c1f1;
  ::S4228C19_nt s5251c1f2;
  ::S4228C19_nt s5251c1f3;
  ::S4228C19_nt s5251c1f4;
  virtual  ~S5251C1(); // _ZN7S5251C1D1Ev
  virtual void  v1(); // _ZN7S5251C12v1Ev
  virtual void  v2(); // _ZN7S5251C12v2Ev
  virtual void  v3(); // _ZN7S5251C12v3Ev
  virtual void  v4(); // _ZN7S5251C12v4Ev
  S5251C1(); // tgen
};
//SIG(1 S5251C1) C1{ BC2{ BC3{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fc Fi Fp[3] Fc[3] FC4{ m Fp Fi FC5{ m}} Fc Fp Fi[2]} vd v19 Fc Fp[2]} vd v1 v2 v3 v4 Fp[4] FC6{ m Fp Fi[2] FC7{ m}} FC4 FC4 FC4}


 S5251C1 ::~S5251C1(){ note_dtor("S5251C1", this);}
void  S5251C1 ::v1(){vfunc_called(this, "_ZN7S5251C12v1Ev");}
void  S5251C1 ::v2(){vfunc_called(this, "_ZN7S5251C12v2Ev");}
void  S5251C1 ::v3(){vfunc_called(this, "_ZN7S5251C12v3Ev");}
void  S5251C1 ::v4(){vfunc_called(this, "_ZN7S5251C12v4Ev");}
S5251C1 ::S5251C1(){ note_ctor("S5251C1", this);} // tgen

static void Test_S5251C1()
{
  extern Class_Descriptor cd_S5251C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,35)];
    init_test(&cd_S5251C1, buf);
    S5251C1 *dp, &lv = *(dp=new (buf) S5251C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,136), "sizeof(S5251C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5251C1)");
    check_base_class_offset(lv, (S5251C3*)(S5251C2*), 0, "S5251C1");
    check_base_class_offset(lv, (S5251C2*), 0, "S5251C1");
    check_field_offset(lv, s5251c1f0, ABISELECT(112,68), "S5251C1.s5251c1f0");
    check_field_offset(lv, s5251c1f1, ABISELECT(144,84), "S5251C1.s5251c1f1");
    check_field_offset(lv, s5251c1f2, ABISELECT(168,100), "S5251C1.s5251c1f2");
    check_field_offset(lv, s5251c1f3, ABISELECT(184,112), "S5251C1.s5251c1f3");
    check_field_offset(lv, s5251c1f4, ABISELECT(200,124), "S5251C1.s5251c1f4");
    test_class_info(&lv, &cd_S5251C1);
    dp->~S5251C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5251C1(Test_S5251C1, "S5251C1", ABISELECT(216,136));

#else // __cplusplus

extern void _ZN7S5251C1C1Ev();
extern void _ZN7S5251C1D1Ev();
Name_Map name_map_S5251C1[] = {
  NSPAIR(_ZN7S5251C1C1Ev),
  NSPAIR(_ZN7S5251C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5251C3;
extern VTBL_ENTRY _ZTI7S5251C3[];
extern  VTBL_ENTRY _ZTV7S5251C3[];
extern Class_Descriptor cd_S5251C2;
extern VTBL_ENTRY _ZTI7S5251C2[];
extern  VTBL_ENTRY _ZTV7S5251C2[];
static Base_Class bases_S5251C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5251C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5251C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5251C1[];
extern void _ZN7S5251C1D1Ev();
extern void _ZN7S5251C1D0Ev();
extern void _ZN7S5251C32v5Ev();
extern void _ZN7S5251C32v6Ev();
extern void _ZN7S5251C32v7Ev();
extern void _ZN7S5251C32v8Ev();
extern void _ZN7S5251C32v9Ev();
extern void _ZN7S5251C33v10Ev();
extern void _ZN7S5251C33v11Ev();
extern void _ZN7S5251C33v12Ev();
extern void _ZN7S5251C33v13Ev();
extern void _ZN7S5251C33v14Ev();
extern void _ZN7S5251C33v15Ev();
extern void _ZN7S5251C33v16Ev();
extern void _ZN7S5251C33v17Ev();
extern void _ZN7S5251C33v18Ev();
extern void _ZN7S5251C23v19Ev();
extern void _ZN7S5251C12v1Ev();
extern void _ZN7S5251C12v2Ev();
extern void _ZN7S5251C12v3Ev();
extern void _ZN7S5251C12v4Ev();
static  VTBL_ENTRY vtc_S5251C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5251C1[0]),
  (VTBL_ENTRY)&_ZN7S5251C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5251C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5251C23v19Ev,
  (VTBL_ENTRY)&_ZN7S5251C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5251C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5251C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5251C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S5251C1[];
extern  VTBL_ENTRY _ZTV7S5251C1[];
Class_Descriptor cd_S5251C1 = {  "S5251C1", // class name
  bases_S5251C1, 2,
  &(vtc_S5251C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(216,136), // object size
  NSPAIRA(_ZTI7S5251C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5251C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21162C2  : virtual S20759C5_nt {
  char s21162c2f0[2];
  virtual  ~S21162C2(); // _ZN8S21162C2D2Ev
  S21162C2(); // tgen
};
//SIG(-1 S21162C2) C1{ VBC2{ vd m Fl} vd Fc[2]}


 S21162C2 ::~S21162C2(){ note_dtor("S21162C2", this);}
S21162C2 ::S21162C2(){ note_ctor("S21162C2", this);} // tgen

static void Test_S21162C2()
{
  extern Class_Descriptor cd_S21162C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S21162C2, buf);
    S21162C2 *dp, &lv = *(dp=new (buf) S21162C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S21162C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21162C2)");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(16,8), "S21162C2");
    check_field_offset(lv, s21162c2f0, ABISELECT(8,4), "S21162C2.s21162c2f0");
    test_class_info(&lv, &cd_S21162C2);
    dp->~S21162C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21162C2(Test_S21162C2, "S21162C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S21162C2C1Ev();
extern void _ZN8S21162C2D2Ev();
Name_Map name_map_S21162C2[] = {
  NSPAIR(_ZN8S21162C2C1Ev),
  NSPAIR(_ZN8S21162C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S21162C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20759C5_nt,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21162C2[];
extern void _ZN8S21162C2D1Ev();
extern void _ZN8S21162C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21162C2D1Ev,_ZTv0_n12_N8S21162C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C2D1Ev,_ZThn8_N8S21162C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C2D0Ev,_ZTv0_n12_N8S21162C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S21162C2D0Ev,_ZThn8_N8S21162C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21162C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C2[0]),
  (VTBL_ENTRY)&_ZN8S21162C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C2D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21162C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C2D1Ev,_ZTv0_n12_N8S21162C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C2D0Ev,_ZTv0_n12_N8S21162C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21162C2[];
static  VTT_ENTRY vtt_S21162C2[] = {
  {&(_ZTV8S21162C2[3]),  3,10},
  {&(_ZTV8S21162C2[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21162C2[];
extern  VTBL_ENTRY _ZTV8S21162C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C2[];
static VTBL_ENTRY alt_thunk_names269[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C2D0Ev,_ZTv0_n12_N8S21162C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21162C2D0Ev,_ZThn8_N8S21162C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C2D1Ev,_ZTv0_n12_N8S21162C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21162C2D1Ev,_ZThn8_N8S21162C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21162C2 = {  "S21162C2", // class name
  bases_S21162C2, 1,
  &(vtc_S21162C2[0]), // expected_vtbl_contents
  &(vtt_S21162C2[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S21162C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21162C2),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21162C2),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names269,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21162C9  : virtual S20760C9 {
  virtual  ~S21162C9(); // _ZN8S21162C9D2Ev
  S21162C9(); // tgen
};
//SIG(-1 S21162C9) C1{ VBC2{ vd m FL} vd}


 S21162C9 ::~S21162C9(){ note_dtor("S21162C9", this);}
S21162C9 ::S21162C9(){ note_ctor("S21162C9", this);} // tgen

static void Test_S21162C9()
{
  extern Class_Descriptor cd_S21162C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S21162C9, buf);
    S21162C9 *dp, &lv = *(dp=new (buf) S21162C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S21162C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21162C9)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S21162C9");
    test_class_info(&lv, &cd_S21162C9);
    dp->~S21162C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21162C9(Test_S21162C9, "S21162C9", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S21162C9C1Ev();
extern void _ZN8S21162C9D2Ev();
Name_Map name_map_S21162C9[] = {
  NSPAIR(_ZN8S21162C9C1Ev),
  NSPAIR(_ZN8S21162C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S21162C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21162C9[];
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S21162C9D1Ev,_ZThn4_N8S21162C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S21162C9D0Ev,_ZThn4_N8S21162C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21162C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S21162C9[];
static  VTT_ENTRY vtt_S21162C9[] = {
  {&(_ZTV8S21162C9[3]),  3,10},
  {&(_ZTV8S21162C9[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
static VTBL_ENTRY alt_thunk_names270[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21162C9D0Ev,_ZThn4_N8S21162C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21162C9D1Ev,_ZThn4_N8S21162C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21162C9 = {  "S21162C9", // class name
  bases_S21162C9, 1,
  &(vtc_S21162C9[0]), // expected_vtbl_contents
  &(vtt_S21162C9[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S21162C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21162C9),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21162C9),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names270,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21162C6  : S20760C9 , virtual S20760C13 , S21162C9 {
  ::S20760C13 s21162c6f0;
  ~S21162C6(); // tgen
  S21162C6(); // tgen
};
//SIG(-1 S21162C6) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S21162C6 ::~S21162C6(){ note_dtor("S21162C6", this);} // tgen
S21162C6 ::S21162C6(){ note_ctor("S21162C6", this);} // tgen

static void Test_S21162C6()
{
  extern Class_Descriptor cd_S21162C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S21162C6, buf);
    S21162C6 *dp, &lv = *(dp=new (buf) S21162C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S21162C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21162C6)");
    /*is_ambiguous_... S21162C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S21162C6");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S21162C6");
    check_base_class_offset(lv, (S20760C9*)(S21162C9*), ABISELECT(88,72), "S21162C6");
    check_base_class_offset(lv, (S21162C9*), ABISELECT(16,12), "S21162C6");
    check_field_offset(lv, s21162c6f0, ABISELECT(24,16), "S21162C6.s21162c6f0");
    test_class_info(&lv, &cd_S21162C6);
    dp->~S21162C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21162C6(Test_S21162C6, "S21162C6", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S21162C6C1Ev();
extern void _ZN8S21162C6D1Ev();
Name_Map name_map_S21162C6[] = {
  NSPAIR(_ZN8S21162C6C1Ev),
  NSPAIR(_ZN8S21162C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21162C9;
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
static Base_Class bases_S21162C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21162C9,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21162C6[];
extern void _ZN8S21162C6D1Ev();
extern void _ZN8S21162C6D0Ev();
extern void ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S21162C6D1Ev,_ZThn44_N8S21162C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S21162C6D0Ev,_ZThn44_N8S21162C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn88_N8S21162C6D1Ev,_ZThn72_N8S21162C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZThn88_N8S21162C6D0Ev,_ZThn72_N8S21162C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21162C6[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&_ZN8S21162C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C6D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21162C6[];
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C9__8S21162C6[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZThn72_N8S21162C9D1Ev,_ZThn60_N8S21162C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
extern void ABISELECT(_ZThn72_N8S21162C9D0Ev,_ZThn60_N8S21162C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21162C9__8S21162C6[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
static  VTT_ENTRY vtt_S21162C6[] = {
  {&(_ZTV8S21162C6[4]),  4,21},
  {&(_tg__ZTV8S21162C9__8S21162C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21162C9__8S21162C6[3]),  3,5},
  {&(_ZTV8S21162C6[14]),  14,21},
  {&(_ZTV8S21162C6[9]),  9,21},
  {&(_ZTV8S21162C6[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S21162C6[];
extern  VTBL_ENTRY _ZTV8S21162C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C6[];
static VTBL_ENTRY alt_thunk_names271[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21162C9D0Ev,_ZThn60_N8S21162C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21162C9D1Ev,_ZThn60_N8S21162C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21162C6D0Ev,_ZThn72_N8S21162C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21162C6D0Ev,_ZThn44_N8S21162C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21162C6D1Ev,_ZThn72_N8S21162C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21162C6D1Ev,_ZThn44_N8S21162C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21162C6 = {  "S21162C6", // class name
  bases_S21162C6, 4,
  &(vtc_S21162C6[0]), // expected_vtbl_contents
  &(vtt_S21162C6[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S21162C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21162C6),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21162C6),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names271,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21162C10  : S20760C13 , virtual S4228C37 , virtual S4228C27 {
  short s21162c10f0;
  ~S21162C10(); // tgen
  S21162C10(); // tgen
};
//SIG(-1 S21162C10) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S21162C10 ::~S21162C10(){ note_dtor("S21162C10", this);} // tgen
S21162C10 ::S21162C10(){ note_ctor("S21162C10", this);} // tgen

static void Test_S21162C10()
{
  extern Class_Descriptor cd_S21162C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S21162C10, buf);
    S21162C10 *dp, &lv = *(dp=new (buf) S21162C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S21162C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21162C10)");
    check_base_class_offset(lv, (S20760C13*), 0, "S21162C10");
    check_base_class_offset(lv, (S4228C37*), 0, "S21162C10");
    check_base_class_offset(lv, (S4228C27*), 0, "S21162C10");
    check_field_offset(lv, s21162c10f0, ABISELECT(32,28), "S21162C10.s21162c10f0");
    test_class_info(&lv, &cd_S21162C10);
    dp->~S21162C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21162C10(Test_S21162C10, "S21162C10", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN9S21162C10C1Ev();
extern void _ZN9S21162C10D1Ev();
Name_Map name_map_S21162C10[] = {
  NSPAIR(_ZN9S21162C10C1Ev),
  NSPAIR(_ZN9S21162C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S21162C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21162C10[];
extern void _ZN9S21162C10D1Ev();
extern void _ZN9S21162C10D0Ev();
static  VTBL_ENTRY vtc_S21162C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21162C10[0]),
  (VTBL_ENTRY)&_ZN9S21162C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21162C10D0Ev,
};
extern VTBL_ENTRY _ZTV9S21162C10[];
static  VTT_ENTRY vtt_S21162C10[] = {
  {&(_ZTV9S21162C10[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21162C10[];
extern  VTBL_ENTRY _ZTV9S21162C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21162C10[];
Class_Descriptor cd_S21162C10 = {  "S21162C10", // class name
  bases_S21162C10, 3,
  &(vtc_S21162C10[0]), // expected_vtbl_contents
  &(vtt_S21162C10[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI9S21162C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21162C10),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21162C10),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21162C5  : S21162C6 , S21162C10 , virtual S21162C9 {
  virtual  ~S21162C5(); // _ZN8S21162C5D2Ev
  S21162C5(); // tgen
};
//SIG(-1 S21162C5) C1{ BC2{ BC3{ vd m FL} VBC4{ vd m Fi[6]} BC5{ VBC3 vd} FC4} BC6{ BC4 VBC7{ m} VBC8{ m} Fs} VBC5 vd}


 S21162C5 ::~S21162C5(){ note_dtor("S21162C5", this);}
S21162C5 ::S21162C5(){ note_ctor("S21162C5", this);} // tgen

static void Test_S21162C5()
{
  extern Class_Descriptor cd_S21162C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,31)];
    init_test(&cd_S21162C5, buf);
    S21162C5 *dp, &lv = *(dp=new (buf) S21162C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,120), "sizeof(S21162C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21162C5)");
    /*is_ambiguous_... S21162C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21162C6*), 0, "S21162C5");
    check_base_class_offset(lv, (S20760C13*)(S21162C6*), ABISELECT(96,76), "S21162C5");
    check_base_class_offset(lv, (S20760C9*)(S21162C9*)(S21162C6*), ABISELECT(128,104), "S21162C5");
    /*is_ambiguous_... S21162C5::S21162C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21162C9*), ABISELECT(128,104), "S21162C5");
    check_base_class_offset(lv, (S21162C9*)(S21162C6*), ABISELECT(16,12), "S21162C5");
    check_base_class_offset(lv, (S21162C6*), 0, "S21162C5");
    check_base_class_offset(lv, (S20760C13*)(S21162C10*), ABISELECT(56,44), "S21162C5");
    check_base_class_offset(lv, (S4228C37*)(S21162C10*), 0, "S21162C5");
    check_base_class_offset(lv, (S4228C27*)(S21162C10*), 0, "S21162C5");
    check_base_class_offset(lv, (S21162C10*), ABISELECT(56,44), "S21162C5");
    /*is_ambiguous_... S21162C5::S21162C9 */ AMB_check_base_class_offset(lv, (S21162C9*), ABISELECT(144,116), "S21162C5");
    test_class_info(&lv, &cd_S21162C5);
    dp->~S21162C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21162C5(Test_S21162C5, "S21162C5", ABISELECT(152,120));

#else // __cplusplus

extern void _ZN8S21162C5C1Ev();
extern void _ZN8S21162C5D2Ev();
Name_Map name_map_S21162C5[] = {
  NSPAIR(_ZN8S21162C5C1Ev),
  NSPAIR(_ZN8S21162C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21162C9;
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
extern Class_Descriptor cd_S21162C6;
extern VTBL_ENTRY _ZTI8S21162C6[];
extern  VTBL_ENTRY _ZTV8S21162C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C6[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S21162C10;
extern VTBL_ENTRY _ZTI9S21162C10[];
extern  VTBL_ENTRY _ZTV9S21162C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21162C10[];
extern Class_Descriptor cd_S21162C9;
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
static Base_Class bases_S21162C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(96,76), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(128,104), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21162C9,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21162C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S21162C10,    ABISELECT(56,44), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21162C9,    ABISELECT(144,116), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21162C5[];
extern void _ZN8S21162C5D1Ev();
extern void _ZN8S21162C5D0Ev();
extern void ABISELECT(_ZThn16_N8S21162C5D1Ev,_ZThn12_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C5D0Ev,_ZThn12_N8S21162C5D0Ev)();
extern void ABISELECT(_ZThn56_N8S21162C5D1Ev,_ZThn44_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21162C5D0Ev,_ZThn44_N8S21162C5D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21162C5D1Ev,_ZThn76_N8S21162C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21162C5D0Ev,_ZThn76_N8S21162C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S21162C5D1Ev,_ZThn104_N8S21162C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S21162C5D0Ev,_ZThn104_N8S21162C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21162C5D1Ev,_ZTv0_n16_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn144_N8S21162C5D1Ev,_ZThn116_N8S21162C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21162C5D0Ev,_ZTv0_n16_N8S21162C5D0Ev)();
extern void ABISELECT(_ZThn144_N8S21162C5D0Ev,_ZThn116_N8S21162C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21162C5[] = {
  ABISELECT(144,116),
  0,
  0,
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&_ZN8S21162C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C5D0Ev,
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C5D1Ev,_ZThn12_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C5D0Ev,_ZThn12_N8S21162C5D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21162C5D1Ev,_ZThn44_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21162C5D0Ev,_ZThn44_N8S21162C5D0Ev),
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev),
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev),
  ABISELECT(-144,-116),
  ABISELECT(-16,-12),
  ABISELECT(-144,-116),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C5D1Ev,_ZTv0_n16_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C5D0Ev,_ZTv0_n16_N8S21162C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S21162C5[];
extern void _ZN8S21162C6D1Ev();
extern void _ZN8S21162C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C6__8S21162C5[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&_ZN8S21162C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C6D0Ev,
};
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C98S21162C6__8S21162C5[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S21162C9D1Ev,_ZThn92_N8S21162C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S21162C9D0Ev,_ZThn92_N8S21162C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21162C98S21162C6__8S21162C5[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S21162C6D1Ev,_ZThn76_N8S21162C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S21162C6D0Ev,_ZThn76_N8S21162C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21162C6__8S21162C5[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C9__8S21162C6__8S21162C5[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S21162C6D1Ev,_ZThn104_N8S21162C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S21162C6D0Ev,_ZThn104_N8S21162C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21162C6__8S21162C5[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
extern void _ZN9S21162C10D1Ev();
extern void _ZN9S21162C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21162C10__8S21162C5[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21162C10[0]),
  (VTBL_ENTRY)&_ZN9S21162C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21162C10D0Ev,
};
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C9__A1__8S21162C5[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21162C9__A1__8S21162C5[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
static  VTT_ENTRY vtt_S21162C5[] = {
  {&(_ZTV8S21162C5[7]),  7,36},
  {&(_tg__ZTV8S21162C6__8S21162C5[4]),  4,6},
  {&(_tg__ZTV8S21162C98S21162C6__8S21162C5[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21162C98S21162C6__8S21162C5[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21162C6__8S21162C5[3]),  3,5},
  {&(_tg__ZTV8S21162C9__8S21162C6__8S21162C5[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21162C6__8S21162C5[3]),  3,5},
  {&(_tg__ZTV9S21162C10__8S21162C5[4]),  4,6},
  {&(_ZTV8S21162C5[23]),  23,36},
  {&(_ZTV8S21162C5[12]),  12,36},
  {&(_ZTV8S21162C5[28]),  28,36},
  {&(_ZTV8S21162C5[18]),  18,36},
  {&(_ZTV8S21162C5[34]),  34,36},
  {&(_tg__ZTV8S21162C9__A1__8S21162C5[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21162C9__A1__8S21162C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21162C5[];
extern  VTBL_ENTRY _ZTV8S21162C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C5[];
static VTBL_ENTRY alt_thunk_names272[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C6D0Ev,_ZThn104_N8S21162C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C6D0Ev,_ZThn76_N8S21162C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C6D1Ev,_ZThn104_N8S21162C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C6D1Ev,_ZThn76_N8S21162C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21162C9D0Ev,_ZThn92_N8S21162C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21162C9D1Ev,_ZThn92_N8S21162C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21162C5D0Ev,_ZTv0_n16_N8S21162C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21162C5D0Ev,_ZThn116_N8S21162C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21162C5D1Ev,_ZTv0_n16_N8S21162C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21162C5D1Ev,_ZThn116_N8S21162C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C5D0Ev,_ZThn104_N8S21162C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C5D0Ev,_ZThn76_N8S21162C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C5D1Ev,_ZThn104_N8S21162C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C5D1Ev,_ZThn76_N8S21162C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21162C5 = {  "S21162C5", // class name
  bases_S21162C5, 10,
  &(vtc_S21162C5[0]), // expected_vtbl_contents
  &(vtt_S21162C5[0]), // expected_vtt_contents
  ABISELECT(152,120), // object size
  NSPAIRA(_ZTI8S21162C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21162C5),36, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21162C5),15, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names272,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21162C4  : virtual S21162C5 , S4161C4_nt , S19115C12 {
  int s21162c4f0;
  virtual  ~S21162C4(); // _ZN8S21162C4D2Ev
  S21162C4(); // tgen
};
//SIG(-1 S21162C4) C1{ VBC2{ BC3{ BC4{ vd m FL} VBC5{ vd m Fi[6]} BC6{ VBC4 vd} FC5} BC7{ BC5 VBC8{ m} VBC9{ m} Fs} VBC6 vd} BC10{ m Fp} BC11{ m FC4[10]} vd Fi}


 S21162C4 ::~S21162C4(){ note_dtor("S21162C4", this);}
S21162C4 ::S21162C4(){ note_ctor("S21162C4", this);} // tgen

static void Test_S21162C4()
{
  extern Class_Descriptor cd_S21162C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,63)];
    init_test(&cd_S21162C4, buf);
    S21162C4 *dp, &lv = *(dp=new (buf) S21162C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,248), "sizeof(S21162C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21162C4)");
    /*is_ambiguous_... S21162C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21162C6*)(S21162C5*), ABISELECT(184,132), "S21162C4");
    check_base_class_offset(lv, (S20760C13*)(S21162C6*)(S21162C5*), ABISELECT(280,208), "S21162C4");
    check_base_class_offset(lv, (S20760C9*)(S21162C9*)(S21162C6*)(S21162C5*), ABISELECT(312,236), "S21162C4");
    /*is_ambiguous_... S21162C4::S21162C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21162C9*), ABISELECT(312,236), "S21162C4");
    check_base_class_offset(lv, (S21162C9*)(S21162C6*)(S21162C5*), ABISELECT(200,144), "S21162C4");
    check_base_class_offset(lv, (S21162C6*)(S21162C5*), ABISELECT(184,132), "S21162C4");
    check_base_class_offset(lv, (S20760C13*)(S21162C10*)(S21162C5*), ABISELECT(240,176), "S21162C4");
    check_base_class_offset(lv, (S4228C37*)(S21162C10*)(S21162C5*), 0, "S21162C4");
    check_base_class_offset(lv, (S4228C27*)(S21162C10*)(S21162C5*), 0, "S21162C4");
    check_base_class_offset(lv, (S21162C10*)(S21162C5*), ABISELECT(240,176), "S21162C4");
    /*is_ambiguous_... S21162C5::S21162C9 */ AMB_check_base_class_offset(lv, (S21162C9*)(S21162C5*), 0, "S21162C4");
    check_base_class_offset(lv, (S21162C5*), ABISELECT(184,132), "S21162C4");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(8,4), "S21162C4");
    check_base_class_offset(lv, (S19115C12*), ABISELECT(16,8), "S21162C4");
    check_field_offset(lv, s21162c4f0, ABISELECT(176,128), "S21162C4.s21162c4f0");
    test_class_info(&lv, &cd_S21162C4);
    dp->~S21162C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21162C4(Test_S21162C4, "S21162C4", ABISELECT(328,248));

#else // __cplusplus

extern void _ZN8S21162C4C1Ev();
extern void _ZN8S21162C4D2Ev();
Name_Map name_map_S21162C4[] = {
  NSPAIR(_ZN8S21162C4C1Ev),
  NSPAIR(_ZN8S21162C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21162C9;
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
extern Class_Descriptor cd_S21162C6;
extern VTBL_ENTRY _ZTI8S21162C6[];
extern  VTBL_ENTRY _ZTV8S21162C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C6[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S21162C10;
extern VTBL_ENTRY _ZTI9S21162C10[];
extern  VTBL_ENTRY _ZTV9S21162C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21162C10[];
extern Class_Descriptor cd_S21162C9;
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
extern Class_Descriptor cd_S21162C5;
extern VTBL_ENTRY _ZTI8S21162C5[];
extern  VTBL_ENTRY _ZTV8S21162C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C5[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
static Base_Class bases_S21162C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(184,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(280,208), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(312,236), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21162C9,    ABISELECT(200,144), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21162C6,    ABISELECT(184,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(240,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S21162C10,    ABISELECT(240,176), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21162C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21162C5,    ABISELECT(184,132), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19115C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21162C4[];
extern void ABISELECT(_ZTv0_n32_N8S21162C4D1Ev,_ZTv0_n16_N8S21162C4D1Ev)();
extern void _ZN8S21162C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21162C4D0Ev,_ZTv0_n16_N8S21162C4D0Ev)();
extern void _ZN8S21162C4D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21162C4D1Ev,_ZTv0_n32_N8S21162C4D1Ev)();
extern void ABISELECT(_ZThn184_N8S21162C4D1Ev,_ZThn132_N8S21162C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21162C4D0Ev,_ZTv0_n32_N8S21162C4D0Ev)();
extern void ABISELECT(_ZThn184_N8S21162C4D0Ev,_ZThn132_N8S21162C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S21162C4D1Ev,_ZTvn12_n32_N8S21162C4D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S21162C4D0Ev,_ZTvn12_n32_N8S21162C4D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21162C4D1Ev,_ZTvn44_n32_N8S21162C4D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21162C4D0Ev,_ZTvn44_n32_N8S21162C4D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev)();
extern void ABISELECT(_ZThn280_N8S21162C4D1Ev,_ZThn208_N8S21162C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev)();
extern void ABISELECT(_ZThn280_N8S21162C4D0Ev,_ZThn208_N8S21162C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev)();
extern void ABISELECT(_ZThn312_N8S21162C4D1Ev,_ZThn236_N8S21162C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev)();
extern void ABISELECT(_ZThn312_N8S21162C4D0Ev,_ZThn236_N8S21162C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21162C4[] = {
  0,
  0,
  0,
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C4D1Ev,_ZTv0_n16_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C4D0Ev,_ZTv0_n16_N8S21162C4D0Ev),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21162C4D1Ev,_ZTv0_n32_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21162C4D0Ev,_ZTv0_n32_N8S21162C4D0Ev),
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21162C4D1Ev,_ZTvn12_n32_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21162C4D0Ev,_ZTvn12_n32_N8S21162C4D0Ev),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21162C4D1Ev,_ZTvn44_n32_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21162C4D0Ev,_ZTvn44_n32_N8S21162C4D0Ev),
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev),
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S21162C4[];
extern void _ZN8S21162C5D1Ev();
extern void _ZN8S21162C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C5__8S21162C4[] = {
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&_ZN8S21162C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C5D0Ev,
};
extern void _ZN8S21162C6D1Ev();
extern void _ZN8S21162C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C68S21162C5__8S21162C4[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&_ZN8S21162C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C6D0Ev,
};
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C98S21162C68S21162C5__8S21162C4[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S21162C9D1Ev,_ZThn92_N8S21162C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S21162C9D0Ev,_ZThn92_N8S21162C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21162C98S21162C68S21162C5__8S21162C4[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S21162C6D1Ev,_ZThn76_N8S21162C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S21162C6D0Ev,_ZThn76_N8S21162C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21162C68S21162C5__8S21162C4[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C9__8S21162C68S21162C5__8S21162C4[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S21162C6D1Ev,_ZThn104_N8S21162C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S21162C6D0Ev,_ZThn104_N8S21162C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21162C68S21162C5__8S21162C4[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
extern void _ZN9S21162C10D1Ev();
extern void _ZN9S21162C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21162C108S21162C5__8S21162C4[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S21162C10[0]),
  (VTBL_ENTRY)&_ZN9S21162C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21162C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21162C5D1Ev,_ZThn76_N8S21162C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21162C5D0Ev,_ZThn76_N8S21162C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21162C5__8S21162C4[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21162C5D1Ev,_ZThn12_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C5D0Ev,_ZThn12_N8S21162C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C98S21162C6__8S21162C5__8S21162C4[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C5D1Ev,_ZThn12_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C5D0Ev,_ZThn12_N8S21162C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S21162C5D1Ev,_ZThn104_N8S21162C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S21162C5D0Ev,_ZThn104_N8S21162C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21162C5__8S21162C4[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev),
};
extern void ABISELECT(_ZThn56_N8S21162C5D1Ev,_ZThn44_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21162C5D0Ev,_ZThn44_N8S21162C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21162C10__8S21162C5__8S21162C4[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21162C5D1Ev,_ZThn44_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21162C5D0Ev,_ZThn44_N8S21162C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21162C5D1Ev,_ZTv0_n16_N8S21162C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21162C5D0Ev,_ZTv0_n16_N8S21162C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C9__A1__8S21162C5__8S21162C4[] = {
  ABISELECT(184,132),
  ABISELECT(312,236),
  ABISELECT(184,132),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C5D1Ev,_ZTv0_n16_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C5D0Ev,_ZTv0_n16_N8S21162C5D0Ev),
};
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C9__A1__8S21162C4[] = {
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZThn312_N8S21162C9D1Ev,_ZThn236_N8S21162C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
extern void ABISELECT(_ZThn312_N8S21162C9D0Ev,_ZThn236_N8S21162C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21162C9__A1__8S21162C4[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
static  VTT_ENTRY vtt_S21162C4[] = {
  {&(_ZTV8S21162C4[9]),  9,42},
  {&(_ZTV8S21162C4[19]),  19,42},
  {&(_ZTV8S21162C4[35]),  35,42},
  {&(_ZTV8S21162C4[24]),  24,42},
  {&(_ZTV8S21162C4[40]),  40,42},
  {&(_ZTV8S21162C4[30]),  30,42},
  {&(_ZTV8S21162C4[9]),  9,42},
  {&(_tg__ZTV8S21162C5__8S21162C4[7]),  7,9},
  {&(_tg__ZTV8S21162C68S21162C5__8S21162C4[4]),  4,6},
  {&(_tg__ZTV8S21162C98S21162C68S21162C5__8S21162C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21162C98S21162C68S21162C5__8S21162C4[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21162C68S21162C5__8S21162C4[3]),  3,5},
  {&(_tg__ZTV8S21162C9__8S21162C68S21162C5__8S21162C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21162C68S21162C5__8S21162C4[3]),  3,5},
  {&(_tg__ZTV9S21162C108S21162C5__8S21162C4[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S21162C5__8S21162C4[3]),  3,5},
  {&(_tg__ZTV8S21162C98S21162C6__8S21162C5__8S21162C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21162C5__8S21162C4[3]),  3,5},
  {&(_tg__ZTV9S21162C10__8S21162C5__8S21162C4[4]),  4,6},
  {&(_tg__ZTV8S21162C9__A1__8S21162C5__8S21162C4[4]),  4,6},
  {&(_tg__ZTV8S21162C9__A1__8S21162C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21162C9__A1__8S21162C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21162C4[];
extern  VTBL_ENTRY _ZTV8S21162C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C4[];
static VTBL_ENTRY alt_thunk_names273[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C5D0Ev,_ZThn104_N8S21162C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C5D0Ev,_ZThn76_N8S21162C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C5D1Ev,_ZThn104_N8S21162C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C5D1Ev,_ZThn76_N8S21162C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C6D0Ev,_ZThn104_N8S21162C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C6D0Ev,_ZThn76_N8S21162C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C6D1Ev,_ZThn104_N8S21162C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C6D1Ev,_ZThn76_N8S21162C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21162C9D0Ev,_ZThn236_N8S21162C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21162C9D0Ev,_ZThn92_N8S21162C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21162C9D1Ev,_ZThn236_N8S21162C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21162C9D1Ev,_ZThn92_N8S21162C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21162C4D0Ev,_ZThn236_N8S21162C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21162C4D0Ev,_ZThn208_N8S21162C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21162C4D1Ev,_ZThn236_N8S21162C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21162C4D1Ev,_ZThn208_N8S21162C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21162C4D0Ev,_ZTv0_n32_N8S21162C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21162C4D0Ev,_ZThn132_N8S21162C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21162C4D1Ev,_ZTv0_n32_N8S21162C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21162C4D1Ev,_ZThn132_N8S21162C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21162C4D0Ev,_ZTv0_n16_N8S21162C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S21162C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21162C4D1Ev,_ZTv0_n16_N8S21162C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S21162C4D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21162C4 = {  "S21162C4", // class name
  bases_S21162C4, 13,
  &(vtc_S21162C4[0]), // expected_vtbl_contents
  &(vtt_S21162C4[0]), // expected_vtt_contents
  ABISELECT(328,248), // object size
  NSPAIRA(_ZTI8S21162C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21162C4),42, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21162C4),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names273,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21162C16  : virtual S20760C13 , virtual S21162C6 {
  long double s21162c16f0;
  ~S21162C16(); // tgen
  S21162C16(); // tgen
};
//SIG(-1 S21162C16) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S21162C16 ::~S21162C16(){ note_dtor("S21162C16", this);} // tgen
S21162C16 ::S21162C16(){ note_ctor("S21162C16", this);} // tgen

static void Test_S21162C16()
{
  extern Class_Descriptor cd_S21162C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S21162C16, buf);
    S21162C16 *dp, &lv = *(dp=new (buf) S21162C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S21162C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21162C16)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S21162C16");
    check_base_class_offset(lv, (S20760C13*)(S21162C6*), ABISELECT(32,16), "S21162C16");
    /*is_ambiguous_... S21162C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21162C6*), ABISELECT(64,44), "S21162C16");
    check_base_class_offset(lv, (S20760C9*)(S21162C9*)(S21162C6*), ABISELECT(120,88), "S21162C16");
    check_base_class_offset(lv, (S21162C9*)(S21162C6*), ABISELECT(80,56), "S21162C16");
    check_base_class_offset(lv, (S21162C6*), ABISELECT(64,44), "S21162C16");
    check_field_offset(lv, s21162c16f0, ABISELECT(16,4), "S21162C16.s21162c16f0");
    test_class_info(&lv, &cd_S21162C16);
    dp->~S21162C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21162C16(Test_S21162C16, "S21162C16", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN9S21162C16C1Ev();
extern void _ZN9S21162C16D1Ev();
Name_Map name_map_S21162C16[] = {
  NSPAIR(_ZN9S21162C16C1Ev),
  NSPAIR(_ZN9S21162C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21162C9;
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
extern Class_Descriptor cd_S21162C6;
extern VTBL_ENTRY _ZTI8S21162C6[];
extern  VTBL_ENTRY _ZTV8S21162C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C6[];
static Base_Class bases_S21162C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21162C9,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21162C6,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21162C16[];
extern void _ZN9S21162C16D1Ev();
extern void _ZN9S21162C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21162C16D1Ev,_ZTv0_n12_N9S21162C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S21162C16D1Ev,_ZThn16_N9S21162C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21162C16D0Ev,_ZTv0_n12_N9S21162C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S21162C16D0Ev,_ZThn16_N9S21162C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21162C16D1Ev,_ZTv0_n20_N9S21162C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S21162C16D1Ev,_ZThn44_N9S21162C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21162C16D0Ev,_ZTv0_n20_N9S21162C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S21162C16D0Ev,_ZThn44_N9S21162C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21162C16D1Ev,_ZTvn12_n20_N9S21162C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21162C16D0Ev,_ZTvn12_n20_N9S21162C16D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21162C16D1Ev,_ZTv0_n12_N9S21162C16D1Ev)();
extern void ABISELECT(_ZThn120_N9S21162C16D1Ev,_ZThn88_N9S21162C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21162C16D0Ev,_ZTv0_n12_N9S21162C16D0Ev)();
extern void ABISELECT(_ZThn120_N9S21162C16D0Ev,_ZThn88_N9S21162C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21162C16[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&_ZN9S21162C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21162C16D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21162C16D1Ev,_ZTv0_n12_N9S21162C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21162C16D0Ev,_ZTv0_n12_N9S21162C16D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21162C16D1Ev,_ZTv0_n20_N9S21162C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21162C16D0Ev,_ZTv0_n20_N9S21162C16D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21162C16D1Ev,_ZTvn12_n20_N9S21162C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21162C16D0Ev,_ZTvn12_n20_N9S21162C16D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21162C16D1Ev,_ZTv0_n12_N9S21162C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21162C16D0Ev,_ZTv0_n12_N9S21162C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S21162C16[];
extern void _ZN8S21162C6D1Ev();
extern void _ZN8S21162C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C6__9S21162C16[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&_ZN8S21162C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C6D0Ev,
};
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C98S21162C6__9S21162C16[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S21162C9D1Ev,_ZThn32_N8S21162C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
extern void ABISELECT(_ZThn40_N8S21162C9D0Ev,_ZThn32_N8S21162C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21162C98S21162C6__9S21162C16[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21162C6__9S21162C16[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C9__8S21162C6__9S21162C16[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S21162C6D1Ev,_ZThn44_N8S21162C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S21162C6D0Ev,_ZThn44_N8S21162C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21162C6__9S21162C16[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
static  VTT_ENTRY vtt_S21162C16[] = {
  {&(_ZTV9S21162C16[5]),  5,29},
  {&(_ZTV9S21162C16[10]),  10,29},
  {&(_ZTV9S21162C16[17]),  17,29},
  {&(_ZTV9S21162C16[22]),  22,29},
  {&(_ZTV9S21162C16[27]),  27,29},
  {&(_tg__ZTV8S21162C6__9S21162C16[4]),  4,6},
  {&(_tg__ZTV8S21162C98S21162C6__9S21162C16[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21162C98S21162C6__9S21162C16[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21162C6__9S21162C16[3]),  3,5},
  {&(_tg__ZTV8S21162C9__8S21162C6__9S21162C16[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21162C6__9S21162C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21162C16[];
extern  VTBL_ENTRY _ZTV9S21162C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21162C16[];
static VTBL_ENTRY alt_thunk_names274[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21162C6D0Ev,_ZThn44_N8S21162C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21162C6D1Ev,_ZThn44_N8S21162C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21162C9D0Ev,_ZThn32_N8S21162C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21162C9D1Ev,_ZThn32_N8S21162C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21162C16D0Ev,_ZTv0_n20_N9S21162C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21162C16D0Ev,_ZThn44_N9S21162C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21162C16D1Ev,_ZTv0_n20_N9S21162C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21162C16D1Ev,_ZThn44_N9S21162C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21162C16D0Ev,_ZTv0_n12_N9S21162C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21162C16D0Ev,_ZThn88_N9S21162C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21162C16D0Ev,_ZThn16_N9S21162C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21162C16D1Ev,_ZTv0_n12_N9S21162C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21162C16D1Ev,_ZThn88_N9S21162C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21162C16D1Ev,_ZThn16_N9S21162C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21162C16 = {  "S21162C16", // class name
  bases_S21162C16, 5,
  &(vtc_S21162C16[0]), // expected_vtbl_contents
  &(vtt_S21162C16[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI9S21162C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21162C16),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21162C16),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names274,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21162C1  : virtual S21162C2 , S21162C4 , S4228C23 , virtual S21162C16 {
  long s21162c1f0;
  ~S21162C1(); // tgen
  S21162C1(); // tgen
};
//SIG(1 S21162C1) C1{ VBC2{ VBC3{ vd m Fl} vd Fc[2]} BC4{ VBC5{ BC6{ BC7{ vd m FL} VBC8{ vd m Fi[6]} BC9{ VBC7 vd} FC8} BC10{ BC8 VBC11{ m} VBC12{ m} Fs} VBC9 vd} BC13{ m Fp} BC14{ m FC7[10]} vd Fi} BC15{ m} VBC16{ VBC8 VBC6 FD} Fl}


S21162C1 ::~S21162C1(){ note_dtor("S21162C1", this);} // tgen
S21162C1 ::S21162C1(){ note_ctor("S21162C1", this);} // tgen

static void Test_S21162C1()
{
  extern Class_Descriptor cd_S21162C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,83)];
    init_test(&cd_S21162C1, buf);
    S21162C1 *dp, &lv = *(dp=new (buf) S21162C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,328), "sizeof(S21162C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21162C1)");
    check_base_class_offset(lv, (S20759C5_nt*)(S21162C2*), ABISELECT(208,144), "S21162C1");
    check_base_class_offset(lv, (S21162C2*), ABISELECT(192,136), "S21162C1");
    /*is_ambiguous_... S21162C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21162C6*)(S21162C5*), ABISELECT(224,152), "S21162C1");
    check_base_class_offset(lv, (S20760C13*)(S21162C6*)(S21162C5*), ABISELECT(320,228), "S21162C1");
    check_base_class_offset(lv, (S20760C13*)(S21162C16*), ABISELECT(320,228), "S21162C1");
    /*is_ambiguous_... S21162C1::S21162C6 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21162C6*), ABISELECT(320,228), "S21162C1");
    check_base_class_offset(lv, (S20760C9*)(S21162C9*)(S21162C6*)(S21162C5*), ABISELECT(352,256), "S21162C1");
    /*is_ambiguous_... S21162C1::S21162C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21162C9*), ABISELECT(352,256), "S21162C1");
    /*is_ambiguous_... S21162C1::S21162C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21162C9*)(S21162C6*), ABISELECT(352,256), "S21162C1");
    check_base_class_offset(lv, (S21162C9*)(S21162C6*)(S21162C5*), ABISELECT(240,164), "S21162C1");
    check_base_class_offset(lv, (S21162C6*)(S21162C5*), ABISELECT(224,152), "S21162C1");
    check_base_class_offset(lv, (S20760C13*)(S21162C10*)(S21162C5*), ABISELECT(280,196), "S21162C1");
    check_base_class_offset(lv, (S4228C37*)(S21162C10*)(S21162C5*), 0, "S21162C1");
    check_base_class_offset(lv, (S4228C27*)(S21162C10*)(S21162C5*), 0, "S21162C1");
    check_base_class_offset(lv, (S21162C10*)(S21162C5*), ABISELECT(280,196), "S21162C1");
    /*is_ambiguous_... S21162C5::S21162C9 */ AMB_check_base_class_offset(lv, (S21162C9*)(S21162C5*), 0, "S21162C1");
    check_base_class_offset(lv, (S21162C5*)(S21162C4*), ABISELECT(224,152), "S21162C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21162C4*), ABISELECT(8,4), "S21162C1");
    check_base_class_offset(lv, (S19115C12*)(S21162C4*), ABISELECT(16,8), "S21162C1");
    check_base_class_offset(lv, (S21162C4*), 0, "S21162C1");
    check_base_class_offset(lv, (S4228C23*), 0, "S21162C1");
    /*is_ambiguous_... S21162C1::S21162C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21162C6*), ABISELECT(400,284), "S21162C1");
    /*is_ambiguous_... S21162C1::S21162C6 */ AMB_check_base_class_offset(lv, (S21162C9*)(S21162C6*), ABISELECT(416,296), "S21162C1");
    check_base_class_offset(lv, (S21162C6*)(S21162C16*), ABISELECT(400,284), "S21162C1");
    check_base_class_offset(lv, (S21162C16*), ABISELECT(368,268), "S21162C1");
    check_field_offset(lv, s21162c1f0, ABISELECT(184,132), "S21162C1.s21162c1f0");
    test_class_info(&lv, &cd_S21162C1);
    dp->~S21162C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21162C1(Test_S21162C1, "S21162C1", ABISELECT(464,328));

#else // __cplusplus

extern void _ZN8S21162C1C1Ev();
extern void _ZN8S21162C1D1Ev();
Name_Map name_map_S21162C1[] = {
  NSPAIR(_ZN8S21162C1C1Ev),
  NSPAIR(_ZN8S21162C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S21162C2;
extern VTBL_ENTRY _ZTI8S21162C2[];
extern  VTBL_ENTRY _ZTV8S21162C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C2[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21162C9;
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
extern Class_Descriptor cd_S21162C6;
extern VTBL_ENTRY _ZTI8S21162C6[];
extern  VTBL_ENTRY _ZTV8S21162C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C6[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S21162C10;
extern VTBL_ENTRY _ZTI9S21162C10[];
extern  VTBL_ENTRY _ZTV9S21162C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21162C10[];
extern Class_Descriptor cd_S21162C9;
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
extern Class_Descriptor cd_S21162C5;
extern VTBL_ENTRY _ZTI8S21162C5[];
extern  VTBL_ENTRY _ZTV8S21162C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C5[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S21162C4;
extern VTBL_ENTRY _ZTI8S21162C4[];
extern  VTBL_ENTRY _ZTV8S21162C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C4[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21162C9;
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
extern Class_Descriptor cd_S21162C6;
extern VTBL_ENTRY _ZTI8S21162C6[];
extern  VTBL_ENTRY _ZTV8S21162C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C6[];
extern Class_Descriptor cd_S21162C16;
extern VTBL_ENTRY _ZTI9S21162C16[];
extern  VTBL_ENTRY _ZTV9S21162C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21162C16[];
static Base_Class bases_S21162C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20759C5_nt,    ABISELECT(208,144), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21162C2,    ABISELECT(192,136), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(224,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(320,228), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(352,256), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21162C9,    ABISELECT(240,164), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21162C6,    ABISELECT(224,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(280,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21162C10,    ABISELECT(280,196), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21162C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21162C5,    ABISELECT(224,152), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19115C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21162C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(400,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21162C9,    ABISELECT(416,296), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21162C6,    ABISELECT(400,284), //bcp->offset
    65, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S21162C16,    ABISELECT(368,268), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21162C1[];
extern void ABISELECT(_ZTv0_n32_N8S21162C1D1Ev,_ZTv0_n16_N8S21162C1D1Ev)();
extern void _ZN8S21162C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21162C1D0Ev,_ZTv0_n16_N8S21162C1D0Ev)();
extern void _ZN8S21162C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21162C1D1Ev,_ZTv0_n16_N8S21162C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S21162C1D1Ev,_ZThn136_N8S21162C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21162C1D0Ev,_ZTv0_n16_N8S21162C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S21162C1D0Ev,_ZThn136_N8S21162C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C1D1Ev,_ZTv0_n12_N8S21162C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S21162C1D1Ev,_ZThn144_N8S21162C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C1D0Ev,_ZTv0_n12_N8S21162C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S21162C1D0Ev,_ZThn144_N8S21162C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21162C1D1Ev,_ZTv0_n32_N8S21162C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S21162C1D1Ev,_ZThn152_N8S21162C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21162C1D0Ev,_ZTv0_n32_N8S21162C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S21162C1D0Ev,_ZThn152_N8S21162C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S21162C1D1Ev,_ZTvn12_n32_N8S21162C1D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S21162C1D0Ev,_ZTvn12_n32_N8S21162C1D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21162C1D1Ev,_ZTvn44_n32_N8S21162C1D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21162C1D0Ev,_ZTvn44_n32_N8S21162C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21162C1D1Ev,_ZTv0_n12_N8S21162C1D1Ev)();
extern void ABISELECT(_ZThn320_N8S21162C1D1Ev,_ZThn228_N8S21162C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C1D0Ev,_ZTv0_n12_N8S21162C1D0Ev)();
extern void ABISELECT(_ZThn320_N8S21162C1D0Ev,_ZThn228_N8S21162C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C1D1Ev,_ZTv0_n12_N8S21162C1D1Ev)();
extern void ABISELECT(_ZThn352_N8S21162C1D1Ev,_ZThn256_N8S21162C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C1D0Ev,_ZTv0_n12_N8S21162C1D0Ev)();
extern void ABISELECT(_ZThn352_N8S21162C1D0Ev,_ZThn256_N8S21162C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21162C1D1Ev,_ZTv0_n24_N8S21162C1D1Ev)();
extern void ABISELECT(_ZThn368_N8S21162C1D1Ev,_ZThn268_N8S21162C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21162C1D0Ev,_ZTv0_n24_N8S21162C1D0Ev)();
extern void ABISELECT(_ZThn368_N8S21162C1D0Ev,_ZThn268_N8S21162C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21162C1D1Ev,_ZTv0_n20_N8S21162C1D1Ev)();
extern void ABISELECT(_ZThn400_N8S21162C1D1Ev,_ZThn284_N8S21162C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21162C1D0Ev,_ZTv0_n20_N8S21162C1D0Ev)();
extern void ABISELECT(_ZThn400_N8S21162C1D0Ev,_ZThn284_N8S21162C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21162C1D1Ev,_ZTvn12_n20_N8S21162C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21162C1D0Ev,_ZTvn12_n20_N8S21162C1D0Ev)();
static  VTBL_ENTRY vtc_S21162C1[] = {
  ABISELECT(400,284),
  ABISELECT(368,268),
  ABISELECT(208,144),
  ABISELECT(192,136),
  0,
  0,
  0,
  ABISELECT(320,228),
  ABISELECT(224,152),
  0,
  ABISELECT(352,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C1D1Ev,_ZTv0_n16_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C1D0Ev,_ZTv0_n16_N8S21162C1D0Ev),
  ABISELECT(-192,-136),
  ABISELECT(16,8),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C1D1Ev,_ZTv0_n16_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C1D0Ev,_ZTv0_n16_N8S21162C1D0Ev),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C1D1Ev,_ZTv0_n12_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C1D0Ev,_ZTv0_n12_N8S21162C1D0Ev),
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21162C1D1Ev,_ZTv0_n32_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21162C1D0Ev,_ZTv0_n32_N8S21162C1D0Ev),
  ABISELECT(112,92),
  ABISELECT(-240,-164),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21162C1D1Ev,_ZTvn12_n32_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21162C1D0Ev,_ZTvn12_n32_N8S21162C1D0Ev),
  ABISELECT(-280,-196),
  ABISELECT(-280,-196),
  ABISELECT(-280,-196),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21162C1D1Ev,_ZTvn44_n32_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21162C1D0Ev,_ZTvn44_n32_N8S21162C1D0Ev),
  ABISELECT(-320,-228),
  ABISELECT(-320,-228),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C1D1Ev,_ZTv0_n12_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C1D0Ev,_ZTv0_n12_N8S21162C1D0Ev),
  ABISELECT(-352,-256),
  ABISELECT(-352,-256),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C1D1Ev,_ZTv0_n12_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C1D0Ev,_ZTv0_n12_N8S21162C1D0Ev),
  ABISELECT(-368,-268),
  ABISELECT(-16,-12),
  ABISELECT(32,16),
  ABISELECT(-48,-40),
  ABISELECT(-368,-268),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21162C1D1Ev,_ZTv0_n24_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21162C1D0Ev,_ZTv0_n24_N8S21162C1D0Ev),
  ABISELECT(-400,-284),
  ABISELECT(-48,-28),
  ABISELECT(-80,-56),
  ABISELECT(-400,-284),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21162C1D1Ev,_ZTv0_n20_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21162C1D0Ev,_ZTv0_n20_N8S21162C1D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-416,-296),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21162C1D1Ev,_ZTvn12_n20_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21162C1D0Ev,_ZTvn12_n20_N8S21162C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21162C1[];
extern void ABISELECT(_ZTv0_n32_N8S21162C4D1Ev,_ZTv0_n16_N8S21162C4D1Ev)();
extern void _ZN8S21162C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21162C4D0Ev,_ZTv0_n16_N8S21162C4D0Ev)();
extern void _ZN8S21162C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21162C4__8S21162C1[] = {
  0,
  0,
  0,
  ABISELECT(320,228),
  ABISELECT(224,152),
  0,
  ABISELECT(352,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C4D1Ev,_ZTv0_n16_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C4D0Ev,_ZTv0_n16_N8S21162C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S21162C4D1Ev,_ZTv0_n32_N8S21162C4D1Ev)();
extern void ABISELECT(_ZThn224_N8S21162C4D1Ev,_ZThn152_N8S21162C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21162C4D0Ev,_ZTv0_n32_N8S21162C4D0Ev)();
extern void ABISELECT(_ZThn224_N8S21162C4D0Ev,_ZThn152_N8S21162C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21162C5__8S21162C4__8S21162C1[] = {
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21162C4D1Ev,_ZTv0_n32_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21162C4D0Ev,_ZTv0_n32_N8S21162C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev)();
extern void ABISELECT(_ZThn320_N8S21162C4D1Ev,_ZThn228_N8S21162C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev)();
extern void ABISELECT(_ZThn320_N8S21162C4D0Ev,_ZThn228_N8S21162C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21162C4__8S21162C1[] = {
  ABISELECT(-320,-228),
  ABISELECT(-320,-228),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S21162C4D1Ev,_ZTvn12_n32_N8S21162C4D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S21162C4D0Ev,_ZTvn12_n32_N8S21162C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C98S21162C68S21162C5__8S21162C4__8S21162C1[] = {
  ABISELECT(112,92),
  ABISELECT(-240,-164),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21162C4D1Ev,_ZTvn12_n32_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21162C4D0Ev,_ZTvn12_n32_N8S21162C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev)();
extern void ABISELECT(_ZThn352_N8S21162C4D1Ev,_ZThn256_N8S21162C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev)();
extern void ABISELECT(_ZThn352_N8S21162C4D0Ev,_ZThn256_N8S21162C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21162C4__8S21162C1[] = {
  ABISELECT(-352,-256),
  ABISELECT(-352,-256),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S21162C4D1Ev,_ZTvn44_n32_N8S21162C4D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21162C4D0Ev,_ZTvn44_n32_N8S21162C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21162C108S21162C5__8S21162C4__8S21162C1[] = {
  ABISELECT(-280,-196),
  ABISELECT(-280,-196),
  ABISELECT(-280,-196),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21162C4D1Ev,_ZTvn44_n32_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21162C4D0Ev,_ZTvn44_n32_N8S21162C4D0Ev),
};
extern void _ZN8S21162C2D1Ev();
extern void _ZN8S21162C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C2__8S21162C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C2[0]),
  (VTBL_ENTRY)&_ZN8S21162C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C2D1Ev,_ZTv0_n12_N8S21162C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C2D1Ev,_ZThn8_N8S21162C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C2D0Ev,_ZTv0_n12_N8S21162C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S21162C2D0Ev,_ZThn8_N8S21162C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S21162C2__8S21162C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21162C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C2D1Ev,_ZTv0_n12_N8S21162C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C2D0Ev,_ZTv0_n12_N8S21162C2D0Ev),
};
extern void _ZN8S21162C5D1Ev();
extern void _ZN8S21162C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C5__8S21162C1[] = {
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&_ZN8S21162C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C5D0Ev,
};
extern void _ZN8S21162C6D1Ev();
extern void _ZN8S21162C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C68S21162C5__8S21162C1[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&_ZN8S21162C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C6D0Ev,
};
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C98S21162C68S21162C5__8S21162C1[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S21162C9D1Ev,_ZThn92_N8S21162C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S21162C9D0Ev,_ZThn92_N8S21162C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21162C98S21162C68S21162C5__8S21162C1[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S21162C6D1Ev,_ZThn76_N8S21162C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S21162C6D0Ev,_ZThn76_N8S21162C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21162C68S21162C5__8S21162C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C9__8S21162C68S21162C5__8S21162C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S21162C6D1Ev,_ZThn104_N8S21162C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S21162C6D0Ev,_ZThn104_N8S21162C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21162C68S21162C5__8S21162C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
extern void _ZN9S21162C10D1Ev();
extern void _ZN9S21162C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21162C108S21162C5__8S21162C1[] = {
  ABISELECT(-280,-196),
  ABISELECT(-280,-196),
  0,
  (VTBL_ENTRY)&(_ZTI9S21162C10[0]),
  (VTBL_ENTRY)&_ZN9S21162C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21162C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21162C5D1Ev,_ZThn76_N8S21162C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21162C5D0Ev,_ZThn76_N8S21162C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21162C5__8S21162C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21162C5D1Ev,_ZThn12_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C5D0Ev,_ZThn12_N8S21162C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C98S21162C6__8S21162C5__8S21162C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C5D1Ev,_ZThn12_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C5D0Ev,_ZThn12_N8S21162C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S21162C5D1Ev,_ZThn104_N8S21162C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S21162C5D0Ev,_ZThn104_N8S21162C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21162C5__8S21162C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev),
};
extern void ABISELECT(_ZThn56_N8S21162C5D1Ev,_ZThn44_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21162C5D0Ev,_ZThn44_N8S21162C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21162C10__8S21162C5__8S21162C1[] = {
  ABISELECT(-280,-196),
  ABISELECT(-280,-196),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21162C5D1Ev,_ZThn44_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21162C5D0Ev,_ZThn44_N8S21162C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21162C5D1Ev,_ZTv0_n16_N8S21162C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21162C5D0Ev,_ZTv0_n16_N8S21162C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C9__A1__8S21162C5__8S21162C1[] = {
  ABISELECT(224,152),
  ABISELECT(352,256),
  ABISELECT(224,152),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C5D1Ev,_ZTv0_n16_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C5D0Ev,_ZTv0_n16_N8S21162C5D0Ev),
};
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C9__A1__8S21162C1[] = {
  ABISELECT(352,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZThn352_N8S21162C9D1Ev,_ZThn256_N8S21162C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
extern void ABISELECT(_ZThn352_N8S21162C9D0Ev,_ZThn256_N8S21162C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21162C9__A1__8S21162C1[] = {
  ABISELECT(-352,-256),
  ABISELECT(-352,-256),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
extern void _ZN9S21162C16D1Ev();
extern void _ZN9S21162C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21162C16__8S21162C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(32,16),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&_ZN9S21162C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21162C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21162C16D1Ev,_ZTv0_n12_N9S21162C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21162C16D0Ev,_ZTv0_n12_N9S21162C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21162C16__8S21162C1[] = {
  ABISELECT(48,40),
  ABISELECT(48,40),
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21162C16D1Ev,_ZTv0_n12_N9S21162C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21162C16D0Ev,_ZTv0_n12_N9S21162C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21162C16D1Ev,_ZTv0_n20_N9S21162C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S21162C16D1Ev,_ZThn16_N9S21162C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21162C16D0Ev,_ZTv0_n20_N9S21162C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S21162C16D0Ev,_ZThn16_N9S21162C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21162C6__9S21162C16__8S21162C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  ABISELECT(-80,-56),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21162C16D1Ev,_ZTv0_n20_N9S21162C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21162C16D0Ev,_ZTv0_n20_N9S21162C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21162C16D1Ev,_ZTvn12_n20_N9S21162C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21162C16D0Ev,_ZTvn12_n20_N9S21162C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C98S21162C6__9S21162C16__8S21162C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21162C16D1Ev,_ZTvn12_n20_N9S21162C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21162C16D0Ev,_ZTvn12_n20_N9S21162C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21162C16D1Ev,_ZTv0_n12_N9S21162C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21162C16D0Ev,_ZTv0_n12_N9S21162C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21162C16__8S21162C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21162C16D1Ev,_ZTv0_n12_N9S21162C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21162C16D0Ev,_ZTv0_n12_N9S21162C16D0Ev),
};
extern void _ZN8S21162C6D1Ev();
extern void _ZN8S21162C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C6__A1__8S21162C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-80,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&_ZN8S21162C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C6D0Ev,
};
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C98S21162C6__A2__8S21162C1[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21162C98S21162C6__A2__8S21162C1[] = {
  ABISELECT(64,40),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21162C6__A1__8S21162C1[] = {
  ABISELECT(80,56),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C9__8S21162C6__A1__8S21162C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21162C6__A1__8S21162C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
static  VTT_ENTRY vtt_S21162C1[] = {
  {&(_ZTV8S21162C1[13]),  13,77},
  {&(_tg__ZTV8S21162C4__8S21162C1[9]),  9,11},
  {&(_tg__ZTV8S21162C5__8S21162C4__8S21162C1[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S21162C4__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S21162C98S21162C68S21162C5__8S21162C4__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21162C4__8S21162C1[3]),  3,5},
  {&(_tg__ZTV9S21162C108S21162C5__8S21162C4__8S21162C1[4]),  4,6},
  {&(_tg__ZTV8S21162C4__8S21162C1[9]),  9,11},
  {&(_ZTV8S21162C1[19]),  19,77},
  {&(_ZTV8S21162C1[24]),  24,77},
  {&(_ZTV8S21162C1[34]),  34,77},
  {&(_ZTV8S21162C1[50]),  50,77},
  {&(_ZTV8S21162C1[39]),  39,77},
  {&(_ZTV8S21162C1[55]),  55,77},
  {&(_ZTV8S21162C1[45]),  45,77},
  {&(_ZTV8S21162C1[13]),  13,77},
  {&(_ZTV8S21162C1[63]),  63,77},
  {&(_ZTV8S21162C1[70]),  70,77},
  {&(_ZTV8S21162C1[75]),  75,77},
  {&(_tg__ZTV8S21162C2__8S21162C1[3]),  3,5},
  {&(_tg__ZTV11S20759C5_nt__8S21162C2__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S21162C5__8S21162C1[7]),  7,9},
  {&(_tg__ZTV8S21162C68S21162C5__8S21162C1[4]),  4,6},
  {&(_tg__ZTV8S21162C98S21162C68S21162C5__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21162C98S21162C68S21162C5__8S21162C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21162C68S21162C5__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S21162C9__8S21162C68S21162C5__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21162C68S21162C5__8S21162C1[3]),  3,5},
  {&(_tg__ZTV9S21162C108S21162C5__8S21162C1[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S21162C5__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S21162C98S21162C6__8S21162C5__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21162C5__8S21162C1[3]),  3,5},
  {&(_tg__ZTV9S21162C10__8S21162C5__8S21162C1[4]),  4,6},
  {&(_tg__ZTV8S21162C9__A1__8S21162C5__8S21162C1[4]),  4,6},
  {&(_tg__ZTV8S21162C9__A1__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21162C9__A1__8S21162C1[3]),  3,5},
  {&(_tg__ZTV9S21162C16__8S21162C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21162C16__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S21162C6__9S21162C16__8S21162C1[5]),  5,7},
  {&(_tg__ZTV8S21162C98S21162C6__9S21162C16__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21162C16__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S21162C6__A1__8S21162C1[4]),  4,6},
  {&(_tg__ZTV8S21162C98S21162C6__A2__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21162C98S21162C6__A2__8S21162C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21162C6__A1__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S21162C9__8S21162C6__A1__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21162C6__A1__8S21162C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21162C1[];
extern  VTBL_ENTRY _ZTV8S21162C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C1[];
static VTBL_ENTRY alt_thunk_names275[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21162C16D0Ev,_ZTv0_n20_N9S21162C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21162C16D0Ev,_ZThn16_N9S21162C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21162C16D1Ev,_ZTv0_n20_N9S21162C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21162C16D1Ev,_ZThn16_N9S21162C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C5D0Ev,_ZThn104_N8S21162C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C5D0Ev,_ZThn76_N8S21162C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C5D1Ev,_ZThn104_N8S21162C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C5D1Ev,_ZThn76_N8S21162C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C6D0Ev,_ZThn104_N8S21162C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C6D0Ev,_ZThn76_N8S21162C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C6D1Ev,_ZThn104_N8S21162C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C6D1Ev,_ZThn76_N8S21162C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21162C9D0Ev,_ZThn256_N8S21162C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21162C9D0Ev,_ZThn92_N8S21162C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21162C9D1Ev,_ZThn256_N8S21162C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21162C9D1Ev,_ZThn92_N8S21162C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C2D0Ev,_ZTv0_n12_N8S21162C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21162C2D0Ev,_ZThn8_N8S21162C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C2D1Ev,_ZTv0_n12_N8S21162C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21162C2D1Ev,_ZThn8_N8S21162C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21162C4D0Ev,_ZThn256_N8S21162C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21162C4D0Ev,_ZThn228_N8S21162C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21162C4D1Ev,_ZThn256_N8S21162C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21162C4D1Ev,_ZThn228_N8S21162C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21162C4D0Ev,_ZTv0_n32_N8S21162C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21162C4D0Ev,_ZThn152_N8S21162C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21162C4D1Ev,_ZTv0_n32_N8S21162C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21162C4D1Ev,_ZThn152_N8S21162C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21162C4D0Ev,_ZTv0_n16_N8S21162C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S21162C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21162C4D1Ev,_ZTv0_n16_N8S21162C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S21162C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21162C1D0Ev,_ZTv0_n20_N8S21162C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S21162C1D0Ev,_ZThn284_N8S21162C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21162C1D1Ev,_ZTv0_n20_N8S21162C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S21162C1D1Ev,_ZThn284_N8S21162C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21162C1D0Ev,_ZTv0_n24_N8S21162C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S21162C1D0Ev,_ZThn268_N8S21162C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21162C1D1Ev,_ZTv0_n24_N8S21162C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S21162C1D1Ev,_ZThn268_N8S21162C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21162C1D0Ev,_ZTv0_n32_N8S21162C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21162C1D0Ev,_ZThn152_N8S21162C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21162C1D1Ev,_ZTv0_n32_N8S21162C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21162C1D1Ev,_ZThn152_N8S21162C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C1D0Ev,_ZTv0_n12_N8S21162C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21162C1D0Ev,_ZThn256_N8S21162C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21162C1D0Ev,_ZThn228_N8S21162C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21162C1D0Ev,_ZThn144_N8S21162C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C1D1Ev,_ZTv0_n12_N8S21162C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21162C1D1Ev,_ZThn256_N8S21162C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21162C1D1Ev,_ZThn228_N8S21162C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21162C1D1Ev,_ZThn144_N8S21162C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21162C1D0Ev,_ZTv0_n16_N8S21162C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21162C1D0Ev,_ZThn136_N8S21162C1D0Ev),
  (VTBL_ENTRY)_ZN8S21162C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21162C1D1Ev,_ZTv0_n16_N8S21162C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21162C1D1Ev,_ZThn136_N8S21162C1D1Ev),
  (VTBL_ENTRY)_ZN8S21162C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21162C1 = {  "S21162C1", // class name
  bases_S21162C1, 21,
  &(vtc_S21162C1[0]), // expected_vtbl_contents
  &(vtt_S21162C1[0]), // expected_vtt_contents
  ABISELECT(464,328), // object size
  NSPAIRA(_ZTI8S21162C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21162C1),77, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21162C1),47, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names275,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21163C2  : virtual S20760C9 {
  char s21163c2f0[2];
  virtual  ~S21163C2(); // _ZN8S21163C2D2Ev
  S21163C2(); // tgen
};
//SIG(-1 S21163C2) C1{ VBC2{ vd m FL} vd Fc[2]}


 S21163C2 ::~S21163C2(){ note_dtor("S21163C2", this);}
S21163C2 ::S21163C2(){ note_ctor("S21163C2", this);} // tgen

static void Test_S21163C2()
{
  extern Class_Descriptor cd_S21163C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S21163C2, buf);
    S21163C2 *dp, &lv = *(dp=new (buf) S21163C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S21163C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21163C2)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(16,8), "S21163C2");
    check_field_offset(lv, s21163c2f0, ABISELECT(8,4), "S21163C2.s21163c2f0");
    test_class_info(&lv, &cd_S21163C2);
    dp->~S21163C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21163C2(Test_S21163C2, "S21163C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S21163C2C1Ev();
extern void _ZN8S21163C2D2Ev();
Name_Map name_map_S21163C2[] = {
  NSPAIR(_ZN8S21163C2C1Ev),
  NSPAIR(_ZN8S21163C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S21163C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21163C2[];
extern void _ZN8S21163C2D1Ev();
extern void _ZN8S21163C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21163C2D1Ev,_ZTv0_n12_N8S21163C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C2D1Ev,_ZThn8_N8S21163C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C2D0Ev,_ZTv0_n12_N8S21163C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S21163C2D0Ev,_ZThn8_N8S21163C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21163C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C2[0]),
  (VTBL_ENTRY)&_ZN8S21163C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C2D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21163C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C2D1Ev,_ZTv0_n12_N8S21163C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C2D0Ev,_ZTv0_n12_N8S21163C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21163C2[];
static  VTT_ENTRY vtt_S21163C2[] = {
  {&(_ZTV8S21163C2[3]),  3,10},
  {&(_ZTV8S21163C2[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21163C2[];
extern  VTBL_ENTRY _ZTV8S21163C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C2[];
static VTBL_ENTRY alt_thunk_names276[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C2D0Ev,_ZTv0_n12_N8S21163C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21163C2D0Ev,_ZThn8_N8S21163C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C2D1Ev,_ZTv0_n12_N8S21163C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21163C2D1Ev,_ZThn8_N8S21163C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21163C2 = {  "S21163C2", // class name
  bases_S21163C2, 1,
  &(vtc_S21163C2[0]), // expected_vtbl_contents
  &(vtt_S21163C2[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S21163C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21163C2),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21163C2),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names276,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21163C9  : virtual S20760C5_nt {
  virtual  ~S21163C9(); // _ZN8S21163C9D2Ev
  S21163C9(); // tgen
};
//SIG(-1 S21163C9) C1{ VBC2{ vd m FL} vd}


 S21163C9 ::~S21163C9(){ note_dtor("S21163C9", this);}
S21163C9 ::S21163C9(){ note_ctor("S21163C9", this);} // tgen

static void Test_S21163C9()
{
  extern Class_Descriptor cd_S21163C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S21163C9, buf);
    S21163C9 *dp, &lv = *(dp=new (buf) S21163C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S21163C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21163C9)");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(8,4), "S21163C9");
    test_class_info(&lv, &cd_S21163C9);
    dp->~S21163C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21163C9(Test_S21163C9, "S21163C9", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S21163C9C1Ev();
extern void _ZN8S21163C9D2Ev();
Name_Map name_map_S21163C9[] = {
  NSPAIR(_ZN8S21163C9C1Ev),
  NSPAIR(_ZN8S21163C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S21163C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21163C9[];
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S21163C9D1Ev,_ZThn4_N8S21163C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S21163C9D0Ev,_ZThn4_N8S21163C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21163C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S21163C9[];
static  VTT_ENTRY vtt_S21163C9[] = {
  {&(_ZTV8S21163C9[3]),  3,10},
  {&(_ZTV8S21163C9[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
static VTBL_ENTRY alt_thunk_names277[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21163C9D0Ev,_ZThn4_N8S21163C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21163C9D1Ev,_ZThn4_N8S21163C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21163C9 = {  "S21163C9", // class name
  bases_S21163C9, 1,
  &(vtc_S21163C9[0]), // expected_vtbl_contents
  &(vtt_S21163C9[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S21163C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21163C9),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21163C9),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names277,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21163C6  : S20760C5_nt , virtual S20760C13 , S21163C9 {
  ::S20760C13 s21163c6f0;
  ~S21163C6(); // tgen
  S21163C6(); // tgen
};
//SIG(-1 S21163C6) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S21163C6 ::~S21163C6(){ note_dtor("S21163C6", this);} // tgen
S21163C6 ::S21163C6(){ note_ctor("S21163C6", this);} // tgen

static void Test_S21163C6()
{
  extern Class_Descriptor cd_S21163C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S21163C6, buf);
    S21163C6 *dp, &lv = *(dp=new (buf) S21163C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S21163C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21163C6)");
    /*is_ambiguous_... S21163C6::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*), 0, "S21163C6");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S21163C6");
    check_base_class_offset(lv, (S20760C5_nt*)(S21163C9*), ABISELECT(88,72), "S21163C6");
    check_base_class_offset(lv, (S21163C9*), ABISELECT(16,12), "S21163C6");
    check_field_offset(lv, s21163c6f0, ABISELECT(24,16), "S21163C6.s21163c6f0");
    test_class_info(&lv, &cd_S21163C6);
    dp->~S21163C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21163C6(Test_S21163C6, "S21163C6", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S21163C6C1Ev();
extern void _ZN8S21163C6D1Ev();
Name_Map name_map_S21163C6[] = {
  NSPAIR(_ZN8S21163C6C1Ev),
  NSPAIR(_ZN8S21163C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21163C9;
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
static Base_Class bases_S21163C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C5_nt,    ABISELECT(88,72), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21163C9,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21163C6[];
extern void _ZN8S21163C6D1Ev();
extern void _ZN8S21163C6D0Ev();
extern void ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S21163C6D1Ev,_ZThn44_N8S21163C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S21163C6D0Ev,_ZThn44_N8S21163C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn88_N8S21163C6D1Ev,_ZThn72_N8S21163C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZThn88_N8S21163C6D0Ev,_ZThn72_N8S21163C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21163C6[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&_ZN8S21163C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C6D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21163C6[];
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C9__8S21163C6[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZThn72_N8S21163C9D1Ev,_ZThn60_N8S21163C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
extern void ABISELECT(_ZThn72_N8S21163C9D0Ev,_ZThn60_N8S21163C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21163C9__8S21163C6[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
static  VTT_ENTRY vtt_S21163C6[] = {
  {&(_ZTV8S21163C6[4]),  4,21},
  {&(_tg__ZTV8S21163C9__8S21163C6[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21163C9__8S21163C6[3]),  3,5},
  {&(_ZTV8S21163C6[14]),  14,21},
  {&(_ZTV8S21163C6[9]),  9,21},
  {&(_ZTV8S21163C6[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S21163C6[];
extern  VTBL_ENTRY _ZTV8S21163C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C6[];
static VTBL_ENTRY alt_thunk_names278[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21163C9D0Ev,_ZThn60_N8S21163C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21163C9D1Ev,_ZThn60_N8S21163C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21163C6D0Ev,_ZThn72_N8S21163C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21163C6D0Ev,_ZThn44_N8S21163C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21163C6D1Ev,_ZThn72_N8S21163C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21163C6D1Ev,_ZThn44_N8S21163C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21163C6 = {  "S21163C6", // class name
  bases_S21163C6, 4,
  &(vtc_S21163C6[0]), // expected_vtbl_contents
  &(vtt_S21163C6[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S21163C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21163C6),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21163C6),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names278,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21163C10  : S20760C13 , virtual S4228C37 , virtual S4228C27 {
  short s21163c10f0;
  ~S21163C10(); // tgen
  S21163C10(); // tgen
};
//SIG(-1 S21163C10) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S21163C10 ::~S21163C10(){ note_dtor("S21163C10", this);} // tgen
S21163C10 ::S21163C10(){ note_ctor("S21163C10", this);} // tgen

static void Test_S21163C10()
{
  extern Class_Descriptor cd_S21163C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S21163C10, buf);
    S21163C10 *dp, &lv = *(dp=new (buf) S21163C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S21163C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21163C10)");
    check_base_class_offset(lv, (S20760C13*), 0, "S21163C10");
    check_base_class_offset(lv, (S4228C37*), 0, "S21163C10");
    check_base_class_offset(lv, (S4228C27*), 0, "S21163C10");
    check_field_offset(lv, s21163c10f0, ABISELECT(32,28), "S21163C10.s21163c10f0");
    test_class_info(&lv, &cd_S21163C10);
    dp->~S21163C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21163C10(Test_S21163C10, "S21163C10", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN9S21163C10C1Ev();
extern void _ZN9S21163C10D1Ev();
Name_Map name_map_S21163C10[] = {
  NSPAIR(_ZN9S21163C10C1Ev),
  NSPAIR(_ZN9S21163C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S21163C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21163C10[];
extern void _ZN9S21163C10D1Ev();
extern void _ZN9S21163C10D0Ev();
static  VTBL_ENTRY vtc_S21163C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21163C10[0]),
  (VTBL_ENTRY)&_ZN9S21163C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21163C10D0Ev,
};
extern VTBL_ENTRY _ZTV9S21163C10[];
static  VTT_ENTRY vtt_S21163C10[] = {
  {&(_ZTV9S21163C10[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21163C10[];
extern  VTBL_ENTRY _ZTV9S21163C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21163C10[];
Class_Descriptor cd_S21163C10 = {  "S21163C10", // class name
  bases_S21163C10, 3,
  &(vtc_S21163C10[0]), // expected_vtbl_contents
  &(vtt_S21163C10[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI9S21163C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21163C10),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21163C10),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21163C5  : S21163C6 , S21163C10 , virtual S21163C9 {
  virtual  ~S21163C5(); // _ZN8S21163C5D2Ev
  S21163C5(); // tgen
};
//SIG(-1 S21163C5) C1{ BC2{ BC3{ vd m FL} VBC4{ vd m Fi[6]} BC5{ VBC3 vd} FC4} BC6{ BC4 VBC7{ m} VBC8{ m} Fs} VBC5 vd}


 S21163C5 ::~S21163C5(){ note_dtor("S21163C5", this);}
S21163C5 ::S21163C5(){ note_ctor("S21163C5", this);} // tgen

static void Test_S21163C5()
{
  extern Class_Descriptor cd_S21163C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,31)];
    init_test(&cd_S21163C5, buf);
    S21163C5 *dp, &lv = *(dp=new (buf) S21163C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,120), "sizeof(S21163C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21163C5)");
    /*is_ambiguous_... S21163C6::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21163C6*), 0, "S21163C5");
    check_base_class_offset(lv, (S20760C13*)(S21163C6*), ABISELECT(96,76), "S21163C5");
    check_base_class_offset(lv, (S20760C5_nt*)(S21163C9*)(S21163C6*), ABISELECT(128,104), "S21163C5");
    /*is_ambiguous_... S21163C5::S21163C9 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21163C9*), ABISELECT(128,104), "S21163C5");
    check_base_class_offset(lv, (S21163C9*)(S21163C6*), ABISELECT(16,12), "S21163C5");
    check_base_class_offset(lv, (S21163C6*), 0, "S21163C5");
    check_base_class_offset(lv, (S20760C13*)(S21163C10*), ABISELECT(56,44), "S21163C5");
    check_base_class_offset(lv, (S4228C37*)(S21163C10*), 0, "S21163C5");
    check_base_class_offset(lv, (S4228C27*)(S21163C10*), 0, "S21163C5");
    check_base_class_offset(lv, (S21163C10*), ABISELECT(56,44), "S21163C5");
    /*is_ambiguous_... S21163C5::S21163C9 */ AMB_check_base_class_offset(lv, (S21163C9*), ABISELECT(144,116), "S21163C5");
    test_class_info(&lv, &cd_S21163C5);
    dp->~S21163C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21163C5(Test_S21163C5, "S21163C5", ABISELECT(152,120));

#else // __cplusplus

extern void _ZN8S21163C5C1Ev();
extern void _ZN8S21163C5D2Ev();
Name_Map name_map_S21163C5[] = {
  NSPAIR(_ZN8S21163C5C1Ev),
  NSPAIR(_ZN8S21163C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21163C9;
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
extern Class_Descriptor cd_S21163C6;
extern VTBL_ENTRY _ZTI8S21163C6[];
extern  VTBL_ENTRY _ZTV8S21163C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C6[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S21163C10;
extern VTBL_ENTRY _ZTI9S21163C10[];
extern  VTBL_ENTRY _ZTV9S21163C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21163C10[];
extern Class_Descriptor cd_S21163C9;
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
static Base_Class bases_S21163C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(96,76), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(128,104), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21163C9,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21163C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S21163C10,    ABISELECT(56,44), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21163C9,    ABISELECT(144,116), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21163C5[];
extern void _ZN8S21163C5D1Ev();
extern void _ZN8S21163C5D0Ev();
extern void ABISELECT(_ZThn16_N8S21163C5D1Ev,_ZThn12_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C5D0Ev,_ZThn12_N8S21163C5D0Ev)();
extern void ABISELECT(_ZThn56_N8S21163C5D1Ev,_ZThn44_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21163C5D0Ev,_ZThn44_N8S21163C5D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21163C5D1Ev,_ZThn76_N8S21163C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21163C5D0Ev,_ZThn76_N8S21163C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S21163C5D1Ev,_ZThn104_N8S21163C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S21163C5D0Ev,_ZThn104_N8S21163C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21163C5D1Ev,_ZTv0_n16_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn144_N8S21163C5D1Ev,_ZThn116_N8S21163C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21163C5D0Ev,_ZTv0_n16_N8S21163C5D0Ev)();
extern void ABISELECT(_ZThn144_N8S21163C5D0Ev,_ZThn116_N8S21163C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21163C5[] = {
  ABISELECT(144,116),
  0,
  0,
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&_ZN8S21163C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C5D0Ev,
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C5D1Ev,_ZThn12_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C5D0Ev,_ZThn12_N8S21163C5D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21163C5D1Ev,_ZThn44_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21163C5D0Ev,_ZThn44_N8S21163C5D0Ev),
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev),
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev),
  ABISELECT(-144,-116),
  ABISELECT(-16,-12),
  ABISELECT(-144,-116),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C5D1Ev,_ZTv0_n16_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C5D0Ev,_ZTv0_n16_N8S21163C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S21163C5[];
extern void _ZN8S21163C6D1Ev();
extern void _ZN8S21163C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C6__8S21163C5[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&_ZN8S21163C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C6D0Ev,
};
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C98S21163C6__8S21163C5[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S21163C9D1Ev,_ZThn92_N8S21163C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S21163C9D0Ev,_ZThn92_N8S21163C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21163C98S21163C6__8S21163C5[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S21163C6D1Ev,_ZThn76_N8S21163C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S21163C6D0Ev,_ZThn76_N8S21163C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21163C6__8S21163C5[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C9__8S21163C6__8S21163C5[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S21163C6D1Ev,_ZThn104_N8S21163C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S21163C6D0Ev,_ZThn104_N8S21163C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__8S21163C6__8S21163C5[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
extern void _ZN9S21163C10D1Ev();
extern void _ZN9S21163C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21163C10__8S21163C5[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21163C10[0]),
  (VTBL_ENTRY)&_ZN9S21163C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21163C10D0Ev,
};
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C9__A1__8S21163C5[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21163C9__A1__8S21163C5[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
static  VTT_ENTRY vtt_S21163C5[] = {
  {&(_ZTV8S21163C5[7]),  7,36},
  {&(_tg__ZTV8S21163C6__8S21163C5[4]),  4,6},
  {&(_tg__ZTV8S21163C98S21163C6__8S21163C5[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21163C98S21163C6__8S21163C5[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21163C6__8S21163C5[3]),  3,5},
  {&(_tg__ZTV8S21163C9__8S21163C6__8S21163C5[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__8S21163C6__8S21163C5[3]),  3,5},
  {&(_tg__ZTV9S21163C10__8S21163C5[4]),  4,6},
  {&(_ZTV8S21163C5[23]),  23,36},
  {&(_ZTV8S21163C5[12]),  12,36},
  {&(_ZTV8S21163C5[28]),  28,36},
  {&(_ZTV8S21163C5[18]),  18,36},
  {&(_ZTV8S21163C5[34]),  34,36},
  {&(_tg__ZTV8S21163C9__A1__8S21163C5[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21163C9__A1__8S21163C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21163C5[];
extern  VTBL_ENTRY _ZTV8S21163C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C5[];
static VTBL_ENTRY alt_thunk_names279[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C6D0Ev,_ZThn104_N8S21163C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C6D0Ev,_ZThn76_N8S21163C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C6D1Ev,_ZThn104_N8S21163C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C6D1Ev,_ZThn76_N8S21163C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21163C9D0Ev,_ZThn92_N8S21163C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21163C9D1Ev,_ZThn92_N8S21163C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21163C5D0Ev,_ZTv0_n16_N8S21163C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21163C5D0Ev,_ZThn116_N8S21163C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21163C5D1Ev,_ZTv0_n16_N8S21163C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21163C5D1Ev,_ZThn116_N8S21163C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C5D0Ev,_ZThn104_N8S21163C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C5D0Ev,_ZThn76_N8S21163C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C5D1Ev,_ZThn104_N8S21163C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C5D1Ev,_ZThn76_N8S21163C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21163C5 = {  "S21163C5", // class name
  bases_S21163C5, 10,
  &(vtc_S21163C5[0]), // expected_vtbl_contents
  &(vtt_S21163C5[0]), // expected_vtt_contents
  ABISELECT(152,120), // object size
  NSPAIRA(_ZTI8S21163C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21163C5),36, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21163C5),15, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names279,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21163C4  : virtual S21163C5 , S4161C4_nt , S19115C12 {
  int s21163c4f0;
  virtual  ~S21163C4(); // _ZN8S21163C4D2Ev
  S21163C4(); // tgen
};
//SIG(-1 S21163C4) C1{ VBC2{ BC3{ BC4{ vd m FL} VBC5{ vd m Fi[6]} BC6{ VBC4 vd} FC5} BC7{ BC5 VBC8{ m} VBC9{ m} Fs} VBC6 vd} BC10{ m Fp} BC11{ m FC12{ vd m FL}[10]} vd Fi}


 S21163C4 ::~S21163C4(){ note_dtor("S21163C4", this);}
S21163C4 ::S21163C4(){ note_ctor("S21163C4", this);} // tgen

static void Test_S21163C4()
{
  extern Class_Descriptor cd_S21163C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,63)];
    init_test(&cd_S21163C4, buf);
    S21163C4 *dp, &lv = *(dp=new (buf) S21163C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,248), "sizeof(S21163C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21163C4)");
    /*is_ambiguous_... S21163C6::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21163C6*)(S21163C5*), ABISELECT(184,132), "S21163C4");
    check_base_class_offset(lv, (S20760C13*)(S21163C6*)(S21163C5*), ABISELECT(280,208), "S21163C4");
    check_base_class_offset(lv, (S20760C5_nt*)(S21163C9*)(S21163C6*)(S21163C5*), ABISELECT(312,236), "S21163C4");
    /*is_ambiguous_... S21163C4::S21163C9 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21163C9*), ABISELECT(312,236), "S21163C4");
    check_base_class_offset(lv, (S21163C9*)(S21163C6*)(S21163C5*), ABISELECT(200,144), "S21163C4");
    check_base_class_offset(lv, (S21163C6*)(S21163C5*), ABISELECT(184,132), "S21163C4");
    check_base_class_offset(lv, (S20760C13*)(S21163C10*)(S21163C5*), ABISELECT(240,176), "S21163C4");
    check_base_class_offset(lv, (S4228C37*)(S21163C10*)(S21163C5*), 0, "S21163C4");
    check_base_class_offset(lv, (S4228C27*)(S21163C10*)(S21163C5*), 0, "S21163C4");
    check_base_class_offset(lv, (S21163C10*)(S21163C5*), ABISELECT(240,176), "S21163C4");
    /*is_ambiguous_... S21163C5::S21163C9 */ AMB_check_base_class_offset(lv, (S21163C9*)(S21163C5*), 0, "S21163C4");
    check_base_class_offset(lv, (S21163C5*), ABISELECT(184,132), "S21163C4");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(8,4), "S21163C4");
    check_base_class_offset(lv, (S19115C12*), ABISELECT(16,8), "S21163C4");
    check_field_offset(lv, s21163c4f0, ABISELECT(176,128), "S21163C4.s21163c4f0");
    test_class_info(&lv, &cd_S21163C4);
    dp->~S21163C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21163C4(Test_S21163C4, "S21163C4", ABISELECT(328,248));

#else // __cplusplus

extern void _ZN8S21163C4C1Ev();
extern void _ZN8S21163C4D2Ev();
Name_Map name_map_S21163C4[] = {
  NSPAIR(_ZN8S21163C4C1Ev),
  NSPAIR(_ZN8S21163C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21163C9;
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
extern Class_Descriptor cd_S21163C6;
extern VTBL_ENTRY _ZTI8S21163C6[];
extern  VTBL_ENTRY _ZTV8S21163C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C6[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S21163C10;
extern VTBL_ENTRY _ZTI9S21163C10[];
extern  VTBL_ENTRY _ZTV9S21163C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21163C10[];
extern Class_Descriptor cd_S21163C9;
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
extern Class_Descriptor cd_S21163C5;
extern VTBL_ENTRY _ZTI8S21163C5[];
extern  VTBL_ENTRY _ZTV8S21163C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C5[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
static Base_Class bases_S21163C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    ABISELECT(184,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(280,208), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(312,236), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21163C9,    ABISELECT(200,144), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21163C6,    ABISELECT(184,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(240,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S21163C10,    ABISELECT(240,176), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21163C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21163C5,    ABISELECT(184,132), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19115C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21163C4[];
extern void ABISELECT(_ZTv0_n32_N8S21163C4D1Ev,_ZTv0_n16_N8S21163C4D1Ev)();
extern void _ZN8S21163C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21163C4D0Ev,_ZTv0_n16_N8S21163C4D0Ev)();
extern void _ZN8S21163C4D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21163C4D1Ev,_ZTv0_n32_N8S21163C4D1Ev)();
extern void ABISELECT(_ZThn184_N8S21163C4D1Ev,_ZThn132_N8S21163C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21163C4D0Ev,_ZTv0_n32_N8S21163C4D0Ev)();
extern void ABISELECT(_ZThn184_N8S21163C4D0Ev,_ZThn132_N8S21163C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S21163C4D1Ev,_ZTvn12_n32_N8S21163C4D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S21163C4D0Ev,_ZTvn12_n32_N8S21163C4D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21163C4D1Ev,_ZTvn44_n32_N8S21163C4D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21163C4D0Ev,_ZTvn44_n32_N8S21163C4D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev)();
extern void ABISELECT(_ZThn280_N8S21163C4D1Ev,_ZThn208_N8S21163C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev)();
extern void ABISELECT(_ZThn280_N8S21163C4D0Ev,_ZThn208_N8S21163C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev)();
extern void ABISELECT(_ZThn312_N8S21163C4D1Ev,_ZThn236_N8S21163C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev)();
extern void ABISELECT(_ZThn312_N8S21163C4D0Ev,_ZThn236_N8S21163C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21163C4[] = {
  0,
  0,
  0,
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C4D1Ev,_ZTv0_n16_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C4D0Ev,_ZTv0_n16_N8S21163C4D0Ev),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21163C4D1Ev,_ZTv0_n32_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21163C4D0Ev,_ZTv0_n32_N8S21163C4D0Ev),
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21163C4D1Ev,_ZTvn12_n32_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21163C4D0Ev,_ZTvn12_n32_N8S21163C4D0Ev),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21163C4D1Ev,_ZTvn44_n32_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21163C4D0Ev,_ZTvn44_n32_N8S21163C4D0Ev),
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev),
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S21163C4[];
extern void _ZN8S21163C5D1Ev();
extern void _ZN8S21163C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C5__8S21163C4[] = {
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&_ZN8S21163C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C5D0Ev,
};
extern void _ZN8S21163C6D1Ev();
extern void _ZN8S21163C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C68S21163C5__8S21163C4[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&_ZN8S21163C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C6D0Ev,
};
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C98S21163C68S21163C5__8S21163C4[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S21163C9D1Ev,_ZThn92_N8S21163C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S21163C9D0Ev,_ZThn92_N8S21163C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21163C98S21163C68S21163C5__8S21163C4[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S21163C6D1Ev,_ZThn76_N8S21163C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S21163C6D0Ev,_ZThn76_N8S21163C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21163C68S21163C5__8S21163C4[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C9__8S21163C68S21163C5__8S21163C4[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S21163C6D1Ev,_ZThn104_N8S21163C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S21163C6D0Ev,_ZThn104_N8S21163C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__8S21163C68S21163C5__8S21163C4[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
extern void _ZN9S21163C10D1Ev();
extern void _ZN9S21163C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21163C108S21163C5__8S21163C4[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S21163C10[0]),
  (VTBL_ENTRY)&_ZN9S21163C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21163C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21163C5D1Ev,_ZThn76_N8S21163C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21163C5D0Ev,_ZThn76_N8S21163C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21163C5__8S21163C4[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21163C5D1Ev,_ZThn12_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C5D0Ev,_ZThn12_N8S21163C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C98S21163C6__8S21163C5__8S21163C4[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C5D1Ev,_ZThn12_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C5D0Ev,_ZThn12_N8S21163C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S21163C5D1Ev,_ZThn104_N8S21163C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S21163C5D0Ev,_ZThn104_N8S21163C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__8S21163C5__8S21163C4[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev),
};
extern void ABISELECT(_ZThn56_N8S21163C5D1Ev,_ZThn44_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21163C5D0Ev,_ZThn44_N8S21163C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21163C10__8S21163C5__8S21163C4[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21163C5D1Ev,_ZThn44_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21163C5D0Ev,_ZThn44_N8S21163C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21163C5D1Ev,_ZTv0_n16_N8S21163C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21163C5D0Ev,_ZTv0_n16_N8S21163C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C9__A1__8S21163C5__8S21163C4[] = {
  ABISELECT(184,132),
  ABISELECT(312,236),
  ABISELECT(184,132),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C5D1Ev,_ZTv0_n16_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C5D0Ev,_ZTv0_n16_N8S21163C5D0Ev),
};
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C9__A1__8S21163C4[] = {
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZThn312_N8S21163C9D1Ev,_ZThn236_N8S21163C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
extern void ABISELECT(_ZThn312_N8S21163C9D0Ev,_ZThn236_N8S21163C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21163C9__A1__8S21163C4[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
static  VTT_ENTRY vtt_S21163C4[] = {
  {&(_ZTV8S21163C4[9]),  9,42},
  {&(_ZTV8S21163C4[19]),  19,42},
  {&(_ZTV8S21163C4[35]),  35,42},
  {&(_ZTV8S21163C4[24]),  24,42},
  {&(_ZTV8S21163C4[40]),  40,42},
  {&(_ZTV8S21163C4[30]),  30,42},
  {&(_ZTV8S21163C4[9]),  9,42},
  {&(_tg__ZTV8S21163C5__8S21163C4[7]),  7,9},
  {&(_tg__ZTV8S21163C68S21163C5__8S21163C4[4]),  4,6},
  {&(_tg__ZTV8S21163C98S21163C68S21163C5__8S21163C4[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21163C98S21163C68S21163C5__8S21163C4[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21163C68S21163C5__8S21163C4[3]),  3,5},
  {&(_tg__ZTV8S21163C9__8S21163C68S21163C5__8S21163C4[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__8S21163C68S21163C5__8S21163C4[3]),  3,5},
  {&(_tg__ZTV9S21163C108S21163C5__8S21163C4[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S21163C5__8S21163C4[3]),  3,5},
  {&(_tg__ZTV8S21163C98S21163C6__8S21163C5__8S21163C4[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__8S21163C5__8S21163C4[3]),  3,5},
  {&(_tg__ZTV9S21163C10__8S21163C5__8S21163C4[4]),  4,6},
  {&(_tg__ZTV8S21163C9__A1__8S21163C5__8S21163C4[4]),  4,6},
  {&(_tg__ZTV8S21163C9__A1__8S21163C4[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21163C9__A1__8S21163C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21163C4[];
extern  VTBL_ENTRY _ZTV8S21163C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C4[];
static VTBL_ENTRY alt_thunk_names280[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C5D0Ev,_ZThn104_N8S21163C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C5D0Ev,_ZThn76_N8S21163C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C5D1Ev,_ZThn104_N8S21163C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C5D1Ev,_ZThn76_N8S21163C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C6D0Ev,_ZThn104_N8S21163C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C6D0Ev,_ZThn76_N8S21163C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C6D1Ev,_ZThn104_N8S21163C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C6D1Ev,_ZThn76_N8S21163C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21163C9D0Ev,_ZThn236_N8S21163C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21163C9D0Ev,_ZThn92_N8S21163C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21163C9D1Ev,_ZThn236_N8S21163C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21163C9D1Ev,_ZThn92_N8S21163C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21163C4D0Ev,_ZThn236_N8S21163C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21163C4D0Ev,_ZThn208_N8S21163C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21163C4D1Ev,_ZThn236_N8S21163C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21163C4D1Ev,_ZThn208_N8S21163C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21163C4D0Ev,_ZTv0_n32_N8S21163C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21163C4D0Ev,_ZThn132_N8S21163C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21163C4D1Ev,_ZTv0_n32_N8S21163C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21163C4D1Ev,_ZThn132_N8S21163C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21163C4D0Ev,_ZTv0_n16_N8S21163C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S21163C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21163C4D1Ev,_ZTv0_n16_N8S21163C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S21163C4D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21163C4 = {  "S21163C4", // class name
  bases_S21163C4, 13,
  &(vtc_S21163C4[0]), // expected_vtbl_contents
  &(vtt_S21163C4[0]), // expected_vtt_contents
  ABISELECT(328,248), // object size
  NSPAIRA(_ZTI8S21163C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21163C4),42, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21163C4),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names280,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21163C16  : virtual S20760C13 , virtual S21163C6 {
  long double s21163c16f0;
  ~S21163C16(); // tgen
  S21163C16(); // tgen
};
//SIG(-1 S21163C16) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S21163C16 ::~S21163C16(){ note_dtor("S21163C16", this);} // tgen
S21163C16 ::S21163C16(){ note_ctor("S21163C16", this);} // tgen

static void Test_S21163C16()
{
  extern Class_Descriptor cd_S21163C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S21163C16, buf);
    S21163C16 *dp, &lv = *(dp=new (buf) S21163C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S21163C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21163C16)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S21163C16");
    check_base_class_offset(lv, (S20760C13*)(S21163C6*), ABISELECT(32,16), "S21163C16");
    /*is_ambiguous_... S21163C6::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21163C6*), ABISELECT(64,44), "S21163C16");
    check_base_class_offset(lv, (S20760C5_nt*)(S21163C9*)(S21163C6*), ABISELECT(120,88), "S21163C16");
    check_base_class_offset(lv, (S21163C9*)(S21163C6*), ABISELECT(80,56), "S21163C16");
    check_base_class_offset(lv, (S21163C6*), ABISELECT(64,44), "S21163C16");
    check_field_offset(lv, s21163c16f0, ABISELECT(16,4), "S21163C16.s21163c16f0");
    test_class_info(&lv, &cd_S21163C16);
    dp->~S21163C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21163C16(Test_S21163C16, "S21163C16", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN9S21163C16C1Ev();
extern void _ZN9S21163C16D1Ev();
Name_Map name_map_S21163C16[] = {
  NSPAIR(_ZN9S21163C16C1Ev),
  NSPAIR(_ZN9S21163C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21163C9;
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
extern Class_Descriptor cd_S21163C6;
extern VTBL_ENTRY _ZTI8S21163C6[];
extern  VTBL_ENTRY _ZTV8S21163C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C6[];
static Base_Class bases_S21163C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C5_nt,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21163C9,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21163C6,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21163C16[];
extern void _ZN9S21163C16D1Ev();
extern void _ZN9S21163C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21163C16D1Ev,_ZTv0_n12_N9S21163C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S21163C16D1Ev,_ZThn16_N9S21163C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21163C16D0Ev,_ZTv0_n12_N9S21163C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S21163C16D0Ev,_ZThn16_N9S21163C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21163C16D1Ev,_ZTv0_n20_N9S21163C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S21163C16D1Ev,_ZThn44_N9S21163C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21163C16D0Ev,_ZTv0_n20_N9S21163C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S21163C16D0Ev,_ZThn44_N9S21163C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21163C16D1Ev,_ZTvn12_n20_N9S21163C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21163C16D0Ev,_ZTvn12_n20_N9S21163C16D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21163C16D1Ev,_ZTv0_n12_N9S21163C16D1Ev)();
extern void ABISELECT(_ZThn120_N9S21163C16D1Ev,_ZThn88_N9S21163C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21163C16D0Ev,_ZTv0_n12_N9S21163C16D0Ev)();
extern void ABISELECT(_ZThn120_N9S21163C16D0Ev,_ZThn88_N9S21163C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21163C16[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&_ZN9S21163C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21163C16D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21163C16D1Ev,_ZTv0_n12_N9S21163C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21163C16D0Ev,_ZTv0_n12_N9S21163C16D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21163C16D1Ev,_ZTv0_n20_N9S21163C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21163C16D0Ev,_ZTv0_n20_N9S21163C16D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21163C16D1Ev,_ZTvn12_n20_N9S21163C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21163C16D0Ev,_ZTvn12_n20_N9S21163C16D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21163C16D1Ev,_ZTv0_n12_N9S21163C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21163C16D0Ev,_ZTv0_n12_N9S21163C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S21163C16[];
extern void _ZN8S21163C6D1Ev();
extern void _ZN8S21163C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C6__9S21163C16[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&_ZN8S21163C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C6D0Ev,
};
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C98S21163C6__9S21163C16[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S21163C9D1Ev,_ZThn32_N8S21163C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
extern void ABISELECT(_ZThn40_N8S21163C9D0Ev,_ZThn32_N8S21163C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21163C98S21163C6__9S21163C16[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21163C6__9S21163C16[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C9__8S21163C6__9S21163C16[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S21163C6D1Ev,_ZThn44_N8S21163C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S21163C6D0Ev,_ZThn44_N8S21163C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__8S21163C6__9S21163C16[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
static  VTT_ENTRY vtt_S21163C16[] = {
  {&(_ZTV9S21163C16[5]),  5,29},
  {&(_ZTV9S21163C16[10]),  10,29},
  {&(_ZTV9S21163C16[17]),  17,29},
  {&(_ZTV9S21163C16[22]),  22,29},
  {&(_ZTV9S21163C16[27]),  27,29},
  {&(_tg__ZTV8S21163C6__9S21163C16[4]),  4,6},
  {&(_tg__ZTV8S21163C98S21163C6__9S21163C16[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21163C98S21163C6__9S21163C16[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21163C6__9S21163C16[3]),  3,5},
  {&(_tg__ZTV8S21163C9__8S21163C6__9S21163C16[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__8S21163C6__9S21163C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21163C16[];
extern  VTBL_ENTRY _ZTV9S21163C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21163C16[];
static VTBL_ENTRY alt_thunk_names281[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21163C6D0Ev,_ZThn44_N8S21163C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21163C6D1Ev,_ZThn44_N8S21163C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21163C9D0Ev,_ZThn32_N8S21163C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21163C9D1Ev,_ZThn32_N8S21163C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21163C16D0Ev,_ZTv0_n20_N9S21163C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21163C16D0Ev,_ZThn44_N9S21163C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21163C16D1Ev,_ZTv0_n20_N9S21163C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21163C16D1Ev,_ZThn44_N9S21163C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21163C16D0Ev,_ZTv0_n12_N9S21163C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21163C16D0Ev,_ZThn88_N9S21163C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21163C16D0Ev,_ZThn16_N9S21163C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21163C16D1Ev,_ZTv0_n12_N9S21163C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21163C16D1Ev,_ZThn88_N9S21163C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21163C16D1Ev,_ZThn16_N9S21163C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21163C16 = {  "S21163C16", // class name
  bases_S21163C16, 5,
  &(vtc_S21163C16[0]), // expected_vtbl_contents
  &(vtt_S21163C16[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI9S21163C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21163C16),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21163C16),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names281,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21163C1  : virtual S21163C2 , S21163C4 , S4228C23 , virtual S21163C16 {
  long s21163c1f0;
  ~S21163C1(); // tgen
  S21163C1(); // tgen
};
//SIG(1 S21163C1) C1{ VBC2{ VBC3{ vd m FL} vd Fc[2]} BC4{ VBC5{ BC6{ BC7{ vd m FL} VBC8{ vd m Fi[6]} BC9{ VBC7 vd} FC8} BC10{ BC8 VBC11{ m} VBC12{ m} Fs} VBC9 vd} BC13{ m Fp} BC14{ m FC3[10]} vd Fi} BC15{ m} VBC16{ VBC8 VBC6 FD} Fl}


S21163C1 ::~S21163C1(){ note_dtor("S21163C1", this);} // tgen
S21163C1 ::S21163C1(){ note_ctor("S21163C1", this);} // tgen

static void Test_S21163C1()
{
  extern Class_Descriptor cd_S21163C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,84)];
    init_test(&cd_S21163C1, buf);
    S21163C1 *dp, &lv = *(dp=new (buf) S21163C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,332), "sizeof(S21163C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21163C1)");
    check_base_class_offset(lv, (S20760C9*)(S21163C2*), ABISELECT(208,144), "S21163C1");
    check_base_class_offset(lv, (S21163C2*), ABISELECT(192,136), "S21163C1");
    /*is_ambiguous_... S21163C6::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21163C6*)(S21163C5*), ABISELECT(224,156), "S21163C1");
    check_base_class_offset(lv, (S20760C13*)(S21163C6*)(S21163C5*), ABISELECT(320,232), "S21163C1");
    check_base_class_offset(lv, (S20760C13*)(S21163C16*), ABISELECT(320,232), "S21163C1");
    /*is_ambiguous_... S21163C1::S21163C6 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21163C6*), ABISELECT(320,232), "S21163C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S21163C9*)(S21163C6*)(S21163C5*), ABISELECT(352,260), "S21163C1");
    /*is_ambiguous_... S21163C1::S21163C9 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21163C9*), ABISELECT(352,260), "S21163C1");
    /*is_ambiguous_... S21163C1::S21163C6 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21163C9*)(S21163C6*), ABISELECT(352,260), "S21163C1");
    check_base_class_offset(lv, (S21163C9*)(S21163C6*)(S21163C5*), ABISELECT(240,168), "S21163C1");
    check_base_class_offset(lv, (S21163C6*)(S21163C5*), ABISELECT(224,156), "S21163C1");
    check_base_class_offset(lv, (S20760C13*)(S21163C10*)(S21163C5*), ABISELECT(280,200), "S21163C1");
    check_base_class_offset(lv, (S4228C37*)(S21163C10*)(S21163C5*), 0, "S21163C1");
    check_base_class_offset(lv, (S4228C27*)(S21163C10*)(S21163C5*), 0, "S21163C1");
    check_base_class_offset(lv, (S21163C10*)(S21163C5*), ABISELECT(280,200), "S21163C1");
    /*is_ambiguous_... S21163C5::S21163C9 */ AMB_check_base_class_offset(lv, (S21163C9*)(S21163C5*), 0, "S21163C1");
    check_base_class_offset(lv, (S21163C5*)(S21163C4*), ABISELECT(224,156), "S21163C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21163C4*), ABISELECT(8,4), "S21163C1");
    check_base_class_offset(lv, (S19115C12*)(S21163C4*), ABISELECT(16,8), "S21163C1");
    check_base_class_offset(lv, (S21163C4*), 0, "S21163C1");
    check_base_class_offset(lv, (S4228C23*), 0, "S21163C1");
    /*is_ambiguous_... S21163C1::S21163C6 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21163C6*), ABISELECT(400,288), "S21163C1");
    /*is_ambiguous_... S21163C1::S21163C6 */ AMB_check_base_class_offset(lv, (S21163C9*)(S21163C6*), ABISELECT(416,300), "S21163C1");
    check_base_class_offset(lv, (S21163C6*)(S21163C16*), ABISELECT(400,288), "S21163C1");
    check_base_class_offset(lv, (S21163C16*), ABISELECT(368,272), "S21163C1");
    check_field_offset(lv, s21163c1f0, ABISELECT(184,132), "S21163C1.s21163c1f0");
    test_class_info(&lv, &cd_S21163C1);
    dp->~S21163C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21163C1(Test_S21163C1, "S21163C1", ABISELECT(464,332));

#else // __cplusplus

extern void _ZN8S21163C1C1Ev();
extern void _ZN8S21163C1D1Ev();
Name_Map name_map_S21163C1[] = {
  NSPAIR(_ZN8S21163C1C1Ev),
  NSPAIR(_ZN8S21163C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21163C2;
extern VTBL_ENTRY _ZTI8S21163C2[];
extern  VTBL_ENTRY _ZTV8S21163C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C2[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21163C9;
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
extern Class_Descriptor cd_S21163C6;
extern VTBL_ENTRY _ZTI8S21163C6[];
extern  VTBL_ENTRY _ZTV8S21163C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C6[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S21163C10;
extern VTBL_ENTRY _ZTI9S21163C10[];
extern  VTBL_ENTRY _ZTV9S21163C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21163C10[];
extern Class_Descriptor cd_S21163C9;
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
extern Class_Descriptor cd_S21163C5;
extern VTBL_ENTRY _ZTI8S21163C5[];
extern  VTBL_ENTRY _ZTV8S21163C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C5[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S21163C4;
extern VTBL_ENTRY _ZTI8S21163C4[];
extern  VTBL_ENTRY _ZTV8S21163C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C4[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21163C9;
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
extern Class_Descriptor cd_S21163C6;
extern VTBL_ENTRY _ZTI8S21163C6[];
extern  VTBL_ENTRY _ZTV8S21163C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C6[];
extern Class_Descriptor cd_S21163C16;
extern VTBL_ENTRY _ZTI9S21163C16[];
extern  VTBL_ENTRY _ZTV9S21163C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21163C16[];
static Base_Class bases_S21163C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(208,144), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21163C2,    ABISELECT(192,136), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C5_nt,    ABISELECT(224,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(320,232), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(352,260), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21163C9,    ABISELECT(240,168), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21163C6,    ABISELECT(224,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(280,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21163C10,    ABISELECT(280,200), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21163C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21163C5,    ABISELECT(224,156), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19115C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21163C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C5_nt,    ABISELECT(400,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21163C9,    ABISELECT(416,300), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21163C6,    ABISELECT(400,288), //bcp->offset
    65, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S21163C16,    ABISELECT(368,272), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21163C1[];
extern void ABISELECT(_ZTv0_n32_N8S21163C1D1Ev,_ZTv0_n16_N8S21163C1D1Ev)();
extern void _ZN8S21163C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21163C1D0Ev,_ZTv0_n16_N8S21163C1D0Ev)();
extern void _ZN8S21163C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21163C1D1Ev,_ZTv0_n16_N8S21163C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S21163C1D1Ev,_ZThn136_N8S21163C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21163C1D0Ev,_ZTv0_n16_N8S21163C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S21163C1D0Ev,_ZThn136_N8S21163C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C1D1Ev,_ZTv0_n12_N8S21163C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S21163C1D1Ev,_ZThn144_N8S21163C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C1D0Ev,_ZTv0_n12_N8S21163C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S21163C1D0Ev,_ZThn144_N8S21163C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21163C1D1Ev,_ZTv0_n32_N8S21163C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S21163C1D1Ev,_ZThn156_N8S21163C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21163C1D0Ev,_ZTv0_n32_N8S21163C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S21163C1D0Ev,_ZThn156_N8S21163C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S21163C1D1Ev,_ZTvn12_n32_N8S21163C1D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S21163C1D0Ev,_ZTvn12_n32_N8S21163C1D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21163C1D1Ev,_ZTvn44_n32_N8S21163C1D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21163C1D0Ev,_ZTvn44_n32_N8S21163C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21163C1D1Ev,_ZTv0_n12_N8S21163C1D1Ev)();
extern void ABISELECT(_ZThn320_N8S21163C1D1Ev,_ZThn232_N8S21163C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C1D0Ev,_ZTv0_n12_N8S21163C1D0Ev)();
extern void ABISELECT(_ZThn320_N8S21163C1D0Ev,_ZThn232_N8S21163C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C1D1Ev,_ZTv0_n12_N8S21163C1D1Ev)();
extern void ABISELECT(_ZThn352_N8S21163C1D1Ev,_ZThn260_N8S21163C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C1D0Ev,_ZTv0_n12_N8S21163C1D0Ev)();
extern void ABISELECT(_ZThn352_N8S21163C1D0Ev,_ZThn260_N8S21163C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21163C1D1Ev,_ZTv0_n24_N8S21163C1D1Ev)();
extern void ABISELECT(_ZThn368_N8S21163C1D1Ev,_ZThn272_N8S21163C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21163C1D0Ev,_ZTv0_n24_N8S21163C1D0Ev)();
extern void ABISELECT(_ZThn368_N8S21163C1D0Ev,_ZThn272_N8S21163C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21163C1D1Ev,_ZTv0_n20_N8S21163C1D1Ev)();
extern void ABISELECT(_ZThn400_N8S21163C1D1Ev,_ZThn288_N8S21163C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21163C1D0Ev,_ZTv0_n20_N8S21163C1D0Ev)();
extern void ABISELECT(_ZThn400_N8S21163C1D0Ev,_ZThn288_N8S21163C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21163C1D1Ev,_ZTvn12_n20_N8S21163C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21163C1D0Ev,_ZTvn12_n20_N8S21163C1D0Ev)();
static  VTBL_ENTRY vtc_S21163C1[] = {
  ABISELECT(400,288),
  ABISELECT(368,272),
  ABISELECT(208,144),
  ABISELECT(192,136),
  0,
  0,
  0,
  ABISELECT(320,232),
  ABISELECT(224,156),
  0,
  ABISELECT(352,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C1D1Ev,_ZTv0_n16_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C1D0Ev,_ZTv0_n16_N8S21163C1D0Ev),
  ABISELECT(-192,-136),
  ABISELECT(16,8),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C1D1Ev,_ZTv0_n16_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C1D0Ev,_ZTv0_n16_N8S21163C1D0Ev),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C1D1Ev,_ZTv0_n12_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C1D0Ev,_ZTv0_n12_N8S21163C1D0Ev),
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21163C1D1Ev,_ZTv0_n32_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21163C1D0Ev,_ZTv0_n32_N8S21163C1D0Ev),
  ABISELECT(112,92),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21163C1D1Ev,_ZTvn12_n32_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21163C1D0Ev,_ZTvn12_n32_N8S21163C1D0Ev),
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21163C1D1Ev,_ZTvn44_n32_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21163C1D0Ev,_ZTvn44_n32_N8S21163C1D0Ev),
  ABISELECT(-320,-232),
  ABISELECT(-320,-232),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C1D1Ev,_ZTv0_n12_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C1D0Ev,_ZTv0_n12_N8S21163C1D0Ev),
  ABISELECT(-352,-260),
  ABISELECT(-352,-260),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C1D1Ev,_ZTv0_n12_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C1D0Ev,_ZTv0_n12_N8S21163C1D0Ev),
  ABISELECT(-368,-272),
  ABISELECT(-16,-12),
  ABISELECT(32,16),
  ABISELECT(-48,-40),
  ABISELECT(-368,-272),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21163C1D1Ev,_ZTv0_n24_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21163C1D0Ev,_ZTv0_n24_N8S21163C1D0Ev),
  ABISELECT(-400,-288),
  ABISELECT(-48,-28),
  ABISELECT(-80,-56),
  ABISELECT(-400,-288),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21163C1D1Ev,_ZTv0_n20_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21163C1D0Ev,_ZTv0_n20_N8S21163C1D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-416,-300),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21163C1D1Ev,_ZTvn12_n20_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21163C1D0Ev,_ZTvn12_n20_N8S21163C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21163C1[];
extern void ABISELECT(_ZTv0_n32_N8S21163C4D1Ev,_ZTv0_n16_N8S21163C4D1Ev)();
extern void _ZN8S21163C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21163C4D0Ev,_ZTv0_n16_N8S21163C4D0Ev)();
extern void _ZN8S21163C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21163C4__8S21163C1[] = {
  0,
  0,
  0,
  ABISELECT(320,232),
  ABISELECT(224,156),
  0,
  ABISELECT(352,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C4D1Ev,_ZTv0_n16_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C4D0Ev,_ZTv0_n16_N8S21163C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S21163C4D1Ev,_ZTv0_n32_N8S21163C4D1Ev)();
extern void ABISELECT(_ZThn224_N8S21163C4D1Ev,_ZThn156_N8S21163C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21163C4D0Ev,_ZTv0_n32_N8S21163C4D0Ev)();
extern void ABISELECT(_ZThn224_N8S21163C4D0Ev,_ZThn156_N8S21163C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21163C5__8S21163C4__8S21163C1[] = {
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21163C4D1Ev,_ZTv0_n32_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21163C4D0Ev,_ZTv0_n32_N8S21163C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev)();
extern void ABISELECT(_ZThn320_N8S21163C4D1Ev,_ZThn232_N8S21163C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev)();
extern void ABISELECT(_ZThn320_N8S21163C4D0Ev,_ZThn232_N8S21163C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21163C4__8S21163C1[] = {
  ABISELECT(-320,-232),
  ABISELECT(-320,-232),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S21163C4D1Ev,_ZTvn12_n32_N8S21163C4D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S21163C4D0Ev,_ZTvn12_n32_N8S21163C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C98S21163C68S21163C5__8S21163C4__8S21163C1[] = {
  ABISELECT(112,92),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21163C4D1Ev,_ZTvn12_n32_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21163C4D0Ev,_ZTvn12_n32_N8S21163C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev)();
extern void ABISELECT(_ZThn352_N8S21163C4D1Ev,_ZThn260_N8S21163C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev)();
extern void ABISELECT(_ZThn352_N8S21163C4D0Ev,_ZThn260_N8S21163C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__8S21163C4__8S21163C1[] = {
  ABISELECT(-352,-260),
  ABISELECT(-352,-260),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S21163C4D1Ev,_ZTvn44_n32_N8S21163C4D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21163C4D0Ev,_ZTvn44_n32_N8S21163C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21163C108S21163C5__8S21163C4__8S21163C1[] = {
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21163C4D1Ev,_ZTvn44_n32_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21163C4D0Ev,_ZTvn44_n32_N8S21163C4D0Ev),
};
extern void _ZN8S21163C2D1Ev();
extern void _ZN8S21163C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C2__8S21163C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C2[0]),
  (VTBL_ENTRY)&_ZN8S21163C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C2D1Ev,_ZTv0_n12_N8S21163C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C2D1Ev,_ZThn8_N8S21163C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C2D0Ev,_ZTv0_n12_N8S21163C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S21163C2D0Ev,_ZThn8_N8S21163C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21163C2__8S21163C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21163C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C2D1Ev,_ZTv0_n12_N8S21163C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C2D0Ev,_ZTv0_n12_N8S21163C2D0Ev),
};
extern void _ZN8S21163C5D1Ev();
extern void _ZN8S21163C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C5__8S21163C1[] = {
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&_ZN8S21163C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C5D0Ev,
};
extern void _ZN8S21163C6D1Ev();
extern void _ZN8S21163C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C68S21163C5__8S21163C1[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&_ZN8S21163C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C6D0Ev,
};
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C98S21163C68S21163C5__8S21163C1[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S21163C9D1Ev,_ZThn92_N8S21163C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S21163C9D0Ev,_ZThn92_N8S21163C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21163C98S21163C68S21163C5__8S21163C1[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S21163C6D1Ev,_ZThn76_N8S21163C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S21163C6D0Ev,_ZThn76_N8S21163C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21163C68S21163C5__8S21163C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C9__8S21163C68S21163C5__8S21163C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S21163C6D1Ev,_ZThn104_N8S21163C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S21163C6D0Ev,_ZThn104_N8S21163C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__8S21163C68S21163C5__8S21163C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
extern void _ZN9S21163C10D1Ev();
extern void _ZN9S21163C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21163C108S21163C5__8S21163C1[] = {
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  0,
  (VTBL_ENTRY)&(_ZTI9S21163C10[0]),
  (VTBL_ENTRY)&_ZN9S21163C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21163C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21163C5D1Ev,_ZThn76_N8S21163C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21163C5D0Ev,_ZThn76_N8S21163C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21163C5__8S21163C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21163C5D1Ev,_ZThn12_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C5D0Ev,_ZThn12_N8S21163C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C98S21163C6__8S21163C5__8S21163C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C5D1Ev,_ZThn12_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C5D0Ev,_ZThn12_N8S21163C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S21163C5D1Ev,_ZThn104_N8S21163C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S21163C5D0Ev,_ZThn104_N8S21163C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__8S21163C5__8S21163C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev),
};
extern void ABISELECT(_ZThn56_N8S21163C5D1Ev,_ZThn44_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21163C5D0Ev,_ZThn44_N8S21163C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21163C10__8S21163C5__8S21163C1[] = {
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21163C5D1Ev,_ZThn44_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21163C5D0Ev,_ZThn44_N8S21163C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21163C5D1Ev,_ZTv0_n16_N8S21163C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21163C5D0Ev,_ZTv0_n16_N8S21163C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C9__A1__8S21163C5__8S21163C1[] = {
  ABISELECT(224,156),
  ABISELECT(352,260),
  ABISELECT(224,156),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C5D1Ev,_ZTv0_n16_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C5D0Ev,_ZTv0_n16_N8S21163C5D0Ev),
};
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C9__A1__8S21163C1[] = {
  ABISELECT(352,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZThn352_N8S21163C9D1Ev,_ZThn260_N8S21163C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
extern void ABISELECT(_ZThn352_N8S21163C9D0Ev,_ZThn260_N8S21163C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21163C9__A1__8S21163C1[] = {
  ABISELECT(-352,-260),
  ABISELECT(-352,-260),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
extern void _ZN9S21163C16D1Ev();
extern void _ZN9S21163C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21163C16__8S21163C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(32,16),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&_ZN9S21163C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21163C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21163C16D1Ev,_ZTv0_n12_N9S21163C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21163C16D0Ev,_ZTv0_n12_N9S21163C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21163C16__8S21163C1[] = {
  ABISELECT(48,40),
  ABISELECT(48,40),
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21163C16D1Ev,_ZTv0_n12_N9S21163C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21163C16D0Ev,_ZTv0_n12_N9S21163C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21163C16D1Ev,_ZTv0_n20_N9S21163C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S21163C16D1Ev,_ZThn16_N9S21163C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21163C16D0Ev,_ZTv0_n20_N9S21163C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S21163C16D0Ev,_ZThn16_N9S21163C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21163C6__9S21163C16__8S21163C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  ABISELECT(-80,-56),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21163C16D1Ev,_ZTv0_n20_N9S21163C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21163C16D0Ev,_ZTv0_n20_N9S21163C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21163C16D1Ev,_ZTvn12_n20_N9S21163C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21163C16D0Ev,_ZTvn12_n20_N9S21163C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C98S21163C6__9S21163C16__8S21163C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21163C16D1Ev,_ZTvn12_n20_N9S21163C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21163C16D0Ev,_ZTvn12_n20_N9S21163C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21163C16D1Ev,_ZTv0_n12_N9S21163C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21163C16D0Ev,_ZTv0_n12_N9S21163C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21163C16__8S21163C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21163C16D1Ev,_ZTv0_n12_N9S21163C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21163C16D0Ev,_ZTv0_n12_N9S21163C16D0Ev),
};
extern void _ZN8S21163C6D1Ev();
extern void _ZN8S21163C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C6__A1__8S21163C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-80,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&_ZN8S21163C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C6D0Ev,
};
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C98S21163C6__A2__8S21163C1[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21163C98S21163C6__A2__8S21163C1[] = {
  ABISELECT(64,40),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21163C6__A1__8S21163C1[] = {
  ABISELECT(80,56),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C9__8S21163C6__A1__8S21163C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__8S21163C6__A1__8S21163C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
static  VTT_ENTRY vtt_S21163C1[] = {
  {&(_ZTV8S21163C1[13]),  13,77},
  {&(_tg__ZTV8S21163C4__8S21163C1[9]),  9,11},
  {&(_tg__ZTV8S21163C5__8S21163C4__8S21163C1[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S21163C4__8S21163C1[3]),  3,5},
  {&(_tg__ZTV8S21163C98S21163C68S21163C5__8S21163C4__8S21163C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__8S21163C4__8S21163C1[3]),  3,5},
  {&(_tg__ZTV9S21163C108S21163C5__8S21163C4__8S21163C1[4]),  4,6},
  {&(_tg__ZTV8S21163C4__8S21163C1[9]),  9,11},
  {&(_ZTV8S21163C1[19]),  19,77},
  {&(_ZTV8S21163C1[24]),  24,77},
  {&(_ZTV8S21163C1[34]),  34,77},
  {&(_ZTV8S21163C1[50]),  50,77},
  {&(_ZTV8S21163C1[39]),  39,77},
  {&(_ZTV8S21163C1[55]),  55,77},
  {&(_ZTV8S21163C1[45]),  45,77},
  {&(_ZTV8S21163C1[13]),  13,77},
  {&(_ZTV8S21163C1[63]),  63,77},
  {&(_ZTV8S21163C1[70]),  70,77},
  {&(_ZTV8S21163C1[75]),  75,77},
  {&(_tg__ZTV8S21163C2__8S21163C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21163C2__8S21163C1[3]),  3,5},
  {&(_tg__ZTV8S21163C5__8S21163C1[7]),  7,9},
  {&(_tg__ZTV8S21163C68S21163C5__8S21163C1[4]),  4,6},
  {&(_tg__ZTV8S21163C98S21163C68S21163C5__8S21163C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21163C98S21163C68S21163C5__8S21163C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21163C68S21163C5__8S21163C1[3]),  3,5},
  {&(_tg__ZTV8S21163C9__8S21163C68S21163C5__8S21163C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__8S21163C68S21163C5__8S21163C1[3]),  3,5},
  {&(_tg__ZTV9S21163C108S21163C5__8S21163C1[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S21163C5__8S21163C1[3]),  3,5},
  {&(_tg__ZTV8S21163C98S21163C6__8S21163C5__8S21163C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__8S21163C5__8S21163C1[3]),  3,5},
  {&(_tg__ZTV9S21163C10__8S21163C5__8S21163C1[4]),  4,6},
  {&(_tg__ZTV8S21163C9__A1__8S21163C5__8S21163C1[4]),  4,6},
  {&(_tg__ZTV8S21163C9__A1__8S21163C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21163C9__A1__8S21163C1[3]),  3,5},
  {&(_tg__ZTV9S21163C16__8S21163C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21163C16__8S21163C1[3]),  3,5},
  {&(_tg__ZTV8S21163C6__9S21163C16__8S21163C1[5]),  5,7},
  {&(_tg__ZTV8S21163C98S21163C6__9S21163C16__8S21163C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21163C16__8S21163C1[3]),  3,5},
  {&(_tg__ZTV8S21163C6__A1__8S21163C1[4]),  4,6},
  {&(_tg__ZTV8S21163C98S21163C6__A2__8S21163C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21163C98S21163C6__A2__8S21163C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21163C6__A1__8S21163C1[3]),  3,5},
  {&(_tg__ZTV8S21163C9__8S21163C6__A1__8S21163C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__8S21163C6__A1__8S21163C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21163C1[];
extern  VTBL_ENTRY _ZTV8S21163C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C1[];
static VTBL_ENTRY alt_thunk_names282[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21163C16D0Ev,_ZTv0_n20_N9S21163C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21163C16D0Ev,_ZThn16_N9S21163C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21163C16D1Ev,_ZTv0_n20_N9S21163C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21163C16D1Ev,_ZThn16_N9S21163C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C5D0Ev,_ZThn104_N8S21163C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C5D0Ev,_ZThn76_N8S21163C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C5D1Ev,_ZThn104_N8S21163C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C5D1Ev,_ZThn76_N8S21163C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C6D0Ev,_ZThn104_N8S21163C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C6D0Ev,_ZThn76_N8S21163C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C6D1Ev,_ZThn104_N8S21163C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C6D1Ev,_ZThn76_N8S21163C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21163C9D0Ev,_ZThn260_N8S21163C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21163C9D0Ev,_ZThn92_N8S21163C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21163C9D1Ev,_ZThn260_N8S21163C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21163C9D1Ev,_ZThn92_N8S21163C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C2D0Ev,_ZTv0_n12_N8S21163C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21163C2D0Ev,_ZThn8_N8S21163C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C2D1Ev,_ZTv0_n12_N8S21163C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21163C2D1Ev,_ZThn8_N8S21163C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21163C4D0Ev,_ZThn260_N8S21163C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21163C4D0Ev,_ZThn232_N8S21163C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21163C4D1Ev,_ZThn260_N8S21163C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21163C4D1Ev,_ZThn232_N8S21163C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21163C4D0Ev,_ZTv0_n32_N8S21163C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21163C4D0Ev,_ZThn156_N8S21163C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21163C4D1Ev,_ZTv0_n32_N8S21163C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21163C4D1Ev,_ZThn156_N8S21163C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21163C4D0Ev,_ZTv0_n16_N8S21163C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S21163C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21163C4D1Ev,_ZTv0_n16_N8S21163C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S21163C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21163C1D0Ev,_ZTv0_n20_N8S21163C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S21163C1D0Ev,_ZThn288_N8S21163C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21163C1D1Ev,_ZTv0_n20_N8S21163C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S21163C1D1Ev,_ZThn288_N8S21163C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21163C1D0Ev,_ZTv0_n24_N8S21163C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S21163C1D0Ev,_ZThn272_N8S21163C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21163C1D1Ev,_ZTv0_n24_N8S21163C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S21163C1D1Ev,_ZThn272_N8S21163C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21163C1D0Ev,_ZTv0_n32_N8S21163C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21163C1D0Ev,_ZThn156_N8S21163C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21163C1D1Ev,_ZTv0_n32_N8S21163C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21163C1D1Ev,_ZThn156_N8S21163C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C1D0Ev,_ZTv0_n12_N8S21163C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21163C1D0Ev,_ZThn260_N8S21163C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21163C1D0Ev,_ZThn232_N8S21163C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21163C1D0Ev,_ZThn144_N8S21163C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C1D1Ev,_ZTv0_n12_N8S21163C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21163C1D1Ev,_ZThn260_N8S21163C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21163C1D1Ev,_ZThn232_N8S21163C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21163C1D1Ev,_ZThn144_N8S21163C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21163C1D0Ev,_ZTv0_n16_N8S21163C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21163C1D0Ev,_ZThn136_N8S21163C1D0Ev),
  (VTBL_ENTRY)_ZN8S21163C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21163C1D1Ev,_ZTv0_n16_N8S21163C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21163C1D1Ev,_ZThn136_N8S21163C1D1Ev),
  (VTBL_ENTRY)_ZN8S21163C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21163C1 = {  "S21163C1", // class name
  bases_S21163C1, 21,
  &(vtc_S21163C1[0]), // expected_vtbl_contents
  &(vtt_S21163C1[0]), // expected_vtt_contents
  ABISELECT(464,332), // object size
  NSPAIRA(_ZTI8S21163C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21163C1),77, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21163C1),47, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names282,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19622C4  : virtual S20760C5_nt {
  char s19622c4f0[2];
  virtual  ~S19622C4(); // _ZN8S19622C4D2Ev
  S19622C4(); // tgen
};
//SIG(-1 S19622C4) C1{ VBC2{ vd m FL} vd Fc[2]}


 S19622C4 ::~S19622C4(){ note_dtor("S19622C4", this);}
S19622C4 ::S19622C4(){ note_ctor("S19622C4", this);} // tgen

static void Test_S19622C4()
{
  extern Class_Descriptor cd_S19622C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19622C4, buf);
    S19622C4 *dp, &lv = *(dp=new (buf) S19622C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19622C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19622C4)");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(16,8), "S19622C4");
    check_field_offset(lv, s19622c4f0, ABISELECT(8,4), "S19622C4.s19622c4f0");
    test_class_info(&lv, &cd_S19622C4);
    dp->~S19622C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19622C4(Test_S19622C4, "S19622C4", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19622C4C1Ev();
extern void _ZN8S19622C4D2Ev();
Name_Map name_map_S19622C4[] = {
  NSPAIR(_ZN8S19622C4C1Ev),
  NSPAIR(_ZN8S19622C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S19622C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19622C4[];
extern void _ZN8S19622C4D1Ev();
extern void _ZN8S19622C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19622C4D1Ev,_ZTv0_n12_N8S19622C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C4D1Ev,_ZThn8_N8S19622C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C4D0Ev,_ZTv0_n12_N8S19622C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S19622C4D0Ev,_ZThn8_N8S19622C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19622C4[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C4[0]),
  (VTBL_ENTRY)&_ZN8S19622C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C4D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19622C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C4D1Ev,_ZTv0_n12_N8S19622C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C4D0Ev,_ZTv0_n12_N8S19622C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19622C4[];
static  VTT_ENTRY vtt_S19622C4[] = {
  {&(_ZTV8S19622C4[3]),  3,10},
  {&(_ZTV8S19622C4[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19622C4[];
extern  VTBL_ENTRY _ZTV8S19622C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C4[];
static VTBL_ENTRY alt_thunk_names283[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C4D0Ev,_ZTv0_n12_N8S19622C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19622C4D0Ev,_ZThn8_N8S19622C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C4D1Ev,_ZTv0_n12_N8S19622C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19622C4D1Ev,_ZThn8_N8S19622C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19622C4 = {  "S19622C4", // class name
  bases_S19622C4, 1,
  &(vtc_S19622C4[0]), // expected_vtbl_contents
  &(vtt_S19622C4[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19622C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19622C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19622C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names283,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19622C11  : virtual S20760C9 {
  virtual  ~S19622C11(); // _ZN9S19622C11D2Ev
  S19622C11(); // tgen
};
//SIG(-1 S19622C11) C1{ VBC2{ vd m FL} vd}


 S19622C11 ::~S19622C11(){ note_dtor("S19622C11", this);}
S19622C11 ::S19622C11(){ note_ctor("S19622C11", this);} // tgen

static void Test_S19622C11()
{
  extern Class_Descriptor cd_S19622C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19622C11, buf);
    S19622C11 *dp, &lv = *(dp=new (buf) S19622C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19622C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19622C11)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S19622C11");
    test_class_info(&lv, &cd_S19622C11);
    dp->~S19622C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19622C11(Test_S19622C11, "S19622C11", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S19622C11C1Ev();
extern void _ZN9S19622C11D2Ev();
Name_Map name_map_S19622C11[] = {
  NSPAIR(_ZN9S19622C11C1Ev),
  NSPAIR(_ZN9S19622C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S19622C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19622C11[];
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S19622C11D1Ev,_ZThn4_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S19622C11D0Ev,_ZThn4_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19622C11[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19622C11[];
static  VTT_ENTRY vtt_S19622C11[] = {
  {&(_ZTV9S19622C11[3]),  3,10},
  {&(_ZTV9S19622C11[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
static VTBL_ENTRY alt_thunk_names284[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19622C11D0Ev,_ZThn4_N9S19622C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19622C11D1Ev,_ZThn4_N9S19622C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19622C11 = {  "S19622C11", // class name
  bases_S19622C11, 1,
  &(vtc_S19622C11[0]), // expected_vtbl_contents
  &(vtt_S19622C11[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S19622C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19622C11),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19622C11),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names284,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19622C9  : S20760C9 , virtual S20760C13 , S19622C11 {
  ::S20760C13 s19622c9f0;
  ~S19622C9(); // tgen
  S19622C9(); // tgen
};
//SIG(-1 S19622C9) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S19622C9 ::~S19622C9(){ note_dtor("S19622C9", this);} // tgen
S19622C9 ::S19622C9(){ note_ctor("S19622C9", this);} // tgen

static void Test_S19622C9()
{
  extern Class_Descriptor cd_S19622C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S19622C9, buf);
    S19622C9 *dp, &lv = *(dp=new (buf) S19622C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S19622C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19622C9)");
    /*is_ambiguous_... S19622C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S19622C9");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S19622C9");
    check_base_class_offset(lv, (S20760C9*)(S19622C11*), ABISELECT(88,72), "S19622C9");
    check_base_class_offset(lv, (S19622C11*), ABISELECT(16,12), "S19622C9");
    check_field_offset(lv, s19622c9f0, ABISELECT(24,16), "S19622C9.s19622c9f0");
    test_class_info(&lv, &cd_S19622C9);
    dp->~S19622C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19622C9(Test_S19622C9, "S19622C9", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S19622C9C1Ev();
extern void _ZN8S19622C9D1Ev();
Name_Map name_map_S19622C9[] = {
  NSPAIR(_ZN8S19622C9C1Ev),
  NSPAIR(_ZN8S19622C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
static Base_Class bases_S19622C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19622C11,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19622C9[];
extern void _ZN8S19622C9D1Ev();
extern void _ZN8S19622C9D0Ev();
extern void ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn56_N8S19622C9D1Ev,_ZThn44_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn56_N8S19622C9D0Ev,_ZThn44_N8S19622C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn88_N8S19622C9D1Ev,_ZThn72_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn88_N8S19622C9D0Ev,_ZThn72_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19622C9[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&_ZN8S19622C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C9D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19622C9[];
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C11__8S19622C9[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn72_N9S19622C11D1Ev,_ZThn60_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn72_N9S19622C11D0Ev,_ZThn60_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C11__8S19622C9[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
static  VTT_ENTRY vtt_S19622C9[] = {
  {&(_ZTV8S19622C9[4]),  4,21},
  {&(_tg__ZTV9S19622C11__8S19622C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C11__8S19622C9[3]),  3,5},
  {&(_ZTV8S19622C9[14]),  14,21},
  {&(_ZTV8S19622C9[9]),  9,21},
  {&(_ZTV8S19622C9[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S19622C9[];
extern  VTBL_ENTRY _ZTV8S19622C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C9[];
static VTBL_ENTRY alt_thunk_names285[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19622C11D0Ev,_ZThn60_N9S19622C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19622C11D1Ev,_ZThn60_N9S19622C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19622C9D0Ev,_ZThn72_N8S19622C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19622C9D0Ev,_ZThn44_N8S19622C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19622C9D1Ev,_ZThn72_N8S19622C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19622C9D1Ev,_ZThn44_N8S19622C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19622C9 = {  "S19622C9", // class name
  bases_S19622C9, 4,
  &(vtc_S19622C9[0]), // expected_vtbl_contents
  &(vtt_S19622C9[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S19622C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19622C9),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19622C9),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names285,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19622C12  : S20760C13 , virtual S4228C37 , virtual S4228C27 {
  short s19622c12f0;
  ~S19622C12(); // tgen
  S19622C12(); // tgen
};
//SIG(-1 S19622C12) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S19622C12 ::~S19622C12(){ note_dtor("S19622C12", this);} // tgen
S19622C12 ::S19622C12(){ note_ctor("S19622C12", this);} // tgen

static void Test_S19622C12()
{
  extern Class_Descriptor cd_S19622C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S19622C12, buf);
    S19622C12 *dp, &lv = *(dp=new (buf) S19622C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S19622C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19622C12)");
    check_base_class_offset(lv, (S20760C13*), 0, "S19622C12");
    check_base_class_offset(lv, (S4228C37*), 0, "S19622C12");
    check_base_class_offset(lv, (S4228C27*), 0, "S19622C12");
    check_field_offset(lv, s19622c12f0, ABISELECT(32,28), "S19622C12.s19622c12f0");
    test_class_info(&lv, &cd_S19622C12);
    dp->~S19622C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19622C12(Test_S19622C12, "S19622C12", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN9S19622C12C1Ev();
extern void _ZN9S19622C12D1Ev();
Name_Map name_map_S19622C12[] = {
  NSPAIR(_ZN9S19622C12C1Ev),
  NSPAIR(_ZN9S19622C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S19622C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19622C12[];
extern void _ZN9S19622C12D1Ev();
extern void _ZN9S19622C12D0Ev();
static  VTBL_ENTRY vtc_S19622C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C12[0]),
  (VTBL_ENTRY)&_ZN9S19622C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C12D0Ev,
};
extern VTBL_ENTRY _ZTV9S19622C12[];
static  VTT_ENTRY vtt_S19622C12[] = {
  {&(_ZTV9S19622C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19622C12[];
extern  VTBL_ENTRY _ZTV9S19622C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C12[];
Class_Descriptor cd_S19622C12 = {  "S19622C12", // class name
  bases_S19622C12, 3,
  &(vtc_S19622C12[0]), // expected_vtbl_contents
  &(vtt_S19622C12[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI9S19622C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19622C12),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19622C12),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19622C8  : S19622C9 , S19622C12 , virtual S19622C11 {
  virtual  ~S19622C8(); // _ZN8S19622C8D2Ev
  S19622C8(); // tgen
};
//SIG(-1 S19622C8) C1{ BC2{ BC3{ vd m FL} VBC4{ vd m Fi[6]} BC5{ VBC3 vd} FC4} BC6{ BC4 VBC7{ m} VBC8{ m} Fs} VBC5 vd}


 S19622C8 ::~S19622C8(){ note_dtor("S19622C8", this);}
S19622C8 ::S19622C8(){ note_ctor("S19622C8", this);} // tgen

static void Test_S19622C8()
{
  extern Class_Descriptor cd_S19622C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,31)];
    init_test(&cd_S19622C8, buf);
    S19622C8 *dp, &lv = *(dp=new (buf) S19622C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,120), "sizeof(S19622C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19622C8)");
    /*is_ambiguous_... S19622C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C9*), 0, "S19622C8");
    check_base_class_offset(lv, (S20760C13*)(S19622C9*), ABISELECT(96,76), "S19622C8");
    check_base_class_offset(lv, (S20760C9*)(S19622C11*)(S19622C9*), ABISELECT(128,104), "S19622C8");
    /*is_ambiguous_... S19622C8::S19622C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C11*), ABISELECT(128,104), "S19622C8");
    check_base_class_offset(lv, (S19622C11*)(S19622C9*), ABISELECT(16,12), "S19622C8");
    check_base_class_offset(lv, (S19622C9*), 0, "S19622C8");
    check_base_class_offset(lv, (S20760C13*)(S19622C12*), ABISELECT(56,44), "S19622C8");
    check_base_class_offset(lv, (S4228C37*)(S19622C12*), 0, "S19622C8");
    check_base_class_offset(lv, (S4228C27*)(S19622C12*), 0, "S19622C8");
    check_base_class_offset(lv, (S19622C12*), ABISELECT(56,44), "S19622C8");
    /*is_ambiguous_... S19622C8::S19622C11 */ AMB_check_base_class_offset(lv, (S19622C11*), ABISELECT(144,116), "S19622C8");
    test_class_info(&lv, &cd_S19622C8);
    dp->~S19622C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19622C8(Test_S19622C8, "S19622C8", ABISELECT(152,120));

#else // __cplusplus

extern void _ZN8S19622C8C1Ev();
extern void _ZN8S19622C8D2Ev();
Name_Map name_map_S19622C8[] = {
  NSPAIR(_ZN8S19622C8C1Ev),
  NSPAIR(_ZN8S19622C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
extern Class_Descriptor cd_S19622C9;
extern VTBL_ENTRY _ZTI8S19622C9[];
extern  VTBL_ENTRY _ZTV8S19622C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19622C12;
extern VTBL_ENTRY _ZTI9S19622C12[];
extern  VTBL_ENTRY _ZTV9S19622C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C12[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
static Base_Class bases_S19622C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(96,76), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(128,104), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19622C11,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19622C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19622C12,    ABISELECT(56,44), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19622C11,    ABISELECT(144,116), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19622C8[];
extern void _ZN8S19622C8D1Ev();
extern void _ZN8S19622C8D0Ev();
extern void ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn144_N8S19622C8D1Ev,_ZThn116_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn144_N8S19622C8D0Ev,_ZThn116_N8S19622C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19622C8[] = {
  ABISELECT(144,116),
  0,
  0,
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&_ZN8S19622C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C8D0Ev,
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev),
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
  ABISELECT(-144,-116),
  ABISELECT(-16,-12),
  ABISELECT(-144,-116),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19622C8[];
extern void _ZN8S19622C9D1Ev();
extern void _ZN8S19622C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C9__8S19622C8[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&_ZN8S19622C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C9D0Ev,
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C9__8S19622C8[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C118S19622C9__8S19622C8[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C9__8S19622C8[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__8S19622C9__8S19622C8[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C9__8S19622C8[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void _ZN9S19622C12D1Ev();
extern void _ZN9S19622C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C12__8S19622C8[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C12[0]),
  (VTBL_ENTRY)&_ZN9S19622C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C12D0Ev,
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C8[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C11__A1__8S19622C8[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
static  VTT_ENTRY vtt_S19622C8[] = {
  {&(_ZTV8S19622C8[7]),  7,36},
  {&(_tg__ZTV8S19622C9__8S19622C8[4]),  4,6},
  {&(_tg__ZTV9S19622C118S19622C9__8S19622C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C118S19622C9__8S19622C8[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19622C9__8S19622C8[3]),  3,5},
  {&(_tg__ZTV9S19622C11__8S19622C9__8S19622C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C9__8S19622C8[3]),  3,5},
  {&(_tg__ZTV9S19622C12__8S19622C8[4]),  4,6},
  {&(_ZTV8S19622C8[23]),  23,36},
  {&(_ZTV8S19622C8[12]),  12,36},
  {&(_ZTV8S19622C8[28]),  28,36},
  {&(_ZTV8S19622C8[18]),  18,36},
  {&(_ZTV8S19622C8[34]),  34,36},
  {&(_tg__ZTV9S19622C11__A1__8S19622C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C11__A1__8S19622C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19622C8[];
extern  VTBL_ENTRY _ZTV8S19622C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C8[];
static VTBL_ENTRY alt_thunk_names286[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19622C8D0Ev,_ZThn116_N8S19622C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19622C8D1Ev,_ZThn116_N8S19622C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19622C8 = {  "S19622C8", // class name
  bases_S19622C8, 10,
  &(vtc_S19622C8[0]), // expected_vtbl_contents
  &(vtt_S19622C8[0]), // expected_vtt_contents
  ABISELECT(152,120), // object size
  NSPAIRA(_ZTI8S19622C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19622C8),36, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19622C8),15, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names286,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19622C7  : virtual S19622C8 , S4161C4_nt , S19115C12 {
  int s19622c7f0;
  virtual  ~S19622C7(); // _ZN8S19622C7D2Ev
  S19622C7(); // tgen
};
//SIG(-1 S19622C7) C1{ VBC2{ BC3{ BC4{ vd m FL} VBC5{ vd m Fi[6]} BC6{ VBC4 vd} FC5} BC7{ BC5 VBC8{ m} VBC9{ m} Fs} VBC6 vd} BC10{ m Fp} BC11{ m FC4[10]} vd Fi}


 S19622C7 ::~S19622C7(){ note_dtor("S19622C7", this);}
S19622C7 ::S19622C7(){ note_ctor("S19622C7", this);} // tgen

static void Test_S19622C7()
{
  extern Class_Descriptor cd_S19622C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,63)];
    init_test(&cd_S19622C7, buf);
    S19622C7 *dp, &lv = *(dp=new (buf) S19622C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,248), "sizeof(S19622C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19622C7)");
    /*is_ambiguous_... S19622C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C9*)(S19622C8*), ABISELECT(184,132), "S19622C7");
    check_base_class_offset(lv, (S20760C13*)(S19622C9*)(S19622C8*), ABISELECT(280,208), "S19622C7");
    check_base_class_offset(lv, (S20760C9*)(S19622C11*)(S19622C9*)(S19622C8*), ABISELECT(312,236), "S19622C7");
    /*is_ambiguous_... S19622C7::S19622C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C11*), ABISELECT(312,236), "S19622C7");
    check_base_class_offset(lv, (S19622C11*)(S19622C9*)(S19622C8*), ABISELECT(200,144), "S19622C7");
    check_base_class_offset(lv, (S19622C9*)(S19622C8*), ABISELECT(184,132), "S19622C7");
    check_base_class_offset(lv, (S20760C13*)(S19622C12*)(S19622C8*), ABISELECT(240,176), "S19622C7");
    check_base_class_offset(lv, (S4228C37*)(S19622C12*)(S19622C8*), 0, "S19622C7");
    check_base_class_offset(lv, (S4228C27*)(S19622C12*)(S19622C8*), 0, "S19622C7");
    check_base_class_offset(lv, (S19622C12*)(S19622C8*), ABISELECT(240,176), "S19622C7");
    /*is_ambiguous_... S19622C8::S19622C11 */ AMB_check_base_class_offset(lv, (S19622C11*)(S19622C8*), 0, "S19622C7");
    check_base_class_offset(lv, (S19622C8*), ABISELECT(184,132), "S19622C7");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(8,4), "S19622C7");
    check_base_class_offset(lv, (S19115C12*), ABISELECT(16,8), "S19622C7");
    check_field_offset(lv, s19622c7f0, ABISELECT(176,128), "S19622C7.s19622c7f0");
    test_class_info(&lv, &cd_S19622C7);
    dp->~S19622C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19622C7(Test_S19622C7, "S19622C7", ABISELECT(328,248));

#else // __cplusplus

extern void _ZN8S19622C7C1Ev();
extern void _ZN8S19622C7D2Ev();
Name_Map name_map_S19622C7[] = {
  NSPAIR(_ZN8S19622C7C1Ev),
  NSPAIR(_ZN8S19622C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
extern Class_Descriptor cd_S19622C9;
extern VTBL_ENTRY _ZTI8S19622C9[];
extern  VTBL_ENTRY _ZTV8S19622C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19622C12;
extern VTBL_ENTRY _ZTI9S19622C12[];
extern  VTBL_ENTRY _ZTV9S19622C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C12[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
extern Class_Descriptor cd_S19622C8;
extern VTBL_ENTRY _ZTI8S19622C8[];
extern  VTBL_ENTRY _ZTV8S19622C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C8[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
static Base_Class bases_S19622C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(184,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(280,208), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(312,236), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19622C11,    ABISELECT(200,144), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19622C9,    ABISELECT(184,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(240,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19622C12,    ABISELECT(240,176), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19622C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19622C8,    ABISELECT(184,132), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19115C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19622C7[];
extern void ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev)();
extern void _ZN8S19622C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev)();
extern void _ZN8S19622C7D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn184_N8S19622C7D1Ev,_ZThn132_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn184_N8S19622C7D0Ev,_ZThn132_N8S19622C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S19622C7D1Ev,_ZTvn12_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C7D0Ev,_ZTvn12_n32_N8S19622C7D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C7D1Ev,_ZTvn44_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C7D0Ev,_ZTvn44_n32_N8S19622C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn280_N8S19622C7D1Ev,_ZThn208_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn280_N8S19622C7D0Ev,_ZThn208_N8S19622C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S19622C7D1Ev,_ZThn236_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S19622C7D0Ev,_ZThn236_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19622C7[] = {
  0,
  0,
  0,
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev),
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C7D1Ev,_ZTvn12_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C7D0Ev,_ZTvn12_n32_N8S19622C7D0Ev),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C7D1Ev,_ZTvn44_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C7D0Ev,_ZTvn44_n32_N8S19622C7D0Ev),
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev),
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19622C7[];
extern void _ZN8S19622C8D1Ev();
extern void _ZN8S19622C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C7[] = {
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&_ZN8S19622C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C8D0Ev,
};
extern void _ZN8S19622C9D1Ev();
extern void _ZN8S19622C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C98S19622C8__8S19622C7[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&_ZN8S19622C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C9D0Ev,
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C7[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C118S19622C98S19622C8__8S19622C7[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C98S19622C8__8S19622C7[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__8S19622C98S19622C8__8S19622C7[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C98S19622C8__8S19622C7[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void _ZN9S19622C12D1Ev();
extern void _ZN9S19622C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C7[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C12[0]),
  (VTBL_ENTRY)&_ZN9S19622C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C8__8S19622C7[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C9__8S19622C8__8S19622C7[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C8__8S19622C7[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C12__8S19622C8__8S19622C7[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C8__8S19622C7[] = {
  ABISELECT(184,132),
  ABISELECT(312,236),
  ABISELECT(184,132),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev),
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C7[] = {
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn312_N9S19622C11D1Ev,_ZThn236_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn312_N9S19622C11D0Ev,_ZThn236_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C11__A1__8S19622C7[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
static  VTT_ENTRY vtt_S19622C7[] = {
  {&(_ZTV8S19622C7[9]),  9,42},
  {&(_ZTV8S19622C7[19]),  19,42},
  {&(_ZTV8S19622C7[35]),  35,42},
  {&(_ZTV8S19622C7[24]),  24,42},
  {&(_ZTV8S19622C7[40]),  40,42},
  {&(_ZTV8S19622C7[30]),  30,42},
  {&(_ZTV8S19622C7[9]),  9,42},
  {&(_tg__ZTV8S19622C8__8S19622C7[7]),  7,9},
  {&(_tg__ZTV8S19622C98S19622C8__8S19622C7[4]),  4,6},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C118S19622C98S19622C8__8S19622C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19622C98S19622C8__8S19622C7[3]),  3,5},
  {&(_tg__ZTV9S19622C11__8S19622C98S19622C8__8S19622C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C98S19622C8__8S19622C7[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C7[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19622C8__8S19622C7[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C9__8S19622C8__8S19622C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C8__8S19622C7[3]),  3,5},
  {&(_tg__ZTV9S19622C12__8S19622C8__8S19622C7[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C8__8S19622C7[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C11__A1__8S19622C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19622C7[];
extern  VTBL_ENTRY _ZTV8S19622C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C7[];
static VTBL_ENTRY alt_thunk_names287[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19622C11D0Ev,_ZThn236_N9S19622C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19622C11D1Ev,_ZThn236_N9S19622C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19622C7D0Ev,_ZThn236_N8S19622C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19622C7D0Ev,_ZThn208_N8S19622C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19622C7D1Ev,_ZThn236_N8S19622C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19622C7D1Ev,_ZThn208_N8S19622C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19622C7D0Ev,_ZThn132_N8S19622C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19622C7D1Ev,_ZThn132_N8S19622C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19622C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19622C7D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19622C7 = {  "S19622C7", // class name
  bases_S19622C7, 13,
  &(vtc_S19622C7[0]), // expected_vtbl_contents
  &(vtt_S19622C7[0]), // expected_vtt_contents
  ABISELECT(328,248), // object size
  NSPAIRA(_ZTI8S19622C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19622C7),42, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19622C7),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names287,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19622C6  : virtual S19622C7 {
  virtual  ~S19622C6(); // _ZN8S19622C6D2Ev
  S19622C6(); // tgen
};
//SIG(-1 S19622C6) C1{ VBC2{ VBC3{ BC4{ BC5{ vd m FL} VBC6{ vd m Fi[6]} BC7{ VBC5 vd} FC6} BC8{ BC6 VBC9{ m} VBC10{ m} Fs} VBC7 vd} BC11{ m Fp} BC12{ m FC5[10]} vd Fi} vd}


 S19622C6 ::~S19622C6(){ note_dtor("S19622C6", this);}
S19622C6 ::S19622C6(){ note_ctor("S19622C6", this);} // tgen

static void Test_S19622C6()
{
  extern Class_Descriptor cd_S19622C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,64)];
    init_test(&cd_S19622C6, buf);
    S19622C6 *dp, &lv = *(dp=new (buf) S19622C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,252), "sizeof(S19622C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19622C6)");
    /*is_ambiguous_... S19622C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C9*)(S19622C8*), ABISELECT(192,136), "S19622C6");
    check_base_class_offset(lv, (S20760C13*)(S19622C9*)(S19622C8*), ABISELECT(288,212), "S19622C6");
    check_base_class_offset(lv, (S20760C9*)(S19622C11*)(S19622C9*)(S19622C8*), ABISELECT(320,240), "S19622C6");
    /*is_ambiguous_... S19622C6::S19622C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C11*), ABISELECT(320,240), "S19622C6");
    check_base_class_offset(lv, (S19622C11*)(S19622C9*)(S19622C8*), ABISELECT(208,148), "S19622C6");
    check_base_class_offset(lv, (S19622C9*)(S19622C8*), ABISELECT(192,136), "S19622C6");
    check_base_class_offset(lv, (S20760C13*)(S19622C12*)(S19622C8*), ABISELECT(248,180), "S19622C6");
    check_base_class_offset(lv, (S4228C37*)(S19622C12*)(S19622C8*), 0, "S19622C6");
    check_base_class_offset(lv, (S4228C27*)(S19622C12*)(S19622C8*), 0, "S19622C6");
    check_base_class_offset(lv, (S19622C12*)(S19622C8*), ABISELECT(248,180), "S19622C6");
    /*is_ambiguous_... S19622C8::S19622C11 */ AMB_check_base_class_offset(lv, (S19622C11*)(S19622C8*), 0, "S19622C6");
    check_base_class_offset(lv, (S19622C8*)(S19622C7*), ABISELECT(192,136), "S19622C6");
    check_base_class_offset(lv, (S4161C4_nt*)(S19622C7*), ABISELECT(16,8), "S19622C6");
    check_base_class_offset(lv, (S19115C12*)(S19622C7*), ABISELECT(24,12), "S19622C6");
    check_base_class_offset(lv, (S19622C7*), ABISELECT(8,4), "S19622C6");
    test_class_info(&lv, &cd_S19622C6);
    dp->~S19622C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19622C6(Test_S19622C6, "S19622C6", ABISELECT(336,252));

#else // __cplusplus

extern void _ZN8S19622C6C1Ev();
extern void _ZN8S19622C6D2Ev();
Name_Map name_map_S19622C6[] = {
  NSPAIR(_ZN8S19622C6C1Ev),
  NSPAIR(_ZN8S19622C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
extern Class_Descriptor cd_S19622C9;
extern VTBL_ENTRY _ZTI8S19622C9[];
extern  VTBL_ENTRY _ZTV8S19622C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19622C12;
extern VTBL_ENTRY _ZTI9S19622C12[];
extern  VTBL_ENTRY _ZTV9S19622C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C12[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
extern Class_Descriptor cd_S19622C8;
extern VTBL_ENTRY _ZTI8S19622C8[];
extern  VTBL_ENTRY _ZTV8S19622C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C8[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S19622C7;
extern VTBL_ENTRY _ZTI8S19622C7[];
extern  VTBL_ENTRY _ZTV8S19622C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C7[];
static Base_Class bases_S19622C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(192,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(288,212), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(320,240), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19622C11,    ABISELECT(208,148), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19622C9,    ABISELECT(192,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(248,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19622C12,    ABISELECT(248,180), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19622C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19622C8,    ABISELECT(192,136), //bcp->offset
    23, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19115C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19622C7,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19622C6[];
extern void ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev)();
extern void _ZN8S19622C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev)();
extern void _ZN8S19622C6D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S19622C6D1Ev,_ZThn4_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S19622C6D0Ev,_ZThn4_N8S19622C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C6D1Ev,_ZTv0_n32_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S19622C6D1Ev,_ZThn136_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C6D0Ev,_ZTv0_n32_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S19622C6D0Ev,_ZThn136_N8S19622C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S19622C6D1Ev,_ZTvn12_n32_N8S19622C6D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C6D0Ev,_ZTvn12_n32_N8S19622C6D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C6D1Ev,_ZTvn44_n32_N8S19622C6D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C6D0Ev,_ZTvn44_n32_N8S19622C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn288_N8S19622C6D1Ev,_ZThn212_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn288_N8S19622C6D0Ev,_ZThn212_N8S19622C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn320_N8S19622C6D1Ev,_ZThn240_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn320_N8S19622C6D0Ev,_ZThn240_N8S19622C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19622C6[] = {
  0,
  0,
  0,
  ABISELECT(288,212),
  ABISELECT(192,136),
  ABISELECT(8,4),
  0,
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-8,-4),
  ABISELECT(312,236),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C6D1Ev,_ZTv0_n32_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C6D0Ev,_ZTv0_n32_N8S19622C6D0Ev),
  ABISELECT(112,92),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C6D1Ev,_ZTvn12_n32_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C6D0Ev,_ZTvn12_n32_N8S19622C6D0Ev),
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C6D1Ev,_ZTvn44_n32_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C6D0Ev,_ZTvn44_n32_N8S19622C6D0Ev),
  ABISELECT(-288,-212),
  ABISELECT(-288,-212),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev),
  ABISELECT(-320,-240),
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19622C6[];
extern void ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev)();
extern void _ZN8S19622C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev)();
extern void _ZN8S19622C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C7__8S19622C6[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn184_N8S19622C7D1Ev,_ZThn132_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn184_N8S19622C7D0Ev,_ZThn132_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C7__8S19622C6[] = {
  ABISELECT(-184,-132),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn280_N8S19622C7D1Ev,_ZThn208_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn280_N8S19622C7D0Ev,_ZThn208_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C7__8S19622C6[] = {
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19622C7D1Ev,_ZTvn12_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C7D0Ev,_ZTvn12_n32_N8S19622C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C7__8S19622C6[] = {
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C7D1Ev,_ZTvn12_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C7D0Ev,_ZTvn12_n32_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S19622C7D1Ev,_ZThn236_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S19622C7D0Ev,_ZThn236_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C7__8S19622C6[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19622C7D1Ev,_ZTvn44_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C7D0Ev,_ZTvn44_n32_N8S19622C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C7__8S19622C6[] = {
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C7D1Ev,_ZTvn44_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C7D0Ev,_ZTvn44_n32_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C7__8S19622C6[] = {
  ABISELECT(8,4),
  ABISELECT(320,240),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev),
};
extern void _ZN8S19622C8D1Ev();
extern void _ZN8S19622C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C6[] = {
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&_ZN8S19622C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C8D0Ev,
};
extern void _ZN8S19622C9D1Ev();
extern void _ZN8S19622C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C98S19622C8__8S19622C6[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&_ZN8S19622C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C9D0Ev,
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C6[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C118S19622C98S19622C8__8S19622C6[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C98S19622C8__8S19622C6[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__8S19622C98S19622C8__8S19622C6[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C98S19622C8__8S19622C6[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void _ZN9S19622C12D1Ev();
extern void _ZN9S19622C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C6[] = {
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C12[0]),
  (VTBL_ENTRY)&_ZN9S19622C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C8__8S19622C6[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C9__8S19622C8__8S19622C6[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C8__8S19622C6[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C12__8S19622C8__8S19622C6[] = {
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C8__8S19622C6[] = {
  ABISELECT(192,136),
  ABISELECT(320,240),
  ABISELECT(192,136),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev),
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C6[] = {
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn320_N9S19622C11D1Ev,_ZThn240_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn320_N9S19622C11D0Ev,_ZThn240_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C11__A1__8S19622C6[] = {
  ABISELECT(-320,-240),
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
static  VTT_ENTRY vtt_S19622C6[] = {
  {&(_ZTV8S19622C6[10]),  10,54},
  {&(_ZTV8S19622C6[21]),  21,54},
  {&(_ZTV8S19622C6[31]),  31,54},
  {&(_ZTV8S19622C6[47]),  47,54},
  {&(_ZTV8S19622C6[36]),  36,54},
  {&(_ZTV8S19622C6[52]),  52,54},
  {&(_ZTV8S19622C6[42]),  42,54},
  {&(_ZTV8S19622C6[10]),  10,54},
  {&(_tg__ZTV8S19622C7__8S19622C6[9]),  9,11},
  {&(_tg__ZTV8S19622C8__8S19622C7__8S19622C6[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19622C7__8S19622C6[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C7__8S19622C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C7__8S19622C6[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C7__8S19622C6[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C7__8S19622C6[4]),  4,6},
  {&(_tg__ZTV8S19622C8__8S19622C6[7]),  7,9},
  {&(_tg__ZTV8S19622C98S19622C8__8S19622C6[4]),  4,6},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C118S19622C98S19622C8__8S19622C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19622C98S19622C8__8S19622C6[3]),  3,5},
  {&(_tg__ZTV9S19622C11__8S19622C98S19622C8__8S19622C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C98S19622C8__8S19622C6[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C6[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19622C8__8S19622C6[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C9__8S19622C8__8S19622C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C8__8S19622C6[3]),  3,5},
  {&(_tg__ZTV9S19622C12__8S19622C8__8S19622C6[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C8__8S19622C6[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C11__A1__8S19622C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19622C6[];
extern  VTBL_ENTRY _ZTV8S19622C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C6[];
static VTBL_ENTRY alt_thunk_names288[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19622C11D0Ev,_ZThn240_N9S19622C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19622C11D1Ev,_ZThn240_N9S19622C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19622C7D0Ev,_ZThn236_N8S19622C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19622C7D0Ev,_ZThn208_N8S19622C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19622C7D1Ev,_ZThn236_N8S19622C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19622C7D1Ev,_ZThn208_N8S19622C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19622C7D0Ev,_ZThn132_N8S19622C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19622C7D1Ev,_ZThn132_N8S19622C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19622C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19622C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19622C6D0Ev,_ZThn240_N8S19622C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19622C6D0Ev,_ZThn212_N8S19622C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19622C6D1Ev,_ZThn240_N8S19622C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19622C6D1Ev,_ZThn212_N8S19622C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C6D0Ev,_ZTv0_n32_N8S19622C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19622C6D0Ev,_ZThn136_N8S19622C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C6D1Ev,_ZTv0_n32_N8S19622C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19622C6D1Ev,_ZThn136_N8S19622C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19622C6D0Ev,_ZThn4_N8S19622C6D0Ev),
  (VTBL_ENTRY)_ZN8S19622C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19622C6D1Ev,_ZThn4_N8S19622C6D1Ev),
  (VTBL_ENTRY)_ZN8S19622C6D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19622C6 = {  "S19622C6", // class name
  bases_S19622C6, 14,
  &(vtc_S19622C6[0]), // expected_vtbl_contents
  &(vtt_S19622C6[0]), // expected_vtt_contents
  ABISELECT(336,252), // object size
  NSPAIRA(_ZTI8S19622C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19622C6),54, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19622C6),30, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names288,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19622C2  : S20760C9 , S19622C4 , virtual S19622C6 {
  ~S19622C2(); // tgen
  S19622C2(); // tgen
};
//SIG(-1 S19622C2) C1{ BC2{ vd m FL} BC3{ VBC4{ vd m FL} vd Fc[2]} VBC5{ VBC6{ VBC7{ BC8{ BC2 VBC9{ vd m Fi[6]} BC10{ VBC2 vd} FC9} BC11{ BC9 VBC12{ m} VBC13{ m} Fs} VBC10 vd} BC14{ m Fp} BC15{ m FC2[10]} vd Fi} vd}}


S19622C2 ::~S19622C2(){ note_dtor("S19622C2", this);} // tgen
S19622C2 ::S19622C2(){ note_ctor("S19622C2", this);} // tgen

static void Test_S19622C2()
{
  extern Class_Descriptor cd_S19622C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,72)];
    init_test(&cd_S19622C2, buf);
    S19622C2 *dp, &lv = *(dp=new (buf) S19622C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,284), "sizeof(S19622C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19622C2)");
    /*is_ambiguous_... S19622C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S19622C2");
    check_base_class_offset(lv, (S20760C5_nt*)(S19622C4*), ABISELECT(32,20), "S19622C2");
    check_base_class_offset(lv, (S19622C4*), ABISELECT(16,12), "S19622C2");
    /*is_ambiguous_... S19622C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C9*)(S19622C8*), ABISELECT(240,168), "S19622C2");
    check_base_class_offset(lv, (S20760C13*)(S19622C9*)(S19622C8*), ABISELECT(336,244), "S19622C2");
    check_base_class_offset(lv, (S20760C9*)(S19622C11*)(S19622C9*)(S19622C8*), ABISELECT(368,272), "S19622C2");
    /*is_ambiguous_... S19622C2::S19622C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C11*), ABISELECT(368,272), "S19622C2");
    check_base_class_offset(lv, (S19622C11*)(S19622C9*)(S19622C8*), ABISELECT(256,180), "S19622C2");
    check_base_class_offset(lv, (S19622C9*)(S19622C8*), ABISELECT(240,168), "S19622C2");
    check_base_class_offset(lv, (S20760C13*)(S19622C12*)(S19622C8*), ABISELECT(296,212), "S19622C2");
    check_base_class_offset(lv, (S4228C37*)(S19622C12*)(S19622C8*), 0, "S19622C2");
    check_base_class_offset(lv, (S4228C27*)(S19622C12*)(S19622C8*), 0, "S19622C2");
    check_base_class_offset(lv, (S19622C12*)(S19622C8*), ABISELECT(296,212), "S19622C2");
    /*is_ambiguous_... S19622C8::S19622C11 */ AMB_check_base_class_offset(lv, (S19622C11*)(S19622C8*), ABISELECT(48,32), "S19622C2");
    check_base_class_offset(lv, (S19622C8*)(S19622C7*), ABISELECT(240,168), "S19622C2");
    check_base_class_offset(lv, (S4161C4_nt*)(S19622C7*), ABISELECT(64,40), "S19622C2");
    check_base_class_offset(lv, (S19115C12*)(S19622C7*), ABISELECT(72,44), "S19622C2");
    check_base_class_offset(lv, (S19622C7*)(S19622C6*), ABISELECT(56,36), "S19622C2");
    check_base_class_offset(lv, (S19622C6*), ABISELECT(48,32), "S19622C2");
    test_class_info(&lv, &cd_S19622C2);
    dp->~S19622C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19622C2(Test_S19622C2, "S19622C2", ABISELECT(384,284));

#else // __cplusplus

extern void _ZN8S19622C2C1Ev();
extern void _ZN8S19622C2D1Ev();
Name_Map name_map_S19622C2[] = {
  NSPAIR(_ZN8S19622C2C1Ev),
  NSPAIR(_ZN8S19622C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S19622C4;
extern VTBL_ENTRY _ZTI8S19622C4[];
extern  VTBL_ENTRY _ZTV8S19622C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
extern Class_Descriptor cd_S19622C9;
extern VTBL_ENTRY _ZTI8S19622C9[];
extern  VTBL_ENTRY _ZTV8S19622C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19622C12;
extern VTBL_ENTRY _ZTI9S19622C12[];
extern  VTBL_ENTRY _ZTV9S19622C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C12[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
extern Class_Descriptor cd_S19622C8;
extern VTBL_ENTRY _ZTI8S19622C8[];
extern  VTBL_ENTRY _ZTV8S19622C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C8[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S19622C7;
extern VTBL_ENTRY _ZTI8S19622C7[];
extern  VTBL_ENTRY _ZTV8S19622C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C7[];
extern Class_Descriptor cd_S19622C6;
extern VTBL_ENTRY _ZTI8S19622C6[];
extern  VTBL_ENTRY _ZTV8S19622C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C6[];
static Base_Class bases_S19622C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C5_nt,    ABISELECT(32,20), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19622C4,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(240,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(336,244), //bcp->offset
    67, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(368,272), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19622C11,    ABISELECT(256,180), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19622C9,    ABISELECT(240,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(296,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19622C12,    ABISELECT(296,212), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19622C11,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19622C8,    ABISELECT(240,168), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19115C12,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19622C7,    ABISELECT(56,36), //bcp->offset
    35, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19622C6,    ABISELECT(48,32), //bcp->offset
    23, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19622C2[];
extern void _ZN8S19622C2D1Ev();
extern void _ZN8S19622C2D0Ev();
extern void ABISELECT(_ZThn16_N8S19622C2D1Ev,_ZThn12_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C2D0Ev,_ZThn12_N8S19622C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S19622C2D1Ev,_ZThn20_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S19622C2D0Ev,_ZThn20_N8S19622C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19622C2D1Ev,_ZThn32_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19622C2D0Ev,_ZThn32_N8S19622C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S19622C2D1Ev,_ZThn36_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn56_N8S19622C2D0Ev,_ZThn36_N8S19622C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C2D1Ev,_ZTv0_n32_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn240_N8S19622C2D1Ev,_ZThn168_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C2D0Ev,_ZTv0_n32_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn240_N8S19622C2D0Ev,_ZThn168_N8S19622C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S19622C2D1Ev,_ZTvn12_n32_N8S19622C2D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C2D0Ev,_ZTvn12_n32_N8S19622C2D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C2D1Ev,_ZTvn44_n32_N8S19622C2D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C2D0Ev,_ZTvn44_n32_N8S19622C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S19622C2D1Ev,_ZThn244_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S19622C2D0Ev,_ZThn244_N8S19622C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn368_N8S19622C2D1Ev,_ZThn272_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn368_N8S19622C2D0Ev,_ZThn272_N8S19622C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19622C2[] = {
  ABISELECT(48,32),
  0,
  0,
  ABISELECT(368,272),
  ABISELECT(336,244),
  ABISELECT(240,168),
  ABISELECT(56,36),
  ABISELECT(48,32),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&_ZN8S19622C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C2D0Ev,
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C2D1Ev,_ZThn12_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C2D0Ev,_ZThn12_N8S19622C2D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev),
  0,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(288,212),
  ABISELECT(192,136),
  ABISELECT(8,4),
  ABISELECT(-48,-32),
  ABISELECT(320,240),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev),
  ABISELECT(-8,-4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-56,-36),
  ABISELECT(312,236),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev),
  ABISELECT(-240,-168),
  ABISELECT(-192,-136),
  ABISELECT(-240,-168),
  ABISELECT(-240,-168),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C2D1Ev,_ZTv0_n32_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C2D0Ev,_ZTv0_n32_N8S19622C2D0Ev),
  ABISELECT(112,92),
  ABISELECT(-256,-180),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C2D1Ev,_ZTvn12_n32_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C2D0Ev,_ZTvn12_n32_N8S19622C2D0Ev),
  ABISELECT(-296,-212),
  ABISELECT(-296,-212),
  ABISELECT(-296,-212),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C2D1Ev,_ZTvn44_n32_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C2D0Ev,_ZTvn44_n32_N8S19622C2D0Ev),
  ABISELECT(-336,-244),
  ABISELECT(-336,-244),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev),
  ABISELECT(-368,-272),
  ABISELECT(-368,-272),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19622C2[];
extern void _ZN8S19622C4D1Ev();
extern void _ZN8S19622C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C4__8S19622C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C4[0]),
  (VTBL_ENTRY)&_ZN8S19622C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19622C4D1Ev,_ZTv0_n12_N8S19622C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C4D1Ev,_ZThn8_N8S19622C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C4D0Ev,_ZTv0_n12_N8S19622C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S19622C4D0Ev,_ZThn8_N8S19622C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S19622C4__8S19622C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19622C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C4D1Ev,_ZTv0_n12_N8S19622C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C4D0Ev,_ZTv0_n12_N8S19622C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev)();
extern void _ZN8S19622C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev)();
extern void _ZN8S19622C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C6__8S19622C2[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(288,212),
  ABISELECT(192,136),
  ABISELECT(8,4),
  0,
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S19622C6D1Ev,_ZThn4_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S19622C6D0Ev,_ZThn4_N8S19622C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C7__8S19622C6__8S19622C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-8,-4),
  ABISELECT(312,236),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19622C6D1Ev,_ZTv0_n32_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S19622C6D1Ev,_ZThn136_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C6D0Ev,_ZTv0_n32_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S19622C6D0Ev,_ZThn136_N8S19622C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C6__8S19622C2[] = {
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-240,-168),
  ABISELECT(-240,-168),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C6D1Ev,_ZTv0_n32_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C6D0Ev,_ZTv0_n32_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn288_N8S19622C6D1Ev,_ZThn212_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn288_N8S19622C6D0Ev,_ZThn212_N8S19622C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C6__8S19622C2[] = {
  ABISELECT(-288,-212),
  ABISELECT(-288,-212),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19622C6D1Ev,_ZTvn12_n32_N8S19622C6D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C6D0Ev,_ZTvn12_n32_N8S19622C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C6__8S19622C2[] = {
  ABISELECT(112,92),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C6D1Ev,_ZTvn12_n32_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C6D0Ev,_ZTvn12_n32_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn320_N8S19622C6D1Ev,_ZThn240_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn320_N8S19622C6D0Ev,_ZThn240_N8S19622C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C6__8S19622C2[] = {
  ABISELECT(-320,-240),
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19622C6D1Ev,_ZTvn44_n32_N8S19622C6D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C6D0Ev,_ZTvn44_n32_N8S19622C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C6__8S19622C2[] = {
  ABISELECT(-296,-212),
  ABISELECT(-296,-212),
  ABISELECT(-248,-180),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C6D1Ev,_ZTvn44_n32_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C6D0Ev,_ZTvn44_n32_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev)();
extern void _ZN8S19622C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev)();
extern void _ZN8S19622C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C7__8S19622C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn184_N8S19622C7D1Ev,_ZThn132_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn184_N8S19622C7D0Ev,_ZThn132_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C7__8S19622C2[] = {
  ABISELECT(-184,-132),
  ABISELECT(-192,-136),
  ABISELECT(-240,-168),
  ABISELECT(-240,-168),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn280_N8S19622C7D1Ev,_ZThn208_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn280_N8S19622C7D0Ev,_ZThn208_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C7__8S19622C2[] = {
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19622C7D1Ev,_ZTvn12_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C7D0Ev,_ZTvn12_n32_N8S19622C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C7__8S19622C2[] = {
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C7D1Ev,_ZTvn12_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C7D0Ev,_ZTvn12_n32_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S19622C7D1Ev,_ZThn236_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S19622C7D0Ev,_ZThn236_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C7__8S19622C2[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19622C7D1Ev,_ZTvn44_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C7D0Ev,_ZTvn44_n32_N8S19622C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C7__8S19622C2[] = {
  ABISELECT(-296,-212),
  ABISELECT(-296,-212),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C7D1Ev,_ZTvn44_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C7D0Ev,_ZTvn44_n32_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C7__8S19622C2[] = {
  ABISELECT(8,4),
  ABISELECT(320,240),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev),
};
extern void _ZN8S19622C8D1Ev();
extern void _ZN8S19622C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C2[] = {
  ABISELECT(-192,-136),
  ABISELECT(-240,-168),
  ABISELECT(-240,-168),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&_ZN8S19622C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C8D0Ev,
};
extern void _ZN8S19622C9D1Ev();
extern void _ZN8S19622C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C98S19622C8__8S19622C2[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&_ZN8S19622C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C9D0Ev,
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C2[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C118S19622C98S19622C8__8S19622C2[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C98S19622C8__8S19622C2[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__8S19622C98S19622C8__8S19622C2[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C98S19622C8__8S19622C2[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void _ZN9S19622C12D1Ev();
extern void _ZN9S19622C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C2[] = {
  ABISELECT(-296,-212),
  ABISELECT(-296,-212),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C12[0]),
  (VTBL_ENTRY)&_ZN9S19622C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C8__8S19622C2[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C9__8S19622C8__8S19622C2[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C8__8S19622C2[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C12__8S19622C8__8S19622C2[] = {
  ABISELECT(-296,-212),
  ABISELECT(-296,-212),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C8__8S19622C2[] = {
  ABISELECT(192,136),
  ABISELECT(320,240),
  ABISELECT(192,136),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev),
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C2[] = {
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn320_N9S19622C11D1Ev,_ZThn240_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn320_N9S19622C11D0Ev,_ZThn240_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C11__A1__8S19622C2[] = {
  ABISELECT(-320,-240),
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
static  VTT_ENTRY vtt_S19622C2[] = {
  {&(_ZTV8S19622C2[11]),  11,77},
  {&(_tg__ZTV8S19622C4__8S19622C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S19622C4__8S19622C2[3]),  3,5},
  {&(_ZTV8S19622C2[16]),  16,77},
  {&(_ZTV8S19622C2[21]),  21,77},
  {&(_ZTV8S19622C2[33]),  33,77},
  {&(_ZTV8S19622C2[44]),  44,77},
  {&(_ZTV8S19622C2[54]),  54,77},
  {&(_ZTV8S19622C2[70]),  70,77},
  {&(_ZTV8S19622C2[59]),  59,77},
  {&(_ZTV8S19622C2[75]),  75,77},
  {&(_ZTV8S19622C2[65]),  65,77},
  {&(_ZTV8S19622C2[33]),  33,77},
  {&(_tg__ZTV8S19622C6__8S19622C2[10]),  10,12},
  {&(_tg__ZTV8S19622C7__8S19622C6__8S19622C2[9]),  9,11},
  {&(_tg__ZTV8S19622C8__8S19622C6__8S19622C2[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19622C6__8S19622C2[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C6__8S19622C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C6__8S19622C2[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C6__8S19622C2[4]),  4,6},
  {&(_tg__ZTV8S19622C6__8S19622C2[10]),  10,12},
  {&(_tg__ZTV8S19622C7__8S19622C2[9]),  9,11},
  {&(_tg__ZTV8S19622C8__8S19622C7__8S19622C2[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19622C7__8S19622C2[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C7__8S19622C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C7__8S19622C2[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C7__8S19622C2[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C7__8S19622C2[4]),  4,6},
  {&(_tg__ZTV8S19622C8__8S19622C2[7]),  7,9},
  {&(_tg__ZTV8S19622C98S19622C8__8S19622C2[4]),  4,6},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C118S19622C98S19622C8__8S19622C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19622C98S19622C8__8S19622C2[3]),  3,5},
  {&(_tg__ZTV9S19622C11__8S19622C98S19622C8__8S19622C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C98S19622C8__8S19622C2[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C2[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19622C8__8S19622C2[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C9__8S19622C8__8S19622C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C8__8S19622C2[3]),  3,5},
  {&(_tg__ZTV9S19622C12__8S19622C8__8S19622C2[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C8__8S19622C2[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C11__A1__8S19622C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19622C2[];
extern  VTBL_ENTRY _ZTV8S19622C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C2[];
static VTBL_ENTRY alt_thunk_names289[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19622C11D0Ev,_ZThn240_N9S19622C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19622C11D1Ev,_ZThn240_N9S19622C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19622C7D0Ev,_ZThn236_N8S19622C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19622C7D0Ev,_ZThn208_N8S19622C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19622C7D1Ev,_ZThn236_N8S19622C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19622C7D1Ev,_ZThn208_N8S19622C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19622C7D0Ev,_ZThn132_N8S19622C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19622C7D1Ev,_ZThn132_N8S19622C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19622C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19622C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19622C6D0Ev,_ZThn240_N8S19622C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19622C6D0Ev,_ZThn212_N8S19622C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19622C6D1Ev,_ZThn240_N8S19622C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19622C6D1Ev,_ZThn212_N8S19622C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C6D0Ev,_ZTv0_n32_N8S19622C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19622C6D0Ev,_ZThn136_N8S19622C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C6D1Ev,_ZTv0_n32_N8S19622C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19622C6D1Ev,_ZThn136_N8S19622C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19622C6D0Ev,_ZThn4_N8S19622C6D0Ev),
  (VTBL_ENTRY)_ZN8S19622C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19622C6D1Ev,_ZThn4_N8S19622C6D1Ev),
  (VTBL_ENTRY)_ZN8S19622C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C4D0Ev,_ZTv0_n12_N8S19622C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19622C4D0Ev,_ZThn8_N8S19622C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C4D1Ev,_ZTv0_n12_N8S19622C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19622C4D1Ev,_ZThn8_N8S19622C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C2D0Ev,_ZTv0_n32_N8S19622C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19622C2D0Ev,_ZThn168_N8S19622C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C2D1Ev,_ZTv0_n32_N8S19622C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19622C2D1Ev,_ZThn168_N8S19622C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19622C2D0Ev,_ZThn36_N8S19622C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19622C2D0Ev,_ZThn32_N8S19622C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19622C2D1Ev,_ZThn36_N8S19622C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19622C2D1Ev,_ZThn32_N8S19622C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19622C2D0Ev,_ZThn272_N8S19622C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19622C2D0Ev,_ZThn244_N8S19622C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19622C2D0Ev,_ZThn20_N8S19622C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19622C2D1Ev,_ZThn272_N8S19622C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19622C2D1Ev,_ZThn244_N8S19622C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19622C2D1Ev,_ZThn20_N8S19622C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19622C2 = {  "S19622C2", // class name
  bases_S19622C2, 18,
  &(vtc_S19622C2[0]), // expected_vtbl_contents
  &(vtt_S19622C2[0]), // expected_vtt_contents
  ABISELECT(384,284), // object size
  NSPAIRA(_ZTI8S19622C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19622C2),77, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19622C2),43, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names289,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19622C1  : virtual S19622C2 {
  void *s19622c1f0;
  ~S19622C1(); // tgen
  S19622C1(); // tgen
};
//SIG(1 S19622C1) C1{ VBC2{ BC3{ vd m FL} BC4{ VBC5{ vd m FL} vd Fc[2]} VBC6{ VBC7{ VBC8{ BC9{ BC3 VBC10{ vd m Fi[6]} BC11{ VBC3 vd} FC10} BC12{ BC10 VBC13{ m} VBC14{ m} Fs} VBC11 vd} BC15{ m Fp} BC16{ m FC3[10]} vd Fi} vd}} Fp}


S19622C1 ::~S19622C1(){ note_dtor("S19622C1", this);} // tgen
S19622C1 ::S19622C1(){ note_ctor("S19622C1", this);} // tgen

static void Test_S19622C1()
{
  extern Class_Descriptor cd_S19622C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,73)];
    init_test(&cd_S19622C1, buf);
    S19622C1 *dp, &lv = *(dp=new (buf) S19622C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,288), "sizeof(S19622C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19622C1)");
    /*is_ambiguous_... S19622C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C2*), ABISELECT(16,8), "S19622C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S19622C4*)(S19622C2*), ABISELECT(48,28), "S19622C1");
    check_base_class_offset(lv, (S19622C4*)(S19622C2*), ABISELECT(32,20), "S19622C1");
    /*is_ambiguous_... S19622C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C9*)(S19622C8*), ABISELECT(248,172), "S19622C1");
    check_base_class_offset(lv, (S20760C13*)(S19622C9*)(S19622C8*), ABISELECT(344,248), "S19622C1");
    check_base_class_offset(lv, (S20760C9*)(S19622C11*)(S19622C9*)(S19622C8*), ABISELECT(376,276), "S19622C1");
    /*is_ambiguous_... S19622C1::S19622C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C11*), ABISELECT(376,276), "S19622C1");
    check_base_class_offset(lv, (S19622C11*)(S19622C9*)(S19622C8*), ABISELECT(264,184), "S19622C1");
    check_base_class_offset(lv, (S19622C9*)(S19622C8*), ABISELECT(248,172), "S19622C1");
    check_base_class_offset(lv, (S20760C13*)(S19622C12*)(S19622C8*), ABISELECT(304,216), "S19622C1");
    check_base_class_offset(lv, (S4228C37*)(S19622C12*)(S19622C8*), 0, "S19622C1");
    check_base_class_offset(lv, (S4228C27*)(S19622C12*)(S19622C8*), 0, "S19622C1");
    check_base_class_offset(lv, (S19622C12*)(S19622C8*), ABISELECT(304,216), "S19622C1");
    /*is_ambiguous_... S19622C8::S19622C11 */ AMB_check_base_class_offset(lv, (S19622C11*)(S19622C8*), 0, "S19622C1");
    check_base_class_offset(lv, (S19622C8*)(S19622C7*), ABISELECT(248,172), "S19622C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S19622C7*), ABISELECT(72,44), "S19622C1");
    check_base_class_offset(lv, (S19115C12*)(S19622C7*), ABISELECT(80,48), "S19622C1");
    check_base_class_offset(lv, (S19622C7*)(S19622C6*), ABISELECT(64,40), "S19622C1");
    check_base_class_offset(lv, (S19622C6*)(S19622C2*), 0, "S19622C1");
    check_base_class_offset(lv, (S19622C2*), ABISELECT(16,8), "S19622C1");
    check_field_offset(lv, s19622c1f0, ABISELECT(8,4), "S19622C1.s19622c1f0");
    test_class_info(&lv, &cd_S19622C1);
    dp->~S19622C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19622C1(Test_S19622C1, "S19622C1", ABISELECT(392,288));

#else // __cplusplus

extern void _ZN8S19622C1C1Ev();
extern void _ZN8S19622C1D1Ev();
Name_Map name_map_S19622C1[] = {
  NSPAIR(_ZN8S19622C1C1Ev),
  NSPAIR(_ZN8S19622C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S19622C4;
extern VTBL_ENTRY _ZTI8S19622C4[];
extern  VTBL_ENTRY _ZTV8S19622C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
extern Class_Descriptor cd_S19622C9;
extern VTBL_ENTRY _ZTI8S19622C9[];
extern  VTBL_ENTRY _ZTV8S19622C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19622C12;
extern VTBL_ENTRY _ZTI9S19622C12[];
extern  VTBL_ENTRY _ZTV9S19622C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C12[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
extern Class_Descriptor cd_S19622C8;
extern VTBL_ENTRY _ZTI8S19622C8[];
extern  VTBL_ENTRY _ZTV8S19622C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C8[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S19622C7;
extern VTBL_ENTRY _ZTI8S19622C7[];
extern  VTBL_ENTRY _ZTV8S19622C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C7[];
extern Class_Descriptor cd_S19622C6;
extern VTBL_ENTRY _ZTI8S19622C6[];
extern  VTBL_ENTRY _ZTV8S19622C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C6[];
extern Class_Descriptor cd_S19622C2;
extern VTBL_ENTRY _ZTI8S19622C2[];
extern  VTBL_ENTRY _ZTV8S19622C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C2[];
static Base_Class bases_S19622C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(48,28), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19622C4,    ABISELECT(32,20), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(248,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(344,248), //bcp->offset
    71, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(376,276), //bcp->offset
    76, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19622C11,    ABISELECT(264,184), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19622C9,    ABISELECT(248,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(304,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19622C12,    ABISELECT(304,216), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19622C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19622C8,    ABISELECT(248,172), //bcp->offset
    50, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19115C12,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19622C7,    ABISELECT(64,40), //bcp->offset
    39, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19622C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19622C2,    ABISELECT(16,8), //bcp->offset
    15, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19622C1[];
extern void ABISELECT(_ZTv0_n32_N8S19622C1D1Ev,_ZTv0_n16_N8S19622C1D1Ev)();
extern void _ZN8S19622C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C1D0Ev,_ZTv0_n16_N8S19622C1D0Ev)();
extern void _ZN8S19622C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19622C1D1Ev,_ZTv0_n48_N8S19622C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C1D1Ev,_ZThn8_N8S19622C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19622C1D0Ev,_ZTv0_n48_N8S19622C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S19622C1D0Ev,_ZThn8_N8S19622C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n96_N8S19622C1D1Ev,_ZTvn12_n48_N8S19622C1D1Ev)();
extern void ABISELECT(_ZTvn16_n96_N8S19622C1D0Ev,_ZTvn12_n48_N8S19622C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19622C1D1Ev,_ZTv0_n12_N8S19622C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19622C1D1Ev,_ZThn28_N8S19622C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C1D0Ev,_ZTv0_n12_N8S19622C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19622C1D0Ev,_ZThn28_N8S19622C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C1D1Ev,_ZTv0_n16_N8S19622C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19622C1D1Ev,_ZThn40_N8S19622C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C1D0Ev,_ZTv0_n16_N8S19622C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19622C1D0Ev,_ZThn40_N8S19622C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C1D1Ev,_ZTv0_n32_N8S19622C1D1Ev)();
extern void ABISELECT(_ZThn248_N8S19622C1D1Ev,_ZThn172_N8S19622C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C1D0Ev,_ZTv0_n32_N8S19622C1D0Ev)();
extern void ABISELECT(_ZThn248_N8S19622C1D0Ev,_ZThn172_N8S19622C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S19622C1D1Ev,_ZTvn12_n32_N8S19622C1D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C1D0Ev,_ZTvn12_n32_N8S19622C1D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C1D1Ev,_ZTvn44_n32_N8S19622C1D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C1D0Ev,_ZTvn44_n32_N8S19622C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19622C1D1Ev,_ZTv0_n12_N8S19622C1D1Ev)();
extern void ABISELECT(_ZThn344_N8S19622C1D1Ev,_ZThn248_N8S19622C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C1D0Ev,_ZTv0_n12_N8S19622C1D0Ev)();
extern void ABISELECT(_ZThn344_N8S19622C1D0Ev,_ZThn248_N8S19622C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C1D1Ev,_ZTv0_n12_N8S19622C1D1Ev)();
extern void ABISELECT(_ZThn376_N8S19622C1D1Ev,_ZThn276_N8S19622C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C1D0Ev,_ZTv0_n12_N8S19622C1D0Ev)();
extern void ABISELECT(_ZThn376_N8S19622C1D0Ev,_ZThn276_N8S19622C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19622C1[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(16,8),
  0,
  0,
  0,
  ABISELECT(344,248),
  ABISELECT(248,172),
  ABISELECT(64,40),
  0,
  ABISELECT(376,276),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C1D1Ev,_ZTv0_n16_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C1D0Ev,_ZTv0_n16_N8S19622C1D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(360,268),
  ABISELECT(328,240),
  ABISELECT(232,164),
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19622C1D1Ev,_ZTv0_n48_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19622C1D0Ev,_ZTv0_n48_N8S19622C1D0Ev),
  ABISELECT(16,8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N8S19622C1D1Ev,_ZTvn12_n48_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N8S19622C1D0Ev,_ZTvn12_n48_N8S19622C1D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C1D1Ev,_ZTv0_n12_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C1D0Ev,_ZTv0_n12_N8S19622C1D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-64,-40),
  ABISELECT(312,236),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C1D1Ev,_ZTv0_n16_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C1D0Ev,_ZTv0_n16_N8S19622C1D0Ev),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-248,-172),
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C1D1Ev,_ZTv0_n32_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C1D0Ev,_ZTv0_n32_N8S19622C1D0Ev),
  ABISELECT(112,92),
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C1D1Ev,_ZTvn12_n32_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C1D0Ev,_ZTvn12_n32_N8S19622C1D0Ev),
  ABISELECT(-304,-216),
  ABISELECT(-304,-216),
  ABISELECT(-304,-216),
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C1D1Ev,_ZTvn44_n32_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C1D0Ev,_ZTvn44_n32_N8S19622C1D0Ev),
  ABISELECT(-344,-248),
  ABISELECT(-344,-248),
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C1D1Ev,_ZTv0_n12_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C1D0Ev,_ZTv0_n12_N8S19622C1D0Ev),
  ABISELECT(-376,-276),
  ABISELECT(-376,-276),
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C1D1Ev,_ZTv0_n12_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C1D0Ev,_ZTv0_n12_N8S19622C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19622C1[];
extern void _ZN8S19622C2D1Ev();
extern void _ZN8S19622C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C2__8S19622C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(360,268),
  ABISELECT(328,240),
  ABISELECT(232,164),
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&_ZN8S19622C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C2D0Ev,
};
extern void _ZN8S19622C4D1Ev();
extern void _ZN8S19622C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C48S19622C2__8S19622C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C4[0]),
  (VTBL_ENTRY)&_ZN8S19622C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19622C4D1Ev,_ZTv0_n12_N8S19622C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C4D1Ev,_ZThn8_N8S19622C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C4D0Ev,_ZTv0_n12_N8S19622C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S19622C4D0Ev,_ZThn8_N8S19622C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S19622C48S19622C2__8S19622C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19622C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C4D1Ev,_ZTv0_n12_N8S19622C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C4D0Ev,_ZTv0_n12_N8S19622C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C2D1Ev,_ZThn12_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C2D0Ev,_ZThn12_N8S19622C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19622C4__8S19622C2__8S19622C1[] = {
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C2D1Ev,_ZThn12_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C2D0Ev,_ZThn12_N8S19622C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S19622C2D1Ev,_ZThn20_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S19622C2D0Ev,_ZThn20_N8S19622C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S19622C2__8S19622C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19622C6__8S19622C2__8S19622C1[] = {
  0,
  0,
  0,
  ABISELECT(344,248),
  ABISELECT(248,172),
  ABISELECT(64,40),
  ABISELECT(16,8),
  ABISELECT(376,276),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19622C2D1Ev,_ZThn32_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19622C2D0Ev,_ZThn32_N8S19622C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C7__8S19622C2__8S19622C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-48,-32),
  ABISELECT(312,236),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19622C2D1Ev,_ZTv0_n32_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn232_N8S19622C2D1Ev,_ZThn164_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C2D0Ev,_ZTv0_n32_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn232_N8S19622C2D0Ev,_ZThn164_N8S19622C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C2__8S19622C1[] = {
  ABISELECT(-232,-164),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C2D1Ev,_ZTv0_n32_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C2D0Ev,_ZTv0_n32_N8S19622C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn328_N8S19622C2D1Ev,_ZThn240_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn328_N8S19622C2D0Ev,_ZThn240_N8S19622C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C2__8S19622C1[] = {
  ABISELECT(-328,-240),
  ABISELECT(-328,-240),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19622C2D1Ev,_ZTvn12_n32_N8S19622C2D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C2D0Ev,_ZTvn12_n32_N8S19622C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C2__8S19622C1[] = {
  ABISELECT(112,92),
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C2D1Ev,_ZTvn12_n32_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C2D0Ev,_ZTvn12_n32_N8S19622C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn360_N8S19622C2D1Ev,_ZThn268_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn360_N8S19622C2D0Ev,_ZThn268_N8S19622C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__8S19622C2__8S19622C1[] = {
  ABISELECT(-360,-268),
  ABISELECT(-360,-268),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19622C2D1Ev,_ZTvn44_n32_N8S19622C2D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C2D0Ev,_ZTvn44_n32_N8S19622C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C2__8S19622C1[] = {
  ABISELECT(-304,-216),
  ABISELECT(-304,-216),
  ABISELECT(-288,-208),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C2D1Ev,_ZTvn44_n32_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C2D0Ev,_ZTvn44_n32_N8S19622C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev)();
extern void _ZN8S19622C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev)();
extern void _ZN8S19622C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C6__8S19622C1[] = {
  0,
  0,
  0,
  ABISELECT(344,248),
  ABISELECT(248,172),
  ABISELECT(64,40),
  0,
  ABISELECT(376,276),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S19622C6D1Ev,_ZThn40_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S19622C6D0Ev,_ZThn40_N8S19622C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C7__8S19622C6__8S19622C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-64,-40),
  ABISELECT(312,236),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19622C6D1Ev,_ZTv0_n32_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn248_N8S19622C6D1Ev,_ZThn172_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C6D0Ev,_ZTv0_n32_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn248_N8S19622C6D0Ev,_ZThn172_N8S19622C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C6__8S19622C1[] = {
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-248,-172),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C6D1Ev,_ZTv0_n32_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C6D0Ev,_ZTv0_n32_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn344_N8S19622C6D1Ev,_ZThn248_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn344_N8S19622C6D0Ev,_ZThn248_N8S19622C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C6__8S19622C1[] = {
  ABISELECT(-344,-248),
  ABISELECT(-344,-248),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19622C6D1Ev,_ZTvn12_n32_N8S19622C6D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C6D0Ev,_ZTvn12_n32_N8S19622C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C6__8S19622C1[] = {
  ABISELECT(112,92),
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C6D1Ev,_ZTvn12_n32_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C6D0Ev,_ZTvn12_n32_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn376_N8S19622C6D1Ev,_ZThn276_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn376_N8S19622C6D0Ev,_ZThn276_N8S19622C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C6__8S19622C1[] = {
  ABISELECT(-376,-276),
  ABISELECT(-376,-276),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19622C6D1Ev,_ZTvn44_n32_N8S19622C6D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C6D0Ev,_ZTvn44_n32_N8S19622C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C6__8S19622C1[] = {
  ABISELECT(-304,-216),
  ABISELECT(-304,-216),
  ABISELECT(-304,-216),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C6D1Ev,_ZTvn44_n32_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C6D0Ev,_ZTvn44_n32_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev)();
extern void _ZN8S19622C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev)();
extern void _ZN8S19622C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C7__8S19622C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn184_N8S19622C7D1Ev,_ZThn132_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn184_N8S19622C7D0Ev,_ZThn132_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C7__8S19622C1[] = {
  ABISELECT(-184,-132),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn280_N8S19622C7D1Ev,_ZThn208_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn280_N8S19622C7D0Ev,_ZThn208_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C7__8S19622C1[] = {
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19622C7D1Ev,_ZTvn12_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C7D0Ev,_ZTvn12_n32_N8S19622C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C7__8S19622C1[] = {
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C7D1Ev,_ZTvn12_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C7D0Ev,_ZTvn12_n32_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S19622C7D1Ev,_ZThn236_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S19622C7D0Ev,_ZThn236_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C7__8S19622C1[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19622C7D1Ev,_ZTvn44_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C7D0Ev,_ZTvn44_n32_N8S19622C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C7__8S19622C1[] = {
  ABISELECT(-304,-216),
  ABISELECT(-304,-216),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C7D1Ev,_ZTvn44_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C7D0Ev,_ZTvn44_n32_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C7__8S19622C1[] = {
  ABISELECT(64,40),
  ABISELECT(376,276),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev),
};
extern void _ZN8S19622C8D1Ev();
extern void _ZN8S19622C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C1[] = {
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&_ZN8S19622C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C8D0Ev,
};
extern void _ZN8S19622C9D1Ev();
extern void _ZN8S19622C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C98S19622C8__8S19622C1[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&_ZN8S19622C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C9D0Ev,
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C1[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C118S19622C98S19622C8__8S19622C1[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C98S19622C8__8S19622C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__8S19622C98S19622C8__8S19622C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C98S19622C8__8S19622C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void _ZN9S19622C12D1Ev();
extern void _ZN9S19622C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C1[] = {
  ABISELECT(-304,-216),
  ABISELECT(-304,-216),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C12[0]),
  (VTBL_ENTRY)&_ZN9S19622C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C8__8S19622C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C9__8S19622C8__8S19622C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C8__8S19622C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C12__8S19622C8__8S19622C1[] = {
  ABISELECT(-304,-216),
  ABISELECT(-304,-216),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C8__8S19622C1[] = {
  ABISELECT(248,172),
  ABISELECT(376,276),
  ABISELECT(248,172),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev),
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C1[] = {
  ABISELECT(376,276),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn376_N9S19622C11D1Ev,_ZThn276_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn376_N9S19622C11D0Ev,_ZThn276_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C11__A1__8S19622C1[] = {
  ABISELECT(-376,-276),
  ABISELECT(-376,-276),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
static  VTT_ENTRY vtt_S19622C1[] = {
  {&(_ZTV8S19622C1[13]),  13,81},
  {&(_ZTV8S19622C1[27]),  27,81},
  {&(_ZTV8S19622C1[32]),  32,81},
  {&(_ZTV8S19622C1[37]),  37,81},
  {&(_ZTV8S19622C1[13]),  13,81},
  {&(_ZTV8S19622C1[48]),  48,81},
  {&(_ZTV8S19622C1[58]),  58,81},
  {&(_ZTV8S19622C1[74]),  74,81},
  {&(_ZTV8S19622C1[63]),  63,81},
  {&(_ZTV8S19622C1[79]),  79,81},
  {&(_ZTV8S19622C1[69]),  69,81},
  {&(_ZTV8S19622C1[13]),  13,81},
  {&(_tg__ZTV8S19622C2__8S19622C1[11]),  11,13},
  {&(_tg__ZTV8S19622C48S19622C2__8S19622C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S19622C48S19622C2__8S19622C1[3]),  3,5},
  {&(_tg__ZTV8S19622C4__8S19622C2__8S19622C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S19622C2__8S19622C1[3]),  3,5},
  {&(_tg__ZTV8S19622C6__8S19622C2__8S19622C1[10]),  10,12},
  {&(_tg__ZTV8S19622C7__8S19622C2__8S19622C1[9]),  9,11},
  {&(_tg__ZTV8S19622C8__8S19622C2__8S19622C1[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19622C2__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C2__8S19622C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__8S19622C2__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C2__8S19622C1[4]),  4,6},
  {&(_tg__ZTV8S19622C6__8S19622C2__8S19622C1[10]),  10,12},
  {&(_tg__ZTV8S19622C6__8S19622C1[10]),  10,12},
  {&(_tg__ZTV8S19622C7__8S19622C6__8S19622C1[9]),  9,11},
  {&(_tg__ZTV8S19622C8__8S19622C6__8S19622C1[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19622C6__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C6__8S19622C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C6__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C6__8S19622C1[4]),  4,6},
  {&(_tg__ZTV8S19622C6__8S19622C1[10]),  10,12},
  {&(_tg__ZTV8S19622C7__8S19622C1[9]),  9,11},
  {&(_tg__ZTV8S19622C8__8S19622C7__8S19622C1[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19622C7__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C7__8S19622C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C7__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C7__8S19622C1[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C7__8S19622C1[4]),  4,6},
  {&(_tg__ZTV8S19622C8__8S19622C1[7]),  7,9},
  {&(_tg__ZTV8S19622C98S19622C8__8S19622C1[4]),  4,6},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C118S19622C98S19622C8__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19622C98S19622C8__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C11__8S19622C98S19622C8__8S19622C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C98S19622C8__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C1[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19622C8__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C9__8S19622C8__8S19622C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C8__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C12__8S19622C8__8S19622C1[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C8__8S19622C1[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C11__A1__8S19622C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19622C1[];
extern  VTBL_ENTRY _ZTV8S19622C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C1[];
static VTBL_ENTRY alt_thunk_names290[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N9S19622C11D0Ev,_ZThn276_N9S19622C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N9S19622C11D1Ev,_ZThn276_N9S19622C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19622C7D0Ev,_ZThn236_N8S19622C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19622C7D0Ev,_ZThn208_N8S19622C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19622C7D1Ev,_ZThn236_N8S19622C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19622C7D1Ev,_ZThn208_N8S19622C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19622C7D0Ev,_ZThn132_N8S19622C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19622C7D1Ev,_ZThn132_N8S19622C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19622C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19622C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19622C6D0Ev,_ZThn276_N8S19622C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19622C6D0Ev,_ZThn248_N8S19622C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19622C6D1Ev,_ZThn276_N8S19622C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19622C6D1Ev,_ZThn248_N8S19622C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C6D0Ev,_ZTv0_n32_N8S19622C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19622C6D0Ev,_ZThn172_N8S19622C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C6D1Ev,_ZTv0_n32_N8S19622C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19622C6D1Ev,_ZThn172_N8S19622C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19622C6D0Ev,_ZThn40_N8S19622C6D0Ev),
  (VTBL_ENTRY)_ZN8S19622C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19622C6D1Ev,_ZThn40_N8S19622C6D1Ev),
  (VTBL_ENTRY)_ZN8S19622C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C2D0Ev,_ZTv0_n32_N8S19622C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S19622C2D0Ev,_ZThn164_N8S19622C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C2D1Ev,_ZTv0_n32_N8S19622C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S19622C2D1Ev,_ZThn164_N8S19622C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19622C2D0Ev,_ZThn32_N8S19622C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19622C2D1Ev,_ZThn32_N8S19622C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S19622C2D0Ev,_ZThn268_N8S19622C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S19622C2D0Ev,_ZThn240_N8S19622C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19622C2D0Ev,_ZThn20_N8S19622C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S19622C2D1Ev,_ZThn268_N8S19622C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S19622C2D1Ev,_ZThn240_N8S19622C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19622C2D1Ev,_ZThn20_N8S19622C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C4D0Ev,_ZTv0_n12_N8S19622C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19622C4D0Ev,_ZThn8_N8S19622C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C4D1Ev,_ZTv0_n12_N8S19622C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19622C4D1Ev,_ZThn8_N8S19622C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C1D0Ev,_ZTv0_n32_N8S19622C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19622C1D0Ev,_ZThn172_N8S19622C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C1D1Ev,_ZTv0_n32_N8S19622C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19622C1D1Ev,_ZThn172_N8S19622C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C1D0Ev,_ZTv0_n12_N8S19622C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19622C1D0Ev,_ZThn276_N8S19622C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19622C1D0Ev,_ZThn248_N8S19622C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19622C1D0Ev,_ZThn28_N8S19622C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C1D1Ev,_ZTv0_n12_N8S19622C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19622C1D1Ev,_ZThn276_N8S19622C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19622C1D1Ev,_ZThn248_N8S19622C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19622C1D1Ev,_ZThn28_N8S19622C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19622C1D0Ev,_ZTv0_n48_N8S19622C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19622C1D0Ev,_ZThn8_N8S19622C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19622C1D1Ev,_ZTv0_n48_N8S19622C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19622C1D1Ev,_ZThn8_N8S19622C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C1D0Ev,_ZTv0_n16_N8S19622C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19622C1D0Ev,_ZThn40_N8S19622C1D0Ev),
  (VTBL_ENTRY)_ZN8S19622C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C1D1Ev,_ZTv0_n16_N8S19622C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19622C1D1Ev,_ZThn40_N8S19622C1D1Ev),
  (VTBL_ENTRY)_ZN8S19622C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19622C1 = {  "S19622C1", // class name
  bases_S19622C1, 19,
  &(vtc_S19622C1[0]), // expected_vtbl_contents
  &(vtt_S19622C1[0]), // expected_vtt_contents
  ABISELECT(392,288), // object size
  NSPAIRA(_ZTI8S19622C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19622C1),81, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19622C1),55, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names290,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19621C4  : virtual S20759C5_nt {
  char s19621c4f0[2];
  virtual  ~S19621C4(); // _ZN8S19621C4D2Ev
  S19621C4(); // tgen
};
//SIG(-1 S19621C4) C1{ VBC2{ vd m Fl} vd Fc[2]}


 S19621C4 ::~S19621C4(){ note_dtor("S19621C4", this);}
S19621C4 ::S19621C4(){ note_ctor("S19621C4", this);} // tgen

static void Test_S19621C4()
{
  extern Class_Descriptor cd_S19621C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19621C4, buf);
    S19621C4 *dp, &lv = *(dp=new (buf) S19621C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19621C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19621C4)");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(16,8), "S19621C4");
    check_field_offset(lv, s19621c4f0, ABISELECT(8,4), "S19621C4.s19621c4f0");
    test_class_info(&lv, &cd_S19621C4);
    dp->~S19621C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19621C4(Test_S19621C4, "S19621C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19621C4C1Ev();
extern void _ZN8S19621C4D2Ev();
Name_Map name_map_S19621C4[] = {
  NSPAIR(_ZN8S19621C4C1Ev),
  NSPAIR(_ZN8S19621C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S19621C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20759C5_nt,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19621C4[];
extern void _ZN8S19621C4D1Ev();
extern void _ZN8S19621C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19621C4D1Ev,_ZTv0_n12_N8S19621C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C4D1Ev,_ZThn8_N8S19621C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C4D0Ev,_ZTv0_n12_N8S19621C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S19621C4D0Ev,_ZThn8_N8S19621C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19621C4[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C4[0]),
  (VTBL_ENTRY)&_ZN8S19621C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C4D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19621C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C4D1Ev,_ZTv0_n12_N8S19621C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C4D0Ev,_ZTv0_n12_N8S19621C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19621C4[];
static  VTT_ENTRY vtt_S19621C4[] = {
  {&(_ZTV8S19621C4[3]),  3,10},
  {&(_ZTV8S19621C4[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19621C4[];
extern  VTBL_ENTRY _ZTV8S19621C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C4[];
static VTBL_ENTRY alt_thunk_names291[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C4D0Ev,_ZTv0_n12_N8S19621C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19621C4D0Ev,_ZThn8_N8S19621C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C4D1Ev,_ZTv0_n12_N8S19621C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19621C4D1Ev,_ZThn8_N8S19621C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19621C4 = {  "S19621C4", // class name
  bases_S19621C4, 1,
  &(vtc_S19621C4[0]), // expected_vtbl_contents
  &(vtt_S19621C4[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19621C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19621C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19621C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names291,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19621C11  : virtual S20760C9 {
  virtual  ~S19621C11(); // _ZN9S19621C11D2Ev
  S19621C11(); // tgen
};
//SIG(-1 S19621C11) C1{ VBC2{ vd m FL} vd}


 S19621C11 ::~S19621C11(){ note_dtor("S19621C11", this);}
S19621C11 ::S19621C11(){ note_ctor("S19621C11", this);} // tgen

static void Test_S19621C11()
{
  extern Class_Descriptor cd_S19621C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19621C11, buf);
    S19621C11 *dp, &lv = *(dp=new (buf) S19621C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19621C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19621C11)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S19621C11");
    test_class_info(&lv, &cd_S19621C11);
    dp->~S19621C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19621C11(Test_S19621C11, "S19621C11", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S19621C11C1Ev();
extern void _ZN9S19621C11D2Ev();
Name_Map name_map_S19621C11[] = {
  NSPAIR(_ZN9S19621C11C1Ev),
  NSPAIR(_ZN9S19621C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S19621C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19621C11[];
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S19621C11D1Ev,_ZThn4_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S19621C11D0Ev,_ZThn4_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19621C11[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19621C11[];
static  VTT_ENTRY vtt_S19621C11[] = {
  {&(_ZTV9S19621C11[3]),  3,10},
  {&(_ZTV9S19621C11[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
static VTBL_ENTRY alt_thunk_names292[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19621C11D0Ev,_ZThn4_N9S19621C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19621C11D1Ev,_ZThn4_N9S19621C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19621C11 = {  "S19621C11", // class name
  bases_S19621C11, 1,
  &(vtc_S19621C11[0]), // expected_vtbl_contents
  &(vtt_S19621C11[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S19621C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19621C11),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19621C11),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names292,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19621C9  : S20760C9 , virtual S20760C13 , S19621C11 {
  ::S20760C13 s19621c9f0;
  ~S19621C9(); // tgen
  S19621C9(); // tgen
};
//SIG(-1 S19621C9) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S19621C9 ::~S19621C9(){ note_dtor("S19621C9", this);} // tgen
S19621C9 ::S19621C9(){ note_ctor("S19621C9", this);} // tgen

static void Test_S19621C9()
{
  extern Class_Descriptor cd_S19621C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S19621C9, buf);
    S19621C9 *dp, &lv = *(dp=new (buf) S19621C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S19621C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19621C9)");
    /*is_ambiguous_... S19621C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S19621C9");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S19621C9");
    check_base_class_offset(lv, (S20760C9*)(S19621C11*), ABISELECT(88,72), "S19621C9");
    check_base_class_offset(lv, (S19621C11*), ABISELECT(16,12), "S19621C9");
    check_field_offset(lv, s19621c9f0, ABISELECT(24,16), "S19621C9.s19621c9f0");
    test_class_info(&lv, &cd_S19621C9);
    dp->~S19621C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19621C9(Test_S19621C9, "S19621C9", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S19621C9C1Ev();
extern void _ZN8S19621C9D1Ev();
Name_Map name_map_S19621C9[] = {
  NSPAIR(_ZN8S19621C9C1Ev),
  NSPAIR(_ZN8S19621C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
static Base_Class bases_S19621C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19621C11,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19621C9[];
extern void _ZN8S19621C9D1Ev();
extern void _ZN8S19621C9D0Ev();
extern void ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn56_N8S19621C9D1Ev,_ZThn44_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn56_N8S19621C9D0Ev,_ZThn44_N8S19621C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn88_N8S19621C9D1Ev,_ZThn72_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn88_N8S19621C9D0Ev,_ZThn72_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19621C9[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&_ZN8S19621C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C9D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19621C9[];
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C11__8S19621C9[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn72_N9S19621C11D1Ev,_ZThn60_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn72_N9S19621C11D0Ev,_ZThn60_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C11__8S19621C9[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
static  VTT_ENTRY vtt_S19621C9[] = {
  {&(_ZTV8S19621C9[4]),  4,21},
  {&(_tg__ZTV9S19621C11__8S19621C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C11__8S19621C9[3]),  3,5},
  {&(_ZTV8S19621C9[14]),  14,21},
  {&(_ZTV8S19621C9[9]),  9,21},
  {&(_ZTV8S19621C9[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S19621C9[];
extern  VTBL_ENTRY _ZTV8S19621C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C9[];
static VTBL_ENTRY alt_thunk_names293[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19621C11D0Ev,_ZThn60_N9S19621C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19621C11D1Ev,_ZThn60_N9S19621C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19621C9D0Ev,_ZThn72_N8S19621C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19621C9D0Ev,_ZThn44_N8S19621C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19621C9D1Ev,_ZThn72_N8S19621C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19621C9D1Ev,_ZThn44_N8S19621C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19621C9 = {  "S19621C9", // class name
  bases_S19621C9, 4,
  &(vtc_S19621C9[0]), // expected_vtbl_contents
  &(vtt_S19621C9[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S19621C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19621C9),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19621C9),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names293,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19621C12  : S20760C13 , virtual S4228C37 , virtual S4228C27 {
  short s19621c12f0;
  ~S19621C12(); // tgen
  S19621C12(); // tgen
};
//SIG(-1 S19621C12) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S19621C12 ::~S19621C12(){ note_dtor("S19621C12", this);} // tgen
S19621C12 ::S19621C12(){ note_ctor("S19621C12", this);} // tgen

static void Test_S19621C12()
{
  extern Class_Descriptor cd_S19621C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S19621C12, buf);
    S19621C12 *dp, &lv = *(dp=new (buf) S19621C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S19621C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19621C12)");
    check_base_class_offset(lv, (S20760C13*), 0, "S19621C12");
    check_base_class_offset(lv, (S4228C37*), 0, "S19621C12");
    check_base_class_offset(lv, (S4228C27*), 0, "S19621C12");
    check_field_offset(lv, s19621c12f0, ABISELECT(32,28), "S19621C12.s19621c12f0");
    test_class_info(&lv, &cd_S19621C12);
    dp->~S19621C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19621C12(Test_S19621C12, "S19621C12", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN9S19621C12C1Ev();
extern void _ZN9S19621C12D1Ev();
Name_Map name_map_S19621C12[] = {
  NSPAIR(_ZN9S19621C12C1Ev),
  NSPAIR(_ZN9S19621C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S19621C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19621C12[];
extern void _ZN9S19621C12D1Ev();
extern void _ZN9S19621C12D0Ev();
static  VTBL_ENTRY vtc_S19621C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C12[0]),
  (VTBL_ENTRY)&_ZN9S19621C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C12D0Ev,
};
extern VTBL_ENTRY _ZTV9S19621C12[];
static  VTT_ENTRY vtt_S19621C12[] = {
  {&(_ZTV9S19621C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19621C12[];
extern  VTBL_ENTRY _ZTV9S19621C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C12[];
Class_Descriptor cd_S19621C12 = {  "S19621C12", // class name
  bases_S19621C12, 3,
  &(vtc_S19621C12[0]), // expected_vtbl_contents
  &(vtt_S19621C12[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI9S19621C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19621C12),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19621C12),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19621C8  : S19621C9 , S19621C12 , virtual S19621C11 {
  virtual  ~S19621C8(); // _ZN8S19621C8D2Ev
  S19621C8(); // tgen
};
//SIG(-1 S19621C8) C1{ BC2{ BC3{ vd m FL} VBC4{ vd m Fi[6]} BC5{ VBC3 vd} FC4} BC6{ BC4 VBC7{ m} VBC8{ m} Fs} VBC5 vd}


 S19621C8 ::~S19621C8(){ note_dtor("S19621C8", this);}
S19621C8 ::S19621C8(){ note_ctor("S19621C8", this);} // tgen

static void Test_S19621C8()
{
  extern Class_Descriptor cd_S19621C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,31)];
    init_test(&cd_S19621C8, buf);
    S19621C8 *dp, &lv = *(dp=new (buf) S19621C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,120), "sizeof(S19621C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19621C8)");
    /*is_ambiguous_... S19621C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C9*), 0, "S19621C8");
    check_base_class_offset(lv, (S20760C13*)(S19621C9*), ABISELECT(96,76), "S19621C8");
    check_base_class_offset(lv, (S20760C9*)(S19621C11*)(S19621C9*), ABISELECT(128,104), "S19621C8");
    /*is_ambiguous_... S19621C8::S19621C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C11*), ABISELECT(128,104), "S19621C8");
    check_base_class_offset(lv, (S19621C11*)(S19621C9*), ABISELECT(16,12), "S19621C8");
    check_base_class_offset(lv, (S19621C9*), 0, "S19621C8");
    check_base_class_offset(lv, (S20760C13*)(S19621C12*), ABISELECT(56,44), "S19621C8");
    check_base_class_offset(lv, (S4228C37*)(S19621C12*), 0, "S19621C8");
    check_base_class_offset(lv, (S4228C27*)(S19621C12*), 0, "S19621C8");
    check_base_class_offset(lv, (S19621C12*), ABISELECT(56,44), "S19621C8");
    /*is_ambiguous_... S19621C8::S19621C11 */ AMB_check_base_class_offset(lv, (S19621C11*), ABISELECT(144,116), "S19621C8");
    test_class_info(&lv, &cd_S19621C8);
    dp->~S19621C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19621C8(Test_S19621C8, "S19621C8", ABISELECT(152,120));

#else // __cplusplus

extern void _ZN8S19621C8C1Ev();
extern void _ZN8S19621C8D2Ev();
Name_Map name_map_S19621C8[] = {
  NSPAIR(_ZN8S19621C8C1Ev),
  NSPAIR(_ZN8S19621C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
extern Class_Descriptor cd_S19621C9;
extern VTBL_ENTRY _ZTI8S19621C9[];
extern  VTBL_ENTRY _ZTV8S19621C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19621C12;
extern VTBL_ENTRY _ZTI9S19621C12[];
extern  VTBL_ENTRY _ZTV9S19621C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C12[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
static Base_Class bases_S19621C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(96,76), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(128,104), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19621C11,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19621C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19621C12,    ABISELECT(56,44), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19621C11,    ABISELECT(144,116), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19621C8[];
extern void _ZN8S19621C8D1Ev();
extern void _ZN8S19621C8D0Ev();
extern void ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn144_N8S19621C8D1Ev,_ZThn116_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn144_N8S19621C8D0Ev,_ZThn116_N8S19621C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19621C8[] = {
  ABISELECT(144,116),
  0,
  0,
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&_ZN8S19621C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C8D0Ev,
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev),
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
  ABISELECT(-144,-116),
  ABISELECT(-16,-12),
  ABISELECT(-144,-116),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19621C8[];
extern void _ZN8S19621C9D1Ev();
extern void _ZN8S19621C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C9__8S19621C8[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&_ZN8S19621C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C9D0Ev,
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C9__8S19621C8[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C118S19621C9__8S19621C8[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C9__8S19621C8[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__8S19621C9__8S19621C8[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C9__8S19621C8[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void _ZN9S19621C12D1Ev();
extern void _ZN9S19621C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C12__8S19621C8[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C12[0]),
  (VTBL_ENTRY)&_ZN9S19621C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C12D0Ev,
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C8[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C11__A1__8S19621C8[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
static  VTT_ENTRY vtt_S19621C8[] = {
  {&(_ZTV8S19621C8[7]),  7,36},
  {&(_tg__ZTV8S19621C9__8S19621C8[4]),  4,6},
  {&(_tg__ZTV9S19621C118S19621C9__8S19621C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C118S19621C9__8S19621C8[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19621C9__8S19621C8[3]),  3,5},
  {&(_tg__ZTV9S19621C11__8S19621C9__8S19621C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C9__8S19621C8[3]),  3,5},
  {&(_tg__ZTV9S19621C12__8S19621C8[4]),  4,6},
  {&(_ZTV8S19621C8[23]),  23,36},
  {&(_ZTV8S19621C8[12]),  12,36},
  {&(_ZTV8S19621C8[28]),  28,36},
  {&(_ZTV8S19621C8[18]),  18,36},
  {&(_ZTV8S19621C8[34]),  34,36},
  {&(_tg__ZTV9S19621C11__A1__8S19621C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C11__A1__8S19621C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19621C8[];
extern  VTBL_ENTRY _ZTV8S19621C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C8[];
static VTBL_ENTRY alt_thunk_names294[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19621C8D0Ev,_ZThn116_N8S19621C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19621C8D1Ev,_ZThn116_N8S19621C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19621C8 = {  "S19621C8", // class name
  bases_S19621C8, 10,
  &(vtc_S19621C8[0]), // expected_vtbl_contents
  &(vtt_S19621C8[0]), // expected_vtt_contents
  ABISELECT(152,120), // object size
  NSPAIRA(_ZTI8S19621C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19621C8),36, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19621C8),15, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names294,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19621C7  : virtual S19621C8 , S4161C4_nt , S19115C12 {
  int s19621c7f0;
  virtual  ~S19621C7(); // _ZN8S19621C7D2Ev
  S19621C7(); // tgen
};
//SIG(-1 S19621C7) C1{ VBC2{ BC3{ BC4{ vd m FL} VBC5{ vd m Fi[6]} BC6{ VBC4 vd} FC5} BC7{ BC5 VBC8{ m} VBC9{ m} Fs} VBC6 vd} BC10{ m Fp} BC11{ m FC4[10]} vd Fi}


 S19621C7 ::~S19621C7(){ note_dtor("S19621C7", this);}
S19621C7 ::S19621C7(){ note_ctor("S19621C7", this);} // tgen

static void Test_S19621C7()
{
  extern Class_Descriptor cd_S19621C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,63)];
    init_test(&cd_S19621C7, buf);
    S19621C7 *dp, &lv = *(dp=new (buf) S19621C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,248), "sizeof(S19621C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19621C7)");
    /*is_ambiguous_... S19621C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C9*)(S19621C8*), ABISELECT(184,132), "S19621C7");
    check_base_class_offset(lv, (S20760C13*)(S19621C9*)(S19621C8*), ABISELECT(280,208), "S19621C7");
    check_base_class_offset(lv, (S20760C9*)(S19621C11*)(S19621C9*)(S19621C8*), ABISELECT(312,236), "S19621C7");
    /*is_ambiguous_... S19621C7::S19621C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C11*), ABISELECT(312,236), "S19621C7");
    check_base_class_offset(lv, (S19621C11*)(S19621C9*)(S19621C8*), ABISELECT(200,144), "S19621C7");
    check_base_class_offset(lv, (S19621C9*)(S19621C8*), ABISELECT(184,132), "S19621C7");
    check_base_class_offset(lv, (S20760C13*)(S19621C12*)(S19621C8*), ABISELECT(240,176), "S19621C7");
    check_base_class_offset(lv, (S4228C37*)(S19621C12*)(S19621C8*), 0, "S19621C7");
    check_base_class_offset(lv, (S4228C27*)(S19621C12*)(S19621C8*), 0, "S19621C7");
    check_base_class_offset(lv, (S19621C12*)(S19621C8*), ABISELECT(240,176), "S19621C7");
    /*is_ambiguous_... S19621C8::S19621C11 */ AMB_check_base_class_offset(lv, (S19621C11*)(S19621C8*), 0, "S19621C7");
    check_base_class_offset(lv, (S19621C8*), ABISELECT(184,132), "S19621C7");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(8,4), "S19621C7");
    check_base_class_offset(lv, (S19115C12*), ABISELECT(16,8), "S19621C7");
    check_field_offset(lv, s19621c7f0, ABISELECT(176,128), "S19621C7.s19621c7f0");
    test_class_info(&lv, &cd_S19621C7);
    dp->~S19621C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19621C7(Test_S19621C7, "S19621C7", ABISELECT(328,248));

#else // __cplusplus

extern void _ZN8S19621C7C1Ev();
extern void _ZN8S19621C7D2Ev();
Name_Map name_map_S19621C7[] = {
  NSPAIR(_ZN8S19621C7C1Ev),
  NSPAIR(_ZN8S19621C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
extern Class_Descriptor cd_S19621C9;
extern VTBL_ENTRY _ZTI8S19621C9[];
extern  VTBL_ENTRY _ZTV8S19621C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19621C12;
extern VTBL_ENTRY _ZTI9S19621C12[];
extern  VTBL_ENTRY _ZTV9S19621C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C12[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
extern Class_Descriptor cd_S19621C8;
extern VTBL_ENTRY _ZTI8S19621C8[];
extern  VTBL_ENTRY _ZTV8S19621C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C8[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
static Base_Class bases_S19621C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(184,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(280,208), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(312,236), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19621C11,    ABISELECT(200,144), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19621C9,    ABISELECT(184,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(240,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19621C12,    ABISELECT(240,176), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19621C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19621C8,    ABISELECT(184,132), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19115C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19621C7[];
extern void ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev)();
extern void _ZN8S19621C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev)();
extern void _ZN8S19621C7D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn184_N8S19621C7D1Ev,_ZThn132_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn184_N8S19621C7D0Ev,_ZThn132_N8S19621C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S19621C7D1Ev,_ZTvn12_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C7D0Ev,_ZTvn12_n32_N8S19621C7D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C7D1Ev,_ZTvn44_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C7D0Ev,_ZTvn44_n32_N8S19621C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn280_N8S19621C7D1Ev,_ZThn208_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn280_N8S19621C7D0Ev,_ZThn208_N8S19621C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S19621C7D1Ev,_ZThn236_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S19621C7D0Ev,_ZThn236_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19621C7[] = {
  0,
  0,
  0,
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev),
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C7D1Ev,_ZTvn12_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C7D0Ev,_ZTvn12_n32_N8S19621C7D0Ev),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C7D1Ev,_ZTvn44_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C7D0Ev,_ZTvn44_n32_N8S19621C7D0Ev),
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev),
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19621C7[];
extern void _ZN8S19621C8D1Ev();
extern void _ZN8S19621C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C7[] = {
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&_ZN8S19621C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C8D0Ev,
};
extern void _ZN8S19621C9D1Ev();
extern void _ZN8S19621C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C98S19621C8__8S19621C7[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&_ZN8S19621C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C9D0Ev,
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C7[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C118S19621C98S19621C8__8S19621C7[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C98S19621C8__8S19621C7[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__8S19621C98S19621C8__8S19621C7[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C98S19621C8__8S19621C7[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void _ZN9S19621C12D1Ev();
extern void _ZN9S19621C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C7[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C12[0]),
  (VTBL_ENTRY)&_ZN9S19621C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C8__8S19621C7[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C9__8S19621C8__8S19621C7[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C8__8S19621C7[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C12__8S19621C8__8S19621C7[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C8__8S19621C7[] = {
  ABISELECT(184,132),
  ABISELECT(312,236),
  ABISELECT(184,132),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev),
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C7[] = {
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn312_N9S19621C11D1Ev,_ZThn236_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn312_N9S19621C11D0Ev,_ZThn236_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C11__A1__8S19621C7[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
static  VTT_ENTRY vtt_S19621C7[] = {
  {&(_ZTV8S19621C7[9]),  9,42},
  {&(_ZTV8S19621C7[19]),  19,42},
  {&(_ZTV8S19621C7[35]),  35,42},
  {&(_ZTV8S19621C7[24]),  24,42},
  {&(_ZTV8S19621C7[40]),  40,42},
  {&(_ZTV8S19621C7[30]),  30,42},
  {&(_ZTV8S19621C7[9]),  9,42},
  {&(_tg__ZTV8S19621C8__8S19621C7[7]),  7,9},
  {&(_tg__ZTV8S19621C98S19621C8__8S19621C7[4]),  4,6},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C118S19621C98S19621C8__8S19621C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19621C98S19621C8__8S19621C7[3]),  3,5},
  {&(_tg__ZTV9S19621C11__8S19621C98S19621C8__8S19621C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C98S19621C8__8S19621C7[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C7[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19621C8__8S19621C7[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C9__8S19621C8__8S19621C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C8__8S19621C7[3]),  3,5},
  {&(_tg__ZTV9S19621C12__8S19621C8__8S19621C7[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C8__8S19621C7[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C11__A1__8S19621C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19621C7[];
extern  VTBL_ENTRY _ZTV8S19621C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C7[];
static VTBL_ENTRY alt_thunk_names295[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19621C11D0Ev,_ZThn236_N9S19621C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19621C11D1Ev,_ZThn236_N9S19621C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19621C7D0Ev,_ZThn236_N8S19621C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19621C7D0Ev,_ZThn208_N8S19621C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19621C7D1Ev,_ZThn236_N8S19621C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19621C7D1Ev,_ZThn208_N8S19621C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19621C7D0Ev,_ZThn132_N8S19621C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19621C7D1Ev,_ZThn132_N8S19621C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19621C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19621C7D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19621C7 = {  "S19621C7", // class name
  bases_S19621C7, 13,
  &(vtc_S19621C7[0]), // expected_vtbl_contents
  &(vtt_S19621C7[0]), // expected_vtt_contents
  ABISELECT(328,248), // object size
  NSPAIRA(_ZTI8S19621C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19621C7),42, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19621C7),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names295,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19621C6  : virtual S19621C7 {
  virtual  ~S19621C6(); // _ZN8S19621C6D2Ev
  S19621C6(); // tgen
};
//SIG(-1 S19621C6) C1{ VBC2{ VBC3{ BC4{ BC5{ vd m FL} VBC6{ vd m Fi[6]} BC7{ VBC5 vd} FC6} BC8{ BC6 VBC9{ m} VBC10{ m} Fs} VBC7 vd} BC11{ m Fp} BC12{ m FC5[10]} vd Fi} vd}


 S19621C6 ::~S19621C6(){ note_dtor("S19621C6", this);}
S19621C6 ::S19621C6(){ note_ctor("S19621C6", this);} // tgen

static void Test_S19621C6()
{
  extern Class_Descriptor cd_S19621C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,64)];
    init_test(&cd_S19621C6, buf);
    S19621C6 *dp, &lv = *(dp=new (buf) S19621C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,252), "sizeof(S19621C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19621C6)");
    /*is_ambiguous_... S19621C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C9*)(S19621C8*), ABISELECT(192,136), "S19621C6");
    check_base_class_offset(lv, (S20760C13*)(S19621C9*)(S19621C8*), ABISELECT(288,212), "S19621C6");
    check_base_class_offset(lv, (S20760C9*)(S19621C11*)(S19621C9*)(S19621C8*), ABISELECT(320,240), "S19621C6");
    /*is_ambiguous_... S19621C6::S19621C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C11*), ABISELECT(320,240), "S19621C6");
    check_base_class_offset(lv, (S19621C11*)(S19621C9*)(S19621C8*), ABISELECT(208,148), "S19621C6");
    check_base_class_offset(lv, (S19621C9*)(S19621C8*), ABISELECT(192,136), "S19621C6");
    check_base_class_offset(lv, (S20760C13*)(S19621C12*)(S19621C8*), ABISELECT(248,180), "S19621C6");
    check_base_class_offset(lv, (S4228C37*)(S19621C12*)(S19621C8*), 0, "S19621C6");
    check_base_class_offset(lv, (S4228C27*)(S19621C12*)(S19621C8*), 0, "S19621C6");
    check_base_class_offset(lv, (S19621C12*)(S19621C8*), ABISELECT(248,180), "S19621C6");
    /*is_ambiguous_... S19621C8::S19621C11 */ AMB_check_base_class_offset(lv, (S19621C11*)(S19621C8*), 0, "S19621C6");
    check_base_class_offset(lv, (S19621C8*)(S19621C7*), ABISELECT(192,136), "S19621C6");
    check_base_class_offset(lv, (S4161C4_nt*)(S19621C7*), ABISELECT(16,8), "S19621C6");
    check_base_class_offset(lv, (S19115C12*)(S19621C7*), ABISELECT(24,12), "S19621C6");
    check_base_class_offset(lv, (S19621C7*), ABISELECT(8,4), "S19621C6");
    test_class_info(&lv, &cd_S19621C6);
    dp->~S19621C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19621C6(Test_S19621C6, "S19621C6", ABISELECT(336,252));

#else // __cplusplus

extern void _ZN8S19621C6C1Ev();
extern void _ZN8S19621C6D2Ev();
Name_Map name_map_S19621C6[] = {
  NSPAIR(_ZN8S19621C6C1Ev),
  NSPAIR(_ZN8S19621C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
extern Class_Descriptor cd_S19621C9;
extern VTBL_ENTRY _ZTI8S19621C9[];
extern  VTBL_ENTRY _ZTV8S19621C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19621C12;
extern VTBL_ENTRY _ZTI9S19621C12[];
extern  VTBL_ENTRY _ZTV9S19621C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C12[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
extern Class_Descriptor cd_S19621C8;
extern VTBL_ENTRY _ZTI8S19621C8[];
extern  VTBL_ENTRY _ZTV8S19621C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C8[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S19621C7;
extern VTBL_ENTRY _ZTI8S19621C7[];
extern  VTBL_ENTRY _ZTV8S19621C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C7[];
static Base_Class bases_S19621C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(192,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(288,212), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(320,240), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19621C11,    ABISELECT(208,148), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19621C9,    ABISELECT(192,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(248,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19621C12,    ABISELECT(248,180), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19621C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19621C8,    ABISELECT(192,136), //bcp->offset
    23, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19115C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19621C7,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19621C6[];
extern void ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev)();
extern void _ZN8S19621C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev)();
extern void _ZN8S19621C6D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S19621C6D1Ev,_ZThn4_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S19621C6D0Ev,_ZThn4_N8S19621C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C6D1Ev,_ZTv0_n32_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S19621C6D1Ev,_ZThn136_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C6D0Ev,_ZTv0_n32_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S19621C6D0Ev,_ZThn136_N8S19621C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S19621C6D1Ev,_ZTvn12_n32_N8S19621C6D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C6D0Ev,_ZTvn12_n32_N8S19621C6D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C6D1Ev,_ZTvn44_n32_N8S19621C6D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C6D0Ev,_ZTvn44_n32_N8S19621C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn288_N8S19621C6D1Ev,_ZThn212_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn288_N8S19621C6D0Ev,_ZThn212_N8S19621C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn320_N8S19621C6D1Ev,_ZThn240_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn320_N8S19621C6D0Ev,_ZThn240_N8S19621C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19621C6[] = {
  0,
  0,
  0,
  ABISELECT(288,212),
  ABISELECT(192,136),
  ABISELECT(8,4),
  0,
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-8,-4),
  ABISELECT(312,236),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C6D1Ev,_ZTv0_n32_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C6D0Ev,_ZTv0_n32_N8S19621C6D0Ev),
  ABISELECT(112,92),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C6D1Ev,_ZTvn12_n32_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C6D0Ev,_ZTvn12_n32_N8S19621C6D0Ev),
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C6D1Ev,_ZTvn44_n32_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C6D0Ev,_ZTvn44_n32_N8S19621C6D0Ev),
  ABISELECT(-288,-212),
  ABISELECT(-288,-212),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev),
  ABISELECT(-320,-240),
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19621C6[];
extern void ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev)();
extern void _ZN8S19621C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev)();
extern void _ZN8S19621C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C7__8S19621C6[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn184_N8S19621C7D1Ev,_ZThn132_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn184_N8S19621C7D0Ev,_ZThn132_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C7__8S19621C6[] = {
  ABISELECT(-184,-132),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn280_N8S19621C7D1Ev,_ZThn208_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn280_N8S19621C7D0Ev,_ZThn208_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C7__8S19621C6[] = {
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19621C7D1Ev,_ZTvn12_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C7D0Ev,_ZTvn12_n32_N8S19621C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C7__8S19621C6[] = {
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C7D1Ev,_ZTvn12_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C7D0Ev,_ZTvn12_n32_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S19621C7D1Ev,_ZThn236_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S19621C7D0Ev,_ZThn236_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C7__8S19621C6[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19621C7D1Ev,_ZTvn44_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C7D0Ev,_ZTvn44_n32_N8S19621C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C7__8S19621C6[] = {
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C7D1Ev,_ZTvn44_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C7D0Ev,_ZTvn44_n32_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C7__8S19621C6[] = {
  ABISELECT(8,4),
  ABISELECT(320,240),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev),
};
extern void _ZN8S19621C8D1Ev();
extern void _ZN8S19621C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C6[] = {
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&_ZN8S19621C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C8D0Ev,
};
extern void _ZN8S19621C9D1Ev();
extern void _ZN8S19621C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C98S19621C8__8S19621C6[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&_ZN8S19621C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C9D0Ev,
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C6[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C118S19621C98S19621C8__8S19621C6[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C98S19621C8__8S19621C6[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__8S19621C98S19621C8__8S19621C6[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C98S19621C8__8S19621C6[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void _ZN9S19621C12D1Ev();
extern void _ZN9S19621C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C6[] = {
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C12[0]),
  (VTBL_ENTRY)&_ZN9S19621C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C8__8S19621C6[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C9__8S19621C8__8S19621C6[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C8__8S19621C6[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C12__8S19621C8__8S19621C6[] = {
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C8__8S19621C6[] = {
  ABISELECT(192,136),
  ABISELECT(320,240),
  ABISELECT(192,136),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev),
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C6[] = {
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn320_N9S19621C11D1Ev,_ZThn240_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn320_N9S19621C11D0Ev,_ZThn240_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C11__A1__8S19621C6[] = {
  ABISELECT(-320,-240),
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
static  VTT_ENTRY vtt_S19621C6[] = {
  {&(_ZTV8S19621C6[10]),  10,54},
  {&(_ZTV8S19621C6[21]),  21,54},
  {&(_ZTV8S19621C6[31]),  31,54},
  {&(_ZTV8S19621C6[47]),  47,54},
  {&(_ZTV8S19621C6[36]),  36,54},
  {&(_ZTV8S19621C6[52]),  52,54},
  {&(_ZTV8S19621C6[42]),  42,54},
  {&(_ZTV8S19621C6[10]),  10,54},
  {&(_tg__ZTV8S19621C7__8S19621C6[9]),  9,11},
  {&(_tg__ZTV8S19621C8__8S19621C7__8S19621C6[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19621C7__8S19621C6[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C7__8S19621C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C7__8S19621C6[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C7__8S19621C6[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C7__8S19621C6[4]),  4,6},
  {&(_tg__ZTV8S19621C8__8S19621C6[7]),  7,9},
  {&(_tg__ZTV8S19621C98S19621C8__8S19621C6[4]),  4,6},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C118S19621C98S19621C8__8S19621C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19621C98S19621C8__8S19621C6[3]),  3,5},
  {&(_tg__ZTV9S19621C11__8S19621C98S19621C8__8S19621C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C98S19621C8__8S19621C6[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C6[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19621C8__8S19621C6[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C9__8S19621C8__8S19621C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C8__8S19621C6[3]),  3,5},
  {&(_tg__ZTV9S19621C12__8S19621C8__8S19621C6[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C8__8S19621C6[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C11__A1__8S19621C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19621C6[];
extern  VTBL_ENTRY _ZTV8S19621C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C6[];
static VTBL_ENTRY alt_thunk_names296[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19621C11D0Ev,_ZThn240_N9S19621C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19621C11D1Ev,_ZThn240_N9S19621C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19621C7D0Ev,_ZThn236_N8S19621C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19621C7D0Ev,_ZThn208_N8S19621C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19621C7D1Ev,_ZThn236_N8S19621C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19621C7D1Ev,_ZThn208_N8S19621C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19621C7D0Ev,_ZThn132_N8S19621C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19621C7D1Ev,_ZThn132_N8S19621C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19621C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19621C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19621C6D0Ev,_ZThn240_N8S19621C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19621C6D0Ev,_ZThn212_N8S19621C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19621C6D1Ev,_ZThn240_N8S19621C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19621C6D1Ev,_ZThn212_N8S19621C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C6D0Ev,_ZTv0_n32_N8S19621C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19621C6D0Ev,_ZThn136_N8S19621C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C6D1Ev,_ZTv0_n32_N8S19621C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19621C6D1Ev,_ZThn136_N8S19621C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19621C6D0Ev,_ZThn4_N8S19621C6D0Ev),
  (VTBL_ENTRY)_ZN8S19621C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19621C6D1Ev,_ZThn4_N8S19621C6D1Ev),
  (VTBL_ENTRY)_ZN8S19621C6D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19621C6 = {  "S19621C6", // class name
  bases_S19621C6, 14,
  &(vtc_S19621C6[0]), // expected_vtbl_contents
  &(vtt_S19621C6[0]), // expected_vtt_contents
  ABISELECT(336,252), // object size
  NSPAIRA(_ZTI8S19621C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19621C6),54, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19621C6),30, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names296,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19621C2  : S20760C9 , S19621C4 , virtual S19621C6 {
  ~S19621C2(); // tgen
  S19621C2(); // tgen
};
//SIG(-1 S19621C2) C1{ BC2{ vd m FL} BC3{ VBC4{ vd m Fl} vd Fc[2]} VBC5{ VBC6{ VBC7{ BC8{ BC2 VBC9{ vd m Fi[6]} BC10{ VBC2 vd} FC9} BC11{ BC9 VBC12{ m} VBC13{ m} Fs} VBC10 vd} BC14{ m Fp} BC15{ m FC2[10]} vd Fi} vd}}


S19621C2 ::~S19621C2(){ note_dtor("S19621C2", this);} // tgen
S19621C2 ::S19621C2(){ note_ctor("S19621C2", this);} // tgen

static void Test_S19621C2()
{
  extern Class_Descriptor cd_S19621C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,71)];
    init_test(&cd_S19621C2, buf);
    S19621C2 *dp, &lv = *(dp=new (buf) S19621C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,280), "sizeof(S19621C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19621C2)");
    /*is_ambiguous_... S19621C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S19621C2");
    check_base_class_offset(lv, (S20759C5_nt*)(S19621C4*), ABISELECT(32,20), "S19621C2");
    check_base_class_offset(lv, (S19621C4*), ABISELECT(16,12), "S19621C2");
    /*is_ambiguous_... S19621C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C9*)(S19621C8*), ABISELECT(240,164), "S19621C2");
    check_base_class_offset(lv, (S20760C13*)(S19621C9*)(S19621C8*), ABISELECT(336,240), "S19621C2");
    check_base_class_offset(lv, (S20760C9*)(S19621C11*)(S19621C9*)(S19621C8*), ABISELECT(368,268), "S19621C2");
    /*is_ambiguous_... S19621C2::S19621C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C11*), ABISELECT(368,268), "S19621C2");
    check_base_class_offset(lv, (S19621C11*)(S19621C9*)(S19621C8*), ABISELECT(256,176), "S19621C2");
    check_base_class_offset(lv, (S19621C9*)(S19621C8*), ABISELECT(240,164), "S19621C2");
    check_base_class_offset(lv, (S20760C13*)(S19621C12*)(S19621C8*), ABISELECT(296,208), "S19621C2");
    check_base_class_offset(lv, (S4228C37*)(S19621C12*)(S19621C8*), 0, "S19621C2");
    check_base_class_offset(lv, (S4228C27*)(S19621C12*)(S19621C8*), 0, "S19621C2");
    check_base_class_offset(lv, (S19621C12*)(S19621C8*), ABISELECT(296,208), "S19621C2");
    /*is_ambiguous_... S19621C8::S19621C11 */ AMB_check_base_class_offset(lv, (S19621C11*)(S19621C8*), ABISELECT(48,28), "S19621C2");
    check_base_class_offset(lv, (S19621C8*)(S19621C7*), ABISELECT(240,164), "S19621C2");
    check_base_class_offset(lv, (S4161C4_nt*)(S19621C7*), ABISELECT(64,36), "S19621C2");
    check_base_class_offset(lv, (S19115C12*)(S19621C7*), ABISELECT(72,40), "S19621C2");
    check_base_class_offset(lv, (S19621C7*)(S19621C6*), ABISELECT(56,32), "S19621C2");
    check_base_class_offset(lv, (S19621C6*), ABISELECT(48,28), "S19621C2");
    test_class_info(&lv, &cd_S19621C2);
    dp->~S19621C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19621C2(Test_S19621C2, "S19621C2", ABISELECT(384,280));

#else // __cplusplus

extern void _ZN8S19621C2C1Ev();
extern void _ZN8S19621C2D1Ev();
Name_Map name_map_S19621C2[] = {
  NSPAIR(_ZN8S19621C2C1Ev),
  NSPAIR(_ZN8S19621C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S19621C4;
extern VTBL_ENTRY _ZTI8S19621C4[];
extern  VTBL_ENTRY _ZTV8S19621C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
extern Class_Descriptor cd_S19621C9;
extern VTBL_ENTRY _ZTI8S19621C9[];
extern  VTBL_ENTRY _ZTV8S19621C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19621C12;
extern VTBL_ENTRY _ZTI9S19621C12[];
extern  VTBL_ENTRY _ZTV9S19621C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C12[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
extern Class_Descriptor cd_S19621C8;
extern VTBL_ENTRY _ZTI8S19621C8[];
extern  VTBL_ENTRY _ZTV8S19621C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C8[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S19621C7;
extern VTBL_ENTRY _ZTI8S19621C7[];
extern  VTBL_ENTRY _ZTV8S19621C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C7[];
extern Class_Descriptor cd_S19621C6;
extern VTBL_ENTRY _ZTI8S19621C6[];
extern  VTBL_ENTRY _ZTV8S19621C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C6[];
static Base_Class bases_S19621C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20759C5_nt,    ABISELECT(32,20), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19621C4,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(240,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(336,240), //bcp->offset
    67, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(368,268), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19621C11,    ABISELECT(256,176), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19621C9,    ABISELECT(240,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(296,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19621C12,    ABISELECT(296,208), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19621C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19621C8,    ABISELECT(240,164), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19115C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19621C7,    ABISELECT(56,32), //bcp->offset
    35, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19621C6,    ABISELECT(48,28), //bcp->offset
    23, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19621C2[];
extern void _ZN8S19621C2D1Ev();
extern void _ZN8S19621C2D0Ev();
extern void ABISELECT(_ZThn16_N8S19621C2D1Ev,_ZThn12_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C2D0Ev,_ZThn12_N8S19621C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S19621C2D1Ev,_ZThn20_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S19621C2D0Ev,_ZThn20_N8S19621C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19621C2D1Ev,_ZThn28_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19621C2D0Ev,_ZThn28_N8S19621C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S19621C2D1Ev,_ZThn32_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn56_N8S19621C2D0Ev,_ZThn32_N8S19621C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C2D1Ev,_ZTv0_n32_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn240_N8S19621C2D1Ev,_ZThn164_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C2D0Ev,_ZTv0_n32_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn240_N8S19621C2D0Ev,_ZThn164_N8S19621C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S19621C2D1Ev,_ZTvn12_n32_N8S19621C2D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C2D0Ev,_ZTvn12_n32_N8S19621C2D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C2D1Ev,_ZTvn44_n32_N8S19621C2D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C2D0Ev,_ZTvn44_n32_N8S19621C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S19621C2D1Ev,_ZThn240_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S19621C2D0Ev,_ZThn240_N8S19621C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn368_N8S19621C2D1Ev,_ZThn268_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn368_N8S19621C2D0Ev,_ZThn268_N8S19621C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19621C2[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(368,268),
  ABISELECT(336,240),
  ABISELECT(240,164),
  ABISELECT(56,32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&_ZN8S19621C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C2D0Ev,
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C2D1Ev,_ZThn12_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C2D0Ev,_ZThn12_N8S19621C2D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev),
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(288,212),
  ABISELECT(192,136),
  ABISELECT(8,4),
  ABISELECT(-48,-28),
  ABISELECT(320,240),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev),
  ABISELECT(-8,-4),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-56,-32),
  ABISELECT(312,236),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev),
  ABISELECT(-240,-164),
  ABISELECT(-192,-136),
  ABISELECT(-240,-164),
  ABISELECT(-240,-164),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-240,-164),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C2D1Ev,_ZTv0_n32_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C2D0Ev,_ZTv0_n32_N8S19621C2D0Ev),
  ABISELECT(112,92),
  ABISELECT(-256,-176),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C2D1Ev,_ZTvn12_n32_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C2D0Ev,_ZTvn12_n32_N8S19621C2D0Ev),
  ABISELECT(-296,-208),
  ABISELECT(-296,-208),
  ABISELECT(-296,-208),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C2D1Ev,_ZTvn44_n32_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C2D0Ev,_ZTvn44_n32_N8S19621C2D0Ev),
  ABISELECT(-336,-240),
  ABISELECT(-336,-240),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev),
  ABISELECT(-368,-268),
  ABISELECT(-368,-268),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19621C2[];
extern void _ZN8S19621C4D1Ev();
extern void _ZN8S19621C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C4__8S19621C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C4[0]),
  (VTBL_ENTRY)&_ZN8S19621C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19621C4D1Ev,_ZTv0_n12_N8S19621C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C4D1Ev,_ZThn8_N8S19621C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C4D0Ev,_ZTv0_n12_N8S19621C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S19621C4D0Ev,_ZThn8_N8S19621C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S19621C4__8S19621C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19621C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C4D1Ev,_ZTv0_n12_N8S19621C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C4D0Ev,_ZTv0_n12_N8S19621C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev)();
extern void _ZN8S19621C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev)();
extern void _ZN8S19621C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C6__8S19621C2[] = {
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(288,212),
  ABISELECT(192,136),
  ABISELECT(8,4),
  0,
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S19621C6D1Ev,_ZThn4_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S19621C6D0Ev,_ZThn4_N8S19621C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C7__8S19621C6__8S19621C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-8,-4),
  ABISELECT(312,236),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19621C6D1Ev,_ZTv0_n32_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S19621C6D1Ev,_ZThn136_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C6D0Ev,_ZTv0_n32_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S19621C6D0Ev,_ZThn136_N8S19621C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C6__8S19621C2[] = {
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-240,-164),
  ABISELECT(-240,-164),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C6D1Ev,_ZTv0_n32_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C6D0Ev,_ZTv0_n32_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn288_N8S19621C6D1Ev,_ZThn212_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn288_N8S19621C6D0Ev,_ZThn212_N8S19621C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C6__8S19621C2[] = {
  ABISELECT(-288,-212),
  ABISELECT(-288,-212),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19621C6D1Ev,_ZTvn12_n32_N8S19621C6D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C6D0Ev,_ZTvn12_n32_N8S19621C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C6__8S19621C2[] = {
  ABISELECT(112,92),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C6D1Ev,_ZTvn12_n32_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C6D0Ev,_ZTvn12_n32_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn320_N8S19621C6D1Ev,_ZThn240_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn320_N8S19621C6D0Ev,_ZThn240_N8S19621C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C6__8S19621C2[] = {
  ABISELECT(-320,-240),
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19621C6D1Ev,_ZTvn44_n32_N8S19621C6D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C6D0Ev,_ZTvn44_n32_N8S19621C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C6__8S19621C2[] = {
  ABISELECT(-296,-208),
  ABISELECT(-296,-208),
  ABISELECT(-248,-180),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C6D1Ev,_ZTvn44_n32_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C6D0Ev,_ZTvn44_n32_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev)();
extern void _ZN8S19621C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev)();
extern void _ZN8S19621C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C7__8S19621C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn184_N8S19621C7D1Ev,_ZThn132_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn184_N8S19621C7D0Ev,_ZThn132_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C7__8S19621C2[] = {
  ABISELECT(-184,-132),
  ABISELECT(-192,-136),
  ABISELECT(-240,-164),
  ABISELECT(-240,-164),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn280_N8S19621C7D1Ev,_ZThn208_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn280_N8S19621C7D0Ev,_ZThn208_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C7__8S19621C2[] = {
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19621C7D1Ev,_ZTvn12_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C7D0Ev,_ZTvn12_n32_N8S19621C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C7__8S19621C2[] = {
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C7D1Ev,_ZTvn12_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C7D0Ev,_ZTvn12_n32_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S19621C7D1Ev,_ZThn236_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S19621C7D0Ev,_ZThn236_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C7__8S19621C2[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19621C7D1Ev,_ZTvn44_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C7D0Ev,_ZTvn44_n32_N8S19621C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C7__8S19621C2[] = {
  ABISELECT(-296,-208),
  ABISELECT(-296,-208),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C7D1Ev,_ZTvn44_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C7D0Ev,_ZTvn44_n32_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C7__8S19621C2[] = {
  ABISELECT(8,4),
  ABISELECT(320,240),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev),
};
extern void _ZN8S19621C8D1Ev();
extern void _ZN8S19621C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C2[] = {
  ABISELECT(-192,-136),
  ABISELECT(-240,-164),
  ABISELECT(-240,-164),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&_ZN8S19621C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C8D0Ev,
};
extern void _ZN8S19621C9D1Ev();
extern void _ZN8S19621C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C98S19621C8__8S19621C2[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&_ZN8S19621C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C9D0Ev,
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C2[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C118S19621C98S19621C8__8S19621C2[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C98S19621C8__8S19621C2[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__8S19621C98S19621C8__8S19621C2[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C98S19621C8__8S19621C2[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void _ZN9S19621C12D1Ev();
extern void _ZN9S19621C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C2[] = {
  ABISELECT(-296,-208),
  ABISELECT(-296,-208),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C12[0]),
  (VTBL_ENTRY)&_ZN9S19621C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C8__8S19621C2[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C9__8S19621C8__8S19621C2[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C8__8S19621C2[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C12__8S19621C8__8S19621C2[] = {
  ABISELECT(-296,-208),
  ABISELECT(-296,-208),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C8__8S19621C2[] = {
  ABISELECT(192,136),
  ABISELECT(320,240),
  ABISELECT(192,136),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev),
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C2[] = {
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn320_N9S19621C11D1Ev,_ZThn240_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn320_N9S19621C11D0Ev,_ZThn240_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C11__A1__8S19621C2[] = {
  ABISELECT(-320,-240),
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
static  VTT_ENTRY vtt_S19621C2[] = {
  {&(_ZTV8S19621C2[11]),  11,77},
  {&(_tg__ZTV8S19621C4__8S19621C2[3]),  3,5},
  {&(_tg__ZTV11S20759C5_nt__8S19621C4__8S19621C2[3]),  3,5},
  {&(_ZTV8S19621C2[16]),  16,77},
  {&(_ZTV8S19621C2[21]),  21,77},
  {&(_ZTV8S19621C2[33]),  33,77},
  {&(_ZTV8S19621C2[44]),  44,77},
  {&(_ZTV8S19621C2[54]),  54,77},
  {&(_ZTV8S19621C2[70]),  70,77},
  {&(_ZTV8S19621C2[59]),  59,77},
  {&(_ZTV8S19621C2[75]),  75,77},
  {&(_ZTV8S19621C2[65]),  65,77},
  {&(_ZTV8S19621C2[33]),  33,77},
  {&(_tg__ZTV8S19621C6__8S19621C2[10]),  10,12},
  {&(_tg__ZTV8S19621C7__8S19621C6__8S19621C2[9]),  9,11},
  {&(_tg__ZTV8S19621C8__8S19621C6__8S19621C2[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19621C6__8S19621C2[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C6__8S19621C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C6__8S19621C2[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C6__8S19621C2[4]),  4,6},
  {&(_tg__ZTV8S19621C6__8S19621C2[10]),  10,12},
  {&(_tg__ZTV8S19621C7__8S19621C2[9]),  9,11},
  {&(_tg__ZTV8S19621C8__8S19621C7__8S19621C2[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19621C7__8S19621C2[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C7__8S19621C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C7__8S19621C2[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C7__8S19621C2[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C7__8S19621C2[4]),  4,6},
  {&(_tg__ZTV8S19621C8__8S19621C2[7]),  7,9},
  {&(_tg__ZTV8S19621C98S19621C8__8S19621C2[4]),  4,6},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C118S19621C98S19621C8__8S19621C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19621C98S19621C8__8S19621C2[3]),  3,5},
  {&(_tg__ZTV9S19621C11__8S19621C98S19621C8__8S19621C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C98S19621C8__8S19621C2[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C2[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19621C8__8S19621C2[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C9__8S19621C8__8S19621C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C8__8S19621C2[3]),  3,5},
  {&(_tg__ZTV9S19621C12__8S19621C8__8S19621C2[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C8__8S19621C2[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C11__A1__8S19621C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19621C2[];
extern  VTBL_ENTRY _ZTV8S19621C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C2[];
static VTBL_ENTRY alt_thunk_names297[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19621C11D0Ev,_ZThn240_N9S19621C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19621C11D1Ev,_ZThn240_N9S19621C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19621C7D0Ev,_ZThn236_N8S19621C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19621C7D0Ev,_ZThn208_N8S19621C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19621C7D1Ev,_ZThn236_N8S19621C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19621C7D1Ev,_ZThn208_N8S19621C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19621C7D0Ev,_ZThn132_N8S19621C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19621C7D1Ev,_ZThn132_N8S19621C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19621C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19621C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19621C6D0Ev,_ZThn240_N8S19621C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19621C6D0Ev,_ZThn212_N8S19621C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19621C6D1Ev,_ZThn240_N8S19621C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19621C6D1Ev,_ZThn212_N8S19621C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C6D0Ev,_ZTv0_n32_N8S19621C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19621C6D0Ev,_ZThn136_N8S19621C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C6D1Ev,_ZTv0_n32_N8S19621C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19621C6D1Ev,_ZThn136_N8S19621C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19621C6D0Ev,_ZThn4_N8S19621C6D0Ev),
  (VTBL_ENTRY)_ZN8S19621C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19621C6D1Ev,_ZThn4_N8S19621C6D1Ev),
  (VTBL_ENTRY)_ZN8S19621C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C4D0Ev,_ZTv0_n12_N8S19621C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19621C4D0Ev,_ZThn8_N8S19621C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C4D1Ev,_ZTv0_n12_N8S19621C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19621C4D1Ev,_ZThn8_N8S19621C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C2D0Ev,_ZTv0_n32_N8S19621C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19621C2D0Ev,_ZThn164_N8S19621C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C2D1Ev,_ZTv0_n32_N8S19621C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19621C2D1Ev,_ZThn164_N8S19621C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19621C2D0Ev,_ZThn32_N8S19621C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19621C2D0Ev,_ZThn28_N8S19621C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19621C2D1Ev,_ZThn32_N8S19621C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19621C2D1Ev,_ZThn28_N8S19621C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19621C2D0Ev,_ZThn268_N8S19621C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19621C2D0Ev,_ZThn240_N8S19621C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19621C2D0Ev,_ZThn20_N8S19621C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19621C2D1Ev,_ZThn268_N8S19621C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19621C2D1Ev,_ZThn240_N8S19621C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19621C2D1Ev,_ZThn20_N8S19621C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19621C2 = {  "S19621C2", // class name
  bases_S19621C2, 18,
  &(vtc_S19621C2[0]), // expected_vtbl_contents
  &(vtt_S19621C2[0]), // expected_vtt_contents
  ABISELECT(384,280), // object size
  NSPAIRA(_ZTI8S19621C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19621C2),77, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19621C2),43, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names297,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19621C1  : virtual S19621C2 {
  void *s19621c1f0;
  ~S19621C1(); // tgen
  S19621C1(); // tgen
};
//SIG(1 S19621C1) C1{ VBC2{ BC3{ vd m FL} BC4{ VBC5{ vd m Fl} vd Fc[2]} VBC6{ VBC7{ VBC8{ BC9{ BC3 VBC10{ vd m Fi[6]} BC11{ VBC3 vd} FC10} BC12{ BC10 VBC13{ m} VBC14{ m} Fs} VBC11 vd} BC15{ m Fp} BC16{ m FC3[10]} vd Fi} vd}} Fp}


S19621C1 ::~S19621C1(){ note_dtor("S19621C1", this);} // tgen
S19621C1 ::S19621C1(){ note_ctor("S19621C1", this);} // tgen

static void Test_S19621C1()
{
  extern Class_Descriptor cd_S19621C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,72)];
    init_test(&cd_S19621C1, buf);
    S19621C1 *dp, &lv = *(dp=new (buf) S19621C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,284), "sizeof(S19621C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19621C1)");
    /*is_ambiguous_... S19621C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C2*), ABISELECT(16,8), "S19621C1");
    check_base_class_offset(lv, (S20759C5_nt*)(S19621C4*)(S19621C2*), ABISELECT(48,28), "S19621C1");
    check_base_class_offset(lv, (S19621C4*)(S19621C2*), ABISELECT(32,20), "S19621C1");
    /*is_ambiguous_... S19621C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C9*)(S19621C8*), ABISELECT(248,168), "S19621C1");
    check_base_class_offset(lv, (S20760C13*)(S19621C9*)(S19621C8*), ABISELECT(344,244), "S19621C1");
    check_base_class_offset(lv, (S20760C9*)(S19621C11*)(S19621C9*)(S19621C8*), ABISELECT(376,272), "S19621C1");
    /*is_ambiguous_... S19621C1::S19621C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C11*), ABISELECT(376,272), "S19621C1");
    check_base_class_offset(lv, (S19621C11*)(S19621C9*)(S19621C8*), ABISELECT(264,180), "S19621C1");
    check_base_class_offset(lv, (S19621C9*)(S19621C8*), ABISELECT(248,168), "S19621C1");
    check_base_class_offset(lv, (S20760C13*)(S19621C12*)(S19621C8*), ABISELECT(304,212), "S19621C1");
    check_base_class_offset(lv, (S4228C37*)(S19621C12*)(S19621C8*), 0, "S19621C1");
    check_base_class_offset(lv, (S4228C27*)(S19621C12*)(S19621C8*), 0, "S19621C1");
    check_base_class_offset(lv, (S19621C12*)(S19621C8*), ABISELECT(304,212), "S19621C1");
    /*is_ambiguous_... S19621C8::S19621C11 */ AMB_check_base_class_offset(lv, (S19621C11*)(S19621C8*), 0, "S19621C1");
    check_base_class_offset(lv, (S19621C8*)(S19621C7*), ABISELECT(248,168), "S19621C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S19621C7*), ABISELECT(72,40), "S19621C1");
    check_base_class_offset(lv, (S19115C12*)(S19621C7*), ABISELECT(80,44), "S19621C1");
    check_base_class_offset(lv, (S19621C7*)(S19621C6*), ABISELECT(64,36), "S19621C1");
    check_base_class_offset(lv, (S19621C6*)(S19621C2*), 0, "S19621C1");
    check_base_class_offset(lv, (S19621C2*), ABISELECT(16,8), "S19621C1");
    check_field_offset(lv, s19621c1f0, ABISELECT(8,4), "S19621C1.s19621c1f0");
    test_class_info(&lv, &cd_S19621C1);
    dp->~S19621C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19621C1(Test_S19621C1, "S19621C1", ABISELECT(392,284));

#else // __cplusplus

extern void _ZN8S19621C1C1Ev();
extern void _ZN8S19621C1D1Ev();
Name_Map name_map_S19621C1[] = {
  NSPAIR(_ZN8S19621C1C1Ev),
  NSPAIR(_ZN8S19621C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S19621C4;
extern VTBL_ENTRY _ZTI8S19621C4[];
extern  VTBL_ENTRY _ZTV8S19621C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
extern Class_Descriptor cd_S19621C9;
extern VTBL_ENTRY _ZTI8S19621C9[];
extern  VTBL_ENTRY _ZTV8S19621C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19621C12;
extern VTBL_ENTRY _ZTI9S19621C12[];
extern  VTBL_ENTRY _ZTV9S19621C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C12[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
extern Class_Descriptor cd_S19621C8;
extern VTBL_ENTRY _ZTI8S19621C8[];
extern  VTBL_ENTRY _ZTV8S19621C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C8[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S19621C7;
extern VTBL_ENTRY _ZTI8S19621C7[];
extern  VTBL_ENTRY _ZTV8S19621C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C7[];
extern Class_Descriptor cd_S19621C6;
extern VTBL_ENTRY _ZTI8S19621C6[];
extern  VTBL_ENTRY _ZTV8S19621C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C6[];
extern Class_Descriptor cd_S19621C2;
extern VTBL_ENTRY _ZTI8S19621C2[];
extern  VTBL_ENTRY _ZTV8S19621C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C2[];
static Base_Class bases_S19621C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20759C5_nt,    ABISELECT(48,28), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19621C4,    ABISELECT(32,20), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(248,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(344,244), //bcp->offset
    71, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(376,272), //bcp->offset
    76, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19621C11,    ABISELECT(264,180), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19621C9,    ABISELECT(248,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(304,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19621C12,    ABISELECT(304,212), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19621C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19621C8,    ABISELECT(248,168), //bcp->offset
    50, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19115C12,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19621C7,    ABISELECT(64,36), //bcp->offset
    39, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19621C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19621C2,    ABISELECT(16,8), //bcp->offset
    15, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19621C1[];
extern void ABISELECT(_ZTv0_n32_N8S19621C1D1Ev,_ZTv0_n16_N8S19621C1D1Ev)();
extern void _ZN8S19621C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C1D0Ev,_ZTv0_n16_N8S19621C1D0Ev)();
extern void _ZN8S19621C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19621C1D1Ev,_ZTv0_n48_N8S19621C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C1D1Ev,_ZThn8_N8S19621C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19621C1D0Ev,_ZTv0_n48_N8S19621C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S19621C1D0Ev,_ZThn8_N8S19621C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n96_N8S19621C1D1Ev,_ZTvn12_n48_N8S19621C1D1Ev)();
extern void ABISELECT(_ZTvn16_n96_N8S19621C1D0Ev,_ZTvn12_n48_N8S19621C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19621C1D1Ev,_ZTv0_n12_N8S19621C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19621C1D1Ev,_ZThn28_N8S19621C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C1D0Ev,_ZTv0_n12_N8S19621C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19621C1D0Ev,_ZThn28_N8S19621C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C1D1Ev,_ZTv0_n16_N8S19621C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19621C1D1Ev,_ZThn36_N8S19621C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C1D0Ev,_ZTv0_n16_N8S19621C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19621C1D0Ev,_ZThn36_N8S19621C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C1D1Ev,_ZTv0_n32_N8S19621C1D1Ev)();
extern void ABISELECT(_ZThn248_N8S19621C1D1Ev,_ZThn168_N8S19621C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C1D0Ev,_ZTv0_n32_N8S19621C1D0Ev)();
extern void ABISELECT(_ZThn248_N8S19621C1D0Ev,_ZThn168_N8S19621C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S19621C1D1Ev,_ZTvn12_n32_N8S19621C1D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C1D0Ev,_ZTvn12_n32_N8S19621C1D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C1D1Ev,_ZTvn44_n32_N8S19621C1D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C1D0Ev,_ZTvn44_n32_N8S19621C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19621C1D1Ev,_ZTv0_n12_N8S19621C1D1Ev)();
extern void ABISELECT(_ZThn344_N8S19621C1D1Ev,_ZThn244_N8S19621C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C1D0Ev,_ZTv0_n12_N8S19621C1D0Ev)();
extern void ABISELECT(_ZThn344_N8S19621C1D0Ev,_ZThn244_N8S19621C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C1D1Ev,_ZTv0_n12_N8S19621C1D1Ev)();
extern void ABISELECT(_ZThn376_N8S19621C1D1Ev,_ZThn272_N8S19621C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C1D0Ev,_ZTv0_n12_N8S19621C1D0Ev)();
extern void ABISELECT(_ZThn376_N8S19621C1D0Ev,_ZThn272_N8S19621C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19621C1[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(16,8),
  0,
  0,
  0,
  ABISELECT(344,244),
  ABISELECT(248,168),
  ABISELECT(64,36),
  0,
  ABISELECT(376,272),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C1D1Ev,_ZTv0_n16_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C1D0Ev,_ZTv0_n16_N8S19621C1D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(360,264),
  ABISELECT(328,236),
  ABISELECT(232,160),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19621C1D1Ev,_ZTv0_n48_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19621C1D0Ev,_ZTv0_n48_N8S19621C1D0Ev),
  ABISELECT(16,8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N8S19621C1D1Ev,_ZTvn12_n48_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N8S19621C1D0Ev,_ZTvn12_n48_N8S19621C1D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C1D1Ev,_ZTv0_n12_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C1D0Ev,_ZTv0_n12_N8S19621C1D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-64,-36),
  ABISELECT(312,236),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C1D1Ev,_ZTv0_n16_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C1D0Ev,_ZTv0_n16_N8S19621C1D0Ev),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-248,-168),
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C1D1Ev,_ZTv0_n32_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C1D0Ev,_ZTv0_n32_N8S19621C1D0Ev),
  ABISELECT(112,92),
  ABISELECT(-264,-180),
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C1D1Ev,_ZTvn12_n32_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C1D0Ev,_ZTvn12_n32_N8S19621C1D0Ev),
  ABISELECT(-304,-212),
  ABISELECT(-304,-212),
  ABISELECT(-304,-212),
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C1D1Ev,_ZTvn44_n32_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C1D0Ev,_ZTvn44_n32_N8S19621C1D0Ev),
  ABISELECT(-344,-244),
  ABISELECT(-344,-244),
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C1D1Ev,_ZTv0_n12_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C1D0Ev,_ZTv0_n12_N8S19621C1D0Ev),
  ABISELECT(-376,-272),
  ABISELECT(-376,-272),
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C1D1Ev,_ZTv0_n12_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C1D0Ev,_ZTv0_n12_N8S19621C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19621C1[];
extern void _ZN8S19621C2D1Ev();
extern void _ZN8S19621C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C2__8S19621C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(360,264),
  ABISELECT(328,236),
  ABISELECT(232,160),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&_ZN8S19621C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C2D0Ev,
};
extern void _ZN8S19621C4D1Ev();
extern void _ZN8S19621C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C48S19621C2__8S19621C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C4[0]),
  (VTBL_ENTRY)&_ZN8S19621C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19621C4D1Ev,_ZTv0_n12_N8S19621C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C4D1Ev,_ZThn8_N8S19621C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C4D0Ev,_ZTv0_n12_N8S19621C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S19621C4D0Ev,_ZThn8_N8S19621C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S19621C48S19621C2__8S19621C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19621C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C4D1Ev,_ZTv0_n12_N8S19621C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C4D0Ev,_ZTv0_n12_N8S19621C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C2D1Ev,_ZThn12_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C2D0Ev,_ZThn12_N8S19621C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19621C4__8S19621C2__8S19621C1[] = {
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C2D1Ev,_ZThn12_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C2D0Ev,_ZThn12_N8S19621C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S19621C2D1Ev,_ZThn20_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S19621C2D0Ev,_ZThn20_N8S19621C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S19621C2__8S19621C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19621C6__8S19621C2__8S19621C1[] = {
  0,
  0,
  0,
  ABISELECT(344,244),
  ABISELECT(248,168),
  ABISELECT(64,36),
  ABISELECT(16,8),
  ABISELECT(376,272),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19621C2D1Ev,_ZThn28_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19621C2D0Ev,_ZThn28_N8S19621C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C7__8S19621C2__8S19621C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-48,-28),
  ABISELECT(312,236),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19621C2D1Ev,_ZTv0_n32_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn232_N8S19621C2D1Ev,_ZThn160_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C2D0Ev,_ZTv0_n32_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn232_N8S19621C2D0Ev,_ZThn160_N8S19621C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C2__8S19621C1[] = {
  ABISELECT(-232,-160),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-232,-160),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C2D1Ev,_ZTv0_n32_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C2D0Ev,_ZTv0_n32_N8S19621C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn328_N8S19621C2D1Ev,_ZThn236_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn328_N8S19621C2D0Ev,_ZThn236_N8S19621C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C2__8S19621C1[] = {
  ABISELECT(-328,-236),
  ABISELECT(-328,-236),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19621C2D1Ev,_ZTvn12_n32_N8S19621C2D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C2D0Ev,_ZTvn12_n32_N8S19621C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C2__8S19621C1[] = {
  ABISELECT(112,92),
  ABISELECT(-248,-172),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C2D1Ev,_ZTvn12_n32_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C2D0Ev,_ZTvn12_n32_N8S19621C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn360_N8S19621C2D1Ev,_ZThn264_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn360_N8S19621C2D0Ev,_ZThn264_N8S19621C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__8S19621C2__8S19621C1[] = {
  ABISELECT(-360,-264),
  ABISELECT(-360,-264),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19621C2D1Ev,_ZTvn44_n32_N8S19621C2D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C2D0Ev,_ZTvn44_n32_N8S19621C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C2__8S19621C1[] = {
  ABISELECT(-304,-212),
  ABISELECT(-304,-212),
  ABISELECT(-288,-204),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C2D1Ev,_ZTvn44_n32_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C2D0Ev,_ZTvn44_n32_N8S19621C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev)();
extern void _ZN8S19621C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev)();
extern void _ZN8S19621C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C6__8S19621C1[] = {
  0,
  0,
  0,
  ABISELECT(344,244),
  ABISELECT(248,168),
  ABISELECT(64,36),
  0,
  ABISELECT(376,272),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S19621C6D1Ev,_ZThn36_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S19621C6D0Ev,_ZThn36_N8S19621C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C7__8S19621C6__8S19621C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-64,-36),
  ABISELECT(312,236),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19621C6D1Ev,_ZTv0_n32_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn248_N8S19621C6D1Ev,_ZThn168_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C6D0Ev,_ZTv0_n32_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn248_N8S19621C6D0Ev,_ZThn168_N8S19621C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C6__8S19621C1[] = {
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-248,-168),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C6D1Ev,_ZTv0_n32_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C6D0Ev,_ZTv0_n32_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn344_N8S19621C6D1Ev,_ZThn244_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn344_N8S19621C6D0Ev,_ZThn244_N8S19621C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C6__8S19621C1[] = {
  ABISELECT(-344,-244),
  ABISELECT(-344,-244),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19621C6D1Ev,_ZTvn12_n32_N8S19621C6D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C6D0Ev,_ZTvn12_n32_N8S19621C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C6__8S19621C1[] = {
  ABISELECT(112,92),
  ABISELECT(-264,-180),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C6D1Ev,_ZTvn12_n32_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C6D0Ev,_ZTvn12_n32_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn376_N8S19621C6D1Ev,_ZThn272_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn376_N8S19621C6D0Ev,_ZThn272_N8S19621C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C6__8S19621C1[] = {
  ABISELECT(-376,-272),
  ABISELECT(-376,-272),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19621C6D1Ev,_ZTvn44_n32_N8S19621C6D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C6D0Ev,_ZTvn44_n32_N8S19621C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C6__8S19621C1[] = {
  ABISELECT(-304,-212),
  ABISELECT(-304,-212),
  ABISELECT(-304,-212),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C6D1Ev,_ZTvn44_n32_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C6D0Ev,_ZTvn44_n32_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev)();
extern void _ZN8S19621C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev)();
extern void _ZN8S19621C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C7__8S19621C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn184_N8S19621C7D1Ev,_ZThn132_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn184_N8S19621C7D0Ev,_ZThn132_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C7__8S19621C1[] = {
  ABISELECT(-184,-132),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn280_N8S19621C7D1Ev,_ZThn208_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn280_N8S19621C7D0Ev,_ZThn208_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C7__8S19621C1[] = {
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19621C7D1Ev,_ZTvn12_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C7D0Ev,_ZTvn12_n32_N8S19621C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C7__8S19621C1[] = {
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C7D1Ev,_ZTvn12_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C7D0Ev,_ZTvn12_n32_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S19621C7D1Ev,_ZThn236_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S19621C7D0Ev,_ZThn236_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C7__8S19621C1[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19621C7D1Ev,_ZTvn44_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C7D0Ev,_ZTvn44_n32_N8S19621C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C7__8S19621C1[] = {
  ABISELECT(-304,-212),
  ABISELECT(-304,-212),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C7D1Ev,_ZTvn44_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C7D0Ev,_ZTvn44_n32_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C7__8S19621C1[] = {
  ABISELECT(64,36),
  ABISELECT(376,272),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev),
};
extern void _ZN8S19621C8D1Ev();
extern void _ZN8S19621C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C1[] = {
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&_ZN8S19621C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C8D0Ev,
};
extern void _ZN8S19621C9D1Ev();
extern void _ZN8S19621C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C98S19621C8__8S19621C1[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&_ZN8S19621C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C9D0Ev,
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C1[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C118S19621C98S19621C8__8S19621C1[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C98S19621C8__8S19621C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__8S19621C98S19621C8__8S19621C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C98S19621C8__8S19621C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void _ZN9S19621C12D1Ev();
extern void _ZN9S19621C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C1[] = {
  ABISELECT(-304,-212),
  ABISELECT(-304,-212),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C12[0]),
  (VTBL_ENTRY)&_ZN9S19621C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C8__8S19621C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C9__8S19621C8__8S19621C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C8__8S19621C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C12__8S19621C8__8S19621C1[] = {
  ABISELECT(-304,-212),
  ABISELECT(-304,-212),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C8__8S19621C1[] = {
  ABISELECT(248,168),
  ABISELECT(376,272),
  ABISELECT(248,168),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev),
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C1[] = {
  ABISELECT(376,272),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn376_N9S19621C11D1Ev,_ZThn272_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn376_N9S19621C11D0Ev,_ZThn272_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C11__A1__8S19621C1[] = {
  ABISELECT(-376,-272),
  ABISELECT(-376,-272),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
static  VTT_ENTRY vtt_S19621C1[] = {
  {&(_ZTV8S19621C1[13]),  13,81},
  {&(_ZTV8S19621C1[27]),  27,81},
  {&(_ZTV8S19621C1[32]),  32,81},
  {&(_ZTV8S19621C1[37]),  37,81},
  {&(_ZTV8S19621C1[13]),  13,81},
  {&(_ZTV8S19621C1[48]),  48,81},
  {&(_ZTV8S19621C1[58]),  58,81},
  {&(_ZTV8S19621C1[74]),  74,81},
  {&(_ZTV8S19621C1[63]),  63,81},
  {&(_ZTV8S19621C1[79]),  79,81},
  {&(_ZTV8S19621C1[69]),  69,81},
  {&(_ZTV8S19621C1[13]),  13,81},
  {&(_tg__ZTV8S19621C2__8S19621C1[11]),  11,13},
  {&(_tg__ZTV8S19621C48S19621C2__8S19621C1[3]),  3,5},
  {&(_tg__ZTV11S20759C5_nt__8S19621C48S19621C2__8S19621C1[3]),  3,5},
  {&(_tg__ZTV8S19621C4__8S19621C2__8S19621C1[3]),  3,5},
  {&(_tg__ZTV11S20759C5_nt__8S19621C2__8S19621C1[3]),  3,5},
  {&(_tg__ZTV8S19621C6__8S19621C2__8S19621C1[10]),  10,12},
  {&(_tg__ZTV8S19621C7__8S19621C2__8S19621C1[9]),  9,11},
  {&(_tg__ZTV8S19621C8__8S19621C2__8S19621C1[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19621C2__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C2__8S19621C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__8S19621C2__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C2__8S19621C1[4]),  4,6},
  {&(_tg__ZTV8S19621C6__8S19621C2__8S19621C1[10]),  10,12},
  {&(_tg__ZTV8S19621C6__8S19621C1[10]),  10,12},
  {&(_tg__ZTV8S19621C7__8S19621C6__8S19621C1[9]),  9,11},
  {&(_tg__ZTV8S19621C8__8S19621C6__8S19621C1[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19621C6__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C6__8S19621C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C6__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C6__8S19621C1[4]),  4,6},
  {&(_tg__ZTV8S19621C6__8S19621C1[10]),  10,12},
  {&(_tg__ZTV8S19621C7__8S19621C1[9]),  9,11},
  {&(_tg__ZTV8S19621C8__8S19621C7__8S19621C1[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19621C7__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C7__8S19621C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C7__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C7__8S19621C1[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C7__8S19621C1[4]),  4,6},
  {&(_tg__ZTV8S19621C8__8S19621C1[7]),  7,9},
  {&(_tg__ZTV8S19621C98S19621C8__8S19621C1[4]),  4,6},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C118S19621C98S19621C8__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19621C98S19621C8__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C11__8S19621C98S19621C8__8S19621C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C98S19621C8__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C1[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19621C8__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C9__8S19621C8__8S19621C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C8__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C12__8S19621C8__8S19621C1[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C8__8S19621C1[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C11__A1__8S19621C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19621C1[];
extern  VTBL_ENTRY _ZTV8S19621C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C1[];
static VTBL_ENTRY alt_thunk_names298[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N9S19621C11D0Ev,_ZThn272_N9S19621C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N9S19621C11D1Ev,_ZThn272_N9S19621C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19621C7D0Ev,_ZThn236_N8S19621C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19621C7D0Ev,_ZThn208_N8S19621C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19621C7D1Ev,_ZThn236_N8S19621C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19621C7D1Ev,_ZThn208_N8S19621C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19621C7D0Ev,_ZThn132_N8S19621C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19621C7D1Ev,_ZThn132_N8S19621C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19621C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19621C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19621C6D0Ev,_ZThn272_N8S19621C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19621C6D0Ev,_ZThn244_N8S19621C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19621C6D1Ev,_ZThn272_N8S19621C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19621C6D1Ev,_ZThn244_N8S19621C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C6D0Ev,_ZTv0_n32_N8S19621C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19621C6D0Ev,_ZThn168_N8S19621C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C6D1Ev,_ZTv0_n32_N8S19621C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19621C6D1Ev,_ZThn168_N8S19621C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19621C6D0Ev,_ZThn36_N8S19621C6D0Ev),
  (VTBL_ENTRY)_ZN8S19621C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19621C6D1Ev,_ZThn36_N8S19621C6D1Ev),
  (VTBL_ENTRY)_ZN8S19621C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C2D0Ev,_ZTv0_n32_N8S19621C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S19621C2D0Ev,_ZThn160_N8S19621C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C2D1Ev,_ZTv0_n32_N8S19621C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S19621C2D1Ev,_ZThn160_N8S19621C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19621C2D0Ev,_ZThn28_N8S19621C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19621C2D1Ev,_ZThn28_N8S19621C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S19621C2D0Ev,_ZThn264_N8S19621C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S19621C2D0Ev,_ZThn236_N8S19621C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19621C2D0Ev,_ZThn20_N8S19621C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S19621C2D1Ev,_ZThn264_N8S19621C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S19621C2D1Ev,_ZThn236_N8S19621C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19621C2D1Ev,_ZThn20_N8S19621C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C4D0Ev,_ZTv0_n12_N8S19621C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19621C4D0Ev,_ZThn8_N8S19621C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C4D1Ev,_ZTv0_n12_N8S19621C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19621C4D1Ev,_ZThn8_N8S19621C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C1D0Ev,_ZTv0_n32_N8S19621C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19621C1D0Ev,_ZThn168_N8S19621C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C1D1Ev,_ZTv0_n32_N8S19621C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19621C1D1Ev,_ZThn168_N8S19621C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C1D0Ev,_ZTv0_n12_N8S19621C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19621C1D0Ev,_ZThn272_N8S19621C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19621C1D0Ev,_ZThn244_N8S19621C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19621C1D0Ev,_ZThn28_N8S19621C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C1D1Ev,_ZTv0_n12_N8S19621C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19621C1D1Ev,_ZThn272_N8S19621C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19621C1D1Ev,_ZThn244_N8S19621C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19621C1D1Ev,_ZThn28_N8S19621C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19621C1D0Ev,_ZTv0_n48_N8S19621C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19621C1D0Ev,_ZThn8_N8S19621C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19621C1D1Ev,_ZTv0_n48_N8S19621C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19621C1D1Ev,_ZThn8_N8S19621C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C1D0Ev,_ZTv0_n16_N8S19621C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19621C1D0Ev,_ZThn36_N8S19621C1D0Ev),
  (VTBL_ENTRY)_ZN8S19621C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C1D1Ev,_ZTv0_n16_N8S19621C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19621C1D1Ev,_ZThn36_N8S19621C1D1Ev),
  (VTBL_ENTRY)_ZN8S19621C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19621C1 = {  "S19621C1", // class name
  bases_S19621C1, 19,
  &(vtc_S19621C1[0]), // expected_vtbl_contents
  &(vtt_S19621C1[0]), // expected_vtt_contents
  ABISELECT(392,284), // object size
  NSPAIRA(_ZTI8S19621C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19621C1),81, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19621C1),55, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names298,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10205C2  {
  char s10205c2f0;
  int s10205c2f1;
  void *s10205c2f2[3];
  char s10205c2f3[3];
  ::S4228C19_nt s10205c2f4;
  char s10205c2f5;
  void *s10205c2f6;
  int s10205c2f7[2];
  virtual  ~S10205C2(); // _ZN8S10205C2D1Ev
  virtual void  v8(); // _ZN8S10205C22v8Ev
  virtual void  v9(); // _ZN8S10205C22v9Ev
  virtual void  v10(); // _ZN8S10205C23v10Ev
  virtual void  v11(); // _ZN8S10205C23v11Ev
  virtual void  v12(); // _ZN8S10205C23v12Ev
  virtual void  v13(); // _ZN8S10205C23v13Ev
  virtual void  v14(); // _ZN8S10205C23v14Ev
  virtual void  v15(); // _ZN8S10205C23v15Ev
  virtual void  v16(); // _ZN8S10205C23v16Ev
  virtual void  v17(); // _ZN8S10205C23v17Ev
  virtual void  v18(); // _ZN8S10205C23v18Ev
  virtual void  v19(); // _ZN8S10205C23v19Ev
  virtual void  v20(); // _ZN8S10205C23v20Ev
  virtual void  v21(); // _ZN8S10205C23v21Ev
  S10205C2(); // tgen
};
//SIG(-1 S10205C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fc Fi Fp[3] Fc[3] FC2{ m Fp Fi FC3{ m}} Fc Fp Fi[2]}


 S10205C2 ::~S10205C2(){ note_dtor("S10205C2", this);}
void  S10205C2 ::v8(){vfunc_called(this, "_ZN8S10205C22v8Ev");}
void  S10205C2 ::v9(){vfunc_called(this, "_ZN8S10205C22v9Ev");}
void  S10205C2 ::v10(){vfunc_called(this, "_ZN8S10205C23v10Ev");}
void  S10205C2 ::v11(){vfunc_called(this, "_ZN8S10205C23v11Ev");}
void  S10205C2 ::v12(){vfunc_called(this, "_ZN8S10205C23v12Ev");}
void  S10205C2 ::v13(){vfunc_called(this, "_ZN8S10205C23v13Ev");}
void  S10205C2 ::v14(){vfunc_called(this, "_ZN8S10205C23v14Ev");}
void  S10205C2 ::v15(){vfunc_called(this, "_ZN8S10205C23v15Ev");}
void  S10205C2 ::v16(){vfunc_called(this, "_ZN8S10205C23v16Ev");}
void  S10205C2 ::v17(){vfunc_called(this, "_ZN8S10205C23v17Ev");}
void  S10205C2 ::v18(){vfunc_called(this, "_ZN8S10205C23v18Ev");}
void  S10205C2 ::v19(){vfunc_called(this, "_ZN8S10205C23v19Ev");}
void  S10205C2 ::v20(){vfunc_called(this, "_ZN8S10205C23v20Ev");}
void  S10205C2 ::v21(){vfunc_called(this, "_ZN8S10205C23v21Ev");}
S10205C2 ::S10205C2(){ note_ctor("S10205C2", this);} // tgen

static void Test_S10205C2()
{
  extern Class_Descriptor cd_S10205C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S10205C2, buf);
    S10205C2 *dp, &lv = *(dp=new (buf) S10205C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S10205C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10205C2)");
    check_field_offset(lv, s10205c2f0, ABISELECT(8,4), "S10205C2.s10205c2f0");
    check_field_offset(lv, s10205c2f1, ABISELECT(12,8), "S10205C2.s10205c2f1");
    check_field_offset(lv, s10205c2f2, ABISELECT(16,12), "S10205C2.s10205c2f2");
    check_field_offset(lv, s10205c2f3, ABISELECT(40,24), "S10205C2.s10205c2f3");
    check_field_offset(lv, s10205c2f4, ABISELECT(48,28), "S10205C2.s10205c2f4");
    check_field_offset(lv, s10205c2f5, ABISELECT(64,40), "S10205C2.s10205c2f5");
    check_field_offset(lv, s10205c2f6, ABISELECT(72,44), "S10205C2.s10205c2f6");
    check_field_offset(lv, s10205c2f7, ABISELECT(80,48), "S10205C2.s10205c2f7");
    test_class_info(&lv, &cd_S10205C2);
    dp->~S10205C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10205C2(Test_S10205C2, "S10205C2", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN8S10205C2C1Ev();
extern void _ZN8S10205C2D1Ev();
Name_Map name_map_S10205C2[] = {
  NSPAIR(_ZN8S10205C2C1Ev),
  NSPAIR(_ZN8S10205C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10205C2[];
extern void _ZN8S10205C2D1Ev();
extern void _ZN8S10205C2D0Ev();
extern void _ZN8S10205C22v8Ev();
extern void _ZN8S10205C22v9Ev();
extern void _ZN8S10205C23v10Ev();
extern void _ZN8S10205C23v11Ev();
extern void _ZN8S10205C23v12Ev();
extern void _ZN8S10205C23v13Ev();
extern void _ZN8S10205C23v14Ev();
extern void _ZN8S10205C23v15Ev();
extern void _ZN8S10205C23v16Ev();
extern void _ZN8S10205C23v17Ev();
extern void _ZN8S10205C23v18Ev();
extern void _ZN8S10205C23v19Ev();
extern void _ZN8S10205C23v20Ev();
extern void _ZN8S10205C23v21Ev();
static  VTBL_ENTRY vtc_S10205C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10205C2[0]),
  (VTBL_ENTRY)&_ZN8S10205C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10205C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10205C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10205C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v16Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v17Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v18Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v19Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v20Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v21Ev,
};
extern VTBL_ENTRY _ZTI8S10205C2[];
extern  VTBL_ENTRY _ZTV8S10205C2[];
Class_Descriptor cd_S10205C2 = {  "S10205C2", // class name
  0,0,//no base classes
  &(vtc_S10205C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI8S10205C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10205C2),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10205C1  : S10205C2 {
  ::S4228C24 s10205c1f0;
  char s10205c1f1[2];
  virtual  ~S10205C1(); // _ZN8S10205C1D1Ev
  virtual void  v1(); // _ZN8S10205C12v1Ev
  virtual void  v2(); // _ZN8S10205C12v2Ev
  virtual void  v3(); // _ZN8S10205C12v3Ev
  virtual void  v4(); // _ZN8S10205C12v4Ev
  virtual void  v5(); // _ZN8S10205C12v5Ev
  virtual void  v6(); // _ZN8S10205C12v6Ev
  virtual void  v7(); // _ZN8S10205C12v7Ev
  S10205C1(); // tgen
};
//SIG(1 S10205C1) C1{ BC2{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 Fc Fi Fp[3] Fc[3] FC3{ m Fp Fi FC4{ m}} Fc Fp Fi[2]} vd v1 v2 v3 v4 v5 v6 v7 FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}} Fc[2]}


 S10205C1 ::~S10205C1(){ note_dtor("S10205C1", this);}
void  S10205C1 ::v1(){vfunc_called(this, "_ZN8S10205C12v1Ev");}
void  S10205C1 ::v2(){vfunc_called(this, "_ZN8S10205C12v2Ev");}
void  S10205C1 ::v3(){vfunc_called(this, "_ZN8S10205C12v3Ev");}
void  S10205C1 ::v4(){vfunc_called(this, "_ZN8S10205C12v4Ev");}
void  S10205C1 ::v5(){vfunc_called(this, "_ZN8S10205C12v5Ev");}
void  S10205C1 ::v6(){vfunc_called(this, "_ZN8S10205C12v6Ev");}
void  S10205C1 ::v7(){vfunc_called(this, "_ZN8S10205C12v7Ev");}
S10205C1 ::S10205C1(){ note_ctor("S10205C1", this);} // tgen

static void Test_S10205C1()
{
  extern Class_Descriptor cd_S10205C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S10205C1, buf);
    S10205C1 *dp, &lv = *(dp=new (buf) S10205C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S10205C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10205C1)");
    check_base_class_offset(lv, (S10205C2*), 0, "S10205C1");
    check_field_offset(lv, s10205c1f0, ABISELECT(88,56), "S10205C1.s10205c1f0");
    check_field_offset(lv, s10205c1f1, ABISELECT(104,68), "S10205C1.s10205c1f1");
    test_class_info(&lv, &cd_S10205C1);
    dp->~S10205C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10205C1(Test_S10205C1, "S10205C1", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN8S10205C1C1Ev();
extern void _ZN8S10205C1D1Ev();
Name_Map name_map_S10205C1[] = {
  NSPAIR(_ZN8S10205C1C1Ev),
  NSPAIR(_ZN8S10205C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10205C2;
extern VTBL_ENTRY _ZTI8S10205C2[];
extern  VTBL_ENTRY _ZTV8S10205C2[];
static Base_Class bases_S10205C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10205C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10205C1[];
extern void _ZN8S10205C1D1Ev();
extern void _ZN8S10205C1D0Ev();
extern void _ZN8S10205C22v8Ev();
extern void _ZN8S10205C22v9Ev();
extern void _ZN8S10205C23v10Ev();
extern void _ZN8S10205C23v11Ev();
extern void _ZN8S10205C23v12Ev();
extern void _ZN8S10205C23v13Ev();
extern void _ZN8S10205C23v14Ev();
extern void _ZN8S10205C23v15Ev();
extern void _ZN8S10205C23v16Ev();
extern void _ZN8S10205C23v17Ev();
extern void _ZN8S10205C23v18Ev();
extern void _ZN8S10205C23v19Ev();
extern void _ZN8S10205C23v20Ev();
extern void _ZN8S10205C23v21Ev();
extern void _ZN8S10205C12v1Ev();
extern void _ZN8S10205C12v2Ev();
extern void _ZN8S10205C12v3Ev();
extern void _ZN8S10205C12v4Ev();
extern void _ZN8S10205C12v5Ev();
extern void _ZN8S10205C12v6Ev();
extern void _ZN8S10205C12v7Ev();
static  VTBL_ENTRY vtc_S10205C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10205C1[0]),
  (VTBL_ENTRY)&_ZN8S10205C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10205C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10205C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10205C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v16Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v17Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v18Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v19Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v20Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v21Ev,
  (VTBL_ENTRY)&_ZN8S10205C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10205C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10205C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10205C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10205C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10205C12v6Ev,
  (VTBL_ENTRY)&_ZN8S10205C12v7Ev,
};
extern VTBL_ENTRY _ZTI8S10205C1[];
extern  VTBL_ENTRY _ZTV8S10205C1[];
Class_Descriptor cd_S10205C1 = {  "S10205C1", // class name
  bases_S10205C1, 1,
  &(vtc_S10205C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI8S10205C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10205C1),25, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6994C2  {
  short s6994c2f0;
  int s6994c2f1;
  virtual void  v6(); // _ZN7S6994C22v6Ev
  virtual void  v7(); // _ZN7S6994C22v7Ev
  virtual void  v8(); // _ZN7S6994C22v8Ev
  ~S6994C2(); // tgen
  S6994C2(); // tgen
};
//SIG(-1 S6994C2) C1{ v1 v2 v3 Fs Fi}


void  S6994C2 ::v6(){vfunc_called(this, "_ZN7S6994C22v6Ev");}
void  S6994C2 ::v7(){vfunc_called(this, "_ZN7S6994C22v7Ev");}
void  S6994C2 ::v8(){vfunc_called(this, "_ZN7S6994C22v8Ev");}
S6994C2 ::~S6994C2(){ note_dtor("S6994C2", this);} // tgen
S6994C2 ::S6994C2(){ note_ctor("S6994C2", this);} // tgen

static void Test_S6994C2()
{
  extern Class_Descriptor cd_S6994C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S6994C2, buf);
    S6994C2 *dp, &lv = *(dp=new (buf) S6994C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S6994C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6994C2)");
    check_field_offset(lv, s6994c2f0, ABISELECT(8,4), "S6994C2.s6994c2f0");
    check_field_offset(lv, s6994c2f1, ABISELECT(12,8), "S6994C2.s6994c2f1");
    test_class_info(&lv, &cd_S6994C2);
    dp->~S6994C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6994C2(Test_S6994C2, "S6994C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S6994C2C1Ev();
extern void _ZN7S6994C2D1Ev();
Name_Map name_map_S6994C2[] = {
  NSPAIR(_ZN7S6994C2C1Ev),
  NSPAIR(_ZN7S6994C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6994C2[];
extern void _ZN7S6994C22v6Ev();
extern void _ZN7S6994C22v7Ev();
extern void _ZN7S6994C22v8Ev();
static  VTBL_ENTRY vtc_S6994C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6994C2[0]),
  (VTBL_ENTRY)&_ZN7S6994C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6994C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6994C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S6994C2[];
extern  VTBL_ENTRY _ZTV7S6994C2[];
Class_Descriptor cd_S6994C2 = {  "S6994C2", // class name
  0,0,//no base classes
  &(vtc_S6994C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6994C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6994C2),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6994C4  {
  __tsi64 s6994c4f0;
  virtual void  v9(); // _ZN7S6994C42v9Ev
  virtual void  v10(); // _ZN7S6994C43v10Ev
  virtual void  v11(); // _ZN7S6994C43v11Ev
  ~S6994C4(); // tgen
  S6994C4(); // tgen
};
//SIG(-1 S6994C4) C1{ v1 v2 v3 FL}


void  S6994C4 ::v9(){vfunc_called(this, "_ZN7S6994C42v9Ev");}
void  S6994C4 ::v10(){vfunc_called(this, "_ZN7S6994C43v10Ev");}
void  S6994C4 ::v11(){vfunc_called(this, "_ZN7S6994C43v11Ev");}
S6994C4 ::~S6994C4(){ note_dtor("S6994C4", this);} // tgen
S6994C4 ::S6994C4(){ note_ctor("S6994C4", this);} // tgen

static void Test_S6994C4()
{
  extern Class_Descriptor cd_S6994C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S6994C4, buf);
    S6994C4 *dp, &lv = *(dp=new (buf) S6994C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S6994C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6994C4)");
    check_field_offset(lv, s6994c4f0, ABISELECT(8,4), "S6994C4.s6994c4f0");
    test_class_info(&lv, &cd_S6994C4);
    dp->~S6994C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6994C4(Test_S6994C4, "S6994C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S6994C4C1Ev();
extern void _ZN7S6994C4D1Ev();
Name_Map name_map_S6994C4[] = {
  NSPAIR(_ZN7S6994C4C1Ev),
  NSPAIR(_ZN7S6994C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6994C4[];
extern void _ZN7S6994C42v9Ev();
extern void _ZN7S6994C43v10Ev();
extern void _ZN7S6994C43v11Ev();
static  VTBL_ENTRY vtc_S6994C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6994C4[0]),
  (VTBL_ENTRY)&_ZN7S6994C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6994C43v10Ev,
  (VTBL_ENTRY)&_ZN7S6994C43v11Ev,
};
extern VTBL_ENTRY _ZTI7S6994C4[];
extern  VTBL_ENTRY _ZTV7S6994C4[];
Class_Descriptor cd_S6994C4 = {  "S6994C4", // class name
  0,0,//no base classes
  &(vtc_S6994C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6994C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6994C4),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6994C3  : S6994C4 {
  __tsi64 s6994c3f0;
  virtual void  v12(); // _ZN7S6994C33v12Ev
  virtual void  v13(); // _ZN7S6994C33v13Ev
  virtual void  v14(); // _ZN7S6994C33v14Ev
  virtual void  v15(); // _ZN7S6994C33v15Ev
  virtual void  v16(); // _ZN7S6994C33v16Ev
  ~S6994C3(); // tgen
  S6994C3(); // tgen
};
//SIG(-1 S6994C3) C1{ BC2{ v6 v7 v8 FL} v1 v2 v3 v4 v5 FL}


void  S6994C3 ::v12(){vfunc_called(this, "_ZN7S6994C33v12Ev");}
void  S6994C3 ::v13(){vfunc_called(this, "_ZN7S6994C33v13Ev");}
void  S6994C3 ::v14(){vfunc_called(this, "_ZN7S6994C33v14Ev");}
void  S6994C3 ::v15(){vfunc_called(this, "_ZN7S6994C33v15Ev");}
void  S6994C3 ::v16(){vfunc_called(this, "_ZN7S6994C33v16Ev");}
S6994C3 ::~S6994C3(){ note_dtor("S6994C3", this);} // tgen
S6994C3 ::S6994C3(){ note_ctor("S6994C3", this);} // tgen

static void Test_S6994C3()
{
  extern Class_Descriptor cd_S6994C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S6994C3, buf);
    S6994C3 *dp, &lv = *(dp=new (buf) S6994C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S6994C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6994C3)");
    check_base_class_offset(lv, (S6994C4*), 0, "S6994C3");
    check_field_offset(lv, s6994c3f0, ABISELECT(16,12), "S6994C3.s6994c3f0");
    test_class_info(&lv, &cd_S6994C3);
    dp->~S6994C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6994C3(Test_S6994C3, "S6994C3", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN7S6994C3C1Ev();
extern void _ZN7S6994C3D1Ev();
Name_Map name_map_S6994C3[] = {
  NSPAIR(_ZN7S6994C3C1Ev),
  NSPAIR(_ZN7S6994C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6994C4;
extern VTBL_ENTRY _ZTI7S6994C4[];
extern  VTBL_ENTRY _ZTV7S6994C4[];
static Base_Class bases_S6994C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6994C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6994C3[];
extern void _ZN7S6994C42v9Ev();
extern void _ZN7S6994C43v10Ev();
extern void _ZN7S6994C43v11Ev();
extern void _ZN7S6994C33v12Ev();
extern void _ZN7S6994C33v13Ev();
extern void _ZN7S6994C33v14Ev();
extern void _ZN7S6994C33v15Ev();
extern void _ZN7S6994C33v16Ev();
static  VTBL_ENTRY vtc_S6994C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6994C3[0]),
  (VTBL_ENTRY)&_ZN7S6994C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6994C43v10Ev,
  (VTBL_ENTRY)&_ZN7S6994C43v11Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v12Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v13Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v14Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v15Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v16Ev,
};
extern VTBL_ENTRY _ZTI7S6994C3[];
extern  VTBL_ENTRY _ZTV7S6994C3[];
Class_Descriptor cd_S6994C3 = {  "S6994C3", // class name
  bases_S6994C3, 1,
  &(vtc_S6994C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI7S6994C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6994C3),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6994C1  : S6994C2 , virtual S6994C3 {
  ::S19951C8 s6994c1f0;
  int s6994c1f1;
  short s6994c1f2;
  virtual void  v1(); // _ZN7S6994C12v1Ev
  virtual void  v2(); // _ZN7S6994C12v2Ev
  virtual void  v3(); // _ZN7S6994C12v3Ev
  virtual void  v4(); // _ZN7S6994C12v4Ev
  virtual void  v5(); // _ZN7S6994C12v5Ev
  ~S6994C1(); // tgen
  S6994C1(); // tgen
};
//SIG(1 S6994C1) C1{ BC2{ v6 v7 v8 Fs Fi} VBC3{ BC4{ v9 v10 v11 FL} v12 v13 v14 v15 v16 FL} v1 v2 v3 v4 v5 FC5{ BC6{ v19 v20 v21 FL} BC7{ v22 v23 v24 v25 v26 FD[5]} VBC8{ BC6 v27 v28 v29 v30 v31 v32} VBC9{ BC6 v33 v34 v35 v36 v37 FL} v17 v18} Fi Fs}


void  S6994C1 ::v1(){vfunc_called(this, "_ZN7S6994C12v1Ev");}
void  S6994C1 ::v2(){vfunc_called(this, "_ZN7S6994C12v2Ev");}
void  S6994C1 ::v3(){vfunc_called(this, "_ZN7S6994C12v3Ev");}
void  S6994C1 ::v4(){vfunc_called(this, "_ZN7S6994C12v4Ev");}
void  S6994C1 ::v5(){vfunc_called(this, "_ZN7S6994C12v5Ev");}
S6994C1 ::~S6994C1(){ note_dtor("S6994C1", this);} // tgen
S6994C1 ::S6994C1(){ note_ctor("S6994C1", this);} // tgen

static void Test_S6994C1()
{
  extern Class_Descriptor cd_S6994C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,38)];
    init_test(&cd_S6994C1, buf);
    S6994C1 *dp, &lv = *(dp=new (buf) S6994C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,148), "sizeof(S6994C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6994C1)");
    check_base_class_offset(lv, (S6994C2*), 0, "S6994C1");
    check_base_class_offset(lv, (S6994C4*)(S6994C3*), ABISELECT(184,128), "S6994C1");
    check_base_class_offset(lv, (S6994C3*), ABISELECT(184,128), "S6994C1");
    check_field_offset(lv, s6994c1f0, ABISELECT(16,12), "S6994C1.s6994c1f0");
    check_field_offset(lv, s6994c1f1, ABISELECT(176,120), "S6994C1.s6994c1f1");
    check_field_offset(lv, s6994c1f2, ABISELECT(180,124), "S6994C1.s6994c1f2");
    test_class_info(&lv, &cd_S6994C1);
    dp->~S6994C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6994C1(Test_S6994C1, "S6994C1", ABISELECT(208,148));

#else // __cplusplus

extern void _ZN7S6994C1C1Ev();
extern void _ZN7S6994C1D1Ev();
Name_Map name_map_S6994C1[] = {
  NSPAIR(_ZN7S6994C1C1Ev),
  NSPAIR(_ZN7S6994C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6994C2;
extern VTBL_ENTRY _ZTI7S6994C2[];
extern  VTBL_ENTRY _ZTV7S6994C2[];
extern Class_Descriptor cd_S6994C4;
extern VTBL_ENTRY _ZTI7S6994C4[];
extern  VTBL_ENTRY _ZTV7S6994C4[];
extern Class_Descriptor cd_S6994C3;
extern VTBL_ENTRY _ZTI7S6994C3[];
extern  VTBL_ENTRY _ZTV7S6994C3[];
static Base_Class bases_S6994C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6994C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6994C4,    ABISELECT(184,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S6994C3,    ABISELECT(184,128), //bcp->offset
    11, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6994C1[];
extern void _ZN7S6994C22v6Ev();
extern void _ZN7S6994C22v7Ev();
extern void _ZN7S6994C22v8Ev();
extern void _ZN7S6994C12v1Ev();
extern void _ZN7S6994C12v2Ev();
extern void _ZN7S6994C12v3Ev();
extern void _ZN7S6994C12v4Ev();
extern void _ZN7S6994C12v5Ev();
extern void _ZN7S6994C42v9Ev();
extern void _ZN7S6994C43v10Ev();
extern void _ZN7S6994C43v11Ev();
extern void _ZN7S6994C33v12Ev();
extern void _ZN7S6994C33v13Ev();
extern void _ZN7S6994C33v14Ev();
extern void _ZN7S6994C33v15Ev();
extern void _ZN7S6994C33v16Ev();
static  VTBL_ENTRY vtc_S6994C1[] = {
  ABISELECT(184,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S6994C1[0]),
  (VTBL_ENTRY)&_ZN7S6994C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6994C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6994C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6994C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6994C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6994C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6994C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6994C12v5Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI7S6994C1[0]),
  (VTBL_ENTRY)&_ZN7S6994C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6994C43v10Ev,
  (VTBL_ENTRY)&_ZN7S6994C43v11Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v12Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v13Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v14Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v15Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v16Ev,
};
extern VTBL_ENTRY _ZTV7S6994C1[];
static  VTT_ENTRY vtt_S6994C1[] = {
  {&(_ZTV7S6994C1[3]),  3,29},
  {&(_ZTV7S6994C1[21]),  21,29},
};
extern VTBL_ENTRY _ZTI7S6994C1[];
extern  VTBL_ENTRY _ZTV7S6994C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6994C1[];
Class_Descriptor cd_S6994C1 = {  "S6994C1", // class name
  bases_S6994C1, 3,
  &(vtc_S6994C1[0]), // expected_vtbl_contents
  &(vtt_S6994C1[0]), // expected_vtt_contents
  ABISELECT(208,148), // object size
  NSPAIRA(_ZTI7S6994C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6994C1),29, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6994C1),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19849C8  : virtual S20760C9 {
  virtual  ~S19849C8(); // _ZN8S19849C8D2Ev
  S19849C8(); // tgen
};
//SIG(-1 S19849C8) C1{ VBC2{ vd m FL} vd}


 S19849C8 ::~S19849C8(){ note_dtor("S19849C8", this);}
S19849C8 ::S19849C8(){ note_ctor("S19849C8", this);} // tgen

static void Test_S19849C8()
{
  extern Class_Descriptor cd_S19849C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19849C8, buf);
    S19849C8 *dp, &lv = *(dp=new (buf) S19849C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19849C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19849C8)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S19849C8");
    test_class_info(&lv, &cd_S19849C8);
    dp->~S19849C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19849C8(Test_S19849C8, "S19849C8", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19849C8C1Ev();
extern void _ZN8S19849C8D2Ev();
Name_Map name_map_S19849C8[] = {
  NSPAIR(_ZN8S19849C8C1Ev),
  NSPAIR(_ZN8S19849C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S19849C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19849C8[];
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZThn8_N8S19849C8D1Ev,_ZThn4_N8S19849C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
extern void ABISELECT(_ZThn8_N8S19849C8D0Ev,_ZThn4_N8S19849C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19849C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19849C8[];
static  VTT_ENTRY vtt_S19849C8[] = {
  {&(_ZTV8S19849C8[3]),  3,10},
  {&(_ZTV8S19849C8[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
static VTBL_ENTRY alt_thunk_names299[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19849C8D0Ev,_ZThn4_N8S19849C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19849C8D1Ev,_ZThn4_N8S19849C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19849C8 = {  "S19849C8", // class name
  bases_S19849C8, 1,
  &(vtc_S19849C8[0]), // expected_vtbl_contents
  &(vtt_S19849C8[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19849C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19849C8),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19849C8),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names299,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19849C6  : S20760C9 , virtual S20760C13 , S19849C8 {
  ::S20760C13 s19849c6f0;
  ~S19849C6(); // tgen
  S19849C6(); // tgen
};
//SIG(-1 S19849C6) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S19849C6 ::~S19849C6(){ note_dtor("S19849C6", this);} // tgen
S19849C6 ::S19849C6(){ note_ctor("S19849C6", this);} // tgen

static void Test_S19849C6()
{
  extern Class_Descriptor cd_S19849C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S19849C6, buf);
    S19849C6 *dp, &lv = *(dp=new (buf) S19849C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S19849C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19849C6)");
    /*is_ambiguous_... S19849C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S19849C6");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S19849C6");
    check_base_class_offset(lv, (S20760C9*)(S19849C8*), ABISELECT(88,72), "S19849C6");
    check_base_class_offset(lv, (S19849C8*), ABISELECT(16,12), "S19849C6");
    check_field_offset(lv, s19849c6f0, ABISELECT(24,16), "S19849C6.s19849c6f0");
    test_class_info(&lv, &cd_S19849C6);
    dp->~S19849C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19849C6(Test_S19849C6, "S19849C6", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S19849C6C1Ev();
extern void _ZN8S19849C6D1Ev();
Name_Map name_map_S19849C6[] = {
  NSPAIR(_ZN8S19849C6C1Ev),
  NSPAIR(_ZN8S19849C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
static Base_Class bases_S19849C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19849C8,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19849C6[];
extern void _ZN8S19849C6D1Ev();
extern void _ZN8S19849C6D0Ev();
extern void ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn88_N8S19849C6D1Ev,_ZThn72_N8S19849C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
extern void ABISELECT(_ZThn88_N8S19849C6D0Ev,_ZThn72_N8S19849C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19849C6[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&_ZN8S19849C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C6D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19849C6[];
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C8__8S19849C6[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZThn72_N8S19849C8D1Ev,_ZThn60_N8S19849C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
extern void ABISELECT(_ZThn72_N8S19849C8D0Ev,_ZThn60_N8S19849C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C8__8S19849C6[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
static  VTT_ENTRY vtt_S19849C6[] = {
  {&(_ZTV8S19849C6[4]),  4,21},
  {&(_tg__ZTV8S19849C8__8S19849C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C8__8S19849C6[3]),  3,5},
  {&(_ZTV8S19849C6[14]),  14,21},
  {&(_ZTV8S19849C6[9]),  9,21},
  {&(_ZTV8S19849C6[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S19849C6[];
extern  VTBL_ENTRY _ZTV8S19849C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C6[];
static VTBL_ENTRY alt_thunk_names300[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19849C8D0Ev,_ZThn60_N8S19849C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19849C8D1Ev,_ZThn60_N8S19849C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19849C6D0Ev,_ZThn72_N8S19849C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19849C6D1Ev,_ZThn72_N8S19849C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19849C6 = {  "S19849C6", // class name
  bases_S19849C6, 4,
  &(vtc_S19849C6[0]), // expected_vtbl_contents
  &(vtt_S19849C6[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S19849C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19849C6),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19849C6),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names300,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19849C4  : virtual S20760C13 , virtual S19849C6 {
  long double s19849c4f0;
  ~S19849C4(); // tgen
  S19849C4(); // tgen
};
//SIG(-1 S19849C4) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S19849C4 ::~S19849C4(){ note_dtor("S19849C4", this);} // tgen
S19849C4 ::S19849C4(){ note_ctor("S19849C4", this);} // tgen

static void Test_S19849C4()
{
  extern Class_Descriptor cd_S19849C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S19849C4, buf);
    S19849C4 *dp, &lv = *(dp=new (buf) S19849C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S19849C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19849C4)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S19849C4");
    check_base_class_offset(lv, (S20760C13*)(S19849C6*), ABISELECT(32,16), "S19849C4");
    /*is_ambiguous_... S19849C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C6*), ABISELECT(64,44), "S19849C4");
    check_base_class_offset(lv, (S20760C9*)(S19849C8*)(S19849C6*), ABISELECT(120,88), "S19849C4");
    check_base_class_offset(lv, (S19849C8*)(S19849C6*), ABISELECT(80,56), "S19849C4");
    check_base_class_offset(lv, (S19849C6*), ABISELECT(64,44), "S19849C4");
    check_field_offset(lv, s19849c4f0, ABISELECT(16,4), "S19849C4.s19849c4f0");
    test_class_info(&lv, &cd_S19849C4);
    dp->~S19849C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19849C4(Test_S19849C4, "S19849C4", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN8S19849C4C1Ev();
extern void _ZN8S19849C4D1Ev();
Name_Map name_map_S19849C4[] = {
  NSPAIR(_ZN8S19849C4C1Ev),
  NSPAIR(_ZN8S19849C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
extern Class_Descriptor cd_S19849C6;
extern VTBL_ENTRY _ZTI8S19849C6[];
extern  VTBL_ENTRY _ZTV8S19849C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C6[];
static Base_Class bases_S19849C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19849C8,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19849C6,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19849C4[];
extern void _ZN8S19849C4D1Ev();
extern void _ZN8S19849C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19849C4D1Ev,_ZThn16_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S19849C4D0Ev,_ZThn16_N8S19849C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S19849C4D1Ev,_ZThn44_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S19849C4D0Ev,_ZThn44_N8S19849C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn120_N8S19849C4D1Ev,_ZThn88_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn120_N8S19849C4D0Ev,_ZThn88_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19849C4[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&_ZN8S19849C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C4D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19849C4[];
extern void _ZN8S19849C6D1Ev();
extern void _ZN8S19849C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C4[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&_ZN8S19849C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C6D0Ev,
};
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C4[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C88S19849C6__8S19849C4[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C6__8S19849C4[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C8__8S19849C6__8S19849C4[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C6__8S19849C4[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
static  VTT_ENTRY vtt_S19849C4[] = {
  {&(_ZTV8S19849C4[5]),  5,29},
  {&(_ZTV8S19849C4[10]),  10,29},
  {&(_ZTV8S19849C4[17]),  17,29},
  {&(_ZTV8S19849C4[22]),  22,29},
  {&(_ZTV8S19849C4[27]),  27,29},
  {&(_tg__ZTV8S19849C6__8S19849C4[4]),  4,6},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C88S19849C6__8S19849C4[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19849C6__8S19849C4[3]),  3,5},
  {&(_tg__ZTV8S19849C8__8S19849C6__8S19849C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C6__8S19849C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19849C4[];
extern  VTBL_ENTRY _ZTV8S19849C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C4[];
static VTBL_ENTRY alt_thunk_names301[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C4D0Ev,_ZThn44_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C4D1Ev,_ZThn44_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19849C4D0Ev,_ZThn88_N8S19849C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C4D0Ev,_ZThn16_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19849C4D1Ev,_ZThn88_N8S19849C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C4D1Ev,_ZThn16_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19849C4 = {  "S19849C4", // class name
  bases_S19849C4, 5,
  &(vtc_S19849C4[0]), // expected_vtbl_contents
  &(vtt_S19849C4[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI8S19849C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19849C4),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19849C4),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names301,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19849C10  : S4161C4_nt , S19849C4 , S20760C22_nt , virtual S19849C8 {
  virtual  ~S19849C10(); // _ZN9S19849C10D2Ev
  S19849C10(); // tgen
};
//SIG(-1 S19849C10) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S19849C10 ::~S19849C10(){ note_dtor("S19849C10", this);}
S19849C10 ::S19849C10(){ note_ctor("S19849C10", this);} // tgen

static void Test_S19849C10()
{
  extern Class_Descriptor cd_S19849C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S19849C10, buf);
    S19849C10 *dp, &lv = *(dp=new (buf) S19849C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S19849C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19849C10)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S19849C10");
    check_base_class_offset(lv, (S20760C13*)(S19849C4*), ABISELECT(48,24), "S19849C10");
    check_base_class_offset(lv, (S20760C13*)(S19849C6*), ABISELECT(48,24), "S19849C10");
    /*is_ambiguous_... S19849C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C6*), ABISELECT(80,52), "S19849C10");
    check_base_class_offset(lv, (S20760C9*)(S19849C8*)(S19849C6*), ABISELECT(136,96), "S19849C10");
    /*is_ambiguous_... S19849C10::S19849C8 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C8*), ABISELECT(136,96), "S19849C10");
    check_base_class_offset(lv, (S19849C8*)(S19849C6*), ABISELECT(96,64), "S19849C10");
    check_base_class_offset(lv, (S19849C6*)(S19849C4*), ABISELECT(80,52), "S19849C10");
    check_base_class_offset(lv, (S19849C4*), 0, "S19849C10");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S19849C10");
    /*is_ambiguous_... S19849C10::S19849C8 */ AMB_check_base_class_offset(lv, (S19849C8*), ABISELECT(152,108), "S19849C10");
    test_class_info(&lv, &cd_S19849C10);
    dp->~S19849C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19849C10(Test_S19849C10, "S19849C10", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN9S19849C10C1Ev();
extern void _ZN9S19849C10D2Ev();
Name_Map name_map_S19849C10[] = {
  NSPAIR(_ZN9S19849C10C1Ev),
  NSPAIR(_ZN9S19849C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
extern Class_Descriptor cd_S19849C6;
extern VTBL_ENTRY _ZTI8S19849C6[];
extern  VTBL_ENTRY _ZTV8S19849C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C6[];
extern Class_Descriptor cd_S19849C4;
extern VTBL_ENTRY _ZTI8S19849C4[];
extern  VTBL_ENTRY _ZTV8S19849C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C4[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
static Base_Class bases_S19849C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19849C8,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19849C6,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19849C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19849C8,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19849C10[];
extern void _ZN9S19849C10D1Ev();
extern void _ZN9S19849C10D0Ev();
extern void ABISELECT(_ZThn40_N9S19849C10D1Ev,_ZThn20_N9S19849C10D1Ev)();
extern void ABISELECT(_ZThn40_N9S19849C10D0Ev,_ZThn20_N9S19849C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19849C10D1Ev,_ZThn24_N9S19849C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev)();
extern void ABISELECT(_ZThn48_N9S19849C10D0Ev,_ZThn24_N9S19849C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S19849C10D1Ev,_ZThn52_N9S19849C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S19849C10D0Ev,_ZThn52_N9S19849C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S19849C10D1Ev,_ZTvn12_n20_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19849C10D0Ev,_ZTvn12_n20_N9S19849C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev)();
extern void ABISELECT(_ZThn136_N9S19849C10D1Ev,_ZThn96_N9S19849C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev)();
extern void ABISELECT(_ZThn136_N9S19849C10D0Ev,_ZThn96_N9S19849C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev)();
extern void ABISELECT(_ZThn152_N9S19849C10D1Ev,_ZThn108_N9S19849C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev)();
extern void ABISELECT(_ZThn152_N9S19849C10D0Ev,_ZThn108_N9S19849C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19849C10[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&_ZN9S19849C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19849C10D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19849C10D1Ev,_ZThn20_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19849C10D0Ev,_ZThn20_N9S19849C10D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19849C10D1Ev,_ZTvn12_n20_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19849C10D0Ev,_ZTvn12_n20_N9S19849C10D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19849C10[];
extern void _ZN8S19849C4D1Ev();
extern void _ZN8S19849C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C4__9S19849C10[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&_ZN8S19849C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S19849C4D1Ev,_ZThn24_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S19849C4D0Ev,_ZThn24_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C4__9S19849C10[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S19849C4D1Ev,_ZThn52_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S19849C4D0Ev,_ZThn52_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C4__9S19849C10[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C4__9S19849C10[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn136_N8S19849C4D1Ev,_ZThn96_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn136_N8S19849C4D0Ev,_ZThn96_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C4__9S19849C10[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void _ZN8S19849C6D1Ev();
extern void _ZN8S19849C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C6__9S19849C10[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&_ZN8S19849C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C6D0Ev,
};
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__9S19849C10[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C88S19849C6__9S19849C10[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C6__9S19849C10[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C8__8S19849C6__9S19849C10[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C6__9S19849C10[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C8__A1__9S19849C10[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C8__A1__9S19849C10[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
static  VTT_ENTRY vtt_S19849C10[] = {
  {&(_ZTV9S19849C10[6]),  6,40},
  {&(_tg__ZTV8S19849C4__9S19849C10[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19849C4__9S19849C10[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C4__9S19849C10[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C4__9S19849C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C4__9S19849C10[3]),  3,5},
  {&(_ZTV9S19849C10[15]),  15,40},
  {&(_ZTV9S19849C10[22]),  22,40},
  {&(_ZTV9S19849C10[27]),  27,40},
  {&(_ZTV9S19849C10[32]),  32,40},
  {&(_ZTV9S19849C10[38]),  38,40},
  {&(_tg__ZTV8S19849C6__9S19849C10[4]),  4,6},
  {&(_tg__ZTV8S19849C88S19849C6__9S19849C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C88S19849C6__9S19849C10[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19849C6__9S19849C10[3]),  3,5},
  {&(_tg__ZTV8S19849C8__8S19849C6__9S19849C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C6__9S19849C10[3]),  3,5},
  {&(_tg__ZTV8S19849C8__A1__9S19849C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C8__A1__9S19849C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19849C10[];
extern  VTBL_ENTRY _ZTV9S19849C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19849C10[];
static VTBL_ENTRY alt_thunk_names302[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19849C4D0Ev,_ZThn52_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19849C4D1Ev,_ZThn52_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19849C4D0Ev,_ZThn96_N8S19849C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19849C4D0Ev,_ZThn24_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19849C4D1Ev,_ZThn96_N8S19849C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19849C4D1Ev,_ZThn24_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19849C10D0Ev,_ZThn108_N9S19849C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19849C10D1Ev,_ZThn108_N9S19849C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19849C10D0Ev,_ZThn52_N9S19849C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19849C10D1Ev,_ZThn52_N9S19849C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19849C10D0Ev,_ZThn96_N9S19849C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19849C10D0Ev,_ZThn24_N9S19849C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19849C10D1Ev,_ZThn96_N9S19849C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19849C10D1Ev,_ZThn24_N9S19849C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19849C10 = {  "S19849C10", // class name
  bases_S19849C10, 9,
  &(vtc_S19849C10[0]), // expected_vtbl_contents
  &(vtt_S19849C10[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI9S19849C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19849C10),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19849C10),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names302,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19849C9  : S20760C9 , S19849C10 {
  virtual  ~S19849C9(); // _ZN8S19849C9D2Ev
  S19849C9(); // tgen
};
//SIG(-1 S19849C9) C1{ BC2{ vd m FL} BC3{ BC4{ m Fp} BC5{ VBC6{ vd m Fi[6]} VBC7{ BC2 VBC6 BC8{ VBC2 vd} FC6} FD} BC9{ vd m} VBC8 vd} vd}


 S19849C9 ::~S19849C9(){ note_dtor("S19849C9", this);}
S19849C9 ::S19849C9(){ note_ctor("S19849C9", this);} // tgen

static void Test_S19849C9()
{
  extern Class_Descriptor cd_S19849C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,32)];
    init_test(&cd_S19849C9, buf);
    S19849C9 *dp, &lv = *(dp=new (buf) S19849C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S19849C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19849C9)");
    /*is_ambiguous_... S19849C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S19849C9");
    check_base_class_offset(lv, (S4161C4_nt*)(S19849C10*), ABISELECT(48,28), "S19849C9");
    check_base_class_offset(lv, (S20760C13*)(S19849C4*)(S19849C10*), ABISELECT(64,36), "S19849C9");
    check_base_class_offset(lv, (S20760C13*)(S19849C6*), ABISELECT(64,36), "S19849C9");
    /*is_ambiguous_... S19849C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C6*), ABISELECT(96,64), "S19849C9");
    check_base_class_offset(lv, (S20760C9*)(S19849C8*)(S19849C6*), ABISELECT(152,108), "S19849C9");
    /*is_ambiguous_... S19849C9::S19849C8 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C8*), ABISELECT(152,108), "S19849C9");
    check_base_class_offset(lv, (S19849C8*)(S19849C6*), ABISELECT(112,76), "S19849C9");
    check_base_class_offset(lv, (S19849C6*)(S19849C4*)(S19849C10*), ABISELECT(96,64), "S19849C9");
    check_base_class_offset(lv, (S19849C4*)(S19849C10*), ABISELECT(16,12), "S19849C9");
    check_base_class_offset(lv, (S20760C22_nt*)(S19849C10*), ABISELECT(56,32), "S19849C9");
    /*is_ambiguous_... S19849C10::S19849C8 */ AMB_check_base_class_offset(lv, (S19849C8*)(S19849C10*), ABISELECT(168,120), "S19849C9");
    check_base_class_offset(lv, (S19849C10*), ABISELECT(16,12), "S19849C9");
    test_class_info(&lv, &cd_S19849C9);
    dp->~S19849C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19849C9(Test_S19849C9, "S19849C9", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN8S19849C9C1Ev();
extern void _ZN8S19849C9D2Ev();
Name_Map name_map_S19849C9[] = {
  NSPAIR(_ZN8S19849C9C1Ev),
  NSPAIR(_ZN8S19849C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
extern Class_Descriptor cd_S19849C6;
extern VTBL_ENTRY _ZTI8S19849C6[];
extern  VTBL_ENTRY _ZTV8S19849C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C6[];
extern Class_Descriptor cd_S19849C4;
extern VTBL_ENTRY _ZTI8S19849C4[];
extern  VTBL_ENTRY _ZTV8S19849C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C4[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
extern Class_Descriptor cd_S19849C10;
extern VTBL_ENTRY _ZTI9S19849C10[];
extern  VTBL_ENTRY _ZTV9S19849C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19849C10[];
static Base_Class bases_S19849C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(64,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(152,108), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19849C8,    ABISELECT(112,76), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19849C6,    ABISELECT(96,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19849C4,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19849C8,    ABISELECT(168,120), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19849C10,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19849C9[];
extern void _ZN8S19849C9D1Ev();
extern void _ZN8S19849C9D0Ev();
extern void ABISELECT(_ZThn16_N8S19849C9D1Ev,_ZThn12_N8S19849C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C9D0Ev,_ZThn12_N8S19849C9D0Ev)();
extern void ABISELECT(_ZThn56_N8S19849C9D1Ev,_ZThn32_N8S19849C9D1Ev)();
extern void ABISELECT(_ZThn56_N8S19849C9D0Ev,_ZThn32_N8S19849C9D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19849C9D1Ev,_ZThn36_N8S19849C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S19849C9D0Ev,_ZThn36_N8S19849C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C9D1Ev,_ZTv0_n20_N8S19849C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19849C9D1Ev,_ZThn64_N8S19849C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C9D0Ev,_ZTv0_n20_N8S19849C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19849C9D0Ev,_ZThn64_N8S19849C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S19849C9D1Ev,_ZTvn12_n20_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C9D0Ev,_ZTvn12_n20_N8S19849C9D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev)();
extern void ABISELECT(_ZThn152_N8S19849C9D1Ev,_ZThn108_N8S19849C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev)();
extern void ABISELECT(_ZThn152_N8S19849C9D0Ev,_ZThn108_N8S19849C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19849C9D1Ev,_ZTv0_n16_N8S19849C9D1Ev)();
extern void ABISELECT(_ZThn168_N8S19849C9D1Ev,_ZThn120_N8S19849C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19849C9D0Ev,_ZTv0_n16_N8S19849C9D0Ev)();
extern void ABISELECT(_ZThn168_N8S19849C9D0Ev,_ZThn120_N8S19849C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19849C9[] = {
  ABISELECT(168,120),
  ABISELECT(152,108),
  ABISELECT(96,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&_ZN8S19849C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C9D0Ev,
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C9D1Ev,_ZThn12_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C9D0Ev,_ZThn12_N8S19849C9D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19849C9D1Ev,_ZThn32_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19849C9D0Ev,_ZThn32_N8S19849C9D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev),
  ABISELECT(-96,-64),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C9D1Ev,_ZTv0_n20_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C9D0Ev,_ZTv0_n20_N8S19849C9D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C9D1Ev,_ZTvn12_n20_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C9D0Ev,_ZTvn12_n20_N8S19849C9D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev),
  ABISELECT(-168,-120),
  ABISELECT(-16,-12),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C9D1Ev,_ZTv0_n16_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C9D0Ev,_ZTv0_n16_N8S19849C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19849C9[];
extern void _ZN9S19849C10D1Ev();
extern void _ZN9S19849C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19849C10__8S19849C9[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&_ZN9S19849C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19849C10D0Ev,
};
extern void _ZN8S19849C4D1Ev();
extern void _ZN8S19849C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C49S19849C10__8S19849C9[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&_ZN8S19849C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S19849C4D1Ev,_ZThn24_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S19849C4D0Ev,_ZThn24_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C49S19849C10__8S19849C9[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S19849C4D1Ev,_ZThn52_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S19849C4D0Ev,_ZThn52_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C49S19849C10__8S19849C9[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C49S19849C10__8S19849C9[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn136_N8S19849C4D1Ev,_ZThn96_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn136_N8S19849C4D0Ev,_ZThn96_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C49S19849C10__8S19849C9[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19849C10D1Ev,_ZThn24_N9S19849C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev)();
extern void ABISELECT(_ZThn48_N9S19849C10D0Ev,_ZThn24_N9S19849C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S19849C10__8S19849C9[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S19849C10D1Ev,_ZThn52_N9S19849C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S19849C10D0Ev,_ZThn52_N9S19849C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19849C6__9S19849C10__8S19849C9[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S19849C10D1Ev,_ZTvn12_n20_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19849C10D0Ev,_ZTvn12_n20_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__9S19849C10__8S19849C9[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19849C10D1Ev,_ZTvn12_n20_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19849C10D0Ev,_ZTvn12_n20_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev)();
extern void ABISELECT(_ZThn136_N9S19849C10D1Ev,_ZThn96_N9S19849C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev)();
extern void ABISELECT(_ZThn136_N9S19849C10D0Ev,_ZThn96_N9S19849C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S19849C10__8S19849C9[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev)();
extern void ABISELECT(_ZThn152_N9S19849C10D1Ev,_ZThn108_N9S19849C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev)();
extern void ABISELECT(_ZThn152_N9S19849C10D0Ev,_ZThn108_N9S19849C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19849C8__A1__9S19849C10__8S19849C9[] = {
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev),
};
extern void _ZN8S19849C6D1Ev();
extern void _ZN8S19849C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C9[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&_ZN8S19849C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C6D0Ev,
};
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C9[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C88S19849C6__8S19849C9[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C6__8S19849C9[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C8__8S19849C6__8S19849C9[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C6__8S19849C9[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C8__A1__8S19849C9[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C8__A1__8S19849C9[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
static  VTT_ENTRY vtt_S19849C9[] = {
  {&(_ZTV8S19849C9[6]),  6,48},
  {&(_tg__ZTV9S19849C10__8S19849C9[6]),  6,8},
  {&(_tg__ZTV8S19849C49S19849C10__8S19849C9[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19849C49S19849C10__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C49S19849C10__8S19849C9[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C49S19849C10__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C49S19849C10__8S19849C9[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S19849C10__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S19849C6__9S19849C10__8S19849C9[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__9S19849C10__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S19849C10__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S19849C8__A1__9S19849C10__8S19849C9[4]),  4,6},
  {&(_ZTV8S19849C9[14]),  14,48},
  {&(_ZTV8S19849C9[23]),  23,48},
  {&(_ZTV8S19849C9[30]),  30,48},
  {&(_ZTV8S19849C9[35]),  35,48},
  {&(_ZTV8S19849C9[40]),  40,48},
  {&(_ZTV8S19849C9[46]),  46,48},
  {&(_tg__ZTV8S19849C6__8S19849C9[4]),  4,6},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C88S19849C6__8S19849C9[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19849C6__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S19849C8__8S19849C6__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C6__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S19849C8__A1__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C8__A1__8S19849C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19849C9[];
extern  VTBL_ENTRY _ZTV8S19849C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C9[];
static VTBL_ENTRY alt_thunk_names303[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19849C10D0Ev,_ZThn108_N9S19849C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19849C10D1Ev,_ZThn108_N9S19849C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19849C10D0Ev,_ZThn52_N9S19849C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19849C10D1Ev,_ZThn52_N9S19849C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19849C10D0Ev,_ZThn96_N9S19849C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19849C10D0Ev,_ZThn24_N9S19849C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19849C10D1Ev,_ZThn96_N9S19849C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19849C10D1Ev,_ZThn24_N9S19849C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19849C4D0Ev,_ZThn52_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19849C4D1Ev,_ZThn52_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19849C4D0Ev,_ZThn96_N8S19849C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19849C4D0Ev,_ZThn24_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19849C4D1Ev,_ZThn96_N8S19849C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19849C4D1Ev,_ZThn24_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19849C9D0Ev,_ZTv0_n16_N8S19849C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19849C9D0Ev,_ZThn120_N8S19849C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19849C9D1Ev,_ZTv0_n16_N8S19849C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19849C9D1Ev,_ZThn120_N8S19849C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C9D0Ev,_ZTv0_n20_N8S19849C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19849C9D0Ev,_ZThn64_N8S19849C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C9D1Ev,_ZTv0_n20_N8S19849C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19849C9D1Ev,_ZThn64_N8S19849C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19849C9D0Ev,_ZThn108_N8S19849C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C9D0Ev,_ZThn36_N8S19849C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19849C9D1Ev,_ZThn108_N8S19849C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C9D1Ev,_ZThn36_N8S19849C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19849C9 = {  "S19849C9", // class name
  bases_S19849C9, 11,
  &(vtc_S19849C9[0]), // expected_vtbl_contents
  &(vtt_S19849C9[0]), // expected_vtt_contents
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI8S19849C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19849C9),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19849C9),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names303,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19849C3  : virtual S19849C4 , virtual S19849C9 , S4228C27 , virtual S20760C5_nt {
  virtual  ~S19849C3(); // _ZN8S19849C3D2Ev
  virtual void  v1(); // _ZN8S19849C32v1Ev
  S19849C3(); // tgen
};
//SIG(-1 S19849C3) C1{ VBC2{ VBC3{ vd m Fi[6]} VBC4{ BC5{ vd m FL} VBC3 BC6{ VBC5 vd} FC3} FD} VBC7{ BC5 BC8{ BC9{ m Fp} BC2 BC10{ vd m} VBC6 vd} vd} BC11{ m} VBC12{ vd m FL} vd v1}


 S19849C3 ::~S19849C3(){ note_dtor("S19849C3", this);}
void  S19849C3 ::v1(){vfunc_called(this, "_ZN8S19849C32v1Ev");}
S19849C3 ::S19849C3(){ note_ctor("S19849C3", this);} // tgen

static void Test_S19849C3()
{
  extern Class_Descriptor cd_S19849C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,39)];
    init_test(&cd_S19849C3, buf);
    S19849C3 *dp, &lv = *(dp=new (buf) S19849C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,152), "sizeof(S19849C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19849C3)");
    /*is_ambiguous_... S19849C3::S19849C4 */ AMB_check_base_class_offset(lv, (S20760C13*)(S19849C4*), ABISELECT(48,20), "S19849C3");
    check_base_class_offset(lv, (S20760C13*)(S19849C6*), ABISELECT(48,20), "S19849C3");
    check_base_class_offset(lv, (S20760C13*)(S19849C4*)(S19849C10*)(S19849C9*), ABISELECT(48,20), "S19849C3");
    /*is_ambiguous_... S19849C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C6*), ABISELECT(80,48), "S19849C3");
    check_base_class_offset(lv, (S20760C9*)(S19849C8*)(S19849C6*), ABISELECT(136,92), "S19849C3");
    /*is_ambiguous_... S19849C3::S19849C8 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C8*), ABISELECT(136,92), "S19849C3");
    check_base_class_offset(lv, (S19849C8*)(S19849C6*), ABISELECT(96,60), "S19849C3");
    /*is_ambiguous_... S19849C3::S19849C4 */ AMB_check_base_class_offset(lv, (S19849C6*)(S19849C4*), ABISELECT(80,48), "S19849C3");
    check_base_class_offset(lv, (S19849C6*)(S19849C4*)(S19849C10*)(S19849C9*), ABISELECT(80,48), "S19849C3");
    /*is_ambiguous_... S19849C3::S19849C4 */ AMB_check_base_class_offset(lv, (S19849C4*), ABISELECT(16,4), "S19849C3");
    /*is_ambiguous_... S19849C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C9*), ABISELECT(160,104), "S19849C3");
    check_base_class_offset(lv, (S4161C4_nt*)(S19849C10*)(S19849C9*), ABISELECT(208,132), "S19849C3");
    check_base_class_offset(lv, (S19849C4*)(S19849C10*)(S19849C9*), ABISELECT(176,116), "S19849C3");
    check_base_class_offset(lv, (S20760C22_nt*)(S19849C10*)(S19849C9*), ABISELECT(216,136), "S19849C3");
    /*is_ambiguous_... S19849C10::S19849C8 */ AMB_check_base_class_offset(lv, (S19849C8*)(S19849C10*)(S19849C9*), 0, "S19849C3");
    check_base_class_offset(lv, (S19849C10*)(S19849C9*), ABISELECT(176,116), "S19849C3");
    check_base_class_offset(lv, (S19849C9*), ABISELECT(160,104), "S19849C3");
    check_base_class_offset(lv, (S4228C27*), 0, "S19849C3");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(224,140), "S19849C3");
    test_class_info(&lv, &cd_S19849C3);
    dp->~S19849C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19849C3(Test_S19849C3, "S19849C3", ABISELECT(240,152));

#else // __cplusplus

extern void _ZN8S19849C3C1Ev();
extern void _ZN8S19849C3D2Ev();
Name_Map name_map_S19849C3[] = {
  NSPAIR(_ZN8S19849C3C1Ev),
  NSPAIR(_ZN8S19849C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
extern Class_Descriptor cd_S19849C6;
extern VTBL_ENTRY _ZTI8S19849C6[];
extern  VTBL_ENTRY _ZTV8S19849C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C6[];
extern Class_Descriptor cd_S19849C4;
extern VTBL_ENTRY _ZTI8S19849C4[];
extern  VTBL_ENTRY _ZTV8S19849C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19849C4;
extern VTBL_ENTRY _ZTI8S19849C4[];
extern  VTBL_ENTRY _ZTV8S19849C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C4[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
extern Class_Descriptor cd_S19849C10;
extern VTBL_ENTRY _ZTI9S19849C10[];
extern  VTBL_ENTRY _ZTV9S19849C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19849C10[];
extern Class_Descriptor cd_S19849C9;
extern VTBL_ENTRY _ZTI8S19849C9[];
extern  VTBL_ENTRY _ZTV8S19849C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S19849C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(48,20), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,92), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19849C8,    ABISELECT(96,60), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19849C6,    ABISELECT(80,48), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19849C4,    ABISELECT(16,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19849C4,    ABISELECT(176,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(216,136), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19849C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19849C10,    ABISELECT(176,116), //bcp->offset
    52, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19849C9,    ABISELECT(160,104), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C5_nt,    ABISELECT(224,140), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19849C3[];
extern void ABISELECT(_ZTv0_n32_N8S19849C3D1Ev,_ZTv0_n16_N8S19849C3D1Ev)();
extern void _ZN8S19849C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19849C3D0Ev,_ZTv0_n16_N8S19849C3D0Ev)();
extern void _ZN8S19849C3D0Ev() __attribute__((weak));
extern void _ZN8S19849C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19849C3D1Ev,_ZTv0_n24_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C3D1Ev,_ZThn4_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19849C3D0Ev,_ZTv0_n24_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19849C3D0Ev,_ZThn4_N8S19849C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S19849C3D1Ev,_ZThn20_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S19849C3D0Ev,_ZThn20_N8S19849C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C3D1Ev,_ZTv0_n20_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn80_N8S19849C3D1Ev,_ZThn48_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C3D0Ev,_ZTv0_n20_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn80_N8S19849C3D0Ev,_ZThn48_N8S19849C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S19849C3D1Ev,_ZTvn12_n20_N8S19849C3D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C3D0Ev,_ZTvn12_n20_N8S19849C3D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn136_N8S19849C3D1Ev,_ZThn92_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn136_N8S19849C3D0Ev,_ZThn92_N8S19849C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19849C3D1Ev,_ZTv0_n28_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S19849C3D1Ev,_ZThn104_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19849C3D0Ev,_ZTv0_n28_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S19849C3D0Ev,_ZThn104_N8S19849C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S19849C3D1Ev,_ZTvn12_n28_N8S19849C3D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S19849C3D0Ev,_ZTvn12_n28_N8S19849C3D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19849C3D1Ev,_ZTvn32_n28_N8S19849C3D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19849C3D0Ev,_ZTvn32_n28_N8S19849C3D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn224_N8S19849C3D1Ev,_ZThn140_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn224_N8S19849C3D0Ev,_ZThn140_N8S19849C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19849C3[] = {
  ABISELECT(224,140),
  0,
  ABISELECT(160,104),
  ABISELECT(80,48),
  ABISELECT(48,20),
  ABISELECT(16,4),
  0,
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C3D1Ev,_ZTv0_n16_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C3D0Ev,_ZTv0_n16_N8S19849C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19849C32v1Ev,
  ABISELECT(-16,-4),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19849C3D1Ev,_ZTv0_n24_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19849C3D0Ev,_ZTv0_n24_N8S19849C3D0Ev),
  ABISELECT(-48,-20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C3D1Ev,_ZTv0_n20_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C3D0Ev,_ZTv0_n20_N8S19849C3D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C3D1Ev,_ZTvn12_n20_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C3D0Ev,_ZTvn12_n20_N8S19849C3D0Ev),
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev),
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19849C3D1Ev,_ZTv0_n28_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19849C3D0Ev,_ZTv0_n28_N8S19849C3D0Ev),
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19849C3D1Ev,_ZTvn12_n28_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19849C3D0Ev,_ZTvn12_n28_N8S19849C3D0Ev),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19849C3D1Ev,_ZTvn32_n28_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19849C3D0Ev,_ZTvn32_n28_N8S19849C3D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19849C3[];
extern void _ZN8S19849C4D1Ev();
extern void _ZN8S19849C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C4__8S19849C3[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&_ZN8S19849C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19849C4D1Ev,_ZThn16_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S19849C4D0Ev,_ZThn16_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C4__8S19849C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S19849C4D1Ev,_ZThn44_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S19849C4D0Ev,_ZThn44_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C4__8S19849C3[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C4__8S19849C3[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn120_N8S19849C4D1Ev,_ZThn88_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn120_N8S19849C4D0Ev,_ZThn88_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C4__8S19849C3[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void _ZN8S19849C6D1Ev();
extern void _ZN8S19849C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C3[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&_ZN8S19849C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C6D0Ev,
};
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C3[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C88S19849C6__8S19849C3[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C6__8S19849C3[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C8__8S19849C6__8S19849C3[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C6__8S19849C3[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern void _ZN8S19849C9D1Ev();
extern void _ZN8S19849C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C9__8S19849C3[] = {
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&_ZN8S19849C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C9D0Ev,
};
extern void _ZN9S19849C10D1Ev();
extern void _ZN9S19849C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19849C108S19849C9__8S19849C3[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&_ZN9S19849C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19849C10D0Ev,
};
extern void _ZN8S19849C4D1Ev();
extern void _ZN8S19849C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C49S19849C108S19849C9__A1__8S19849C3[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&_ZN8S19849C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C49S19849C108S19849C9__A1__8S19849C3[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C49S19849C108S19849C9__A1__8S19849C3[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C49S19849C108S19849C9__A1__8S19849C3[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C49S19849C108S19849C9__A1__8S19849C3[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S19849C108S19849C9__8S19849C3[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C6__9S19849C108S19849C9__8S19849C3[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S19849C10D1Ev,_ZTvn12_n20_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19849C10D0Ev,_ZTvn12_n20_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__9S19849C108S19849C9__8S19849C3[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19849C10D1Ev,_ZTvn12_n20_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19849C10D0Ev,_ZTvn12_n20_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S19849C108S19849C9__8S19849C3[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C8__A1__9S19849C108S19849C9__8S19849C3[] = {
  ABISELECT(176,116),
  ABISELECT(136,92),
  ABISELECT(176,116),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19849C9D1Ev,_ZThn12_N8S19849C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C9D0Ev,_ZThn12_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19849C10__8S19849C9__8S19849C3[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C9D1Ev,_ZThn12_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C9D0Ev,_ZThn12_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C9__8S19849C3[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19849C9D1Ev,_ZTv0_n20_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19849C9D0Ev,_ZTv0_n20_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C9__8S19849C3[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C9D1Ev,_ZTv0_n20_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C9D0Ev,_ZTv0_n20_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19849C9D1Ev,_ZTvn12_n20_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C9D0Ev,_ZTvn12_n20_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C9__8S19849C3[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C9D1Ev,_ZTvn12_n20_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C9D0Ev,_ZTvn12_n20_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__8S19849C9__8S19849C3[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19849C9D1Ev,_ZTv0_n16_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19849C9D0Ev,_ZTv0_n16_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C8__A1__8S19849C9__8S19849C3[] = {
  ABISELECT(160,104),
  ABISELECT(136,92),
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C9D1Ev,_ZTv0_n16_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C9D0Ev,_ZTv0_n16_N8S19849C9D0Ev),
};
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C8__A1__8S19849C3[] = {
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S19849C8D1Ev,_ZThn92_N8S19849C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
extern void ABISELECT(_ZThn136_N8S19849C8D0Ev,_ZThn92_N8S19849C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C8__A1__8S19849C3[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
static  VTT_ENTRY vtt_S19849C3[] = {
  {&(_ZTV8S19849C3[10]),  10,69},
  {&(_ZTV8S19849C3[19]),  19,69},
  {&(_ZTV8S19849C3[24]),  24,69},
  {&(_ZTV8S19849C3[31]),  31,69},
  {&(_ZTV8S19849C3[36]),  36,69},
  {&(_ZTV8S19849C3[41]),  41,69},
  {&(_ZTV8S19849C3[50]),  50,69},
  {&(_ZTV8S19849C3[58]),  58,69},
  {&(_ZTV8S19849C3[62]),  62,69},
  {&(_ZTV8S19849C3[10]),  10,69},
  {&(_ZTV8S19849C3[67]),  67,69},
  {&(_tg__ZTV8S19849C4__8S19849C3[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19849C4__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C4__8S19849C3[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C4__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C4__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C3[4]),  4,6},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C88S19849C6__8S19849C3[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19849C6__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S19849C8__8S19849C6__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C6__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S19849C9__8S19849C3[6]),  6,8},
  {&(_tg__ZTV9S19849C108S19849C9__8S19849C3[6]),  6,8},
  {&(_tg__ZTV8S19849C49S19849C108S19849C9__A1__8S19849C3[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19849C49S19849C108S19849C9__A1__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C49S19849C108S19849C9__A1__8S19849C3[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C49S19849C108S19849C9__A1__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C49S19849C108S19849C9__A1__8S19849C3[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S19849C108S19849C9__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S19849C6__9S19849C108S19849C9__8S19849C3[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__9S19849C108S19849C9__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S19849C108S19849C9__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S19849C8__A1__9S19849C108S19849C9__8S19849C3[4]),  4,6},
  {&(_tg__ZTV9S19849C10__8S19849C9__8S19849C3[6]),  6,8},
  {&(_tg__ZTV9S20760C13__8S19849C9__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C9__8S19849C3[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C9__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__8S19849C9__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S19849C8__A1__8S19849C9__8S19849C3[4]),  4,6},
  {&(_tg__ZTV8S19849C8__A1__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C8__A1__8S19849C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19849C3[];
extern  VTBL_ENTRY _ZTV8S19849C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C3[];
static VTBL_ENTRY alt_thunk_names304[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19849C8D0Ev,_ZThn92_N8S19849C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19849C8D1Ev,_ZThn92_N8S19849C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C4D0Ev,_ZThn44_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C4D1Ev,_ZThn44_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19849C4D0Ev,_ZThn88_N8S19849C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C4D0Ev,_ZThn16_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19849C4D1Ev,_ZThn88_N8S19849C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C4D1Ev,_ZThn16_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19849C3D0Ev,_ZTv0_n28_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19849C3D0Ev,_ZThn104_N8S19849C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19849C3D1Ev,_ZTv0_n28_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19849C3D1Ev,_ZThn104_N8S19849C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C3D0Ev,_ZTv0_n20_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19849C3D0Ev,_ZThn48_N8S19849C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C3D1Ev,_ZTv0_n20_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19849C3D1Ev,_ZThn48_N8S19849C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19849C3D0Ev,_ZThn140_N8S19849C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19849C3D0Ev,_ZThn92_N8S19849C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19849C3D0Ev,_ZThn20_N8S19849C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19849C3D1Ev,_ZThn140_N8S19849C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19849C3D1Ev,_ZThn92_N8S19849C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19849C3D1Ev,_ZThn20_N8S19849C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19849C3D0Ev,_ZTv0_n24_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19849C3D0Ev,_ZThn4_N8S19849C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19849C3D1Ev,_ZTv0_n24_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19849C3D1Ev,_ZThn4_N8S19849C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19849C3D0Ev,_ZTv0_n16_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19849C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19849C3D1Ev,_ZTv0_n16_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19849C3D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19849C3 = {  "S19849C3", // class name
  bases_S19849C3, 15,
  &(vtc_S19849C3[0]), // expected_vtbl_contents
  &(vtt_S19849C3[0]), // expected_vtt_contents
  ABISELECT(240,152), // object size
  NSPAIRA(_ZTI8S19849C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19849C3),69, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19849C3),42, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names304,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19849C15_nt  : virtual S4161C4_nt {
  int s19849c15f0;
  ~S19849C15_nt(); // tgen
  S19849C15_nt(); // tgen
};
//SIG(-1 S19849C15_nt) C1{ VBC2{ m Fp} Fi}


S19849C15_nt ::~S19849C15_nt(){ note_dtor("S19849C15_nt", this);} // tgen
S19849C15_nt ::S19849C15_nt(){ note_ctor("S19849C15_nt", this);} // tgen

//skip512 S19849C15_nt

#else // __cplusplus

extern void _ZN12S19849C15_ntC1Ev();
extern void _ZN12S19849C15_ntD1Ev();
Name_Map name_map_S19849C15_nt[] = {
  NSPAIR(_ZN12S19849C15_ntC1Ev),
  NSPAIR(_ZN12S19849C15_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S19849C15_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI12S19849C15_nt[];
static  VTBL_ENTRY vtc_S19849C15_nt[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI12S19849C15_nt[0]),
};
extern VTBL_ENTRY _ZTV12S19849C15_nt[];
static  VTT_ENTRY vtt_S19849C15_nt[] = {
  {&(_ZTV12S19849C15_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI12S19849C15_nt[];
VTBL_ENTRY *P__ZTI12S19849C15_nt = _ZTI12S19849C15_nt; 
extern  VTBL_ENTRY _ZTV12S19849C15_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19849C15_nt[];
Class_Descriptor cd_S19849C15_nt = {  "S19849C15_nt", // class name
  bases_S19849C15_nt, 1,
  &(vtc_S19849C15_nt[0]), // expected_vtbl_contents
  &(vtt_S19849C15_nt[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI12S19849C15_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV12S19849C15_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S19849C15_nt),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19849C1  : virtual S4228C37 , S19849C3 , S19849C15_nt {
  virtual  ~S19849C1(); // _ZN8S19849C1D2Ev
  S19849C1(); // tgen
};
//SIG(1 S19849C1) C1{ VBC2{ m} BC3{ VBC4{ VBC5{ vd m Fi[6]} VBC6{ BC7{ vd m FL} VBC5 BC8{ VBC7 vd} FC5} FD} VBC9{ BC7 BC10{ BC11{ m Fp} BC4 BC12{ vd m} VBC8 vd} vd} BC13{ m} VBC14{ vd m FL} vd v1} BC15{ VBC11 Fi} vd}


 S19849C1 ::~S19849C1(){ note_dtor("S19849C1", this);}
S19849C1 ::S19849C1(){ note_ctor("S19849C1", this);} // tgen

static void Test_S19849C1()
{
  extern Class_Descriptor cd_S19849C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(18,42)];
    init_test(&cd_S19849C1, buf);
    S19849C1 *dp, &lv = *(dp=new (buf) S19849C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,164), "sizeof(S19849C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19849C1)");
    check_base_class_offset(lv, (S4228C37*), 0, "S19849C1");
    /*is_ambiguous_... S19849C1::S19849C4 */ AMB_check_base_class_offset(lv, (S20760C13*)(S19849C4*), ABISELECT(64,28), "S19849C1");
    check_base_class_offset(lv, (S20760C13*)(S19849C6*), ABISELECT(64,28), "S19849C1");
    check_base_class_offset(lv, (S20760C13*)(S19849C4*)(S19849C10*)(S19849C9*), ABISELECT(64,28), "S19849C1");
    /*is_ambiguous_... S19849C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C6*), ABISELECT(96,56), "S19849C1");
    check_base_class_offset(lv, (S20760C9*)(S19849C8*)(S19849C6*), ABISELECT(152,100), "S19849C1");
    /*is_ambiguous_... S19849C1::S19849C8 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C8*), ABISELECT(152,100), "S19849C1");
    check_base_class_offset(lv, (S19849C8*)(S19849C6*), ABISELECT(112,68), "S19849C1");
    /*is_ambiguous_... S19849C1::S19849C4 */ AMB_check_base_class_offset(lv, (S19849C6*)(S19849C4*), ABISELECT(96,56), "S19849C1");
    check_base_class_offset(lv, (S19849C6*)(S19849C4*)(S19849C10*)(S19849C9*), ABISELECT(96,56), "S19849C1");
    /*is_ambiguous_... S19849C3::S19849C4 */ AMB_check_base_class_offset(lv, (S19849C4*)(S19849C3*), ABISELECT(32,12), "S19849C1");
    /*is_ambiguous_... S19849C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C9*), ABISELECT(176,112), "S19849C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S19849C10*)(S19849C9*), ABISELECT(224,140), "S19849C1");
    check_base_class_offset(lv, (S19849C4*)(S19849C10*)(S19849C9*), ABISELECT(192,124), "S19849C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S19849C10*)(S19849C9*), ABISELECT(232,144), "S19849C1");
    /*is_ambiguous_... S19849C10::S19849C8 */ AMB_check_base_class_offset(lv, (S19849C8*)(S19849C10*)(S19849C9*), 0, "S19849C1");
    check_base_class_offset(lv, (S19849C10*)(S19849C9*), ABISELECT(192,124), "S19849C1");
    check_base_class_offset(lv, (S19849C9*)(S19849C3*), ABISELECT(176,112), "S19849C1");
    check_base_class_offset(lv, (S4228C27*)(S19849C3*), 0, "S19849C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S19849C3*), ABISELECT(240,148), "S19849C1");
    check_base_class_offset(lv, (S19849C3*), 0, "S19849C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S19849C15_nt*), ABISELECT(256,160), "S19849C1");
    check_base_class_offset(lv, (S19849C15_nt*), ABISELECT(8,4), "S19849C1");
    test_class_info(&lv, &cd_S19849C1);
    dp->~S19849C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19849C1(Test_S19849C1, "S19849C1", ABISELECT(272,164));

#else // __cplusplus

extern void _ZN8S19849C1C1Ev();
extern void _ZN8S19849C1D2Ev();
Name_Map name_map_S19849C1[] = {
  NSPAIR(_ZN8S19849C1C1Ev),
  NSPAIR(_ZN8S19849C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
extern Class_Descriptor cd_S19849C6;
extern VTBL_ENTRY _ZTI8S19849C6[];
extern  VTBL_ENTRY _ZTV8S19849C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C6[];
extern Class_Descriptor cd_S19849C4;
extern VTBL_ENTRY _ZTI8S19849C4[];
extern  VTBL_ENTRY _ZTV8S19849C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19849C4;
extern VTBL_ENTRY _ZTI8S19849C4[];
extern  VTBL_ENTRY _ZTV8S19849C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C4[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
extern Class_Descriptor cd_S19849C10;
extern VTBL_ENTRY _ZTI9S19849C10[];
extern  VTBL_ENTRY _ZTV9S19849C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19849C10[];
extern Class_Descriptor cd_S19849C9;
extern VTBL_ENTRY _ZTI8S19849C9[];
extern  VTBL_ENTRY _ZTV8S19849C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S19849C3;
extern VTBL_ENTRY _ZTI8S19849C3[];
extern  VTBL_ENTRY _ZTV8S19849C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C3[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19849C15_nt;
extern VTBL_ENTRY _ZTI12S19849C15_nt[];
extern  VTBL_ENTRY _ZTV12S19849C15_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19849C15_nt[];
static Base_Class bases_S19849C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C13,    ABISELECT(64,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(152,100), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19849C8,    ABISELECT(112,68), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19849C6,    ABISELECT(96,56), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19849C4,    ABISELECT(32,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19849C4,    ABISELECT(192,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(232,144), //bcp->offset
    65, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19849C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19849C10,    ABISELECT(192,124), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19849C9,    ABISELECT(176,112), //bcp->offset
    48, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(240,148), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19849C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(256,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19849C15_nt,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19849C1[];
extern void ABISELECT(_ZTv0_n32_N8S19849C1D1Ev,_ZTv0_n16_N8S19849C1D1Ev)();
extern void _ZN8S19849C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19849C1D0Ev,_ZTv0_n16_N8S19849C1D0Ev)();
extern void _ZN8S19849C1D0Ev() __attribute__((weak));
extern void _ZN8S19849C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19849C1D1Ev,_ZTv0_n24_N8S19849C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19849C1D1Ev,_ZThn12_N8S19849C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19849C1D0Ev,_ZTv0_n24_N8S19849C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S19849C1D0Ev,_ZThn12_N8S19849C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C1D1Ev,_ZTv0_n12_N8S19849C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19849C1D1Ev,_ZThn28_N8S19849C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C1D0Ev,_ZTv0_n12_N8S19849C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19849C1D0Ev,_ZThn28_N8S19849C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C1D1Ev,_ZTv0_n20_N8S19849C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S19849C1D1Ev,_ZThn56_N8S19849C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C1D0Ev,_ZTv0_n20_N8S19849C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S19849C1D0Ev,_ZThn56_N8S19849C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S19849C1D1Ev,_ZTvn12_n20_N8S19849C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C1D0Ev,_ZTvn12_n20_N8S19849C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C1D1Ev,_ZTv0_n12_N8S19849C1D1Ev)();
extern void ABISELECT(_ZThn152_N8S19849C1D1Ev,_ZThn100_N8S19849C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C1D0Ev,_ZTv0_n12_N8S19849C1D0Ev)();
extern void ABISELECT(_ZThn152_N8S19849C1D0Ev,_ZThn100_N8S19849C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19849C1D1Ev,_ZTv0_n28_N8S19849C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S19849C1D1Ev,_ZThn112_N8S19849C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19849C1D0Ev,_ZTv0_n28_N8S19849C1D0Ev)();
extern void ABISELECT(_ZThn176_N8S19849C1D0Ev,_ZThn112_N8S19849C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S19849C1D1Ev,_ZTvn12_n28_N8S19849C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S19849C1D0Ev,_ZTvn12_n28_N8S19849C1D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19849C1D1Ev,_ZTvn32_n28_N8S19849C1D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19849C1D0Ev,_ZTvn32_n28_N8S19849C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C1D1Ev,_ZTv0_n12_N8S19849C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S19849C1D1Ev,_ZThn148_N8S19849C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C1D0Ev,_ZTv0_n12_N8S19849C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S19849C1D0Ev,_ZThn148_N8S19849C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19849C1[] = {
  ABISELECT(256,160),
  0,
  ABISELECT(240,148),
  0,
  ABISELECT(176,112),
  ABISELECT(96,56),
  ABISELECT(64,28),
  ABISELECT(32,12),
  0,
  ABISELECT(152,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C1D1Ev,_ZTv0_n16_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C1D0Ev,_ZTv0_n16_N8S19849C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19849C32v1Ev,
  ABISELECT(248,156),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  ABISELECT(-32,-12),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19849C1D1Ev,_ZTv0_n24_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19849C1D0Ev,_ZTv0_n24_N8S19849C1D0Ev),
  ABISELECT(-64,-28),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C1D1Ev,_ZTv0_n12_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C1D0Ev,_ZTv0_n12_N8S19849C1D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C1D1Ev,_ZTv0_n20_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C1D0Ev,_ZTv0_n20_N8S19849C1D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C1D1Ev,_ZTvn12_n20_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C1D0Ev,_ZTvn12_n20_N8S19849C1D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C1D1Ev,_ZTv0_n12_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C1D0Ev,_ZTv0_n12_N8S19849C1D0Ev),
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19849C1D1Ev,_ZTv0_n28_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19849C1D0Ev,_ZTv0_n28_N8S19849C1D0Ev),
  ABISELECT(-192,-124),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19849C1D1Ev,_ZTvn12_n28_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19849C1D0Ev,_ZTvn12_n28_N8S19849C1D0Ev),
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19849C1D1Ev,_ZTvn32_n28_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19849C1D0Ev,_ZTvn32_n28_N8S19849C1D0Ev),
  ABISELECT(-240,-148),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C1D1Ev,_ZTv0_n12_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C1D0Ev,_ZTv0_n12_N8S19849C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19849C1[];
extern void ABISELECT(_ZTv0_n32_N8S19849C3D1Ev,_ZTv0_n16_N8S19849C3D1Ev)();
extern void _ZN8S19849C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19849C3D0Ev,_ZTv0_n16_N8S19849C3D0Ev)();
extern void _ZN8S19849C3D0Ev() __attribute__((weak));
extern void _ZN8S19849C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C3__8S19849C1[] = {
  ABISELECT(240,148),
  0,
  ABISELECT(176,112),
  ABISELECT(96,56),
  ABISELECT(64,28),
  ABISELECT(32,12),
  0,
  ABISELECT(152,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C3D1Ev,_ZTv0_n16_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C3D0Ev,_ZTv0_n16_N8S19849C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19849C32v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S19849C3D1Ev,_ZTv0_n24_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S19849C3D1Ev,_ZThn12_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19849C3D0Ev,_ZTv0_n24_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn32_N8S19849C3D0Ev,_ZThn12_N8S19849C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19849C4__8S19849C3__8S19849C1[] = {
  ABISELECT(-32,-12),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19849C3D1Ev,_ZTv0_n24_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19849C3D0Ev,_ZTv0_n24_N8S19849C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S19849C3D1Ev,_ZThn28_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S19849C3D0Ev,_ZThn28_N8S19849C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C3__8S19849C1[] = {
  ABISELECT(-64,-28),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19849C3D1Ev,_ZTv0_n20_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S19849C3D1Ev,_ZThn56_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C3D0Ev,_ZTv0_n20_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S19849C3D0Ev,_ZThn56_N8S19849C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C3__8S19849C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C3D1Ev,_ZTv0_n20_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C3D0Ev,_ZTv0_n20_N8S19849C3D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19849C3D1Ev,_ZTvn12_n20_N8S19849C3D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C3D0Ev,_ZTvn12_n20_N8S19849C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C3__8S19849C1[] = {
  ABISELECT(40,32),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C3D1Ev,_ZTvn12_n20_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C3D0Ev,_ZTvn12_n20_N8S19849C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn152_N8S19849C3D1Ev,_ZThn100_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn152_N8S19849C3D0Ev,_ZThn100_N8S19849C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C3__8S19849C1[] = {
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S19849C3D1Ev,_ZTv0_n28_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S19849C3D1Ev,_ZThn112_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19849C3D0Ev,_ZTv0_n28_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S19849C3D0Ev,_ZThn112_N8S19849C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19849C9__8S19849C3__8S19849C1[] = {
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19849C3D1Ev,_ZTv0_n28_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19849C3D0Ev,_ZTv0_n28_N8S19849C3D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N8S19849C3D1Ev,_ZTvn12_n28_N8S19849C3D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S19849C3D0Ev,_ZTvn12_n28_N8S19849C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19849C108S19849C9__8S19849C3__8S19849C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19849C3D1Ev,_ZTvn12_n28_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19849C3D0Ev,_ZTvn12_n28_N8S19849C3D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N8S19849C3D1Ev,_ZTvn32_n28_N8S19849C3D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19849C3D0Ev,_ZTvn32_n28_N8S19849C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S19849C108S19849C9__8S19849C3__8S19849C1[] = {
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19849C3D1Ev,_ZTvn32_n28_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19849C3D0Ev,_ZTvn32_n28_N8S19849C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn240_N8S19849C3D1Ev,_ZThn148_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn240_N8S19849C3D0Ev,_ZThn148_N8S19849C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S19849C3__8S19849C1[] = {
  ABISELECT(-240,-148),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV12S19849C15_nt__8S19849C1[] = {
  ABISELECT(248,156),
  0,
  (VTBL_ENTRY)&(_ZTI12S19849C15_nt[0]),
};
extern void _ZN8S19849C4D1Ev();
extern void _ZN8S19849C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C4__8S19849C1[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&_ZN8S19849C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19849C4D1Ev,_ZThn16_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S19849C4D0Ev,_ZThn16_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C4__8S19849C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S19849C4D1Ev,_ZThn44_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S19849C4D0Ev,_ZThn44_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C4__8S19849C1[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C4__8S19849C1[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn120_N8S19849C4D1Ev,_ZThn88_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn120_N8S19849C4D0Ev,_ZThn88_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C4__8S19849C1[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void _ZN8S19849C6D1Ev();
extern void _ZN8S19849C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C1[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&_ZN8S19849C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C6D0Ev,
};
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C1[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C88S19849C6__8S19849C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C6__8S19849C1[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C8__8S19849C6__8S19849C1[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C6__8S19849C1[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern void _ZN8S19849C9D1Ev();
extern void _ZN8S19849C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C9__8S19849C1[] = {
  ABISELECT(-176,-112),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&_ZN8S19849C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C9D0Ev,
};
extern void _ZN9S19849C10D1Ev();
extern void _ZN9S19849C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19849C108S19849C9__8S19849C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&_ZN9S19849C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19849C10D0Ev,
};
extern void _ZN8S19849C4D1Ev();
extern void _ZN8S19849C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C49S19849C108S19849C9__A1__8S19849C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&_ZN8S19849C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C49S19849C108S19849C9__A1__8S19849C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C49S19849C108S19849C9__A1__8S19849C1[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C49S19849C108S19849C9__A1__8S19849C1[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C49S19849C108S19849C9__A1__8S19849C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S19849C108S19849C9__8S19849C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C6__9S19849C108S19849C9__8S19849C1[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S19849C10D1Ev,_ZTvn12_n20_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19849C10D0Ev,_ZTvn12_n20_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__9S19849C108S19849C9__8S19849C1[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19849C10D1Ev,_ZTvn12_n20_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19849C10D0Ev,_ZTvn12_n20_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S19849C108S19849C9__8S19849C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C8__A1__9S19849C108S19849C9__8S19849C1[] = {
  ABISELECT(192,124),
  ABISELECT(152,100),
  ABISELECT(192,124),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19849C9D1Ev,_ZThn12_N8S19849C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C9D0Ev,_ZThn12_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19849C10__8S19849C9__8S19849C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C9D1Ev,_ZThn12_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C9D0Ev,_ZThn12_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C9__8S19849C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19849C9D1Ev,_ZTv0_n20_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19849C9D0Ev,_ZTv0_n20_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C9__8S19849C1[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C9D1Ev,_ZTv0_n20_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C9D0Ev,_ZTv0_n20_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19849C9D1Ev,_ZTvn12_n20_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C9D0Ev,_ZTvn12_n20_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C9__8S19849C1[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C9D1Ev,_ZTvn12_n20_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C9D0Ev,_ZTvn12_n20_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__8S19849C9__8S19849C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19849C9D1Ev,_ZTv0_n16_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19849C9D0Ev,_ZTv0_n16_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C8__A1__8S19849C9__8S19849C1[] = {
  ABISELECT(176,112),
  ABISELECT(152,100),
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C9D1Ev,_ZTv0_n16_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C9D0Ev,_ZTv0_n16_N8S19849C9D0Ev),
};
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C8__A1__8S19849C1[] = {
  ABISELECT(152,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZThn152_N8S19849C8D1Ev,_ZThn100_N8S19849C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
extern void ABISELECT(_ZThn152_N8S19849C8D0Ev,_ZThn100_N8S19849C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C8__A1__8S19849C1[] = {
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
static  VTT_ENTRY vtt_S19849C1[] = {
  {&(_ZTV8S19849C1[12]),  12,74},
  {&(_tg__ZTV8S19849C3__8S19849C1[10]),  10,13},
  {&(_tg__ZTV8S19849C4__8S19849C3__8S19849C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__8S19849C3__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C3__8S19849C1[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C3__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C3__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C9__8S19849C3__8S19849C1[7]),  7,9},
  {&(_tg__ZTV9S19849C108S19849C9__8S19849C3__8S19849C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S19849C108S19849C9__8S19849C3__8S19849C1[2]),  2,4},
  {&(_tg__ZTV8S19849C3__8S19849C1[10]),  10,13},
  {&(_tg__ZTV11S20760C5_nt__8S19849C3__8S19849C1[3]),  3,5},
  {&(_tg__ZTV12S19849C15_nt__8S19849C1[3]),  3,3},
  {&(_ZTV8S19849C1[24]),  24,74},
  {&(_ZTV8S19849C1[29]),  29,74},
  {&(_ZTV8S19849C1[36]),  36,74},
  {&(_ZTV8S19849C1[41]),  41,74},
  {&(_ZTV8S19849C1[46]),  46,74},
  {&(_ZTV8S19849C1[55]),  55,74},
  {&(_ZTV8S19849C1[63]),  63,74},
  {&(_ZTV8S19849C1[67]),  67,74},
  {&(_ZTV8S19849C1[12]),  12,74},
  {&(_ZTV8S19849C1[72]),  72,74},
  {&(_ZTV8S19849C1[18]),  18,74},
  {&(_tg__ZTV8S19849C4__8S19849C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19849C4__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C4__8S19849C1[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C4__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C4__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C1[4]),  4,6},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C88S19849C6__8S19849C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19849C6__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C8__8S19849C6__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C6__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C9__8S19849C1[6]),  6,8},
  {&(_tg__ZTV9S19849C108S19849C9__8S19849C1[6]),  6,8},
  {&(_tg__ZTV8S19849C49S19849C108S19849C9__A1__8S19849C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19849C49S19849C108S19849C9__A1__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C49S19849C108S19849C9__A1__8S19849C1[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C49S19849C108S19849C9__A1__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C49S19849C108S19849C9__A1__8S19849C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S19849C108S19849C9__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C6__9S19849C108S19849C9__8S19849C1[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__9S19849C108S19849C9__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S19849C108S19849C9__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C8__A1__9S19849C108S19849C9__8S19849C1[4]),  4,6},
  {&(_tg__ZTV9S19849C10__8S19849C9__8S19849C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__8S19849C9__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C9__8S19849C1[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C9__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__8S19849C9__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C8__A1__8S19849C9__8S19849C1[4]),  4,6},
  {&(_tg__ZTV8S19849C8__A1__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C8__A1__8S19849C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19849C1[];
extern  VTBL_ENTRY _ZTV8S19849C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C1[];
static VTBL_ENTRY alt_thunk_names305[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19849C8D0Ev,_ZThn100_N8S19849C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19849C8D1Ev,_ZThn100_N8S19849C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C4D0Ev,_ZThn44_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C4D1Ev,_ZThn44_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19849C4D0Ev,_ZThn88_N8S19849C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C4D0Ev,_ZThn16_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19849C4D1Ev,_ZThn88_N8S19849C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C4D1Ev,_ZThn16_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19849C3D0Ev,_ZTv0_n28_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19849C3D0Ev,_ZThn112_N8S19849C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19849C3D1Ev,_ZTv0_n28_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19849C3D1Ev,_ZThn112_N8S19849C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C3D0Ev,_ZTv0_n20_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19849C3D0Ev,_ZThn56_N8S19849C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C3D1Ev,_ZTv0_n20_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19849C3D1Ev,_ZThn56_N8S19849C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19849C3D0Ev,_ZThn148_N8S19849C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19849C3D0Ev,_ZThn100_N8S19849C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C3D0Ev,_ZThn28_N8S19849C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19849C3D1Ev,_ZThn148_N8S19849C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19849C3D1Ev,_ZThn100_N8S19849C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C3D1Ev,_ZThn28_N8S19849C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19849C3D0Ev,_ZTv0_n24_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C3D0Ev,_ZThn12_N8S19849C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19849C3D1Ev,_ZTv0_n24_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C3D1Ev,_ZThn12_N8S19849C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19849C3D0Ev,_ZTv0_n16_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19849C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19849C3D1Ev,_ZTv0_n16_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19849C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19849C1D0Ev,_ZTv0_n28_N8S19849C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19849C1D0Ev,_ZThn112_N8S19849C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19849C1D1Ev,_ZTv0_n28_N8S19849C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19849C1D1Ev,_ZThn112_N8S19849C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C1D0Ev,_ZTv0_n20_N8S19849C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19849C1D0Ev,_ZThn56_N8S19849C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C1D1Ev,_ZTv0_n20_N8S19849C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19849C1D1Ev,_ZThn56_N8S19849C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C1D0Ev,_ZTv0_n12_N8S19849C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19849C1D0Ev,_ZThn148_N8S19849C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19849C1D0Ev,_ZThn100_N8S19849C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C1D0Ev,_ZThn28_N8S19849C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C1D1Ev,_ZTv0_n12_N8S19849C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19849C1D1Ev,_ZThn148_N8S19849C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19849C1D1Ev,_ZThn100_N8S19849C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C1D1Ev,_ZThn28_N8S19849C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19849C1D0Ev,_ZTv0_n24_N8S19849C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C1D0Ev,_ZThn12_N8S19849C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19849C1D1Ev,_ZTv0_n24_N8S19849C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C1D1Ev,_ZThn12_N8S19849C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19849C1D0Ev,_ZTv0_n16_N8S19849C1D0Ev), // 
  (VTBL_ENTRY)_ZN8S19849C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19849C1D1Ev,_ZTv0_n16_N8S19849C1D1Ev), // 
  (VTBL_ENTRY)_ZN8S19849C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19849C1 = {  "S19849C1", // class name
  bases_S19849C1, 19,
  &(vtc_S19849C1[0]), // expected_vtbl_contents
  &(vtt_S19849C1[0]), // expected_vtt_contents
  ABISELECT(272,164), // object size
  NSPAIRA(_ZTI8S19849C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19849C1),74, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19849C1),55, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names305,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19848C8  : virtual S20760C9 {
  virtual  ~S19848C8(); // _ZN8S19848C8D2Ev
  S19848C8(); // tgen
};
//SIG(-1 S19848C8) C1{ VBC2{ vd m FL} vd}


 S19848C8 ::~S19848C8(){ note_dtor("S19848C8", this);}
S19848C8 ::S19848C8(){ note_ctor("S19848C8", this);} // tgen

static void Test_S19848C8()
{
  extern Class_Descriptor cd_S19848C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19848C8, buf);
    S19848C8 *dp, &lv = *(dp=new (buf) S19848C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19848C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19848C8)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S19848C8");
    test_class_info(&lv, &cd_S19848C8);
    dp->~S19848C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19848C8(Test_S19848C8, "S19848C8", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19848C8C1Ev();
extern void _ZN8S19848C8D2Ev();
Name_Map name_map_S19848C8[] = {
  NSPAIR(_ZN8S19848C8C1Ev),
  NSPAIR(_ZN8S19848C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S19848C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19848C8[];
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZThn8_N8S19848C8D1Ev,_ZThn4_N8S19848C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
extern void ABISELECT(_ZThn8_N8S19848C8D0Ev,_ZThn4_N8S19848C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19848C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19848C8[];
static  VTT_ENTRY vtt_S19848C8[] = {
  {&(_ZTV8S19848C8[3]),  3,10},
  {&(_ZTV8S19848C8[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
static VTBL_ENTRY alt_thunk_names306[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19848C8D0Ev,_ZThn4_N8S19848C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19848C8D1Ev,_ZThn4_N8S19848C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19848C8 = {  "S19848C8", // class name
  bases_S19848C8, 1,
  &(vtc_S19848C8[0]), // expected_vtbl_contents
  &(vtt_S19848C8[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19848C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19848C8),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19848C8),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names306,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19848C6  : S20760C9 , virtual S20760C13 , S19848C8 {
  ::S20760C13 s19848c6f0;
  ~S19848C6(); // tgen
  S19848C6(); // tgen
};
//SIG(-1 S19848C6) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S19848C6 ::~S19848C6(){ note_dtor("S19848C6", this);} // tgen
S19848C6 ::S19848C6(){ note_ctor("S19848C6", this);} // tgen

static void Test_S19848C6()
{
  extern Class_Descriptor cd_S19848C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S19848C6, buf);
    S19848C6 *dp, &lv = *(dp=new (buf) S19848C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S19848C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19848C6)");
    /*is_ambiguous_... S19848C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S19848C6");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S19848C6");
    check_base_class_offset(lv, (S20760C9*)(S19848C8*), ABISELECT(88,72), "S19848C6");
    check_base_class_offset(lv, (S19848C8*), ABISELECT(16,12), "S19848C6");
    check_field_offset(lv, s19848c6f0, ABISELECT(24,16), "S19848C6.s19848c6f0");
    test_class_info(&lv, &cd_S19848C6);
    dp->~S19848C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19848C6(Test_S19848C6, "S19848C6", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S19848C6C1Ev();
extern void _ZN8S19848C6D1Ev();
Name_Map name_map_S19848C6[] = {
  NSPAIR(_ZN8S19848C6C1Ev),
  NSPAIR(_ZN8S19848C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
static Base_Class bases_S19848C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19848C8,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19848C6[];
extern void _ZN8S19848C6D1Ev();
extern void _ZN8S19848C6D0Ev();
extern void ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn88_N8S19848C6D1Ev,_ZThn72_N8S19848C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
extern void ABISELECT(_ZThn88_N8S19848C6D0Ev,_ZThn72_N8S19848C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19848C6[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&_ZN8S19848C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C6D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19848C6[];
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C8__8S19848C6[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZThn72_N8S19848C8D1Ev,_ZThn60_N8S19848C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
extern void ABISELECT(_ZThn72_N8S19848C8D0Ev,_ZThn60_N8S19848C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C8__8S19848C6[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
static  VTT_ENTRY vtt_S19848C6[] = {
  {&(_ZTV8S19848C6[4]),  4,21},
  {&(_tg__ZTV8S19848C8__8S19848C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C8__8S19848C6[3]),  3,5},
  {&(_ZTV8S19848C6[14]),  14,21},
  {&(_ZTV8S19848C6[9]),  9,21},
  {&(_ZTV8S19848C6[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S19848C6[];
extern  VTBL_ENTRY _ZTV8S19848C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C6[];
static VTBL_ENTRY alt_thunk_names307[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19848C8D0Ev,_ZThn60_N8S19848C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19848C8D1Ev,_ZThn60_N8S19848C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19848C6D0Ev,_ZThn72_N8S19848C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19848C6D1Ev,_ZThn72_N8S19848C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19848C6 = {  "S19848C6", // class name
  bases_S19848C6, 4,
  &(vtc_S19848C6[0]), // expected_vtbl_contents
  &(vtt_S19848C6[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S19848C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19848C6),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19848C6),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names307,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19848C4  : virtual S20760C13 , virtual S19848C6 {
  long double s19848c4f0;
  ~S19848C4(); // tgen
  S19848C4(); // tgen
};
//SIG(-1 S19848C4) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S19848C4 ::~S19848C4(){ note_dtor("S19848C4", this);} // tgen
S19848C4 ::S19848C4(){ note_ctor("S19848C4", this);} // tgen

static void Test_S19848C4()
{
  extern Class_Descriptor cd_S19848C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S19848C4, buf);
    S19848C4 *dp, &lv = *(dp=new (buf) S19848C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S19848C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19848C4)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S19848C4");
    check_base_class_offset(lv, (S20760C13*)(S19848C6*), ABISELECT(32,16), "S19848C4");
    /*is_ambiguous_... S19848C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C6*), ABISELECT(64,44), "S19848C4");
    check_base_class_offset(lv, (S20760C9*)(S19848C8*)(S19848C6*), ABISELECT(120,88), "S19848C4");
    check_base_class_offset(lv, (S19848C8*)(S19848C6*), ABISELECT(80,56), "S19848C4");
    check_base_class_offset(lv, (S19848C6*), ABISELECT(64,44), "S19848C4");
    check_field_offset(lv, s19848c4f0, ABISELECT(16,4), "S19848C4.s19848c4f0");
    test_class_info(&lv, &cd_S19848C4);
    dp->~S19848C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19848C4(Test_S19848C4, "S19848C4", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN8S19848C4C1Ev();
extern void _ZN8S19848C4D1Ev();
Name_Map name_map_S19848C4[] = {
  NSPAIR(_ZN8S19848C4C1Ev),
  NSPAIR(_ZN8S19848C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
extern Class_Descriptor cd_S19848C6;
extern VTBL_ENTRY _ZTI8S19848C6[];
extern  VTBL_ENTRY _ZTV8S19848C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C6[];
static Base_Class bases_S19848C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19848C8,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19848C6,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19848C4[];
extern void _ZN8S19848C4D1Ev();
extern void _ZN8S19848C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19848C4D1Ev,_ZThn16_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S19848C4D0Ev,_ZThn16_N8S19848C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S19848C4D1Ev,_ZThn44_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S19848C4D0Ev,_ZThn44_N8S19848C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn120_N8S19848C4D1Ev,_ZThn88_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn120_N8S19848C4D0Ev,_ZThn88_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19848C4[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&_ZN8S19848C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C4D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19848C4[];
extern void _ZN8S19848C6D1Ev();
extern void _ZN8S19848C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C4[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&_ZN8S19848C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C6D0Ev,
};
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C4[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C88S19848C6__8S19848C4[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C6__8S19848C4[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C8__8S19848C6__8S19848C4[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C6__8S19848C4[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
static  VTT_ENTRY vtt_S19848C4[] = {
  {&(_ZTV8S19848C4[5]),  5,29},
  {&(_ZTV8S19848C4[10]),  10,29},
  {&(_ZTV8S19848C4[17]),  17,29},
  {&(_ZTV8S19848C4[22]),  22,29},
  {&(_ZTV8S19848C4[27]),  27,29},
  {&(_tg__ZTV8S19848C6__8S19848C4[4]),  4,6},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C88S19848C6__8S19848C4[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19848C6__8S19848C4[3]),  3,5},
  {&(_tg__ZTV8S19848C8__8S19848C6__8S19848C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C6__8S19848C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19848C4[];
extern  VTBL_ENTRY _ZTV8S19848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C4[];
static VTBL_ENTRY alt_thunk_names308[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C4D0Ev,_ZThn44_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C4D1Ev,_ZThn44_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19848C4D0Ev,_ZThn88_N8S19848C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C4D0Ev,_ZThn16_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19848C4D1Ev,_ZThn88_N8S19848C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C4D1Ev,_ZThn16_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19848C4 = {  "S19848C4", // class name
  bases_S19848C4, 5,
  &(vtc_S19848C4[0]), // expected_vtbl_contents
  &(vtt_S19848C4[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI8S19848C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19848C4),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19848C4),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names308,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19848C10  : S4161C4_nt , S19848C4 , S20760C22_nt , virtual S19848C8 {
  virtual  ~S19848C10(); // _ZN9S19848C10D2Ev
  S19848C10(); // tgen
};
//SIG(-1 S19848C10) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S19848C10 ::~S19848C10(){ note_dtor("S19848C10", this);}
S19848C10 ::S19848C10(){ note_ctor("S19848C10", this);} // tgen

static void Test_S19848C10()
{
  extern Class_Descriptor cd_S19848C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S19848C10, buf);
    S19848C10 *dp, &lv = *(dp=new (buf) S19848C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S19848C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19848C10)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S19848C10");
    check_base_class_offset(lv, (S20760C13*)(S19848C4*), ABISELECT(48,24), "S19848C10");
    check_base_class_offset(lv, (S20760C13*)(S19848C6*), ABISELECT(48,24), "S19848C10");
    /*is_ambiguous_... S19848C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C6*), ABISELECT(80,52), "S19848C10");
    check_base_class_offset(lv, (S20760C9*)(S19848C8*)(S19848C6*), ABISELECT(136,96), "S19848C10");
    /*is_ambiguous_... S19848C10::S19848C8 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C8*), ABISELECT(136,96), "S19848C10");
    check_base_class_offset(lv, (S19848C8*)(S19848C6*), ABISELECT(96,64), "S19848C10");
    check_base_class_offset(lv, (S19848C6*)(S19848C4*), ABISELECT(80,52), "S19848C10");
    check_base_class_offset(lv, (S19848C4*), 0, "S19848C10");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S19848C10");
    /*is_ambiguous_... S19848C10::S19848C8 */ AMB_check_base_class_offset(lv, (S19848C8*), ABISELECT(152,108), "S19848C10");
    test_class_info(&lv, &cd_S19848C10);
    dp->~S19848C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19848C10(Test_S19848C10, "S19848C10", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN9S19848C10C1Ev();
extern void _ZN9S19848C10D2Ev();
Name_Map name_map_S19848C10[] = {
  NSPAIR(_ZN9S19848C10C1Ev),
  NSPAIR(_ZN9S19848C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
extern Class_Descriptor cd_S19848C6;
extern VTBL_ENTRY _ZTI8S19848C6[];
extern  VTBL_ENTRY _ZTV8S19848C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C6[];
extern Class_Descriptor cd_S19848C4;
extern VTBL_ENTRY _ZTI8S19848C4[];
extern  VTBL_ENTRY _ZTV8S19848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C4[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
static Base_Class bases_S19848C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19848C8,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19848C6,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19848C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19848C8,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19848C10[];
extern void _ZN9S19848C10D1Ev();
extern void _ZN9S19848C10D0Ev();
extern void ABISELECT(_ZThn40_N9S19848C10D1Ev,_ZThn20_N9S19848C10D1Ev)();
extern void ABISELECT(_ZThn40_N9S19848C10D0Ev,_ZThn20_N9S19848C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19848C10D1Ev,_ZThn24_N9S19848C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev)();
extern void ABISELECT(_ZThn48_N9S19848C10D0Ev,_ZThn24_N9S19848C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S19848C10D1Ev,_ZThn52_N9S19848C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S19848C10D0Ev,_ZThn52_N9S19848C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S19848C10D1Ev,_ZTvn12_n20_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19848C10D0Ev,_ZTvn12_n20_N9S19848C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev)();
extern void ABISELECT(_ZThn136_N9S19848C10D1Ev,_ZThn96_N9S19848C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev)();
extern void ABISELECT(_ZThn136_N9S19848C10D0Ev,_ZThn96_N9S19848C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev)();
extern void ABISELECT(_ZThn152_N9S19848C10D1Ev,_ZThn108_N9S19848C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev)();
extern void ABISELECT(_ZThn152_N9S19848C10D0Ev,_ZThn108_N9S19848C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19848C10[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&_ZN9S19848C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19848C10D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19848C10D1Ev,_ZThn20_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19848C10D0Ev,_ZThn20_N9S19848C10D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19848C10D1Ev,_ZTvn12_n20_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19848C10D0Ev,_ZTvn12_n20_N9S19848C10D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19848C10[];
extern void _ZN8S19848C4D1Ev();
extern void _ZN8S19848C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C4__9S19848C10[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&_ZN8S19848C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S19848C4D1Ev,_ZThn24_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S19848C4D0Ev,_ZThn24_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C4__9S19848C10[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S19848C4D1Ev,_ZThn52_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S19848C4D0Ev,_ZThn52_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C4__9S19848C10[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C4__9S19848C10[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn136_N8S19848C4D1Ev,_ZThn96_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn136_N8S19848C4D0Ev,_ZThn96_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C4__9S19848C10[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void _ZN8S19848C6D1Ev();
extern void _ZN8S19848C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C6__9S19848C10[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&_ZN8S19848C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C6D0Ev,
};
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__9S19848C10[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C88S19848C6__9S19848C10[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C6__9S19848C10[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C8__8S19848C6__9S19848C10[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C6__9S19848C10[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C8__A1__9S19848C10[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C8__A1__9S19848C10[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
static  VTT_ENTRY vtt_S19848C10[] = {
  {&(_ZTV9S19848C10[6]),  6,40},
  {&(_tg__ZTV8S19848C4__9S19848C10[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19848C4__9S19848C10[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C4__9S19848C10[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C4__9S19848C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C4__9S19848C10[3]),  3,5},
  {&(_ZTV9S19848C10[15]),  15,40},
  {&(_ZTV9S19848C10[22]),  22,40},
  {&(_ZTV9S19848C10[27]),  27,40},
  {&(_ZTV9S19848C10[32]),  32,40},
  {&(_ZTV9S19848C10[38]),  38,40},
  {&(_tg__ZTV8S19848C6__9S19848C10[4]),  4,6},
  {&(_tg__ZTV8S19848C88S19848C6__9S19848C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C88S19848C6__9S19848C10[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19848C6__9S19848C10[3]),  3,5},
  {&(_tg__ZTV8S19848C8__8S19848C6__9S19848C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C6__9S19848C10[3]),  3,5},
  {&(_tg__ZTV8S19848C8__A1__9S19848C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C8__A1__9S19848C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19848C10[];
extern  VTBL_ENTRY _ZTV9S19848C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19848C10[];
static VTBL_ENTRY alt_thunk_names309[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19848C4D0Ev,_ZThn52_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19848C4D1Ev,_ZThn52_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19848C4D0Ev,_ZThn96_N8S19848C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19848C4D0Ev,_ZThn24_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19848C4D1Ev,_ZThn96_N8S19848C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19848C4D1Ev,_ZThn24_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19848C10D0Ev,_ZThn108_N9S19848C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19848C10D1Ev,_ZThn108_N9S19848C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19848C10D0Ev,_ZThn52_N9S19848C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19848C10D1Ev,_ZThn52_N9S19848C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19848C10D0Ev,_ZThn96_N9S19848C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19848C10D0Ev,_ZThn24_N9S19848C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19848C10D1Ev,_ZThn96_N9S19848C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19848C10D1Ev,_ZThn24_N9S19848C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19848C10 = {  "S19848C10", // class name
  bases_S19848C10, 9,
  &(vtc_S19848C10[0]), // expected_vtbl_contents
  &(vtt_S19848C10[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI9S19848C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19848C10),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19848C10),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names309,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19848C9  : S20760C9 , S19848C10 {
  virtual  ~S19848C9(); // _ZN8S19848C9D2Ev
  S19848C9(); // tgen
};
//SIG(-1 S19848C9) C1{ BC2{ vd m FL} BC3{ BC4{ m Fp} BC5{ VBC6{ vd m Fi[6]} VBC7{ BC2 VBC6 BC8{ VBC2 vd} FC6} FD} BC9{ vd m} VBC8 vd} vd}


 S19848C9 ::~S19848C9(){ note_dtor("S19848C9", this);}
S19848C9 ::S19848C9(){ note_ctor("S19848C9", this);} // tgen

static void Test_S19848C9()
{
  extern Class_Descriptor cd_S19848C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,32)];
    init_test(&cd_S19848C9, buf);
    S19848C9 *dp, &lv = *(dp=new (buf) S19848C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S19848C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19848C9)");
    /*is_ambiguous_... S19848C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S19848C9");
    check_base_class_offset(lv, (S4161C4_nt*)(S19848C10*), ABISELECT(48,28), "S19848C9");
    check_base_class_offset(lv, (S20760C13*)(S19848C4*)(S19848C10*), ABISELECT(64,36), "S19848C9");
    check_base_class_offset(lv, (S20760C13*)(S19848C6*), ABISELECT(64,36), "S19848C9");
    /*is_ambiguous_... S19848C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C6*), ABISELECT(96,64), "S19848C9");
    check_base_class_offset(lv, (S20760C9*)(S19848C8*)(S19848C6*), ABISELECT(152,108), "S19848C9");
    /*is_ambiguous_... S19848C9::S19848C8 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C8*), ABISELECT(152,108), "S19848C9");
    check_base_class_offset(lv, (S19848C8*)(S19848C6*), ABISELECT(112,76), "S19848C9");
    check_base_class_offset(lv, (S19848C6*)(S19848C4*)(S19848C10*), ABISELECT(96,64), "S19848C9");
    check_base_class_offset(lv, (S19848C4*)(S19848C10*), ABISELECT(16,12), "S19848C9");
    check_base_class_offset(lv, (S20760C22_nt*)(S19848C10*), ABISELECT(56,32), "S19848C9");
    /*is_ambiguous_... S19848C10::S19848C8 */ AMB_check_base_class_offset(lv, (S19848C8*)(S19848C10*), ABISELECT(168,120), "S19848C9");
    check_base_class_offset(lv, (S19848C10*), ABISELECT(16,12), "S19848C9");
    test_class_info(&lv, &cd_S19848C9);
    dp->~S19848C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19848C9(Test_S19848C9, "S19848C9", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN8S19848C9C1Ev();
extern void _ZN8S19848C9D2Ev();
Name_Map name_map_S19848C9[] = {
  NSPAIR(_ZN8S19848C9C1Ev),
  NSPAIR(_ZN8S19848C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
extern Class_Descriptor cd_S19848C6;
extern VTBL_ENTRY _ZTI8S19848C6[];
extern  VTBL_ENTRY _ZTV8S19848C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C6[];
extern Class_Descriptor cd_S19848C4;
extern VTBL_ENTRY _ZTI8S19848C4[];
extern  VTBL_ENTRY _ZTV8S19848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C4[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
extern Class_Descriptor cd_S19848C10;
extern VTBL_ENTRY _ZTI9S19848C10[];
extern  VTBL_ENTRY _ZTV9S19848C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19848C10[];
static Base_Class bases_S19848C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(64,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(152,108), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19848C8,    ABISELECT(112,76), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19848C6,    ABISELECT(96,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19848C4,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19848C8,    ABISELECT(168,120), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19848C10,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19848C9[];
extern void _ZN8S19848C9D1Ev();
extern void _ZN8S19848C9D0Ev();
extern void ABISELECT(_ZThn16_N8S19848C9D1Ev,_ZThn12_N8S19848C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C9D0Ev,_ZThn12_N8S19848C9D0Ev)();
extern void ABISELECT(_ZThn56_N8S19848C9D1Ev,_ZThn32_N8S19848C9D1Ev)();
extern void ABISELECT(_ZThn56_N8S19848C9D0Ev,_ZThn32_N8S19848C9D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19848C9D1Ev,_ZThn36_N8S19848C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S19848C9D0Ev,_ZThn36_N8S19848C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C9D1Ev,_ZTv0_n20_N8S19848C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19848C9D1Ev,_ZThn64_N8S19848C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C9D0Ev,_ZTv0_n20_N8S19848C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19848C9D0Ev,_ZThn64_N8S19848C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S19848C9D1Ev,_ZTvn12_n20_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C9D0Ev,_ZTvn12_n20_N8S19848C9D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev)();
extern void ABISELECT(_ZThn152_N8S19848C9D1Ev,_ZThn108_N8S19848C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev)();
extern void ABISELECT(_ZThn152_N8S19848C9D0Ev,_ZThn108_N8S19848C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19848C9D1Ev,_ZTv0_n16_N8S19848C9D1Ev)();
extern void ABISELECT(_ZThn168_N8S19848C9D1Ev,_ZThn120_N8S19848C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19848C9D0Ev,_ZTv0_n16_N8S19848C9D0Ev)();
extern void ABISELECT(_ZThn168_N8S19848C9D0Ev,_ZThn120_N8S19848C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19848C9[] = {
  ABISELECT(168,120),
  ABISELECT(152,108),
  ABISELECT(96,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&_ZN8S19848C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C9D0Ev,
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C9D1Ev,_ZThn12_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C9D0Ev,_ZThn12_N8S19848C9D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19848C9D1Ev,_ZThn32_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19848C9D0Ev,_ZThn32_N8S19848C9D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev),
  ABISELECT(-96,-64),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C9D1Ev,_ZTv0_n20_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C9D0Ev,_ZTv0_n20_N8S19848C9D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C9D1Ev,_ZTvn12_n20_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C9D0Ev,_ZTvn12_n20_N8S19848C9D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev),
  ABISELECT(-168,-120),
  ABISELECT(-16,-12),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C9D1Ev,_ZTv0_n16_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C9D0Ev,_ZTv0_n16_N8S19848C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19848C9[];
extern void _ZN9S19848C10D1Ev();
extern void _ZN9S19848C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19848C10__8S19848C9[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&_ZN9S19848C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19848C10D0Ev,
};
extern void _ZN8S19848C4D1Ev();
extern void _ZN8S19848C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C49S19848C10__8S19848C9[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&_ZN8S19848C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S19848C4D1Ev,_ZThn24_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S19848C4D0Ev,_ZThn24_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C49S19848C10__8S19848C9[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S19848C4D1Ev,_ZThn52_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S19848C4D0Ev,_ZThn52_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C49S19848C10__8S19848C9[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C49S19848C10__8S19848C9[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn136_N8S19848C4D1Ev,_ZThn96_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn136_N8S19848C4D0Ev,_ZThn96_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C49S19848C10__8S19848C9[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19848C10D1Ev,_ZThn24_N9S19848C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev)();
extern void ABISELECT(_ZThn48_N9S19848C10D0Ev,_ZThn24_N9S19848C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S19848C10__8S19848C9[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S19848C10D1Ev,_ZThn52_N9S19848C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S19848C10D0Ev,_ZThn52_N9S19848C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19848C6__9S19848C10__8S19848C9[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S19848C10D1Ev,_ZTvn12_n20_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19848C10D0Ev,_ZTvn12_n20_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__9S19848C10__8S19848C9[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19848C10D1Ev,_ZTvn12_n20_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19848C10D0Ev,_ZTvn12_n20_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev)();
extern void ABISELECT(_ZThn136_N9S19848C10D1Ev,_ZThn96_N9S19848C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev)();
extern void ABISELECT(_ZThn136_N9S19848C10D0Ev,_ZThn96_N9S19848C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S19848C10__8S19848C9[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev)();
extern void ABISELECT(_ZThn152_N9S19848C10D1Ev,_ZThn108_N9S19848C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev)();
extern void ABISELECT(_ZThn152_N9S19848C10D0Ev,_ZThn108_N9S19848C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19848C8__A1__9S19848C10__8S19848C9[] = {
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev),
};
extern void _ZN8S19848C6D1Ev();
extern void _ZN8S19848C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C9[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&_ZN8S19848C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C6D0Ev,
};
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C9[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C88S19848C6__8S19848C9[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C6__8S19848C9[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C8__8S19848C6__8S19848C9[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C6__8S19848C9[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C8__A1__8S19848C9[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C8__A1__8S19848C9[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
static  VTT_ENTRY vtt_S19848C9[] = {
  {&(_ZTV8S19848C9[6]),  6,48},
  {&(_tg__ZTV9S19848C10__8S19848C9[6]),  6,8},
  {&(_tg__ZTV8S19848C49S19848C10__8S19848C9[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19848C49S19848C10__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C49S19848C10__8S19848C9[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C49S19848C10__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C49S19848C10__8S19848C9[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S19848C10__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S19848C6__9S19848C10__8S19848C9[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__9S19848C10__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S19848C10__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S19848C8__A1__9S19848C10__8S19848C9[4]),  4,6},
  {&(_ZTV8S19848C9[14]),  14,48},
  {&(_ZTV8S19848C9[23]),  23,48},
  {&(_ZTV8S19848C9[30]),  30,48},
  {&(_ZTV8S19848C9[35]),  35,48},
  {&(_ZTV8S19848C9[40]),  40,48},
  {&(_ZTV8S19848C9[46]),  46,48},
  {&(_tg__ZTV8S19848C6__8S19848C9[4]),  4,6},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C88S19848C6__8S19848C9[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19848C6__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S19848C8__8S19848C6__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C6__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S19848C8__A1__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C8__A1__8S19848C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19848C9[];
extern  VTBL_ENTRY _ZTV8S19848C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C9[];
static VTBL_ENTRY alt_thunk_names310[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19848C10D0Ev,_ZThn108_N9S19848C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19848C10D1Ev,_ZThn108_N9S19848C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19848C10D0Ev,_ZThn52_N9S19848C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19848C10D1Ev,_ZThn52_N9S19848C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19848C10D0Ev,_ZThn96_N9S19848C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19848C10D0Ev,_ZThn24_N9S19848C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19848C10D1Ev,_ZThn96_N9S19848C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19848C10D1Ev,_ZThn24_N9S19848C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19848C4D0Ev,_ZThn52_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19848C4D1Ev,_ZThn52_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19848C4D0Ev,_ZThn96_N8S19848C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19848C4D0Ev,_ZThn24_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19848C4D1Ev,_ZThn96_N8S19848C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19848C4D1Ev,_ZThn24_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19848C9D0Ev,_ZTv0_n16_N8S19848C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19848C9D0Ev,_ZThn120_N8S19848C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19848C9D1Ev,_ZTv0_n16_N8S19848C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19848C9D1Ev,_ZThn120_N8S19848C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C9D0Ev,_ZTv0_n20_N8S19848C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19848C9D0Ev,_ZThn64_N8S19848C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C9D1Ev,_ZTv0_n20_N8S19848C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19848C9D1Ev,_ZThn64_N8S19848C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19848C9D0Ev,_ZThn108_N8S19848C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C9D0Ev,_ZThn36_N8S19848C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19848C9D1Ev,_ZThn108_N8S19848C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C9D1Ev,_ZThn36_N8S19848C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19848C9 = {  "S19848C9", // class name
  bases_S19848C9, 11,
  &(vtc_S19848C9[0]), // expected_vtbl_contents
  &(vtt_S19848C9[0]), // expected_vtt_contents
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI8S19848C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19848C9),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19848C9),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names310,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19848C3  : virtual S19848C4 , virtual S19848C9 , S4228C27 , virtual S20759C5_nt {
  virtual  ~S19848C3(); // _ZN8S19848C3D2Ev
  virtual void  v1(); // _ZN8S19848C32v1Ev
  S19848C3(); // tgen
};
//SIG(-1 S19848C3) C1{ VBC2{ VBC3{ vd m Fi[6]} VBC4{ BC5{ vd m FL} VBC3 BC6{ VBC5 vd} FC3} FD} VBC7{ BC5 BC8{ BC9{ m Fp} BC2 BC10{ vd m} VBC6 vd} vd} BC11{ m} VBC12{ vd m Fl} vd v1}


 S19848C3 ::~S19848C3(){ note_dtor("S19848C3", this);}
void  S19848C3 ::v1(){vfunc_called(this, "_ZN8S19848C32v1Ev");}
S19848C3 ::S19848C3(){ note_ctor("S19848C3", this);} // tgen

static void Test_S19848C3()
{
  extern Class_Descriptor cd_S19848C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,38)];
    init_test(&cd_S19848C3, buf);
    S19848C3 *dp, &lv = *(dp=new (buf) S19848C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,148), "sizeof(S19848C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19848C3)");
    /*is_ambiguous_... S19848C3::S19848C4 */ AMB_check_base_class_offset(lv, (S20760C13*)(S19848C4*), ABISELECT(48,20), "S19848C3");
    check_base_class_offset(lv, (S20760C13*)(S19848C6*), ABISELECT(48,20), "S19848C3");
    check_base_class_offset(lv, (S20760C13*)(S19848C4*)(S19848C10*)(S19848C9*), ABISELECT(48,20), "S19848C3");
    /*is_ambiguous_... S19848C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C6*), ABISELECT(80,48), "S19848C3");
    check_base_class_offset(lv, (S20760C9*)(S19848C8*)(S19848C6*), ABISELECT(136,92), "S19848C3");
    /*is_ambiguous_... S19848C3::S19848C8 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C8*), ABISELECT(136,92), "S19848C3");
    check_base_class_offset(lv, (S19848C8*)(S19848C6*), ABISELECT(96,60), "S19848C3");
    /*is_ambiguous_... S19848C3::S19848C4 */ AMB_check_base_class_offset(lv, (S19848C6*)(S19848C4*), ABISELECT(80,48), "S19848C3");
    check_base_class_offset(lv, (S19848C6*)(S19848C4*)(S19848C10*)(S19848C9*), ABISELECT(80,48), "S19848C3");
    /*is_ambiguous_... S19848C3::S19848C4 */ AMB_check_base_class_offset(lv, (S19848C4*), ABISELECT(16,4), "S19848C3");
    /*is_ambiguous_... S19848C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C9*), ABISELECT(160,104), "S19848C3");
    check_base_class_offset(lv, (S4161C4_nt*)(S19848C10*)(S19848C9*), ABISELECT(208,132), "S19848C3");
    check_base_class_offset(lv, (S19848C4*)(S19848C10*)(S19848C9*), ABISELECT(176,116), "S19848C3");
    check_base_class_offset(lv, (S20760C22_nt*)(S19848C10*)(S19848C9*), ABISELECT(216,136), "S19848C3");
    /*is_ambiguous_... S19848C10::S19848C8 */ AMB_check_base_class_offset(lv, (S19848C8*)(S19848C10*)(S19848C9*), 0, "S19848C3");
    check_base_class_offset(lv, (S19848C10*)(S19848C9*), ABISELECT(176,116), "S19848C3");
    check_base_class_offset(lv, (S19848C9*), ABISELECT(160,104), "S19848C3");
    check_base_class_offset(lv, (S4228C27*), 0, "S19848C3");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(224,140), "S19848C3");
    test_class_info(&lv, &cd_S19848C3);
    dp->~S19848C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19848C3(Test_S19848C3, "S19848C3", ABISELECT(240,148));

#else // __cplusplus

extern void _ZN8S19848C3C1Ev();
extern void _ZN8S19848C3D2Ev();
Name_Map name_map_S19848C3[] = {
  NSPAIR(_ZN8S19848C3C1Ev),
  NSPAIR(_ZN8S19848C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
extern Class_Descriptor cd_S19848C6;
extern VTBL_ENTRY _ZTI8S19848C6[];
extern  VTBL_ENTRY _ZTV8S19848C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C6[];
extern Class_Descriptor cd_S19848C4;
extern VTBL_ENTRY _ZTI8S19848C4[];
extern  VTBL_ENTRY _ZTV8S19848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19848C4;
extern VTBL_ENTRY _ZTI8S19848C4[];
extern  VTBL_ENTRY _ZTV8S19848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C4[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
extern Class_Descriptor cd_S19848C10;
extern VTBL_ENTRY _ZTI9S19848C10[];
extern  VTBL_ENTRY _ZTV9S19848C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19848C10[];
extern Class_Descriptor cd_S19848C9;
extern VTBL_ENTRY _ZTI8S19848C9[];
extern  VTBL_ENTRY _ZTV8S19848C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S19848C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(48,20), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,92), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19848C8,    ABISELECT(96,60), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19848C6,    ABISELECT(80,48), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19848C4,    ABISELECT(16,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19848C4,    ABISELECT(176,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(216,136), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19848C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19848C10,    ABISELECT(176,116), //bcp->offset
    52, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19848C9,    ABISELECT(160,104), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20759C5_nt,    ABISELECT(224,140), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19848C3[];
extern void ABISELECT(_ZTv0_n32_N8S19848C3D1Ev,_ZTv0_n16_N8S19848C3D1Ev)();
extern void _ZN8S19848C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19848C3D0Ev,_ZTv0_n16_N8S19848C3D0Ev)();
extern void _ZN8S19848C3D0Ev() __attribute__((weak));
extern void _ZN8S19848C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19848C3D1Ev,_ZTv0_n24_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C3D1Ev,_ZThn4_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19848C3D0Ev,_ZTv0_n24_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19848C3D0Ev,_ZThn4_N8S19848C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S19848C3D1Ev,_ZThn20_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S19848C3D0Ev,_ZThn20_N8S19848C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C3D1Ev,_ZTv0_n20_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn80_N8S19848C3D1Ev,_ZThn48_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C3D0Ev,_ZTv0_n20_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn80_N8S19848C3D0Ev,_ZThn48_N8S19848C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S19848C3D1Ev,_ZTvn12_n20_N8S19848C3D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C3D0Ev,_ZTvn12_n20_N8S19848C3D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn136_N8S19848C3D1Ev,_ZThn92_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn136_N8S19848C3D0Ev,_ZThn92_N8S19848C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19848C3D1Ev,_ZTv0_n28_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S19848C3D1Ev,_ZThn104_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19848C3D0Ev,_ZTv0_n28_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S19848C3D0Ev,_ZThn104_N8S19848C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S19848C3D1Ev,_ZTvn12_n28_N8S19848C3D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S19848C3D0Ev,_ZTvn12_n28_N8S19848C3D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19848C3D1Ev,_ZTvn32_n28_N8S19848C3D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19848C3D0Ev,_ZTvn32_n28_N8S19848C3D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn224_N8S19848C3D1Ev,_ZThn140_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn224_N8S19848C3D0Ev,_ZThn140_N8S19848C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19848C3[] = {
  ABISELECT(224,140),
  0,
  ABISELECT(160,104),
  ABISELECT(80,48),
  ABISELECT(48,20),
  ABISELECT(16,4),
  0,
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C3D1Ev,_ZTv0_n16_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C3D0Ev,_ZTv0_n16_N8S19848C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19848C32v1Ev,
  ABISELECT(-16,-4),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19848C3D1Ev,_ZTv0_n24_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19848C3D0Ev,_ZTv0_n24_N8S19848C3D0Ev),
  ABISELECT(-48,-20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C3D1Ev,_ZTv0_n20_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C3D0Ev,_ZTv0_n20_N8S19848C3D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C3D1Ev,_ZTvn12_n20_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C3D0Ev,_ZTvn12_n20_N8S19848C3D0Ev),
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev),
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19848C3D1Ev,_ZTv0_n28_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19848C3D0Ev,_ZTv0_n28_N8S19848C3D0Ev),
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19848C3D1Ev,_ZTvn12_n28_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19848C3D0Ev,_ZTvn12_n28_N8S19848C3D0Ev),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19848C3D1Ev,_ZTvn32_n28_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19848C3D0Ev,_ZTvn32_n28_N8S19848C3D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19848C3[];
extern void _ZN8S19848C4D1Ev();
extern void _ZN8S19848C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C4__8S19848C3[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&_ZN8S19848C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19848C4D1Ev,_ZThn16_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S19848C4D0Ev,_ZThn16_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C4__8S19848C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S19848C4D1Ev,_ZThn44_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S19848C4D0Ev,_ZThn44_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C4__8S19848C3[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C4__8S19848C3[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn120_N8S19848C4D1Ev,_ZThn88_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn120_N8S19848C4D0Ev,_ZThn88_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C4__8S19848C3[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void _ZN8S19848C6D1Ev();
extern void _ZN8S19848C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C3[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&_ZN8S19848C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C6D0Ev,
};
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C3[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C88S19848C6__8S19848C3[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C6__8S19848C3[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C8__8S19848C6__8S19848C3[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C6__8S19848C3[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern void _ZN8S19848C9D1Ev();
extern void _ZN8S19848C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C9__8S19848C3[] = {
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&_ZN8S19848C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C9D0Ev,
};
extern void _ZN9S19848C10D1Ev();
extern void _ZN9S19848C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19848C108S19848C9__8S19848C3[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&_ZN9S19848C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19848C10D0Ev,
};
extern void _ZN8S19848C4D1Ev();
extern void _ZN8S19848C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C49S19848C108S19848C9__A1__8S19848C3[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&_ZN8S19848C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C49S19848C108S19848C9__A1__8S19848C3[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C49S19848C108S19848C9__A1__8S19848C3[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C49S19848C108S19848C9__A1__8S19848C3[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C49S19848C108S19848C9__A1__8S19848C3[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S19848C108S19848C9__8S19848C3[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C6__9S19848C108S19848C9__8S19848C3[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S19848C10D1Ev,_ZTvn12_n20_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19848C10D0Ev,_ZTvn12_n20_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__9S19848C108S19848C9__8S19848C3[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19848C10D1Ev,_ZTvn12_n20_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19848C10D0Ev,_ZTvn12_n20_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S19848C108S19848C9__8S19848C3[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C8__A1__9S19848C108S19848C9__8S19848C3[] = {
  ABISELECT(176,116),
  ABISELECT(136,92),
  ABISELECT(176,116),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19848C9D1Ev,_ZThn12_N8S19848C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C9D0Ev,_ZThn12_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19848C10__8S19848C9__8S19848C3[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C9D1Ev,_ZThn12_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C9D0Ev,_ZThn12_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C9__8S19848C3[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19848C9D1Ev,_ZTv0_n20_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19848C9D0Ev,_ZTv0_n20_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C9__8S19848C3[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C9D1Ev,_ZTv0_n20_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C9D0Ev,_ZTv0_n20_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19848C9D1Ev,_ZTvn12_n20_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C9D0Ev,_ZTvn12_n20_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C9__8S19848C3[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C9D1Ev,_ZTvn12_n20_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C9D0Ev,_ZTvn12_n20_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__8S19848C9__8S19848C3[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19848C9D1Ev,_ZTv0_n16_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19848C9D0Ev,_ZTv0_n16_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C8__A1__8S19848C9__8S19848C3[] = {
  ABISELECT(160,104),
  ABISELECT(136,92),
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C9D1Ev,_ZTv0_n16_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C9D0Ev,_ZTv0_n16_N8S19848C9D0Ev),
};
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C8__A1__8S19848C3[] = {
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S19848C8D1Ev,_ZThn92_N8S19848C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
extern void ABISELECT(_ZThn136_N8S19848C8D0Ev,_ZThn92_N8S19848C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C8__A1__8S19848C3[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
static  VTT_ENTRY vtt_S19848C3[] = {
  {&(_ZTV8S19848C3[10]),  10,69},
  {&(_ZTV8S19848C3[19]),  19,69},
  {&(_ZTV8S19848C3[24]),  24,69},
  {&(_ZTV8S19848C3[31]),  31,69},
  {&(_ZTV8S19848C3[36]),  36,69},
  {&(_ZTV8S19848C3[41]),  41,69},
  {&(_ZTV8S19848C3[50]),  50,69},
  {&(_ZTV8S19848C3[58]),  58,69},
  {&(_ZTV8S19848C3[62]),  62,69},
  {&(_ZTV8S19848C3[10]),  10,69},
  {&(_ZTV8S19848C3[67]),  67,69},
  {&(_tg__ZTV8S19848C4__8S19848C3[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19848C4__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C4__8S19848C3[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C4__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C4__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C3[4]),  4,6},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C88S19848C6__8S19848C3[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19848C6__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S19848C8__8S19848C6__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C6__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S19848C9__8S19848C3[6]),  6,8},
  {&(_tg__ZTV9S19848C108S19848C9__8S19848C3[6]),  6,8},
  {&(_tg__ZTV8S19848C49S19848C108S19848C9__A1__8S19848C3[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19848C49S19848C108S19848C9__A1__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C49S19848C108S19848C9__A1__8S19848C3[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C49S19848C108S19848C9__A1__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C49S19848C108S19848C9__A1__8S19848C3[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S19848C108S19848C9__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S19848C6__9S19848C108S19848C9__8S19848C3[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__9S19848C108S19848C9__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S19848C108S19848C9__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S19848C8__A1__9S19848C108S19848C9__8S19848C3[4]),  4,6},
  {&(_tg__ZTV9S19848C10__8S19848C9__8S19848C3[6]),  6,8},
  {&(_tg__ZTV9S20760C13__8S19848C9__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C9__8S19848C3[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C9__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__8S19848C9__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S19848C8__A1__8S19848C9__8S19848C3[4]),  4,6},
  {&(_tg__ZTV8S19848C8__A1__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C8__A1__8S19848C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19848C3[];
extern  VTBL_ENTRY _ZTV8S19848C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C3[];
static VTBL_ENTRY alt_thunk_names311[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19848C8D0Ev,_ZThn92_N8S19848C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19848C8D1Ev,_ZThn92_N8S19848C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C4D0Ev,_ZThn44_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C4D1Ev,_ZThn44_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19848C4D0Ev,_ZThn88_N8S19848C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C4D0Ev,_ZThn16_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19848C4D1Ev,_ZThn88_N8S19848C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C4D1Ev,_ZThn16_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19848C3D0Ev,_ZTv0_n28_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19848C3D0Ev,_ZThn104_N8S19848C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19848C3D1Ev,_ZTv0_n28_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19848C3D1Ev,_ZThn104_N8S19848C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C3D0Ev,_ZTv0_n20_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19848C3D0Ev,_ZThn48_N8S19848C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C3D1Ev,_ZTv0_n20_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19848C3D1Ev,_ZThn48_N8S19848C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19848C3D0Ev,_ZThn140_N8S19848C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19848C3D0Ev,_ZThn92_N8S19848C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19848C3D0Ev,_ZThn20_N8S19848C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19848C3D1Ev,_ZThn140_N8S19848C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19848C3D1Ev,_ZThn92_N8S19848C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19848C3D1Ev,_ZThn20_N8S19848C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19848C3D0Ev,_ZTv0_n24_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19848C3D0Ev,_ZThn4_N8S19848C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19848C3D1Ev,_ZTv0_n24_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19848C3D1Ev,_ZThn4_N8S19848C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19848C3D0Ev,_ZTv0_n16_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19848C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19848C3D1Ev,_ZTv0_n16_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19848C3D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19848C3 = {  "S19848C3", // class name
  bases_S19848C3, 15,
  &(vtc_S19848C3[0]), // expected_vtbl_contents
  &(vtt_S19848C3[0]), // expected_vtt_contents
  ABISELECT(240,148), // object size
  NSPAIRA(_ZTI8S19848C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19848C3),69, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19848C3),42, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names311,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19848C15  : virtual S4161C4_nt {
  int s19848c15f0;
  ~S19848C15(); // tgen
  S19848C15(); // tgen
};
//SIG(-1 S19848C15) C1{ VBC2{ m Fp} Fi}


S19848C15 ::~S19848C15(){ note_dtor("S19848C15", this);} // tgen
S19848C15 ::S19848C15(){ note_ctor("S19848C15", this);} // tgen

static void Test_S19848C15()
{
  extern Class_Descriptor cd_S19848C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19848C15, buf);
    S19848C15 *dp, &lv = *(dp=new (buf) S19848C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19848C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19848C15)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(16,8), "S19848C15");
    check_field_offset(lv, s19848c15f0, ABISELECT(8,4), "S19848C15.s19848c15f0");
    test_class_info(&lv, &cd_S19848C15);
    dp->~S19848C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19848C15(Test_S19848C15, "S19848C15", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S19848C15C1Ev();
extern void _ZN9S19848C15D1Ev();
Name_Map name_map_S19848C15[] = {
  NSPAIR(_ZN9S19848C15C1Ev),
  NSPAIR(_ZN9S19848C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S19848C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19848C15[];
static  VTBL_ENTRY vtc_S19848C15[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19848C15[0]),
};
extern VTBL_ENTRY _ZTV9S19848C15[];
static  VTT_ENTRY vtt_S19848C15[] = {
  {&(_ZTV9S19848C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19848C15[];
extern  VTBL_ENTRY _ZTV9S19848C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19848C15[];
Class_Descriptor cd_S19848C15 = {  "S19848C15", // class name
  bases_S19848C15, 1,
  &(vtc_S19848C15[0]), // expected_vtbl_contents
  &(vtt_S19848C15[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S19848C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19848C15),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19848C15),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19848C1  : virtual S4228C37 , S19848C3 , S19848C15 {
  virtual  ~S19848C1(); // _ZN8S19848C1D2Ev
  S19848C1(); // tgen
};
//SIG(1 S19848C1) C1{ VBC2{ m} BC3{ VBC4{ VBC5{ vd m Fi[6]} VBC6{ BC7{ vd m FL} VBC5 BC8{ VBC7 vd} FC5} FD} VBC9{ BC7 BC10{ BC11{ m Fp} BC4 BC12{ vd m} VBC8 vd} vd} BC13{ m} VBC14{ vd m Fl} vd v1} BC15{ VBC11 Fi} vd}


 S19848C1 ::~S19848C1(){ note_dtor("S19848C1", this);}
S19848C1 ::S19848C1(){ note_ctor("S19848C1", this);} // tgen

static void Test_S19848C1()
{
  extern Class_Descriptor cd_S19848C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(18,41)];
    init_test(&cd_S19848C1, buf);
    S19848C1 *dp, &lv = *(dp=new (buf) S19848C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,160), "sizeof(S19848C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19848C1)");
    check_base_class_offset(lv, (S4228C37*), 0, "S19848C1");
    /*is_ambiguous_... S19848C1::S19848C4 */ AMB_check_base_class_offset(lv, (S20760C13*)(S19848C4*), ABISELECT(64,28), "S19848C1");
    check_base_class_offset(lv, (S20760C13*)(S19848C6*), ABISELECT(64,28), "S19848C1");
    check_base_class_offset(lv, (S20760C13*)(S19848C4*)(S19848C10*)(S19848C9*), ABISELECT(64,28), "S19848C1");
    /*is_ambiguous_... S19848C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C6*), ABISELECT(96,56), "S19848C1");
    check_base_class_offset(lv, (S20760C9*)(S19848C8*)(S19848C6*), ABISELECT(152,100), "S19848C1");
    /*is_ambiguous_... S19848C1::S19848C8 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C8*), ABISELECT(152,100), "S19848C1");
    check_base_class_offset(lv, (S19848C8*)(S19848C6*), ABISELECT(112,68), "S19848C1");
    /*is_ambiguous_... S19848C1::S19848C4 */ AMB_check_base_class_offset(lv, (S19848C6*)(S19848C4*), ABISELECT(96,56), "S19848C1");
    check_base_class_offset(lv, (S19848C6*)(S19848C4*)(S19848C10*)(S19848C9*), ABISELECT(96,56), "S19848C1");
    /*is_ambiguous_... S19848C3::S19848C4 */ AMB_check_base_class_offset(lv, (S19848C4*)(S19848C3*), ABISELECT(32,12), "S19848C1");
    /*is_ambiguous_... S19848C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C9*), ABISELECT(176,112), "S19848C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S19848C10*)(S19848C9*), ABISELECT(224,140), "S19848C1");
    check_base_class_offset(lv, (S19848C4*)(S19848C10*)(S19848C9*), ABISELECT(192,124), "S19848C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S19848C10*)(S19848C9*), ABISELECT(232,144), "S19848C1");
    /*is_ambiguous_... S19848C10::S19848C8 */ AMB_check_base_class_offset(lv, (S19848C8*)(S19848C10*)(S19848C9*), 0, "S19848C1");
    check_base_class_offset(lv, (S19848C10*)(S19848C9*), ABISELECT(192,124), "S19848C1");
    check_base_class_offset(lv, (S19848C9*)(S19848C3*), ABISELECT(176,112), "S19848C1");
    check_base_class_offset(lv, (S4228C27*)(S19848C3*), 0, "S19848C1");
    check_base_class_offset(lv, (S20759C5_nt*)(S19848C3*), ABISELECT(240,148), "S19848C1");
    check_base_class_offset(lv, (S19848C3*), 0, "S19848C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S19848C15*), ABISELECT(256,156), "S19848C1");
    check_base_class_offset(lv, (S19848C15*), ABISELECT(8,4), "S19848C1");
    test_class_info(&lv, &cd_S19848C1);
    dp->~S19848C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19848C1(Test_S19848C1, "S19848C1", ABISELECT(272,160));

#else // __cplusplus

extern void _ZN8S19848C1C1Ev();
extern void _ZN8S19848C1D2Ev();
Name_Map name_map_S19848C1[] = {
  NSPAIR(_ZN8S19848C1C1Ev),
  NSPAIR(_ZN8S19848C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
extern Class_Descriptor cd_S19848C6;
extern VTBL_ENTRY _ZTI8S19848C6[];
extern  VTBL_ENTRY _ZTV8S19848C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C6[];
extern Class_Descriptor cd_S19848C4;
extern VTBL_ENTRY _ZTI8S19848C4[];
extern  VTBL_ENTRY _ZTV8S19848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19848C4;
extern VTBL_ENTRY _ZTI8S19848C4[];
extern  VTBL_ENTRY _ZTV8S19848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C4[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
extern Class_Descriptor cd_S19848C10;
extern VTBL_ENTRY _ZTI9S19848C10[];
extern  VTBL_ENTRY _ZTV9S19848C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19848C10[];
extern Class_Descriptor cd_S19848C9;
extern VTBL_ENTRY _ZTI8S19848C9[];
extern  VTBL_ENTRY _ZTV8S19848C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S19848C3;
extern VTBL_ENTRY _ZTI8S19848C3[];
extern  VTBL_ENTRY _ZTV8S19848C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C3[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19848C15;
extern VTBL_ENTRY _ZTI9S19848C15[];
extern  VTBL_ENTRY _ZTV9S19848C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19848C15[];
static Base_Class bases_S19848C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C13,    ABISELECT(64,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(152,100), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19848C8,    ABISELECT(112,68), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19848C6,    ABISELECT(96,56), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19848C4,    ABISELECT(32,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19848C4,    ABISELECT(192,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(232,144), //bcp->offset
    65, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19848C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19848C10,    ABISELECT(192,124), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19848C9,    ABISELECT(176,112), //bcp->offset
    48, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20759C5_nt,    ABISELECT(240,148), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19848C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(256,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19848C15,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19848C1[];
extern void ABISELECT(_ZTv0_n32_N8S19848C1D1Ev,_ZTv0_n16_N8S19848C1D1Ev)();
extern void _ZN8S19848C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19848C1D0Ev,_ZTv0_n16_N8S19848C1D0Ev)();
extern void _ZN8S19848C1D0Ev() __attribute__((weak));
extern void _ZN8S19848C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19848C1D1Ev,_ZTv0_n24_N8S19848C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19848C1D1Ev,_ZThn12_N8S19848C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19848C1D0Ev,_ZTv0_n24_N8S19848C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S19848C1D0Ev,_ZThn12_N8S19848C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C1D1Ev,_ZTv0_n12_N8S19848C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19848C1D1Ev,_ZThn28_N8S19848C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C1D0Ev,_ZTv0_n12_N8S19848C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19848C1D0Ev,_ZThn28_N8S19848C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C1D1Ev,_ZTv0_n20_N8S19848C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S19848C1D1Ev,_ZThn56_N8S19848C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C1D0Ev,_ZTv0_n20_N8S19848C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S19848C1D0Ev,_ZThn56_N8S19848C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S19848C1D1Ev,_ZTvn12_n20_N8S19848C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C1D0Ev,_ZTvn12_n20_N8S19848C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C1D1Ev,_ZTv0_n12_N8S19848C1D1Ev)();
extern void ABISELECT(_ZThn152_N8S19848C1D1Ev,_ZThn100_N8S19848C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C1D0Ev,_ZTv0_n12_N8S19848C1D0Ev)();
extern void ABISELECT(_ZThn152_N8S19848C1D0Ev,_ZThn100_N8S19848C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19848C1D1Ev,_ZTv0_n28_N8S19848C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S19848C1D1Ev,_ZThn112_N8S19848C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19848C1D0Ev,_ZTv0_n28_N8S19848C1D0Ev)();
extern void ABISELECT(_ZThn176_N8S19848C1D0Ev,_ZThn112_N8S19848C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S19848C1D1Ev,_ZTvn12_n28_N8S19848C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S19848C1D0Ev,_ZTvn12_n28_N8S19848C1D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19848C1D1Ev,_ZTvn32_n28_N8S19848C1D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19848C1D0Ev,_ZTvn32_n28_N8S19848C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C1D1Ev,_ZTv0_n12_N8S19848C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S19848C1D1Ev,_ZThn148_N8S19848C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C1D0Ev,_ZTv0_n12_N8S19848C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S19848C1D0Ev,_ZThn148_N8S19848C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19848C1[] = {
  ABISELECT(256,156),
  0,
  ABISELECT(240,148),
  0,
  ABISELECT(176,112),
  ABISELECT(96,56),
  ABISELECT(64,28),
  ABISELECT(32,12),
  0,
  ABISELECT(152,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C1D1Ev,_ZTv0_n16_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C1D0Ev,_ZTv0_n16_N8S19848C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19848C32v1Ev,
  ABISELECT(248,152),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  ABISELECT(-32,-12),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19848C1D1Ev,_ZTv0_n24_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19848C1D0Ev,_ZTv0_n24_N8S19848C1D0Ev),
  ABISELECT(-64,-28),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C1D1Ev,_ZTv0_n12_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C1D0Ev,_ZTv0_n12_N8S19848C1D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C1D1Ev,_ZTv0_n20_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C1D0Ev,_ZTv0_n20_N8S19848C1D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C1D1Ev,_ZTvn12_n20_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C1D0Ev,_ZTvn12_n20_N8S19848C1D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C1D1Ev,_ZTv0_n12_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C1D0Ev,_ZTv0_n12_N8S19848C1D0Ev),
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19848C1D1Ev,_ZTv0_n28_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19848C1D0Ev,_ZTv0_n28_N8S19848C1D0Ev),
  ABISELECT(-192,-124),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19848C1D1Ev,_ZTvn12_n28_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19848C1D0Ev,_ZTvn12_n28_N8S19848C1D0Ev),
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19848C1D1Ev,_ZTvn32_n28_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19848C1D0Ev,_ZTvn32_n28_N8S19848C1D0Ev),
  ABISELECT(-240,-148),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C1D1Ev,_ZTv0_n12_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C1D0Ev,_ZTv0_n12_N8S19848C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19848C1[];
extern void ABISELECT(_ZTv0_n32_N8S19848C3D1Ev,_ZTv0_n16_N8S19848C3D1Ev)();
extern void _ZN8S19848C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19848C3D0Ev,_ZTv0_n16_N8S19848C3D0Ev)();
extern void _ZN8S19848C3D0Ev() __attribute__((weak));
extern void _ZN8S19848C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C3__8S19848C1[] = {
  ABISELECT(240,148),
  0,
  ABISELECT(176,112),
  ABISELECT(96,56),
  ABISELECT(64,28),
  ABISELECT(32,12),
  0,
  ABISELECT(152,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C3D1Ev,_ZTv0_n16_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C3D0Ev,_ZTv0_n16_N8S19848C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19848C32v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S19848C3D1Ev,_ZTv0_n24_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S19848C3D1Ev,_ZThn12_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19848C3D0Ev,_ZTv0_n24_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn32_N8S19848C3D0Ev,_ZThn12_N8S19848C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19848C4__8S19848C3__8S19848C1[] = {
  ABISELECT(-32,-12),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19848C3D1Ev,_ZTv0_n24_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19848C3D0Ev,_ZTv0_n24_N8S19848C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S19848C3D1Ev,_ZThn28_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S19848C3D0Ev,_ZThn28_N8S19848C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C3__8S19848C1[] = {
  ABISELECT(-64,-28),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19848C3D1Ev,_ZTv0_n20_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S19848C3D1Ev,_ZThn56_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C3D0Ev,_ZTv0_n20_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S19848C3D0Ev,_ZThn56_N8S19848C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C3__8S19848C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C3D1Ev,_ZTv0_n20_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C3D0Ev,_ZTv0_n20_N8S19848C3D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19848C3D1Ev,_ZTvn12_n20_N8S19848C3D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C3D0Ev,_ZTvn12_n20_N8S19848C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C3__8S19848C1[] = {
  ABISELECT(40,32),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C3D1Ev,_ZTvn12_n20_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C3D0Ev,_ZTvn12_n20_N8S19848C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn152_N8S19848C3D1Ev,_ZThn100_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn152_N8S19848C3D0Ev,_ZThn100_N8S19848C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C3__8S19848C1[] = {
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S19848C3D1Ev,_ZTv0_n28_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S19848C3D1Ev,_ZThn112_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19848C3D0Ev,_ZTv0_n28_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S19848C3D0Ev,_ZThn112_N8S19848C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19848C9__8S19848C3__8S19848C1[] = {
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19848C3D1Ev,_ZTv0_n28_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19848C3D0Ev,_ZTv0_n28_N8S19848C3D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N8S19848C3D1Ev,_ZTvn12_n28_N8S19848C3D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S19848C3D0Ev,_ZTvn12_n28_N8S19848C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19848C108S19848C9__8S19848C3__8S19848C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19848C3D1Ev,_ZTvn12_n28_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19848C3D0Ev,_ZTvn12_n28_N8S19848C3D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N8S19848C3D1Ev,_ZTvn32_n28_N8S19848C3D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19848C3D0Ev,_ZTvn32_n28_N8S19848C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S19848C108S19848C9__8S19848C3__8S19848C1[] = {
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19848C3D1Ev,_ZTvn32_n28_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19848C3D0Ev,_ZTvn32_n28_N8S19848C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn240_N8S19848C3D1Ev,_ZThn148_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn240_N8S19848C3D0Ev,_ZThn148_N8S19848C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S19848C3__8S19848C1[] = {
  ABISELECT(-240,-148),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19848C15__8S19848C1[] = {
  ABISELECT(248,152),
  0,
  (VTBL_ENTRY)&(_ZTI9S19848C15[0]),
};
extern void _ZN8S19848C4D1Ev();
extern void _ZN8S19848C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C4__8S19848C1[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&_ZN8S19848C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19848C4D1Ev,_ZThn16_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S19848C4D0Ev,_ZThn16_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C4__8S19848C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S19848C4D1Ev,_ZThn44_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S19848C4D0Ev,_ZThn44_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C4__8S19848C1[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C4__8S19848C1[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn120_N8S19848C4D1Ev,_ZThn88_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn120_N8S19848C4D0Ev,_ZThn88_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C4__8S19848C1[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void _ZN8S19848C6D1Ev();
extern void _ZN8S19848C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C1[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&_ZN8S19848C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C6D0Ev,
};
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C1[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C88S19848C6__8S19848C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C6__8S19848C1[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C8__8S19848C6__8S19848C1[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C6__8S19848C1[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern void _ZN8S19848C9D1Ev();
extern void _ZN8S19848C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C9__8S19848C1[] = {
  ABISELECT(-176,-112),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&_ZN8S19848C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C9D0Ev,
};
extern void _ZN9S19848C10D1Ev();
extern void _ZN9S19848C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19848C108S19848C9__8S19848C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&_ZN9S19848C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19848C10D0Ev,
};
extern void _ZN8S19848C4D1Ev();
extern void _ZN8S19848C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C49S19848C108S19848C9__A1__8S19848C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&_ZN8S19848C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C49S19848C108S19848C9__A1__8S19848C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C49S19848C108S19848C9__A1__8S19848C1[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C49S19848C108S19848C9__A1__8S19848C1[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C49S19848C108S19848C9__A1__8S19848C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S19848C108S19848C9__8S19848C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C6__9S19848C108S19848C9__8S19848C1[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S19848C10D1Ev,_ZTvn12_n20_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19848C10D0Ev,_ZTvn12_n20_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__9S19848C108S19848C9__8S19848C1[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19848C10D1Ev,_ZTvn12_n20_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19848C10D0Ev,_ZTvn12_n20_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S19848C108S19848C9__8S19848C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C8__A1__9S19848C108S19848C9__8S19848C1[] = {
  ABISELECT(192,124),
  ABISELECT(152,100),
  ABISELECT(192,124),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19848C9D1Ev,_ZThn12_N8S19848C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C9D0Ev,_ZThn12_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19848C10__8S19848C9__8S19848C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C9D1Ev,_ZThn12_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C9D0Ev,_ZThn12_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C9__8S19848C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19848C9D1Ev,_ZTv0_n20_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19848C9D0Ev,_ZTv0_n20_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C9__8S19848C1[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C9D1Ev,_ZTv0_n20_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C9D0Ev,_ZTv0_n20_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19848C9D1Ev,_ZTvn12_n20_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C9D0Ev,_ZTvn12_n20_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C9__8S19848C1[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C9D1Ev,_ZTvn12_n20_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C9D0Ev,_ZTvn12_n20_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__8S19848C9__8S19848C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19848C9D1Ev,_ZTv0_n16_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19848C9D0Ev,_ZTv0_n16_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C8__A1__8S19848C9__8S19848C1[] = {
  ABISELECT(176,112),
  ABISELECT(152,100),
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C9D1Ev,_ZTv0_n16_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C9D0Ev,_ZTv0_n16_N8S19848C9D0Ev),
};
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C8__A1__8S19848C1[] = {
  ABISELECT(152,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZThn152_N8S19848C8D1Ev,_ZThn100_N8S19848C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
extern void ABISELECT(_ZThn152_N8S19848C8D0Ev,_ZThn100_N8S19848C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C8__A1__8S19848C1[] = {
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
static  VTT_ENTRY vtt_S19848C1[] = {
  {&(_ZTV8S19848C1[12]),  12,74},
  {&(_tg__ZTV8S19848C3__8S19848C1[10]),  10,13},
  {&(_tg__ZTV8S19848C4__8S19848C3__8S19848C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__8S19848C3__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C3__8S19848C1[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C3__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C3__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C9__8S19848C3__8S19848C1[7]),  7,9},
  {&(_tg__ZTV9S19848C108S19848C9__8S19848C3__8S19848C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S19848C108S19848C9__8S19848C3__8S19848C1[2]),  2,4},
  {&(_tg__ZTV8S19848C3__8S19848C1[10]),  10,13},
  {&(_tg__ZTV11S20759C5_nt__8S19848C3__8S19848C1[3]),  3,5},
  {&(_tg__ZTV9S19848C15__8S19848C1[3]),  3,3},
  {&(_ZTV8S19848C1[24]),  24,74},
  {&(_ZTV8S19848C1[29]),  29,74},
  {&(_ZTV8S19848C1[36]),  36,74},
  {&(_ZTV8S19848C1[41]),  41,74},
  {&(_ZTV8S19848C1[46]),  46,74},
  {&(_ZTV8S19848C1[55]),  55,74},
  {&(_ZTV8S19848C1[63]),  63,74},
  {&(_ZTV8S19848C1[67]),  67,74},
  {&(_ZTV8S19848C1[12]),  12,74},
  {&(_ZTV8S19848C1[72]),  72,74},
  {&(_ZTV8S19848C1[18]),  18,74},
  {&(_tg__ZTV8S19848C4__8S19848C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19848C4__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C4__8S19848C1[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C4__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C4__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C1[4]),  4,6},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C88S19848C6__8S19848C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19848C6__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C8__8S19848C6__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C6__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C9__8S19848C1[6]),  6,8},
  {&(_tg__ZTV9S19848C108S19848C9__8S19848C1[6]),  6,8},
  {&(_tg__ZTV8S19848C49S19848C108S19848C9__A1__8S19848C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19848C49S19848C108S19848C9__A1__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C49S19848C108S19848C9__A1__8S19848C1[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C49S19848C108S19848C9__A1__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C49S19848C108S19848C9__A1__8S19848C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S19848C108S19848C9__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C6__9S19848C108S19848C9__8S19848C1[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__9S19848C108S19848C9__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S19848C108S19848C9__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C8__A1__9S19848C108S19848C9__8S19848C1[4]),  4,6},
  {&(_tg__ZTV9S19848C10__8S19848C9__8S19848C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__8S19848C9__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C9__8S19848C1[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C9__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__8S19848C9__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C8__A1__8S19848C9__8S19848C1[4]),  4,6},
  {&(_tg__ZTV8S19848C8__A1__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C8__A1__8S19848C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19848C1[];
extern  VTBL_ENTRY _ZTV8S19848C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C1[];
static VTBL_ENTRY alt_thunk_names312[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19848C8D0Ev,_ZThn100_N8S19848C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19848C8D1Ev,_ZThn100_N8S19848C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C4D0Ev,_ZThn44_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C4D1Ev,_ZThn44_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19848C4D0Ev,_ZThn88_N8S19848C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C4D0Ev,_ZThn16_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19848C4D1Ev,_ZThn88_N8S19848C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C4D1Ev,_ZThn16_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19848C3D0Ev,_ZTv0_n28_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19848C3D0Ev,_ZThn112_N8S19848C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19848C3D1Ev,_ZTv0_n28_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19848C3D1Ev,_ZThn112_N8S19848C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C3D0Ev,_ZTv0_n20_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19848C3D0Ev,_ZThn56_N8S19848C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C3D1Ev,_ZTv0_n20_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19848C3D1Ev,_ZThn56_N8S19848C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19848C3D0Ev,_ZThn148_N8S19848C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19848C3D0Ev,_ZThn100_N8S19848C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C3D0Ev,_ZThn28_N8S19848C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19848C3D1Ev,_ZThn148_N8S19848C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19848C3D1Ev,_ZThn100_N8S19848C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C3D1Ev,_ZThn28_N8S19848C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19848C3D0Ev,_ZTv0_n24_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C3D0Ev,_ZThn12_N8S19848C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19848C3D1Ev,_ZTv0_n24_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C3D1Ev,_ZThn12_N8S19848C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19848C3D0Ev,_ZTv0_n16_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19848C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19848C3D1Ev,_ZTv0_n16_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19848C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19848C1D0Ev,_ZTv0_n28_N8S19848C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19848C1D0Ev,_ZThn112_N8S19848C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19848C1D1Ev,_ZTv0_n28_N8S19848C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19848C1D1Ev,_ZThn112_N8S19848C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C1D0Ev,_ZTv0_n20_N8S19848C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19848C1D0Ev,_ZThn56_N8S19848C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C1D1Ev,_ZTv0_n20_N8S19848C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19848C1D1Ev,_ZThn56_N8S19848C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C1D0Ev,_ZTv0_n12_N8S19848C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19848C1D0Ev,_ZThn148_N8S19848C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19848C1D0Ev,_ZThn100_N8S19848C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C1D0Ev,_ZThn28_N8S19848C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C1D1Ev,_ZTv0_n12_N8S19848C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19848C1D1Ev,_ZThn148_N8S19848C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19848C1D1Ev,_ZThn100_N8S19848C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C1D1Ev,_ZThn28_N8S19848C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19848C1D0Ev,_ZTv0_n24_N8S19848C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C1D0Ev,_ZThn12_N8S19848C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19848C1D1Ev,_ZTv0_n24_N8S19848C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C1D1Ev,_ZThn12_N8S19848C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19848C1D0Ev,_ZTv0_n16_N8S19848C1D0Ev), // 
  (VTBL_ENTRY)_ZN8S19848C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19848C1D1Ev,_ZTv0_n16_N8S19848C1D1Ev), // 
  (VTBL_ENTRY)_ZN8S19848C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19848C1 = {  "S19848C1", // class name
  bases_S19848C1, 19,
  &(vtc_S19848C1[0]), // expected_vtbl_contents
  &(vtt_S19848C1[0]), // expected_vtt_contents
  ABISELECT(272,160), // object size
  NSPAIRA(_ZTI8S19848C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19848C1),74, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19848C1),55, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names312,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5436C3  {
  char s5436c3f0;
  int s5436c3f1;
  void *s5436c3f2[3];
  char s5436c3f3[3];
  ::S4228C19_nt s5436c3f4;
  char s5436c3f5;
  void *s5436c3f6;
  int s5436c3f7[2];
  virtual  ~S5436C3(); // _ZN7S5436C3D1Ev
  virtual void  v9(); // _ZN7S5436C32v9Ev
  virtual void  v10(); // _ZN7S5436C33v10Ev
  virtual void  v11(); // _ZN7S5436C33v11Ev
  virtual void  v12(); // _ZN7S5436C33v12Ev
  virtual void  v13(); // _ZN7S5436C33v13Ev
  virtual void  v14(); // _ZN7S5436C33v14Ev
  virtual void  v15(); // _ZN7S5436C33v15Ev
  virtual void  v16(); // _ZN7S5436C33v16Ev
  virtual void  v17(); // _ZN7S5436C33v17Ev
  virtual void  v18(); // _ZN7S5436C33v18Ev
  virtual void  v19(); // _ZN7S5436C33v19Ev
  virtual void  v20(); // _ZN7S5436C33v20Ev
  virtual void  v21(); // _ZN7S5436C33v21Ev
  virtual void  v22(); // _ZN7S5436C33v22Ev
  S5436C3(); // tgen
};
//SIG(-1 S5436C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fc Fi Fp[3] Fc[3] FC2{ m Fp Fi FC3{ m}} Fc Fp Fi[2]}


 S5436C3 ::~S5436C3(){ note_dtor("S5436C3", this);}
void  S5436C3 ::v9(){vfunc_called(this, "_ZN7S5436C32v9Ev");}
void  S5436C3 ::v10(){vfunc_called(this, "_ZN7S5436C33v10Ev");}
void  S5436C3 ::v11(){vfunc_called(this, "_ZN7S5436C33v11Ev");}
void  S5436C3 ::v12(){vfunc_called(this, "_ZN7S5436C33v12Ev");}
void  S5436C3 ::v13(){vfunc_called(this, "_ZN7S5436C33v13Ev");}
void  S5436C3 ::v14(){vfunc_called(this, "_ZN7S5436C33v14Ev");}
void  S5436C3 ::v15(){vfunc_called(this, "_ZN7S5436C33v15Ev");}
void  S5436C3 ::v16(){vfunc_called(this, "_ZN7S5436C33v16Ev");}
void  S5436C3 ::v17(){vfunc_called(this, "_ZN7S5436C33v17Ev");}
void  S5436C3 ::v18(){vfunc_called(this, "_ZN7S5436C33v18Ev");}
void  S5436C3 ::v19(){vfunc_called(this, "_ZN7S5436C33v19Ev");}
void  S5436C3 ::v20(){vfunc_called(this, "_ZN7S5436C33v20Ev");}
void  S5436C3 ::v21(){vfunc_called(this, "_ZN7S5436C33v21Ev");}
void  S5436C3 ::v22(){vfunc_called(this, "_ZN7S5436C33v22Ev");}
S5436C3 ::S5436C3(){ note_ctor("S5436C3", this);} // tgen

static void Test_S5436C3()
{
  extern Class_Descriptor cd_S5436C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S5436C3, buf);
    S5436C3 *dp, &lv = *(dp=new (buf) S5436C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S5436C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5436C3)");
    check_field_offset(lv, s5436c3f0, ABISELECT(8,4), "S5436C3.s5436c3f0");
    check_field_offset(lv, s5436c3f1, ABISELECT(12,8), "S5436C3.s5436c3f1");
    check_field_offset(lv, s5436c3f2, ABISELECT(16,12), "S5436C3.s5436c3f2");
    check_field_offset(lv, s5436c3f3, ABISELECT(40,24), "S5436C3.s5436c3f3");
    check_field_offset(lv, s5436c3f4, ABISELECT(48,28), "S5436C3.s5436c3f4");
    check_field_offset(lv, s5436c3f5, ABISELECT(64,40), "S5436C3.s5436c3f5");
    check_field_offset(lv, s5436c3f6, ABISELECT(72,44), "S5436C3.s5436c3f6");
    check_field_offset(lv, s5436c3f7, ABISELECT(80,48), "S5436C3.s5436c3f7");
    test_class_info(&lv, &cd_S5436C3);
    dp->~S5436C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5436C3(Test_S5436C3, "S5436C3", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S5436C3C1Ev();
extern void _ZN7S5436C3D1Ev();
Name_Map name_map_S5436C3[] = {
  NSPAIR(_ZN7S5436C3C1Ev),
  NSPAIR(_ZN7S5436C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5436C3[];
extern void _ZN7S5436C3D1Ev();
extern void _ZN7S5436C3D0Ev();
extern void _ZN7S5436C32v9Ev();
extern void _ZN7S5436C33v10Ev();
extern void _ZN7S5436C33v11Ev();
extern void _ZN7S5436C33v12Ev();
extern void _ZN7S5436C33v13Ev();
extern void _ZN7S5436C33v14Ev();
extern void _ZN7S5436C33v15Ev();
extern void _ZN7S5436C33v16Ev();
extern void _ZN7S5436C33v17Ev();
extern void _ZN7S5436C33v18Ev();
extern void _ZN7S5436C33v19Ev();
extern void _ZN7S5436C33v20Ev();
extern void _ZN7S5436C33v21Ev();
extern void _ZN7S5436C33v22Ev();
static  VTBL_ENTRY vtc_S5436C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5436C3[0]),
  (VTBL_ENTRY)&_ZN7S5436C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5436C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5436C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v22Ev,
};
extern VTBL_ENTRY _ZTI7S5436C3[];
extern  VTBL_ENTRY _ZTV7S5436C3[];
Class_Descriptor cd_S5436C3 = {  "S5436C3", // class name
  0,0,//no base classes
  &(vtc_S5436C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S5436C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5436C3),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5436C2  : S5436C3 {
  char s5436c2f0;
  void *s5436c2f1[2];
  virtual  ~S5436C2(); // _ZN7S5436C2D1Ev
  virtual void  v23(); // _ZN7S5436C23v23Ev
  S5436C2(); // tgen
};
//SIG(-1 S5436C2) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fc Fi Fp[3] Fc[3] FC3{ m Fp Fi FC4{ m}} Fc Fp Fi[2]} vd v1 Fc Fp[2]}


 S5436C2 ::~S5436C2(){ note_dtor("S5436C2", this);}
void  S5436C2 ::v23(){vfunc_called(this, "_ZN7S5436C23v23Ev");}
S5436C2 ::S5436C2(){ note_ctor("S5436C2", this);} // tgen

static void Test_S5436C2()
{
  extern Class_Descriptor cd_S5436C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,18)];
    init_test(&cd_S5436C2, buf);
    S5436C2 *dp, &lv = *(dp=new (buf) S5436C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S5436C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5436C2)");
    check_base_class_offset(lv, (S5436C3*), 0, "S5436C2");
    check_field_offset(lv, s5436c2f0, ABISELECT(88,56), "S5436C2.s5436c2f0");
    check_field_offset(lv, s5436c2f1, ABISELECT(96,60), "S5436C2.s5436c2f1");
    test_class_info(&lv, &cd_S5436C2);
    dp->~S5436C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5436C2(Test_S5436C2, "S5436C2", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN7S5436C2C1Ev();
extern void _ZN7S5436C2D1Ev();
Name_Map name_map_S5436C2[] = {
  NSPAIR(_ZN7S5436C2C1Ev),
  NSPAIR(_ZN7S5436C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5436C3;
extern VTBL_ENTRY _ZTI7S5436C3[];
extern  VTBL_ENTRY _ZTV7S5436C3[];
static Base_Class bases_S5436C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5436C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5436C2[];
extern void _ZN7S5436C2D1Ev();
extern void _ZN7S5436C2D0Ev();
extern void _ZN7S5436C32v9Ev();
extern void _ZN7S5436C33v10Ev();
extern void _ZN7S5436C33v11Ev();
extern void _ZN7S5436C33v12Ev();
extern void _ZN7S5436C33v13Ev();
extern void _ZN7S5436C33v14Ev();
extern void _ZN7S5436C33v15Ev();
extern void _ZN7S5436C33v16Ev();
extern void _ZN7S5436C33v17Ev();
extern void _ZN7S5436C33v18Ev();
extern void _ZN7S5436C33v19Ev();
extern void _ZN7S5436C33v20Ev();
extern void _ZN7S5436C33v21Ev();
extern void _ZN7S5436C33v22Ev();
extern void _ZN7S5436C23v23Ev();
static  VTBL_ENTRY vtc_S5436C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5436C2[0]),
  (VTBL_ENTRY)&_ZN7S5436C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5436C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5436C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v22Ev,
  (VTBL_ENTRY)&_ZN7S5436C23v23Ev,
};
extern VTBL_ENTRY _ZTI7S5436C2[];
extern  VTBL_ENTRY _ZTV7S5436C2[];
Class_Descriptor cd_S5436C2 = {  "S5436C2", // class name
  bases_S5436C2, 1,
  &(vtc_S5436C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI7S5436C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5436C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5436C1  : S5436C2 {
  int s5436c1f0[5];
  virtual  ~S5436C1(); // _ZN7S5436C1D1Ev
  virtual void  v1(); // _ZN7S5436C12v1Ev
  virtual void  v2(); // _ZN7S5436C12v2Ev
  virtual void  v3(); // _ZN7S5436C12v3Ev
  virtual void  v4(); // _ZN7S5436C12v4Ev
  virtual void  v5(); // _ZN7S5436C12v5Ev
  virtual void  v6(); // _ZN7S5436C12v6Ev
  virtual void  v7(); // _ZN7S5436C12v7Ev
  virtual void  v8(); // _ZN7S5436C12v8Ev
  S5436C1(); // tgen
};
//SIG(1 S5436C1) C1{ BC2{ BC3{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fc Fi Fp[3] Fc[3] FC4{ m Fp Fi FC5{ m}} Fc Fp Fi[2]} vd v23 Fc Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi[5]}


 S5436C1 ::~S5436C1(){ note_dtor("S5436C1", this);}
void  S5436C1 ::v1(){vfunc_called(this, "_ZN7S5436C12v1Ev");}
void  S5436C1 ::v2(){vfunc_called(this, "_ZN7S5436C12v2Ev");}
void  S5436C1 ::v3(){vfunc_called(this, "_ZN7S5436C12v3Ev");}
void  S5436C1 ::v4(){vfunc_called(this, "_ZN7S5436C12v4Ev");}
void  S5436C1 ::v5(){vfunc_called(this, "_ZN7S5436C12v5Ev");}
void  S5436C1 ::v6(){vfunc_called(this, "_ZN7S5436C12v6Ev");}
void  S5436C1 ::v7(){vfunc_called(this, "_ZN7S5436C12v7Ev");}
void  S5436C1 ::v8(){vfunc_called(this, "_ZN7S5436C12v8Ev");}
S5436C1 ::S5436C1(){ note_ctor("S5436C1", this);} // tgen

static void Test_S5436C1()
{
  extern Class_Descriptor cd_S5436C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S5436C1, buf);
    S5436C1 *dp, &lv = *(dp=new (buf) S5436C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S5436C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5436C1)");
    check_base_class_offset(lv, (S5436C3*)(S5436C2*), 0, "S5436C1");
    check_base_class_offset(lv, (S5436C2*), 0, "S5436C1");
    check_field_offset(lv, s5436c1f0, ABISELECT(112,68), "S5436C1.s5436c1f0");
    test_class_info(&lv, &cd_S5436C1);
    dp->~S5436C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5436C1(Test_S5436C1, "S5436C1", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN7S5436C1C1Ev();
extern void _ZN7S5436C1D1Ev();
Name_Map name_map_S5436C1[] = {
  NSPAIR(_ZN7S5436C1C1Ev),
  NSPAIR(_ZN7S5436C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5436C3;
extern VTBL_ENTRY _ZTI7S5436C3[];
extern  VTBL_ENTRY _ZTV7S5436C3[];
extern Class_Descriptor cd_S5436C2;
extern VTBL_ENTRY _ZTI7S5436C2[];
extern  VTBL_ENTRY _ZTV7S5436C2[];
static Base_Class bases_S5436C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5436C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5436C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5436C1[];
extern void _ZN7S5436C1D1Ev();
extern void _ZN7S5436C1D0Ev();
extern void _ZN7S5436C32v9Ev();
extern void _ZN7S5436C33v10Ev();
extern void _ZN7S5436C33v11Ev();
extern void _ZN7S5436C33v12Ev();
extern void _ZN7S5436C33v13Ev();
extern void _ZN7S5436C33v14Ev();
extern void _ZN7S5436C33v15Ev();
extern void _ZN7S5436C33v16Ev();
extern void _ZN7S5436C33v17Ev();
extern void _ZN7S5436C33v18Ev();
extern void _ZN7S5436C33v19Ev();
extern void _ZN7S5436C33v20Ev();
extern void _ZN7S5436C33v21Ev();
extern void _ZN7S5436C33v22Ev();
extern void _ZN7S5436C23v23Ev();
extern void _ZN7S5436C12v1Ev();
extern void _ZN7S5436C12v2Ev();
extern void _ZN7S5436C12v3Ev();
extern void _ZN7S5436C12v4Ev();
extern void _ZN7S5436C12v5Ev();
extern void _ZN7S5436C12v6Ev();
extern void _ZN7S5436C12v7Ev();
extern void _ZN7S5436C12v8Ev();
static  VTBL_ENTRY vtc_S5436C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5436C1[0]),
  (VTBL_ENTRY)&_ZN7S5436C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5436C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5436C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v22Ev,
  (VTBL_ENTRY)&_ZN7S5436C23v23Ev,
  (VTBL_ENTRY)&_ZN7S5436C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5436C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5436C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5436C12v4Ev,
  (VTBL_ENTRY)&_ZN7S5436C12v5Ev,
  (VTBL_ENTRY)&_ZN7S5436C12v6Ev,
  (VTBL_ENTRY)&_ZN7S5436C12v7Ev,
  (VTBL_ENTRY)&_ZN7S5436C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S5436C1[];
extern  VTBL_ENTRY _ZTV7S5436C1[];
Class_Descriptor cd_S5436C1 = {  "S5436C1", // class name
  bases_S5436C1, 2,
  &(vtc_S5436C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI7S5436C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5436C1),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7252C5  : S4228C37 , virtual S4228C27 {
  ::S4228C37 s7252c5f0;
  ~S7252C5(); // tgen
  S7252C5(); // tgen
};
//SIG(-1 S7252C5) C1{ BC2{ m} VBC3{ m} FC2}


S7252C5 ::~S7252C5(){ note_dtor("S7252C5", this);} // tgen
S7252C5 ::S7252C5(){ note_ctor("S7252C5", this);} // tgen

static void Test_S7252C5()
{
  extern Class_Descriptor cd_S7252C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7252C5, buf);
    S7252C5 *dp, &lv = *(dp=new (buf) S7252C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7252C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C5)");
    check_base_class_offset(lv, (S4228C37*), 0, "S7252C5");
    check_base_class_offset(lv, (S4228C27*), 0, "S7252C5");
    check_field_offset(lv, s7252c5f0, ABISELECT(8,4), "S7252C5.s7252c5f0");
    test_class_info(&lv, &cd_S7252C5);
    dp->~S7252C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C5(Test_S7252C5, "S7252C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7252C5C1Ev();
extern void _ZN7S7252C5D1Ev();
Name_Map name_map_S7252C5[] = {
  NSPAIR(_ZN7S7252C5C1Ev),
  NSPAIR(_ZN7S7252C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7252C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7252C5[];
static  VTBL_ENTRY vtc_S7252C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C5[0]),
};
extern VTBL_ENTRY _ZTV7S7252C5[];
static  VTT_ENTRY vtt_S7252C5[] = {
  {&(_ZTV7S7252C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7252C5[];
extern  VTBL_ENTRY _ZTV7S7252C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C5[];
Class_Descriptor cd_S7252C5 = {  "S7252C5", // class name
  bases_S7252C5, 2,
  &(vtc_S7252C5[0]), // expected_vtbl_contents
  &(vtt_S7252C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7252C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7252C5),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7252C5),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7252C8  : S4228C27 , virtual S4228C37 , virtual S7252C5 {
  void *s7252c8f0;
  ~S7252C8(); // tgen
  S7252C8(); // tgen
};
//SIG(-1 S7252C8) C1{ BC2{ m} VBC3{ m} VBC4{ BC3 VBC2 FC3} Fp}


S7252C8 ::~S7252C8(){ note_dtor("S7252C8", this);} // tgen
S7252C8 ::S7252C8(){ note_ctor("S7252C8", this);} // tgen

static void Test_S7252C8()
{
  extern Class_Descriptor cd_S7252C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7252C8, buf);
    S7252C8 *dp, &lv = *(dp=new (buf) S7252C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7252C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C8)");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), 0, "S7252C8");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), 0, "S7252C8");
    check_base_class_offset(lv, (S4228C37*)(S7252C5*), ABISELECT(16,8), "S7252C8");
    check_base_class_offset(lv, (S4228C27*)(S7252C5*), ABISELECT(25,13), "S7252C8");
    check_base_class_offset(lv, (S7252C5*), ABISELECT(16,8), "S7252C8");
    check_field_offset(lv, s7252c8f0, ABISELECT(8,4), "S7252C8.s7252c8f0");
    test_class_info(&lv, &cd_S7252C8);
    dp->~S7252C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C8(Test_S7252C8, "S7252C8", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7252C8C1Ev();
extern void _ZN7S7252C8D1Ev();
Name_Map name_map_S7252C8[] = {
  NSPAIR(_ZN7S7252C8C1Ev),
  NSPAIR(_ZN7S7252C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C5;
extern VTBL_ENTRY _ZTI7S7252C5[];
extern  VTBL_ENTRY _ZTV7S7252C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C5[];
static Base_Class bases_S7252C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7252C5,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7252C8[];
static  VTBL_ENTRY vtc_S7252C8[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
extern VTBL_ENTRY _ZTV7S7252C8[];
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C8[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C5[0]),
};
static  VTT_ENTRY vtt_S7252C8[] = {
  {&(_ZTV7S7252C8[5]),  5,8},
  {&(_ZTV7S7252C8[8]),  8,8},
  {&(_tg__ZTV7S7252C5__7S7252C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
Class_Descriptor cd_S7252C8 = {  "S7252C8", // class name
  bases_S7252C8, 5,
  &(vtc_S7252C8[0]), // expected_vtbl_contents
  &(vtt_S7252C8[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7252C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7252C8),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7252C8),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7252C3  : S3423C8_nt , virtual S7252C5 , S7252C8 , S4228C27 {
  char s7252c3f0;
  virtual  ~S7252C3(); // _ZN7S7252C3D2Ev
  S7252C3(); // tgen
};
//SIG(-1 S7252C3) C1{ BC2{ m Fi} VBC3{ BC4{ m} VBC5{ m} FC4} BC6{ BC5 VBC4 VBC3 Fp} BC5 vd Fc}


 S7252C3 ::~S7252C3(){ note_dtor("S7252C3", this);}
S7252C3 ::S7252C3(){ note_ctor("S7252C3", this);} // tgen

static void Test_S7252C3()
{
  extern Class_Descriptor cd_S7252C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7252C3, buf);
    S7252C3 *dp, &lv = *(dp=new (buf) S7252C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7252C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C3)");
    check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(16,8), "S7252C3");
    check_base_class_offset(lv, (S4228C37*)(S7252C5*), ABISELECT(24,16), "S7252C3");
    check_base_class_offset(lv, (S4228C27*)(S7252C5*), ABISELECT(33,21), "S7252C3");
    check_base_class_offset(lv, (S7252C5*), ABISELECT(24,16), "S7252C3");
    check_base_class_offset(lv, (S7252C5*)(S7252C8*), ABISELECT(24,16), "S7252C3");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C8*), 0, "S7252C3");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7252C8*), 0, "S7252C3");
    check_base_class_offset(lv, (S7252C8*), 0, "S7252C3");
    /*is_ambiguous_... S7252C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), ABISELECT(20,12), "S7252C3");
    check_field_offset(lv, s7252c3f0, ABISELECT(20,12), "S7252C3.s7252c3f0");
    test_class_info(&lv, &cd_S7252C3);
    dp->~S7252C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C3(Test_S7252C3, "S7252C3", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7252C3C1Ev();
extern void _ZN7S7252C3D2Ev();
Name_Map name_map_S7252C3[] = {
  NSPAIR(_ZN7S7252C3C1Ev),
  NSPAIR(_ZN7S7252C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C5;
extern VTBL_ENTRY _ZTI7S7252C5[];
extern  VTBL_ENTRY _ZTV7S7252C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7252C8;
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7252C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(33,21), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7252C5,    ABISELECT(24,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7252C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7252C3[];
extern void _ZN7S7252C3D1Ev();
extern void _ZN7S7252C3D0Ev();
static  VTBL_ENTRY vtc_S7252C3[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
  (VTBL_ENTRY)&_ZN7S7252C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C3D0Ev,
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
};
extern VTBL_ENTRY _ZTV7S7252C3[];
static  VTBL_ENTRY _tg__ZTV7S7252C8__7S7252C3[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C8__7S7252C3[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C3[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C5[0]),
};
static  VTT_ENTRY vtt_S7252C3[] = {
  {&(_ZTV7S7252C3[5]),  5,10},
  {&(_tg__ZTV7S7252C8__7S7252C3[5]),  5,5},
  {&(_tg__ZTV7S7252C5__7S7252C8__7S7252C3[3]),  3,3},
  {&(_ZTV7S7252C3[10]),  10,10},
  {&(_tg__ZTV7S7252C5__7S7252C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7252C3[];
extern  VTBL_ENTRY _ZTV7S7252C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C3[];
Class_Descriptor cd_S7252C3 = {  "S7252C3", // class name
  bases_S7252C3, 8,
  &(vtc_S7252C3[0]), // expected_vtbl_contents
  &(vtt_S7252C3[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7252C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7252C3),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7252C3),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7252C11  : virtual S7252C3 {
  int s7252c11f0;
  virtual  ~S7252C11(); // _ZN8S7252C11D2Ev
  S7252C11(); // tgen
};
//SIG(-1 S7252C11) C1{ VBC2{ BC3{ m Fi} VBC4{ BC5{ m} VBC6{ m} FC5} BC7{ BC6 VBC5 VBC4 Fp} BC6 vd Fc} vd Fi}


 S7252C11 ::~S7252C11(){ note_dtor("S7252C11", this);}
S7252C11 ::S7252C11(){ note_ctor("S7252C11", this);} // tgen

static void Test_S7252C11()
{
  extern Class_Descriptor cd_S7252C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7252C11, buf);
    S7252C11 *dp, &lv = *(dp=new (buf) S7252C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7252C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C11)");
    check_base_class_offset(lv, (S3423C8_nt*)(S7252C3*), ABISELECT(32,16), "S7252C11");
    check_base_class_offset(lv, (S4228C37*)(S7252C5*), ABISELECT(40,24), "S7252C11");
    check_base_class_offset(lv, (S4228C27*)(S7252C5*), 0, "S7252C11");
    check_base_class_offset(lv, (S7252C5*)(S7252C3*), ABISELECT(40,24), "S7252C11");
    check_base_class_offset(lv, (S7252C5*)(S7252C8*)(S7252C3*), ABISELECT(40,24), "S7252C11");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C8*)(S7252C3*), ABISELECT(16,8), "S7252C11");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7252C8*)(S7252C3*), 0, "S7252C11");
    check_base_class_offset(lv, (S7252C8*)(S7252C3*), ABISELECT(16,8), "S7252C11");
    /*is_ambiguous_... S7252C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C3*), ABISELECT(36,20), "S7252C11");
    check_base_class_offset(lv, (S7252C3*), ABISELECT(16,8), "S7252C11");
    check_field_offset(lv, s7252c11f0, ABISELECT(8,4), "S7252C11.s7252c11f0");
    test_class_info(&lv, &cd_S7252C11);
    dp->~S7252C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C11(Test_S7252C11, "S7252C11", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S7252C11C1Ev();
extern void _ZN8S7252C11D2Ev();
Name_Map name_map_S7252C11[] = {
  NSPAIR(_ZN8S7252C11C1Ev),
  NSPAIR(_ZN8S7252C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C5;
extern VTBL_ENTRY _ZTI7S7252C5[];
extern  VTBL_ENTRY _ZTV7S7252C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7252C8;
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C3;
extern VTBL_ENTRY _ZTI7S7252C3[];
extern  VTBL_ENTRY _ZTV7S7252C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C3[];
static Base_Class bases_S7252C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7252C5,    ABISELECT(40,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7252C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(36,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7252C3,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7252C11[];
extern void _ZN8S7252C11D1Ev();
extern void _ZN8S7252C11D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S7252C11D1Ev,_ZThn8_N8S7252C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev)();
extern void ABISELECT(_ZThn16_N8S7252C11D0Ev,_ZThn8_N8S7252C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7252C11[] = {
  0,
  0,
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
  (VTBL_ENTRY)&_ZN8S7252C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C11D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
};
extern VTBL_ENTRY _ZTV8S7252C11[];
extern void _ZN7S7252C3D1Ev();
extern void _ZN7S7252C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7252C3__8S7252C11[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
  (VTBL_ENTRY)&_ZN7S7252C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7252C87S7252C3__8S7252C11[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C87S7252C3__8S7252C11[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C3__8S7252C11[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__8S7252C11[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C5[0]),
};
static  VTT_ENTRY vtt_S7252C11[] = {
  {&(_ZTV8S7252C11[6]),  6,19},
  {&(_ZTV8S7252C11[14]),  14,19},
  {&(_ZTV8S7252C11[19]),  19,19},
  {&(_tg__ZTV7S7252C3__8S7252C11[5]),  5,7},
  {&(_tg__ZTV7S7252C87S7252C3__8S7252C11[5]),  5,5},
  {&(_tg__ZTV7S7252C5__7S7252C87S7252C3__8S7252C11[3]),  3,3},
  {&(_tg__ZTV7S7252C5__7S7252C3__8S7252C11[3]),  3,3},
  {&(_tg__ZTV7S7252C5__8S7252C11[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7252C11[];
extern  VTBL_ENTRY _ZTV8S7252C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C11[];
static VTBL_ENTRY alt_thunk_names313[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7252C11D0Ev,_ZThn8_N8S7252C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7252C11D1Ev,_ZThn8_N8S7252C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7252C11 = {  "S7252C11", // class name
  bases_S7252C11, 9,
  &(vtc_S7252C11[0]), // expected_vtbl_contents
  &(vtt_S7252C11[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S7252C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7252C11),19, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7252C11),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names313,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7252C12  : virtual S4228C37 , S4228C27 {
  ~S7252C12(); // tgen
  S7252C12(); // tgen
};
//SIG(-1 S7252C12) C1{ VBC2{ m} BC3{ m}}


S7252C12 ::~S7252C12(){ note_dtor("S7252C12", this);} // tgen
S7252C12 ::S7252C12(){ note_ctor("S7252C12", this);} // tgen

static void Test_S7252C12()
{
  extern Class_Descriptor cd_S7252C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7252C12, buf);
    S7252C12 *dp, &lv = *(dp=new (buf) S7252C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7252C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C12)");
    check_base_class_offset(lv, (S4228C37*), 0, "S7252C12");
    check_base_class_offset(lv, (S4228C27*), 0, "S7252C12");
    test_class_info(&lv, &cd_S7252C12);
    dp->~S7252C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C12(Test_S7252C12, "S7252C12", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7252C12C1Ev();
extern void _ZN8S7252C12D1Ev();
Name_Map name_map_S7252C12[] = {
  NSPAIR(_ZN8S7252C12C1Ev),
  NSPAIR(_ZN8S7252C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7252C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7252C12[];
static  VTBL_ENTRY vtc_S7252C12[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C12[0]),
};
extern VTBL_ENTRY _ZTV8S7252C12[];
static  VTT_ENTRY vtt_S7252C12[] = {
  {&(_ZTV8S7252C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7252C12[];
extern  VTBL_ENTRY _ZTV8S7252C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C12[];
Class_Descriptor cd_S7252C12 = {  "S7252C12", // class name
  bases_S7252C12, 2,
  &(vtc_S7252C12[0]), // expected_vtbl_contents
  &(vtt_S7252C12[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7252C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7252C12),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7252C12),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7252C13  : S7252C8 {
  __tsi64 s7252c13f0[10];
  virtual  ~S7252C13(); // _ZN8S7252C13D2Ev
  S7252C13(); // tgen
};
//SIG(-1 S7252C13) C1{ BC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} vd FL[10]}


 S7252C13 ::~S7252C13(){ note_dtor("S7252C13", this);}
S7252C13 ::S7252C13(){ note_ctor("S7252C13", this);} // tgen

static void Test_S7252C13()
{
  extern Class_Descriptor cd_S7252C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,25)];
    init_test(&cd_S7252C13, buf);
    S7252C13 *dp, &lv = *(dp=new (buf) S7252C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,96), "sizeof(S7252C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C13)");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C8*), 0, "S7252C13");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7252C8*), 0, "S7252C13");
    check_base_class_offset(lv, (S4228C37*)(S7252C5*), ABISELECT(96,88), "S7252C13");
    check_base_class_offset(lv, (S4228C27*)(S7252C5*), ABISELECT(105,93), "S7252C13");
    check_base_class_offset(lv, (S7252C5*)(S7252C8*), ABISELECT(96,88), "S7252C13");
    check_base_class_offset(lv, (S7252C8*), 0, "S7252C13");
    check_field_offset(lv, s7252c13f0, ABISELECT(16,8), "S7252C13.s7252c13f0");
    test_class_info(&lv, &cd_S7252C13);
    dp->~S7252C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C13(Test_S7252C13, "S7252C13", ABISELECT(112,96));

#else // __cplusplus

extern void _ZN8S7252C13C1Ev();
extern void _ZN8S7252C13D2Ev();
Name_Map name_map_S7252C13[] = {
  NSPAIR(_ZN8S7252C13C1Ev),
  NSPAIR(_ZN8S7252C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C5;
extern VTBL_ENTRY _ZTI7S7252C5[];
extern  VTBL_ENTRY _ZTV7S7252C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C5[];
extern Class_Descriptor cd_S7252C8;
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
static Base_Class bases_S7252C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(96,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(105,93), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7252C5,    ABISELECT(96,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7252C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7252C13[];
extern void _ZN8S7252C13D1Ev();
extern void _ZN8S7252C13D0Ev();
static  VTBL_ENTRY vtc_S7252C13[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C13[0]),
  (VTBL_ENTRY)&_ZN8S7252C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C13D0Ev,
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI8S7252C13[0]),
};
extern VTBL_ENTRY _ZTV8S7252C13[];
static  VTBL_ENTRY _tg__ZTV7S7252C8__8S7252C13[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C8__8S7252C13[] = {
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__8S7252C13[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C5[0]),
};
static  VTT_ENTRY vtt_S7252C13[] = {
  {&(_ZTV8S7252C13[5]),  5,10},
  {&(_tg__ZTV7S7252C8__8S7252C13[5]),  5,5},
  {&(_tg__ZTV7S7252C5__7S7252C8__8S7252C13[3]),  3,3},
  {&(_ZTV8S7252C13[10]),  10,10},
  {&(_tg__ZTV7S7252C5__8S7252C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7252C13[];
extern  VTBL_ENTRY _ZTV8S7252C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C13[];
Class_Descriptor cd_S7252C13 = {  "S7252C13", // class name
  bases_S7252C13, 6,
  &(vtc_S7252C13[0]), // expected_vtbl_contents
  &(vtt_S7252C13[0]), // expected_vtt_contents
  ABISELECT(112,96), // object size
  NSPAIRA(_ZTI8S7252C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7252C13),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7252C13),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7252C9  : virtual S4228C23 , virtual S7252C11 , virtual S7252C12 , virtual S7252C13 {
  virtual  ~S7252C9(); // _ZN7S7252C9D2Ev
  S7252C9(); // tgen
};
//SIG(-1 S7252C9) C1{ VBC2{ m} VBC3{ VBC4{ BC5{ m Fi} VBC6{ BC7{ m} VBC8{ m} FC7} BC9{ BC8 VBC7 VBC6 Fp} BC8 vd Fc} vd Fi} VBC10{ VBC7 BC8} VBC11{ BC9 vd FL[10]} vd}


 S7252C9 ::~S7252C9(){ note_dtor("S7252C9", this);}
S7252C9 ::S7252C9(){ note_ctor("S7252C9", this);} // tgen

static void Test_S7252C9()
{
  extern Class_Descriptor cd_S7252C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,32)];
    init_test(&cd_S7252C9, buf);
    S7252C9 *dp, &lv = *(dp=new (buf) S7252C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S7252C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C9)");
    check_base_class_offset(lv, (S4228C23*), 0, "S7252C9");
    check_base_class_offset(lv, (S3423C8_nt*)(S7252C3*), ABISELECT(40,20), "S7252C9");
    check_base_class_offset(lv, (S4228C37*)(S7252C5*), ABISELECT(48,28), "S7252C9");
    check_base_class_offset(lv, (S4228C27*)(S7252C5*), ABISELECT(57,33), "S7252C9");
    check_base_class_offset(lv, (S7252C5*)(S7252C3*), ABISELECT(48,28), "S7252C9");
    check_base_class_offset(lv, (S7252C5*)(S7252C8*)(S7252C3*), ABISELECT(48,28), "S7252C9");
    check_base_class_offset(lv, (S7252C5*)(S7252C8*)(S7252C13*), ABISELECT(48,28), "S7252C9");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C8*)(S7252C3*), ABISELECT(24,12), "S7252C9");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7252C8*)(S7252C3*), 0, "S7252C9");
    check_base_class_offset(lv, (S4228C37*)(S7252C12*), 0, "S7252C9");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7252C8*)(S7252C13*), 0, "S7252C9");
    check_base_class_offset(lv, (S7252C8*)(S7252C3*), ABISELECT(24,12), "S7252C9");
    /*is_ambiguous_... S7252C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C3*), ABISELECT(44,24), "S7252C9");
    check_base_class_offset(lv, (S7252C3*)(S7252C11*), ABISELECT(24,12), "S7252C9");
    check_base_class_offset(lv, (S7252C11*), ABISELECT(8,4), "S7252C9");
    check_base_class_offset(lv, (S4228C27*)(S7252C12*), 0, "S7252C9");
    check_base_class_offset(lv, (S7252C12*), 0, "S7252C9");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C8*)(S7252C13*), ABISELECT(64,36), "S7252C9");
    check_base_class_offset(lv, (S7252C8*)(S7252C13*), ABISELECT(64,36), "S7252C9");
    check_base_class_offset(lv, (S7252C13*), ABISELECT(64,36), "S7252C9");
    test_class_info(&lv, &cd_S7252C9);
    dp->~S7252C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C9(Test_S7252C9, "S7252C9", ABISELECT(160,124));

#else // __cplusplus

extern void _ZN7S7252C9C1Ev();
extern void _ZN7S7252C9D2Ev();
Name_Map name_map_S7252C9[] = {
  NSPAIR(_ZN7S7252C9C1Ev),
  NSPAIR(_ZN7S7252C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C5;
extern VTBL_ENTRY _ZTI7S7252C5[];
extern  VTBL_ENTRY _ZTV7S7252C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7252C8;
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C3;
extern VTBL_ENTRY _ZTI7S7252C3[];
extern  VTBL_ENTRY _ZTV7S7252C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C3[];
extern Class_Descriptor cd_S7252C11;
extern VTBL_ENTRY _ZTI8S7252C11[];
extern  VTBL_ENTRY _ZTV8S7252C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C11[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C12;
extern VTBL_ENTRY _ZTI8S7252C12[];
extern  VTBL_ENTRY _ZTV8S7252C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C12[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C8;
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
extern Class_Descriptor cd_S7252C13;
extern VTBL_ENTRY _ZTI8S7252C13[];
extern  VTBL_ENTRY _ZTV8S7252C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C13[];
static Base_Class bases_S7252C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3423C8_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7252C5,    ABISELECT(48,28), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7252C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(44,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7252C3,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7252C11,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7252C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7252C8,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7252C13,    ABISELECT(64,36), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7252C9[];
extern void _ZN7S7252C9D1Ev();
extern void _ZN7S7252C9D0Ev();
extern void ABISELECT(_ZTv0_n56_N7S7252C9D1Ev,_ZTv0_n28_N7S7252C9D1Ev)();
extern void ABISELECT(_ZThn8_N7S7252C9D1Ev,_ZThn4_N7S7252C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7252C9D0Ev,_ZTv0_n28_N7S7252C9D0Ev)();
extern void ABISELECT(_ZThn8_N7S7252C9D0Ev,_ZThn4_N7S7252C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev)();
extern void ABISELECT(_ZThn24_N7S7252C9D1Ev,_ZThn12_N7S7252C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev)();
extern void ABISELECT(_ZThn24_N7S7252C9D0Ev,_ZThn12_N7S7252C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev)();
extern void ABISELECT(_ZThn64_N7S7252C9D1Ev,_ZThn36_N7S7252C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev)();
extern void ABISELECT(_ZThn64_N7S7252C9D0Ev,_ZThn36_N7S7252C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7252C9[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(57,33),
  ABISELECT(48,28),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&_ZN7S7252C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C9D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C9D1Ev,_ZTv0_n28_N7S7252C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C9D0Ev,_ZTv0_n28_N7S7252C9D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  ABISELECT(-64,-36),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S7252C9[];
extern void _ZN8S7252C11D1Ev();
extern void _ZN8S7252C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7252C11__7S7252C9[] = {
  ABISELECT(-8,-4),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
  (VTBL_ENTRY)&_ZN8S7252C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C11D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S7252C11D1Ev,_ZThn8_N8S7252C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev)();
extern void ABISELECT(_ZThn16_N8S7252C11D0Ev,_ZThn8_N8S7252C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7252C3__8S7252C11__7S7252C9[] = {
  ABISELECT(-16,-8),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__8S7252C11__7S7252C9[] = {
  ABISELECT(9,5),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
};
extern void _ZN7S7252C3D1Ev();
extern void _ZN7S7252C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7252C3__7S7252C9[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
  (VTBL_ENTRY)&_ZN7S7252C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7252C87S7252C3__7S7252C9[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C87S7252C3__7S7252C9[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C3__7S7252C9[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C9[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7252C12__7S7252C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C12[0]),
};
extern void _ZN8S7252C13D1Ev();
extern void _ZN8S7252C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7252C13__7S7252C9[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C13[0]),
  (VTBL_ENTRY)&_ZN8S7252C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7252C88S7252C13__A1__7S7252C9[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C88S7252C13__A1__7S7252C9[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__8S7252C13__7S7252C9[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7252C13[0]),
};
static  VTT_ENTRY vtt_S7252C9[] = {
  {&(_ZTV7S7252C9[10]),  10,40},
  {&(_ZTV7S7252C9[19]),  19,40},
  {&(_ZTV7S7252C9[27]),  27,40},
  {&(_ZTV7S7252C9[32]),  32,40},
  {&(_ZTV7S7252C9[10]),  10,40},
  {&(_ZTV7S7252C9[38]),  38,40},
  {&(_tg__ZTV8S7252C11__7S7252C9[6]),  6,8},
  {&(_tg__ZTV7S7252C3__8S7252C11__7S7252C9[6]),  6,8},
  {&(_tg__ZTV7S7252C5__8S7252C11__7S7252C9[3]),  3,3},
  {&(_tg__ZTV7S7252C3__7S7252C9[5]),  5,7},
  {&(_tg__ZTV7S7252C87S7252C3__7S7252C9[5]),  5,5},
  {&(_tg__ZTV7S7252C5__7S7252C87S7252C3__7S7252C9[3]),  3,3},
  {&(_tg__ZTV7S7252C5__7S7252C3__7S7252C9[3]),  3,3},
  {&(_tg__ZTV7S7252C5__7S7252C9[3]),  3,3},
  {&(_tg__ZTV8S7252C12__7S7252C9[3]),  3,3},
  {&(_tg__ZTV8S7252C13__7S7252C9[5]),  5,7},
  {&(_tg__ZTV7S7252C88S7252C13__A1__7S7252C9[5]),  5,5},
  {&(_tg__ZTV7S7252C5__7S7252C88S7252C13__A1__7S7252C9[3]),  3,3},
  {&(_tg__ZTV7S7252C5__8S7252C13__7S7252C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7252C9[];
extern  VTBL_ENTRY _ZTV7S7252C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C9[];
static VTBL_ENTRY alt_thunk_names314[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7252C11D0Ev,_ZThn8_N8S7252C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7252C11D1Ev,_ZThn8_N8S7252C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7252C9D0Ev,_ZThn36_N7S7252C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7252C9D0Ev,_ZThn12_N7S7252C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7252C9D1Ev,_ZThn36_N7S7252C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7252C9D1Ev,_ZThn12_N7S7252C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C9D0Ev,_ZTv0_n28_N7S7252C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7252C9D0Ev,_ZThn4_N7S7252C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C9D1Ev,_ZTv0_n28_N7S7252C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7252C9D1Ev,_ZThn4_N7S7252C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7252C9 = {  "S7252C9", // class name
  bases_S7252C9, 16,
  &(vtc_S7252C9[0]), // expected_vtbl_contents
  &(vtt_S7252C9[0]), // expected_vtt_contents
  ABISELECT(160,124), // object size
  NSPAIRA(_ZTI7S7252C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7252C9),40, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7252C9),19, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names314,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7252C14  : virtual S7252C12 {
  virtual  ~S7252C14(); // _ZN8S7252C14D2Ev
  S7252C14(); // tgen
};
//SIG(-1 S7252C14) C1{ VBC2{ VBC3{ m} BC4{ m}} vd}


 S7252C14 ::~S7252C14(){ note_dtor("S7252C14", this);}
S7252C14 ::S7252C14(){ note_ctor("S7252C14", this);} // tgen

static void Test_S7252C14()
{
  extern Class_Descriptor cd_S7252C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7252C14, buf);
    S7252C14 *dp, &lv = *(dp=new (buf) S7252C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7252C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C14)");
    check_base_class_offset(lv, (S4228C37*)(S7252C12*), 0, "S7252C14");
    check_base_class_offset(lv, (S4228C27*)(S7252C12*), 0, "S7252C14");
    check_base_class_offset(lv, (S7252C12*), 0, "S7252C14");
    test_class_info(&lv, &cd_S7252C14);
    dp->~S7252C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C14(Test_S7252C14, "S7252C14", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7252C14C1Ev();
extern void _ZN8S7252C14D2Ev();
Name_Map name_map_S7252C14[] = {
  NSPAIR(_ZN8S7252C14C1Ev),
  NSPAIR(_ZN8S7252C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C12;
extern VTBL_ENTRY _ZTI8S7252C12[];
extern  VTBL_ENTRY _ZTV8S7252C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C12[];
static Base_Class bases_S7252C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7252C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7252C14[];
extern void _ZN8S7252C14D1Ev();
extern void _ZN8S7252C14D0Ev();
static  VTBL_ENTRY vtc_S7252C14[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C14[0]),
  (VTBL_ENTRY)&_ZN8S7252C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C14D0Ev,
};
extern VTBL_ENTRY _ZTV8S7252C14[];
static  VTBL_ENTRY _tg__ZTV8S7252C12__8S7252C14[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C12[0]),
};
static  VTT_ENTRY vtt_S7252C14[] = {
  {&(_ZTV8S7252C14[4]),  4,6},
  {&(_ZTV8S7252C14[4]),  4,6},
  {&(_tg__ZTV8S7252C12__8S7252C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7252C14[];
extern  VTBL_ENTRY _ZTV8S7252C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C14[];
Class_Descriptor cd_S7252C14 = {  "S7252C14", // class name
  bases_S7252C14, 3,
  &(vtc_S7252C14[0]), // expected_vtbl_contents
  &(vtt_S7252C14[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7252C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7252C14),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7252C14),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7252C2  : virtual S7252C3 , virtual S7252C9 , S7252C14 {
  int s7252c2f0[2];
  ~S7252C2(); // tgen
  S7252C2(); // tgen
};
//SIG(-1 S7252C2) C1{ VBC2{ BC3{ m Fi} VBC4{ BC5{ m} VBC6{ m} FC5} BC7{ BC6 VBC5 VBC4 Fp} BC6 vd Fc} VBC8{ VBC9{ m} VBC10{ VBC2 vd Fi} VBC11{ VBC5 BC6} VBC12{ BC7 vd FL[10]} vd} BC13{ VBC11 vd} Fi[2]}


S7252C2 ::~S7252C2(){ note_dtor("S7252C2", this);} // tgen
S7252C2 ::S7252C2(){ note_ctor("S7252C2", this);} // tgen

static void Test_S7252C2()
{
  extern Class_Descriptor cd_S7252C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,35)];
    init_test(&cd_S7252C2, buf);
    S7252C2 *dp, &lv = *(dp=new (buf) S7252C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,136), "sizeof(S7252C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C2)");
    check_base_class_offset(lv, (S3423C8_nt*)(S7252C3*), ABISELECT(32,20), "S7252C2");
    check_base_class_offset(lv, (S4228C37*)(S7252C5*), ABISELECT(40,28), "S7252C2");
    check_base_class_offset(lv, (S4228C27*)(S7252C5*), 0, "S7252C2");
    check_base_class_offset(lv, (S7252C5*)(S7252C3*), ABISELECT(40,28), "S7252C2");
    check_base_class_offset(lv, (S7252C5*)(S7252C8*)(S7252C3*), ABISELECT(40,28), "S7252C2");
    check_base_class_offset(lv, (S7252C5*)(S7252C8*)(S7252C13*), ABISELECT(40,28), "S7252C2");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C8*)(S7252C3*), ABISELECT(16,12), "S7252C2");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7252C8*)(S7252C3*), 0, "S7252C2");
    check_base_class_offset(lv, (S4228C37*)(S7252C12*), 0, "S7252C2");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7252C8*)(S7252C13*), 0, "S7252C2");
    check_base_class_offset(lv, (S7252C8*)(S7252C3*), ABISELECT(16,12), "S7252C2");
    /*is_ambiguous_... S7252C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C3*), ABISELECT(36,24), "S7252C2");
    check_base_class_offset(lv, (S7252C3*), ABISELECT(16,12), "S7252C2");
    check_base_class_offset(lv, (S7252C3*)(S7252C11*), ABISELECT(16,12), "S7252C2");
    check_base_class_offset(lv, (S4228C23*)(S7252C9*), 0, "S7252C2");
    check_base_class_offset(lv, (S7252C11*)(S7252C9*), ABISELECT(64,40), "S7252C2");
    check_base_class_offset(lv, (S4228C27*)(S7252C12*), ABISELECT(56,36), "S7252C2");
    check_base_class_offset(lv, (S7252C12*)(S7252C9*), ABISELECT(56,36), "S7252C2");
    check_base_class_offset(lv, (S7252C12*)(S7252C14*), ABISELECT(56,36), "S7252C2");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C8*)(S7252C13*), ABISELECT(80,48), "S7252C2");
    check_base_class_offset(lv, (S7252C8*)(S7252C13*), ABISELECT(80,48), "S7252C2");
    check_base_class_offset(lv, (S7252C13*)(S7252C9*), ABISELECT(80,48), "S7252C2");
    check_base_class_offset(lv, (S7252C9*), ABISELECT(56,36), "S7252C2");
    check_base_class_offset(lv, (S7252C14*), 0, "S7252C2");
    check_field_offset(lv, s7252c2f0, ABISELECT(8,4), "S7252C2.s7252c2f0");
    test_class_info(&lv, &cd_S7252C2);
    dp->~S7252C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C2(Test_S7252C2, "S7252C2", ABISELECT(176,136));

#else // __cplusplus

extern void _ZN7S7252C2C1Ev();
extern void _ZN7S7252C2D1Ev();
Name_Map name_map_S7252C2[] = {
  NSPAIR(_ZN7S7252C2C1Ev),
  NSPAIR(_ZN7S7252C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C5;
extern VTBL_ENTRY _ZTI7S7252C5[];
extern  VTBL_ENTRY _ZTV7S7252C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7252C8;
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C3;
extern VTBL_ENTRY _ZTI7S7252C3[];
extern  VTBL_ENTRY _ZTV7S7252C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C3[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S7252C11;
extern VTBL_ENTRY _ZTI8S7252C11[];
extern  VTBL_ENTRY _ZTV8S7252C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C11[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C12;
extern VTBL_ENTRY _ZTI8S7252C12[];
extern  VTBL_ENTRY _ZTV8S7252C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C12[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C8;
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
extern Class_Descriptor cd_S7252C13;
extern VTBL_ENTRY _ZTI8S7252C13[];
extern  VTBL_ENTRY _ZTV8S7252C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C13[];
extern Class_Descriptor cd_S7252C9;
extern VTBL_ENTRY _ZTI7S7252C9[];
extern  VTBL_ENTRY _ZTV7S7252C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C9[];
extern Class_Descriptor cd_S7252C14;
extern VTBL_ENTRY _ZTI8S7252C14[];
extern  VTBL_ENTRY _ZTV8S7252C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C14[];
static Base_Class bases_S7252C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7252C5,    ABISELECT(40,28), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7252C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(36,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7252C3,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7252C11,    ABISELECT(64,40), //bcp->offset
    37, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7252C12,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7252C8,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7252C13,    ABISELECT(80,48), //bcp->offset
    46, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7252C9,    ABISELECT(56,36), //bcp->offset
    24, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7252C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7252C2[];
extern void _ZN7S7252C2D1Ev();
extern void _ZN7S7252C2D0Ev();
extern void ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7252C2D1Ev,_ZThn12_N7S7252C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7252C2D0Ev,_ZThn12_N7S7252C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7252C2D1Ev,_ZTv0_n44_N7S7252C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S7252C2D1Ev,_ZThn36_N7S7252C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7252C2D0Ev,_ZTv0_n44_N7S7252C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S7252C2D0Ev,_ZThn36_N7S7252C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7252C2D1Ev,_ZTv0_n28_N7S7252C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S7252C2D1Ev,_ZThn40_N7S7252C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7252C2D0Ev,_ZTv0_n28_N7S7252C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S7252C2D0Ev,_ZThn40_N7S7252C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S7252C2D1Ev,_ZThn48_N7S7252C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S7252C2D0Ev,_ZThn48_N7S7252C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7252C2[] = {
  ABISELECT(80,48),
  ABISELECT(64,40),
  0,
  ABISELECT(56,36),
  0,
  ABISELECT(40,28),
  ABISELECT(16,12),
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&_ZN7S7252C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C2D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev),
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  ABISELECT(-56,-36),
  ABISELECT(24,12),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-16,-8),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7252C2D1Ev,_ZTv0_n44_N7S7252C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7252C2D0Ev,_ZTv0_n44_N7S7252C2D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C2D1Ev,_ZTv0_n28_N7S7252C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C2D0Ev,_ZTv0_n28_N7S7252C2D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7252C2[];
extern void _ZN8S7252C14D1Ev();
extern void _ZN8S7252C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7252C14__7S7252C2[] = {
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C14[0]),
  (VTBL_ENTRY)&_ZN8S7252C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7252C12__8S7252C14__7S7252C2[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7252C14[0]),
};
extern void _ZN7S7252C3D1Ev();
extern void _ZN7S7252C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7252C3__7S7252C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
  (VTBL_ENTRY)&_ZN7S7252C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7252C87S7252C3__7S7252C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C87S7252C3__7S7252C2[] = {
  ABISELECT(-40,-28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C3__7S7252C2[] = {
  ABISELECT(-40,-28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C2[] = {
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C5[0]),
};
extern void _ZN7S7252C9D1Ev();
extern void _ZN7S7252C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7252C9__7S7252C2[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-16,-8),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&_ZN7S7252C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C9D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7252C9D1Ev,_ZTv0_n28_N7S7252C9D1Ev)();
extern void ABISELECT(_ZThn8_N7S7252C9D1Ev,_ZThn4_N7S7252C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7252C9D0Ev,_ZTv0_n28_N7S7252C9D0Ev)();
extern void ABISELECT(_ZThn8_N7S7252C9D0Ev,_ZThn4_N7S7252C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7252C11__7S7252C9__7S7252C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C9D1Ev,_ZTv0_n28_N7S7252C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C9D0Ev,_ZTv0_n28_N7S7252C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7252C3__7S7252C9__7S7252C2[] = {
  ABISELECT(40,24),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C9__7S7252C2[] = {
  ABISELECT(-40,-28),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
};
extern void ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev)();
extern void ABISELECT(_ZThn24_N7S7252C9D1Ev,_ZThn12_N7S7252C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev)();
extern void ABISELECT(_ZThn24_N7S7252C9D0Ev,_ZThn12_N7S7252C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7252C13__7S7252C9__7S7252C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev),
};
extern void _ZN8S7252C11D1Ev();
extern void _ZN8S7252C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7252C11__7S7252C2[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
  (VTBL_ENTRY)&_ZN8S7252C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C11D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7252C3__8S7252C11__7S7252C2[] = {
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__8S7252C11__7S7252C2[] = {
  ABISELECT(-40,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7252C12__7S7252C2[] = {
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C12[0]),
};
extern void _ZN8S7252C13D1Ev();
extern void _ZN8S7252C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7252C13__7S7252C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C13[0]),
  (VTBL_ENTRY)&_ZN8S7252C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7252C88S7252C13__A1__7S7252C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C88S7252C13__A1__7S7252C2[] = {
  ABISELECT(-40,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__8S7252C13__7S7252C2[] = {
  ABISELECT(-40,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7252C13[0]),
};
static  VTT_ENTRY vtt_S7252C2[] = {
  {&(_ZTV7S7252C2[11]),  11,54},
  {&(_tg__ZTV8S7252C14__7S7252C2[4]),  4,6},
  {&(_tg__ZTV8S7252C12__8S7252C14__7S7252C2[3]),  3,3},
  {&(_ZTV7S7252C2[19]),  19,54},
  {&(_ZTV7S7252C2[24]),  24,54},
  {&(_ZTV7S7252C2[35]),  35,54},
  {&(_ZTV7S7252C2[44]),  44,54},
  {&(_ZTV7S7252C2[35]),  35,54},
  {&(_ZTV7S7252C2[52]),  52,54},
  {&(_tg__ZTV7S7252C3__7S7252C2[5]),  5,7},
  {&(_tg__ZTV7S7252C87S7252C3__7S7252C2[5]),  5,5},
  {&(_tg__ZTV7S7252C5__7S7252C87S7252C3__7S7252C2[3]),  3,3},
  {&(_tg__ZTV7S7252C5__7S7252C3__7S7252C2[3]),  3,3},
  {&(_tg__ZTV7S7252C5__7S7252C2[3]),  3,3},
  {&(_tg__ZTV7S7252C9__7S7252C2[10]),  10,12},
  {&(_tg__ZTV8S7252C11__7S7252C9__7S7252C2[7]),  7,9},
  {&(_tg__ZTV7S7252C3__7S7252C9__7S7252C2[6]),  6,8},
  {&(_tg__ZTV7S7252C5__7S7252C9__7S7252C2[3]),  3,3},
  {&(_tg__ZTV7S7252C9__7S7252C2[10]),  10,12},
  {&(_tg__ZTV8S7252C13__7S7252C9__7S7252C2[6]),  6,8},
  {&(_tg__ZTV8S7252C11__7S7252C2[6]),  6,8},
  {&(_tg__ZTV7S7252C3__8S7252C11__7S7252C2[6]),  6,8},
  {&(_tg__ZTV7S7252C5__8S7252C11__7S7252C2[3]),  3,3},
  {&(_tg__ZTV8S7252C12__7S7252C2[3]),  3,3},
  {&(_tg__ZTV8S7252C13__7S7252C2[5]),  5,7},
  {&(_tg__ZTV7S7252C88S7252C13__A1__7S7252C2[5]),  5,5},
  {&(_tg__ZTV7S7252C5__7S7252C88S7252C13__A1__7S7252C2[3]),  3,3},
  {&(_tg__ZTV7S7252C5__8S7252C13__7S7252C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7252C2[];
extern  VTBL_ENTRY _ZTV7S7252C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C2[];
static VTBL_ENTRY alt_thunk_names315[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7252C9D0Ev,_ZThn12_N7S7252C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7252C9D1Ev,_ZThn12_N7S7252C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C9D0Ev,_ZTv0_n28_N7S7252C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7252C9D0Ev,_ZThn4_N7S7252C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C9D1Ev,_ZTv0_n28_N7S7252C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7252C9D1Ev,_ZThn4_N7S7252C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C2D0Ev,_ZTv0_n28_N7S7252C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7252C2D0Ev,_ZThn40_N7S7252C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C2D1Ev,_ZTv0_n28_N7S7252C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7252C2D1Ev,_ZThn40_N7S7252C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7252C2D0Ev,_ZTv0_n44_N7S7252C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7252C2D0Ev,_ZThn36_N7S7252C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7252C2D1Ev,_ZTv0_n44_N7S7252C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7252C2D1Ev,_ZThn36_N7S7252C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7252C2D0Ev,_ZThn48_N7S7252C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7252C2D0Ev,_ZThn12_N7S7252C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7252C2D1Ev,_ZThn48_N7S7252C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7252C2D1Ev,_ZThn12_N7S7252C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7252C2 = {  "S7252C2", // class name
  bases_S7252C2, 18,
  &(vtc_S7252C2[0]), // expected_vtbl_contents
  &(vtt_S7252C2[0]), // expected_vtt_contents
  ABISELECT(176,136), // object size
  NSPAIRA(_ZTI7S7252C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7252C2),54, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7252C2),28, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names315,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7252C1  : S7252C2 {
  virtual  ~S7252C1(); // _ZN7S7252C1D2Ev
  S7252C1(); // tgen
};
//SIG(1 S7252C1) C1{ BC2{ VBC3{ BC4{ m Fi} VBC5{ BC6{ m} VBC7{ m} FC6} BC8{ BC7 VBC6 VBC5 Fp} BC7 vd Fc} VBC9{ VBC10{ m} VBC11{ VBC3 vd Fi} VBC12{ VBC6 BC7} VBC13{ BC8 vd FL[10]} vd} BC14{ VBC12 vd} Fi[2]} vd}


 S7252C1 ::~S7252C1(){ note_dtor("S7252C1", this);}
S7252C1 ::S7252C1(){ note_ctor("S7252C1", this);} // tgen

static void Test_S7252C1()
{
  extern Class_Descriptor cd_S7252C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,35)];
    init_test(&cd_S7252C1, buf);
    S7252C1 *dp, &lv = *(dp=new (buf) S7252C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,136), "sizeof(S7252C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C1)");
    check_base_class_offset(lv, (S3423C8_nt*)(S7252C3*), ABISELECT(32,20), "S7252C1");
    check_base_class_offset(lv, (S4228C37*)(S7252C5*), ABISELECT(40,28), "S7252C1");
    check_base_class_offset(lv, (S4228C27*)(S7252C5*), 0, "S7252C1");
    check_base_class_offset(lv, (S7252C5*)(S7252C3*), ABISELECT(40,28), "S7252C1");
    check_base_class_offset(lv, (S7252C5*)(S7252C8*)(S7252C3*), ABISELECT(40,28), "S7252C1");
    check_base_class_offset(lv, (S7252C5*)(S7252C8*)(S7252C13*), ABISELECT(40,28), "S7252C1");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C8*)(S7252C3*), ABISELECT(16,12), "S7252C1");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7252C8*)(S7252C3*), 0, "S7252C1");
    check_base_class_offset(lv, (S4228C37*)(S7252C12*), 0, "S7252C1");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7252C8*)(S7252C13*), 0, "S7252C1");
    check_base_class_offset(lv, (S7252C8*)(S7252C3*), ABISELECT(16,12), "S7252C1");
    /*is_ambiguous_... S7252C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C3*), ABISELECT(36,24), "S7252C1");
    check_base_class_offset(lv, (S7252C3*)(S7252C2*), ABISELECT(16,12), "S7252C1");
    check_base_class_offset(lv, (S7252C3*)(S7252C11*), ABISELECT(16,12), "S7252C1");
    check_base_class_offset(lv, (S4228C23*)(S7252C9*), 0, "S7252C1");
    check_base_class_offset(lv, (S7252C11*)(S7252C9*), ABISELECT(64,40), "S7252C1");
    check_base_class_offset(lv, (S4228C27*)(S7252C12*), ABISELECT(56,36), "S7252C1");
    check_base_class_offset(lv, (S7252C12*)(S7252C9*), ABISELECT(56,36), "S7252C1");
    check_base_class_offset(lv, (S7252C12*)(S7252C14*)(S7252C2*), ABISELECT(56,36), "S7252C1");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C8*)(S7252C13*), ABISELECT(80,48), "S7252C1");
    check_base_class_offset(lv, (S7252C8*)(S7252C13*), ABISELECT(80,48), "S7252C1");
    check_base_class_offset(lv, (S7252C13*)(S7252C9*), ABISELECT(80,48), "S7252C1");
    check_base_class_offset(lv, (S7252C9*)(S7252C2*), ABISELECT(56,36), "S7252C1");
    check_base_class_offset(lv, (S7252C14*)(S7252C2*), 0, "S7252C1");
    check_base_class_offset(lv, (S7252C2*), 0, "S7252C1");
    test_class_info(&lv, &cd_S7252C1);
    dp->~S7252C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C1(Test_S7252C1, "S7252C1", ABISELECT(176,136));

#else // __cplusplus

extern void _ZN7S7252C1C1Ev();
extern void _ZN7S7252C1D2Ev();
Name_Map name_map_S7252C1[] = {
  NSPAIR(_ZN7S7252C1C1Ev),
  NSPAIR(_ZN7S7252C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C5;
extern VTBL_ENTRY _ZTI7S7252C5[];
extern  VTBL_ENTRY _ZTV7S7252C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7252C8;
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C3;
extern VTBL_ENTRY _ZTI7S7252C3[];
extern  VTBL_ENTRY _ZTV7S7252C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C3[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S7252C11;
extern VTBL_ENTRY _ZTI8S7252C11[];
extern  VTBL_ENTRY _ZTV8S7252C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C11[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C12;
extern VTBL_ENTRY _ZTI8S7252C12[];
extern  VTBL_ENTRY _ZTV8S7252C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C12[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C8;
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
extern Class_Descriptor cd_S7252C13;
extern VTBL_ENTRY _ZTI8S7252C13[];
extern  VTBL_ENTRY _ZTV8S7252C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C13[];
extern Class_Descriptor cd_S7252C9;
extern VTBL_ENTRY _ZTI7S7252C9[];
extern  VTBL_ENTRY _ZTV7S7252C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C9[];
extern Class_Descriptor cd_S7252C14;
extern VTBL_ENTRY _ZTI8S7252C14[];
extern  VTBL_ENTRY _ZTV8S7252C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C14[];
extern Class_Descriptor cd_S7252C2;
extern VTBL_ENTRY _ZTI7S7252C2[];
extern  VTBL_ENTRY _ZTV7S7252C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C2[];
static Base_Class bases_S7252C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7252C5,    ABISELECT(40,28), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7252C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(36,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7252C3,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7252C11,    ABISELECT(64,40), //bcp->offset
    37, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7252C12,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7252C8,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7252C13,    ABISELECT(80,48), //bcp->offset
    46, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7252C9,    ABISELECT(56,36), //bcp->offset
    24, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7252C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7252C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7252C1[];
extern void _ZN7S7252C1D1Ev();
extern void _ZN7S7252C1D0Ev();
extern void ABISELECT(_ZTv0_n48_N7S7252C1D1Ev,_ZTv0_n24_N7S7252C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7252C1D1Ev,_ZThn12_N7S7252C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C1D0Ev,_ZTv0_n24_N7S7252C1D0Ev)();
extern void ABISELECT(_ZThn16_N7S7252C1D0Ev,_ZThn12_N7S7252C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7252C1D1Ev,_ZTv0_n44_N7S7252C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S7252C1D1Ev,_ZThn36_N7S7252C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7252C1D0Ev,_ZTv0_n44_N7S7252C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S7252C1D0Ev,_ZThn36_N7S7252C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7252C1D1Ev,_ZTv0_n28_N7S7252C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S7252C1D1Ev,_ZThn40_N7S7252C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7252C1D0Ev,_ZTv0_n28_N7S7252C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S7252C1D0Ev,_ZThn40_N7S7252C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C1D1Ev,_ZTv0_n24_N7S7252C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S7252C1D1Ev,_ZThn48_N7S7252C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C1D0Ev,_ZTv0_n24_N7S7252C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S7252C1D0Ev,_ZThn48_N7S7252C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7252C1[] = {
  ABISELECT(80,48),
  ABISELECT(64,40),
  0,
  ABISELECT(56,36),
  0,
  ABISELECT(40,28),
  ABISELECT(16,12),
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C1[0]),
  (VTBL_ENTRY)&_ZN7S7252C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C1D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7252C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C1D1Ev,_ZTv0_n24_N7S7252C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C1D0Ev,_ZTv0_n24_N7S7252C1D0Ev),
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S7252C1[0]),
  ABISELECT(-56,-36),
  ABISELECT(24,12),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-16,-8),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7252C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7252C1D1Ev,_ZTv0_n44_N7S7252C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7252C1D0Ev,_ZTv0_n44_N7S7252C1D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7252C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C1D1Ev,_ZTv0_n28_N7S7252C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C1D0Ev,_ZTv0_n28_N7S7252C1D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7252C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C1D1Ev,_ZTv0_n24_N7S7252C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C1D0Ev,_ZTv0_n24_N7S7252C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7252C1[];
extern void _ZN7S7252C2D1Ev();
extern void _ZN7S7252C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7252C2__7S7252C1[] = {
  ABISELECT(80,48),
  ABISELECT(64,40),
  0,
  ABISELECT(56,36),
  0,
  ABISELECT(40,28),
  ABISELECT(16,12),
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&_ZN7S7252C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C2D0Ev,
};
extern void _ZN8S7252C14D1Ev();
extern void _ZN8S7252C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7252C147S7252C2__7S7252C1[] = {
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C14[0]),
  (VTBL_ENTRY)&_ZN8S7252C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7252C12__8S7252C147S7252C2__7S7252C1[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7252C14[0]),
};
extern void ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7252C2D1Ev,_ZThn12_N7S7252C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7252C2D0Ev,_ZThn12_N7S7252C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7252C3__7S7252C2__7S7252C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C2__7S7252C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7252C2D1Ev,_ZTv0_n44_N7S7252C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S7252C2D1Ev,_ZThn36_N7S7252C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7252C2D0Ev,_ZTv0_n44_N7S7252C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S7252C2D0Ev,_ZThn36_N7S7252C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7252C9__7S7252C2__7S7252C1[] = {
  ABISELECT(-56,-36),
  ABISELECT(24,12),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-16,-8),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7252C2D1Ev,_ZTv0_n44_N7S7252C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7252C2D0Ev,_ZTv0_n44_N7S7252C2D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N7S7252C2D1Ev,_ZTv0_n28_N7S7252C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S7252C2D1Ev,_ZThn40_N7S7252C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7252C2D0Ev,_ZTv0_n28_N7S7252C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S7252C2D0Ev,_ZThn40_N7S7252C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7252C11__7S7252C2__7S7252C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C2D1Ev,_ZTv0_n28_N7S7252C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C2D0Ev,_ZTv0_n28_N7S7252C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S7252C2D1Ev,_ZThn48_N7S7252C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S7252C2D0Ev,_ZThn48_N7S7252C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7252C13__7S7252C2__7S7252C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev),
};
extern void _ZN7S7252C3D1Ev();
extern void _ZN7S7252C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7252C3__7S7252C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
  (VTBL_ENTRY)&_ZN7S7252C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7252C87S7252C3__7S7252C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C87S7252C3__7S7252C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C3__7S7252C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C1[] = {
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C5[0]),
};
extern void _ZN7S7252C9D1Ev();
extern void _ZN7S7252C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7252C9__7S7252C1[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-16,-8),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&_ZN7S7252C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C9D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7252C9D1Ev,_ZTv0_n28_N7S7252C9D1Ev)();
extern void ABISELECT(_ZThn8_N7S7252C9D1Ev,_ZThn4_N7S7252C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7252C9D0Ev,_ZTv0_n28_N7S7252C9D0Ev)();
extern void ABISELECT(_ZThn8_N7S7252C9D0Ev,_ZThn4_N7S7252C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7252C11__7S7252C9__7S7252C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C9D1Ev,_ZTv0_n28_N7S7252C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C9D0Ev,_ZTv0_n28_N7S7252C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7252C3__7S7252C9__7S7252C1[] = {
  ABISELECT(40,24),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C9__7S7252C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
};
extern void ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev)();
extern void ABISELECT(_ZThn24_N7S7252C9D1Ev,_ZThn12_N7S7252C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev)();
extern void ABISELECT(_ZThn24_N7S7252C9D0Ev,_ZThn12_N7S7252C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7252C13__7S7252C9__7S7252C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev),
};
extern void _ZN8S7252C11D1Ev();
extern void _ZN8S7252C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7252C11__7S7252C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
  (VTBL_ENTRY)&_ZN8S7252C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C11D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7252C3__8S7252C11__7S7252C1[] = {
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__8S7252C11__7S7252C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7252C12__7S7252C1[] = {
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C12[0]),
};
extern void _ZN8S7252C13D1Ev();
extern void _ZN8S7252C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7252C13__7S7252C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C13[0]),
  (VTBL_ENTRY)&_ZN8S7252C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7252C88S7252C13__A1__7S7252C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C88S7252C13__A1__7S7252C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__8S7252C13__7S7252C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7252C13[0]),
};
static  VTT_ENTRY vtt_S7252C1[] = {
  {&(_ZTV7S7252C1[11]),  11,54},
  {&(_tg__ZTV7S7252C2__7S7252C1[11]),  11,13},
  {&(_tg__ZTV8S7252C147S7252C2__7S7252C1[4]),  4,6},
  {&(_tg__ZTV8S7252C12__8S7252C147S7252C2__7S7252C1[3]),  3,3},
  {&(_tg__ZTV7S7252C3__7S7252C2__7S7252C1[6]),  6,8},
  {&(_tg__ZTV7S7252C5__7S7252C2__7S7252C1[3]),  3,3},
  {&(_tg__ZTV7S7252C9__7S7252C2__7S7252C1[11]),  11,13},
  {&(_tg__ZTV8S7252C11__7S7252C2__7S7252C1[7]),  7,9},
  {&(_tg__ZTV7S7252C9__7S7252C2__7S7252C1[11]),  11,13},
  {&(_tg__ZTV8S7252C13__7S7252C2__7S7252C1[6]),  6,8},
  {&(_ZTV7S7252C1[19]),  19,54},
  {&(_ZTV7S7252C1[24]),  24,54},
  {&(_ZTV7S7252C1[35]),  35,54},
  {&(_ZTV7S7252C1[44]),  44,54},
  {&(_ZTV7S7252C1[35]),  35,54},
  {&(_ZTV7S7252C1[52]),  52,54},
  {&(_tg__ZTV7S7252C3__7S7252C1[5]),  5,7},
  {&(_tg__ZTV7S7252C87S7252C3__7S7252C1[5]),  5,5},
  {&(_tg__ZTV7S7252C5__7S7252C87S7252C3__7S7252C1[3]),  3,3},
  {&(_tg__ZTV7S7252C5__7S7252C3__7S7252C1[3]),  3,3},
  {&(_tg__ZTV7S7252C5__7S7252C1[3]),  3,3},
  {&(_tg__ZTV7S7252C9__7S7252C1[10]),  10,12},
  {&(_tg__ZTV8S7252C11__7S7252C9__7S7252C1[7]),  7,9},
  {&(_tg__ZTV7S7252C3__7S7252C9__7S7252C1[6]),  6,8},
  {&(_tg__ZTV7S7252C5__7S7252C9__7S7252C1[3]),  3,3},
  {&(_tg__ZTV7S7252C9__7S7252C1[10]),  10,12},
  {&(_tg__ZTV8S7252C13__7S7252C9__7S7252C1[6]),  6,8},
  {&(_tg__ZTV8S7252C11__7S7252C1[6]),  6,8},
  {&(_tg__ZTV7S7252C3__8S7252C11__7S7252C1[6]),  6,8},
  {&(_tg__ZTV7S7252C5__8S7252C11__7S7252C1[3]),  3,3},
  {&(_tg__ZTV8S7252C12__7S7252C1[3]),  3,3},
  {&(_tg__ZTV8S7252C13__7S7252C1[5]),  5,7},
  {&(_tg__ZTV7S7252C88S7252C13__A1__7S7252C1[5]),  5,5},
  {&(_tg__ZTV7S7252C5__7S7252C88S7252C13__A1__7S7252C1[3]),  3,3},
  {&(_tg__ZTV7S7252C5__8S7252C13__7S7252C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7252C1[];
extern  VTBL_ENTRY _ZTV7S7252C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C1[];
static VTBL_ENTRY alt_thunk_names316[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7252C9D0Ev,_ZThn12_N7S7252C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7252C9D1Ev,_ZThn12_N7S7252C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C9D0Ev,_ZTv0_n28_N7S7252C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7252C9D0Ev,_ZThn4_N7S7252C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C9D1Ev,_ZTv0_n28_N7S7252C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7252C9D1Ev,_ZThn4_N7S7252C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C2D0Ev,_ZTv0_n28_N7S7252C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7252C2D0Ev,_ZThn40_N7S7252C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C2D1Ev,_ZTv0_n28_N7S7252C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7252C2D1Ev,_ZThn40_N7S7252C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7252C2D0Ev,_ZTv0_n44_N7S7252C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7252C2D0Ev,_ZThn36_N7S7252C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7252C2D1Ev,_ZTv0_n44_N7S7252C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7252C2D1Ev,_ZThn36_N7S7252C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7252C2D0Ev,_ZThn48_N7S7252C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7252C2D0Ev,_ZThn12_N7S7252C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7252C2D1Ev,_ZThn48_N7S7252C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7252C2D1Ev,_ZThn12_N7S7252C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C1D0Ev,_ZTv0_n28_N7S7252C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7252C1D0Ev,_ZThn40_N7S7252C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C1D1Ev,_ZTv0_n28_N7S7252C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7252C1D1Ev,_ZThn40_N7S7252C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7252C1D0Ev,_ZTv0_n44_N7S7252C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7252C1D0Ev,_ZThn36_N7S7252C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7252C1D1Ev,_ZTv0_n44_N7S7252C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7252C1D1Ev,_ZThn36_N7S7252C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C1D0Ev,_ZTv0_n24_N7S7252C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7252C1D0Ev,_ZThn48_N7S7252C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7252C1D0Ev,_ZThn12_N7S7252C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C1D1Ev,_ZTv0_n24_N7S7252C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7252C1D1Ev,_ZThn48_N7S7252C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7252C1D1Ev,_ZThn12_N7S7252C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7252C1 = {  "S7252C1", // class name
  bases_S7252C1, 19,
  &(vtc_S7252C1[0]), // expected_vtbl_contents
  &(vtt_S7252C1[0]), // expected_vtt_contents
  ABISELECT(176,136), // object size
  NSPAIRA(_ZTI7S7252C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7252C1),54, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7252C1),35, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names316,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5325C3  {
  char s5325c3f0;
  int s5325c3f1;
  void *s5325c3f2[3];
  char s5325c3f3[3];
  ::S4228C19_nt s5325c3f4;
  char s5325c3f5;
  void *s5325c3f6;
  int s5325c3f7[2];
  virtual  ~S5325C3(); // _ZN7S5325C3D1Ev
  virtual void  v6(); // _ZN7S5325C32v6Ev
  virtual void  v7(); // _ZN7S5325C32v7Ev
  virtual void  v8(); // _ZN7S5325C32v8Ev
  virtual void  v9(); // _ZN7S5325C32v9Ev
  virtual void  v10(); // _ZN7S5325C33v10Ev
  virtual void  v11(); // _ZN7S5325C33v11Ev
  virtual void  v12(); // _ZN7S5325C33v12Ev
  virtual void  v13(); // _ZN7S5325C33v13Ev
  virtual void  v14(); // _ZN7S5325C33v14Ev
  virtual void  v15(); // _ZN7S5325C33v15Ev
  virtual void  v16(); // _ZN7S5325C33v16Ev
  virtual void  v17(); // _ZN7S5325C33v17Ev
  virtual void  v18(); // _ZN7S5325C33v18Ev
  virtual void  v19(); // _ZN7S5325C33v19Ev
  S5325C3(); // tgen
};
//SIG(-1 S5325C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fc Fi Fp[3] Fc[3] FC2{ m Fp Fi FC3{ m}} Fc Fp Fi[2]}


 S5325C3 ::~S5325C3(){ note_dtor("S5325C3", this);}
void  S5325C3 ::v6(){vfunc_called(this, "_ZN7S5325C32v6Ev");}
void  S5325C3 ::v7(){vfunc_called(this, "_ZN7S5325C32v7Ev");}
void  S5325C3 ::v8(){vfunc_called(this, "_ZN7S5325C32v8Ev");}
void  S5325C3 ::v9(){vfunc_called(this, "_ZN7S5325C32v9Ev");}
void  S5325C3 ::v10(){vfunc_called(this, "_ZN7S5325C33v10Ev");}
void  S5325C3 ::v11(){vfunc_called(this, "_ZN7S5325C33v11Ev");}
void  S5325C3 ::v12(){vfunc_called(this, "_ZN7S5325C33v12Ev");}
void  S5325C3 ::v13(){vfunc_called(this, "_ZN7S5325C33v13Ev");}
void  S5325C3 ::v14(){vfunc_called(this, "_ZN7S5325C33v14Ev");}
void  S5325C3 ::v15(){vfunc_called(this, "_ZN7S5325C33v15Ev");}
void  S5325C3 ::v16(){vfunc_called(this, "_ZN7S5325C33v16Ev");}
void  S5325C3 ::v17(){vfunc_called(this, "_ZN7S5325C33v17Ev");}
void  S5325C3 ::v18(){vfunc_called(this, "_ZN7S5325C33v18Ev");}
void  S5325C3 ::v19(){vfunc_called(this, "_ZN7S5325C33v19Ev");}
S5325C3 ::S5325C3(){ note_ctor("S5325C3", this);} // tgen

static void Test_S5325C3()
{
  extern Class_Descriptor cd_S5325C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S5325C3, buf);
    S5325C3 *dp, &lv = *(dp=new (buf) S5325C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S5325C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5325C3)");
    check_field_offset(lv, s5325c3f0, ABISELECT(8,4), "S5325C3.s5325c3f0");
    check_field_offset(lv, s5325c3f1, ABISELECT(12,8), "S5325C3.s5325c3f1");
    check_field_offset(lv, s5325c3f2, ABISELECT(16,12), "S5325C3.s5325c3f2");
    check_field_offset(lv, s5325c3f3, ABISELECT(40,24), "S5325C3.s5325c3f3");
    check_field_offset(lv, s5325c3f4, ABISELECT(48,28), "S5325C3.s5325c3f4");
    check_field_offset(lv, s5325c3f5, ABISELECT(64,40), "S5325C3.s5325c3f5");
    check_field_offset(lv, s5325c3f6, ABISELECT(72,44), "S5325C3.s5325c3f6");
    check_field_offset(lv, s5325c3f7, ABISELECT(80,48), "S5325C3.s5325c3f7");
    test_class_info(&lv, &cd_S5325C3);
    dp->~S5325C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5325C3(Test_S5325C3, "S5325C3", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S5325C3C1Ev();
extern void _ZN7S5325C3D1Ev();
Name_Map name_map_S5325C3[] = {
  NSPAIR(_ZN7S5325C3C1Ev),
  NSPAIR(_ZN7S5325C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5325C3[];
extern void _ZN7S5325C3D1Ev();
extern void _ZN7S5325C3D0Ev();
extern void _ZN7S5325C32v6Ev();
extern void _ZN7S5325C32v7Ev();
extern void _ZN7S5325C32v8Ev();
extern void _ZN7S5325C32v9Ev();
extern void _ZN7S5325C33v10Ev();
extern void _ZN7S5325C33v11Ev();
extern void _ZN7S5325C33v12Ev();
extern void _ZN7S5325C33v13Ev();
extern void _ZN7S5325C33v14Ev();
extern void _ZN7S5325C33v15Ev();
extern void _ZN7S5325C33v16Ev();
extern void _ZN7S5325C33v17Ev();
extern void _ZN7S5325C33v18Ev();
extern void _ZN7S5325C33v19Ev();
static  VTBL_ENTRY vtc_S5325C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5325C3[0]),
  (VTBL_ENTRY)&_ZN7S5325C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5325C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v19Ev,
};
extern VTBL_ENTRY _ZTI7S5325C3[];
extern  VTBL_ENTRY _ZTV7S5325C3[];
Class_Descriptor cd_S5325C3 = {  "S5325C3", // class name
  0,0,//no base classes
  &(vtc_S5325C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S5325C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5325C3),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5325C2  : S5325C3 {
  char s5325c2f0;
  void *s5325c2f1[2];
  virtual  ~S5325C2(); // _ZN7S5325C2D1Ev
  virtual void  v20(); // _ZN7S5325C23v20Ev
  S5325C2(); // tgen
};
//SIG(-1 S5325C2) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fc Fi Fp[3] Fc[3] FC3{ m Fp Fi FC4{ m}} Fc Fp Fi[2]} vd v1 Fc Fp[2]}


 S5325C2 ::~S5325C2(){ note_dtor("S5325C2", this);}
void  S5325C2 ::v20(){vfunc_called(this, "_ZN7S5325C23v20Ev");}
S5325C2 ::S5325C2(){ note_ctor("S5325C2", this);} // tgen

static void Test_S5325C2()
{
  extern Class_Descriptor cd_S5325C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,18)];
    init_test(&cd_S5325C2, buf);
    S5325C2 *dp, &lv = *(dp=new (buf) S5325C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S5325C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5325C2)");
    check_base_class_offset(lv, (S5325C3*), 0, "S5325C2");
    check_field_offset(lv, s5325c2f0, ABISELECT(88,56), "S5325C2.s5325c2f0");
    check_field_offset(lv, s5325c2f1, ABISELECT(96,60), "S5325C2.s5325c2f1");
    test_class_info(&lv, &cd_S5325C2);
    dp->~S5325C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5325C2(Test_S5325C2, "S5325C2", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN7S5325C2C1Ev();
extern void _ZN7S5325C2D1Ev();
Name_Map name_map_S5325C2[] = {
  NSPAIR(_ZN7S5325C2C1Ev),
  NSPAIR(_ZN7S5325C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5325C3;
extern VTBL_ENTRY _ZTI7S5325C3[];
extern  VTBL_ENTRY _ZTV7S5325C3[];
static Base_Class bases_S5325C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5325C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5325C2[];
extern void _ZN7S5325C2D1Ev();
extern void _ZN7S5325C2D0Ev();
extern void _ZN7S5325C32v6Ev();
extern void _ZN7S5325C32v7Ev();
extern void _ZN7S5325C32v8Ev();
extern void _ZN7S5325C32v9Ev();
extern void _ZN7S5325C33v10Ev();
extern void _ZN7S5325C33v11Ev();
extern void _ZN7S5325C33v12Ev();
extern void _ZN7S5325C33v13Ev();
extern void _ZN7S5325C33v14Ev();
extern void _ZN7S5325C33v15Ev();
extern void _ZN7S5325C33v16Ev();
extern void _ZN7S5325C33v17Ev();
extern void _ZN7S5325C33v18Ev();
extern void _ZN7S5325C33v19Ev();
extern void _ZN7S5325C23v20Ev();
static  VTBL_ENTRY vtc_S5325C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5325C2[0]),
  (VTBL_ENTRY)&_ZN7S5325C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5325C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5325C23v20Ev,
};
extern VTBL_ENTRY _ZTI7S5325C2[];
extern  VTBL_ENTRY _ZTV7S5325C2[];
Class_Descriptor cd_S5325C2 = {  "S5325C2", // class name
  bases_S5325C2, 1,
  &(vtc_S5325C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI7S5325C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5325C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5325C1  : S5325C2 {
  char s5325c1f0[3];
  int s5325c1f1[2];
  void *s5325c1f2;
  virtual  ~S5325C1(); // _ZN7S5325C1D1Ev
  virtual void  v1(); // _ZN7S5325C12v1Ev
  virtual void  v2(); // _ZN7S5325C12v2Ev
  virtual void  v3(); // _ZN7S5325C12v3Ev
  virtual void  v4(); // _ZN7S5325C12v4Ev
  virtual void  v5(); // _ZN7S5325C12v5Ev
  S5325C1(); // tgen
};
//SIG(1 S5325C1) C1{ BC2{ BC3{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 Fc Fi Fp[3] Fc[3] FC4{ m Fp Fi FC5{ m}} Fc Fp Fi[2]} vd v20 Fc Fp[2]} vd v1 v2 v3 v4 v5 Fc[3] Fi[2] Fp}


 S5325C1 ::~S5325C1(){ note_dtor("S5325C1", this);}
void  S5325C1 ::v1(){vfunc_called(this, "_ZN7S5325C12v1Ev");}
void  S5325C1 ::v2(){vfunc_called(this, "_ZN7S5325C12v2Ev");}
void  S5325C1 ::v3(){vfunc_called(this, "_ZN7S5325C12v3Ev");}
void  S5325C1 ::v4(){vfunc_called(this, "_ZN7S5325C12v4Ev");}
void  S5325C1 ::v5(){vfunc_called(this, "_ZN7S5325C12v5Ev");}
S5325C1 ::S5325C1(){ note_ctor("S5325C1", this);} // tgen

static void Test_S5325C1()
{
  extern Class_Descriptor cd_S5325C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,22)];
    init_test(&cd_S5325C1, buf);
    S5325C1 *dp, &lv = *(dp=new (buf) S5325C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,84), "sizeof(S5325C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5325C1)");
    check_base_class_offset(lv, (S5325C3*)(S5325C2*), 0, "S5325C1");
    check_base_class_offset(lv, (S5325C2*), 0, "S5325C1");
    check_field_offset(lv, s5325c1f0, ABISELECT(112,68), "S5325C1.s5325c1f0");
    check_field_offset(lv, s5325c1f1, ABISELECT(116,72), "S5325C1.s5325c1f1");
    check_field_offset(lv, s5325c1f2, ABISELECT(128,80), "S5325C1.s5325c1f2");
    test_class_info(&lv, &cd_S5325C1);
    dp->~S5325C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5325C1(Test_S5325C1, "S5325C1", ABISELECT(136,84));

#else // __cplusplus

extern void _ZN7S5325C1C1Ev();
extern void _ZN7S5325C1D1Ev();
Name_Map name_map_S5325C1[] = {
  NSPAIR(_ZN7S5325C1C1Ev),
  NSPAIR(_ZN7S5325C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5325C3;
extern VTBL_ENTRY _ZTI7S5325C3[];
extern  VTBL_ENTRY _ZTV7S5325C3[];
extern Class_Descriptor cd_S5325C2;
extern VTBL_ENTRY _ZTI7S5325C2[];
extern  VTBL_ENTRY _ZTV7S5325C2[];
static Base_Class bases_S5325C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5325C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5325C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5325C1[];
extern void _ZN7S5325C1D1Ev();
extern void _ZN7S5325C1D0Ev();
extern void _ZN7S5325C32v6Ev();
extern void _ZN7S5325C32v7Ev();
extern void _ZN7S5325C32v8Ev();
extern void _ZN7S5325C32v9Ev();
extern void _ZN7S5325C33v10Ev();
extern void _ZN7S5325C33v11Ev();
extern void _ZN7S5325C33v12Ev();
extern void _ZN7S5325C33v13Ev();
extern void _ZN7S5325C33v14Ev();
extern void _ZN7S5325C33v15Ev();
extern void _ZN7S5325C33v16Ev();
extern void _ZN7S5325C33v17Ev();
extern void _ZN7S5325C33v18Ev();
extern void _ZN7S5325C33v19Ev();
extern void _ZN7S5325C23v20Ev();
extern void _ZN7S5325C12v1Ev();
extern void _ZN7S5325C12v2Ev();
extern void _ZN7S5325C12v3Ev();
extern void _ZN7S5325C12v4Ev();
extern void _ZN7S5325C12v5Ev();
static  VTBL_ENTRY vtc_S5325C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5325C1[0]),
  (VTBL_ENTRY)&_ZN7S5325C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5325C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5325C23v20Ev,
  (VTBL_ENTRY)&_ZN7S5325C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5325C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5325C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5325C12v4Ev,
  (VTBL_ENTRY)&_ZN7S5325C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S5325C1[];
extern  VTBL_ENTRY _ZTV7S5325C1[];
Class_Descriptor cd_S5325C1 = {  "S5325C1", // class name
  bases_S5325C1, 2,
  &(vtc_S5325C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,84), // object size
  NSPAIRA(_ZTI7S5325C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5325C1),24, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19224C5  : S4228C27 , virtual S4228C37 {
  ::S4228C27 s19224c5f0;
  ~S19224C5(); // tgen
  S19224C5(); // tgen
};
//SIG(-1 S19224C5) C1{ BC2{ m} VBC3{ m} FC2}


S19224C5 ::~S19224C5(){ note_dtor("S19224C5", this);} // tgen
S19224C5 ::S19224C5(){ note_ctor("S19224C5", this);} // tgen

static void Test_S19224C5()
{
  extern Class_Descriptor cd_S19224C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19224C5, buf);
    S19224C5 *dp, &lv = *(dp=new (buf) S19224C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19224C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19224C5)");
    check_base_class_offset(lv, (S4228C27*), 0, "S19224C5");
    check_base_class_offset(lv, (S4228C37*), 0, "S19224C5");
    check_field_offset(lv, s19224c5f0, ABISELECT(8,4), "S19224C5.s19224c5f0");
    test_class_info(&lv, &cd_S19224C5);
    dp->~S19224C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19224C5(Test_S19224C5, "S19224C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19224C5C1Ev();
extern void _ZN8S19224C5D1Ev();
Name_Map name_map_S19224C5[] = {
  NSPAIR(_ZN8S19224C5C1Ev),
  NSPAIR(_ZN8S19224C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S19224C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19224C5[];
static  VTBL_ENTRY vtc_S19224C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
extern VTBL_ENTRY _ZTV8S19224C5[];
static  VTT_ENTRY vtt_S19224C5[] = {
  {&(_ZTV8S19224C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
Class_Descriptor cd_S19224C5 = {  "S19224C5", // class name
  bases_S19224C5, 2,
  &(vtc_S19224C5[0]), // expected_vtbl_contents
  &(vtt_S19224C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19224C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19224C5),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19224C5),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19224C2  : S4228C37 , virtual S4228C27 , virtual S19224C5 {
  void *s19224c2f0;
  ~S19224C2(); // tgen
  S19224C2(); // tgen
};
//SIG(-1 S19224C2) C1{ BC2{ m} VBC3{ m} VBC4{ BC3 VBC2 FC3} Fp}


S19224C2 ::~S19224C2(){ note_dtor("S19224C2", this);} // tgen
S19224C2 ::S19224C2(){ note_ctor("S19224C2", this);} // tgen

static void Test_S19224C2()
{
  extern Class_Descriptor cd_S19224C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19224C2, buf);
    S19224C2 *dp, &lv = *(dp=new (buf) S19224C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19224C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19224C2)");
    /*is_ambiguous_... S19224C2::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), 0, "S19224C2");
    /*is_ambiguous_... S19224C2::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), 0, "S19224C2");
    check_base_class_offset(lv, (S4228C27*)(S19224C5*), ABISELECT(16,8), "S19224C2");
    check_base_class_offset(lv, (S4228C37*)(S19224C5*), ABISELECT(25,13), "S19224C2");
    check_base_class_offset(lv, (S19224C5*), ABISELECT(16,8), "S19224C2");
    check_field_offset(lv, s19224c2f0, ABISELECT(8,4), "S19224C2.s19224c2f0");
    test_class_info(&lv, &cd_S19224C2);
    dp->~S19224C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19224C2(Test_S19224C2, "S19224C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19224C2C1Ev();
extern void _ZN8S19224C2D1Ev();
Name_Map name_map_S19224C2[] = {
  NSPAIR(_ZN8S19224C2C1Ev),
  NSPAIR(_ZN8S19224C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
static Base_Class bases_S19224C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19224C5,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19224C2[];
static  VTBL_ENTRY vtc_S19224C2[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
extern VTBL_ENTRY _ZTV8S19224C2[];
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C2[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
static  VTT_ENTRY vtt_S19224C2[] = {
  {&(_ZTV8S19224C2[5]),  5,8},
  {&(_ZTV8S19224C2[8]),  8,8},
  {&(_tg__ZTV8S19224C5__8S19224C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19224C2[];
extern  VTBL_ENTRY _ZTV8S19224C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C2[];
Class_Descriptor cd_S19224C2 = {  "S19224C2", // class name
  bases_S19224C2, 5,
  &(vtc_S19224C2[0]), // expected_vtbl_contents
  &(vtt_S19224C2[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19224C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19224C2),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19224C2),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19224C9  : virtual S4228C27 , S4228C37 {
  ~S19224C9(); // tgen
  S19224C9(); // tgen
};
//SIG(-1 S19224C9) C1{ VBC2{ m} BC3{ m}}


S19224C9 ::~S19224C9(){ note_dtor("S19224C9", this);} // tgen
S19224C9 ::S19224C9(){ note_ctor("S19224C9", this);} // tgen

static void Test_S19224C9()
{
  extern Class_Descriptor cd_S19224C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19224C9, buf);
    S19224C9 *dp, &lv = *(dp=new (buf) S19224C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19224C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19224C9)");
    check_base_class_offset(lv, (S4228C27*), 0, "S19224C9");
    check_base_class_offset(lv, (S4228C37*), 0, "S19224C9");
    test_class_info(&lv, &cd_S19224C9);
    dp->~S19224C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19224C9(Test_S19224C9, "S19224C9", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19224C9C1Ev();
extern void _ZN8S19224C9D1Ev();
Name_Map name_map_S19224C9[] = {
  NSPAIR(_ZN8S19224C9C1Ev),
  NSPAIR(_ZN8S19224C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S19224C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19224C9[];
static  VTBL_ENTRY vtc_S19224C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C9[0]),
};
extern VTBL_ENTRY _ZTV8S19224C9[];
static  VTT_ENTRY vtt_S19224C9[] = {
  {&(_ZTV8S19224C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19224C9[];
extern  VTBL_ENTRY _ZTV8S19224C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C9[];
Class_Descriptor cd_S19224C9 = {  "S19224C9", // class name
  bases_S19224C9, 2,
  &(vtc_S19224C9[0]), // expected_vtbl_contents
  &(vtt_S19224C9[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19224C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19224C9),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19224C9),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19224C8  : S4228C37 , S19224C9 , S19224C5 {
  virtual  ~S19224C8(); // _ZN8S19224C8D2Ev
  S19224C8(); // tgen
};
//SIG(-1 S19224C8) C1{ BC2{ m} BC3{ VBC4{ m} BC2} BC5{ BC4 VBC2 FC4} vd}


 S19224C8 ::~S19224C8(){ note_dtor("S19224C8", this);}
S19224C8 ::S19224C8(){ note_ctor("S19224C8", this);} // tgen

static void Test_S19224C8()
{
  extern Class_Descriptor cd_S19224C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19224C8, buf);
    S19224C8 *dp, &lv = *(dp=new (buf) S19224C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19224C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19224C8)");
    /*is_ambiguous_... S19224C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), ABISELECT(8,4), "S19224C8");
    check_base_class_offset(lv, (S4228C27*)(S19224C9*), 0, "S19224C8");
    check_base_class_offset(lv, (S4228C37*)(S19224C9*), 0, "S19224C8");
    check_base_class_offset(lv, (S19224C9*), 0, "S19224C8");
    check_base_class_offset(lv, (S4228C27*)(S19224C5*), ABISELECT(8,4), "S19224C8");
    check_base_class_offset(lv, (S4228C37*)(S19224C5*), ABISELECT(17,9), "S19224C8");
    check_base_class_offset(lv, (S19224C5*), ABISELECT(8,4), "S19224C8");
    test_class_info(&lv, &cd_S19224C8);
    dp->~S19224C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19224C8(Test_S19224C8, "S19224C8", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S19224C8C1Ev();
extern void _ZN8S19224C8D2Ev();
Name_Map name_map_S19224C8[] = {
  NSPAIR(_ZN8S19224C8C1Ev),
  NSPAIR(_ZN8S19224C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C9;
extern VTBL_ENTRY _ZTI8S19224C9[];
extern  VTBL_ENTRY _ZTV8S19224C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
static Base_Class bases_S19224C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19224C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19224C5,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19224C8[];
extern void _ZN8S19224C8D1Ev();
extern void _ZN8S19224C8D0Ev();
static  VTBL_ENTRY vtc_S19224C8[] = {
  ABISELECT(17,9),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C8[0]),
  (VTBL_ENTRY)&_ZN8S19224C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19224C8D0Ev,
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19224C8[0]),
};
extern VTBL_ENTRY _ZTV8S19224C8[];
static  VTBL_ENTRY _tg__ZTV8S19224C9__8S19224C8[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C8[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
static  VTT_ENTRY vtt_S19224C8[] = {
  {&(_ZTV8S19224C8[4]),  4,9},
  {&(_tg__ZTV8S19224C9__8S19224C8[3]),  3,3},
  {&(_tg__ZTV8S19224C5__8S19224C8[3]),  3,3},
  {&(_ZTV8S19224C8[9]),  9,9},
};
extern VTBL_ENTRY _ZTI8S19224C8[];
extern  VTBL_ENTRY _ZTV8S19224C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C8[];
Class_Descriptor cd_S19224C8 = {  "S19224C8", // class name
  bases_S19224C8, 7,
  &(vtc_S19224C8[0]), // expected_vtbl_contents
  &(vtt_S19224C8[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S19224C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19224C8),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19224C8),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19224C10  : virtual S19224C2 {
  char s19224c10f0:8;
  ~S19224C10(); // tgen
  S19224C10(); // tgen
};
//SIG(-1 S19224C10) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} Fc:8}


S19224C10 ::~S19224C10(){ note_dtor("S19224C10", this);} // tgen
S19224C10 ::S19224C10(){ note_ctor("S19224C10", this);} // tgen

static void Test_S19224C10()
{
  extern Class_Descriptor cd_S19224C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S19224C10, buf);
    S19224C10 *dp, &lv = *(dp=new (buf) S19224C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S19224C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19224C10)");
    /*is_ambiguous_... S19224C2::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C2*), ABISELECT(16,8), "S19224C10");
    /*is_ambiguous_... S19224C2::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C2*), 0, "S19224C10");
    check_base_class_offset(lv, (S4228C27*)(S19224C5*), ABISELECT(32,16), "S19224C10");
    check_base_class_offset(lv, (S4228C37*)(S19224C5*), 0, "S19224C10");
    check_base_class_offset(lv, (S19224C5*)(S19224C2*), ABISELECT(32,16), "S19224C10");
    check_base_class_offset(lv, (S19224C2*), ABISELECT(16,8), "S19224C10");
    set_bf_and_test(lv, s19224c10f0, ABISELECT(8,4), 0, 8, 1, "S19224C10");
    set_bf_and_test(lv, s19224c10f0, ABISELECT(8,4), 0, 8, hide_sll(1LL<<7), "S19224C10");
    test_class_info(&lv, &cd_S19224C10);
    dp->~S19224C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19224C10(Test_S19224C10, "S19224C10", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN9S19224C10C1Ev();
extern void _ZN9S19224C10D1Ev();
Name_Map name_map_S19224C10[] = {
  NSPAIR(_ZN9S19224C10C1Ev),
  NSPAIR(_ZN9S19224C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
extern Class_Descriptor cd_S19224C2;
extern VTBL_ENTRY _ZTI8S19224C2[];
extern  VTBL_ENTRY _ZTV8S19224C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C2[];
static Base_Class bases_S19224C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19224C5,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19224C2,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19224C10[];
static  VTBL_ENTRY vtc_S19224C10[] = {
  0,
  ABISELECT(32,16),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C10[0]),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19224C10[0]),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19224C10[0]),
};
extern VTBL_ENTRY _ZTV9S19224C10[];
static  VTBL_ENTRY _tg__ZTV8S19224C2__9S19224C10[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C2__9S19224C10[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C10[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
static  VTT_ENTRY vtt_S19224C10[] = {
  {&(_ZTV9S19224C10[6]),  6,14},
  {&(_ZTV9S19224C10[11]),  11,14},
  {&(_ZTV9S19224C10[14]),  14,14},
  {&(_tg__ZTV8S19224C2__9S19224C10[5]),  5,5},
  {&(_tg__ZTV8S19224C5__8S19224C2__9S19224C10[3]),  3,3},
  {&(_tg__ZTV8S19224C5__9S19224C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19224C10[];
extern  VTBL_ENTRY _ZTV9S19224C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C10[];
Class_Descriptor cd_S19224C10 = {  "S19224C10", // class name
  bases_S19224C10, 6,
  &(vtc_S19224C10[0]), // expected_vtbl_contents
  &(vtt_S19224C10[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI9S19224C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19224C10),14, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19224C10),6, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19224C13  : S3423C8_nt , virtual S19224C5 , S19224C2 , S4228C37 {
  char s19224c13f0;
  virtual  ~S19224C13(); // _ZN9S19224C13D2Ev
  S19224C13(); // tgen
};
//SIG(-1 S19224C13) C1{ BC2{ m Fi} VBC3{ BC4{ m} VBC5{ m} FC4} BC6{ BC5 VBC4 VBC3 Fp} BC5 vd Fc}


 S19224C13 ::~S19224C13(){ note_dtor("S19224C13", this);}
S19224C13 ::S19224C13(){ note_ctor("S19224C13", this);} // tgen

static void Test_S19224C13()
{
  extern Class_Descriptor cd_S19224C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S19224C13, buf);
    S19224C13 *dp, &lv = *(dp=new (buf) S19224C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S19224C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19224C13)");
    check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(16,8), "S19224C13");
    check_base_class_offset(lv, (S4228C27*)(S19224C5*), ABISELECT(24,16), "S19224C13");
    check_base_class_offset(lv, (S4228C37*)(S19224C5*), ABISELECT(33,21), "S19224C13");
    check_base_class_offset(lv, (S19224C5*), ABISELECT(24,16), "S19224C13");
    check_base_class_offset(lv, (S19224C5*)(S19224C2*), ABISELECT(24,16), "S19224C13");
    /*is_ambiguous_... S19224C2::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C2*), 0, "S19224C13");
    /*is_ambiguous_... S19224C2::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C2*), 0, "S19224C13");
    check_base_class_offset(lv, (S19224C2*), 0, "S19224C13");
    /*is_ambiguous_... S19224C13::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), ABISELECT(20,12), "S19224C13");
    check_field_offset(lv, s19224c13f0, ABISELECT(20,12), "S19224C13.s19224c13f0");
    test_class_info(&lv, &cd_S19224C13);
    dp->~S19224C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19224C13(Test_S19224C13, "S19224C13", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN9S19224C13C1Ev();
extern void _ZN9S19224C13D2Ev();
Name_Map name_map_S19224C13[] = {
  NSPAIR(_ZN9S19224C13C1Ev),
  NSPAIR(_ZN9S19224C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19224C2;
extern VTBL_ENTRY _ZTI8S19224C2[];
extern  VTBL_ENTRY _ZTV8S19224C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C2[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S19224C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(33,21), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19224C5,    ABISELECT(24,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19224C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19224C13[];
extern void _ZN9S19224C13D1Ev();
extern void _ZN9S19224C13D0Ev();
static  VTBL_ENTRY vtc_S19224C13[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C13[0]),
  (VTBL_ENTRY)&_ZN9S19224C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19224C13D0Ev,
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S19224C13[0]),
};
extern VTBL_ENTRY _ZTV9S19224C13[];
static  VTBL_ENTRY _tg__ZTV8S19224C2__9S19224C13[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C2__9S19224C13[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C13[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
static  VTT_ENTRY vtt_S19224C13[] = {
  {&(_ZTV9S19224C13[5]),  5,10},
  {&(_tg__ZTV8S19224C2__9S19224C13[5]),  5,5},
  {&(_tg__ZTV8S19224C5__8S19224C2__9S19224C13[3]),  3,3},
  {&(_ZTV9S19224C13[10]),  10,10},
  {&(_tg__ZTV8S19224C5__9S19224C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19224C13[];
extern  VTBL_ENTRY _ZTV9S19224C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C13[];
Class_Descriptor cd_S19224C13 = {  "S19224C13", // class name
  bases_S19224C13, 8,
  &(vtc_S19224C13[0]), // expected_vtbl_contents
  &(vtt_S19224C13[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI9S19224C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19224C13),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19224C13),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19224C12  : virtual S19224C13 {
  int s19224c12f0;
  virtual  ~S19224C12(); // _ZN9S19224C12D2Ev
  S19224C12(); // tgen
};
//SIG(-1 S19224C12) C1{ VBC2{ BC3{ m Fi} VBC4{ BC5{ m} VBC6{ m} FC5} BC7{ BC6 VBC5 VBC4 Fp} BC6 vd Fc} vd Fi}


 S19224C12 ::~S19224C12(){ note_dtor("S19224C12", this);}
S19224C12 ::S19224C12(){ note_ctor("S19224C12", this);} // tgen

static void Test_S19224C12()
{
  extern Class_Descriptor cd_S19224C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19224C12, buf);
    S19224C12 *dp, &lv = *(dp=new (buf) S19224C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19224C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19224C12)");
    check_base_class_offset(lv, (S3423C8_nt*)(S19224C13*), ABISELECT(32,16), "S19224C12");
    check_base_class_offset(lv, (S4228C27*)(S19224C5*), ABISELECT(40,24), "S19224C12");
    check_base_class_offset(lv, (S4228C37*)(S19224C5*), 0, "S19224C12");
    check_base_class_offset(lv, (S19224C5*)(S19224C13*), ABISELECT(40,24), "S19224C12");
    check_base_class_offset(lv, (S19224C5*)(S19224C2*)(S19224C13*), ABISELECT(40,24), "S19224C12");
    /*is_ambiguous_... S19224C2::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C2*)(S19224C13*), ABISELECT(16,8), "S19224C12");
    /*is_ambiguous_... S19224C2::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C2*)(S19224C13*), 0, "S19224C12");
    check_base_class_offset(lv, (S19224C2*)(S19224C13*), ABISELECT(16,8), "S19224C12");
    /*is_ambiguous_... S19224C13::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C13*), ABISELECT(36,20), "S19224C12");
    check_base_class_offset(lv, (S19224C13*), ABISELECT(16,8), "S19224C12");
    check_field_offset(lv, s19224c12f0, ABISELECT(8,4), "S19224C12.s19224c12f0");
    test_class_info(&lv, &cd_S19224C12);
    dp->~S19224C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19224C12(Test_S19224C12, "S19224C12", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S19224C12C1Ev();
extern void _ZN9S19224C12D2Ev();
Name_Map name_map_S19224C12[] = {
  NSPAIR(_ZN9S19224C12C1Ev),
  NSPAIR(_ZN9S19224C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19224C2;
extern VTBL_ENTRY _ZTI8S19224C2[];
extern  VTBL_ENTRY _ZTV8S19224C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C2[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C13;
extern VTBL_ENTRY _ZTI9S19224C13[];
extern  VTBL_ENTRY _ZTV9S19224C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C13[];
static Base_Class bases_S19224C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19224C5,    ABISELECT(40,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19224C2,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(36,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19224C13,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19224C12[];
extern void _ZN9S19224C12D1Ev();
extern void _ZN9S19224C12D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S19224C12D1Ev,_ZTv0_n24_N9S19224C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S19224C12D1Ev,_ZThn8_N9S19224C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19224C12D0Ev,_ZTv0_n24_N9S19224C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S19224C12D0Ev,_ZThn8_N9S19224C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19224C12[] = {
  0,
  0,
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C12[0]),
  (VTBL_ENTRY)&_ZN9S19224C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19224C12D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19224C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19224C12D1Ev,_ZTv0_n24_N9S19224C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19224C12D0Ev,_ZTv0_n24_N9S19224C12D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19224C12[0]),
};
extern VTBL_ENTRY _ZTV9S19224C12[];
extern void _ZN9S19224C13D1Ev();
extern void _ZN9S19224C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19224C13__9S19224C12[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C13[0]),
  (VTBL_ENTRY)&_ZN9S19224C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19224C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19224C29S19224C13__9S19224C12[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C29S19224C13__9S19224C12[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C13__9S19224C12[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S19224C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C12[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
static  VTT_ENTRY vtt_S19224C12[] = {
  {&(_ZTV9S19224C12[6]),  6,19},
  {&(_ZTV9S19224C12[14]),  14,19},
  {&(_ZTV9S19224C12[19]),  19,19},
  {&(_tg__ZTV9S19224C13__9S19224C12[5]),  5,7},
  {&(_tg__ZTV8S19224C29S19224C13__9S19224C12[5]),  5,5},
  {&(_tg__ZTV8S19224C5__8S19224C29S19224C13__9S19224C12[3]),  3,3},
  {&(_tg__ZTV8S19224C5__9S19224C13__9S19224C12[3]),  3,3},
  {&(_tg__ZTV8S19224C5__9S19224C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19224C12[];
extern  VTBL_ENTRY _ZTV9S19224C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C12[];
static VTBL_ENTRY alt_thunk_names317[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19224C12D0Ev,_ZTv0_n24_N9S19224C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19224C12D0Ev,_ZThn8_N9S19224C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19224C12D1Ev,_ZTv0_n24_N9S19224C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19224C12D1Ev,_ZThn8_N9S19224C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19224C12 = {  "S19224C12", // class name
  bases_S19224C12, 9,
  &(vtc_S19224C12[0]), // expected_vtbl_contents
  &(vtt_S19224C12[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S19224C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19224C12),19, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19224C12),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names317,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19224C7  : virtual S19224C8 , virtual S19224C2 , S19224C10 , virtual S3423C8_nt , S19224C12 {
  ~S19224C7(); // tgen
  S19224C7(); // tgen
};
//SIG(-1 S19224C7) C1{ VBC2{ BC3{ m} BC4{ VBC5{ m} BC3} BC6{ BC5 VBC3 FC5} vd} VBC7{ BC3 VBC5 VBC6 Fp} BC8{ VBC7 Fc:8} VBC9{ m Fi} BC10{ VBC11{ BC9 VBC6 BC7 BC3 vd Fc} vd Fi}}


S19224C7 ::~S19224C7(){ note_dtor("S19224C7", this);} // tgen
S19224C7 ::S19224C7(){ note_ctor("S19224C7", this);} // tgen

static void Test_S19224C7()
{
  extern Class_Descriptor cd_S19224C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,17)];
    init_test(&cd_S19224C7, buf);
    S19224C7 *dp, &lv = *(dp=new (buf) S19224C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S19224C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19224C7)");
    /*is_ambiguous_... S19224C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C8*), ABISELECT(40,20), "S19224C7");
    check_base_class_offset(lv, (S4228C27*)(S19224C9*)(S19224C8*), 0, "S19224C7");
    /*is_ambiguous_... S19224C7::S19224C2 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C2*), 0, "S19224C7");
    /*is_ambiguous_... S19224C2::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C2*)(S19224C13*), 0, "S19224C7");
    check_base_class_offset(lv, (S4228C37*)(S19224C9*)(S19224C8*), ABISELECT(32,16), "S19224C7");
    check_base_class_offset(lv, (S19224C9*)(S19224C8*), ABISELECT(32,16), "S19224C7");
    check_base_class_offset(lv, (S4228C27*)(S19224C5*)(S19224C8*), ABISELECT(40,20), "S19224C7");
    check_base_class_offset(lv, (S4228C37*)(S19224C5*)(S19224C8*), 0, "S19224C7");
    /*is_ambiguous_... S19224C7::S19224C5 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C5*), 0, "S19224C7");
    check_base_class_offset(lv, (S19224C5*)(S19224C8*), ABISELECT(40,20), "S19224C7");
    check_base_class_offset(lv, (S19224C8*), ABISELECT(32,16), "S19224C7");
    /*is_ambiguous_... S19224C7::S19224C2 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C2*), ABISELECT(56,28), "S19224C7");
    /*is_ambiguous_... S19224C7::S19224C5 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C5*), ABISELECT(72,36), "S19224C7");
    /*is_ambiguous_... S19224C7::S19224C2 */ AMB_check_base_class_offset(lv, (S19224C5*)(S19224C2*), ABISELECT(72,36), "S19224C7");
    check_base_class_offset(lv, (S19224C5*)(S19224C13*), ABISELECT(72,36), "S19224C7");
    check_base_class_offset(lv, (S19224C5*)(S19224C2*)(S19224C13*), ABISELECT(72,36), "S19224C7");
    /*is_ambiguous_... S19224C7::S19224C2 */ AMB_check_base_class_offset(lv, (S19224C2*), ABISELECT(56,28), "S19224C7");
    check_base_class_offset(lv, (S19224C2*)(S19224C10*), ABISELECT(56,28), "S19224C7");
    check_base_class_offset(lv, (S19224C10*), 0, "S19224C7");
    /*is_ambiguous_... S19224C7::S3423C8_nt */ AMB_check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(84,44), "S19224C7");
    check_base_class_offset(lv, (S3423C8_nt*)(S19224C13*), ABISELECT(104,56), "S19224C7");
    /*is_ambiguous_... S19224C2::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C2*)(S19224C13*), ABISELECT(88,48), "S19224C7");
    check_base_class_offset(lv, (S19224C2*)(S19224C13*), ABISELECT(88,48), "S19224C7");
    /*is_ambiguous_... S19224C13::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C13*), ABISELECT(108,60), "S19224C7");
    check_base_class_offset(lv, (S19224C13*)(S19224C12*), ABISELECT(88,48), "S19224C7");
    check_base_class_offset(lv, (S19224C12*), ABISELECT(16,8), "S19224C7");
    test_class_info(&lv, &cd_S19224C7);
    dp->~S19224C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19224C7(Test_S19224C7, "S19224C7", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN8S19224C7C1Ev();
extern void _ZN8S19224C7D1Ev();
Name_Map name_map_S19224C7[] = {
  NSPAIR(_ZN8S19224C7C1Ev),
  NSPAIR(_ZN8S19224C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C9;
extern VTBL_ENTRY _ZTI8S19224C9[];
extern  VTBL_ENTRY _ZTV8S19224C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
extern Class_Descriptor cd_S19224C8;
extern VTBL_ENTRY _ZTI8S19224C8[];
extern  VTBL_ENTRY _ZTV8S19224C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C8[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
extern Class_Descriptor cd_S19224C2;
extern VTBL_ENTRY _ZTI8S19224C2[];
extern  VTBL_ENTRY _ZTV8S19224C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C2[];
extern Class_Descriptor cd_S19224C10;
extern VTBL_ENTRY _ZTI9S19224C10[];
extern  VTBL_ENTRY _ZTV9S19224C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C10[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C2;
extern VTBL_ENTRY _ZTI8S19224C2[];
extern  VTBL_ENTRY _ZTV8S19224C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C2[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C13;
extern VTBL_ENTRY _ZTI9S19224C13[];
extern  VTBL_ENTRY _ZTV9S19224C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C13[];
extern Class_Descriptor cd_S19224C12;
extern VTBL_ENTRY _ZTI9S19224C12[];
extern  VTBL_ENTRY _ZTV9S19224C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C12[];
static Base_Class bases_S19224C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19224C9,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19224C5,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19224C8,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19224C5,    ABISELECT(72,36), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19224C2,    ABISELECT(56,28), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19224C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3423C8_nt,    ABISELECT(84,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3423C8_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19224C2,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(108,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19224C13,    ABISELECT(88,48), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19224C12,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19224C7[];
extern void _ZN8S19224C7D1Ev();
extern void _ZN8S19224C7D0Ev();
extern void ABISELECT(_ZThn16_N8S19224C7D1Ev,_ZThn8_N8S19224C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S19224C7D0Ev,_ZThn8_N8S19224C7D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19224C7D1Ev,_ZTv0_n20_N8S19224C7D1Ev)();
extern void ABISELECT(_ZThn32_N8S19224C7D1Ev,_ZThn16_N8S19224C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19224C7D0Ev,_ZTv0_n20_N8S19224C7D0Ev)();
extern void ABISELECT(_ZThn32_N8S19224C7D0Ev,_ZThn16_N8S19224C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19224C7D1Ev,_ZTv0_n24_N8S19224C7D1Ev)();
extern void ABISELECT(_ZThn88_N8S19224C7D1Ev,_ZThn48_N8S19224C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19224C7D0Ev,_ZTv0_n24_N8S19224C7D0Ev)();
extern void ABISELECT(_ZThn88_N8S19224C7D0Ev,_ZThn48_N8S19224C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19224C7[] = {
  ABISELECT(88,48),
  ABISELECT(84,44),
  ABISELECT(32,16),
  0,
  ABISELECT(72,36),
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  (VTBL_ENTRY)&_ZN8S19224C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19224C7D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19224C7D1Ev,_ZThn8_N8S19224C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19224C7D0Ev,_ZThn8_N8S19224C7D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19224C7D1Ev,_ZTv0_n20_N8S19224C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19224C7D0Ev,_ZTv0_n20_N8S19224C7D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19224C7D1Ev,_ZTv0_n24_N8S19224C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19224C7D0Ev,_ZTv0_n24_N8S19224C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19224C7[];
static  VTBL_ENTRY _tg__ZTV9S19224C10__8S19224C7[] = {
  0,
  ABISELECT(72,36),
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C2__9S19224C10__8S19224C7[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19224C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C10__8S19224C7[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S19224C10[0]),
};
extern void _ZN9S19224C12D1Ev();
extern void _ZN9S19224C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19224C12__8S19224C7[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C12[0]),
  (VTBL_ENTRY)&_ZN9S19224C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19224C12D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19224C12D1Ev,_ZTv0_n24_N9S19224C12D1Ev)();
extern void ABISELECT(_ZThn72_N9S19224C12D1Ev,_ZThn40_N9S19224C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19224C12D0Ev,_ZTv0_n24_N9S19224C12D0Ev)();
extern void ABISELECT(_ZThn72_N9S19224C12D0Ev,_ZThn40_N9S19224C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19224C13__9S19224C12__8S19224C7[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19224C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19224C12D1Ev,_ZTv0_n24_N9S19224C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19224C12D0Ev,_ZTv0_n24_N9S19224C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C12__8S19224C7[] = {
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19224C12[0]),
};
extern void _ZN8S19224C8D1Ev();
extern void _ZN8S19224C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19224C8__8S19224C7[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C8[0]),
  (VTBL_ENTRY)&_ZN8S19224C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19224C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19224C98S19224C8__8S19224C7[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C58S19224C8__8S19224C7[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C8__8S19224C7[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19224C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C2__8S19224C7[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C2__8S19224C7[] = {
  ABISELECT(-72,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__A1__8S19224C7[] = {
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
extern void _ZN9S19224C13D1Ev();
extern void _ZN9S19224C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19224C13__8S19224C7[] = {
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C13[0]),
  (VTBL_ENTRY)&_ZN9S19224C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19224C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19224C29S19224C13__A1__8S19224C7[] = {
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C29S19224C13__A1__8S19224C7[] = {
  ABISELECT(-72,-36),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C13__8S19224C7[] = {
  ABISELECT(-72,-36),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19224C13[0]),
};
static  VTT_ENTRY vtt_S19224C7[] = {
  {&(_ZTV8S19224C7[9]),  9,45},
  {&(_tg__ZTV9S19224C10__8S19224C7[6]),  6,6},
  {&(_tg__ZTV8S19224C2__9S19224C10__8S19224C7[5]),  5,5},
  {&(_tg__ZTV8S19224C5__9S19224C10__8S19224C7[3]),  3,3},
  {&(_tg__ZTV9S19224C12__8S19224C7[6]),  6,8},
  {&(_tg__ZTV9S19224C13__9S19224C12__8S19224C7[6]),  6,8},
  {&(_tg__ZTV8S19224C5__9S19224C12__8S19224C7[3]),  3,3},
  {&(_ZTV8S19224C7[24]),  24,45},
  {&(_ZTV8S19224C7[29]),  29,45},
  {&(_ZTV8S19224C7[34]),  34,45},
  {&(_ZTV8S19224C7[37]),  37,45},
  {&(_ZTV8S19224C7[17]),  17,45},
  {&(_ZTV8S19224C7[43]),  43,45},
  {&(_tg__ZTV8S19224C8__8S19224C7[4]),  4,6},
  {&(_tg__ZTV8S19224C98S19224C8__8S19224C7[3]),  3,3},
  {&(_tg__ZTV8S19224C58S19224C8__8S19224C7[3]),  3,3},
  {&(_tg__ZTV8S19224C5__8S19224C8__8S19224C7[3]),  3,3},
  {&(_tg__ZTV8S19224C2__8S19224C7[5]),  5,5},
  {&(_tg__ZTV8S19224C5__8S19224C2__8S19224C7[3]),  3,3},
  {&(_tg__ZTV8S19224C5__A1__8S19224C7[3]),  3,3},
  {&(_tg__ZTV9S19224C13__8S19224C7[5]),  5,7},
  {&(_tg__ZTV8S19224C29S19224C13__A1__8S19224C7[5]),  5,5},
  {&(_tg__ZTV8S19224C5__8S19224C29S19224C13__A1__8S19224C7[3]),  3,3},
  {&(_tg__ZTV8S19224C5__9S19224C13__8S19224C7[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19224C7[];
extern  VTBL_ENTRY _ZTV8S19224C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C7[];
static VTBL_ENTRY alt_thunk_names318[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19224C12D0Ev,_ZTv0_n24_N9S19224C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19224C12D0Ev,_ZThn40_N9S19224C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19224C12D1Ev,_ZTv0_n24_N9S19224C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19224C12D1Ev,_ZThn40_N9S19224C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19224C7D0Ev,_ZTv0_n24_N8S19224C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19224C7D0Ev,_ZThn48_N8S19224C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19224C7D1Ev,_ZTv0_n24_N8S19224C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19224C7D1Ev,_ZThn48_N8S19224C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19224C7D0Ev,_ZTv0_n20_N8S19224C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19224C7D0Ev,_ZThn16_N8S19224C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19224C7D1Ev,_ZTv0_n20_N8S19224C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19224C7D1Ev,_ZThn16_N8S19224C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19224C7 = {  "S19224C7", // class name
  bases_S19224C7, 20,
  &(vtc_S19224C7[0]), // expected_vtbl_contents
  &(vtt_S19224C7[0]), // expected_vtt_contents
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI8S19224C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19224C7),45, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19224C7),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names318,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19224C1  : virtual S19224C2 , virtual S4228C23 , virtual S19224C7 , S19224C8 {
  ~S19224C1(); // tgen
  S19224C1(); // tgen
};
//SIG(1 S19224C1) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} VBC6{ m} VBC7{ VBC8{ BC3 BC9{ VBC4 BC3} BC5 vd} VBC2 BC10{ VBC2 Fc:8} VBC11{ m Fi} BC12{ VBC13{ BC11 VBC5 BC2 BC3 vd Fc} vd Fi}} BC8}


S19224C1 ::~S19224C1(){ note_dtor("S19224C1", this);} // tgen
S19224C1 ::S19224C1(){ note_ctor("S19224C1", this);} // tgen

static void Test_S19224C1()
{
  extern Class_Descriptor cd_S19224C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,20)];
    init_test(&cd_S19224C1, buf);
    S19224C1 *dp, &lv = *(dp=new (buf) S19224C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,76), "sizeof(S19224C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19224C1)");
    /*is_ambiguous_... S19224C1::S19224C2 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C2*), ABISELECT(24,12), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C2 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C2*), 0, "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C9*)(S19224C8*), 0, "S19224C1");
    /*is_ambiguous_... S19224C2::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C2*)(S19224C13*), 0, "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C9*)(S19224C8*), 0, "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C5 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C5*), ABISELECT(40,20), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C5 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C5*), ABISELECT(49,25), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C5*)(S19224C8*), ABISELECT(49,25), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C5*)(S19224C8*), ABISELECT(49,25), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C2 */ AMB_check_base_class_offset(lv, (S19224C5*)(S19224C2*), ABISELECT(40,20), "S19224C1");
    check_base_class_offset(lv, (S19224C5*)(S19224C13*), ABISELECT(40,20), "S19224C1");
    check_base_class_offset(lv, (S19224C5*)(S19224C2*)(S19224C13*), ABISELECT(40,20), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C2 */ AMB_check_base_class_offset(lv, (S19224C2*), ABISELECT(24,12), "S19224C1");
    /*is_ambiguous_... S19224C7::S19224C2 */ AMB_check_base_class_offset(lv, (S19224C2*)(S19224C7*), ABISELECT(24,12), "S19224C1");
    check_base_class_offset(lv, (S19224C2*)(S19224C10*)(S19224C7*), ABISELECT(24,12), "S19224C1");
    check_base_class_offset(lv, (S4228C23*), 0, "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C8*), ABISELECT(96,48), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C9*)(S19224C8*), ABISELECT(88,44), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S19224C9*)(S19224C8*), ABISELECT(88,44), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C5*)(S19224C8*), ABISELECT(96,48), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S19224C5*)(S19224C8*), ABISELECT(96,48), "S19224C1");
    check_base_class_offset(lv, (S19224C8*)(S19224C7*), ABISELECT(88,44), "S19224C1");
    check_base_class_offset(lv, (S19224C10*)(S19224C7*), ABISELECT(56,28), "S19224C1");
    /*is_ambiguous_... S19224C7::S3423C8_nt */ AMB_check_base_class_offset(lv, (S3423C8_nt*)(S19224C7*), ABISELECT(108,56), "S19224C1");
    check_base_class_offset(lv, (S3423C8_nt*)(S19224C13*), ABISELECT(128,68), "S19224C1");
    /*is_ambiguous_... S19224C2::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C2*)(S19224C13*), ABISELECT(112,60), "S19224C1");
    check_base_class_offset(lv, (S19224C2*)(S19224C13*), ABISELECT(112,60), "S19224C1");
    /*is_ambiguous_... S19224C13::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C13*), ABISELECT(132,72), "S19224C1");
    check_base_class_offset(lv, (S19224C13*)(S19224C12*)(S19224C7*), ABISELECT(112,60), "S19224C1");
    check_base_class_offset(lv, (S19224C12*)(S19224C7*), ABISELECT(72,36), "S19224C1");
    check_base_class_offset(lv, (S19224C7*), ABISELECT(56,28), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C8*), ABISELECT(8,4), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C9*)(S19224C8*), 0, "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S19224C9*)(S19224C8*), 0, "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C5*)(S19224C8*), ABISELECT(8,4), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S19224C5*)(S19224C8*), ABISELECT(8,4), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S19224C8*), 0, "S19224C1");
    test_class_info(&lv, &cd_S19224C1);
    dp->~S19224C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19224C1(Test_S19224C1, "S19224C1", ABISELECT(136,76));

#else // __cplusplus

extern void _ZN8S19224C1C1Ev();
extern void _ZN8S19224C1D1Ev();
Name_Map name_map_S19224C1[] = {
  NSPAIR(_ZN8S19224C1C1Ev),
  NSPAIR(_ZN8S19224C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
extern Class_Descriptor cd_S19224C2;
extern VTBL_ENTRY _ZTI8S19224C2[];
extern  VTBL_ENTRY _ZTV8S19224C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C2[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C9;
extern VTBL_ENTRY _ZTI8S19224C9[];
extern  VTBL_ENTRY _ZTV8S19224C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
extern Class_Descriptor cd_S19224C8;
extern VTBL_ENTRY _ZTI8S19224C8[];
extern  VTBL_ENTRY _ZTV8S19224C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C8[];
extern Class_Descriptor cd_S19224C10;
extern VTBL_ENTRY _ZTI9S19224C10[];
extern  VTBL_ENTRY _ZTV9S19224C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C10[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C2;
extern VTBL_ENTRY _ZTI8S19224C2[];
extern  VTBL_ENTRY _ZTV8S19224C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C2[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C13;
extern VTBL_ENTRY _ZTI9S19224C13[];
extern  VTBL_ENTRY _ZTV9S19224C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C13[];
extern Class_Descriptor cd_S19224C12;
extern VTBL_ENTRY _ZTI9S19224C12[];
extern  VTBL_ENTRY _ZTV9S19224C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C12[];
extern Class_Descriptor cd_S19224C7;
extern VTBL_ENTRY _ZTI8S19224C7[];
extern  VTBL_ENTRY _ZTV8S19224C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C7[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C9;
extern VTBL_ENTRY _ZTI8S19224C9[];
extern  VTBL_ENTRY _ZTV8S19224C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
extern Class_Descriptor cd_S19224C8;
extern VTBL_ENTRY _ZTI8S19224C8[];
extern  VTBL_ENTRY _ZTV8S19224C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C8[];
static Base_Class bases_S19224C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(49,25), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19224C5,    ABISELECT(40,20), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19224C2,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19224C9,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19224C5,    ABISELECT(96,48), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19224C8,    ABISELECT(88,44), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19224C10,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(108,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3423C8_nt,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19224C2,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(132,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19224C13,    ABISELECT(112,60), //bcp->offset
    54, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19224C12,    ABISELECT(72,36), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19224C7,    ABISELECT(56,28), //bcp->offset
    24, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19224C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19224C5,    ABISELECT(8,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19224C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19224C1[];
extern void _ZN8S19224C1D1Ev();
extern void _ZN8S19224C1D0Ev();
extern void ABISELECT(_ZTv0_n80_N8S19224C1D1Ev,_ZTv0_n40_N8S19224C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S19224C1D1Ev,_ZThn28_N8S19224C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19224C1D0Ev,_ZTv0_n40_N8S19224C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S19224C1D0Ev,_ZThn28_N8S19224C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n80_N8S19224C1D1Ev,_ZTvn8_n40_N8S19224C1D1Ev)();
extern void ABISELECT(_ZTvn16_n80_N8S19224C1D0Ev,_ZTvn8_n40_N8S19224C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19224C1D1Ev,_ZTv0_n20_N8S19224C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S19224C1D1Ev,_ZThn44_N8S19224C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19224C1D0Ev,_ZTv0_n20_N8S19224C1D0Ev)();
extern void ABISELECT(_ZThn88_N8S19224C1D0Ev,_ZThn44_N8S19224C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19224C1D1Ev,_ZTv0_n24_N8S19224C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S19224C1D1Ev,_ZThn60_N8S19224C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19224C1D0Ev,_ZTv0_n24_N8S19224C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S19224C1D0Ev,_ZThn60_N8S19224C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19224C1[] = {
  ABISELECT(112,60),
  ABISELECT(108,56),
  ABISELECT(88,44),
  ABISELECT(56,28),
  0,
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(49,25),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C1[0]),
  (VTBL_ENTRY)&_ZN8S19224C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19224C1D0Ev,
  ABISELECT(41,21),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19224C1[0]),
  ABISELECT(25,13),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19224C1[0]),
  ABISELECT(9,5),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19224C1[0]),
  ABISELECT(-56,-28),
  ABISELECT(56,32),
  ABISELECT(52,28),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19224C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19224C1D1Ev,_ZTv0_n40_N8S19224C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19224C1D0Ev,_ZTv0_n40_N8S19224C1D0Ev),
  ABISELECT(-72,-36),
  ABISELECT(-23,-11),
  ABISELECT(-32,-16),
  ABISELECT(40,24),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S19224C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S19224C1D1Ev,_ZTvn8_n40_N8S19224C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S19224C1D0Ev,_ZTvn8_n40_N8S19224C1D0Ev),
  ABISELECT(-88,-44),
  ABISELECT(-39,-19),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S19224C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19224C1D1Ev,_ZTv0_n20_N8S19224C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19224C1D0Ev,_ZTv0_n20_N8S19224C1D0Ev),
  ABISELECT(-47,-23),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19224C1[0]),
  ABISELECT(-112,-60),
  ABISELECT(-63,-35),
  ABISELECT(-72,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19224C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19224C1D1Ev,_ZTv0_n24_N8S19224C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19224C1D0Ev,_ZTv0_n24_N8S19224C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19224C1[];
extern void _ZN8S19224C8D1Ev();
extern void _ZN8S19224C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19224C8__A__8S19224C1[] = {
  ABISELECT(49,25),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C8[0]),
  (VTBL_ENTRY)&_ZN8S19224C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19224C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19224C98S19224C8__A1__8S19224C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C58S19224C8__A2__8S19224C1[] = {
  ABISELECT(41,21),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C8__A__8S19224C1[] = {
  ABISELECT(41,21),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19224C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C2__8S19224C1[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C2__8S19224C1[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C1[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
extern void _ZN8S19224C7D1Ev();
extern void _ZN8S19224C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19224C7__8S19224C1[] = {
  ABISELECT(56,32),
  ABISELECT(52,28),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  (VTBL_ENTRY)&_ZN8S19224C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19224C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19224C108S19224C7__8S19224C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C2__9S19224C108S19224C7__8S19224C1[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19224C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C108S19224C7__8S19224C1[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19224C10[0]),
};
extern void _ZN9S19224C12D1Ev();
extern void _ZN9S19224C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19224C128S19224C7__8S19224C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-23,-11),
  ABISELECT(-32,-16),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C12[0]),
  (VTBL_ENTRY)&_ZN9S19224C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19224C12D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19224C12D1Ev,_ZTv0_n24_N9S19224C12D1Ev)();
extern void ABISELECT(_ZThn40_N9S19224C12D1Ev,_ZThn24_N9S19224C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19224C12D0Ev,_ZTv0_n24_N9S19224C12D0Ev)();
extern void ABISELECT(_ZThn40_N9S19224C12D0Ev,_ZThn24_N9S19224C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19224C13__9S19224C128S19224C7__8S19224C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-63,-35),
  ABISELECT(-72,-40),
  ABISELECT(-112,-60),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19224C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19224C12D1Ev,_ZTv0_n24_N9S19224C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19224C12D0Ev,_ZTv0_n24_N9S19224C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C128S19224C7__8S19224C1[] = {
  ABISELECT(9,5),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19224C12[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S19224C7D1Ev,_ZTv0_n20_N8S19224C7D1Ev)();
extern void ABISELECT(_ZThn32_N8S19224C7D1Ev,_ZThn16_N8S19224C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19224C7D0Ev,_ZTv0_n20_N8S19224C7D0Ev)();
extern void ABISELECT(_ZThn32_N8S19224C7D0Ev,_ZThn16_N8S19224C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19224C8__8S19224C7__8S19224C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-39,-19),
  ABISELECT(-88,-44),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19224C7D1Ev,_ZTv0_n20_N8S19224C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19224C7D0Ev,_ZTv0_n20_N8S19224C7D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19224C58S19224C8__8S19224C7__8S19224C1[] = {
  ABISELECT(-47,-23),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C2__8S19224C7__8S19224C1[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__A1__8S19224C7__8S19224C1[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
};
extern void ABISELECT(_ZThn16_N8S19224C7D1Ev,_ZThn8_N8S19224C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S19224C7D0Ev,_ZThn8_N8S19224C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19224C12__8S19224C7__8S19224C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-23,-11),
  ABISELECT(-32,-16),
  ABISELECT(40,24),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19224C7D1Ev,_ZThn8_N8S19224C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19224C7D0Ev,_ZThn8_N8S19224C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19224C7D1Ev,_ZTv0_n24_N8S19224C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S19224C7D1Ev,_ZThn32_N8S19224C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19224C7D0Ev,_ZTv0_n24_N8S19224C7D0Ev)();
extern void ABISELECT(_ZThn56_N8S19224C7D0Ev,_ZThn32_N8S19224C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19224C13__8S19224C7__8S19224C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-63,-35),
  ABISELECT(-72,-40),
  ABISELECT(-112,-60),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19224C7D1Ev,_ZTv0_n24_N8S19224C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19224C7D0Ev,_ZTv0_n24_N8S19224C7D0Ev),
};
extern void _ZN8S19224C8D1Ev();
extern void _ZN8S19224C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19224C8__8S19224C1[] = {
  ABISELECT(-39,-19),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C8[0]),
  (VTBL_ENTRY)&_ZN8S19224C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19224C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19224C98S19224C8__8S19224C1[] = {
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C58S19224C8__A1__8S19224C1[] = {
  ABISELECT(-47,-23),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C8__8S19224C1[] = {
  ABISELECT(-47,-23),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19224C8[0]),
};
extern void _ZN9S19224C13D1Ev();
extern void _ZN9S19224C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19224C13__8S19224C1[] = {
  ABISELECT(-63,-35),
  ABISELECT(-72,-40),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C13[0]),
  (VTBL_ENTRY)&_ZN9S19224C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19224C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19224C29S19224C13__A1__8S19224C1[] = {
  ABISELECT(-63,-35),
  ABISELECT(-72,-40),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C29S19224C13__A1__8S19224C1[] = {
  ABISELECT(9,5),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C13__8S19224C1[] = {
  ABISELECT(9,5),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI9S19224C13[0]),
};
static  VTT_ENTRY vtt_S19224C1[] = {
  {&(_ZTV8S19224C1[11]),  11,62},
  {&(_tg__ZTV8S19224C8__A__8S19224C1[4]),  4,6},
  {&(_tg__ZTV8S19224C98S19224C8__A1__8S19224C1[3]),  3,3},
  {&(_tg__ZTV8S19224C58S19224C8__A2__8S19224C1[3]),  3,3},
  {&(_tg__ZTV8S19224C5__8S19224C8__A__8S19224C1[3]),  3,3},
  {&(_ZTV8S19224C1[21]),  21,62},
  {&(_ZTV8S19224C1[24]),  24,62},
  {&(_ZTV8S19224C1[34]),  34,62},
  {&(_ZTV8S19224C1[49]),  49,62},
  {&(_ZTV8S19224C1[54]),  54,62},
  {&(_ZTV8S19224C1[42]),  42,62},
  {&(_ZTV8S19224C1[60]),  60,62},
  {&(_ZTV8S19224C1[16]),  16,62},
  {&(_tg__ZTV8S19224C2__8S19224C1[5]),  5,5},
  {&(_tg__ZTV8S19224C5__8S19224C2__8S19224C1[3]),  3,3},
  {&(_tg__ZTV8S19224C5__8S19224C1[3]),  3,3},
  {&(_tg__ZTV8S19224C7__8S19224C1[9]),  9,11},
  {&(_tg__ZTV9S19224C108S19224C7__8S19224C1[6]),  6,6},
  {&(_tg__ZTV8S19224C2__9S19224C108S19224C7__8S19224C1[5]),  5,5},
  {&(_tg__ZTV8S19224C5__9S19224C108S19224C7__8S19224C1[3]),  3,3},
  {&(_tg__ZTV9S19224C128S19224C7__8S19224C1[6]),  6,8},
  {&(_tg__ZTV9S19224C13__9S19224C128S19224C7__8S19224C1[6]),  6,8},
  {&(_tg__ZTV8S19224C5__9S19224C128S19224C7__8S19224C1[3]),  3,3},
  {&(_tg__ZTV8S19224C8__8S19224C7__8S19224C1[5]),  5,7},
  {&(_tg__ZTV8S19224C58S19224C8__8S19224C7__8S19224C1[3]),  3,3},
  {&(_tg__ZTV8S19224C2__8S19224C7__8S19224C1[5]),  5,5},
  {&(_tg__ZTV8S19224C5__A1__8S19224C7__8S19224C1[3]),  3,3},
  {&(_tg__ZTV9S19224C12__8S19224C7__8S19224C1[6]),  6,8},
  {&(_tg__ZTV9S19224C13__8S19224C7__8S19224C1[6]),  6,8},
  {&(_tg__ZTV8S19224C8__8S19224C1[4]),  4,6},
  {&(_tg__ZTV8S19224C98S19224C8__8S19224C1[3]),  3,3},
  {&(_tg__ZTV8S19224C58S19224C8__A1__8S19224C1[3]),  3,3},
  {&(_tg__ZTV8S19224C5__8S19224C8__8S19224C1[3]),  3,3},
  {&(_tg__ZTV9S19224C13__8S19224C1[5]),  5,7},
  {&(_tg__ZTV8S19224C29S19224C13__A1__8S19224C1[5]),  5,5},
  {&(_tg__ZTV8S19224C5__8S19224C29S19224C13__A1__8S19224C1[3]),  3,3},
  {&(_tg__ZTV8S19224C5__9S19224C13__8S19224C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19224C1[];
extern  VTBL_ENTRY _ZTV8S19224C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C1[];
static VTBL_ENTRY alt_thunk_names319[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19224C7D0Ev,_ZTv0_n24_N8S19224C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19224C7D0Ev,_ZThn32_N8S19224C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19224C7D1Ev,_ZTv0_n24_N8S19224C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19224C7D1Ev,_ZThn32_N8S19224C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19224C7D0Ev,_ZTv0_n20_N8S19224C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19224C7D0Ev,_ZThn16_N8S19224C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19224C7D1Ev,_ZTv0_n20_N8S19224C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19224C7D1Ev,_ZThn16_N8S19224C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19224C12D0Ev,_ZTv0_n24_N9S19224C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19224C12D0Ev,_ZThn24_N9S19224C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19224C12D1Ev,_ZTv0_n24_N9S19224C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19224C12D1Ev,_ZThn24_N9S19224C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19224C1D0Ev,_ZTv0_n24_N8S19224C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19224C1D0Ev,_ZThn60_N8S19224C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19224C1D1Ev,_ZTv0_n24_N8S19224C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19224C1D1Ev,_ZThn60_N8S19224C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19224C1D0Ev,_ZTv0_n20_N8S19224C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19224C1D0Ev,_ZThn44_N8S19224C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19224C1D1Ev,_ZTv0_n20_N8S19224C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19224C1D1Ev,_ZThn44_N8S19224C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19224C1D0Ev,_ZTv0_n40_N8S19224C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19224C1D0Ev,_ZThn28_N8S19224C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19224C1D1Ev,_ZTv0_n40_N8S19224C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19224C1D1Ev,_ZThn28_N8S19224C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19224C1 = {  "S19224C1", // class name
  bases_S19224C1, 28,
  &(vtc_S19224C1[0]), // expected_vtbl_contents
  &(vtt_S19224C1[0]), // expected_vtt_contents
  ABISELECT(136,76), // object size
  NSPAIRA(_ZTI8S19224C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19224C1),62, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19224C1),37, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names319,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21165C4  : virtual S19676C9 {
  virtual  ~S21165C4(); // _ZN8S21165C4D2Ev
  S21165C4(); // tgen
};
//SIG(-1 S21165C4) C1{ VBC2{ vd m Fp Fi Fc FD} vd}


 S21165C4 ::~S21165C4(){ note_dtor("S21165C4", this);}
S21165C4 ::S21165C4(){ note_ctor("S21165C4", this);} // tgen

static void Test_S21165C4()
{
  extern Class_Descriptor cd_S21165C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S21165C4, buf);
    S21165C4 *dp, &lv = *(dp=new (buf) S21165C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S21165C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21165C4)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(16,4), "S21165C4");
    test_class_info(&lv, &cd_S21165C4);
    dp->~S21165C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21165C4(Test_S21165C4, "S21165C4", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S21165C4C1Ev();
extern void _ZN8S21165C4D2Ev();
Name_Map name_map_S21165C4[] = {
  NSPAIR(_ZN8S21165C4C1Ev),
  NSPAIR(_ZN8S21165C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
static Base_Class bases_S21165C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21165C4[];
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21165C4D1Ev,_ZThn4_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S21165C4D0Ev,_ZThn4_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21165C4[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S21165C4[];
static  VTT_ENTRY vtt_S21165C4[] = {
  {&(_ZTV8S21165C4[3]),  3,10},
  {&(_ZTV8S21165C4[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
static VTBL_ENTRY alt_thunk_names320[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21165C4D0Ev,_ZThn4_N8S21165C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21165C4D1Ev,_ZThn4_N8S21165C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21165C4 = {  "S21165C4", // class name
  bases_S21165C4, 1,
  &(vtc_S21165C4[0]), // expected_vtbl_contents
  &(vtt_S21165C4[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S21165C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21165C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21165C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names320,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21165C2  : virtual S19676C9 , S21165C4 {
  void *s21165c2f0[10];
  int s21165c2f1;
  __tsi64 s21165c2f2;
  ~S21165C2(); // tgen
  S21165C2(); // tgen
};
//SIG(-1 S21165C2) C1{ VBC2{ vd m Fp Fi Fc FD} BC3{ VBC2 vd} Fp[10] Fi FL}


S21165C2 ::~S21165C2(){ note_dtor("S21165C2", this);} // tgen
S21165C2 ::S21165C2(){ note_ctor("S21165C2", this);} // tgen

static void Test_S21165C2()
{
  extern Class_Descriptor cd_S21165C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,22)];
    init_test(&cd_S21165C2, buf);
    S21165C2 *dp, &lv = *(dp=new (buf) S21165C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,84), "sizeof(S21165C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21165C2)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(112,56), "S21165C2");
    check_base_class_offset(lv, (S19676C9*)(S21165C4*), ABISELECT(112,56), "S21165C2");
    check_base_class_offset(lv, (S21165C4*), 0, "S21165C2");
    check_field_offset(lv, s21165c2f0, ABISELECT(8,4), "S21165C2.s21165c2f0");
    check_field_offset(lv, s21165c2f1, ABISELECT(88,44), "S21165C2.s21165c2f1");
    check_field_offset(lv, s21165c2f2, ABISELECT(96,48), "S21165C2.s21165c2f2");
    test_class_info(&lv, &cd_S21165C2);
    dp->~S21165C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21165C2(Test_S21165C2, "S21165C2", ABISELECT(160,84));

#else // __cplusplus

extern void _ZN8S21165C2C1Ev();
extern void _ZN8S21165C2D1Ev();
Name_Map name_map_S21165C2[] = {
  NSPAIR(_ZN8S21165C2C1Ev),
  NSPAIR(_ZN8S21165C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
static Base_Class bases_S21165C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(112,56), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21165C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21165C2[];
extern void _ZN8S21165C2D1Ev();
extern void _ZN8S21165C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C2D1Ev,_ZThn56_N8S21165C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C2D0Ev,_ZThn56_N8S21165C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21165C2[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&_ZN8S21165C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C2D0Ev,
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21165C2[];
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C4__8S21165C2[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C4D1Ev,_ZThn56_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C4D0Ev,_ZThn56_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C4__8S21165C2[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
static  VTT_ENTRY vtt_S21165C2[] = {
  {&(_ZTV8S21165C2[3]),  3,10},
  {&(_tg__ZTV8S21165C4__8S21165C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C4__8S21165C2[3]),  3,5},
  {&(_ZTV8S21165C2[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21165C2[];
extern  VTBL_ENTRY _ZTV8S21165C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C2[];
static VTBL_ENTRY alt_thunk_names321[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C4D0Ev,_ZThn56_N8S21165C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C4D1Ev,_ZThn56_N8S21165C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C2D0Ev,_ZThn56_N8S21165C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C2D1Ev,_ZThn56_N8S21165C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21165C2 = {  "S21165C2", // class name
  bases_S21165C2, 2,
  &(vtc_S21165C2[0]), // expected_vtbl_contents
  &(vtt_S21165C2[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI8S21165C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21165C2),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21165C2),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names321,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21165C10  : virtual S21165C2 , S21165C4 {
  int s21165c10f0;
  virtual  ~S21165C10(); // _ZN9S21165C10D2Ev
  S21165C10(); // tgen
};
//SIG(-1 S21165C10) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} BC4 vd Fi}


 S21165C10 ::~S21165C10(){ note_dtor("S21165C10", this);}
S21165C10 ::S21165C10(){ note_ctor("S21165C10", this);} // tgen

static void Test_S21165C10()
{
  extern Class_Descriptor cd_S21165C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,24)];
    init_test(&cd_S21165C10, buf);
    S21165C10 *dp, &lv = *(dp=new (buf) S21165C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S21165C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21165C10)");
    check_base_class_offset(lv, (S19676C9*)(S21165C2*), ABISELECT(128,64), "S21165C10");
    check_base_class_offset(lv, (S19676C9*)(S21165C4*)(S21165C2*), ABISELECT(128,64), "S21165C10");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C4*), ABISELECT(128,64), "S21165C10");
    check_base_class_offset(lv, (S21165C4*)(S21165C2*), ABISELECT(16,8), "S21165C10");
    check_base_class_offset(lv, (S21165C2*), ABISELECT(16,8), "S21165C10");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*), 0, "S21165C10");
    check_field_offset(lv, s21165c10f0, ABISELECT(8,4), "S21165C10.s21165c10f0");
    test_class_info(&lv, &cd_S21165C10);
    dp->~S21165C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21165C10(Test_S21165C10, "S21165C10", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN9S21165C10C1Ev();
extern void _ZN9S21165C10D2Ev();
Name_Map name_map_S21165C10[] = {
  NSPAIR(_ZN9S21165C10C1Ev),
  NSPAIR(_ZN9S21165C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C2;
extern VTBL_ENTRY _ZTI8S21165C2[];
extern  VTBL_ENTRY _ZTV8S21165C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C2[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
static Base_Class bases_S21165C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(128,64), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21165C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21165C2,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21165C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21165C10[];
extern void _ZN9S21165C10D1Ev();
extern void _ZN9S21165C10D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S21165C10D1Ev,_ZThn8_N9S21165C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S21165C10D0Ev,_ZThn8_N9S21165C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S21165C10D1Ev,_ZThn64_N9S21165C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S21165C10D0Ev,_ZThn64_N9S21165C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21165C10[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&_ZN9S21165C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21165C10D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S21165C10[];
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C4__A1__9S21165C10[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S21165C4D1Ev,_ZThn64_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S21165C4D0Ev,_ZThn64_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C4__A1__9S21165C10[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void _ZN8S21165C2D1Ev();
extern void _ZN8S21165C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C2__9S21165C10[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&_ZN8S21165C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C2D0Ev,
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C48S21165C2__9S21165C10[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C4D1Ev,_ZThn56_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C4D0Ev,_ZThn56_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C48S21165C2__9S21165C10[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C2D1Ev,_ZThn56_N8S21165C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C2D0Ev,_ZThn56_N8S21165C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C2__9S21165C10[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev),
};
static  VTT_ENTRY vtt_S21165C10[] = {
  {&(_ZTV9S21165C10[4]),  4,17},
  {&(_tg__ZTV8S21165C4__A1__9S21165C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C4__A1__9S21165C10[3]),  3,5},
  {&(_ZTV9S21165C10[10]),  10,17},
  {&(_ZTV9S21165C10[15]),  15,17},
  {&(_tg__ZTV8S21165C2__9S21165C10[3]),  3,5},
  {&(_tg__ZTV8S21165C48S21165C2__9S21165C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C48S21165C2__9S21165C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C2__9S21165C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21165C10[];
extern  VTBL_ENTRY _ZTV9S21165C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21165C10[];
static VTBL_ENTRY alt_thunk_names322[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C2D0Ev,_ZThn56_N8S21165C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C2D1Ev,_ZThn56_N8S21165C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C4D0Ev,_ZThn56_N8S21165C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21165C4D0Ev,_ZThn64_N8S21165C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C4D1Ev,_ZThn56_N8S21165C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21165C4D1Ev,_ZThn64_N8S21165C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21165C10D0Ev,_ZThn64_N9S21165C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21165C10D1Ev,_ZThn64_N9S21165C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21165C10D0Ev,_ZThn8_N9S21165C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21165C10D1Ev,_ZThn8_N9S21165C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21165C10 = {  "S21165C10", // class name
  bases_S21165C10, 4,
  &(vtc_S21165C10[0]), // expected_vtbl_contents
  &(vtt_S21165C10[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI9S21165C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21165C10),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21165C10),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names322,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21165C9  : S19676C9 , virtual S21165C4 , virtual S21165C2 , S21165C10 {
  int s21165c9f0;
  virtual  ~S21165C9(); // _ZN8S21165C9D2Ev
  S21165C9(); // tgen
};
//SIG(-1 S21165C9) C1{ BC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 vd} VBC4{ VBC2 BC3 Fp[10] Fi FL} BC5{ VBC4 BC3 vd Fi} vd Fi}


 S21165C9 ::~S21165C9(){ note_dtor("S21165C9", this);}
S21165C9 ::S21165C9(){ note_ctor("S21165C9", this);} // tgen

static void Test_S21165C9()
{
  extern Class_Descriptor cd_S21165C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,33)];
    init_test(&cd_S21165C9, buf);
    S21165C9 *dp, &lv = *(dp=new (buf) S21165C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,128), "sizeof(S21165C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21165C9)");
    /*is_ambiguous_... S21165C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), 0, "S21165C9");
    /*is_ambiguous_... S21165C9::S21165C4 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C4*), ABISELECT(80,44), "S21165C9");
    check_base_class_offset(lv, (S19676C9*)(S21165C2*), ABISELECT(80,44), "S21165C9");
    check_base_class_offset(lv, (S19676C9*)(S21165C4*)(S21165C2*), ABISELECT(80,44), "S21165C9");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C4*)(S21165C10*), ABISELECT(80,44), "S21165C9");
    /*is_ambiguous_... S21165C9::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*), ABISELECT(64,40), "S21165C9");
    check_base_class_offset(lv, (S21165C4*)(S21165C2*), ABISELECT(128,72), "S21165C9");
    check_base_class_offset(lv, (S21165C2*), ABISELECT(128,72), "S21165C9");
    check_base_class_offset(lv, (S21165C2*)(S21165C10*), ABISELECT(128,72), "S21165C9");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*)(S21165C10*), ABISELECT(48,28), "S21165C9");
    check_base_class_offset(lv, (S21165C10*), ABISELECT(48,28), "S21165C9");
    check_field_offset(lv, s21165c9f0, ABISELECT(60,36), "S21165C9.s21165c9f0");
    test_class_info(&lv, &cd_S21165C9);
    dp->~S21165C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21165C9(Test_S21165C9, "S21165C9", ABISELECT(240,128));

#else // __cplusplus

extern void _ZN8S21165C9C1Ev();
extern void _ZN8S21165C9D2Ev();
Name_Map name_map_S21165C9[] = {
  NSPAIR(_ZN8S21165C9C1Ev),
  NSPAIR(_ZN8S21165C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C2;
extern VTBL_ENTRY _ZTI8S21165C2[];
extern  VTBL_ENTRY _ZTV8S21165C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C2[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C10;
extern VTBL_ENTRY _ZTI9S21165C10[];
extern  VTBL_ENTRY _ZTV9S21165C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21165C10[];
static Base_Class bases_S21165C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(80,44), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21165C4,    ABISELECT(64,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21165C4,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21165C2,    ABISELECT(128,72), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21165C4,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21165C10,    ABISELECT(48,28), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21165C9[];
extern void _ZN8S21165C9D1Ev();
extern void _ZN8S21165C9D0Ev();
extern void ABISELECT(_ZThn48_N8S21165C9D1Ev,_ZThn28_N8S21165C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S21165C9D0Ev,_ZThn28_N8S21165C9D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S21165C9D1Ev,_ZThn40_N8S21165C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S21165C9D0Ev,_ZThn40_N8S21165C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C9D1Ev,_ZTv0_n12_N8S21165C9D1Ev)();
extern void ABISELECT(_ZThn80_N8S21165C9D1Ev,_ZThn44_N8S21165C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C9D0Ev,_ZTv0_n12_N8S21165C9D0Ev)();
extern void ABISELECT(_ZThn80_N8S21165C9D0Ev,_ZThn44_N8S21165C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S21165C9D1Ev,_ZThn72_N8S21165C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S21165C9D0Ev,_ZThn72_N8S21165C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21165C9[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&_ZN8S21165C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C9D0Ev,
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21165C9D1Ev,_ZThn28_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21165C9D0Ev,_ZThn28_N8S21165C9D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(16,4),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C9D1Ev,_ZTv0_n12_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C9D0Ev,_ZTv0_n12_N8S21165C9D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S21165C9[];
extern void _ZN9S21165C10D1Ev();
extern void _ZN9S21165C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21165C10__8S21165C9[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&_ZN9S21165C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21165C10D0Ev,
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C49S21165C10__A2__8S21165C9[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S21165C4D1Ev,_ZThn16_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S21165C4D0Ev,_ZThn16_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C49S21165C10__A2__8S21165C9[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S21165C10D1Ev,_ZThn44_N9S21165C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S21165C10D0Ev,_ZThn44_N9S21165C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C2__9S21165C10__8S21165C9[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev)();
extern void ABISELECT(_ZThn32_N9S21165C10D1Ev,_ZThn16_N9S21165C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev)();
extern void ABISELECT(_ZThn32_N9S21165C10D0Ev,_ZThn16_N9S21165C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S21165C10__8S21165C9[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev),
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C4__8S21165C9[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21165C4D1Ev,_ZThn4_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S21165C4D0Ev,_ZThn4_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C4__8S21165C9[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void _ZN8S21165C2D1Ev();
extern void _ZN8S21165C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C9[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&_ZN8S21165C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C2D0Ev,
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C48S21165C2__A1__8S21165C9[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C48S21165C2__A1__8S21165C9[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C2__8S21165C9[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev),
};
static  VTT_ENTRY vtt_S21165C9[] = {
  {&(_ZTV8S21165C9[5]),  5,30},
  {&(_tg__ZTV9S21165C10__8S21165C9[4]),  4,6},
  {&(_tg__ZTV8S21165C49S21165C10__A2__8S21165C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C49S21165C10__A2__8S21165C9[3]),  3,5},
  {&(_tg__ZTV8S21165C2__9S21165C10__8S21165C9[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S21165C10__8S21165C9[3]),  3,5},
  {&(_ZTV8S21165C9[17]),  17,30},
  {&(_ZTV8S21165C9[22]),  22,30},
  {&(_ZTV8S21165C9[28]),  28,30},
  {&(_ZTV8S21165C9[11]),  11,30},
  {&(_tg__ZTV8S21165C4__8S21165C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C4__8S21165C9[3]),  3,5},
  {&(_tg__ZTV8S21165C2__8S21165C9[3]),  3,5},
  {&(_tg__ZTV8S21165C48S21165C2__A1__8S21165C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C48S21165C2__A1__8S21165C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C2__8S21165C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21165C9[];
extern  VTBL_ENTRY _ZTV8S21165C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C9[];
static VTBL_ENTRY alt_thunk_names323[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21165C10D0Ev,_ZThn16_N9S21165C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21165C10D1Ev,_ZThn16_N9S21165C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21165C10D0Ev,_ZThn44_N9S21165C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21165C10D1Ev,_ZThn44_N9S21165C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21165C4D0Ev,_ZThn4_N8S21165C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21165C4D0Ev,_ZThn16_N8S21165C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21165C4D1Ev,_ZThn4_N8S21165C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21165C4D1Ev,_ZThn16_N8S21165C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C9D0Ev,_ZTv0_n12_N8S21165C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21165C9D0Ev,_ZThn44_N8S21165C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C9D1Ev,_ZTv0_n12_N8S21165C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21165C9D1Ev,_ZThn44_N8S21165C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21165C9D0Ev,_ZThn72_N8S21165C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21165C9D0Ev,_ZThn40_N8S21165C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21165C9D1Ev,_ZThn72_N8S21165C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21165C9D1Ev,_ZThn40_N8S21165C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21165C9 = {  "S21165C9", // class name
  bases_S21165C9, 7,
  &(vtc_S21165C9[0]), // expected_vtbl_contents
  &(vtt_S21165C9[0]), // expected_vtt_contents
  ABISELECT(240,128), // object size
  NSPAIRA(_ZTI8S21165C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21165C9),30, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21165C9),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names323,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21165C8  : virtual S21165C4 , virtual S21165C9 , virtual S19676C2 {
  int s21165c8f0;
  virtual  ~S21165C8(); // _ZN8S21165C8D2Ev
  S21165C8(); // tgen
};
//SIG(-1 S21165C8) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ BC3 VBC2 VBC5{ VBC3 BC2 Fp[10] Fi FL} BC6{ VBC5 BC2 vd Fi} vd Fi} VBC7{ m FC8{} Fi[3]} vd Fi}


 S21165C8 ::~S21165C8(){ note_dtor("S21165C8", this);}
S21165C8 ::S21165C8(){ note_ctor("S21165C8", this);} // tgen

static void Test_S21165C8()
{
  extern Class_Descriptor cd_S21165C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,38)];
    init_test(&cd_S21165C8, buf);
    S21165C8 *dp, &lv = *(dp=new (buf) S21165C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,148), "sizeof(S21165C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21165C8)");
    /*is_ambiguous_... S21165C8::S21165C4 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C4*), ABISELECT(16,8), "S21165C8");
    check_base_class_offset(lv, (S19676C9*)(S21165C2*), ABISELECT(16,8), "S21165C8");
    check_base_class_offset(lv, (S19676C9*)(S21165C4*)(S21165C2*), ABISELECT(16,8), "S21165C8");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C4*)(S21165C10*)(S21165C9*), ABISELECT(16,8), "S21165C8");
    /*is_ambiguous_... S21165C8::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*), 0, "S21165C8");
    /*is_ambiguous_... S21165C9::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*)(S21165C9*), 0, "S21165C8");
    /*is_ambiguous_... S21165C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C9*), ABISELECT(64,36), "S21165C8");
    check_base_class_offset(lv, (S21165C4*)(S21165C2*), ABISELECT(128,76), "S21165C8");
    check_base_class_offset(lv, (S21165C2*)(S21165C9*), ABISELECT(128,76), "S21165C8");
    check_base_class_offset(lv, (S21165C2*)(S21165C10*)(S21165C9*), ABISELECT(128,76), "S21165C8");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*)(S21165C10*)(S21165C9*), ABISELECT(112,64), "S21165C8");
    check_base_class_offset(lv, (S21165C10*)(S21165C9*), ABISELECT(112,64), "S21165C8");
    check_base_class_offset(lv, (S21165C9*), ABISELECT(64,36), "S21165C8");
    check_base_class_offset(lv, (S19676C2*), ABISELECT(232,132), "S21165C8");
    check_field_offset(lv, s21165c8f0, ABISELECT(8,4), "S21165C8.s21165c8f0");
    test_class_info(&lv, &cd_S21165C8);
    dp->~S21165C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21165C8(Test_S21165C8, "S21165C8", ABISELECT(256,148));

#else // __cplusplus

extern void _ZN8S21165C8C1Ev();
extern void _ZN8S21165C8D2Ev();
Name_Map name_map_S21165C8[] = {
  NSPAIR(_ZN8S21165C8C1Ev),
  NSPAIR(_ZN8S21165C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C2;
extern VTBL_ENTRY _ZTI8S21165C2[];
extern  VTBL_ENTRY _ZTV8S21165C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C2[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C10;
extern VTBL_ENTRY _ZTI9S21165C10[];
extern  VTBL_ENTRY _ZTV9S21165C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21165C10[];
extern Class_Descriptor cd_S21165C9;
extern VTBL_ENTRY _ZTI8S21165C9[];
extern  VTBL_ENTRY _ZTV8S21165C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C9[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
static Base_Class bases_S21165C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21165C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21165C4,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21165C2,    ABISELECT(128,76), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21165C4,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21165C10,    ABISELECT(112,64), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21165C9,    ABISELECT(64,36), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    ABISELECT(232,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21165C8[];
extern void ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev)();
extern void _ZN8S21165C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev)();
extern void _ZN8S21165C8D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C8D1Ev,_ZTv0_n12_N8S21165C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S21165C8D1Ev,_ZThn8_N8S21165C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C8D0Ev,_ZTv0_n12_N8S21165C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S21165C8D0Ev,_ZThn8_N8S21165C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21165C8D1Ev,_ZTv0_n24_N8S21165C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S21165C8D1Ev,_ZThn36_N8S21165C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21165C8D0Ev,_ZTv0_n24_N8S21165C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S21165C8D0Ev,_ZThn36_N8S21165C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S21165C8D1Ev,_ZTvn28_n24_N8S21165C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S21165C8D0Ev,_ZTvn28_n24_N8S21165C8D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S21165C8D1Ev,_ZThn76_N8S21165C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S21165C8D0Ev,_ZThn76_N8S21165C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21165C8[] = {
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(64,36),
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C8D1Ev,_ZTv0_n12_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C8D0Ev,_ZTv0_n12_N8S21165C8D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C8D1Ev,_ZTv0_n24_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C8D0Ev,_ZTv0_n24_N8S21165C8D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C8D1Ev,_ZTvn28_n24_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C8D0Ev,_ZTvn28_n24_N8S21165C8D0Ev),
  ABISELECT(-128,-76),
  ABISELECT(-112,-68),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S21165C8[];
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C4__8S21165C8[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21165C4D1Ev,_ZThn8_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S21165C4D0Ev,_ZThn8_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C4__8S21165C8[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void _ZN8S21165C9D1Ev();
extern void _ZN8S21165C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C9__8S21165C8[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&_ZN8S21165C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C9D0Ev,
};
extern void _ZN9S21165C10D1Ev();
extern void _ZN9S21165C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21165C108S21165C9__8S21165C8[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&_ZN9S21165C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21165C10D0Ev,
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C49S21165C108S21165C9__A2__8S21165C8[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C49S21165C108S21165C9__A2__8S21165C8[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S21165C10D1Ev,_ZThn12_N9S21165C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S21165C10D0Ev,_ZThn12_N9S21165C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C2__9S21165C108S21165C9__8S21165C8[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S21165C108S21165C9__8S21165C8[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21165C4__8S21165C9__8S21165C8[] = {
  ABISELECT(64,36),
  ABISELECT(16,8),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C9D1Ev,_ZTv0_n12_N8S21165C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C9D0Ev,_ZTv0_n12_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S21165C9__8S21165C8[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C9D1Ev,_ZTv0_n12_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C9D0Ev,_ZTv0_n12_N8S21165C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S21165C9D1Ev,_ZThn40_N8S21165C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S21165C9D0Ev,_ZThn40_N8S21165C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C9__8S21165C8[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev),
};
extern void ABISELECT(_ZThn48_N8S21165C9D1Ev,_ZThn28_N8S21165C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S21165C9D0Ev,_ZThn28_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21165C10__8S21165C9__8S21165C8[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21165C9D1Ev,_ZThn28_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21165C9D0Ev,_ZThn28_N8S21165C9D0Ev),
};
extern void _ZN8S21165C2D1Ev();
extern void _ZN8S21165C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C8[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&_ZN8S21165C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C2D0Ev,
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C48S21165C2__A1__8S21165C8[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C48S21165C2__A1__8S21165C8[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C2__8S21165C8[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev),
};
static  VTT_ENTRY vtt_S21165C8[] = {
  {&(_ZTV8S21165C8[8]),  8,35},
  {&(_ZTV8S21165C8[8]),  8,35},
  {&(_ZTV8S21165C8[13]),  13,35},
  {&(_ZTV8S21165C8[21]),  21,35},
  {&(_ZTV8S21165C8[33]),  33,35},
  {&(_ZTV8S21165C8[27]),  27,35},
  {&(_tg__ZTV8S21165C4__8S21165C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C4__8S21165C8[3]),  3,5},
  {&(_tg__ZTV8S21165C9__8S21165C8[5]),  5,7},
  {&(_tg__ZTV9S21165C108S21165C9__8S21165C8[4]),  4,6},
  {&(_tg__ZTV8S21165C49S21165C108S21165C9__A2__8S21165C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C49S21165C108S21165C9__A2__8S21165C8[3]),  3,5},
  {&(_tg__ZTV8S21165C2__9S21165C108S21165C9__8S21165C8[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S21165C108S21165C9__8S21165C8[3]),  3,5},
  {&(_tg__ZTV8S21165C4__8S21165C9__8S21165C8[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S21165C9__8S21165C8[3]),  3,5},
  {&(_tg__ZTV8S21165C2__8S21165C9__8S21165C8[4]),  4,6},
  {&(_tg__ZTV9S21165C10__8S21165C9__8S21165C8[4]),  4,6},
  {&(_tg__ZTV8S21165C2__8S21165C8[3]),  3,5},
  {&(_tg__ZTV8S21165C48S21165C2__A1__8S21165C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C48S21165C2__A1__8S21165C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C2__8S21165C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21165C8[];
extern  VTBL_ENTRY _ZTV8S21165C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C8[];
static VTBL_ENTRY alt_thunk_names324[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21165C9D0Ev,_ZThn40_N8S21165C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21165C9D1Ev,_ZThn40_N8S21165C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21165C10D0Ev,_ZThn12_N9S21165C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21165C10D1Ev,_ZThn12_N9S21165C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21165C4D0Ev,_ZThn8_N8S21165C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21165C4D1Ev,_ZThn8_N8S21165C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C8D0Ev,_ZTv0_n24_N8S21165C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21165C8D0Ev,_ZThn36_N8S21165C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C8D1Ev,_ZTv0_n24_N8S21165C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21165C8D1Ev,_ZThn36_N8S21165C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C8D0Ev,_ZTv0_n12_N8S21165C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21165C8D0Ev,_ZThn8_N8S21165C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C8D1Ev,_ZTv0_n12_N8S21165C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21165C8D1Ev,_ZThn8_N8S21165C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21165C8D0Ev,_ZThn76_N8S21165C8D0Ev),
  (VTBL_ENTRY)_ZN8S21165C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21165C8D1Ev,_ZThn76_N8S21165C8D1Ev),
  (VTBL_ENTRY)_ZN8S21165C8D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21165C8 = {  "S21165C8", // class name
  bases_S21165C8, 9,
  &(vtc_S21165C8[0]), // expected_vtbl_contents
  &(vtt_S21165C8[0]), // expected_vtt_contents
  ABISELECT(256,148), // object size
  NSPAIRA(_ZTI8S21165C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21165C8),35, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21165C8),22, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names324,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21165C5  : S19676C2 , S21165C8 {
  ::S21165C4 s21165c5f0;
  int s21165c5f1;
  ~S21165C5(); // tgen
  S21165C5(); // tgen
};
//SIG(-1 S21165C5) C1{ BC2{ m FC3{} Fi[3]} BC4{ VBC5{ VBC6{ vd m Fp Fi Fc FD} vd} VBC7{ BC6 VBC5 VBC8{ VBC6 BC5 Fp[10] Fi FL} BC9{ VBC8 BC5 vd Fi} vd Fi} VBC2 vd Fi} FC5 Fi}


S21165C5 ::~S21165C5(){ note_dtor("S21165C5", this);} // tgen
S21165C5 ::S21165C5(){ note_ctor("S21165C5", this);} // tgen

static void Test_S21165C5()
{
  extern Class_Descriptor cd_S21165C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,51)];
    init_test(&cd_S21165C5, buf);
    S21165C5 *dp, &lv = *(dp=new (buf) S21165C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,200), "sizeof(S21165C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21165C5)");
    /*is_ambiguous_... S21165C5::S19676C2 */ AMB_check_base_class_offset(lv, (S19676C2*), ABISELECT(12,8), "S21165C5");
    /*is_ambiguous_... S21165C5::S21165C4 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C4*), ABISELECT(112,60), "S21165C5");
    check_base_class_offset(lv, (S19676C9*)(S21165C2*), ABISELECT(112,60), "S21165C5");
    check_base_class_offset(lv, (S19676C9*)(S21165C4*)(S21165C2*), ABISELECT(112,60), "S21165C5");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C4*)(S21165C10*)(S21165C9*), ABISELECT(112,60), "S21165C5");
    /*is_ambiguous_... S21165C8::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*)(S21165C8*), 0, "S21165C5");
    /*is_ambiguous_... S21165C9::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*)(S21165C9*), 0, "S21165C5");
    /*is_ambiguous_... S21165C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C9*), ABISELECT(160,88), "S21165C5");
    check_base_class_offset(lv, (S21165C4*)(S21165C2*), ABISELECT(224,128), "S21165C5");
    check_base_class_offset(lv, (S21165C2*)(S21165C9*), ABISELECT(224,128), "S21165C5");
    check_base_class_offset(lv, (S21165C2*)(S21165C10*)(S21165C9*), ABISELECT(224,128), "S21165C5");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*)(S21165C10*)(S21165C9*), ABISELECT(208,116), "S21165C5");
    check_base_class_offset(lv, (S21165C10*)(S21165C9*), ABISELECT(208,116), "S21165C5");
    check_base_class_offset(lv, (S21165C9*)(S21165C8*), ABISELECT(160,88), "S21165C5");
    check_base_class_offset(lv, (S19676C2*)(S21165C8*), ABISELECT(328,184), "S21165C5");
    check_base_class_offset(lv, (S21165C8*), 0, "S21165C5");
    check_field_offset(lv, s21165c5f0, ABISELECT(32,24), "S21165C5.s21165c5f0");
    check_field_offset(lv, s21165c5f1, ABISELECT(96,56), "S21165C5.s21165c5f1");
    test_class_info(&lv, &cd_S21165C5);
    dp->~S21165C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21165C5(Test_S21165C5, "S21165C5", ABISELECT(352,200));

#else // __cplusplus

extern void _ZN8S21165C5C1Ev();
extern void _ZN8S21165C5D1Ev();
Name_Map name_map_S21165C5[] = {
  NSPAIR(_ZN8S21165C5C1Ev),
  NSPAIR(_ZN8S21165C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C2;
extern VTBL_ENTRY _ZTI8S21165C2[];
extern  VTBL_ENTRY _ZTV8S21165C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C2[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C10;
extern VTBL_ENTRY _ZTI9S21165C10[];
extern  VTBL_ENTRY _ZTV9S21165C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21165C10[];
extern Class_Descriptor cd_S21165C9;
extern VTBL_ENTRY _ZTI8S21165C9[];
extern  VTBL_ENTRY _ZTV8S21165C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C9[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S21165C8;
extern VTBL_ENTRY _ZTI8S21165C8[];
extern  VTBL_ENTRY _ZTV8S21165C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C8[];
static Base_Class bases_S21165C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C2,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(112,60), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21165C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19676C9,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21165C4,    ABISELECT(224,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21165C2,    ABISELECT(224,128), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21165C4,    ABISELECT(208,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21165C10,    ABISELECT(208,116), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21165C9,    ABISELECT(160,88), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(328,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21165C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21165C5[];
extern void ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev)();
extern void _ZN8S21165C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev)();
extern void _ZN8S21165C5D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C5D1Ev,_ZTv0_n12_N8S21165C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C5D1Ev,_ZThn60_N8S21165C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C5D0Ev,_ZTv0_n12_N8S21165C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C5D0Ev,_ZThn60_N8S21165C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21165C5D1Ev,_ZTv0_n24_N8S21165C5D1Ev)();
extern void ABISELECT(_ZThn160_N8S21165C5D1Ev,_ZThn88_N8S21165C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21165C5D0Ev,_ZTv0_n24_N8S21165C5D0Ev)();
extern void ABISELECT(_ZThn160_N8S21165C5D0Ev,_ZThn88_N8S21165C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S21165C5D1Ev,_ZTvn28_n24_N8S21165C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S21165C5D0Ev,_ZTvn28_n24_N8S21165C5D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev)();
extern void ABISELECT(_ZThn224_N8S21165C5D1Ev,_ZThn128_N8S21165C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev)();
extern void ABISELECT(_ZThn224_N8S21165C5D0Ev,_ZThn128_N8S21165C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21165C5[] = {
  ABISELECT(328,184),
  ABISELECT(224,128),
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C5D1Ev,_ZTv0_n12_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C5D0Ev,_ZTv0_n12_N8S21165C5D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C5D1Ev,_ZTv0_n24_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C5D0Ev,_ZTv0_n24_N8S21165C5D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C5D1Ev,_ZTvn28_n24_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C5D0Ev,_ZTvn28_n24_N8S21165C5D0Ev),
  ABISELECT(-224,-128),
  ABISELECT(-112,-68),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S21165C5[];
extern void ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev)();
extern void _ZN8S21165C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev)();
extern void _ZN8S21165C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C8__8S21165C5[] = {
  ABISELECT(328,184),
  ABISELECT(224,128),
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C8D1Ev,_ZTv0_n12_N8S21165C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C8D1Ev,_ZThn60_N8S21165C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C8D0Ev,_ZTv0_n12_N8S21165C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C8D0Ev,_ZThn60_N8S21165C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C8__8S21165C5[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C8D1Ev,_ZTv0_n12_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C8D0Ev,_ZTv0_n12_N8S21165C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21165C8D1Ev,_ZTv0_n24_N8S21165C8D1Ev)();
extern void ABISELECT(_ZThn160_N8S21165C8D1Ev,_ZThn88_N8S21165C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21165C8D0Ev,_ZTv0_n24_N8S21165C8D0Ev)();
extern void ABISELECT(_ZThn160_N8S21165C8D0Ev,_ZThn88_N8S21165C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C9__8S21165C8__8S21165C5[] = {
  ABISELECT(-160,-88),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C8D1Ev,_ZTv0_n24_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C8D0Ev,_ZTv0_n24_N8S21165C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev)();
extern void ABISELECT(_ZThn224_N8S21165C8D1Ev,_ZThn128_N8S21165C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev)();
extern void ABISELECT(_ZThn224_N8S21165C8D0Ev,_ZThn128_N8S21165C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C8__8S21165C5[] = {
  ABISELECT(-224,-128),
  ABISELECT(-112,-68),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S21165C8D1Ev,_ZTvn28_n24_N8S21165C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S21165C8D0Ev,_ZTvn28_n24_N8S21165C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21165C108S21165C9__8S21165C8__8S21165C5[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C8D1Ev,_ZTvn28_n24_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C8D0Ev,_ZTvn28_n24_N8S21165C8D0Ev),
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C4__8S21165C5[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C4D1Ev,_ZThn60_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C4D0Ev,_ZThn60_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C4__8S21165C5[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void _ZN8S21165C9D1Ev();
extern void _ZN8S21165C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C9__8S21165C5[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&_ZN8S21165C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C9D0Ev,
};
extern void _ZN9S21165C10D1Ev();
extern void _ZN9S21165C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21165C108S21165C9__8S21165C5[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&_ZN9S21165C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21165C10D0Ev,
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C49S21165C108S21165C9__A2__8S21165C5[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C49S21165C108S21165C9__A2__8S21165C5[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S21165C10D1Ev,_ZThn12_N9S21165C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S21165C10D0Ev,_ZThn12_N9S21165C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C2__9S21165C108S21165C9__8S21165C5[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S21165C108S21165C9__8S21165C5[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21165C4__8S21165C9__8S21165C5[] = {
  ABISELECT(160,88),
  ABISELECT(112,60),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C9D1Ev,_ZTv0_n12_N8S21165C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C9D0Ev,_ZTv0_n12_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S21165C9__8S21165C5[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C9D1Ev,_ZTv0_n12_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C9D0Ev,_ZTv0_n12_N8S21165C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S21165C9D1Ev,_ZThn40_N8S21165C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S21165C9D0Ev,_ZThn40_N8S21165C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C9__8S21165C5[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev),
};
extern void ABISELECT(_ZThn48_N8S21165C9D1Ev,_ZThn28_N8S21165C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S21165C9D0Ev,_ZThn28_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21165C10__8S21165C9__8S21165C5[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21165C9D1Ev,_ZThn28_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21165C9D0Ev,_ZThn28_N8S21165C9D0Ev),
};
extern void _ZN8S21165C2D1Ev();
extern void _ZN8S21165C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C5[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&_ZN8S21165C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C2D0Ev,
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C48S21165C2__A1__8S21165C5[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C48S21165C2__A1__8S21165C5[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C2__8S21165C5[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev),
};
static  VTT_ENTRY vtt_S21165C5[] = {
  {&(_ZTV8S21165C5[8]),  8,35},
  {&(_tg__ZTV8S21165C8__8S21165C5[8]),  8,10},
  {&(_tg__ZTV8S21165C8__8S21165C5[8]),  8,10},
  {&(_tg__ZTV8S19676C9__8S21165C8__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S21165C9__8S21165C8__8S21165C5[6]),  6,8},
  {&(_tg__ZTV8S21165C2__8S21165C8__8S21165C5[4]),  4,6},
  {&(_tg__ZTV9S21165C108S21165C9__8S21165C8__8S21165C5[4]),  4,6},
  {&(_ZTV8S21165C5[8]),  8,35},
  {&(_ZTV8S21165C5[13]),  13,35},
  {&(_ZTV8S21165C5[21]),  21,35},
  {&(_ZTV8S21165C5[33]),  33,35},
  {&(_ZTV8S21165C5[27]),  27,35},
  {&(_tg__ZTV8S21165C4__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C4__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S21165C9__8S21165C5[5]),  5,7},
  {&(_tg__ZTV9S21165C108S21165C9__8S21165C5[4]),  4,6},
  {&(_tg__ZTV8S21165C49S21165C108S21165C9__A2__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C49S21165C108S21165C9__A2__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S21165C2__9S21165C108S21165C9__8S21165C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S21165C108S21165C9__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S21165C4__8S21165C9__8S21165C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S21165C9__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S21165C2__8S21165C9__8S21165C5[4]),  4,6},
  {&(_tg__ZTV9S21165C10__8S21165C9__8S21165C5[4]),  4,6},
  {&(_tg__ZTV8S21165C2__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S21165C48S21165C2__A1__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C48S21165C2__A1__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C2__8S21165C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21165C5[];
extern  VTBL_ENTRY _ZTV8S21165C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C5[];
static VTBL_ENTRY alt_thunk_names325[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21165C9D0Ev,_ZThn40_N8S21165C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21165C9D1Ev,_ZThn40_N8S21165C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21165C10D0Ev,_ZThn12_N9S21165C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21165C10D1Ev,_ZThn12_N9S21165C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C4D0Ev,_ZThn60_N8S21165C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C4D1Ev,_ZThn60_N8S21165C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C8D0Ev,_ZTv0_n24_N8S21165C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21165C8D0Ev,_ZThn88_N8S21165C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C8D1Ev,_ZTv0_n24_N8S21165C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21165C8D1Ev,_ZThn88_N8S21165C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C8D0Ev,_ZTv0_n12_N8S21165C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C8D0Ev,_ZThn60_N8S21165C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C8D1Ev,_ZTv0_n12_N8S21165C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C8D1Ev,_ZThn60_N8S21165C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C8D0Ev,_ZThn128_N8S21165C8D0Ev),
  (VTBL_ENTRY)_ZN8S21165C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C8D1Ev,_ZThn128_N8S21165C8D1Ev),
  (VTBL_ENTRY)_ZN8S21165C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C5D0Ev,_ZTv0_n24_N8S21165C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21165C5D0Ev,_ZThn88_N8S21165C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C5D1Ev,_ZTv0_n24_N8S21165C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21165C5D1Ev,_ZThn88_N8S21165C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C5D0Ev,_ZTv0_n12_N8S21165C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C5D0Ev,_ZThn60_N8S21165C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C5D1Ev,_ZTv0_n12_N8S21165C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C5D1Ev,_ZThn60_N8S21165C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C5D0Ev,_ZThn128_N8S21165C5D0Ev),
  (VTBL_ENTRY)_ZN8S21165C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C5D1Ev,_ZThn128_N8S21165C5D1Ev),
  (VTBL_ENTRY)_ZN8S21165C5D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21165C5 = {  "S21165C5", // class name
  bases_S21165C5, 11,
  &(vtc_S21165C5[0]), // expected_vtbl_contents
  &(vtt_S21165C5[0]), // expected_vtt_contents
  ABISELECT(352,200), // object size
  NSPAIRA(_ZTI8S21165C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21165C5),35, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21165C5),28, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names325,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21165C1  : virtual S21165C2 , S21165C5 {
  void *s21165c1f0;
  virtual  ~S21165C1(); // _ZN8S21165C1D2Ev
  S21165C1(); // tgen
};
//SIG(1 S21165C1) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} BC5{ BC6{ m FC7{} Fi[3]} BC8{ VBC4 VBC9{ BC3 VBC4 VBC2 BC10{ VBC2 BC4 vd Fi} vd Fi} VBC6 vd Fi} FC4 Fi} vd Fp}


 S21165C1 ::~S21165C1(){ note_dtor("S21165C1", this);}
S21165C1 ::S21165C1(){ note_ctor("S21165C1", this);} // tgen

static void Test_S21165C1()
{
  extern Class_Descriptor cd_S21165C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,52)];
    init_test(&cd_S21165C1, buf);
    S21165C1 *dp, &lv = *(dp=new (buf) S21165C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,204), "sizeof(S21165C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21165C1)");
    check_base_class_offset(lv, (S19676C9*)(S21165C2*), ABISELECT(224,120), "S21165C1");
    check_base_class_offset(lv, (S19676C9*)(S21165C4*)(S21165C2*), ABISELECT(224,120), "S21165C1");
    /*is_ambiguous_... S21165C1::S21165C4 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C4*), ABISELECT(224,120), "S21165C1");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C4*)(S21165C10*)(S21165C9*), ABISELECT(224,120), "S21165C1");
    check_base_class_offset(lv, (S21165C4*)(S21165C2*), ABISELECT(112,64), "S21165C1");
    check_base_class_offset(lv, (S21165C2*), ABISELECT(112,64), "S21165C1");
    check_base_class_offset(lv, (S21165C2*)(S21165C9*), ABISELECT(112,64), "S21165C1");
    check_base_class_offset(lv, (S21165C2*)(S21165C10*)(S21165C9*), ABISELECT(112,64), "S21165C1");
    /*is_ambiguous_... S21165C5::S19676C2 */ AMB_check_base_class_offset(lv, (S19676C2*)(S21165C5*), ABISELECT(12,8), "S21165C1");
    /*is_ambiguous_... S21165C8::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*)(S21165C8*)(S21165C5*), 0, "S21165C1");
    /*is_ambiguous_... S21165C9::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*)(S21165C9*), 0, "S21165C1");
    /*is_ambiguous_... S21165C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C9*), ABISELECT(272,148), "S21165C1");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*)(S21165C10*)(S21165C9*), ABISELECT(320,176), "S21165C1");
    check_base_class_offset(lv, (S21165C10*)(S21165C9*), ABISELECT(320,176), "S21165C1");
    check_base_class_offset(lv, (S21165C9*)(S21165C8*)(S21165C5*), ABISELECT(272,148), "S21165C1");
    check_base_class_offset(lv, (S19676C2*)(S21165C8*)(S21165C5*), ABISELECT(336,188), "S21165C1");
    check_base_class_offset(lv, (S21165C8*)(S21165C5*), 0, "S21165C1");
    check_base_class_offset(lv, (S21165C5*), 0, "S21165C1");
    check_field_offset(lv, s21165c1f0, ABISELECT(104,60), "S21165C1.s21165c1f0");
    test_class_info(&lv, &cd_S21165C1);
    dp->~S21165C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21165C1(Test_S21165C1, "S21165C1", ABISELECT(352,204));

#else // __cplusplus

extern void _ZN8S21165C1C1Ev();
extern void _ZN8S21165C1D2Ev();
Name_Map name_map_S21165C1[] = {
  NSPAIR(_ZN8S21165C1C1Ev),
  NSPAIR(_ZN8S21165C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C2;
extern VTBL_ENTRY _ZTI8S21165C2[];
extern  VTBL_ENTRY _ZTV8S21165C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C2[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C10;
extern VTBL_ENTRY _ZTI9S21165C10[];
extern  VTBL_ENTRY _ZTV9S21165C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21165C10[];
extern Class_Descriptor cd_S21165C9;
extern VTBL_ENTRY _ZTI8S21165C9[];
extern  VTBL_ENTRY _ZTV8S21165C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C9[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S21165C8;
extern VTBL_ENTRY _ZTI8S21165C8[];
extern  VTBL_ENTRY _ZTV8S21165C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C8[];
extern Class_Descriptor cd_S21165C5;
extern VTBL_ENTRY _ZTI8S21165C5[];
extern  VTBL_ENTRY _ZTV8S21165C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C5[];
static Base_Class bases_S21165C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(224,120), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21165C4,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21165C2,    ABISELECT(112,64), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21165C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19676C9,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21165C4,    ABISELECT(320,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21165C10,    ABISELECT(320,176), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21165C9,    ABISELECT(272,148), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(336,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21165C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21165C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21165C1[];
extern void ABISELECT(_ZTv0_n32_N8S21165C1D1Ev,_ZTv0_n16_N8S21165C1D1Ev)();
extern void _ZN8S21165C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C1D0Ev,_ZTv0_n16_N8S21165C1D0Ev)();
extern void _ZN8S21165C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C1D1Ev,_ZTv0_n16_N8S21165C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C1D1Ev,_ZThn64_N8S21165C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C1D0Ev,_ZTv0_n16_N8S21165C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C1D0Ev,_ZThn64_N8S21165C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C1D1Ev,_ZTv0_n12_N8S21165C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S21165C1D1Ev,_ZThn120_N8S21165C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C1D0Ev,_ZTv0_n12_N8S21165C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S21165C1D0Ev,_ZThn120_N8S21165C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21165C1D1Ev,_ZTv0_n24_N8S21165C1D1Ev)();
extern void ABISELECT(_ZThn272_N8S21165C1D1Ev,_ZThn148_N8S21165C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21165C1D0Ev,_ZTv0_n24_N8S21165C1D0Ev)();
extern void ABISELECT(_ZThn272_N8S21165C1D0Ev,_ZThn148_N8S21165C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S21165C1D1Ev,_ZTvn28_n24_N8S21165C1D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S21165C1D0Ev,_ZTvn28_n24_N8S21165C1D0Ev)();
static  VTBL_ENTRY vtc_S21165C1[] = {
  ABISELECT(336,188),
  ABISELECT(112,64),
  ABISELECT(272,148),
  0,
  0,
  ABISELECT(224,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C1D1Ev,_ZTv0_n16_N8S21165C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C1D0Ev,_ZTv0_n16_N8S21165C1D0Ev),
  ABISELECT(-112,-64),
  ABISELECT(112,56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S21165C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C1D1Ev,_ZTv0_n16_N8S21165C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C1D0Ev,_ZTv0_n16_N8S21165C1D0Ev),
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S21165C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C1D1Ev,_ZTv0_n12_N8S21165C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C1D0Ev,_ZTv0_n12_N8S21165C1D0Ev),
  ABISELECT(-272,-148),
  ABISELECT(-160,-84),
  ABISELECT(-48,-28),
  ABISELECT(-272,-148),
  ABISELECT(-272,-148),
  (VTBL_ENTRY)&(_ZTI8S21165C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C1D1Ev,_ZTv0_n24_N8S21165C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C1D0Ev,_ZTv0_n24_N8S21165C1D0Ev),
  ABISELECT(-208,-112),
  ABISELECT(-96,-56),
  ABISELECT(-320,-176),
  (VTBL_ENTRY)&(_ZTI8S21165C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C1D1Ev,_ZTvn28_n24_N8S21165C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C1D0Ev,_ZTvn28_n24_N8S21165C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21165C1[];
extern void ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev)();
extern void _ZN8S21165C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev)();
extern void _ZN8S21165C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C5__8S21165C1[] = {
  ABISELECT(336,188),
  ABISELECT(112,64),
  ABISELECT(272,148),
  0,
  0,
  ABISELECT(224,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev)();
extern void _ZN8S21165C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev)();
extern void _ZN8S21165C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C88S21165C5__8S21165C1[] = {
  ABISELECT(336,188),
  ABISELECT(112,64),
  ABISELECT(272,148),
  0,
  0,
  ABISELECT(224,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C8D1Ev,_ZTv0_n12_N8S21165C8D1Ev)();
extern void ABISELECT(_ZThn224_N8S21165C8D1Ev,_ZThn120_N8S21165C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C8D0Ev,_ZTv0_n12_N8S21165C8D0Ev)();
extern void ABISELECT(_ZThn224_N8S21165C8D0Ev,_ZThn120_N8S21165C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C88S21165C5__8S21165C1[] = {
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C8D1Ev,_ZTv0_n12_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C8D0Ev,_ZTv0_n12_N8S21165C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21165C8D1Ev,_ZTv0_n24_N8S21165C8D1Ev)();
extern void ABISELECT(_ZThn272_N8S21165C8D1Ev,_ZThn148_N8S21165C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21165C8D0Ev,_ZTv0_n24_N8S21165C8D0Ev)();
extern void ABISELECT(_ZThn272_N8S21165C8D0Ev,_ZThn148_N8S21165C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C9__8S21165C88S21165C5__8S21165C1[] = {
  ABISELECT(-272,-148),
  ABISELECT(-160,-84),
  ABISELECT(-48,-28),
  ABISELECT(-272,-148),
  ABISELECT(-272,-148),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C8D1Ev,_ZTv0_n24_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C8D0Ev,_ZTv0_n24_N8S21165C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C8D1Ev,_ZThn64_N8S21165C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C8D0Ev,_ZThn64_N8S21165C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C88S21165C5__8S21165C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(112,56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S21165C8D1Ev,_ZTvn28_n24_N8S21165C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S21165C8D0Ev,_ZTvn28_n24_N8S21165C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21165C108S21165C9__8S21165C88S21165C5__8S21165C1[] = {
  ABISELECT(-208,-112),
  ABISELECT(-96,-56),
  ABISELECT(-320,-176),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C8D1Ev,_ZTvn28_n24_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C8D0Ev,_ZTvn28_n24_N8S21165C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C5D1Ev,_ZTv0_n12_N8S21165C5D1Ev)();
extern void ABISELECT(_ZThn224_N8S21165C5D1Ev,_ZThn120_N8S21165C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C5D0Ev,_ZTv0_n12_N8S21165C5D0Ev)();
extern void ABISELECT(_ZThn224_N8S21165C5D0Ev,_ZThn120_N8S21165C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C5__8S21165C1[] = {
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C5D1Ev,_ZTv0_n12_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C5D0Ev,_ZTv0_n12_N8S21165C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21165C5D1Ev,_ZTv0_n24_N8S21165C5D1Ev)();
extern void ABISELECT(_ZThn272_N8S21165C5D1Ev,_ZThn148_N8S21165C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21165C5D0Ev,_ZTv0_n24_N8S21165C5D0Ev)();
extern void ABISELECT(_ZThn272_N8S21165C5D0Ev,_ZThn148_N8S21165C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C9__8S21165C5__8S21165C1[] = {
  ABISELECT(-272,-148),
  ABISELECT(-160,-84),
  ABISELECT(-48,-28),
  ABISELECT(-272,-148),
  ABISELECT(-272,-148),
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C5D1Ev,_ZTv0_n24_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C5D0Ev,_ZTv0_n24_N8S21165C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C5D1Ev,_ZThn64_N8S21165C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C5D0Ev,_ZThn64_N8S21165C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C5__8S21165C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(112,56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S21165C5D1Ev,_ZTvn28_n24_N8S21165C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S21165C5D0Ev,_ZTvn28_n24_N8S21165C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21165C108S21165C9__8S21165C5__8S21165C1[] = {
  ABISELECT(-208,-112),
  ABISELECT(-96,-56),
  ABISELECT(-320,-176),
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C5D1Ev,_ZTvn28_n24_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C5D0Ev,_ZTvn28_n24_N8S21165C5D0Ev),
};
extern void _ZN8S21165C2D1Ev();
extern void _ZN8S21165C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C1[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&_ZN8S21165C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C2D0Ev,
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C48S21165C2__8S21165C1[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C4D1Ev,_ZThn56_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C4D0Ev,_ZThn56_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C48S21165C2__8S21165C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C2D1Ev,_ZThn56_N8S21165C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C2D0Ev,_ZThn56_N8S21165C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C2__8S21165C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev),
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C4__A1__8S21165C1[] = {
  ABISELECT(224,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn224_N8S21165C4D1Ev,_ZThn120_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn224_N8S21165C4D0Ev,_ZThn120_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C4__A1__8S21165C1[] = {
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void _ZN8S21165C9D1Ev();
extern void _ZN8S21165C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C9__8S21165C1[] = {
  ABISELECT(-160,-84),
  ABISELECT(-48,-28),
  ABISELECT(-272,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&_ZN8S21165C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C9D0Ev,
};
extern void _ZN9S21165C10D1Ev();
extern void _ZN9S21165C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21165C108S21165C9__8S21165C1[] = {
  ABISELECT(-208,-112),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&_ZN9S21165C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21165C10D0Ev,
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C49S21165C108S21165C9__A2__8S21165C1[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C49S21165C108S21165C9__A2__8S21165C1[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21165C2__9S21165C108S21165C9__8S21165C1[] = {
  ABISELECT(208,112),
  ABISELECT(112,56),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S21165C108S21165C9__8S21165C1[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21165C4__8S21165C9__8S21165C1[] = {
  ABISELECT(272,148),
  ABISELECT(224,120),
  ABISELECT(272,148),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C9D1Ev,_ZTv0_n12_N8S21165C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C9D0Ev,_ZTv0_n12_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S21165C9__8S21165C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C9D1Ev,_ZTv0_n12_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C9D0Ev,_ZTv0_n12_N8S21165C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C9__8S21165C1[] = {
  ABISELECT(160,84),
  ABISELECT(112,56),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev),
};
extern void ABISELECT(_ZThn48_N8S21165C9D1Ev,_ZThn28_N8S21165C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S21165C9D0Ev,_ZThn28_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21165C10__8S21165C9__8S21165C1[] = {
  ABISELECT(-208,-112),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21165C9D1Ev,_ZThn28_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21165C9D0Ev,_ZThn28_N8S21165C9D0Ev),
};
static  VTT_ENTRY vtt_S21165C1[] = {
  {&(_ZTV8S21165C1[8]),  8,35},
  {&(_tg__ZTV8S21165C5__8S21165C1[8]),  8,10},
  {&(_tg__ZTV8S21165C88S21165C5__8S21165C1[8]),  8,10},
  {&(_tg__ZTV8S21165C88S21165C5__8S21165C1[8]),  8,10},
  {&(_tg__ZTV8S19676C9__8S21165C88S21165C5__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S21165C9__8S21165C88S21165C5__8S21165C1[6]),  6,8},
  {&(_tg__ZTV8S21165C2__8S21165C88S21165C5__8S21165C1[4]),  4,6},
  {&(_tg__ZTV9S21165C108S21165C9__8S21165C88S21165C5__8S21165C1[4]),  4,6},
  {&(_tg__ZTV8S21165C5__8S21165C1[8]),  8,10},
  {&(_tg__ZTV8S19676C9__8S21165C5__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S21165C9__8S21165C5__8S21165C1[6]),  6,8},
  {&(_tg__ZTV8S21165C2__8S21165C5__8S21165C1[4]),  4,6},
  {&(_tg__ZTV9S21165C108S21165C9__8S21165C5__8S21165C1[4]),  4,6},
  {&(_ZTV8S21165C1[14]),  14,35},
  {&(_ZTV8S21165C1[19]),  19,35},
  {&(_ZTV8S21165C1[8]),  8,35},
  {&(_ZTV8S21165C1[27]),  27,35},
  {&(_ZTV8S21165C1[33]),  33,35},
  {&(_tg__ZTV8S21165C2__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S21165C48S21165C2__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C48S21165C2__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C2__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S21165C4__A1__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C4__A1__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S21165C9__8S21165C1[5]),  5,7},
  {&(_tg__ZTV9S21165C108S21165C9__8S21165C1[4]),  4,6},
  {&(_tg__ZTV8S21165C49S21165C108S21165C9__A2__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C49S21165C108S21165C9__A2__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S21165C2__9S21165C108S21165C9__8S21165C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S21165C108S21165C9__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S21165C4__8S21165C9__8S21165C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S21165C9__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S21165C2__8S21165C9__8S21165C1[4]),  4,6},
  {&(_tg__ZTV9S21165C10__8S21165C9__8S21165C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21165C1[];
extern  VTBL_ENTRY _ZTV8S21165C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C1[];
static VTBL_ENTRY alt_thunk_names326[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C2D0Ev,_ZThn56_N8S21165C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C2D1Ev,_ZThn56_N8S21165C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C4D0Ev,_ZThn120_N8S21165C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C4D0Ev,_ZThn56_N8S21165C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C4D1Ev,_ZThn120_N8S21165C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C4D1Ev,_ZThn56_N8S21165C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C5D0Ev,_ZTv0_n24_N8S21165C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21165C5D0Ev,_ZThn148_N8S21165C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C5D1Ev,_ZTv0_n24_N8S21165C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21165C5D1Ev,_ZThn148_N8S21165C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C5D0Ev,_ZTv0_n12_N8S21165C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C5D0Ev,_ZThn120_N8S21165C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C5D1Ev,_ZTv0_n12_N8S21165C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C5D1Ev,_ZThn120_N8S21165C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C8D0Ev,_ZTv0_n24_N8S21165C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21165C8D0Ev,_ZThn148_N8S21165C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C8D1Ev,_ZTv0_n24_N8S21165C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21165C8D1Ev,_ZThn148_N8S21165C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C8D0Ev,_ZTv0_n12_N8S21165C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C8D0Ev,_ZThn120_N8S21165C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C8D1Ev,_ZTv0_n12_N8S21165C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C8D1Ev,_ZThn120_N8S21165C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C8D0Ev,_ZThn64_N8S21165C8D0Ev),
  (VTBL_ENTRY)_ZN8S21165C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C8D1Ev,_ZThn64_N8S21165C8D1Ev),
  (VTBL_ENTRY)_ZN8S21165C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C5D0Ev,_ZThn64_N8S21165C5D0Ev),
  (VTBL_ENTRY)_ZN8S21165C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C5D1Ev,_ZThn64_N8S21165C5D1Ev),
  (VTBL_ENTRY)_ZN8S21165C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C1D0Ev,_ZTv0_n24_N8S21165C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21165C1D0Ev,_ZThn148_N8S21165C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C1D1Ev,_ZTv0_n24_N8S21165C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21165C1D1Ev,_ZThn148_N8S21165C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C1D0Ev,_ZTv0_n12_N8S21165C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C1D0Ev,_ZThn120_N8S21165C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C1D1Ev,_ZTv0_n12_N8S21165C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C1D1Ev,_ZThn120_N8S21165C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C1D0Ev,_ZTv0_n16_N8S21165C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C1D0Ev,_ZThn64_N8S21165C1D0Ev),
  (VTBL_ENTRY)_ZN8S21165C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C1D1Ev,_ZTv0_n16_N8S21165C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C1D1Ev,_ZThn64_N8S21165C1D1Ev),
  (VTBL_ENTRY)_ZN8S21165C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21165C1 = {  "S21165C1", // class name
  bases_S21165C1, 12,
  &(vtc_S21165C1[0]), // expected_vtbl_contents
  &(vtt_S21165C1[0]), // expected_vtt_contents
  ABISELECT(352,204), // object size
  NSPAIRA(_ZTI8S21165C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21165C1),35, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21165C1),34, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names326,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10206C2  {
  char s10206c2f0;
  int s10206c2f1;
  void *s10206c2f2[3];
  char s10206c2f3[3];
  ::S4228C19_nt s10206c2f4;
  char s10206c2f5;
  void *s10206c2f6;
  int s10206c2f7[2];
  virtual  ~S10206C2(); // _ZN8S10206C2D1Ev
  virtual void  v8(); // _ZN8S10206C22v8Ev
  virtual void  v9(); // _ZN8S10206C22v9Ev
  virtual void  v10(); // _ZN8S10206C23v10Ev
  virtual void  v11(); // _ZN8S10206C23v11Ev
  virtual void  v12(); // _ZN8S10206C23v12Ev
  virtual void  v13(); // _ZN8S10206C23v13Ev
  virtual void  v14(); // _ZN8S10206C23v14Ev
  virtual void  v15(); // _ZN8S10206C23v15Ev
  virtual void  v16(); // _ZN8S10206C23v16Ev
  virtual void  v17(); // _ZN8S10206C23v17Ev
  virtual void  v18(); // _ZN8S10206C23v18Ev
  virtual void  v19(); // _ZN8S10206C23v19Ev
  virtual void  v20(); // _ZN8S10206C23v20Ev
  virtual void  v21(); // _ZN8S10206C23v21Ev
  S10206C2(); // tgen
};
//SIG(-1 S10206C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fc Fi Fp[3] Fc[3] FC2{ m Fp Fi FC3{ m}} Fc Fp Fi[2]}


 S10206C2 ::~S10206C2(){ note_dtor("S10206C2", this);}
void  S10206C2 ::v8(){vfunc_called(this, "_ZN8S10206C22v8Ev");}
void  S10206C2 ::v9(){vfunc_called(this, "_ZN8S10206C22v9Ev");}
void  S10206C2 ::v10(){vfunc_called(this, "_ZN8S10206C23v10Ev");}
void  S10206C2 ::v11(){vfunc_called(this, "_ZN8S10206C23v11Ev");}
void  S10206C2 ::v12(){vfunc_called(this, "_ZN8S10206C23v12Ev");}
void  S10206C2 ::v13(){vfunc_called(this, "_ZN8S10206C23v13Ev");}
void  S10206C2 ::v14(){vfunc_called(this, "_ZN8S10206C23v14Ev");}
void  S10206C2 ::v15(){vfunc_called(this, "_ZN8S10206C23v15Ev");}
void  S10206C2 ::v16(){vfunc_called(this, "_ZN8S10206C23v16Ev");}
void  S10206C2 ::v17(){vfunc_called(this, "_ZN8S10206C23v17Ev");}
void  S10206C2 ::v18(){vfunc_called(this, "_ZN8S10206C23v18Ev");}
void  S10206C2 ::v19(){vfunc_called(this, "_ZN8S10206C23v19Ev");}
void  S10206C2 ::v20(){vfunc_called(this, "_ZN8S10206C23v20Ev");}
void  S10206C2 ::v21(){vfunc_called(this, "_ZN8S10206C23v21Ev");}
S10206C2 ::S10206C2(){ note_ctor("S10206C2", this);} // tgen

static void Test_S10206C2()
{
  extern Class_Descriptor cd_S10206C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S10206C2, buf);
    S10206C2 *dp, &lv = *(dp=new (buf) S10206C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S10206C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10206C2)");
    check_field_offset(lv, s10206c2f0, ABISELECT(8,4), "S10206C2.s10206c2f0");
    check_field_offset(lv, s10206c2f1, ABISELECT(12,8), "S10206C2.s10206c2f1");
    check_field_offset(lv, s10206c2f2, ABISELECT(16,12), "S10206C2.s10206c2f2");
    check_field_offset(lv, s10206c2f3, ABISELECT(40,24), "S10206C2.s10206c2f3");
    check_field_offset(lv, s10206c2f4, ABISELECT(48,28), "S10206C2.s10206c2f4");
    check_field_offset(lv, s10206c2f5, ABISELECT(64,40), "S10206C2.s10206c2f5");
    check_field_offset(lv, s10206c2f6, ABISELECT(72,44), "S10206C2.s10206c2f6");
    check_field_offset(lv, s10206c2f7, ABISELECT(80,48), "S10206C2.s10206c2f7");
    test_class_info(&lv, &cd_S10206C2);
    dp->~S10206C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10206C2(Test_S10206C2, "S10206C2", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN8S10206C2C1Ev();
extern void _ZN8S10206C2D1Ev();
Name_Map name_map_S10206C2[] = {
  NSPAIR(_ZN8S10206C2C1Ev),
  NSPAIR(_ZN8S10206C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10206C2[];
extern void _ZN8S10206C2D1Ev();
extern void _ZN8S10206C2D0Ev();
extern void _ZN8S10206C22v8Ev();
extern void _ZN8S10206C22v9Ev();
extern void _ZN8S10206C23v10Ev();
extern void _ZN8S10206C23v11Ev();
extern void _ZN8S10206C23v12Ev();
extern void _ZN8S10206C23v13Ev();
extern void _ZN8S10206C23v14Ev();
extern void _ZN8S10206C23v15Ev();
extern void _ZN8S10206C23v16Ev();
extern void _ZN8S10206C23v17Ev();
extern void _ZN8S10206C23v18Ev();
extern void _ZN8S10206C23v19Ev();
extern void _ZN8S10206C23v20Ev();
extern void _ZN8S10206C23v21Ev();
static  VTBL_ENTRY vtc_S10206C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10206C2[0]),
  (VTBL_ENTRY)&_ZN8S10206C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10206C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10206C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10206C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v16Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v17Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v18Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v19Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v20Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v21Ev,
};
extern VTBL_ENTRY _ZTI8S10206C2[];
extern  VTBL_ENTRY _ZTV8S10206C2[];
Class_Descriptor cd_S10206C2 = {  "S10206C2", // class name
  0,0,//no base classes
  &(vtc_S10206C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI8S10206C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10206C2),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10206C1  : S10206C2 {
  virtual  ~S10206C1(); // _ZN8S10206C1D1Ev
  virtual void  v1(); // _ZN8S10206C12v1Ev
  virtual void  v2(); // _ZN8S10206C12v2Ev
  virtual void  v3(); // _ZN8S10206C12v3Ev
  virtual void  v4(); // _ZN8S10206C12v4Ev
  virtual void  v5(); // _ZN8S10206C12v5Ev
  virtual void  v6(); // _ZN8S10206C12v6Ev
  virtual void  v7(); // _ZN8S10206C12v7Ev
  S10206C1(); // tgen
};
//SIG(1 S10206C1) C1{ BC2{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 Fc Fi Fp[3] Fc[3] FC3{ m Fp Fi FC4{ m}} Fc Fp Fi[2]} vd v1 v2 v3 v4 v5 v6 v7}


 S10206C1 ::~S10206C1(){ note_dtor("S10206C1", this);}
void  S10206C1 ::v1(){vfunc_called(this, "_ZN8S10206C12v1Ev");}
void  S10206C1 ::v2(){vfunc_called(this, "_ZN8S10206C12v2Ev");}
void  S10206C1 ::v3(){vfunc_called(this, "_ZN8S10206C12v3Ev");}
void  S10206C1 ::v4(){vfunc_called(this, "_ZN8S10206C12v4Ev");}
void  S10206C1 ::v5(){vfunc_called(this, "_ZN8S10206C12v5Ev");}
void  S10206C1 ::v6(){vfunc_called(this, "_ZN8S10206C12v6Ev");}
void  S10206C1 ::v7(){vfunc_called(this, "_ZN8S10206C12v7Ev");}
S10206C1 ::S10206C1(){ note_ctor("S10206C1", this);} // tgen

static void Test_S10206C1()
{
  extern Class_Descriptor cd_S10206C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S10206C1, buf);
    S10206C1 *dp, &lv = *(dp=new (buf) S10206C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S10206C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10206C1)");
    check_base_class_offset(lv, (S10206C2*), 0, "S10206C1");
    test_class_info(&lv, &cd_S10206C1);
    dp->~S10206C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10206C1(Test_S10206C1, "S10206C1", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN8S10206C1C1Ev();
extern void _ZN8S10206C1D1Ev();
Name_Map name_map_S10206C1[] = {
  NSPAIR(_ZN8S10206C1C1Ev),
  NSPAIR(_ZN8S10206C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10206C2;
extern VTBL_ENTRY _ZTI8S10206C2[];
extern  VTBL_ENTRY _ZTV8S10206C2[];
static Base_Class bases_S10206C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10206C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10206C1[];
extern void _ZN8S10206C1D1Ev();
extern void _ZN8S10206C1D0Ev();
extern void _ZN8S10206C22v8Ev();
extern void _ZN8S10206C22v9Ev();
extern void _ZN8S10206C23v10Ev();
extern void _ZN8S10206C23v11Ev();
extern void _ZN8S10206C23v12Ev();
extern void _ZN8S10206C23v13Ev();
extern void _ZN8S10206C23v14Ev();
extern void _ZN8S10206C23v15Ev();
extern void _ZN8S10206C23v16Ev();
extern void _ZN8S10206C23v17Ev();
extern void _ZN8S10206C23v18Ev();
extern void _ZN8S10206C23v19Ev();
extern void _ZN8S10206C23v20Ev();
extern void _ZN8S10206C23v21Ev();
extern void _ZN8S10206C12v1Ev();
extern void _ZN8S10206C12v2Ev();
extern void _ZN8S10206C12v3Ev();
extern void _ZN8S10206C12v4Ev();
extern void _ZN8S10206C12v5Ev();
extern void _ZN8S10206C12v6Ev();
extern void _ZN8S10206C12v7Ev();
static  VTBL_ENTRY vtc_S10206C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10206C1[0]),
  (VTBL_ENTRY)&_ZN8S10206C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10206C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10206C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10206C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v16Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v17Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v18Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v19Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v20Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v21Ev,
  (VTBL_ENTRY)&_ZN8S10206C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10206C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10206C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10206C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10206C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10206C12v6Ev,
  (VTBL_ENTRY)&_ZN8S10206C12v7Ev,
};
extern VTBL_ENTRY _ZTI8S10206C1[];
extern  VTBL_ENTRY _ZTV8S10206C1[];
Class_Descriptor cd_S10206C1 = {  "S10206C1", // class name
  bases_S10206C1, 1,
  &(vtc_S10206C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI8S10206C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10206C1),25, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2096C4  {
  void *s2096c4f0;
  char s2096c4f1;
  int s2096c4f2[4];
  void *s2096c4f3;
  virtual  ~S2096C4(); // _ZN7S2096C4D1Ev
  virtual void  v2(); // _ZN7S2096C42v2Ev
  virtual void  v3(); // _ZN7S2096C42v3Ev
  virtual void  v4(); // _ZN7S2096C42v4Ev
  virtual void  v5(); // _ZN7S2096C42v5Ev
  S2096C4(); // tgen
};
//SIG(-1 S2096C4) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S2096C4 ::~S2096C4(){ note_dtor("S2096C4", this);}
void  S2096C4 ::v2(){vfunc_called(this, "_ZN7S2096C42v2Ev");}
void  S2096C4 ::v3(){vfunc_called(this, "_ZN7S2096C42v3Ev");}
void  S2096C4 ::v4(){vfunc_called(this, "_ZN7S2096C42v4Ev");}
void  S2096C4 ::v5(){vfunc_called(this, "_ZN7S2096C42v5Ev");}
S2096C4 ::S2096C4(){ note_ctor("S2096C4", this);} // tgen

static void Test_S2096C4()
{
  extern Class_Descriptor cd_S2096C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S2096C4, buf);
    S2096C4 *dp, &lv = *(dp=new (buf) S2096C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S2096C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2096C4)");
    check_field_offset(lv, s2096c4f0, ABISELECT(8,4), "S2096C4.s2096c4f0");
    check_field_offset(lv, s2096c4f1, ABISELECT(16,8), "S2096C4.s2096c4f1");
    check_field_offset(lv, s2096c4f2, ABISELECT(20,12), "S2096C4.s2096c4f2");
    check_field_offset(lv, s2096c4f3, ABISELECT(40,28), "S2096C4.s2096c4f3");
    test_class_info(&lv, &cd_S2096C4);
    dp->~S2096C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2096C4(Test_S2096C4, "S2096C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S2096C4C1Ev();
extern void _ZN7S2096C4D1Ev();
Name_Map name_map_S2096C4[] = {
  NSPAIR(_ZN7S2096C4C1Ev),
  NSPAIR(_ZN7S2096C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2096C4[];
extern void _ZN7S2096C4D1Ev();
extern void _ZN7S2096C4D0Ev();
extern void _ZN7S2096C42v2Ev();
extern void _ZN7S2096C42v3Ev();
extern void _ZN7S2096C42v4Ev();
extern void _ZN7S2096C42v5Ev();
static  VTBL_ENTRY vtc_S2096C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2096C4[0]),
  (VTBL_ENTRY)&_ZN7S2096C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2096C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2096C4[];
extern  VTBL_ENTRY _ZTV7S2096C4[];
Class_Descriptor cd_S2096C4 = {  "S2096C4", // class name
  0,0,//no base classes
  &(vtc_S2096C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S2096C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2096C4),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2096C3  : S2096C4 {
  int s2096c3f0[3];
  virtual  ~S2096C3(); // _ZN7S2096C3D1Ev
  virtual void  v6(); // _ZN7S2096C32v6Ev
  virtual void  v7(); // _ZN7S2096C32v7Ev
  virtual void  v8(); // _ZN7S2096C32v8Ev
  S2096C3(); // tgen
};
//SIG(-1 S2096C3) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S2096C3 ::~S2096C3(){ note_dtor("S2096C3", this);}
void  S2096C3 ::v6(){vfunc_called(this, "_ZN7S2096C32v6Ev");}
void  S2096C3 ::v7(){vfunc_called(this, "_ZN7S2096C32v7Ev");}
void  S2096C3 ::v8(){vfunc_called(this, "_ZN7S2096C32v8Ev");}
S2096C3 ::S2096C3(){ note_ctor("S2096C3", this);} // tgen

static void Test_S2096C3()
{
  extern Class_Descriptor cd_S2096C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S2096C3, buf);
    S2096C3 *dp, &lv = *(dp=new (buf) S2096C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S2096C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2096C3)");
    check_base_class_offset(lv, (S2096C4*), 0, "S2096C3");
    check_field_offset(lv, s2096c3f0, ABISELECT(48,32), "S2096C3.s2096c3f0");
    test_class_info(&lv, &cd_S2096C3);
    dp->~S2096C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2096C3(Test_S2096C3, "S2096C3", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S2096C3C1Ev();
extern void _ZN7S2096C3D1Ev();
Name_Map name_map_S2096C3[] = {
  NSPAIR(_ZN7S2096C3C1Ev),
  NSPAIR(_ZN7S2096C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2096C4;
extern VTBL_ENTRY _ZTI7S2096C4[];
extern  VTBL_ENTRY _ZTV7S2096C4[];
static Base_Class bases_S2096C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2096C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2096C3[];
extern void _ZN7S2096C3D1Ev();
extern void _ZN7S2096C3D0Ev();
extern void _ZN7S2096C42v2Ev();
extern void _ZN7S2096C42v3Ev();
extern void _ZN7S2096C42v4Ev();
extern void _ZN7S2096C42v5Ev();
extern void _ZN7S2096C32v6Ev();
extern void _ZN7S2096C32v7Ev();
extern void _ZN7S2096C32v8Ev();
static  VTBL_ENTRY vtc_S2096C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2096C3[0]),
  (VTBL_ENTRY)&_ZN7S2096C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2096C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2096C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2096C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2096C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S2096C3[];
extern  VTBL_ENTRY _ZTV7S2096C3[];
Class_Descriptor cd_S2096C3 = {  "S2096C3", // class name
  bases_S2096C3, 1,
  &(vtc_S2096C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S2096C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2096C3),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2096C2  : S2096C3 {
  int s2096c2f0[3];
  virtual  ~S2096C2(); // _ZN7S2096C2D1Ev
  virtual void  v9(); // _ZN7S2096C22v9Ev
  virtual void  v10(); // _ZN7S2096C23v10Ev
  virtual void  v11(); // _ZN7S2096C23v11Ev
  S2096C2(); // tgen
};
//SIG(-1 S2096C2) C1{ BC2{ BC3{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v8 v9 v10 Fi[3]} vd v1 v2 v3 Fi[3]}


 S2096C2 ::~S2096C2(){ note_dtor("S2096C2", this);}
void  S2096C2 ::v9(){vfunc_called(this, "_ZN7S2096C22v9Ev");}
void  S2096C2 ::v10(){vfunc_called(this, "_ZN7S2096C23v10Ev");}
void  S2096C2 ::v11(){vfunc_called(this, "_ZN7S2096C23v11Ev");}
S2096C2 ::S2096C2(){ note_ctor("S2096C2", this);} // tgen

static void Test_S2096C2()
{
  extern Class_Descriptor cd_S2096C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2096C2, buf);
    S2096C2 *dp, &lv = *(dp=new (buf) S2096C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2096C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2096C2)");
    check_base_class_offset(lv, (S2096C4*)(S2096C3*), 0, "S2096C2");
    check_base_class_offset(lv, (S2096C3*), 0, "S2096C2");
    check_field_offset(lv, s2096c2f0, ABISELECT(60,44), "S2096C2.s2096c2f0");
    test_class_info(&lv, &cd_S2096C2);
    dp->~S2096C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2096C2(Test_S2096C2, "S2096C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2096C2C1Ev();
extern void _ZN7S2096C2D1Ev();
Name_Map name_map_S2096C2[] = {
  NSPAIR(_ZN7S2096C2C1Ev),
  NSPAIR(_ZN7S2096C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2096C4;
extern VTBL_ENTRY _ZTI7S2096C4[];
extern  VTBL_ENTRY _ZTV7S2096C4[];
extern Class_Descriptor cd_S2096C3;
extern VTBL_ENTRY _ZTI7S2096C3[];
extern  VTBL_ENTRY _ZTV7S2096C3[];
static Base_Class bases_S2096C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2096C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2096C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2096C2[];
extern void _ZN7S2096C2D1Ev();
extern void _ZN7S2096C2D0Ev();
extern void _ZN7S2096C42v2Ev();
extern void _ZN7S2096C42v3Ev();
extern void _ZN7S2096C42v4Ev();
extern void _ZN7S2096C42v5Ev();
extern void _ZN7S2096C32v6Ev();
extern void _ZN7S2096C32v7Ev();
extern void _ZN7S2096C32v8Ev();
extern void _ZN7S2096C22v9Ev();
extern void _ZN7S2096C23v10Ev();
extern void _ZN7S2096C23v11Ev();
static  VTBL_ENTRY vtc_S2096C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2096C2[0]),
  (VTBL_ENTRY)&_ZN7S2096C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2096C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2096C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2096C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2096C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2096C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2096C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2096C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S2096C2[];
extern  VTBL_ENTRY _ZTV7S2096C2[];
Class_Descriptor cd_S2096C2 = {  "S2096C2", // class name
  bases_S2096C2, 2,
  &(vtc_S2096C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2096C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2096C2),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2096C1  : S2096C2 {
  ::S381C11_nt s2096c1f0;
  char s2096c1f1;
  int s2096c1f2;
  char s2096c1f3;
  int s2096c1f4;
  ::S10007C27_nt s2096c1f5;
  ::S381C11_nt s2096c1f6;
  virtual  ~S2096C1(); // _ZN7S2096C1D1Ev
  virtual void  v1(); // _ZN7S2096C12v1Ev
  S2096C1(); // tgen
};
//SIG(1 S2096C1) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fp Fc Fi[4] Fp} vd v6 v7 v8 Fi[3]} vd v9 v10 v11 Fi[3]} vd v1 FC5{ m FL} Fc Fi Fc Fi FC6{ m FC7{ m FL[2]}} FC5}


 S2096C1 ::~S2096C1(){ note_dtor("S2096C1", this);}
void  S2096C1 ::v1(){vfunc_called(this, "_ZN7S2096C12v1Ev");}
S2096C1 ::S2096C1(){ note_ctor("S2096C1", this);} // tgen

static void Test_S2096C1()
{
  extern Class_Descriptor cd_S2096C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,27)];
    init_test(&cd_S2096C1, buf);
    S2096C1 *dp, &lv = *(dp=new (buf) S2096C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,104), "sizeof(S2096C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2096C1)");
    check_base_class_offset(lv, (S2096C4*)(S2096C3*)(S2096C2*), 0, "S2096C1");
    check_base_class_offset(lv, (S2096C3*)(S2096C2*), 0, "S2096C1");
    check_base_class_offset(lv, (S2096C2*), 0, "S2096C1");
    check_field_offset(lv, s2096c1f0, ABISELECT(72,56), "S2096C1.s2096c1f0");
    check_field_offset(lv, s2096c1f1, ABISELECT(80,64), "S2096C1.s2096c1f1");
    check_field_offset(lv, s2096c1f2, ABISELECT(84,68), "S2096C1.s2096c1f2");
    check_field_offset(lv, s2096c1f3, ABISELECT(88,72), "S2096C1.s2096c1f3");
    check_field_offset(lv, s2096c1f4, ABISELECT(92,76), "S2096C1.s2096c1f4");
    check_field_offset(lv, s2096c1f5, ABISELECT(96,80), "S2096C1.s2096c1f5");
    check_field_offset(lv, s2096c1f6, ABISELECT(112,96), "S2096C1.s2096c1f6");
    test_class_info(&lv, &cd_S2096C1);
    dp->~S2096C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2096C1(Test_S2096C1, "S2096C1", ABISELECT(120,104));

#else // __cplusplus

extern void _ZN7S2096C1C1Ev();
extern void _ZN7S2096C1D1Ev();
Name_Map name_map_S2096C1[] = {
  NSPAIR(_ZN7S2096C1C1Ev),
  NSPAIR(_ZN7S2096C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2096C4;
extern VTBL_ENTRY _ZTI7S2096C4[];
extern  VTBL_ENTRY _ZTV7S2096C4[];
extern Class_Descriptor cd_S2096C3;
extern VTBL_ENTRY _ZTI7S2096C3[];
extern  VTBL_ENTRY _ZTV7S2096C3[];
extern Class_Descriptor cd_S2096C2;
extern VTBL_ENTRY _ZTI7S2096C2[];
extern  VTBL_ENTRY _ZTV7S2096C2[];
static Base_Class bases_S2096C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2096C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2096C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2096C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2096C1[];
extern void _ZN7S2096C1D1Ev();
extern void _ZN7S2096C1D0Ev();
extern void _ZN7S2096C42v2Ev();
extern void _ZN7S2096C42v3Ev();
extern void _ZN7S2096C42v4Ev();
extern void _ZN7S2096C42v5Ev();
extern void _ZN7S2096C32v6Ev();
extern void _ZN7S2096C32v7Ev();
extern void _ZN7S2096C32v8Ev();
extern void _ZN7S2096C22v9Ev();
extern void _ZN7S2096C23v10Ev();
extern void _ZN7S2096C23v11Ev();
extern void _ZN7S2096C12v1Ev();
static  VTBL_ENTRY vtc_S2096C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2096C1[0]),
  (VTBL_ENTRY)&_ZN7S2096C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2096C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2096C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2096C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2096C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2096C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2096C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2096C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2096C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S2096C1[];
extern  VTBL_ENTRY _ZTV7S2096C1[];
Class_Descriptor cd_S2096C1 = {  "S2096C1", // class name
  bases_S2096C1, 3,
  &(vtc_S2096C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,104), // object size
  NSPAIRA(_ZTI7S2096C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2096C1),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2095C4  {
  void *s2095c4f0;
  char s2095c4f1;
  int s2095c4f2[4];
  void *s2095c4f3;
  virtual  ~S2095C4(); // _ZN7S2095C4D1Ev
  virtual void  v2(); // _ZN7S2095C42v2Ev
  virtual void  v3(); // _ZN7S2095C42v3Ev
  virtual void  v4(); // _ZN7S2095C42v4Ev
  virtual void  v5(); // _ZN7S2095C42v5Ev
  S2095C4(); // tgen
};
//SIG(-1 S2095C4) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S2095C4 ::~S2095C4(){ note_dtor("S2095C4", this);}
void  S2095C4 ::v2(){vfunc_called(this, "_ZN7S2095C42v2Ev");}
void  S2095C4 ::v3(){vfunc_called(this, "_ZN7S2095C42v3Ev");}
void  S2095C4 ::v4(){vfunc_called(this, "_ZN7S2095C42v4Ev");}
void  S2095C4 ::v5(){vfunc_called(this, "_ZN7S2095C42v5Ev");}
S2095C4 ::S2095C4(){ note_ctor("S2095C4", this);} // tgen

static void Test_S2095C4()
{
  extern Class_Descriptor cd_S2095C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S2095C4, buf);
    S2095C4 *dp, &lv = *(dp=new (buf) S2095C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S2095C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2095C4)");
    check_field_offset(lv, s2095c4f0, ABISELECT(8,4), "S2095C4.s2095c4f0");
    check_field_offset(lv, s2095c4f1, ABISELECT(16,8), "S2095C4.s2095c4f1");
    check_field_offset(lv, s2095c4f2, ABISELECT(20,12), "S2095C4.s2095c4f2");
    check_field_offset(lv, s2095c4f3, ABISELECT(40,28), "S2095C4.s2095c4f3");
    test_class_info(&lv, &cd_S2095C4);
    dp->~S2095C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2095C4(Test_S2095C4, "S2095C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S2095C4C1Ev();
extern void _ZN7S2095C4D1Ev();
Name_Map name_map_S2095C4[] = {
  NSPAIR(_ZN7S2095C4C1Ev),
  NSPAIR(_ZN7S2095C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2095C4[];
extern void _ZN7S2095C4D1Ev();
extern void _ZN7S2095C4D0Ev();
extern void _ZN7S2095C42v2Ev();
extern void _ZN7S2095C42v3Ev();
extern void _ZN7S2095C42v4Ev();
extern void _ZN7S2095C42v5Ev();
static  VTBL_ENTRY vtc_S2095C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2095C4[0]),
  (VTBL_ENTRY)&_ZN7S2095C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2095C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2095C4[];
extern  VTBL_ENTRY _ZTV7S2095C4[];
Class_Descriptor cd_S2095C4 = {  "S2095C4", // class name
  0,0,//no base classes
  &(vtc_S2095C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S2095C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2095C4),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2095C3  : S2095C4 {
  int s2095c3f0[3];
  virtual  ~S2095C3(); // _ZN7S2095C3D1Ev
  virtual void  v6(); // _ZN7S2095C32v6Ev
  virtual void  v7(); // _ZN7S2095C32v7Ev
  virtual void  v8(); // _ZN7S2095C32v8Ev
  S2095C3(); // tgen
};
//SIG(-1 S2095C3) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S2095C3 ::~S2095C3(){ note_dtor("S2095C3", this);}
void  S2095C3 ::v6(){vfunc_called(this, "_ZN7S2095C32v6Ev");}
void  S2095C3 ::v7(){vfunc_called(this, "_ZN7S2095C32v7Ev");}
void  S2095C3 ::v8(){vfunc_called(this, "_ZN7S2095C32v8Ev");}
S2095C3 ::S2095C3(){ note_ctor("S2095C3", this);} // tgen

static void Test_S2095C3()
{
  extern Class_Descriptor cd_S2095C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S2095C3, buf);
    S2095C3 *dp, &lv = *(dp=new (buf) S2095C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S2095C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2095C3)");
    check_base_class_offset(lv, (S2095C4*), 0, "S2095C3");
    check_field_offset(lv, s2095c3f0, ABISELECT(48,32), "S2095C3.s2095c3f0");
    test_class_info(&lv, &cd_S2095C3);
    dp->~S2095C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2095C3(Test_S2095C3, "S2095C3", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S2095C3C1Ev();
extern void _ZN7S2095C3D1Ev();
Name_Map name_map_S2095C3[] = {
  NSPAIR(_ZN7S2095C3C1Ev),
  NSPAIR(_ZN7S2095C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2095C4;
extern VTBL_ENTRY _ZTI7S2095C4[];
extern  VTBL_ENTRY _ZTV7S2095C4[];
static Base_Class bases_S2095C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2095C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2095C3[];
extern void _ZN7S2095C3D1Ev();
extern void _ZN7S2095C3D0Ev();
extern void _ZN7S2095C42v2Ev();
extern void _ZN7S2095C42v3Ev();
extern void _ZN7S2095C42v4Ev();
extern void _ZN7S2095C42v5Ev();
extern void _ZN7S2095C32v6Ev();
extern void _ZN7S2095C32v7Ev();
extern void _ZN7S2095C32v8Ev();
static  VTBL_ENTRY vtc_S2095C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2095C3[0]),
  (VTBL_ENTRY)&_ZN7S2095C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2095C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2095C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2095C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2095C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S2095C3[];
extern  VTBL_ENTRY _ZTV7S2095C3[];
Class_Descriptor cd_S2095C3 = {  "S2095C3", // class name
  bases_S2095C3, 1,
  &(vtc_S2095C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S2095C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2095C3),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2095C2  : S2095C3 {
  int s2095c2f0[3];
  virtual  ~S2095C2(); // _ZN7S2095C2D1Ev
  virtual void  v9(); // _ZN7S2095C22v9Ev
  virtual void  v10(); // _ZN7S2095C23v10Ev
  virtual void  v11(); // _ZN7S2095C23v11Ev
  S2095C2(); // tgen
};
//SIG(-1 S2095C2) C1{ BC2{ BC3{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v8 v9 v10 Fi[3]} vd v1 v2 v3 Fi[3]}


 S2095C2 ::~S2095C2(){ note_dtor("S2095C2", this);}
void  S2095C2 ::v9(){vfunc_called(this, "_ZN7S2095C22v9Ev");}
void  S2095C2 ::v10(){vfunc_called(this, "_ZN7S2095C23v10Ev");}
void  S2095C2 ::v11(){vfunc_called(this, "_ZN7S2095C23v11Ev");}
S2095C2 ::S2095C2(){ note_ctor("S2095C2", this);} // tgen

static void Test_S2095C2()
{
  extern Class_Descriptor cd_S2095C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2095C2, buf);
    S2095C2 *dp, &lv = *(dp=new (buf) S2095C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2095C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2095C2)");
    check_base_class_offset(lv, (S2095C4*)(S2095C3*), 0, "S2095C2");
    check_base_class_offset(lv, (S2095C3*), 0, "S2095C2");
    check_field_offset(lv, s2095c2f0, ABISELECT(60,44), "S2095C2.s2095c2f0");
    test_class_info(&lv, &cd_S2095C2);
    dp->~S2095C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2095C2(Test_S2095C2, "S2095C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2095C2C1Ev();
extern void _ZN7S2095C2D1Ev();
Name_Map name_map_S2095C2[] = {
  NSPAIR(_ZN7S2095C2C1Ev),
  NSPAIR(_ZN7S2095C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2095C4;
extern VTBL_ENTRY _ZTI7S2095C4[];
extern  VTBL_ENTRY _ZTV7S2095C4[];
extern Class_Descriptor cd_S2095C3;
extern VTBL_ENTRY _ZTI7S2095C3[];
extern  VTBL_ENTRY _ZTV7S2095C3[];
static Base_Class bases_S2095C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2095C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2095C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2095C2[];
extern void _ZN7S2095C2D1Ev();
extern void _ZN7S2095C2D0Ev();
extern void _ZN7S2095C42v2Ev();
extern void _ZN7S2095C42v3Ev();
extern void _ZN7S2095C42v4Ev();
extern void _ZN7S2095C42v5Ev();
extern void _ZN7S2095C32v6Ev();
extern void _ZN7S2095C32v7Ev();
extern void _ZN7S2095C32v8Ev();
extern void _ZN7S2095C22v9Ev();
extern void _ZN7S2095C23v10Ev();
extern void _ZN7S2095C23v11Ev();
static  VTBL_ENTRY vtc_S2095C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2095C2[0]),
  (VTBL_ENTRY)&_ZN7S2095C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2095C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2095C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2095C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2095C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2095C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2095C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2095C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S2095C2[];
extern  VTBL_ENTRY _ZTV7S2095C2[];
Class_Descriptor cd_S2095C2 = {  "S2095C2", // class name
  bases_S2095C2, 2,
  &(vtc_S2095C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2095C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2095C2),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2095C1  : S2095C2 {
  ::S380C11_nt s2095c1f0;
  char s2095c1f1;
  int s2095c1f2;
  char s2095c1f3;
  int s2095c1f4;
  ::S10007C27_nt s2095c1f5;
  ::S380C11_nt s2095c1f6;
  virtual  ~S2095C1(); // _ZN7S2095C1D1Ev
  virtual void  v1(); // _ZN7S2095C12v1Ev
  S2095C1(); // tgen
};
//SIG(1 S2095C1) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fp Fc Fi[4] Fp} vd v6 v7 v8 Fi[3]} vd v9 v10 v11 Fi[3]} vd v1 FC5{ m Fl} Fc Fi Fc Fi FC6{ m FC7{ m FL[2]}} FC5}


 S2095C1 ::~S2095C1(){ note_dtor("S2095C1", this);}
void  S2095C1 ::v1(){vfunc_called(this, "_ZN7S2095C12v1Ev");}
S2095C1 ::S2095C1(){ note_ctor("S2095C1", this);} // tgen

static void Test_S2095C1()
{
  extern Class_Descriptor cd_S2095C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,25)];
    init_test(&cd_S2095C1, buf);
    S2095C1 *dp, &lv = *(dp=new (buf) S2095C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,96), "sizeof(S2095C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2095C1)");
    check_base_class_offset(lv, (S2095C4*)(S2095C3*)(S2095C2*), 0, "S2095C1");
    check_base_class_offset(lv, (S2095C3*)(S2095C2*), 0, "S2095C1");
    check_base_class_offset(lv, (S2095C2*), 0, "S2095C1");
    check_field_offset(lv, s2095c1f0, ABISELECT(72,56), "S2095C1.s2095c1f0");
    check_field_offset(lv, s2095c1f1, ABISELECT(80,60), "S2095C1.s2095c1f1");
    check_field_offset(lv, s2095c1f2, ABISELECT(84,64), "S2095C1.s2095c1f2");
    check_field_offset(lv, s2095c1f3, ABISELECT(88,68), "S2095C1.s2095c1f3");
    check_field_offset(lv, s2095c1f4, ABISELECT(92,72), "S2095C1.s2095c1f4");
    check_field_offset(lv, s2095c1f5, ABISELECT(96,76), "S2095C1.s2095c1f5");
    check_field_offset(lv, s2095c1f6, ABISELECT(112,92), "S2095C1.s2095c1f6");
    test_class_info(&lv, &cd_S2095C1);
    dp->~S2095C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2095C1(Test_S2095C1, "S2095C1", ABISELECT(120,96));

#else // __cplusplus

extern void _ZN7S2095C1C1Ev();
extern void _ZN7S2095C1D1Ev();
Name_Map name_map_S2095C1[] = {
  NSPAIR(_ZN7S2095C1C1Ev),
  NSPAIR(_ZN7S2095C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2095C4;
extern VTBL_ENTRY _ZTI7S2095C4[];
extern  VTBL_ENTRY _ZTV7S2095C4[];
extern Class_Descriptor cd_S2095C3;
extern VTBL_ENTRY _ZTI7S2095C3[];
extern  VTBL_ENTRY _ZTV7S2095C3[];
extern Class_Descriptor cd_S2095C2;
extern VTBL_ENTRY _ZTI7S2095C2[];
extern  VTBL_ENTRY _ZTV7S2095C2[];
static Base_Class bases_S2095C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2095C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2095C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2095C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2095C1[];
extern void _ZN7S2095C1D1Ev();
extern void _ZN7S2095C1D0Ev();
extern void _ZN7S2095C42v2Ev();
extern void _ZN7S2095C42v3Ev();
extern void _ZN7S2095C42v4Ev();
extern void _ZN7S2095C42v5Ev();
extern void _ZN7S2095C32v6Ev();
extern void _ZN7S2095C32v7Ev();
extern void _ZN7S2095C32v8Ev();
extern void _ZN7S2095C22v9Ev();
extern void _ZN7S2095C23v10Ev();
extern void _ZN7S2095C23v11Ev();
extern void _ZN7S2095C12v1Ev();
static  VTBL_ENTRY vtc_S2095C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2095C1[0]),
  (VTBL_ENTRY)&_ZN7S2095C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2095C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2095C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2095C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2095C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2095C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2095C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2095C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2095C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S2095C1[];
extern  VTBL_ENTRY _ZTV7S2095C1[];
Class_Descriptor cd_S2095C1 = {  "S2095C1", // class name
  bases_S2095C1, 3,
  &(vtc_S2095C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,96), // object size
  NSPAIRA(_ZTI7S2095C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2095C1),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2197C4  {
  void *s2197c4f0;
  char s2197c4f1;
  int s2197c4f2[4];
  void *s2197c4f3;
  virtual  ~S2197C4(); // _ZN7S2197C4D1Ev
  virtual void  v3(); // _ZN7S2197C42v3Ev
  virtual void  v4(); // _ZN7S2197C42v4Ev
  virtual void  v5(); // _ZN7S2197C42v5Ev
  virtual void  v6(); // _ZN7S2197C42v6Ev
  S2197C4(); // tgen
};
//SIG(-1 S2197C4) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S2197C4 ::~S2197C4(){ note_dtor("S2197C4", this);}
void  S2197C4 ::v3(){vfunc_called(this, "_ZN7S2197C42v3Ev");}
void  S2197C4 ::v4(){vfunc_called(this, "_ZN7S2197C42v4Ev");}
void  S2197C4 ::v5(){vfunc_called(this, "_ZN7S2197C42v5Ev");}
void  S2197C4 ::v6(){vfunc_called(this, "_ZN7S2197C42v6Ev");}
S2197C4 ::S2197C4(){ note_ctor("S2197C4", this);} // tgen

static void Test_S2197C4()
{
  extern Class_Descriptor cd_S2197C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S2197C4, buf);
    S2197C4 *dp, &lv = *(dp=new (buf) S2197C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S2197C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2197C4)");
    check_field_offset(lv, s2197c4f0, ABISELECT(8,4), "S2197C4.s2197c4f0");
    check_field_offset(lv, s2197c4f1, ABISELECT(16,8), "S2197C4.s2197c4f1");
    check_field_offset(lv, s2197c4f2, ABISELECT(20,12), "S2197C4.s2197c4f2");
    check_field_offset(lv, s2197c4f3, ABISELECT(40,28), "S2197C4.s2197c4f3");
    test_class_info(&lv, &cd_S2197C4);
    dp->~S2197C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2197C4(Test_S2197C4, "S2197C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S2197C4C1Ev();
extern void _ZN7S2197C4D1Ev();
Name_Map name_map_S2197C4[] = {
  NSPAIR(_ZN7S2197C4C1Ev),
  NSPAIR(_ZN7S2197C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2197C4[];
extern void _ZN7S2197C4D1Ev();
extern void _ZN7S2197C4D0Ev();
extern void _ZN7S2197C42v3Ev();
extern void _ZN7S2197C42v4Ev();
extern void _ZN7S2197C42v5Ev();
extern void _ZN7S2197C42v6Ev();
static  VTBL_ENTRY vtc_S2197C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2197C4[0]),
  (VTBL_ENTRY)&_ZN7S2197C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2197C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S2197C4[];
extern  VTBL_ENTRY _ZTV7S2197C4[];
Class_Descriptor cd_S2197C4 = {  "S2197C4", // class name
  0,0,//no base classes
  &(vtc_S2197C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S2197C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2197C4),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2197C3  : S2197C4 {
  int s2197c3f0[3];
  virtual  ~S2197C3(); // _ZN7S2197C3D1Ev
  virtual void  v7(); // _ZN7S2197C32v7Ev
  virtual void  v8(); // _ZN7S2197C32v8Ev
  virtual void  v9(); // _ZN7S2197C32v9Ev
  S2197C3(); // tgen
};
//SIG(-1 S2197C3) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S2197C3 ::~S2197C3(){ note_dtor("S2197C3", this);}
void  S2197C3 ::v7(){vfunc_called(this, "_ZN7S2197C32v7Ev");}
void  S2197C3 ::v8(){vfunc_called(this, "_ZN7S2197C32v8Ev");}
void  S2197C3 ::v9(){vfunc_called(this, "_ZN7S2197C32v9Ev");}
S2197C3 ::S2197C3(){ note_ctor("S2197C3", this);} // tgen

static void Test_S2197C3()
{
  extern Class_Descriptor cd_S2197C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S2197C3, buf);
    S2197C3 *dp, &lv = *(dp=new (buf) S2197C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S2197C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2197C3)");
    check_base_class_offset(lv, (S2197C4*), 0, "S2197C3");
    check_field_offset(lv, s2197c3f0, ABISELECT(48,32), "S2197C3.s2197c3f0");
    test_class_info(&lv, &cd_S2197C3);
    dp->~S2197C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2197C3(Test_S2197C3, "S2197C3", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S2197C3C1Ev();
extern void _ZN7S2197C3D1Ev();
Name_Map name_map_S2197C3[] = {
  NSPAIR(_ZN7S2197C3C1Ev),
  NSPAIR(_ZN7S2197C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2197C4;
extern VTBL_ENTRY _ZTI7S2197C4[];
extern  VTBL_ENTRY _ZTV7S2197C4[];
static Base_Class bases_S2197C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2197C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2197C3[];
extern void _ZN7S2197C3D1Ev();
extern void _ZN7S2197C3D0Ev();
extern void _ZN7S2197C42v3Ev();
extern void _ZN7S2197C42v4Ev();
extern void _ZN7S2197C42v5Ev();
extern void _ZN7S2197C42v6Ev();
extern void _ZN7S2197C32v7Ev();
extern void _ZN7S2197C32v8Ev();
extern void _ZN7S2197C32v9Ev();
static  VTBL_ENTRY vtc_S2197C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2197C3[0]),
  (VTBL_ENTRY)&_ZN7S2197C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2197C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2197C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2197C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2197C32v9Ev,
};
extern VTBL_ENTRY _ZTI7S2197C3[];
extern  VTBL_ENTRY _ZTV7S2197C3[];
Class_Descriptor cd_S2197C3 = {  "S2197C3", // class name
  bases_S2197C3, 1,
  &(vtc_S2197C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S2197C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2197C3),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2197C2  : S2197C3 {
  int s2197c2f0[3];
  virtual  ~S2197C2(); // _ZN7S2197C2D1Ev
  virtual void  v10(); // _ZN7S2197C23v10Ev
  virtual void  v11(); // _ZN7S2197C23v11Ev
  virtual void  v12(); // _ZN7S2197C23v12Ev
  S2197C2(); // tgen
};
//SIG(-1 S2197C2) C1{ BC2{ BC3{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v8 v9 v10 Fi[3]} vd v1 v2 v3 Fi[3]}


 S2197C2 ::~S2197C2(){ note_dtor("S2197C2", this);}
void  S2197C2 ::v10(){vfunc_called(this, "_ZN7S2197C23v10Ev");}
void  S2197C2 ::v11(){vfunc_called(this, "_ZN7S2197C23v11Ev");}
void  S2197C2 ::v12(){vfunc_called(this, "_ZN7S2197C23v12Ev");}
S2197C2 ::S2197C2(){ note_ctor("S2197C2", this);} // tgen

static void Test_S2197C2()
{
  extern Class_Descriptor cd_S2197C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2197C2, buf);
    S2197C2 *dp, &lv = *(dp=new (buf) S2197C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2197C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2197C2)");
    check_base_class_offset(lv, (S2197C4*)(S2197C3*), 0, "S2197C2");
    check_base_class_offset(lv, (S2197C3*), 0, "S2197C2");
    check_field_offset(lv, s2197c2f0, ABISELECT(60,44), "S2197C2.s2197c2f0");
    test_class_info(&lv, &cd_S2197C2);
    dp->~S2197C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2197C2(Test_S2197C2, "S2197C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2197C2C1Ev();
extern void _ZN7S2197C2D1Ev();
Name_Map name_map_S2197C2[] = {
  NSPAIR(_ZN7S2197C2C1Ev),
  NSPAIR(_ZN7S2197C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2197C4;
extern VTBL_ENTRY _ZTI7S2197C4[];
extern  VTBL_ENTRY _ZTV7S2197C4[];
extern Class_Descriptor cd_S2197C3;
extern VTBL_ENTRY _ZTI7S2197C3[];
extern  VTBL_ENTRY _ZTV7S2197C3[];
static Base_Class bases_S2197C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2197C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2197C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2197C2[];
extern void _ZN7S2197C2D1Ev();
extern void _ZN7S2197C2D0Ev();
extern void _ZN7S2197C42v3Ev();
extern void _ZN7S2197C42v4Ev();
extern void _ZN7S2197C42v5Ev();
extern void _ZN7S2197C42v6Ev();
extern void _ZN7S2197C32v7Ev();
extern void _ZN7S2197C32v8Ev();
extern void _ZN7S2197C32v9Ev();
extern void _ZN7S2197C23v10Ev();
extern void _ZN7S2197C23v11Ev();
extern void _ZN7S2197C23v12Ev();
static  VTBL_ENTRY vtc_S2197C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2197C2[0]),
  (VTBL_ENTRY)&_ZN7S2197C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2197C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2197C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2197C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2197C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2197C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2197C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2197C23v12Ev,
};
extern VTBL_ENTRY _ZTI7S2197C2[];
extern  VTBL_ENTRY _ZTV7S2197C2[];
Class_Descriptor cd_S2197C2 = {  "S2197C2", // class name
  bases_S2197C2, 2,
  &(vtc_S2197C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2197C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2197C2),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2197C6  {
  virtual  ~S2197C6(); // _ZN7S2197C6D1Ev
  virtual void  v14(); // _ZN7S2197C63v14Ev
  S2197C6(); // tgen
};
//SIG(-1 S2197C6) C1{ vd v1}


 S2197C6 ::~S2197C6(){ note_dtor("S2197C6", this);}
void  S2197C6 ::v14(){vfunc_called(this, "_ZN7S2197C63v14Ev");}
S2197C6 ::S2197C6(){ note_ctor("S2197C6", this);} // tgen

static void Test_S2197C6()
{
  extern Class_Descriptor cd_S2197C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2197C6, buf);
    S2197C6 *dp, &lv = *(dp=new (buf) S2197C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2197C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2197C6)");
    test_class_info(&lv, &cd_S2197C6);
    dp->~S2197C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2197C6(Test_S2197C6, "S2197C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2197C6C1Ev();
extern void _ZN7S2197C6D1Ev();
Name_Map name_map_S2197C6[] = {
  NSPAIR(_ZN7S2197C6C1Ev),
  NSPAIR(_ZN7S2197C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2197C6[];
extern void _ZN7S2197C6D1Ev();
extern void _ZN7S2197C6D0Ev();
extern void _ZN7S2197C63v14Ev();
static  VTBL_ENTRY vtc_S2197C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2197C6[0]),
  (VTBL_ENTRY)&_ZN7S2197C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2197C6D0Ev,
  (VTBL_ENTRY)&_ZN7S2197C63v14Ev,
};
extern VTBL_ENTRY _ZTI7S2197C6[];
extern  VTBL_ENTRY _ZTV7S2197C6[];
Class_Descriptor cd_S2197C6 = {  "S2197C6", // class name
  0,0,//no base classes
  &(vtc_S2197C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2197C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2197C6),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2197C5  : S2197C6 {
  int s2197c5f0;
  virtual  ~S2197C5(); // _ZN7S2197C5D1Ev
  virtual void  v13(); // _ZN7S2197C53v13Ev
  S2197C5(); // tgen
};
//SIG(-1 S2197C5) C1{ BC2{ vd v2} vd v1 Fi}


 S2197C5 ::~S2197C5(){ note_dtor("S2197C5", this);}
void  S2197C5 ::v13(){vfunc_called(this, "_ZN7S2197C53v13Ev");}
S2197C5 ::S2197C5(){ note_ctor("S2197C5", this);} // tgen

static void Test_S2197C5()
{
  extern Class_Descriptor cd_S2197C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S2197C5, buf);
    S2197C5 *dp, &lv = *(dp=new (buf) S2197C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S2197C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2197C5)");
    check_base_class_offset(lv, (S2197C6*), 0, "S2197C5");
    check_field_offset(lv, s2197c5f0, ABISELECT(8,4), "S2197C5.s2197c5f0");
    test_class_info(&lv, &cd_S2197C5);
    dp->~S2197C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2197C5(Test_S2197C5, "S2197C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S2197C5C1Ev();
extern void _ZN7S2197C5D1Ev();
Name_Map name_map_S2197C5[] = {
  NSPAIR(_ZN7S2197C5C1Ev),
  NSPAIR(_ZN7S2197C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2197C6;
extern VTBL_ENTRY _ZTI7S2197C6[];
extern  VTBL_ENTRY _ZTV7S2197C6[];
static Base_Class bases_S2197C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2197C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2197C5[];
extern void _ZN7S2197C5D1Ev();
extern void _ZN7S2197C5D0Ev();
extern void _ZN7S2197C63v14Ev();
extern void _ZN7S2197C53v13Ev();
static  VTBL_ENTRY vtc_S2197C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2197C5[0]),
  (VTBL_ENTRY)&_ZN7S2197C5D1Ev,
  (VTBL_ENTRY)&_ZN7S2197C5D0Ev,
  (VTBL_ENTRY)&_ZN7S2197C63v14Ev,
  (VTBL_ENTRY)&_ZN7S2197C53v13Ev,
};
extern VTBL_ENTRY _ZTI7S2197C5[];
extern  VTBL_ENTRY _ZTV7S2197C5[];
Class_Descriptor cd_S2197C5 = {  "S2197C5", // class name
  bases_S2197C5, 1,
  &(vtc_S2197C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S2197C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2197C5),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2197C1  : S2197C2 {
  int s2197c1f0[3];
  char s2197c1f1[2];
  ::S2197C5 s2197c1f2;
  virtual  ~S2197C1(); // _ZN7S2197C1D1Ev
  virtual void  v1(); // _ZN7S2197C12v1Ev
  virtual void  v2(); // _ZN7S2197C12v2Ev
  S2197C1(); // tgen
};
//SIG(1 S2197C1) C1{ BC2{ BC3{ BC4{ vd v3 v4 v5 v6 Fp Fc Fi[4] Fp} vd v7 v8 v9 Fi[3]} vd v10 v11 v12 Fi[3]} vd v1 v2 Fi[3] Fc[2] FC5{ BC6{ vd v14} vd v13 Fi}}


 S2197C1 ::~S2197C1(){ note_dtor("S2197C1", this);}
void  S2197C1 ::v1(){vfunc_called(this, "_ZN7S2197C12v1Ev");}
void  S2197C1 ::v2(){vfunc_called(this, "_ZN7S2197C12v2Ev");}
S2197C1 ::S2197C1(){ note_ctor("S2197C1", this);} // tgen

static void Test_S2197C1()
{
  extern Class_Descriptor cd_S2197C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,21)];
    init_test(&cd_S2197C1, buf);
    S2197C1 *dp, &lv = *(dp=new (buf) S2197C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,80), "sizeof(S2197C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2197C1)");
    check_base_class_offset(lv, (S2197C4*)(S2197C3*)(S2197C2*), 0, "S2197C1");
    check_base_class_offset(lv, (S2197C3*)(S2197C2*), 0, "S2197C1");
    check_base_class_offset(lv, (S2197C2*), 0, "S2197C1");
    check_field_offset(lv, s2197c1f0, ABISELECT(72,56), "S2197C1.s2197c1f0");
    check_field_offset(lv, s2197c1f1, ABISELECT(84,68), "S2197C1.s2197c1f1");
    check_field_offset(lv, s2197c1f2, ABISELECT(88,72), "S2197C1.s2197c1f2");
    test_class_info(&lv, &cd_S2197C1);
    dp->~S2197C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2197C1(Test_S2197C1, "S2197C1", ABISELECT(104,80));

#else // __cplusplus

extern void _ZN7S2197C1C1Ev();
extern void _ZN7S2197C1D1Ev();
Name_Map name_map_S2197C1[] = {
  NSPAIR(_ZN7S2197C1C1Ev),
  NSPAIR(_ZN7S2197C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2197C4;
extern VTBL_ENTRY _ZTI7S2197C4[];
extern  VTBL_ENTRY _ZTV7S2197C4[];
extern Class_Descriptor cd_S2197C3;
extern VTBL_ENTRY _ZTI7S2197C3[];
extern  VTBL_ENTRY _ZTV7S2197C3[];
extern Class_Descriptor cd_S2197C2;
extern VTBL_ENTRY _ZTI7S2197C2[];
extern  VTBL_ENTRY _ZTV7S2197C2[];
static Base_Class bases_S2197C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2197C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2197C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2197C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2197C1[];
extern void _ZN7S2197C1D1Ev();
extern void _ZN7S2197C1D0Ev();
extern void _ZN7S2197C42v3Ev();
extern void _ZN7S2197C42v4Ev();
extern void _ZN7S2197C42v5Ev();
extern void _ZN7S2197C42v6Ev();
extern void _ZN7S2197C32v7Ev();
extern void _ZN7S2197C32v8Ev();
extern void _ZN7S2197C32v9Ev();
extern void _ZN7S2197C23v10Ev();
extern void _ZN7S2197C23v11Ev();
extern void _ZN7S2197C23v12Ev();
extern void _ZN7S2197C12v1Ev();
extern void _ZN7S2197C12v2Ev();
static  VTBL_ENTRY vtc_S2197C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2197C1[0]),
  (VTBL_ENTRY)&_ZN7S2197C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2197C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2197C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2197C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2197C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2197C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2197C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2197C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2197C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2197C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S2197C1[];
extern  VTBL_ENTRY _ZTV7S2197C1[];
Class_Descriptor cd_S2197C1 = {  "S2197C1", // class name
  bases_S2197C1, 3,
  &(vtc_S2197C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,80), // object size
  NSPAIRA(_ZTI7S2197C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2197C1),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2198C4  {
  void *s2198c4f0;
  char s2198c4f1;
  int s2198c4f2[4];
  void *s2198c4f3;
  virtual  ~S2198C4(); // _ZN7S2198C4D1Ev
  virtual void  v3(); // _ZN7S2198C42v3Ev
  virtual void  v4(); // _ZN7S2198C42v4Ev
  virtual void  v5(); // _ZN7S2198C42v5Ev
  virtual void  v6(); // _ZN7S2198C42v6Ev
  S2198C4(); // tgen
};
//SIG(-1 S2198C4) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S2198C4 ::~S2198C4(){ note_dtor("S2198C4", this);}
void  S2198C4 ::v3(){vfunc_called(this, "_ZN7S2198C42v3Ev");}
void  S2198C4 ::v4(){vfunc_called(this, "_ZN7S2198C42v4Ev");}
void  S2198C4 ::v5(){vfunc_called(this, "_ZN7S2198C42v5Ev");}
void  S2198C4 ::v6(){vfunc_called(this, "_ZN7S2198C42v6Ev");}
S2198C4 ::S2198C4(){ note_ctor("S2198C4", this);} // tgen

static void Test_S2198C4()
{
  extern Class_Descriptor cd_S2198C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S2198C4, buf);
    S2198C4 *dp, &lv = *(dp=new (buf) S2198C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S2198C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2198C4)");
    check_field_offset(lv, s2198c4f0, ABISELECT(8,4), "S2198C4.s2198c4f0");
    check_field_offset(lv, s2198c4f1, ABISELECT(16,8), "S2198C4.s2198c4f1");
    check_field_offset(lv, s2198c4f2, ABISELECT(20,12), "S2198C4.s2198c4f2");
    check_field_offset(lv, s2198c4f3, ABISELECT(40,28), "S2198C4.s2198c4f3");
    test_class_info(&lv, &cd_S2198C4);
    dp->~S2198C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2198C4(Test_S2198C4, "S2198C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S2198C4C1Ev();
extern void _ZN7S2198C4D1Ev();
Name_Map name_map_S2198C4[] = {
  NSPAIR(_ZN7S2198C4C1Ev),
  NSPAIR(_ZN7S2198C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2198C4[];
extern void _ZN7S2198C4D1Ev();
extern void _ZN7S2198C4D0Ev();
extern void _ZN7S2198C42v3Ev();
extern void _ZN7S2198C42v4Ev();
extern void _ZN7S2198C42v5Ev();
extern void _ZN7S2198C42v6Ev();
static  VTBL_ENTRY vtc_S2198C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2198C4[0]),
  (VTBL_ENTRY)&_ZN7S2198C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2198C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S2198C4[];
extern  VTBL_ENTRY _ZTV7S2198C4[];
Class_Descriptor cd_S2198C4 = {  "S2198C4", // class name
  0,0,//no base classes
  &(vtc_S2198C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S2198C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2198C4),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2198C3  : S2198C4 {
  int s2198c3f0[3];
  virtual  ~S2198C3(); // _ZN7S2198C3D1Ev
  virtual void  v7(); // _ZN7S2198C32v7Ev
  virtual void  v8(); // _ZN7S2198C32v8Ev
  virtual void  v9(); // _ZN7S2198C32v9Ev
  S2198C3(); // tgen
};
//SIG(-1 S2198C3) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S2198C3 ::~S2198C3(){ note_dtor("S2198C3", this);}
void  S2198C3 ::v7(){vfunc_called(this, "_ZN7S2198C32v7Ev");}
void  S2198C3 ::v8(){vfunc_called(this, "_ZN7S2198C32v8Ev");}
void  S2198C3 ::v9(){vfunc_called(this, "_ZN7S2198C32v9Ev");}
S2198C3 ::S2198C3(){ note_ctor("S2198C3", this);} // tgen

static void Test_S2198C3()
{
  extern Class_Descriptor cd_S2198C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S2198C3, buf);
    S2198C3 *dp, &lv = *(dp=new (buf) S2198C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S2198C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2198C3)");
    check_base_class_offset(lv, (S2198C4*), 0, "S2198C3");
    check_field_offset(lv, s2198c3f0, ABISELECT(48,32), "S2198C3.s2198c3f0");
    test_class_info(&lv, &cd_S2198C3);
    dp->~S2198C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2198C3(Test_S2198C3, "S2198C3", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S2198C3C1Ev();
extern void _ZN7S2198C3D1Ev();
Name_Map name_map_S2198C3[] = {
  NSPAIR(_ZN7S2198C3C1Ev),
  NSPAIR(_ZN7S2198C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2198C4;
extern VTBL_ENTRY _ZTI7S2198C4[];
extern  VTBL_ENTRY _ZTV7S2198C4[];
static Base_Class bases_S2198C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2198C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2198C3[];
extern void _ZN7S2198C3D1Ev();
extern void _ZN7S2198C3D0Ev();
extern void _ZN7S2198C42v3Ev();
extern void _ZN7S2198C42v4Ev();
extern void _ZN7S2198C42v5Ev();
extern void _ZN7S2198C42v6Ev();
extern void _ZN7S2198C32v7Ev();
extern void _ZN7S2198C32v8Ev();
extern void _ZN7S2198C32v9Ev();
static  VTBL_ENTRY vtc_S2198C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2198C3[0]),
  (VTBL_ENTRY)&_ZN7S2198C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2198C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2198C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2198C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2198C32v9Ev,
};
extern VTBL_ENTRY _ZTI7S2198C3[];
extern  VTBL_ENTRY _ZTV7S2198C3[];
Class_Descriptor cd_S2198C3 = {  "S2198C3", // class name
  bases_S2198C3, 1,
  &(vtc_S2198C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S2198C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2198C3),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2198C2  : S2198C3 {
  int s2198c2f0[3];
  virtual  ~S2198C2(); // _ZN7S2198C2D1Ev
  virtual void  v10(); // _ZN7S2198C23v10Ev
  virtual void  v11(); // _ZN7S2198C23v11Ev
  virtual void  v12(); // _ZN7S2198C23v12Ev
  S2198C2(); // tgen
};
//SIG(-1 S2198C2) C1{ BC2{ BC3{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v8 v9 v10 Fi[3]} vd v1 v2 v3 Fi[3]}


 S2198C2 ::~S2198C2(){ note_dtor("S2198C2", this);}
void  S2198C2 ::v10(){vfunc_called(this, "_ZN7S2198C23v10Ev");}
void  S2198C2 ::v11(){vfunc_called(this, "_ZN7S2198C23v11Ev");}
void  S2198C2 ::v12(){vfunc_called(this, "_ZN7S2198C23v12Ev");}
S2198C2 ::S2198C2(){ note_ctor("S2198C2", this);} // tgen

static void Test_S2198C2()
{
  extern Class_Descriptor cd_S2198C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2198C2, buf);
    S2198C2 *dp, &lv = *(dp=new (buf) S2198C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2198C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2198C2)");
    check_base_class_offset(lv, (S2198C4*)(S2198C3*), 0, "S2198C2");
    check_base_class_offset(lv, (S2198C3*), 0, "S2198C2");
    check_field_offset(lv, s2198c2f0, ABISELECT(60,44), "S2198C2.s2198c2f0");
    test_class_info(&lv, &cd_S2198C2);
    dp->~S2198C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2198C2(Test_S2198C2, "S2198C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2198C2C1Ev();
extern void _ZN7S2198C2D1Ev();
Name_Map name_map_S2198C2[] = {
  NSPAIR(_ZN7S2198C2C1Ev),
  NSPAIR(_ZN7S2198C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2198C4;
extern VTBL_ENTRY _ZTI7S2198C4[];
extern  VTBL_ENTRY _ZTV7S2198C4[];
extern Class_Descriptor cd_S2198C3;
extern VTBL_ENTRY _ZTI7S2198C3[];
extern  VTBL_ENTRY _ZTV7S2198C3[];
static Base_Class bases_S2198C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2198C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2198C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2198C2[];
extern void _ZN7S2198C2D1Ev();
extern void _ZN7S2198C2D0Ev();
extern void _ZN7S2198C42v3Ev();
extern void _ZN7S2198C42v4Ev();
extern void _ZN7S2198C42v5Ev();
extern void _ZN7S2198C42v6Ev();
extern void _ZN7S2198C32v7Ev();
extern void _ZN7S2198C32v8Ev();
extern void _ZN7S2198C32v9Ev();
extern void _ZN7S2198C23v10Ev();
extern void _ZN7S2198C23v11Ev();
extern void _ZN7S2198C23v12Ev();
static  VTBL_ENTRY vtc_S2198C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2198C2[0]),
  (VTBL_ENTRY)&_ZN7S2198C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2198C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2198C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2198C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2198C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2198C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2198C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2198C23v12Ev,
};
extern VTBL_ENTRY _ZTI7S2198C2[];
extern  VTBL_ENTRY _ZTV7S2198C2[];
Class_Descriptor cd_S2198C2 = {  "S2198C2", // class name
  bases_S2198C2, 2,
  &(vtc_S2198C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2198C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2198C2),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2198C1  : S2198C2 {
  int s2198c1f0[7];
  char s2198c1f1;
  ::S2197C5 s2198c1f2;
  virtual  ~S2198C1(); // _ZN7S2198C1D1Ev
  virtual void  v1(); // _ZN7S2198C12v1Ev
  virtual void  v2(); // _ZN7S2198C12v2Ev
  S2198C1(); // tgen
};
//SIG(1 S2198C1) C1{ BC2{ BC3{ BC4{ vd v3 v4 v5 v6 Fp Fc Fi[4] Fp} vd v7 v8 v9 Fi[3]} vd v10 v11 v12 Fi[3]} vd v1 v2 Fi[7] Fc FC5{ BC6{ vd v14} vd v13 Fi}}


 S2198C1 ::~S2198C1(){ note_dtor("S2198C1", this);}
void  S2198C1 ::v1(){vfunc_called(this, "_ZN7S2198C12v1Ev");}
void  S2198C1 ::v2(){vfunc_called(this, "_ZN7S2198C12v2Ev");}
S2198C1 ::S2198C1(){ note_ctor("S2198C1", this);} // tgen

static void Test_S2198C1()
{
  extern Class_Descriptor cd_S2198C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,25)];
    init_test(&cd_S2198C1, buf);
    S2198C1 *dp, &lv = *(dp=new (buf) S2198C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,96), "sizeof(S2198C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2198C1)");
    check_base_class_offset(lv, (S2198C4*)(S2198C3*)(S2198C2*), 0, "S2198C1");
    check_base_class_offset(lv, (S2198C3*)(S2198C2*), 0, "S2198C1");
    check_base_class_offset(lv, (S2198C2*), 0, "S2198C1");
    check_field_offset(lv, s2198c1f0, ABISELECT(72,56), "S2198C1.s2198c1f0");
    check_field_offset(lv, s2198c1f1, ABISELECT(100,84), "S2198C1.s2198c1f1");
    check_field_offset(lv, s2198c1f2, ABISELECT(104,88), "S2198C1.s2198c1f2");
    test_class_info(&lv, &cd_S2198C1);
    dp->~S2198C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2198C1(Test_S2198C1, "S2198C1", ABISELECT(120,96));

#else // __cplusplus

extern void _ZN7S2198C1C1Ev();
extern void _ZN7S2198C1D1Ev();
Name_Map name_map_S2198C1[] = {
  NSPAIR(_ZN7S2198C1C1Ev),
  NSPAIR(_ZN7S2198C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2198C4;
extern VTBL_ENTRY _ZTI7S2198C4[];
extern  VTBL_ENTRY _ZTV7S2198C4[];
extern Class_Descriptor cd_S2198C3;
extern VTBL_ENTRY _ZTI7S2198C3[];
extern  VTBL_ENTRY _ZTV7S2198C3[];
extern Class_Descriptor cd_S2198C2;
extern VTBL_ENTRY _ZTI7S2198C2[];
extern  VTBL_ENTRY _ZTV7S2198C2[];
static Base_Class bases_S2198C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2198C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2198C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2198C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2198C1[];
extern void _ZN7S2198C1D1Ev();
extern void _ZN7S2198C1D0Ev();
extern void _ZN7S2198C42v3Ev();
extern void _ZN7S2198C42v4Ev();
extern void _ZN7S2198C42v5Ev();
extern void _ZN7S2198C42v6Ev();
extern void _ZN7S2198C32v7Ev();
extern void _ZN7S2198C32v8Ev();
extern void _ZN7S2198C32v9Ev();
extern void _ZN7S2198C23v10Ev();
extern void _ZN7S2198C23v11Ev();
extern void _ZN7S2198C23v12Ev();
extern void _ZN7S2198C12v1Ev();
extern void _ZN7S2198C12v2Ev();
static  VTBL_ENTRY vtc_S2198C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2198C1[0]),
  (VTBL_ENTRY)&_ZN7S2198C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2198C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2198C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2198C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2198C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2198C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2198C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2198C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2198C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2198C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S2198C1[];
extern  VTBL_ENTRY _ZTV7S2198C1[];
Class_Descriptor cd_S2198C1 = {  "S2198C1", // class name
  bases_S2198C1, 3,
  &(vtc_S2198C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,96), // object size
  NSPAIRA(_ZTI7S2198C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2198C1),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9477C2  {
  char s9477c2f0;
  int s9477c2f1;
  void *s9477c2f2[3];
  char s9477c2f3[3];
  ::S4228C19_nt s9477c2f4;
  char s9477c2f5;
  void *s9477c2f6;
  int s9477c2f7[2];
  virtual  ~S9477C2(); // _ZN7S9477C2D1Ev
  virtual void  v3(); // _ZN7S9477C22v3Ev
  virtual void  v4(); // _ZN7S9477C22v4Ev
  virtual void  v5(); // _ZN7S9477C22v5Ev
  virtual void  v6(); // _ZN7S9477C22v6Ev
  virtual void  v7(); // _ZN7S9477C22v7Ev
  virtual void  v8(); // _ZN7S9477C22v8Ev
  virtual void  v9(); // _ZN7S9477C22v9Ev
  virtual void  v10(); // _ZN7S9477C23v10Ev
  virtual void  v11(); // _ZN7S9477C23v11Ev
  virtual void  v12(); // _ZN7S9477C23v12Ev
  virtual void  v13(); // _ZN7S9477C23v13Ev
  virtual void  v14(); // _ZN7S9477C23v14Ev
  virtual void  v15(); // _ZN7S9477C23v15Ev
  virtual void  v16(); // _ZN7S9477C23v16Ev
  S9477C2(); // tgen
};
//SIG(-1 S9477C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fc Fi Fp[3] Fc[3] FC2{ m Fp Fi FC3{ m}} Fc Fp Fi[2]}


 S9477C2 ::~S9477C2(){ note_dtor("S9477C2", this);}
void  S9477C2 ::v3(){vfunc_called(this, "_ZN7S9477C22v3Ev");}
void  S9477C2 ::v4(){vfunc_called(this, "_ZN7S9477C22v4Ev");}
void  S9477C2 ::v5(){vfunc_called(this, "_ZN7S9477C22v5Ev");}
void  S9477C2 ::v6(){vfunc_called(this, "_ZN7S9477C22v6Ev");}
void  S9477C2 ::v7(){vfunc_called(this, "_ZN7S9477C22v7Ev");}
void  S9477C2 ::v8(){vfunc_called(this, "_ZN7S9477C22v8Ev");}
void  S9477C2 ::v9(){vfunc_called(this, "_ZN7S9477C22v9Ev");}
void  S9477C2 ::v10(){vfunc_called(this, "_ZN7S9477C23v10Ev");}
void  S9477C2 ::v11(){vfunc_called(this, "_ZN7S9477C23v11Ev");}
void  S9477C2 ::v12(){vfunc_called(this, "_ZN7S9477C23v12Ev");}
void  S9477C2 ::v13(){vfunc_called(this, "_ZN7S9477C23v13Ev");}
void  S9477C2 ::v14(){vfunc_called(this, "_ZN7S9477C23v14Ev");}
void  S9477C2 ::v15(){vfunc_called(this, "_ZN7S9477C23v15Ev");}
void  S9477C2 ::v16(){vfunc_called(this, "_ZN7S9477C23v16Ev");}
S9477C2 ::S9477C2(){ note_ctor("S9477C2", this);} // tgen

static void Test_S9477C2()
{
  extern Class_Descriptor cd_S9477C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S9477C2, buf);
    S9477C2 *dp, &lv = *(dp=new (buf) S9477C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S9477C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9477C2)");
    check_field_offset(lv, s9477c2f0, ABISELECT(8,4), "S9477C2.s9477c2f0");
    check_field_offset(lv, s9477c2f1, ABISELECT(12,8), "S9477C2.s9477c2f1");
    check_field_offset(lv, s9477c2f2, ABISELECT(16,12), "S9477C2.s9477c2f2");
    check_field_offset(lv, s9477c2f3, ABISELECT(40,24), "S9477C2.s9477c2f3");
    check_field_offset(lv, s9477c2f4, ABISELECT(48,28), "S9477C2.s9477c2f4");
    check_field_offset(lv, s9477c2f5, ABISELECT(64,40), "S9477C2.s9477c2f5");
    check_field_offset(lv, s9477c2f6, ABISELECT(72,44), "S9477C2.s9477c2f6");
    check_field_offset(lv, s9477c2f7, ABISELECT(80,48), "S9477C2.s9477c2f7");
    test_class_info(&lv, &cd_S9477C2);
    dp->~S9477C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9477C2(Test_S9477C2, "S9477C2", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S9477C2C1Ev();
extern void _ZN7S9477C2D1Ev();
Name_Map name_map_S9477C2[] = {
  NSPAIR(_ZN7S9477C2C1Ev),
  NSPAIR(_ZN7S9477C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9477C2[];
extern void _ZN7S9477C2D1Ev();
extern void _ZN7S9477C2D0Ev();
extern void _ZN7S9477C22v3Ev();
extern void _ZN7S9477C22v4Ev();
extern void _ZN7S9477C22v5Ev();
extern void _ZN7S9477C22v6Ev();
extern void _ZN7S9477C22v7Ev();
extern void _ZN7S9477C22v8Ev();
extern void _ZN7S9477C22v9Ev();
extern void _ZN7S9477C23v10Ev();
extern void _ZN7S9477C23v11Ev();
extern void _ZN7S9477C23v12Ev();
extern void _ZN7S9477C23v13Ev();
extern void _ZN7S9477C23v14Ev();
extern void _ZN7S9477C23v15Ev();
extern void _ZN7S9477C23v16Ev();
static  VTBL_ENTRY vtc_S9477C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9477C2[0]),
  (VTBL_ENTRY)&_ZN7S9477C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9477C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v15Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v16Ev,
};
extern VTBL_ENTRY _ZTI7S9477C2[];
extern  VTBL_ENTRY _ZTV7S9477C2[];
Class_Descriptor cd_S9477C2 = {  "S9477C2", // class name
  0,0,//no base classes
  &(vtc_S9477C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S9477C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9477C2),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9477C1  : S9477C2 {
  virtual  ~S9477C1(); // _ZN7S9477C1D1Ev
  virtual void  v1(); // _ZN7S9477C12v1Ev
  virtual void  v2(); // _ZN7S9477C12v2Ev
  S9477C1(); // tgen
};
//SIG(1 S9477C1) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 Fc Fi Fp[3] Fc[3] FC3{ m Fp Fi FC4{ m}} Fc Fp Fi[2]} vd v1 v2}


 S9477C1 ::~S9477C1(){ note_dtor("S9477C1", this);}
void  S9477C1 ::v1(){vfunc_called(this, "_ZN7S9477C12v1Ev");}
void  S9477C1 ::v2(){vfunc_called(this, "_ZN7S9477C12v2Ev");}
S9477C1 ::S9477C1(){ note_ctor("S9477C1", this);} // tgen

static void Test_S9477C1()
{
  extern Class_Descriptor cd_S9477C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S9477C1, buf);
    S9477C1 *dp, &lv = *(dp=new (buf) S9477C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S9477C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9477C1)");
    check_base_class_offset(lv, (S9477C2*), 0, "S9477C1");
    test_class_info(&lv, &cd_S9477C1);
    dp->~S9477C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9477C1(Test_S9477C1, "S9477C1", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S9477C1C1Ev();
extern void _ZN7S9477C1D1Ev();
Name_Map name_map_S9477C1[] = {
  NSPAIR(_ZN7S9477C1C1Ev),
  NSPAIR(_ZN7S9477C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9477C2;
extern VTBL_ENTRY _ZTI7S9477C2[];
extern  VTBL_ENTRY _ZTV7S9477C2[];
static Base_Class bases_S9477C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9477C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9477C1[];
extern void _ZN7S9477C1D1Ev();
extern void _ZN7S9477C1D0Ev();
extern void _ZN7S9477C22v3Ev();
extern void _ZN7S9477C22v4Ev();
extern void _ZN7S9477C22v5Ev();
extern void _ZN7S9477C22v6Ev();
extern void _ZN7S9477C22v7Ev();
extern void _ZN7S9477C22v8Ev();
extern void _ZN7S9477C22v9Ev();
extern void _ZN7S9477C23v10Ev();
extern void _ZN7S9477C23v11Ev();
extern void _ZN7S9477C23v12Ev();
extern void _ZN7S9477C23v13Ev();
extern void _ZN7S9477C23v14Ev();
extern void _ZN7S9477C23v15Ev();
extern void _ZN7S9477C23v16Ev();
extern void _ZN7S9477C12v1Ev();
extern void _ZN7S9477C12v2Ev();
static  VTBL_ENTRY vtc_S9477C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9477C1[0]),
  (VTBL_ENTRY)&_ZN7S9477C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9477C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v15Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v16Ev,
  (VTBL_ENTRY)&_ZN7S9477C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9477C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9477C1[];
extern  VTBL_ENTRY _ZTV7S9477C1[];
Class_Descriptor cd_S9477C1 = {  "S9477C1", // class name
  bases_S9477C1, 1,
  &(vtc_S9477C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S9477C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9477C1),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2097C4  {
  void *s2097c4f0;
  char s2097c4f1;
  int s2097c4f2[4];
  void *s2097c4f3;
  virtual  ~S2097C4(); // _ZN7S2097C4D1Ev
  virtual void  v2(); // _ZN7S2097C42v2Ev
  virtual void  v3(); // _ZN7S2097C42v3Ev
  virtual void  v4(); // _ZN7S2097C42v4Ev
  virtual void  v5(); // _ZN7S2097C42v5Ev
  S2097C4(); // tgen
};
//SIG(-1 S2097C4) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S2097C4 ::~S2097C4(){ note_dtor("S2097C4", this);}
void  S2097C4 ::v2(){vfunc_called(this, "_ZN7S2097C42v2Ev");}
void  S2097C4 ::v3(){vfunc_called(this, "_ZN7S2097C42v3Ev");}
void  S2097C4 ::v4(){vfunc_called(this, "_ZN7S2097C42v4Ev");}
void  S2097C4 ::v5(){vfunc_called(this, "_ZN7S2097C42v5Ev");}
S2097C4 ::S2097C4(){ note_ctor("S2097C4", this);} // tgen

static void Test_S2097C4()
{
  extern Class_Descriptor cd_S2097C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S2097C4, buf);
    S2097C4 *dp, &lv = *(dp=new (buf) S2097C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S2097C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2097C4)");
    check_field_offset(lv, s2097c4f0, ABISELECT(8,4), "S2097C4.s2097c4f0");
    check_field_offset(lv, s2097c4f1, ABISELECT(16,8), "S2097C4.s2097c4f1");
    check_field_offset(lv, s2097c4f2, ABISELECT(20,12), "S2097C4.s2097c4f2");
    check_field_offset(lv, s2097c4f3, ABISELECT(40,28), "S2097C4.s2097c4f3");
    test_class_info(&lv, &cd_S2097C4);
    dp->~S2097C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2097C4(Test_S2097C4, "S2097C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S2097C4C1Ev();
extern void _ZN7S2097C4D1Ev();
Name_Map name_map_S2097C4[] = {
  NSPAIR(_ZN7S2097C4C1Ev),
  NSPAIR(_ZN7S2097C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2097C4[];
extern void _ZN7S2097C4D1Ev();
extern void _ZN7S2097C4D0Ev();
extern void _ZN7S2097C42v2Ev();
extern void _ZN7S2097C42v3Ev();
extern void _ZN7S2097C42v4Ev();
extern void _ZN7S2097C42v5Ev();
static  VTBL_ENTRY vtc_S2097C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2097C4[0]),
  (VTBL_ENTRY)&_ZN7S2097C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2097C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2097C4[];
extern  VTBL_ENTRY _ZTV7S2097C4[];
Class_Descriptor cd_S2097C4 = {  "S2097C4", // class name
  0,0,//no base classes
  &(vtc_S2097C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S2097C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2097C4),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2097C3  : S2097C4 {
  int s2097c3f0[3];
  virtual  ~S2097C3(); // _ZN7S2097C3D1Ev
  virtual void  v6(); // _ZN7S2097C32v6Ev
  virtual void  v7(); // _ZN7S2097C32v7Ev
  virtual void  v8(); // _ZN7S2097C32v8Ev
  S2097C3(); // tgen
};
//SIG(-1 S2097C3) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S2097C3 ::~S2097C3(){ note_dtor("S2097C3", this);}
void  S2097C3 ::v6(){vfunc_called(this, "_ZN7S2097C32v6Ev");}
void  S2097C3 ::v7(){vfunc_called(this, "_ZN7S2097C32v7Ev");}
void  S2097C3 ::v8(){vfunc_called(this, "_ZN7S2097C32v8Ev");}
S2097C3 ::S2097C3(){ note_ctor("S2097C3", this);} // tgen

static void Test_S2097C3()
{
  extern Class_Descriptor cd_S2097C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S2097C3, buf);
    S2097C3 *dp, &lv = *(dp=new (buf) S2097C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S2097C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2097C3)");
    check_base_class_offset(lv, (S2097C4*), 0, "S2097C3");
    check_field_offset(lv, s2097c3f0, ABISELECT(48,32), "S2097C3.s2097c3f0");
    test_class_info(&lv, &cd_S2097C3);
    dp->~S2097C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2097C3(Test_S2097C3, "S2097C3", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S2097C3C1Ev();
extern void _ZN7S2097C3D1Ev();
Name_Map name_map_S2097C3[] = {
  NSPAIR(_ZN7S2097C3C1Ev),
  NSPAIR(_ZN7S2097C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2097C4;
extern VTBL_ENTRY _ZTI7S2097C4[];
extern  VTBL_ENTRY _ZTV7S2097C4[];
static Base_Class bases_S2097C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2097C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2097C3[];
extern void _ZN7S2097C3D1Ev();
extern void _ZN7S2097C3D0Ev();
extern void _ZN7S2097C42v2Ev();
extern void _ZN7S2097C42v3Ev();
extern void _ZN7S2097C42v4Ev();
extern void _ZN7S2097C42v5Ev();
extern void _ZN7S2097C32v6Ev();
extern void _ZN7S2097C32v7Ev();
extern void _ZN7S2097C32v8Ev();
static  VTBL_ENTRY vtc_S2097C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2097C3[0]),
  (VTBL_ENTRY)&_ZN7S2097C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2097C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2097C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2097C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2097C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S2097C3[];
extern  VTBL_ENTRY _ZTV7S2097C3[];
Class_Descriptor cd_S2097C3 = {  "S2097C3", // class name
  bases_S2097C3, 1,
  &(vtc_S2097C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S2097C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2097C3),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2097C2  : S2097C3 {
  int s2097c2f0[3];
  virtual  ~S2097C2(); // _ZN7S2097C2D1Ev
  virtual void  v9(); // _ZN7S2097C22v9Ev
  virtual void  v10(); // _ZN7S2097C23v10Ev
  virtual void  v11(); // _ZN7S2097C23v11Ev
  S2097C2(); // tgen
};
//SIG(-1 S2097C2) C1{ BC2{ BC3{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v8 v9 v10 Fi[3]} vd v1 v2 v3 Fi[3]}


 S2097C2 ::~S2097C2(){ note_dtor("S2097C2", this);}
void  S2097C2 ::v9(){vfunc_called(this, "_ZN7S2097C22v9Ev");}
void  S2097C2 ::v10(){vfunc_called(this, "_ZN7S2097C23v10Ev");}
void  S2097C2 ::v11(){vfunc_called(this, "_ZN7S2097C23v11Ev");}
S2097C2 ::S2097C2(){ note_ctor("S2097C2", this);} // tgen

static void Test_S2097C2()
{
  extern Class_Descriptor cd_S2097C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2097C2, buf);
    S2097C2 *dp, &lv = *(dp=new (buf) S2097C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2097C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2097C2)");
    check_base_class_offset(lv, (S2097C4*)(S2097C3*), 0, "S2097C2");
    check_base_class_offset(lv, (S2097C3*), 0, "S2097C2");
    check_field_offset(lv, s2097c2f0, ABISELECT(60,44), "S2097C2.s2097c2f0");
    test_class_info(&lv, &cd_S2097C2);
    dp->~S2097C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2097C2(Test_S2097C2, "S2097C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2097C2C1Ev();
extern void _ZN7S2097C2D1Ev();
Name_Map name_map_S2097C2[] = {
  NSPAIR(_ZN7S2097C2C1Ev),
  NSPAIR(_ZN7S2097C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2097C4;
extern VTBL_ENTRY _ZTI7S2097C4[];
extern  VTBL_ENTRY _ZTV7S2097C4[];
extern Class_Descriptor cd_S2097C3;
extern VTBL_ENTRY _ZTI7S2097C3[];
extern  VTBL_ENTRY _ZTV7S2097C3[];
static Base_Class bases_S2097C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2097C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2097C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2097C2[];
extern void _ZN7S2097C2D1Ev();
extern void _ZN7S2097C2D0Ev();
extern void _ZN7S2097C42v2Ev();
extern void _ZN7S2097C42v3Ev();
extern void _ZN7S2097C42v4Ev();
extern void _ZN7S2097C42v5Ev();
extern void _ZN7S2097C32v6Ev();
extern void _ZN7S2097C32v7Ev();
extern void _ZN7S2097C32v8Ev();
extern void _ZN7S2097C22v9Ev();
extern void _ZN7S2097C23v10Ev();
extern void _ZN7S2097C23v11Ev();
static  VTBL_ENTRY vtc_S2097C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2097C2[0]),
  (VTBL_ENTRY)&_ZN7S2097C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2097C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2097C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2097C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2097C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2097C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2097C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2097C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S2097C2[];
extern  VTBL_ENTRY _ZTV7S2097C2[];
Class_Descriptor cd_S2097C2 = {  "S2097C2", // class name
  bases_S2097C2, 2,
  &(vtc_S2097C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2097C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2097C2),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2097C1  : S2097C2 {
  int s2097c1f0[11];
  char s2097c1f1[4];
  int s2097c1f2[2];
  char s2097c1f3[2];
  virtual  ~S2097C1(); // _ZN7S2097C1D1Ev
  virtual void  v1(); // _ZN7S2097C12v1Ev
  S2097C1(); // tgen
};
//SIG(1 S2097C1) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fp Fc Fi[4] Fp} vd v6 v7 v8 Fi[3]} vd v9 v10 v11 Fi[3]} vd v1 Fi[11] Fc[4] Fi[2] Fc[2]}


 S2097C1 ::~S2097C1(){ note_dtor("S2097C1", this);}
void  S2097C1 ::v1(){vfunc_called(this, "_ZN7S2097C12v1Ev");}
S2097C1 ::S2097C1(){ note_ctor("S2097C1", this);} // tgen

static void Test_S2097C1()
{
  extern Class_Descriptor cd_S2097C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,30)];
    init_test(&cd_S2097C1, buf);
    S2097C1 *dp, &lv = *(dp=new (buf) S2097C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,116), "sizeof(S2097C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2097C1)");
    check_base_class_offset(lv, (S2097C4*)(S2097C3*)(S2097C2*), 0, "S2097C1");
    check_base_class_offset(lv, (S2097C3*)(S2097C2*), 0, "S2097C1");
    check_base_class_offset(lv, (S2097C2*), 0, "S2097C1");
    check_field_offset(lv, s2097c1f0, ABISELECT(72,56), "S2097C1.s2097c1f0");
    check_field_offset(lv, s2097c1f1, ABISELECT(116,100), "S2097C1.s2097c1f1");
    check_field_offset(lv, s2097c1f2, ABISELECT(120,104), "S2097C1.s2097c1f2");
    check_field_offset(lv, s2097c1f3, ABISELECT(128,112), "S2097C1.s2097c1f3");
    test_class_info(&lv, &cd_S2097C1);
    dp->~S2097C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2097C1(Test_S2097C1, "S2097C1", ABISELECT(136,116));

#else // __cplusplus

extern void _ZN7S2097C1C1Ev();
extern void _ZN7S2097C1D1Ev();
Name_Map name_map_S2097C1[] = {
  NSPAIR(_ZN7S2097C1C1Ev),
  NSPAIR(_ZN7S2097C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2097C4;
extern VTBL_ENTRY _ZTI7S2097C4[];
extern  VTBL_ENTRY _ZTV7S2097C4[];
extern Class_Descriptor cd_S2097C3;
extern VTBL_ENTRY _ZTI7S2097C3[];
extern  VTBL_ENTRY _ZTV7S2097C3[];
extern Class_Descriptor cd_S2097C2;
extern VTBL_ENTRY _ZTI7S2097C2[];
extern  VTBL_ENTRY _ZTV7S2097C2[];
static Base_Class bases_S2097C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2097C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2097C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2097C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2097C1[];
extern void _ZN7S2097C1D1Ev();
extern void _ZN7S2097C1D0Ev();
extern void _ZN7S2097C42v2Ev();
extern void _ZN7S2097C42v3Ev();
extern void _ZN7S2097C42v4Ev();
extern void _ZN7S2097C42v5Ev();
extern void _ZN7S2097C32v6Ev();
extern void _ZN7S2097C32v7Ev();
extern void _ZN7S2097C32v8Ev();
extern void _ZN7S2097C22v9Ev();
extern void _ZN7S2097C23v10Ev();
extern void _ZN7S2097C23v11Ev();
extern void _ZN7S2097C12v1Ev();
static  VTBL_ENTRY vtc_S2097C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2097C1[0]),
  (VTBL_ENTRY)&_ZN7S2097C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2097C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2097C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2097C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2097C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2097C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2097C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2097C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2097C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S2097C1[];
extern  VTBL_ENTRY _ZTV7S2097C1[];
Class_Descriptor cd_S2097C1 = {  "S2097C1", // class name
  bases_S2097C1, 3,
  &(vtc_S2097C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,116), // object size
  NSPAIRA(_ZTI7S2097C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2097C1),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19291C3  {
  void *s19291c3f0;
  char s19291c3f1[5];
  __tsi64 s19291c3f2;
  void *s19291c3f3[2];
  virtual void  v2(); // _ZN8S19291C32v2Ev
  ~S19291C3(); // tgen
  S19291C3(); // tgen
};
//SIG(-1 S19291C3) C1{ v1 Fp Fc[5] FL Fp[2]}


void  S19291C3 ::v2(){vfunc_called(this, "_ZN8S19291C32v2Ev");}
S19291C3 ::~S19291C3(){ note_dtor("S19291C3", this);} // tgen
S19291C3 ::S19291C3(){ note_ctor("S19291C3", this);} // tgen

static void Test_S19291C3()
{
  extern Class_Descriptor cd_S19291C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S19291C3, buf);
    S19291C3 *dp, &lv = *(dp=new (buf) S19291C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S19291C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19291C3)");
    check_field_offset(lv, s19291c3f0, ABISELECT(8,4), "S19291C3.s19291c3f0");
    check_field_offset(lv, s19291c3f1, ABISELECT(16,8), "S19291C3.s19291c3f1");
    check_field_offset(lv, s19291c3f2, ABISELECT(24,16), "S19291C3.s19291c3f2");
    check_field_offset(lv, s19291c3f3, ABISELECT(32,24), "S19291C3.s19291c3f3");
    test_class_info(&lv, &cd_S19291C3);
    dp->~S19291C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19291C3(Test_S19291C3, "S19291C3", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S19291C3C1Ev();
extern void _ZN8S19291C3D1Ev();
Name_Map name_map_S19291C3[] = {
  NSPAIR(_ZN8S19291C3C1Ev),
  NSPAIR(_ZN8S19291C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19291C3[];
extern void _ZN8S19291C32v2Ev();
static  VTBL_ENTRY vtc_S19291C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19291C3[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
};
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
Class_Descriptor cd_S19291C3 = {  "S19291C3", // class name
  0,0,//no base classes
  &(vtc_S19291C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S19291C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19291C3),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19291C2  : S19291C3 {
  ::S19291C3 s19291c2f0;
  char s19291c2f1[2];
  void *s19291c2f2;
  virtual void  v3(); // _ZN8S19291C22v3Ev
  virtual void  v4(); // _ZN8S19291C22v4Ev
  virtual void  v5(); // _ZN8S19291C22v5Ev
  ~S19291C2(); // tgen
  S19291C2(); // tgen
};
//SIG(-1 S19291C2) C1{ BC2{ v4 Fp Fc[5] FL Fp[2]} v1 v2 v3 FC2 Fc[2] Fp}


void  S19291C2 ::v3(){vfunc_called(this, "_ZN8S19291C22v3Ev");}
void  S19291C2 ::v4(){vfunc_called(this, "_ZN8S19291C22v4Ev");}
void  S19291C2 ::v5(){vfunc_called(this, "_ZN8S19291C22v5Ev");}
S19291C2 ::~S19291C2(){ note_dtor("S19291C2", this);} // tgen
S19291C2 ::S19291C2(){ note_ctor("S19291C2", this);} // tgen

static void Test_S19291C2()
{
  extern Class_Descriptor cd_S19291C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S19291C2, buf);
    S19291C2 *dp, &lv = *(dp=new (buf) S19291C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S19291C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19291C2)");
    check_base_class_offset(lv, (S19291C3*), 0, "S19291C2");
    check_field_offset(lv, s19291c2f0, ABISELECT(48,32), "S19291C2.s19291c2f0");
    check_field_offset(lv, s19291c2f1, ABISELECT(96,64), "S19291C2.s19291c2f1");
    check_field_offset(lv, s19291c2f2, ABISELECT(104,68), "S19291C2.s19291c2f2");
    test_class_info(&lv, &cd_S19291C2);
    dp->~S19291C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19291C2(Test_S19291C2, "S19291C2", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN8S19291C2C1Ev();
extern void _ZN8S19291C2D1Ev();
Name_Map name_map_S19291C2[] = {
  NSPAIR(_ZN8S19291C2C1Ev),
  NSPAIR(_ZN8S19291C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
static Base_Class bases_S19291C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19291C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19291C2[];
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C22v3Ev();
extern void _ZN8S19291C22v4Ev();
extern void _ZN8S19291C22v5Ev();
static  VTBL_ENTRY vtc_S19291C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19291C2[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v5Ev,
};
extern VTBL_ENTRY _ZTI8S19291C2[];
extern  VTBL_ENTRY _ZTV8S19291C2[];
Class_Descriptor cd_S19291C2 = {  "S19291C2", // class name
  bases_S19291C2, 1,
  &(vtc_S19291C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI8S19291C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19291C2),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19291C5  : virtual S19291C2 , virtual S19291C3 {
  int s19291c5f0;
  virtual void  v6(); // _ZN8S19291C52v6Ev
  ~S19291C5(); // tgen
  S19291C5(); // tgen
};
//SIG(-1 S19291C5) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} VBC3 v1 Fi}


void  S19291C5 ::v6(){vfunc_called(this, "_ZN8S19291C52v6Ev");}
S19291C5 ::~S19291C5(){ note_dtor("S19291C5", this);} // tgen
S19291C5 ::S19291C5(){ note_ctor("S19291C5", this);} // tgen

static void Test_S19291C5()
{
  extern Class_Descriptor cd_S19291C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,29)];
    init_test(&cd_S19291C5, buf);
    S19291C5 *dp, &lv = *(dp=new (buf) S19291C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,112), "sizeof(S19291C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19291C5)");
    check_base_class_offset(lv, (S19291C3*)(S19291C2*), ABISELECT(16,8), "S19291C5");
    check_base_class_offset(lv, (S19291C2*), ABISELECT(16,8), "S19291C5");
    /*is_ambiguous_... S19291C5::S19291C3 */ AMB_check_base_class_offset(lv, (S19291C3*), ABISELECT(128,80), "S19291C5");
    check_field_offset(lv, s19291c5f0, ABISELECT(8,4), "S19291C5.s19291c5f0");
    test_class_info(&lv, &cd_S19291C5);
    dp->~S19291C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19291C5(Test_S19291C5, "S19291C5", ABISELECT(176,112));

#else // __cplusplus

extern void _ZN8S19291C5C1Ev();
extern void _ZN8S19291C5D1Ev();
Name_Map name_map_S19291C5[] = {
  NSPAIR(_ZN8S19291C5C1Ev),
  NSPAIR(_ZN8S19291C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
extern Class_Descriptor cd_S19291C2;
extern VTBL_ENTRY _ZTI8S19291C2[];
extern  VTBL_ENTRY _ZTV8S19291C2[];
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
static Base_Class bases_S19291C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19291C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19291C2,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19291C3,    ABISELECT(128,80), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19291C5[];
extern void _ZN8S19291C52v6Ev();
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C22v3Ev();
extern void _ZN8S19291C22v4Ev();
extern void _ZN8S19291C22v5Ev();
extern void _ZN8S19291C32v2Ev();
static  VTBL_ENTRY vtc_S19291C5[] = {
  ABISELECT(128,80),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19291C5[0]),
  (VTBL_ENTRY)&_ZN8S19291C52v6Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19291C5[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v5Ev,
  0,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S19291C5[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19291C5[];
static  VTT_ENTRY vtt_S19291C5[] = {
  {&(_ZTV8S19291C5[4]),  4,19},
  {&(_ZTV8S19291C5[11]),  11,19},
  {&(_ZTV8S19291C5[18]),  18,19},
};
extern VTBL_ENTRY _ZTI8S19291C5[];
extern  VTBL_ENTRY _ZTV8S19291C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19291C5[];
Class_Descriptor cd_S19291C5 = {  "S19291C5", // class name
  bases_S19291C5, 3,
  &(vtc_S19291C5[0]), // expected_vtbl_contents
  &(vtt_S19291C5[0]), // expected_vtt_contents
  ABISELECT(176,112), // object size
  NSPAIRA(_ZTI8S19291C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19291C5),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19291C5),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19291C4  : S19291C5 , S19291C2 , S19291C3 {
  virtual  ~S19291C4(); // _ZN8S19291C4D2Ev
  virtual void  v7(); // _ZN8S19291C42v7Ev
  S19291C4(); // tgen
};
//SIG(-1 S19291C4) C1{ BC2{ VBC3{ BC4{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC4 Fc[2] Fp} VBC4 v6 Fi} BC3 BC4 vd v1}


 S19291C4 ::~S19291C4(){ note_dtor("S19291C4", this);}
void  S19291C4 ::v7(){vfunc_called(this, "_ZN8S19291C42v7Ev");}
S19291C4 ::S19291C4(){ note_ctor("S19291C4", this);} // tgen

static void Test_S19291C4()
{
  extern Class_Descriptor cd_S19291C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,55)];
    init_test(&cd_S19291C4, buf);
    S19291C4 *dp, &lv = *(dp=new (buf) S19291C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,216), "sizeof(S19291C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19291C4)");
    /*is_ambiguous_... S19291C4::S19291C2 */ AMB_check_base_class_offset(lv, (S19291C3*)(S19291C2*), ABISELECT(176,112), "S19291C4");
    check_base_class_offset(lv, (S19291C2*)(S19291C5*), ABISELECT(176,112), "S19291C4");
    /*is_ambiguous_... S19291C5::S19291C3 */ AMB_check_base_class_offset(lv, (S19291C3*)(S19291C5*), ABISELECT(288,184), "S19291C4");
    check_base_class_offset(lv, (S19291C5*), 0, "S19291C4");
    /*is_ambiguous_... S19291C4::S19291C2 */ AMB_check_base_class_offset(lv, (S19291C3*)(S19291C2*), ABISELECT(16,8), "S19291C4");
    /*is_ambiguous_... S19291C4::S19291C2 */ AMB_check_base_class_offset(lv, (S19291C2*), ABISELECT(16,8), "S19291C4");
    /*is_ambiguous_... S19291C4::S19291C3 */ AMB_check_base_class_offset(lv, (S19291C3*), ABISELECT(128,80), "S19291C4");
    test_class_info(&lv, &cd_S19291C4);
    dp->~S19291C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19291C4(Test_S19291C4, "S19291C4", ABISELECT(336,216));

#else // __cplusplus

extern void _ZN8S19291C4C1Ev();
extern void _ZN8S19291C4D2Ev();
Name_Map name_map_S19291C4[] = {
  NSPAIR(_ZN8S19291C4C1Ev),
  NSPAIR(_ZN8S19291C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
extern Class_Descriptor cd_S19291C2;
extern VTBL_ENTRY _ZTI8S19291C2[];
extern  VTBL_ENTRY _ZTV8S19291C2[];
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
extern Class_Descriptor cd_S19291C5;
extern VTBL_ENTRY _ZTI8S19291C5[];
extern  VTBL_ENTRY _ZTV8S19291C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19291C5[];
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
extern Class_Descriptor cd_S19291C2;
extern VTBL_ENTRY _ZTI8S19291C2[];
extern  VTBL_ENTRY _ZTV8S19291C2[];
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
static Base_Class bases_S19291C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19291C3,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19291C2,    ABISELECT(176,112), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19291C3,    ABISELECT(288,184), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19291C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19291C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19291C2,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19291C3,    ABISELECT(128,80), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19291C4[];
extern void _ZN8S19291C52v6Ev();
extern void _ZN8S19291C4D1Ev();
extern void _ZN8S19291C4D0Ev();
extern void _ZN8S19291C42v7Ev();
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C22v3Ev();
extern void _ZN8S19291C22v4Ev();
extern void _ZN8S19291C22v5Ev();
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C22v3Ev();
extern void _ZN8S19291C22v4Ev();
extern void _ZN8S19291C22v5Ev();
extern void _ZN8S19291C32v2Ev();
static  VTBL_ENTRY vtc_S19291C4[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19291C4[0]),
  (VTBL_ENTRY)&_ZN8S19291C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19291C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19291C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19291C42v7Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19291C4[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v5Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S19291C4[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S19291C4[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v5Ev,
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S19291C4[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19291C4[];
extern void _ZN8S19291C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19291C5__8S19291C4[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19291C5[0]),
  (VTBL_ENTRY)&_ZN8S19291C52v6Ev,
};
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C22v3Ev();
extern void _ZN8S19291C22v4Ev();
extern void _ZN8S19291C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19291C2__8S19291C5__8S19291C4[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S19291C5[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v5Ev,
};
extern void _ZN8S19291C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19291C3__A1__8S19291C5__8S19291C4[] = {
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S19291C5[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
};
static  VTT_ENTRY vtt_S19291C4[] = {
  {&(_ZTV8S19291C4[4]),  4,31},
  {&(_tg__ZTV8S19291C5__8S19291C4[4]),  4,5},
  {&(_tg__ZTV8S19291C2__8S19291C5__8S19291C4[6]),  6,10},
  {&(_tg__ZTV8S19291C3__A1__8S19291C5__8S19291C4[3]),  3,4},
  {&(_ZTV8S19291C4[23]),  23,31},
  {&(_ZTV8S19291C4[30]),  30,31},
};
extern VTBL_ENTRY _ZTI8S19291C4[];
extern  VTBL_ENTRY _ZTV8S19291C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19291C4[];
Class_Descriptor cd_S19291C4 = {  "S19291C4", // class name
  bases_S19291C4, 7,
  &(vtc_S19291C4[0]), // expected_vtbl_contents
  &(vtt_S19291C4[0]), // expected_vtt_contents
  ABISELECT(336,216), // object size
  NSPAIRA(_ZTI8S19291C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19291C4),31, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19291C4),6, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19291C1  : virtual S19291C2 , S19291C4 , S19291C3 {
  ::S19763C18_nt s19291c1f0;
  virtual void  v1(); // _ZN8S19291C12v1Ev
  ~S19291C1(); // tgen
  S19291C1(); // tgen
};
//SIG(1 S19291C1) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} BC4{ BC5{ VBC2 VBC3 v6 Fi} BC2 BC3 vd v7} BC3 v1 FC6{}}


void  S19291C1 ::v1(){vfunc_called(this, "_ZN8S19291C12v1Ev");}
S19291C1 ::~S19291C1(){ note_dtor("S19291C1", this);} // tgen
S19291C1 ::S19291C1(){ note_ctor("S19291C1", this);} // tgen

static void Test_S19291C1()
{
  extern Class_Descriptor cd_S19291C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,64)];
    init_test(&cd_S19291C1, buf);
    S19291C1 *dp, &lv = *(dp=new (buf) S19291C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,252), "sizeof(S19291C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19291C1)");
    /*is_ambiguous_... S19291C1::S19291C2 */ AMB_check_base_class_offset(lv, (S19291C3*)(S19291C2*), ABISELECT(232,148), "S19291C1");
    /*is_ambiguous_... S19291C1::S19291C2 */ AMB_check_base_class_offset(lv, (S19291C2*), ABISELECT(232,148), "S19291C1");
    check_base_class_offset(lv, (S19291C2*)(S19291C5*)(S19291C4*), ABISELECT(232,148), "S19291C1");
    /*is_ambiguous_... S19291C5::S19291C3 */ AMB_check_base_class_offset(lv, (S19291C3*)(S19291C5*)(S19291C4*), ABISELECT(344,220), "S19291C1");
    check_base_class_offset(lv, (S19291C5*)(S19291C4*), 0, "S19291C1");
    /*is_ambiguous_... S19291C4::S19291C2 */ AMB_check_base_class_offset(lv, (S19291C3*)(S19291C2*)(S19291C4*), ABISELECT(16,8), "S19291C1");
    /*is_ambiguous_... S19291C4::S19291C2 */ AMB_check_base_class_offset(lv, (S19291C2*)(S19291C4*), ABISELECT(16,8), "S19291C1");
    /*is_ambiguous_... S19291C4::S19291C3 */ AMB_check_base_class_offset(lv, (S19291C3*)(S19291C4*), ABISELECT(128,80), "S19291C1");
    check_base_class_offset(lv, (S19291C4*), 0, "S19291C1");
    /*is_ambiguous_... S19291C1::S19291C3 */ AMB_check_base_class_offset(lv, (S19291C3*), ABISELECT(176,112), "S19291C1");
    check_field_offset(lv, s19291c1f0, ABISELECT(224,144), "S19291C1.s19291c1f0");
    test_class_info(&lv, &cd_S19291C1);
    dp->~S19291C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19291C1(Test_S19291C1, "S19291C1", ABISELECT(392,252));

#else // __cplusplus

extern void _ZN8S19291C1C1Ev();
extern void _ZN8S19291C1D1Ev();
Name_Map name_map_S19291C1[] = {
  NSPAIR(_ZN8S19291C1C1Ev),
  NSPAIR(_ZN8S19291C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
extern Class_Descriptor cd_S19291C2;
extern VTBL_ENTRY _ZTI8S19291C2[];
extern  VTBL_ENTRY _ZTV8S19291C2[];
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
extern Class_Descriptor cd_S19291C5;
extern VTBL_ENTRY _ZTI8S19291C5[];
extern  VTBL_ENTRY _ZTV8S19291C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19291C5[];
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
extern Class_Descriptor cd_S19291C2;
extern VTBL_ENTRY _ZTI8S19291C2[];
extern  VTBL_ENTRY _ZTV8S19291C2[];
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
extern Class_Descriptor cd_S19291C4;
extern VTBL_ENTRY _ZTI8S19291C4[];
extern  VTBL_ENTRY _ZTV8S19291C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19291C4[];
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
static Base_Class bases_S19291C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19291C3,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19291C2,    ABISELECT(232,148), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19291C3,    ABISELECT(344,220), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19291C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19291C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19291C2,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19291C3,    ABISELECT(128,80), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19291C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19291C3,    ABISELECT(176,112), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19291C1[];
extern void _ZN8S19291C52v6Ev();
extern void _ZN8S19291C1D1Ev();
extern void _ZN8S19291C1D0Ev();
extern void _ZN8S19291C42v7Ev();
extern void _ZN8S19291C12v1Ev();
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C22v3Ev();
extern void _ZN8S19291C22v4Ev();
extern void _ZN8S19291C22v5Ev();
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C22v3Ev();
extern void _ZN8S19291C22v4Ev();
extern void _ZN8S19291C22v5Ev();
extern void _ZN8S19291C32v2Ev();
static  VTBL_ENTRY vtc_S19291C1[] = {
  ABISELECT(344,220),
  ABISELECT(232,148),
  0,
  (VTBL_ENTRY)&(_ZTI8S19291C1[0]),
  (VTBL_ENTRY)&_ZN8S19291C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19291C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19291C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19291C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19291C12v1Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19291C1[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v5Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S19291C1[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S19291C1[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI8S19291C1[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v5Ev,
  0,
  ABISELECT(-344,-220),
  (VTBL_ENTRY)&(_ZTI8S19291C1[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19291C1[];
extern void _ZN8S19291C52v6Ev();
extern void _ZN8S19291C4D1Ev();
extern void _ZN8S19291C4D0Ev();
extern void _ZN8S19291C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19291C4__8S19291C1[] = {
  ABISELECT(344,220),
  ABISELECT(232,148),
  0,
  (VTBL_ENTRY)&(_ZTI8S19291C4[0]),
  (VTBL_ENTRY)&_ZN8S19291C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19291C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19291C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19291C42v7Ev,
};
extern void _ZN8S19291C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19291C58S19291C4__8S19291C1[] = {
  ABISELECT(344,220),
  ABISELECT(232,148),
  0,
  (VTBL_ENTRY)&(_ZTI8S19291C5[0]),
  (VTBL_ENTRY)&_ZN8S19291C52v6Ev,
};
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C22v3Ev();
extern void _ZN8S19291C22v4Ev();
extern void _ZN8S19291C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19291C2__8S19291C58S19291C4__8S19291C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI8S19291C5[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v5Ev,
};
extern void _ZN8S19291C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19291C3__A1__8S19291C58S19291C4__8S19291C1[] = {
  0,
  ABISELECT(-344,-220),
  (VTBL_ENTRY)&(_ZTI8S19291C5[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
};
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C22v3Ev();
extern void _ZN8S19291C22v4Ev();
extern void _ZN8S19291C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19291C2__8S19291C4__8S19291C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI8S19291C4[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v5Ev,
};
extern void _ZN8S19291C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19291C3__A1__8S19291C4__8S19291C1[] = {
  0,
  ABISELECT(-344,-220),
  (VTBL_ENTRY)&(_ZTI8S19291C4[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
};
static  VTT_ENTRY vtt_S19291C1[] = {
  {&(_ZTV8S19291C1[4]),  4,35},
  {&(_tg__ZTV8S19291C4__8S19291C1[4]),  4,8},
  {&(_tg__ZTV8S19291C58S19291C4__8S19291C1[4]),  4,5},
  {&(_tg__ZTV8S19291C2__8S19291C58S19291C4__8S19291C1[6]),  6,10},
  {&(_tg__ZTV8S19291C3__A1__8S19291C58S19291C4__8S19291C1[3]),  3,4},
  {&(_tg__ZTV8S19291C2__8S19291C4__8S19291C1[6]),  6,10},
  {&(_tg__ZTV8S19291C3__A1__8S19291C4__8S19291C1[3]),  3,4},
  {&(_ZTV8S19291C1[27]),  27,35},
  {&(_ZTV8S19291C1[34]),  34,35},
};
extern VTBL_ENTRY _ZTI8S19291C1[];
extern  VTBL_ENTRY _ZTV8S19291C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19291C1[];
Class_Descriptor cd_S19291C1 = {  "S19291C1", // class name
  bases_S19291C1, 9,
  &(vtc_S19291C1[0]), // expected_vtbl_contents
  &(vtt_S19291C1[0]), // expected_vtt_contents
  ABISELECT(392,252), // object size
  NSPAIRA(_ZTI8S19291C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19291C1),35, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19291C1),9, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4341C3  {
  void *s4341c3f0;
  int s4341c3f1[2];
  char s4341c3f2;
  ::S10007C19 s4341c3f3;
  virtual  ~S4341C3(); // _ZN7S4341C3D1Ev
  virtual void  v2(); // _ZN7S4341C32v2Ev
  virtual void  v3(); // _ZN7S4341C32v3Ev
  S4341C3(); // tgen
};
//SIG(-1 S4341C3) C1{ vd v1 v2 Fp Fi[2] Fc FC2{ m FC3{ m FL[2]} FC3 FC3 FC3}}


 S4341C3 ::~S4341C3(){ note_dtor("S4341C3", this);}
void  S4341C3 ::v2(){vfunc_called(this, "_ZN7S4341C32v2Ev");}
void  S4341C3 ::v3(){vfunc_called(this, "_ZN7S4341C32v3Ev");}
S4341C3 ::S4341C3(){ note_ctor("S4341C3", this);} // tgen

static void Test_S4341C3()
{
  extern Class_Descriptor cd_S4341C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,22)];
    init_test(&cd_S4341C3, buf);
    S4341C3 *dp, &lv = *(dp=new (buf) S4341C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,84), "sizeof(S4341C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4341C3)");
    check_field_offset(lv, s4341c3f0, ABISELECT(8,4), "S4341C3.s4341c3f0");
    check_field_offset(lv, s4341c3f1, ABISELECT(16,8), "S4341C3.s4341c3f1");
    check_field_offset(lv, s4341c3f2, ABISELECT(24,16), "S4341C3.s4341c3f2");
    check_field_offset(lv, s4341c3f3, ABISELECT(32,20), "S4341C3.s4341c3f3");
    test_class_info(&lv, &cd_S4341C3);
    dp->~S4341C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4341C3(Test_S4341C3, "S4341C3", ABISELECT(96,84));

#else // __cplusplus

extern void _ZN7S4341C3C1Ev();
extern void _ZN7S4341C3D1Ev();
Name_Map name_map_S4341C3[] = {
  NSPAIR(_ZN7S4341C3C1Ev),
  NSPAIR(_ZN7S4341C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4341C3[];
extern void _ZN7S4341C3D1Ev();
extern void _ZN7S4341C3D0Ev();
extern void _ZN7S4341C32v2Ev();
extern void _ZN7S4341C32v3Ev();
static  VTBL_ENTRY vtc_S4341C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4341C3[0]),
  (VTBL_ENTRY)&_ZN7S4341C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4341C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4341C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4341C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S4341C3[];
extern  VTBL_ENTRY _ZTV7S4341C3[];
Class_Descriptor cd_S4341C3 = {  "S4341C3", // class name
  0,0,//no base classes
  &(vtc_S4341C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,84), // object size
  NSPAIRA(_ZTI7S4341C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4341C3),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4341C6  : S10007C27_nt {
};
//SIG(-1 S4341C6) C1{ BC2{ m FC3{ m FL[2]}}}



static void Test_S4341C6()
{
  extern Class_Descriptor cd_S4341C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,5)];
    init_test(&cd_S4341C6, buf);
    S4341C6 &lv = *(new (buf) S4341C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), 16, "sizeof(S4341C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4341C6)");
    check_base_class_offset(lv, (S10007C27_nt*), 0, "S4341C6");
    test_class_info(&lv, &cd_S4341C6);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4341C6(Test_S4341C6, "S4341C6", 16);

#else // __cplusplus

extern Class_Descriptor cd_S10007C27_nt;
static Base_Class bases_S4341C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10007C27_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S4341C6 = {  "S4341C6", // class name
  bases_S4341C6, 1,
  0, // no vftv
  0, //no vtt
  16, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4341C2  : S4341C3 {
  int s4341c2f0[8];
  void *s4341c2f1[2];
  ::S4341C6 s4341c2f2;
  int s4341c2f3;
  virtual  ~S4341C2(); // _ZN7S4341C2D1Ev
  virtual void  v4(); // _ZN7S4341C22v4Ev
  virtual void  v5(); // _ZN7S4341C22v5Ev
  S4341C2(); // tgen
};
//SIG(-1 S4341C2) C1{ BC2{ vd v3 v4 Fp Fi[2] Fc FC3{ m FC4{ m FL[2]} FC4 FC4 FC4}} vd v1 v2 Fi[8] Fp[2] FC5{ BC6{ m FC7{ m FL[2]}}} Fi}


 S4341C2 ::~S4341C2(){ note_dtor("S4341C2", this);}
void  S4341C2 ::v4(){vfunc_called(this, "_ZN7S4341C22v4Ev");}
void  S4341C2 ::v5(){vfunc_called(this, "_ZN7S4341C22v5Ev");}
S4341C2 ::S4341C2(){ note_ctor("S4341C2", this);} // tgen

static void Test_S4341C2()
{
  extern Class_Descriptor cd_S4341C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,37)];
    init_test(&cd_S4341C2, buf);
    S4341C2 *dp, &lv = *(dp=new (buf) S4341C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,144), "sizeof(S4341C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4341C2)");
    check_base_class_offset(lv, (S4341C3*), 0, "S4341C2");
    check_field_offset(lv, s4341c2f0, ABISELECT(96,84), "S4341C2.s4341c2f0");
    check_field_offset(lv, s4341c2f1, ABISELECT(128,116), "S4341C2.s4341c2f1");
    check_field_offset(lv, s4341c2f2, ABISELECT(144,124), "S4341C2.s4341c2f2");
    check_field_offset(lv, s4341c2f3, ABISELECT(160,140), "S4341C2.s4341c2f3");
    test_class_info(&lv, &cd_S4341C2);
    dp->~S4341C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4341C2(Test_S4341C2, "S4341C2", ABISELECT(168,144));

#else // __cplusplus

extern void _ZN7S4341C2C1Ev();
extern void _ZN7S4341C2D1Ev();
Name_Map name_map_S4341C2[] = {
  NSPAIR(_ZN7S4341C2C1Ev),
  NSPAIR(_ZN7S4341C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4341C3;
extern VTBL_ENTRY _ZTI7S4341C3[];
extern  VTBL_ENTRY _ZTV7S4341C3[];
static Base_Class bases_S4341C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4341C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4341C2[];
extern void _ZN7S4341C2D1Ev();
extern void _ZN7S4341C2D0Ev();
extern void _ZN7S4341C32v2Ev();
extern void _ZN7S4341C32v3Ev();
extern void _ZN7S4341C22v4Ev();
extern void _ZN7S4341C22v5Ev();
static  VTBL_ENTRY vtc_S4341C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4341C2[0]),
  (VTBL_ENTRY)&_ZN7S4341C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4341C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4341C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4341C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4341C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4341C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S4341C2[];
extern  VTBL_ENTRY _ZTV7S4341C2[];
Class_Descriptor cd_S4341C2 = {  "S4341C2", // class name
  bases_S4341C2, 1,
  &(vtc_S4341C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,144), // object size
  NSPAIRA(_ZTI7S4341C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4341C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4341C1  : S4341C2 {
  virtual void  v1(); // _ZN7S4341C12v1Ev
  ~S4341C1(); // tgen
  S4341C1(); // tgen
};
//SIG(1 S4341C1) C1{ BC2{ BC3{ vd v2 v3 Fp Fi[2] Fc FC4{ m FC5{ m FL[2]} FC5 FC5 FC5}} vd v4 v5 Fi[8] Fp[2] FC6{ BC7{ m FC8{ m FL[2]}}} Fi} v1}


void  S4341C1 ::v1(){vfunc_called(this, "_ZN7S4341C12v1Ev");}
S4341C1 ::~S4341C1(){ note_dtor("S4341C1", this);} // tgen
S4341C1 ::S4341C1(){ note_ctor("S4341C1", this);} // tgen

static void Test_S4341C1()
{
  extern Class_Descriptor cd_S4341C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,37)];
    init_test(&cd_S4341C1, buf);
    S4341C1 *dp, &lv = *(dp=new (buf) S4341C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,144), "sizeof(S4341C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4341C1)");
    check_base_class_offset(lv, (S4341C3*)(S4341C2*), 0, "S4341C1");
    check_base_class_offset(lv, (S4341C2*), 0, "S4341C1");
    test_class_info(&lv, &cd_S4341C1);
    dp->~S4341C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4341C1(Test_S4341C1, "S4341C1", ABISELECT(168,144));

#else // __cplusplus

extern void _ZN7S4341C1C1Ev();
extern void _ZN7S4341C1D1Ev();
Name_Map name_map_S4341C1[] = {
  NSPAIR(_ZN7S4341C1C1Ev),
  NSPAIR(_ZN7S4341C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4341C3;
extern VTBL_ENTRY _ZTI7S4341C3[];
extern  VTBL_ENTRY _ZTV7S4341C3[];
extern Class_Descriptor cd_S4341C2;
extern VTBL_ENTRY _ZTI7S4341C2[];
extern  VTBL_ENTRY _ZTV7S4341C2[];
static Base_Class bases_S4341C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4341C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4341C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4341C1[];
extern void _ZN7S4341C1D1Ev();
extern void _ZN7S4341C1D0Ev();
extern void _ZN7S4341C32v2Ev();
extern void _ZN7S4341C32v3Ev();
extern void _ZN7S4341C22v4Ev();
extern void _ZN7S4341C22v5Ev();
extern void _ZN7S4341C12v1Ev();
static  VTBL_ENTRY vtc_S4341C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4341C1[0]),
  (VTBL_ENTRY)&_ZN7S4341C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4341C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4341C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4341C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4341C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4341C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4341C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4341C1[];
extern  VTBL_ENTRY _ZTV7S4341C1[];
Class_Descriptor cd_S4341C1 = {  "S4341C1", // class name
  bases_S4341C1, 2,
  &(vtc_S4341C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,144), // object size
  NSPAIRA(_ZTI7S4341C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4341C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2098C4  {
  void *s2098c4f0;
  char s2098c4f1;
  int s2098c4f2[4];
  void *s2098c4f3;
  virtual  ~S2098C4(); // _ZN7S2098C4D1Ev
  virtual void  v2(); // _ZN7S2098C42v2Ev
  virtual void  v3(); // _ZN7S2098C42v3Ev
  virtual void  v4(); // _ZN7S2098C42v4Ev
  virtual void  v5(); // _ZN7S2098C42v5Ev
  S2098C4(); // tgen
};
//SIG(-1 S2098C4) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S2098C4 ::~S2098C4(){ note_dtor("S2098C4", this);}
void  S2098C4 ::v2(){vfunc_called(this, "_ZN7S2098C42v2Ev");}
void  S2098C4 ::v3(){vfunc_called(this, "_ZN7S2098C42v3Ev");}
void  S2098C4 ::v4(){vfunc_called(this, "_ZN7S2098C42v4Ev");}
void  S2098C4 ::v5(){vfunc_called(this, "_ZN7S2098C42v5Ev");}
S2098C4 ::S2098C4(){ note_ctor("S2098C4", this);} // tgen

static void Test_S2098C4()
{
  extern Class_Descriptor cd_S2098C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S2098C4, buf);
    S2098C4 *dp, &lv = *(dp=new (buf) S2098C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S2098C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2098C4)");
    check_field_offset(lv, s2098c4f0, ABISELECT(8,4), "S2098C4.s2098c4f0");
    check_field_offset(lv, s2098c4f1, ABISELECT(16,8), "S2098C4.s2098c4f1");
    check_field_offset(lv, s2098c4f2, ABISELECT(20,12), "S2098C4.s2098c4f2");
    check_field_offset(lv, s2098c4f3, ABISELECT(40,28), "S2098C4.s2098c4f3");
    test_class_info(&lv, &cd_S2098C4);
    dp->~S2098C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2098C4(Test_S2098C4, "S2098C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S2098C4C1Ev();
extern void _ZN7S2098C4D1Ev();
Name_Map name_map_S2098C4[] = {
  NSPAIR(_ZN7S2098C4C1Ev),
  NSPAIR(_ZN7S2098C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2098C4[];
extern void _ZN7S2098C4D1Ev();
extern void _ZN7S2098C4D0Ev();
extern void _ZN7S2098C42v2Ev();
extern void _ZN7S2098C42v3Ev();
extern void _ZN7S2098C42v4Ev();
extern void _ZN7S2098C42v5Ev();
static  VTBL_ENTRY vtc_S2098C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2098C4[0]),
  (VTBL_ENTRY)&_ZN7S2098C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2098C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2098C4[];
extern  VTBL_ENTRY _ZTV7S2098C4[];
Class_Descriptor cd_S2098C4 = {  "S2098C4", // class name
  0,0,//no base classes
  &(vtc_S2098C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S2098C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2098C4),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2098C3  : S2098C4 {
  int s2098c3f0[3];
  virtual  ~S2098C3(); // _ZN7S2098C3D1Ev
  virtual void  v6(); // _ZN7S2098C32v6Ev
  virtual void  v7(); // _ZN7S2098C32v7Ev
  virtual void  v8(); // _ZN7S2098C32v8Ev
  S2098C3(); // tgen
};
//SIG(-1 S2098C3) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S2098C3 ::~S2098C3(){ note_dtor("S2098C3", this);}
void  S2098C3 ::v6(){vfunc_called(this, "_ZN7S2098C32v6Ev");}
void  S2098C3 ::v7(){vfunc_called(this, "_ZN7S2098C32v7Ev");}
void  S2098C3 ::v8(){vfunc_called(this, "_ZN7S2098C32v8Ev");}
S2098C3 ::S2098C3(){ note_ctor("S2098C3", this);} // tgen

static void Test_S2098C3()
{
  extern Class_Descriptor cd_S2098C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S2098C3, buf);
    S2098C3 *dp, &lv = *(dp=new (buf) S2098C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S2098C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2098C3)");
    check_base_class_offset(lv, (S2098C4*), 0, "S2098C3");
    check_field_offset(lv, s2098c3f0, ABISELECT(48,32), "S2098C3.s2098c3f0");
    test_class_info(&lv, &cd_S2098C3);
    dp->~S2098C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2098C3(Test_S2098C3, "S2098C3", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S2098C3C1Ev();
extern void _ZN7S2098C3D1Ev();
Name_Map name_map_S2098C3[] = {
  NSPAIR(_ZN7S2098C3C1Ev),
  NSPAIR(_ZN7S2098C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2098C4;
extern VTBL_ENTRY _ZTI7S2098C4[];
extern  VTBL_ENTRY _ZTV7S2098C4[];
static Base_Class bases_S2098C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2098C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2098C3[];
extern void _ZN7S2098C3D1Ev();
extern void _ZN7S2098C3D0Ev();
extern void _ZN7S2098C42v2Ev();
extern void _ZN7S2098C42v3Ev();
extern void _ZN7S2098C42v4Ev();
extern void _ZN7S2098C42v5Ev();
extern void _ZN7S2098C32v6Ev();
extern void _ZN7S2098C32v7Ev();
extern void _ZN7S2098C32v8Ev();
static  VTBL_ENTRY vtc_S2098C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2098C3[0]),
  (VTBL_ENTRY)&_ZN7S2098C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2098C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2098C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2098C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2098C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S2098C3[];
extern  VTBL_ENTRY _ZTV7S2098C3[];
Class_Descriptor cd_S2098C3 = {  "S2098C3", // class name
  bases_S2098C3, 1,
  &(vtc_S2098C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S2098C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2098C3),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2098C2  : S2098C3 {
  int s2098c2f0[3];
  virtual  ~S2098C2(); // _ZN7S2098C2D1Ev
  virtual void  v9(); // _ZN7S2098C22v9Ev
  virtual void  v10(); // _ZN7S2098C23v10Ev
  virtual void  v11(); // _ZN7S2098C23v11Ev
  S2098C2(); // tgen
};
//SIG(-1 S2098C2) C1{ BC2{ BC3{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v8 v9 v10 Fi[3]} vd v1 v2 v3 Fi[3]}


 S2098C2 ::~S2098C2(){ note_dtor("S2098C2", this);}
void  S2098C2 ::v9(){vfunc_called(this, "_ZN7S2098C22v9Ev");}
void  S2098C2 ::v10(){vfunc_called(this, "_ZN7S2098C23v10Ev");}
void  S2098C2 ::v11(){vfunc_called(this, "_ZN7S2098C23v11Ev");}
S2098C2 ::S2098C2(){ note_ctor("S2098C2", this);} // tgen

static void Test_S2098C2()
{
  extern Class_Descriptor cd_S2098C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2098C2, buf);
    S2098C2 *dp, &lv = *(dp=new (buf) S2098C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2098C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2098C2)");
    check_base_class_offset(lv, (S2098C4*)(S2098C3*), 0, "S2098C2");
    check_base_class_offset(lv, (S2098C3*), 0, "S2098C2");
    check_field_offset(lv, s2098c2f0, ABISELECT(60,44), "S2098C2.s2098c2f0");
    test_class_info(&lv, &cd_S2098C2);
    dp->~S2098C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2098C2(Test_S2098C2, "S2098C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2098C2C1Ev();
extern void _ZN7S2098C2D1Ev();
Name_Map name_map_S2098C2[] = {
  NSPAIR(_ZN7S2098C2C1Ev),
  NSPAIR(_ZN7S2098C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2098C4;
extern VTBL_ENTRY _ZTI7S2098C4[];
extern  VTBL_ENTRY _ZTV7S2098C4[];
extern Class_Descriptor cd_S2098C3;
extern VTBL_ENTRY _ZTI7S2098C3[];
extern  VTBL_ENTRY _ZTV7S2098C3[];
static Base_Class bases_S2098C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2098C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2098C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2098C2[];
extern void _ZN7S2098C2D1Ev();
extern void _ZN7S2098C2D0Ev();
extern void _ZN7S2098C42v2Ev();
extern void _ZN7S2098C42v3Ev();
extern void _ZN7S2098C42v4Ev();
extern void _ZN7S2098C42v5Ev();
extern void _ZN7S2098C32v6Ev();
extern void _ZN7S2098C32v7Ev();
extern void _ZN7S2098C32v8Ev();
extern void _ZN7S2098C22v9Ev();
extern void _ZN7S2098C23v10Ev();
extern void _ZN7S2098C23v11Ev();
static  VTBL_ENTRY vtc_S2098C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2098C2[0]),
  (VTBL_ENTRY)&_ZN7S2098C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2098C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2098C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2098C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2098C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2098C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2098C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2098C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S2098C2[];
extern  VTBL_ENTRY _ZTV7S2098C2[];
Class_Descriptor cd_S2098C2 = {  "S2098C2", // class name
  bases_S2098C2, 2,
  &(vtc_S2098C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2098C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2098C2),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2098C1  : S2098C2 {
  int s2098c1f0[13];
  virtual  ~S2098C1(); // _ZN7S2098C1D1Ev
  virtual void  v1(); // _ZN7S2098C12v1Ev
  S2098C1(); // tgen
};
//SIG(1 S2098C1) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fp Fc Fi[4] Fp} vd v6 v7 v8 Fi[3]} vd v9 v10 v11 Fi[3]} vd v1 Fi[13]}


 S2098C1 ::~S2098C1(){ note_dtor("S2098C1", this);}
void  S2098C1 ::v1(){vfunc_called(this, "_ZN7S2098C12v1Ev");}
S2098C1 ::S2098C1(){ note_ctor("S2098C1", this);} // tgen

static void Test_S2098C1()
{
  extern Class_Descriptor cd_S2098C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,28)];
    init_test(&cd_S2098C1, buf);
    S2098C1 *dp, &lv = *(dp=new (buf) S2098C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,108), "sizeof(S2098C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2098C1)");
    check_base_class_offset(lv, (S2098C4*)(S2098C3*)(S2098C2*), 0, "S2098C1");
    check_base_class_offset(lv, (S2098C3*)(S2098C2*), 0, "S2098C1");
    check_base_class_offset(lv, (S2098C2*), 0, "S2098C1");
    check_field_offset(lv, s2098c1f0, ABISELECT(72,56), "S2098C1.s2098c1f0");
    test_class_info(&lv, &cd_S2098C1);
    dp->~S2098C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2098C1(Test_S2098C1, "S2098C1", ABISELECT(128,108));

#else // __cplusplus

extern void _ZN7S2098C1C1Ev();
extern void _ZN7S2098C1D1Ev();
Name_Map name_map_S2098C1[] = {
  NSPAIR(_ZN7S2098C1C1Ev),
  NSPAIR(_ZN7S2098C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2098C4;
extern VTBL_ENTRY _ZTI7S2098C4[];
extern  VTBL_ENTRY _ZTV7S2098C4[];
extern Class_Descriptor cd_S2098C3;
extern VTBL_ENTRY _ZTI7S2098C3[];
extern  VTBL_ENTRY _ZTV7S2098C3[];
extern Class_Descriptor cd_S2098C2;
extern VTBL_ENTRY _ZTI7S2098C2[];
extern  VTBL_ENTRY _ZTV7S2098C2[];
static Base_Class bases_S2098C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2098C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2098C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2098C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2098C1[];
extern void _ZN7S2098C1D1Ev();
extern void _ZN7S2098C1D0Ev();
extern void _ZN7S2098C42v2Ev();
extern void _ZN7S2098C42v3Ev();
extern void _ZN7S2098C42v4Ev();
extern void _ZN7S2098C42v5Ev();
extern void _ZN7S2098C32v6Ev();
extern void _ZN7S2098C32v7Ev();
extern void _ZN7S2098C32v8Ev();
extern void _ZN7S2098C22v9Ev();
extern void _ZN7S2098C23v10Ev();
extern void _ZN7S2098C23v11Ev();
extern void _ZN7S2098C12v1Ev();
static  VTBL_ENTRY vtc_S2098C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2098C1[0]),
  (VTBL_ENTRY)&_ZN7S2098C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2098C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2098C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2098C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2098C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2098C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2098C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2098C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2098C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S2098C1[];
extern  VTBL_ENTRY _ZTV7S2098C1[];
Class_Descriptor cd_S2098C1 = {  "S2098C1", // class name
  bases_S2098C1, 3,
  &(vtc_S2098C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,108), // object size
  NSPAIRA(_ZTI7S2098C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2098C1),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2099C4  {
  void *s2099c4f0;
  char s2099c4f1;
  int s2099c4f2[4];
  void *s2099c4f3;
  virtual  ~S2099C4(); // _ZN7S2099C4D1Ev
  virtual void  v2(); // _ZN7S2099C42v2Ev
  virtual void  v3(); // _ZN7S2099C42v3Ev
  virtual void  v4(); // _ZN7S2099C42v4Ev
  virtual void  v5(); // _ZN7S2099C42v5Ev
  S2099C4(); // tgen
};
//SIG(-1 S2099C4) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S2099C4 ::~S2099C4(){ note_dtor("S2099C4", this);}
void  S2099C4 ::v2(){vfunc_called(this, "_ZN7S2099C42v2Ev");}
void  S2099C4 ::v3(){vfunc_called(this, "_ZN7S2099C42v3Ev");}
void  S2099C4 ::v4(){vfunc_called(this, "_ZN7S2099C42v4Ev");}
void  S2099C4 ::v5(){vfunc_called(this, "_ZN7S2099C42v5Ev");}
S2099C4 ::S2099C4(){ note_ctor("S2099C4", this);} // tgen

static void Test_S2099C4()
{
  extern Class_Descriptor cd_S2099C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S2099C4, buf);
    S2099C4 *dp, &lv = *(dp=new (buf) S2099C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S2099C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2099C4)");
    check_field_offset(lv, s2099c4f0, ABISELECT(8,4), "S2099C4.s2099c4f0");
    check_field_offset(lv, s2099c4f1, ABISELECT(16,8), "S2099C4.s2099c4f1");
    check_field_offset(lv, s2099c4f2, ABISELECT(20,12), "S2099C4.s2099c4f2");
    check_field_offset(lv, s2099c4f3, ABISELECT(40,28), "S2099C4.s2099c4f3");
    test_class_info(&lv, &cd_S2099C4);
    dp->~S2099C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2099C4(Test_S2099C4, "S2099C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S2099C4C1Ev();
extern void _ZN7S2099C4D1Ev();
Name_Map name_map_S2099C4[] = {
  NSPAIR(_ZN7S2099C4C1Ev),
  NSPAIR(_ZN7S2099C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2099C4[];
extern void _ZN7S2099C4D1Ev();
extern void _ZN7S2099C4D0Ev();
extern void _ZN7S2099C42v2Ev();
extern void _ZN7S2099C42v3Ev();
extern void _ZN7S2099C42v4Ev();
extern void _ZN7S2099C42v5Ev();
static  VTBL_ENTRY vtc_S2099C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2099C4[0]),
  (VTBL_ENTRY)&_ZN7S2099C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2099C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2099C4[];
extern  VTBL_ENTRY _ZTV7S2099C4[];
Class_Descriptor cd_S2099C4 = {  "S2099C4", // class name
  0,0,//no base classes
  &(vtc_S2099C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S2099C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2099C4),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2099C3  : S2099C4 {
  int s2099c3f0[3];
  virtual  ~S2099C3(); // _ZN7S2099C3D1Ev
  virtual void  v6(); // _ZN7S2099C32v6Ev
  virtual void  v7(); // _ZN7S2099C32v7Ev
  virtual void  v8(); // _ZN7S2099C32v8Ev
  S2099C3(); // tgen
};
//SIG(-1 S2099C3) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S2099C3 ::~S2099C3(){ note_dtor("S2099C3", this);}
void  S2099C3 ::v6(){vfunc_called(this, "_ZN7S2099C32v6Ev");}
void  S2099C3 ::v7(){vfunc_called(this, "_ZN7S2099C32v7Ev");}
void  S2099C3 ::v8(){vfunc_called(this, "_ZN7S2099C32v8Ev");}
S2099C3 ::S2099C3(){ note_ctor("S2099C3", this);} // tgen

static void Test_S2099C3()
{
  extern Class_Descriptor cd_S2099C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S2099C3, buf);
    S2099C3 *dp, &lv = *(dp=new (buf) S2099C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S2099C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2099C3)");
    check_base_class_offset(lv, (S2099C4*), 0, "S2099C3");
    check_field_offset(lv, s2099c3f0, ABISELECT(48,32), "S2099C3.s2099c3f0");
    test_class_info(&lv, &cd_S2099C3);
    dp->~S2099C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2099C3(Test_S2099C3, "S2099C3", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S2099C3C1Ev();
extern void _ZN7S2099C3D1Ev();
Name_Map name_map_S2099C3[] = {
  NSPAIR(_ZN7S2099C3C1Ev),
  NSPAIR(_ZN7S2099C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2099C4;
extern VTBL_ENTRY _ZTI7S2099C4[];
extern  VTBL_ENTRY _ZTV7S2099C4[];
static Base_Class bases_S2099C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2099C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2099C3[];
extern void _ZN7S2099C3D1Ev();
extern void _ZN7S2099C3D0Ev();
extern void _ZN7S2099C42v2Ev();
extern void _ZN7S2099C42v3Ev();
extern void _ZN7S2099C42v4Ev();
extern void _ZN7S2099C42v5Ev();
extern void _ZN7S2099C32v6Ev();
extern void _ZN7S2099C32v7Ev();
extern void _ZN7S2099C32v8Ev();
static  VTBL_ENTRY vtc_S2099C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2099C3[0]),
  (VTBL_ENTRY)&_ZN7S2099C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2099C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2099C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2099C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2099C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S2099C3[];
extern  VTBL_ENTRY _ZTV7S2099C3[];
Class_Descriptor cd_S2099C3 = {  "S2099C3", // class name
  bases_S2099C3, 1,
  &(vtc_S2099C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S2099C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2099C3),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2099C2  : S2099C3 {
  int s2099c2f0[3];
  virtual  ~S2099C2(); // _ZN7S2099C2D1Ev
  virtual void  v9(); // _ZN7S2099C22v9Ev
  virtual void  v10(); // _ZN7S2099C23v10Ev
  virtual void  v11(); // _ZN7S2099C23v11Ev
  S2099C2(); // tgen
};
//SIG(-1 S2099C2) C1{ BC2{ BC3{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v8 v9 v10 Fi[3]} vd v1 v2 v3 Fi[3]}


 S2099C2 ::~S2099C2(){ note_dtor("S2099C2", this);}
void  S2099C2 ::v9(){vfunc_called(this, "_ZN7S2099C22v9Ev");}
void  S2099C2 ::v10(){vfunc_called(this, "_ZN7S2099C23v10Ev");}
void  S2099C2 ::v11(){vfunc_called(this, "_ZN7S2099C23v11Ev");}
S2099C2 ::S2099C2(){ note_ctor("S2099C2", this);} // tgen

static void Test_S2099C2()
{
  extern Class_Descriptor cd_S2099C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2099C2, buf);
    S2099C2 *dp, &lv = *(dp=new (buf) S2099C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2099C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2099C2)");
    check_base_class_offset(lv, (S2099C4*)(S2099C3*), 0, "S2099C2");
    check_base_class_offset(lv, (S2099C3*), 0, "S2099C2");
    check_field_offset(lv, s2099c2f0, ABISELECT(60,44), "S2099C2.s2099c2f0");
    test_class_info(&lv, &cd_S2099C2);
    dp->~S2099C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2099C2(Test_S2099C2, "S2099C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2099C2C1Ev();
extern void _ZN7S2099C2D1Ev();
Name_Map name_map_S2099C2[] = {
  NSPAIR(_ZN7S2099C2C1Ev),
  NSPAIR(_ZN7S2099C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2099C4;
extern VTBL_ENTRY _ZTI7S2099C4[];
extern  VTBL_ENTRY _ZTV7S2099C4[];
extern Class_Descriptor cd_S2099C3;
extern VTBL_ENTRY _ZTI7S2099C3[];
extern  VTBL_ENTRY _ZTV7S2099C3[];
static Base_Class bases_S2099C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2099C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2099C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2099C2[];
extern void _ZN7S2099C2D1Ev();
extern void _ZN7S2099C2D0Ev();
extern void _ZN7S2099C42v2Ev();
extern void _ZN7S2099C42v3Ev();
extern void _ZN7S2099C42v4Ev();
extern void _ZN7S2099C42v5Ev();
extern void _ZN7S2099C32v6Ev();
extern void _ZN7S2099C32v7Ev();
extern void _ZN7S2099C32v8Ev();
extern void _ZN7S2099C22v9Ev();
extern void _ZN7S2099C23v10Ev();
extern void _ZN7S2099C23v11Ev();
static  VTBL_ENTRY vtc_S2099C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2099C2[0]),
  (VTBL_ENTRY)&_ZN7S2099C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2099C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2099C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2099C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2099C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2099C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2099C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2099C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S2099C2[];
extern  VTBL_ENTRY _ZTV7S2099C2[];
Class_Descriptor cd_S2099C2 = {  "S2099C2", // class name
  bases_S2099C2, 2,
  &(vtc_S2099C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2099C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2099C2),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2099C1  : S2099C2 {
  int s2099c1f0[4];
  virtual  ~S2099C1(); // _ZN7S2099C1D1Ev
  virtual void  v1(); // _ZN7S2099C12v1Ev
  S2099C1(); // tgen
};
//SIG(1 S2099C1) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fp Fc Fi[4] Fp} vd v6 v7 v8 Fi[3]} vd v9 v10 v11 Fi[3]} vd v1 Fi[4]}


 S2099C1 ::~S2099C1(){ note_dtor("S2099C1", this);}
void  S2099C1 ::v1(){vfunc_called(this, "_ZN7S2099C12v1Ev");}
S2099C1 ::S2099C1(){ note_ctor("S2099C1", this);} // tgen

static void Test_S2099C1()
{
  extern Class_Descriptor cd_S2099C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,19)];
    init_test(&cd_S2099C1, buf);
    S2099C1 *dp, &lv = *(dp=new (buf) S2099C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,72), "sizeof(S2099C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2099C1)");
    check_base_class_offset(lv, (S2099C4*)(S2099C3*)(S2099C2*), 0, "S2099C1");
    check_base_class_offset(lv, (S2099C3*)(S2099C2*), 0, "S2099C1");
    check_base_class_offset(lv, (S2099C2*), 0, "S2099C1");
    check_field_offset(lv, s2099c1f0, ABISELECT(72,56), "S2099C1.s2099c1f0");
    test_class_info(&lv, &cd_S2099C1);
    dp->~S2099C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2099C1(Test_S2099C1, "S2099C1", ABISELECT(88,72));

#else // __cplusplus

extern void _ZN7S2099C1C1Ev();
extern void _ZN7S2099C1D1Ev();
Name_Map name_map_S2099C1[] = {
  NSPAIR(_ZN7S2099C1C1Ev),
  NSPAIR(_ZN7S2099C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2099C4;
extern VTBL_ENTRY _ZTI7S2099C4[];
extern  VTBL_ENTRY _ZTV7S2099C4[];
extern Class_Descriptor cd_S2099C3;
extern VTBL_ENTRY _ZTI7S2099C3[];
extern  VTBL_ENTRY _ZTV7S2099C3[];
extern Class_Descriptor cd_S2099C2;
extern VTBL_ENTRY _ZTI7S2099C2[];
extern  VTBL_ENTRY _ZTV7S2099C2[];
static Base_Class bases_S2099C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2099C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2099C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2099C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2099C1[];
extern void _ZN7S2099C1D1Ev();
extern void _ZN7S2099C1D0Ev();
extern void _ZN7S2099C42v2Ev();
extern void _ZN7S2099C42v3Ev();
extern void _ZN7S2099C42v4Ev();
extern void _ZN7S2099C42v5Ev();
extern void _ZN7S2099C32v6Ev();
extern void _ZN7S2099C32v7Ev();
extern void _ZN7S2099C32v8Ev();
extern void _ZN7S2099C22v9Ev();
extern void _ZN7S2099C23v10Ev();
extern void _ZN7S2099C23v11Ev();
extern void _ZN7S2099C12v1Ev();
static  VTBL_ENTRY vtc_S2099C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2099C1[0]),
  (VTBL_ENTRY)&_ZN7S2099C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2099C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2099C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2099C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2099C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2099C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2099C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2099C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2099C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S2099C1[];
extern  VTBL_ENTRY _ZTV7S2099C1[];
Class_Descriptor cd_S2099C1 = {  "S2099C1", // class name
  bases_S2099C1, 3,
  &(vtc_S2099C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,72), // object size
  NSPAIRA(_ZTI7S2099C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2099C1),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10157C2_nt  {
  virtual  ~S10157C2_nt(); // _ZN11S10157C2_ntD1Ev
  virtual void  v7(); // _ZN11S10157C2_nt2v7Ev
  virtual void  v8(); // _ZN11S10157C2_nt2v8Ev
  virtual void  v9(); // _ZN11S10157C2_nt2v9Ev
  virtual void  v10(); // _ZN11S10157C2_nt3v10Ev
  virtual void  v11(); // _ZN11S10157C2_nt3v11Ev
  virtual void  v12(); // _ZN11S10157C2_nt3v12Ev
  S10157C2_nt(); // tgen
};
//SIG(-1 S10157C2_nt) C1{ vd v1 v2 v3 v4 v5 v6}


 S10157C2_nt ::~S10157C2_nt(){ note_dtor("S10157C2_nt", this);}
void  S10157C2_nt ::v7(){vfunc_called(this, "_ZN11S10157C2_nt2v7Ev");}
void  S10157C2_nt ::v8(){vfunc_called(this, "_ZN11S10157C2_nt2v8Ev");}
void  S10157C2_nt ::v9(){vfunc_called(this, "_ZN11S10157C2_nt2v9Ev");}
void  S10157C2_nt ::v10(){vfunc_called(this, "_ZN11S10157C2_nt3v10Ev");}
void  S10157C2_nt ::v11(){vfunc_called(this, "_ZN11S10157C2_nt3v11Ev");}
void  S10157C2_nt ::v12(){vfunc_called(this, "_ZN11S10157C2_nt3v12Ev");}
S10157C2_nt ::S10157C2_nt(){ note_ctor("S10157C2_nt", this);} // tgen

//skip512 S10157C2_nt

#else // __cplusplus

extern void _ZN11S10157C2_ntC1Ev();
extern void _ZN11S10157C2_ntD1Ev();
Name_Map name_map_S10157C2_nt[] = {
  NSPAIR(_ZN11S10157C2_ntC1Ev),
  NSPAIR(_ZN11S10157C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S10157C2_nt[];
extern void _ZN11S10157C2_ntD1Ev();
extern void _ZN11S10157C2_ntD0Ev();
extern void _ZN11S10157C2_nt2v7Ev();
extern void _ZN11S10157C2_nt2v8Ev();
extern void _ZN11S10157C2_nt2v9Ev();
extern void _ZN11S10157C2_nt3v10Ev();
extern void _ZN11S10157C2_nt3v11Ev();
extern void _ZN11S10157C2_nt3v12Ev();
static  VTBL_ENTRY vtc_S10157C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S10157C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S10157C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt3v12Ev,
};
extern VTBL_ENTRY _ZTI11S10157C2_nt[];
VTBL_ENTRY *P__ZTI11S10157C2_nt = _ZTI11S10157C2_nt; 
extern  VTBL_ENTRY _ZTV11S10157C2_nt[];
Class_Descriptor cd_S10157C2_nt = {  "S10157C2_nt", // class name
  0,0,//no base classes
  &(vtc_S10157C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S10157C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S10157C2_nt),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10157C3_nt  {
  void *s10157c3f0;
  int s10157c3f1;
  void *s10157c3f2;
};
//SIG(-1 S10157C3_nt) C1{ Fp Fi Fp}



//skip512 S10157C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10157C1  : S10157C2_nt {
  char s10157c1f0[128];
  void *s10157c1f1[4];
  int s10157c1f2[2];
  ::S10157C3_nt s10157c1f3;
  int s10157c1f4;
  __tsi64 s10157c1f5;
  virtual  ~S10157C1(); // _ZN8S10157C1D1Ev
  virtual void  v1(); // _ZN8S10157C12v1Ev
  virtual void  v2(); // _ZN8S10157C12v2Ev
  virtual void  v3(); // _ZN8S10157C12v3Ev
  virtual void  v4(); // _ZN8S10157C12v4Ev
  virtual void  v5(); // _ZN8S10157C12v5Ev
  virtual void  v6(); // _ZN8S10157C12v6Ev
  S10157C1(); // tgen
};
//SIG(1 S10157C1) C1{ BC2{ vd v7 v8 v9 v10 v11 v12} vd v1 v2 v3 v4 v5 v6 Fc[128] Fp[4] Fi[2] FC3{ Fp Fi Fp} Fi FL}


 S10157C1 ::~S10157C1(){ note_dtor("S10157C1", this);}
void  S10157C1 ::v1(){vfunc_called(this, "_ZN8S10157C12v1Ev");}
void  S10157C1 ::v2(){vfunc_called(this, "_ZN8S10157C12v2Ev");}
void  S10157C1 ::v3(){vfunc_called(this, "_ZN8S10157C12v3Ev");}
void  S10157C1 ::v4(){vfunc_called(this, "_ZN8S10157C12v4Ev");}
void  S10157C1 ::v5(){vfunc_called(this, "_ZN8S10157C12v5Ev");}
void  S10157C1 ::v6(){vfunc_called(this, "_ZN8S10157C12v6Ev");}
S10157C1 ::S10157C1(){ note_ctor("S10157C1", this);} // tgen

static void Test_S10157C1()
{
  extern Class_Descriptor cd_S10157C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,46)];
    init_test(&cd_S10157C1, buf);
    S10157C1 *dp, &lv = *(dp=new (buf) S10157C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,180), "sizeof(S10157C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10157C1)");
    check_base_class_offset(lv, (S10157C2_nt*), 0, "S10157C1");
    check_field_offset(lv, s10157c1f0, ABISELECT(8,4), "S10157C1.s10157c1f0");
    check_field_offset(lv, s10157c1f1, ABISELECT(136,132), "S10157C1.s10157c1f1");
    check_field_offset(lv, s10157c1f2, ABISELECT(168,148), "S10157C1.s10157c1f2");
    check_field_offset(lv, s10157c1f3, ABISELECT(176,156), "S10157C1.s10157c1f3");
    check_field_offset(lv, s10157c1f4, ABISELECT(200,168), "S10157C1.s10157c1f4");
    check_field_offset(lv, s10157c1f5, ABISELECT(208,172), "S10157C1.s10157c1f5");
    test_class_info(&lv, &cd_S10157C1);
    dp->~S10157C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10157C1(Test_S10157C1, "S10157C1", ABISELECT(216,180));

#else // __cplusplus

extern void _ZN8S10157C1C1Ev();
extern void _ZN8S10157C1D1Ev();
Name_Map name_map_S10157C1[] = {
  NSPAIR(_ZN8S10157C1C1Ev),
  NSPAIR(_ZN8S10157C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10157C2_nt;
extern VTBL_ENTRY _ZTI11S10157C2_nt[];
extern  VTBL_ENTRY _ZTV11S10157C2_nt[];
static Base_Class bases_S10157C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10157C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10157C1[];
extern void _ZN8S10157C1D1Ev();
extern void _ZN8S10157C1D0Ev();
extern void _ZN11S10157C2_nt2v7Ev();
extern void _ZN11S10157C2_nt2v8Ev();
extern void _ZN11S10157C2_nt2v9Ev();
extern void _ZN11S10157C2_nt3v10Ev();
extern void _ZN11S10157C2_nt3v11Ev();
extern void _ZN11S10157C2_nt3v12Ev();
extern void _ZN8S10157C12v1Ev();
extern void _ZN8S10157C12v2Ev();
extern void _ZN8S10157C12v3Ev();
extern void _ZN8S10157C12v4Ev();
extern void _ZN8S10157C12v5Ev();
extern void _ZN8S10157C12v6Ev();
static  VTBL_ENTRY vtc_S10157C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10157C1[0]),
  (VTBL_ENTRY)&_ZN8S10157C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10157C1D0Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S10157C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10157C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10157C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10157C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10157C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10157C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S10157C1[];
extern  VTBL_ENTRY _ZTV8S10157C1[];
Class_Descriptor cd_S10157C1 = {  "S10157C1", // class name
  bases_S10157C1, 1,
  &(vtc_S10157C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(216,180), // object size
  NSPAIRA(_ZTI8S10157C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10157C1),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4382C3_nt  {
  ::S4228C19_nt s4382c3f0;
  int s4382c3f1[2];
  char s4382c3f2;
  virtual  ~S4382C3_nt(); // _ZN10S4382C3_ntD1Ev
  virtual void  v2(); // _ZN10S4382C3_nt2v2Ev
  virtual void  v3(); // _ZN10S4382C3_nt2v3Ev
  virtual void  v4(); // _ZN10S4382C3_nt2v4Ev
  S4382C3_nt(); // tgen
};
//SIG(-1 S4382C3_nt) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4382C3_nt ::~S4382C3_nt(){ note_dtor("S4382C3_nt", this);}
void  S4382C3_nt ::v2(){vfunc_called(this, "_ZN10S4382C3_nt2v2Ev");}
void  S4382C3_nt ::v3(){vfunc_called(this, "_ZN10S4382C3_nt2v3Ev");}
void  S4382C3_nt ::v4(){vfunc_called(this, "_ZN10S4382C3_nt2v4Ev");}
S4382C3_nt ::S4382C3_nt(){ note_ctor("S4382C3_nt", this);} // tgen

//skip512 S4382C3_nt

#else // __cplusplus

extern void _ZN10S4382C3_ntC1Ev();
extern void _ZN10S4382C3_ntD1Ev();
Name_Map name_map_S4382C3_nt[] = {
  NSPAIR(_ZN10S4382C3_ntC1Ev),
  NSPAIR(_ZN10S4382C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4382C3_nt[];
extern void _ZN10S4382C3_ntD1Ev();
extern void _ZN10S4382C3_ntD0Ev();
extern void _ZN10S4382C3_nt2v2Ev();
extern void _ZN10S4382C3_nt2v3Ev();
extern void _ZN10S4382C3_nt2v4Ev();
static  VTBL_ENTRY vtc_S4382C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4382C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4382C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_nt2v4Ev,
};
extern VTBL_ENTRY _ZTI10S4382C3_nt[];
VTBL_ENTRY *P__ZTI10S4382C3_nt = _ZTI10S4382C3_nt; 
extern  VTBL_ENTRY _ZTV10S4382C3_nt[];
Class_Descriptor cd_S4382C3_nt = {  "S4382C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4382C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI10S4382C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4382C3_nt),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4382C2_nt  : S4382C3_nt {
  void *s4382c2f0;
  virtual void  v5(); // _ZN10S4382C2_nt2v5Ev
  virtual void  v6(); // _ZN10S4382C2_nt2v6Ev
  ~S4382C2_nt(); // tgen
  S4382C2_nt(); // tgen
};
//SIG(-1 S4382C2_nt) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4382C2_nt ::v5(){vfunc_called(this, "_ZN10S4382C2_nt2v5Ev");}
void  S4382C2_nt ::v6(){vfunc_called(this, "_ZN10S4382C2_nt2v6Ev");}
S4382C2_nt ::~S4382C2_nt(){ note_dtor("S4382C2_nt", this);} // tgen
S4382C2_nt ::S4382C2_nt(){ note_ctor("S4382C2_nt", this);} // tgen

//skip512 S4382C2_nt

#else // __cplusplus

extern void _ZN10S4382C2_ntC1Ev();
extern void _ZN10S4382C2_ntD1Ev();
Name_Map name_map_S4382C2_nt[] = {
  NSPAIR(_ZN10S4382C2_ntC1Ev),
  NSPAIR(_ZN10S4382C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4382C3_nt;
extern VTBL_ENTRY _ZTI10S4382C3_nt[];
extern  VTBL_ENTRY _ZTV10S4382C3_nt[];
static Base_Class bases_S4382C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4382C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4382C2_nt[];
extern void _ZN10S4382C2_ntD1Ev();
extern void _ZN10S4382C2_ntD0Ev();
extern void _ZN10S4382C3_nt2v2Ev();
extern void _ZN10S4382C3_nt2v3Ev();
extern void _ZN10S4382C3_nt2v4Ev();
extern void _ZN10S4382C2_nt2v5Ev();
extern void _ZN10S4382C2_nt2v6Ev();
static  VTBL_ENTRY vtc_S4382C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4382C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4382C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4382C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4382C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4382C2_nt2v6Ev,
};
extern VTBL_ENTRY _ZTI10S4382C2_nt[];
VTBL_ENTRY *P__ZTI10S4382C2_nt = _ZTI10S4382C2_nt; 
extern  VTBL_ENTRY _ZTV10S4382C2_nt[];
Class_Descriptor cd_S4382C2_nt = {  "S4382C2_nt", // class name
  bases_S4382C2_nt, 1,
  &(vtc_S4382C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI10S4382C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4382C2_nt),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4382C1  : S4382C2_nt {
  ::S4228C44 s4382c1f0;
  ::S4228C19_nt s4382c1f1;
  virtual void  v1(); // _ZN7S4382C12v1Ev
  ~S4382C1(); // tgen
  S4382C1(); // tgen
};
//SIG(1 S4382C1) C1{ BC2{ BC3{ vd v2 v3 v4 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v5 v6 Fp} v1 FC6{ m Fp Fi[2] FC7{ m}} FC4}


void  S4382C1 ::v1(){vfunc_called(this, "_ZN7S4382C12v1Ev");}
S4382C1 ::~S4382C1(){ note_dtor("S4382C1", this);} // tgen
S4382C1 ::S4382C1(){ note_ctor("S4382C1", this);} // tgen

static void Test_S4382C1()
{
  extern Class_Descriptor cd_S4382C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S4382C1, buf);
    S4382C1 *dp, &lv = *(dp=new (buf) S4382C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S4382C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4382C1)");
    check_base_class_offset(lv, (S4382C3_nt*)(S4382C2_nt*), 0, "S4382C1");
    check_base_class_offset(lv, (S4382C2_nt*), 0, "S4382C1");
    check_field_offset(lv, s4382c1f0, ABISELECT(48,32), "S4382C1.s4382c1f0");
    check_field_offset(lv, s4382c1f1, ABISELECT(72,48), "S4382C1.s4382c1f1");
    test_class_info(&lv, &cd_S4382C1);
    dp->~S4382C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4382C1(Test_S4382C1, "S4382C1", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN7S4382C1C1Ev();
extern void _ZN7S4382C1D1Ev();
Name_Map name_map_S4382C1[] = {
  NSPAIR(_ZN7S4382C1C1Ev),
  NSPAIR(_ZN7S4382C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4382C3_nt;
extern VTBL_ENTRY _ZTI10S4382C3_nt[];
extern  VTBL_ENTRY _ZTV10S4382C3_nt[];
extern Class_Descriptor cd_S4382C2_nt;
extern VTBL_ENTRY _ZTI10S4382C2_nt[];
extern  VTBL_ENTRY _ZTV10S4382C2_nt[];
static Base_Class bases_S4382C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4382C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4382C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4382C1[];
extern void _ZN7S4382C1D1Ev();
extern void _ZN7S4382C1D0Ev();
extern void _ZN10S4382C3_nt2v2Ev();
extern void _ZN10S4382C3_nt2v3Ev();
extern void _ZN10S4382C3_nt2v4Ev();
extern void _ZN10S4382C2_nt2v5Ev();
extern void _ZN10S4382C2_nt2v6Ev();
extern void _ZN7S4382C12v1Ev();
static  VTBL_ENTRY vtc_S4382C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4382C1[0]),
  (VTBL_ENTRY)&_ZN7S4382C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4382C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4382C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4382C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN7S4382C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4382C1[];
extern  VTBL_ENTRY _ZTV7S4382C1[];
Class_Descriptor cd_S4382C1 = {  "S4382C1", // class name
  bases_S4382C1, 2,
  &(vtc_S4382C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI7S4382C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4382C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4727C3  {
  ::S4228C19_nt s4727c3f0;
  int s4727c3f1[2];
  char s4727c3f2;
  virtual  ~S4727C3(); // _ZN7S4727C3D1Ev
  virtual void  v3(); // _ZN7S4727C32v3Ev
  virtual void  v4(); // _ZN7S4727C32v4Ev
  virtual void  v5(); // _ZN7S4727C32v5Ev
  S4727C3(); // tgen
};
//SIG(-1 S4727C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4727C3 ::~S4727C3(){ note_dtor("S4727C3", this);}
void  S4727C3 ::v3(){vfunc_called(this, "_ZN7S4727C32v3Ev");}
void  S4727C3 ::v4(){vfunc_called(this, "_ZN7S4727C32v4Ev");}
void  S4727C3 ::v5(){vfunc_called(this, "_ZN7S4727C32v5Ev");}
S4727C3 ::S4727C3(){ note_ctor("S4727C3", this);} // tgen

static void Test_S4727C3()
{
  extern Class_Descriptor cd_S4727C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4727C3, buf);
    S4727C3 *dp, &lv = *(dp=new (buf) S4727C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4727C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4727C3)");
    check_field_offset(lv, s4727c3f0, ABISELECT(8,4), "S4727C3.s4727c3f0");
    check_field_offset(lv, s4727c3f1, ABISELECT(24,16), "S4727C3.s4727c3f1");
    check_field_offset(lv, s4727c3f2, ABISELECT(32,24), "S4727C3.s4727c3f2");
    test_class_info(&lv, &cd_S4727C3);
    dp->~S4727C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4727C3(Test_S4727C3, "S4727C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4727C3C1Ev();
extern void _ZN7S4727C3D1Ev();
Name_Map name_map_S4727C3[] = {
  NSPAIR(_ZN7S4727C3C1Ev),
  NSPAIR(_ZN7S4727C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4727C3[];
extern void _ZN7S4727C3D1Ev();
extern void _ZN7S4727C3D0Ev();
extern void _ZN7S4727C32v3Ev();
extern void _ZN7S4727C32v4Ev();
extern void _ZN7S4727C32v5Ev();
static  VTBL_ENTRY vtc_S4727C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4727C3[0]),
  (VTBL_ENTRY)&_ZN7S4727C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4727C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4727C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4727C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4727C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4727C3[];
extern  VTBL_ENTRY _ZTV7S4727C3[];
Class_Descriptor cd_S4727C3 = {  "S4727C3", // class name
  0,0,//no base classes
  &(vtc_S4727C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4727C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4727C3),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4727C2  : S4727C3 {
  void *s4727c2f0;
  virtual void  v6(); // _ZN7S4727C22v6Ev
  virtual void  v7(); // _ZN7S4727C22v7Ev
  ~S4727C2(); // tgen
  S4727C2(); // tgen
};
//SIG(-1 S4727C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4727C2 ::v6(){vfunc_called(this, "_ZN7S4727C22v6Ev");}
void  S4727C2 ::v7(){vfunc_called(this, "_ZN7S4727C22v7Ev");}
S4727C2 ::~S4727C2(){ note_dtor("S4727C2", this);} // tgen
S4727C2 ::S4727C2(){ note_ctor("S4727C2", this);} // tgen

static void Test_S4727C2()
{
  extern Class_Descriptor cd_S4727C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4727C2, buf);
    S4727C2 *dp, &lv = *(dp=new (buf) S4727C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4727C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4727C2)");
    check_base_class_offset(lv, (S4727C3*), 0, "S4727C2");
    check_field_offset(lv, s4727c2f0, ABISELECT(40,28), "S4727C2.s4727c2f0");
    test_class_info(&lv, &cd_S4727C2);
    dp->~S4727C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4727C2(Test_S4727C2, "S4727C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4727C2C1Ev();
extern void _ZN7S4727C2D1Ev();
Name_Map name_map_S4727C2[] = {
  NSPAIR(_ZN7S4727C2C1Ev),
  NSPAIR(_ZN7S4727C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4727C3;
extern VTBL_ENTRY _ZTI7S4727C3[];
extern  VTBL_ENTRY _ZTV7S4727C3[];
static Base_Class bases_S4727C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4727C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4727C2[];
extern void _ZN7S4727C2D1Ev();
extern void _ZN7S4727C2D0Ev();
extern void _ZN7S4727C32v3Ev();
extern void _ZN7S4727C32v4Ev();
extern void _ZN7S4727C32v5Ev();
extern void _ZN7S4727C22v6Ev();
extern void _ZN7S4727C22v7Ev();
static  VTBL_ENTRY vtc_S4727C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4727C2[0]),
  (VTBL_ENTRY)&_ZN7S4727C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4727C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4727C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4727C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4727C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4727C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4727C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S4727C2[];
extern  VTBL_ENTRY _ZTV7S4727C2[];
Class_Descriptor cd_S4727C2 = {  "S4727C2", // class name
  bases_S4727C2, 1,
  &(vtc_S4727C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4727C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4727C2),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4727C6_nt  {
  void *s4727c6f0;
  int s4727c6f1[5];
  void  mf4727c6(); // _ZN10S4727C6_nt8mf4727c6Ev
  virtual  ~S4727C6_nt(); // _ZN10S4727C6_ntD1Ev
  S4727C6_nt(); // tgen
};
//SIG(-1 S4727C6_nt) C1{ vd m Fp Fi[5]}


void  S4727C6_nt ::mf4727c6(){}
 S4727C6_nt ::~S4727C6_nt(){ note_dtor("S4727C6_nt", this);}
S4727C6_nt ::S4727C6_nt(){ note_ctor("S4727C6_nt", this);} // tgen

//skip512 S4727C6_nt

#else // __cplusplus

extern void _ZN10S4727C6_ntC1Ev();
extern void _ZN10S4727C6_ntD1Ev();
Name_Map name_map_S4727C6_nt[] = {
  NSPAIR(_ZN10S4727C6_ntC1Ev),
  NSPAIR(_ZN10S4727C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4727C6_nt[];
extern void _ZN10S4727C6_ntD1Ev();
extern void _ZN10S4727C6_ntD0Ev();
static  VTBL_ENTRY vtc_S4727C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4727C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S4727C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4727C6_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S4727C6_nt[];
VTBL_ENTRY *P__ZTI10S4727C6_nt = _ZTI10S4727C6_nt; 
extern  VTBL_ENTRY _ZTV10S4727C6_nt[];
Class_Descriptor cd_S4727C6_nt = {  "S4727C6_nt", // class name
  0,0,//no base classes
  &(vtc_S4727C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI10S4727C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4727C6_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4727C1  : S4727C2 , S4727C6_nt {
  virtual  ~S4727C1(); // _ZN7S4727C1D1Ev
  virtual void  v1(); // _ZN7S4727C12v1Ev
  virtual void  v2(); // _ZN7S4727C12v2Ev
  S4727C1(); // tgen
};
//SIG(1 S4727C1) C1{ BC2{ BC3{ vd v3 v4 v5 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v6 v7 Fp} BC6{ vd m Fp Fi[5]} vd v1 v2}


 S4727C1 ::~S4727C1(){ note_dtor("S4727C1", this);}
void  S4727C1 ::v1(){vfunc_called(this, "_ZN7S4727C12v1Ev");}
void  S4727C1 ::v2(){vfunc_called(this, "_ZN7S4727C12v2Ev");}
S4727C1 ::S4727C1(){ note_ctor("S4727C1", this);} // tgen

static void Test_S4727C1()
{
  extern Class_Descriptor cd_S4727C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S4727C1, buf);
    S4727C1 *dp, &lv = *(dp=new (buf) S4727C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S4727C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4727C1)");
    check_base_class_offset(lv, (S4727C3*)(S4727C2*), 0, "S4727C1");
    check_base_class_offset(lv, (S4727C2*), 0, "S4727C1");
    check_base_class_offset(lv, (S4727C6_nt*), ABISELECT(48,32), "S4727C1");
    test_class_info(&lv, &cd_S4727C1);
    dp->~S4727C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4727C1(Test_S4727C1, "S4727C1", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN7S4727C1C1Ev();
extern void _ZN7S4727C1D1Ev();
Name_Map name_map_S4727C1[] = {
  NSPAIR(_ZN7S4727C1C1Ev),
  NSPAIR(_ZN7S4727C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4727C3;
extern VTBL_ENTRY _ZTI7S4727C3[];
extern  VTBL_ENTRY _ZTV7S4727C3[];
extern Class_Descriptor cd_S4727C2;
extern VTBL_ENTRY _ZTI7S4727C2[];
extern  VTBL_ENTRY _ZTV7S4727C2[];
extern Class_Descriptor cd_S4727C6_nt;
extern VTBL_ENTRY _ZTI10S4727C6_nt[];
extern  VTBL_ENTRY _ZTV10S4727C6_nt[];
static Base_Class bases_S4727C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4727C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4727C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4727C6_nt,    ABISELECT(48,32), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4727C1[];
extern void _ZN7S4727C1D1Ev();
extern void _ZN7S4727C1D0Ev();
extern void _ZN7S4727C32v3Ev();
extern void _ZN7S4727C32v4Ev();
extern void _ZN7S4727C32v5Ev();
extern void _ZN7S4727C22v6Ev();
extern void _ZN7S4727C22v7Ev();
extern void _ZN7S4727C12v1Ev();
extern void _ZN7S4727C12v2Ev();
extern void ABISELECT(_ZThn48_N7S4727C1D1Ev,_ZThn32_N7S4727C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S4727C1D0Ev,_ZThn32_N7S4727C1D0Ev)();
static  VTBL_ENTRY vtc_S4727C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4727C1[0]),
  (VTBL_ENTRY)&_ZN7S4727C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4727C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4727C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4727C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4727C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4727C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4727C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4727C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4727C12v2Ev,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S4727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S4727C1D1Ev,_ZThn32_N7S4727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S4727C1D0Ev,_ZThn32_N7S4727C1D0Ev),
};
extern VTBL_ENTRY _ZTI7S4727C1[];
extern  VTBL_ENTRY _ZTV7S4727C1[];
Class_Descriptor cd_S4727C1 = {  "S4727C1", // class name
  bases_S4727C1, 3,
  &(vtc_S4727C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI7S4727C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4727C1),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4747C3  {
  ::S4228C19_nt s4747c3f0;
  int s4747c3f1[2];
  char s4747c3f2;
  virtual  ~S4747C3(); // _ZN7S4747C3D1Ev
  virtual void  v3(); // _ZN7S4747C32v3Ev
  virtual void  v4(); // _ZN7S4747C32v4Ev
  virtual void  v5(); // _ZN7S4747C32v5Ev
  S4747C3(); // tgen
};
//SIG(-1 S4747C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4747C3 ::~S4747C3(){ note_dtor("S4747C3", this);}
void  S4747C3 ::v3(){vfunc_called(this, "_ZN7S4747C32v3Ev");}
void  S4747C3 ::v4(){vfunc_called(this, "_ZN7S4747C32v4Ev");}
void  S4747C3 ::v5(){vfunc_called(this, "_ZN7S4747C32v5Ev");}
S4747C3 ::S4747C3(){ note_ctor("S4747C3", this);} // tgen

static void Test_S4747C3()
{
  extern Class_Descriptor cd_S4747C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4747C3, buf);
    S4747C3 *dp, &lv = *(dp=new (buf) S4747C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4747C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4747C3)");
    check_field_offset(lv, s4747c3f0, ABISELECT(8,4), "S4747C3.s4747c3f0");
    check_field_offset(lv, s4747c3f1, ABISELECT(24,16), "S4747C3.s4747c3f1");
    check_field_offset(lv, s4747c3f2, ABISELECT(32,24), "S4747C3.s4747c3f2");
    test_class_info(&lv, &cd_S4747C3);
    dp->~S4747C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4747C3(Test_S4747C3, "S4747C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4747C3C1Ev();
extern void _ZN7S4747C3D1Ev();
Name_Map name_map_S4747C3[] = {
  NSPAIR(_ZN7S4747C3C1Ev),
  NSPAIR(_ZN7S4747C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4747C3[];
extern void _ZN7S4747C3D1Ev();
extern void _ZN7S4747C3D0Ev();
extern void _ZN7S4747C32v3Ev();
extern void _ZN7S4747C32v4Ev();
extern void _ZN7S4747C32v5Ev();
static  VTBL_ENTRY vtc_S4747C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4747C3[0]),
  (VTBL_ENTRY)&_ZN7S4747C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4747C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4747C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4747C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4747C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4747C3[];
extern  VTBL_ENTRY _ZTV7S4747C3[];
Class_Descriptor cd_S4747C3 = {  "S4747C3", // class name
  0,0,//no base classes
  &(vtc_S4747C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4747C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4747C3),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4747C2  : S4747C3 {
  void *s4747c2f0;
  virtual void  v6(); // _ZN7S4747C22v6Ev
  virtual void  v7(); // _ZN7S4747C22v7Ev
  ~S4747C2(); // tgen
  S4747C2(); // tgen
};
//SIG(-1 S4747C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4747C2 ::v6(){vfunc_called(this, "_ZN7S4747C22v6Ev");}
void  S4747C2 ::v7(){vfunc_called(this, "_ZN7S4747C22v7Ev");}
S4747C2 ::~S4747C2(){ note_dtor("S4747C2", this);} // tgen
S4747C2 ::S4747C2(){ note_ctor("S4747C2", this);} // tgen

static void Test_S4747C2()
{
  extern Class_Descriptor cd_S4747C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4747C2, buf);
    S4747C2 *dp, &lv = *(dp=new (buf) S4747C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4747C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4747C2)");
    check_base_class_offset(lv, (S4747C3*), 0, "S4747C2");
    check_field_offset(lv, s4747c2f0, ABISELECT(40,28), "S4747C2.s4747c2f0");
    test_class_info(&lv, &cd_S4747C2);
    dp->~S4747C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4747C2(Test_S4747C2, "S4747C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4747C2C1Ev();
extern void _ZN7S4747C2D1Ev();
Name_Map name_map_S4747C2[] = {
  NSPAIR(_ZN7S4747C2C1Ev),
  NSPAIR(_ZN7S4747C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4747C3;
extern VTBL_ENTRY _ZTI7S4747C3[];
extern  VTBL_ENTRY _ZTV7S4747C3[];
static Base_Class bases_S4747C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4747C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4747C2[];
extern void _ZN7S4747C2D1Ev();
extern void _ZN7S4747C2D0Ev();
extern void _ZN7S4747C32v3Ev();
extern void _ZN7S4747C32v4Ev();
extern void _ZN7S4747C32v5Ev();
extern void _ZN7S4747C22v6Ev();
extern void _ZN7S4747C22v7Ev();
static  VTBL_ENTRY vtc_S4747C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4747C2[0]),
  (VTBL_ENTRY)&_ZN7S4747C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4747C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4747C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4747C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4747C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4747C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4747C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S4747C2[];
extern  VTBL_ENTRY _ZTV7S4747C2[];
Class_Descriptor cd_S4747C2 = {  "S4747C2", // class name
  bases_S4747C2, 1,
  &(vtc_S4747C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4747C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4747C2),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4747C6_nt  {
  void *s4747c6f0[2];
  void  mf4747c6(); // _ZN10S4747C6_nt8mf4747c6Ev
};
//SIG(-1 S4747C6_nt) C1{ m Fp[2]}


void  S4747C6_nt ::mf4747c6(){}

//skip512 S4747C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4747C1  : S4747C2 {
  ::S4228C19_nt s4747c1f0;
  ::S4747C6_nt s4747c1f1;
  virtual  ~S4747C1(); // _ZN7S4747C1D1Ev
  virtual void  v1(); // _ZN7S4747C12v1Ev
  virtual void  v2(); // _ZN7S4747C12v2Ev
  S4747C1(); // tgen
};
//SIG(1 S4747C1) C1{ BC2{ BC3{ vd v3 v4 v5 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v6 v7 Fp} vd v1 v2 FC4 FC6{ m Fp[2]}}


 S4747C1 ::~S4747C1(){ note_dtor("S4747C1", this);}
void  S4747C1 ::v1(){vfunc_called(this, "_ZN7S4747C12v1Ev");}
void  S4747C1 ::v2(){vfunc_called(this, "_ZN7S4747C12v2Ev");}
S4747C1 ::S4747C1(){ note_ctor("S4747C1", this);} // tgen

static void Test_S4747C1()
{
  extern Class_Descriptor cd_S4747C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,14)];
    init_test(&cd_S4747C1, buf);
    S4747C1 *dp, &lv = *(dp=new (buf) S4747C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S4747C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4747C1)");
    check_base_class_offset(lv, (S4747C3*)(S4747C2*), 0, "S4747C1");
    check_base_class_offset(lv, (S4747C2*), 0, "S4747C1");
    check_field_offset(lv, s4747c1f0, ABISELECT(48,32), "S4747C1.s4747c1f0");
    check_field_offset(lv, s4747c1f1, ABISELECT(64,44), "S4747C1.s4747c1f1");
    test_class_info(&lv, &cd_S4747C1);
    dp->~S4747C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4747C1(Test_S4747C1, "S4747C1", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN7S4747C1C1Ev();
extern void _ZN7S4747C1D1Ev();
Name_Map name_map_S4747C1[] = {
  NSPAIR(_ZN7S4747C1C1Ev),
  NSPAIR(_ZN7S4747C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4747C3;
extern VTBL_ENTRY _ZTI7S4747C3[];
extern  VTBL_ENTRY _ZTV7S4747C3[];
extern Class_Descriptor cd_S4747C2;
extern VTBL_ENTRY _ZTI7S4747C2[];
extern  VTBL_ENTRY _ZTV7S4747C2[];
static Base_Class bases_S4747C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4747C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4747C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4747C1[];
extern void _ZN7S4747C1D1Ev();
extern void _ZN7S4747C1D0Ev();
extern void _ZN7S4747C32v3Ev();
extern void _ZN7S4747C32v4Ev();
extern void _ZN7S4747C32v5Ev();
extern void _ZN7S4747C22v6Ev();
extern void _ZN7S4747C22v7Ev();
extern void _ZN7S4747C12v1Ev();
extern void _ZN7S4747C12v2Ev();
static  VTBL_ENTRY vtc_S4747C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4747C1[0]),
  (VTBL_ENTRY)&_ZN7S4747C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4747C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4747C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4747C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4747C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4747C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4747C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4747C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4747C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4747C1[];
extern  VTBL_ENTRY _ZTV7S4747C1[];
Class_Descriptor cd_S4747C1 = {  "S4747C1", // class name
  bases_S4747C1, 2,
  &(vtc_S4747C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI7S4747C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4747C1),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12397C4_nt  {
  char s12397c4f0[12];
};
//SIG(-1 S12397C4_nt) C1{ Fc[12]}



//skip512 S12397C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12397C6_nt  {
  __tsi64 s12397c6f0;
};
//SIG(-1 S12397C6_nt) C1{ FL}



//skip512 S12397C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12397C5  {
  int s12397c5f0;
  char s12397c5f1[4];
  ::S12397C6_nt s12397c5f2;
};
//SIG(-1 S12397C5) C1{ Fi Fc[4] FC2{ FL}}



static void Test_S12397C5()
{
  {
    init_simple_test("S12397C5");
    S12397C5 lv;
    check2(sizeof(lv), 16, "sizeof(S12397C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12397C5)");
    check_field_offset(lv, s12397c5f0, 0, "S12397C5.s12397c5f0");
    check_field_offset(lv, s12397c5f1, 4, "S12397C5.s12397c5f1");
    check_field_offset(lv, s12397c5f2, 8, "S12397C5.s12397c5f2");
  }
}
static Arrange_To_Call_Me vS12397C5(Test_S12397C5, "S12397C5", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12397C1  {
  int s12397c1f0;
  ::S10007C30_nt s12397c1f1;
  ::S12397C4_nt s12397c1f2;
  int s12397c1f3[3];
  ::S12397C5 s12397c1f4;
  int s12397c1f5;
  __tsi64 s12397c1f6;
  int s12397c1f7;
  __tsi64 s12397c1f8;
  int s12397c1f9[2];
};
//SIG(1 S12397C1) C1{ Fi FC2{ FC3{ Fc[20]} Fc[16]} FC4{ Fc[12]} Fi[3] FC5{ Fi Fc[4] FC6{ FL}} Fi FL Fi FL Fi[2]}



static void Test_S12397C1()
{
  {
    init_simple_test("S12397C1");
    S12397C1 lv;
    check2(sizeof(lv), ABISELECT(120,112), "sizeof(S12397C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12397C1)");
    check_field_offset(lv, s12397c1f0, 0, "S12397C1.s12397c1f0");
    check_field_offset(lv, s12397c1f1, 4, "S12397C1.s12397c1f1");
    check_field_offset(lv, s12397c1f2, 40, "S12397C1.s12397c1f2");
    check_field_offset(lv, s12397c1f3, 52, "S12397C1.s12397c1f3");
    check_field_offset(lv, s12397c1f4, 64, "S12397C1.s12397c1f4");
    check_field_offset(lv, s12397c1f5, 80, "S12397C1.s12397c1f5");
    check_field_offset(lv, s12397c1f6, ABISELECT(88,84), "S12397C1.s12397c1f6");
    check_field_offset(lv, s12397c1f7, ABISELECT(96,92), "S12397C1.s12397c1f7");
    check_field_offset(lv, s12397c1f8, ABISELECT(104,96), "S12397C1.s12397c1f8");
    check_field_offset(lv, s12397c1f9, ABISELECT(112,104), "S12397C1.s12397c1f9");
  }
}
static Arrange_To_Call_Me vS12397C1(Test_S12397C1, "S12397C1", ABISELECT(120,112));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20197C2  {
  __tsi64 s20197c2f0:16;
  virtual void  v4(); // _ZN8S20197C22v4Ev
  virtual void  v5(); // _ZN8S20197C22v5Ev
  virtual void  v6(); // _ZN8S20197C22v6Ev
  virtual void  v7(); // _ZN8S20197C22v7Ev
  virtual void  v8(); // _ZN8S20197C22v8Ev
  virtual void  v9(); // _ZN8S20197C22v9Ev
  ~S20197C2(); // tgen
  S20197C2(); // tgen
};
//SIG(-1 S20197C2) C1{ v1 v2 v3 v4 v5 v6 FL:16}


void  S20197C2 ::v4(){vfunc_called(this, "_ZN8S20197C22v4Ev");}
void  S20197C2 ::v5(){vfunc_called(this, "_ZN8S20197C22v5Ev");}
void  S20197C2 ::v6(){vfunc_called(this, "_ZN8S20197C22v6Ev");}
void  S20197C2 ::v7(){vfunc_called(this, "_ZN8S20197C22v7Ev");}
void  S20197C2 ::v8(){vfunc_called(this, "_ZN8S20197C22v8Ev");}
void  S20197C2 ::v9(){vfunc_called(this, "_ZN8S20197C22v9Ev");}
S20197C2 ::~S20197C2(){ note_dtor("S20197C2", this);} // tgen
S20197C2 ::S20197C2(){ note_ctor("S20197C2", this);} // tgen

static void Test_S20197C2()
{
  extern Class_Descriptor cd_S20197C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,3)];
    init_test(&cd_S20197C2, buf);
    S20197C2 *dp, &lv = *(dp=new (buf) S20197C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20197C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20197C2)");
    set_bf_and_test(lv, s20197c2f0, ABISELECT(8,4), 0, 16, 1, "S20197C2");
    set_bf_and_test(lv, s20197c2f0, ABISELECT(8,4), 0, 16, hide_sll(1LL<<15), "S20197C2");
    test_class_info(&lv, &cd_S20197C2);
    dp->~S20197C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20197C2(Test_S20197C2, "S20197C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20197C2C1Ev();
extern void _ZN8S20197C2D1Ev();
Name_Map name_map_S20197C2[] = {
  NSPAIR(_ZN8S20197C2C1Ev),
  NSPAIR(_ZN8S20197C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20197C2[];
extern void _ZN8S20197C22v4Ev();
extern void _ZN8S20197C22v5Ev();
extern void _ZN8S20197C22v6Ev();
extern void _ZN8S20197C22v7Ev();
extern void _ZN8S20197C22v8Ev();
extern void _ZN8S20197C22v9Ev();
static  VTBL_ENTRY vtc_S20197C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20197C2[0]),
  (VTBL_ENTRY)&_ZN8S20197C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v9Ev,
};
extern VTBL_ENTRY _ZTI8S20197C2[];
extern  VTBL_ENTRY _ZTV8S20197C2[];
Class_Descriptor cd_S20197C2 = {  "S20197C2", // class name
  0,0,//no base classes
  &(vtc_S20197C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20197C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20197C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20197C3  : virtual S20197C2 {
  virtual void  v10(); // _ZN8S20197C33v10Ev
  virtual void  v11(); // _ZN8S20197C33v11Ev
  ~S20197C3(); // tgen
  S20197C3(); // tgen
};
//SIG(-1 S20197C3) C1{ VBC2{ v3 v4 v5 v6 v7 v8 FL:16} v1 v2}


void  S20197C3 ::v10(){vfunc_called(this, "_ZN8S20197C33v10Ev");}
void  S20197C3 ::v11(){vfunc_called(this, "_ZN8S20197C33v11Ev");}
S20197C3 ::~S20197C3(){ note_dtor("S20197C3", this);} // tgen
S20197C3 ::S20197C3(){ note_ctor("S20197C3", this);} // tgen

static void Test_S20197C3()
{
  extern Class_Descriptor cd_S20197C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,4)];
    init_test(&cd_S20197C3, buf);
    S20197C3 *dp, &lv = *(dp=new (buf) S20197C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20197C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20197C3)");
    check_base_class_offset(lv, (S20197C2*), ABISELECT(8,4), "S20197C3");
    test_class_info(&lv, &cd_S20197C3);
    dp->~S20197C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20197C3(Test_S20197C3, "S20197C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20197C3C1Ev();
extern void _ZN8S20197C3D1Ev();
Name_Map name_map_S20197C3[] = {
  NSPAIR(_ZN8S20197C3C1Ev),
  NSPAIR(_ZN8S20197C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20197C2;
extern VTBL_ENTRY _ZTI8S20197C2[];
extern  VTBL_ENTRY _ZTV8S20197C2[];
static Base_Class bases_S20197C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20197C2,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20197C3[];
extern void _ZN8S20197C33v10Ev();
extern void _ZN8S20197C33v11Ev();
extern void _ZN8S20197C22v4Ev();
extern void _ZN8S20197C22v5Ev();
extern void _ZN8S20197C22v6Ev();
extern void _ZN8S20197C22v7Ev();
extern void _ZN8S20197C22v8Ev();
extern void _ZN8S20197C22v9Ev();
static  VTBL_ENTRY vtc_S20197C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20197C3[0]),
  (VTBL_ENTRY)&_ZN8S20197C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20197C33v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20197C3[0]),
  (VTBL_ENTRY)&_ZN8S20197C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v9Ev,
};
extern VTBL_ENTRY _ZTV8S20197C3[];
static  VTT_ENTRY vtt_S20197C3[] = {
  {&(_ZTV8S20197C3[3]),  3,19},
  {&(_ZTV8S20197C3[13]),  13,19},
};
extern VTBL_ENTRY _ZTI8S20197C3[];
extern  VTBL_ENTRY _ZTV8S20197C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20197C3[];
Class_Descriptor cd_S20197C3 = {  "S20197C3", // class name
  bases_S20197C3, 1,
  &(vtc_S20197C3[0]), // expected_vtbl_contents
  &(vtt_S20197C3[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20197C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20197C3),19, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20197C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20197C4  {
  __tsi64 s20197c4f0[6];
  virtual void  v12(); // _ZN8S20197C43v12Ev
  virtual void  v13(); // _ZN8S20197C43v13Ev
  ~S20197C4(); // tgen
  S20197C4(); // tgen
};
//SIG(-1 S20197C4) C1{ v1 v2 FL[6]}


void  S20197C4 ::v12(){vfunc_called(this, "_ZN8S20197C43v12Ev");}
void  S20197C4 ::v13(){vfunc_called(this, "_ZN8S20197C43v13Ev");}
S20197C4 ::~S20197C4(){ note_dtor("S20197C4", this);} // tgen
S20197C4 ::S20197C4(){ note_ctor("S20197C4", this);} // tgen

static void Test_S20197C4()
{
  extern Class_Descriptor cd_S20197C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,14)];
    init_test(&cd_S20197C4, buf);
    S20197C4 *dp, &lv = *(dp=new (buf) S20197C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S20197C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20197C4)");
    check_field_offset(lv, s20197c4f0, ABISELECT(8,4), "S20197C4.s20197c4f0");
    test_class_info(&lv, &cd_S20197C4);
    dp->~S20197C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20197C4(Test_S20197C4, "S20197C4", ABISELECT(56,52));

#else // __cplusplus

extern void _ZN8S20197C4C1Ev();
extern void _ZN8S20197C4D1Ev();
Name_Map name_map_S20197C4[] = {
  NSPAIR(_ZN8S20197C4C1Ev),
  NSPAIR(_ZN8S20197C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20197C4[];
extern void _ZN8S20197C43v12Ev();
extern void _ZN8S20197C43v13Ev();
static  VTBL_ENTRY vtc_S20197C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20197C4[0]),
  (VTBL_ENTRY)&_ZN8S20197C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20197C43v13Ev,
};
extern VTBL_ENTRY _ZTI8S20197C4[];
extern  VTBL_ENTRY _ZTV8S20197C4[];
Class_Descriptor cd_S20197C4 = {  "S20197C4", // class name
  0,0,//no base classes
  &(vtc_S20197C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,52), // object size
  NSPAIRA(_ZTI8S20197C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20197C4),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20197C1  : virtual S20197C2 , virtual S20197C3 , S20197C4 {
  void *s20197c1f0;
  __tsi64 s20197c1f1;
  virtual void  v1(); // _ZN8S20197C12v1Ev
  virtual void  v2(); // _ZN8S20197C12v2Ev
  virtual void  v3(); // _ZN8S20197C12v3Ev
  ~S20197C1(); // tgen
  S20197C1(); // tgen
};
//SIG(1 S20197C1) C1{ VBC2{ v4 v5 v6 v7 v8 v9 FL:16} VBC3{ VBC2 v10 v11} BC4{ v12 v13 FL[6]} v1 v2 v3 Fp FL}


void  S20197C1 ::v1(){vfunc_called(this, "_ZN8S20197C12v1Ev");}
void  S20197C1 ::v2(){vfunc_called(this, "_ZN8S20197C12v2Ev");}
void  S20197C1 ::v3(){vfunc_called(this, "_ZN8S20197C12v3Ev");}
S20197C1 ::~S20197C1(){ note_dtor("S20197C1", this);} // tgen
S20197C1 ::S20197C1(){ note_ctor("S20197C1", this);} // tgen

static void Test_S20197C1()
{
  extern Class_Descriptor cd_S20197C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,20)];
    init_test(&cd_S20197C1, buf);
    S20197C1 *dp, &lv = *(dp=new (buf) S20197C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,76), "sizeof(S20197C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20197C1)");
    check_base_class_offset(lv, (S20197C2*), ABISELECT(72,64), "S20197C1");
    check_base_class_offset(lv, (S20197C2*)(S20197C3*), ABISELECT(72,64), "S20197C1");
    check_base_class_offset(lv, (S20197C3*), ABISELECT(88,72), "S20197C1");
    check_base_class_offset(lv, (S20197C4*), 0, "S20197C1");
    check_field_offset(lv, s20197c1f0, ABISELECT(56,52), "S20197C1.s20197c1f0");
    check_field_offset(lv, s20197c1f1, ABISELECT(64,56), "S20197C1.s20197c1f1");
    test_class_info(&lv, &cd_S20197C1);
    dp->~S20197C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20197C1(Test_S20197C1, "S20197C1", ABISELECT(96,76));

#else // __cplusplus

extern void _ZN8S20197C1C1Ev();
extern void _ZN8S20197C1D1Ev();
Name_Map name_map_S20197C1[] = {
  NSPAIR(_ZN8S20197C1C1Ev),
  NSPAIR(_ZN8S20197C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20197C2;
extern VTBL_ENTRY _ZTI8S20197C2[];
extern  VTBL_ENTRY _ZTV8S20197C2[];
extern Class_Descriptor cd_S20197C3;
extern VTBL_ENTRY _ZTI8S20197C3[];
extern  VTBL_ENTRY _ZTV8S20197C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20197C3[];
extern Class_Descriptor cd_S20197C4;
extern VTBL_ENTRY _ZTI8S20197C4[];
extern  VTBL_ENTRY _ZTV8S20197C4[];
static Base_Class bases_S20197C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20197C2,    ABISELECT(72,64), //bcp->offset
    9, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20197C3,    ABISELECT(88,72), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20197C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20197C1[];
extern void _ZN8S20197C43v12Ev();
extern void _ZN8S20197C43v13Ev();
extern void _ZN8S20197C12v1Ev();
extern void _ZN8S20197C12v2Ev();
extern void _ZN8S20197C12v3Ev();
extern void _ZN8S20197C22v4Ev();
extern void _ZN8S20197C22v5Ev();
extern void _ZN8S20197C22v6Ev();
extern void _ZN8S20197C22v7Ev();
extern void _ZN8S20197C22v8Ev();
extern void _ZN8S20197C22v9Ev();
extern void _ZN8S20197C33v10Ev();
extern void _ZN8S20197C33v11Ev();
static  VTBL_ENTRY vtc_S20197C1[] = {
  ABISELECT(88,72),
  ABISELECT(72,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20197C1[0]),
  (VTBL_ENTRY)&_ZN8S20197C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20197C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20197C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20197C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20197C12v3Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-64),
  (VTBL_ENTRY)&(_ZTI8S20197C1[0]),
  (VTBL_ENTRY)&_ZN8S20197C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v9Ev,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S20197C1[0]),
  (VTBL_ENTRY)&_ZN8S20197C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20197C33v11Ev,
};
extern VTBL_ENTRY _ZTV8S20197C1[];
extern void _ZN8S20197C33v10Ev();
extern void _ZN8S20197C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20197C3__8S20197C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20197C3[0]),
  (VTBL_ENTRY)&_ZN8S20197C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20197C33v11Ev,
};
extern void _ZN8S20197C22v4Ev();
extern void _ZN8S20197C22v5Ev();
extern void _ZN8S20197C22v6Ev();
extern void _ZN8S20197C22v7Ev();
extern void _ZN8S20197C22v8Ev();
extern void _ZN8S20197C22v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20197C2__8S20197C3__8S20197C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20197C3[0]),
  (VTBL_ENTRY)&_ZN8S20197C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v9Ev,
};
static  VTT_ENTRY vtt_S20197C1[] = {
  {&(_ZTV8S20197C1[4]),  4,30},
  {&(_ZTV8S20197C1[17]),  17,30},
  {&(_ZTV8S20197C1[28]),  28,30},
  {&(_tg__ZTV8S20197C3__8S20197C1[3]),  3,5},
  {&(_tg__ZTV8S20197C2__8S20197C3__8S20197C1[8]),  8,14},
};
extern VTBL_ENTRY _ZTI8S20197C1[];
extern  VTBL_ENTRY _ZTV8S20197C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20197C1[];
Class_Descriptor cd_S20197C1 = {  "S20197C1", // class name
  bases_S20197C1, 3,
  &(vtc_S20197C1[0]), // expected_vtbl_contents
  &(vtt_S20197C1[0]), // expected_vtt_contents
  ABISELECT(96,76), // object size
  NSPAIRA(_ZTI8S20197C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20197C1),30, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20197C1),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9654C2  {
  ::S4228C19_nt s9654c2f0;
  int s9654c2f1[2];
  char s9654c2f2;
  virtual  ~S9654C2(); // _ZN7S9654C2D1Ev
  virtual void  v4(); // _ZN7S9654C22v4Ev
  virtual void  v5(); // _ZN7S9654C22v5Ev
  virtual void  v6(); // _ZN7S9654C22v6Ev
  S9654C2(); // tgen
};
//SIG(-1 S9654C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9654C2 ::~S9654C2(){ note_dtor("S9654C2", this);}
void  S9654C2 ::v4(){vfunc_called(this, "_ZN7S9654C22v4Ev");}
void  S9654C2 ::v5(){vfunc_called(this, "_ZN7S9654C22v5Ev");}
void  S9654C2 ::v6(){vfunc_called(this, "_ZN7S9654C22v6Ev");}
S9654C2 ::S9654C2(){ note_ctor("S9654C2", this);} // tgen

static void Test_S9654C2()
{
  extern Class_Descriptor cd_S9654C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9654C2, buf);
    S9654C2 *dp, &lv = *(dp=new (buf) S9654C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9654C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9654C2)");
    check_field_offset(lv, s9654c2f0, ABISELECT(8,4), "S9654C2.s9654c2f0");
    check_field_offset(lv, s9654c2f1, ABISELECT(24,16), "S9654C2.s9654c2f1");
    check_field_offset(lv, s9654c2f2, ABISELECT(32,24), "S9654C2.s9654c2f2");
    test_class_info(&lv, &cd_S9654C2);
    dp->~S9654C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9654C2(Test_S9654C2, "S9654C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9654C2C1Ev();
extern void _ZN7S9654C2D1Ev();
Name_Map name_map_S9654C2[] = {
  NSPAIR(_ZN7S9654C2C1Ev),
  NSPAIR(_ZN7S9654C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9654C2[];
extern void _ZN7S9654C2D1Ev();
extern void _ZN7S9654C2D0Ev();
extern void _ZN7S9654C22v4Ev();
extern void _ZN7S9654C22v5Ev();
extern void _ZN7S9654C22v6Ev();
static  VTBL_ENTRY vtc_S9654C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9654C2[0]),
  (VTBL_ENTRY)&_ZN7S9654C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9654C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9654C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9654C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9654C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S9654C2[];
extern  VTBL_ENTRY _ZTV7S9654C2[];
Class_Descriptor cd_S9654C2 = {  "S9654C2", // class name
  0,0,//no base classes
  &(vtc_S9654C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9654C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9654C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9654C5  {
  virtual  ~S9654C5(); // _ZN7S9654C5D1Ev
  virtual void  v7(); // _ZN7S9654C52v7Ev
  S9654C5(); // tgen
};
//SIG(-1 S9654C5) C1{ vd v1}


 S9654C5 ::~S9654C5(){ note_dtor("S9654C5", this);}
void  S9654C5 ::v7(){vfunc_called(this, "_ZN7S9654C52v7Ev");}
S9654C5 ::S9654C5(){ note_ctor("S9654C5", this);} // tgen

static void Test_S9654C5()
{
  extern Class_Descriptor cd_S9654C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S9654C5, buf);
    S9654C5 *dp, &lv = *(dp=new (buf) S9654C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S9654C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9654C5)");
    test_class_info(&lv, &cd_S9654C5);
    dp->~S9654C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9654C5(Test_S9654C5, "S9654C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S9654C5C1Ev();
extern void _ZN7S9654C5D1Ev();
Name_Map name_map_S9654C5[] = {
  NSPAIR(_ZN7S9654C5C1Ev),
  NSPAIR(_ZN7S9654C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9654C5[];
extern void _ZN7S9654C5D1Ev();
extern void _ZN7S9654C5D0Ev();
extern void _ZN7S9654C52v7Ev();
static  VTBL_ENTRY vtc_S9654C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9654C5[0]),
  (VTBL_ENTRY)&_ZN7S9654C5D1Ev,
  (VTBL_ENTRY)&_ZN7S9654C5D0Ev,
  (VTBL_ENTRY)&_ZN7S9654C52v7Ev,
};
extern VTBL_ENTRY _ZTI7S9654C5[];
extern  VTBL_ENTRY _ZTV7S9654C5[];
Class_Descriptor cd_S9654C5 = {  "S9654C5", // class name
  0,0,//no base classes
  &(vtc_S9654C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9654C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9654C5),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9654C1  : S9654C2 , S9654C5 {
  void *s9654c1f0;
  int s9654c1f1;
  void *s9654c1f2[2];
  virtual  ~S9654C1(); // _ZN7S9654C1D1Ev
  virtual void  v1(); // _ZN7S9654C12v1Ev
  virtual void  v2(); // _ZN7S9654C12v2Ev
  virtual void  v3(); // _ZN7S9654C12v3Ev
  S9654C1(); // tgen
};
//SIG(1 S9654C1) C1{ BC2{ vd v4 v5 v6 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} BC5{ vd v7} vd v1 v2 v3 Fp Fi Fp[2]}


 S9654C1 ::~S9654C1(){ note_dtor("S9654C1", this);}
void  S9654C1 ::v1(){vfunc_called(this, "_ZN7S9654C12v1Ev");}
void  S9654C1 ::v2(){vfunc_called(this, "_ZN7S9654C12v2Ev");}
void  S9654C1 ::v3(){vfunc_called(this, "_ZN7S9654C12v3Ev");}
S9654C1 ::S9654C1(){ note_ctor("S9654C1", this);} // tgen

static void Test_S9654C1()
{
  extern Class_Descriptor cd_S9654C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S9654C1, buf);
    S9654C1 *dp, &lv = *(dp=new (buf) S9654C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S9654C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9654C1)");
    check_base_class_offset(lv, (S9654C2*), 0, "S9654C1");
    check_base_class_offset(lv, (S9654C5*), ABISELECT(40,28), "S9654C1");
    check_field_offset(lv, s9654c1f0, ABISELECT(48,32), "S9654C1.s9654c1f0");
    check_field_offset(lv, s9654c1f1, ABISELECT(56,36), "S9654C1.s9654c1f1");
    check_field_offset(lv, s9654c1f2, ABISELECT(64,40), "S9654C1.s9654c1f2");
    test_class_info(&lv, &cd_S9654C1);
    dp->~S9654C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9654C1(Test_S9654C1, "S9654C1", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S9654C1C1Ev();
extern void _ZN7S9654C1D1Ev();
Name_Map name_map_S9654C1[] = {
  NSPAIR(_ZN7S9654C1C1Ev),
  NSPAIR(_ZN7S9654C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9654C2;
extern VTBL_ENTRY _ZTI7S9654C2[];
extern  VTBL_ENTRY _ZTV7S9654C2[];
extern Class_Descriptor cd_S9654C5;
extern VTBL_ENTRY _ZTI7S9654C5[];
extern  VTBL_ENTRY _ZTV7S9654C5[];
static Base_Class bases_S9654C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9654C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9654C5,    ABISELECT(40,28), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9654C1[];
extern void _ZN7S9654C1D1Ev();
extern void _ZN7S9654C1D0Ev();
extern void _ZN7S9654C22v4Ev();
extern void _ZN7S9654C22v5Ev();
extern void _ZN7S9654C22v6Ev();
extern void _ZN7S9654C12v1Ev();
extern void _ZN7S9654C12v2Ev();
extern void _ZN7S9654C12v3Ev();
extern void ABISELECT(_ZThn40_N7S9654C1D1Ev,_ZThn28_N7S9654C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S9654C1D0Ev,_ZThn28_N7S9654C1D0Ev)();
extern void _ZN7S9654C52v7Ev();
static  VTBL_ENTRY vtc_S9654C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9654C1[0]),
  (VTBL_ENTRY)&_ZN7S9654C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9654C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9654C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9654C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9654C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9654C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9654C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9654C12v3Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S9654C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S9654C1D1Ev,_ZThn28_N7S9654C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S9654C1D0Ev,_ZThn28_N7S9654C1D0Ev),
  (VTBL_ENTRY)&_ZN7S9654C52v7Ev,
};
extern VTBL_ENTRY _ZTI7S9654C1[];
extern  VTBL_ENTRY _ZTV7S9654C1[];
Class_Descriptor cd_S9654C1 = {  "S9654C1", // class name
  bases_S9654C1, 2,
  &(vtc_S9654C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S9654C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S9654C1),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4507C3  {
  void *s4507c3f0;
  char s4507c3f1;
  int s4507c3f2[4];
  void *s4507c3f3;
  virtual  ~S4507C3(); // _ZN7S4507C3D1Ev
  virtual void  v2(); // _ZN7S4507C32v2Ev
  virtual void  v3(); // _ZN7S4507C32v3Ev
  virtual void  v4(); // _ZN7S4507C32v4Ev
  virtual void  v5(); // _ZN7S4507C32v5Ev
  S4507C3(); // tgen
};
//SIG(-1 S4507C3) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S4507C3 ::~S4507C3(){ note_dtor("S4507C3", this);}
void  S4507C3 ::v2(){vfunc_called(this, "_ZN7S4507C32v2Ev");}
void  S4507C3 ::v3(){vfunc_called(this, "_ZN7S4507C32v3Ev");}
void  S4507C3 ::v4(){vfunc_called(this, "_ZN7S4507C32v4Ev");}
void  S4507C3 ::v5(){vfunc_called(this, "_ZN7S4507C32v5Ev");}
S4507C3 ::S4507C3(){ note_ctor("S4507C3", this);} // tgen

static void Test_S4507C3()
{
  extern Class_Descriptor cd_S4507C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4507C3, buf);
    S4507C3 *dp, &lv = *(dp=new (buf) S4507C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4507C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4507C3)");
    check_field_offset(lv, s4507c3f0, ABISELECT(8,4), "S4507C3.s4507c3f0");
    check_field_offset(lv, s4507c3f1, ABISELECT(16,8), "S4507C3.s4507c3f1");
    check_field_offset(lv, s4507c3f2, ABISELECT(20,12), "S4507C3.s4507c3f2");
    check_field_offset(lv, s4507c3f3, ABISELECT(40,28), "S4507C3.s4507c3f3");
    test_class_info(&lv, &cd_S4507C3);
    dp->~S4507C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4507C3(Test_S4507C3, "S4507C3", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4507C3C1Ev();
extern void _ZN7S4507C3D1Ev();
Name_Map name_map_S4507C3[] = {
  NSPAIR(_ZN7S4507C3C1Ev),
  NSPAIR(_ZN7S4507C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4507C3[];
extern void _ZN7S4507C3D1Ev();
extern void _ZN7S4507C3D0Ev();
extern void _ZN7S4507C32v2Ev();
extern void _ZN7S4507C32v3Ev();
extern void _ZN7S4507C32v4Ev();
extern void _ZN7S4507C32v5Ev();
static  VTBL_ENTRY vtc_S4507C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4507C3[0]),
  (VTBL_ENTRY)&_ZN7S4507C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4507C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4507C3[];
extern  VTBL_ENTRY _ZTV7S4507C3[];
Class_Descriptor cd_S4507C3 = {  "S4507C3", // class name
  0,0,//no base classes
  &(vtc_S4507C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4507C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4507C3),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4507C2  : S4507C3 {
  int s4507c2f0[3];
  virtual  ~S4507C2(); // _ZN7S4507C2D1Ev
  virtual void  v6(); // _ZN7S4507C22v6Ev
  virtual void  v7(); // _ZN7S4507C22v7Ev
  virtual void  v8(); // _ZN7S4507C22v8Ev
  S4507C2(); // tgen
};
//SIG(-1 S4507C2) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S4507C2 ::~S4507C2(){ note_dtor("S4507C2", this);}
void  S4507C2 ::v6(){vfunc_called(this, "_ZN7S4507C22v6Ev");}
void  S4507C2 ::v7(){vfunc_called(this, "_ZN7S4507C22v7Ev");}
void  S4507C2 ::v8(){vfunc_called(this, "_ZN7S4507C22v8Ev");}
S4507C2 ::S4507C2(){ note_ctor("S4507C2", this);} // tgen

static void Test_S4507C2()
{
  extern Class_Descriptor cd_S4507C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S4507C2, buf);
    S4507C2 *dp, &lv = *(dp=new (buf) S4507C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S4507C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4507C2)");
    check_base_class_offset(lv, (S4507C3*), 0, "S4507C2");
    check_field_offset(lv, s4507c2f0, ABISELECT(48,32), "S4507C2.s4507c2f0");
    test_class_info(&lv, &cd_S4507C2);
    dp->~S4507C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4507C2(Test_S4507C2, "S4507C2", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S4507C2C1Ev();
extern void _ZN7S4507C2D1Ev();
Name_Map name_map_S4507C2[] = {
  NSPAIR(_ZN7S4507C2C1Ev),
  NSPAIR(_ZN7S4507C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4507C3;
extern VTBL_ENTRY _ZTI7S4507C3[];
extern  VTBL_ENTRY _ZTV7S4507C3[];
static Base_Class bases_S4507C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4507C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4507C2[];
extern void _ZN7S4507C2D1Ev();
extern void _ZN7S4507C2D0Ev();
extern void _ZN7S4507C32v2Ev();
extern void _ZN7S4507C32v3Ev();
extern void _ZN7S4507C32v4Ev();
extern void _ZN7S4507C32v5Ev();
extern void _ZN7S4507C22v6Ev();
extern void _ZN7S4507C22v7Ev();
extern void _ZN7S4507C22v8Ev();
static  VTBL_ENTRY vtc_S4507C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4507C2[0]),
  (VTBL_ENTRY)&_ZN7S4507C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4507C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4507C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4507C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4507C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4507C2[];
extern  VTBL_ENTRY _ZTV7S4507C2[];
Class_Descriptor cd_S4507C2 = {  "S4507C2", // class name
  bases_S4507C2, 1,
  &(vtc_S4507C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S4507C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4507C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4507C1  : S4507C2 {
  int s4507c1f0[55];
  char s4507c1f1[12];
  virtual  ~S4507C1(); // _ZN7S4507C1D1Ev
  virtual void  v1(); // _ZN7S4507C12v1Ev
  S4507C1(); // tgen
};
//SIG(1 S4507C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fp Fc Fi[4] Fp} vd v6 v7 v8 Fi[3]} vd v1 Fi[55] Fc[12]}


 S4507C1 ::~S4507C1(){ note_dtor("S4507C1", this);}
void  S4507C1 ::v1(){vfunc_called(this, "_ZN7S4507C12v1Ev");}
S4507C1 ::S4507C1(){ note_ctor("S4507C1", this);} // tgen

static void Test_S4507C1()
{
  extern Class_Descriptor cd_S4507C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(38,70)];
    init_test(&cd_S4507C1, buf);
    S4507C1 *dp, &lv = *(dp=new (buf) S4507C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(296,276), "sizeof(S4507C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4507C1)");
    check_base_class_offset(lv, (S4507C3*)(S4507C2*), 0, "S4507C1");
    check_base_class_offset(lv, (S4507C2*), 0, "S4507C1");
    check_field_offset(lv, s4507c1f0, ABISELECT(60,44), "S4507C1.s4507c1f0");
    check_field_offset(lv, s4507c1f1, ABISELECT(280,264), "S4507C1.s4507c1f1");
    test_class_info(&lv, &cd_S4507C1);
    dp->~S4507C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4507C1(Test_S4507C1, "S4507C1", ABISELECT(296,276));

#else // __cplusplus

extern void _ZN7S4507C1C1Ev();
extern void _ZN7S4507C1D1Ev();
Name_Map name_map_S4507C1[] = {
  NSPAIR(_ZN7S4507C1C1Ev),
  NSPAIR(_ZN7S4507C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4507C3;
extern VTBL_ENTRY _ZTI7S4507C3[];
extern  VTBL_ENTRY _ZTV7S4507C3[];
extern Class_Descriptor cd_S4507C2;
extern VTBL_ENTRY _ZTI7S4507C2[];
extern  VTBL_ENTRY _ZTV7S4507C2[];
static Base_Class bases_S4507C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4507C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4507C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4507C1[];
extern void _ZN7S4507C1D1Ev();
extern void _ZN7S4507C1D0Ev();
extern void _ZN7S4507C32v2Ev();
extern void _ZN7S4507C32v3Ev();
extern void _ZN7S4507C32v4Ev();
extern void _ZN7S4507C32v5Ev();
extern void _ZN7S4507C22v6Ev();
extern void _ZN7S4507C22v7Ev();
extern void _ZN7S4507C22v8Ev();
extern void _ZN7S4507C12v1Ev();
static  VTBL_ENTRY vtc_S4507C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4507C1[0]),
  (VTBL_ENTRY)&_ZN7S4507C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4507C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4507C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4507C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4507C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4507C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4507C1[];
extern  VTBL_ENTRY _ZTV7S4507C1[];
Class_Descriptor cd_S4507C1 = {  "S4507C1", // class name
  bases_S4507C1, 2,
  &(vtc_S4507C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,276), // object size
  NSPAIRA(_ZTI7S4507C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4507C1),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4506C3  {
  void *s4506c3f0;
  char s4506c3f1;
  int s4506c3f2[4];
  void *s4506c3f3;
  virtual  ~S4506C3(); // _ZN7S4506C3D1Ev
  virtual void  v2(); // _ZN7S4506C32v2Ev
  virtual void  v3(); // _ZN7S4506C32v3Ev
  virtual void  v4(); // _ZN7S4506C32v4Ev
  virtual void  v5(); // _ZN7S4506C32v5Ev
  S4506C3(); // tgen
};
//SIG(-1 S4506C3) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S4506C3 ::~S4506C3(){ note_dtor("S4506C3", this);}
void  S4506C3 ::v2(){vfunc_called(this, "_ZN7S4506C32v2Ev");}
void  S4506C3 ::v3(){vfunc_called(this, "_ZN7S4506C32v3Ev");}
void  S4506C3 ::v4(){vfunc_called(this, "_ZN7S4506C32v4Ev");}
void  S4506C3 ::v5(){vfunc_called(this, "_ZN7S4506C32v5Ev");}
S4506C3 ::S4506C3(){ note_ctor("S4506C3", this);} // tgen

static void Test_S4506C3()
{
  extern Class_Descriptor cd_S4506C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4506C3, buf);
    S4506C3 *dp, &lv = *(dp=new (buf) S4506C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4506C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4506C3)");
    check_field_offset(lv, s4506c3f0, ABISELECT(8,4), "S4506C3.s4506c3f0");
    check_field_offset(lv, s4506c3f1, ABISELECT(16,8), "S4506C3.s4506c3f1");
    check_field_offset(lv, s4506c3f2, ABISELECT(20,12), "S4506C3.s4506c3f2");
    check_field_offset(lv, s4506c3f3, ABISELECT(40,28), "S4506C3.s4506c3f3");
    test_class_info(&lv, &cd_S4506C3);
    dp->~S4506C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4506C3(Test_S4506C3, "S4506C3", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4506C3C1Ev();
extern void _ZN7S4506C3D1Ev();
Name_Map name_map_S4506C3[] = {
  NSPAIR(_ZN7S4506C3C1Ev),
  NSPAIR(_ZN7S4506C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4506C3[];
extern void _ZN7S4506C3D1Ev();
extern void _ZN7S4506C3D0Ev();
extern void _ZN7S4506C32v2Ev();
extern void _ZN7S4506C32v3Ev();
extern void _ZN7S4506C32v4Ev();
extern void _ZN7S4506C32v5Ev();
static  VTBL_ENTRY vtc_S4506C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4506C3[0]),
  (VTBL_ENTRY)&_ZN7S4506C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4506C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4506C3[];
extern  VTBL_ENTRY _ZTV7S4506C3[];
Class_Descriptor cd_S4506C3 = {  "S4506C3", // class name
  0,0,//no base classes
  &(vtc_S4506C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4506C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4506C3),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4506C2  : S4506C3 {
  int s4506c2f0[3];
  virtual  ~S4506C2(); // _ZN7S4506C2D1Ev
  virtual void  v6(); // _ZN7S4506C22v6Ev
  virtual void  v7(); // _ZN7S4506C22v7Ev
  virtual void  v8(); // _ZN7S4506C22v8Ev
  S4506C2(); // tgen
};
//SIG(-1 S4506C2) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S4506C2 ::~S4506C2(){ note_dtor("S4506C2", this);}
void  S4506C2 ::v6(){vfunc_called(this, "_ZN7S4506C22v6Ev");}
void  S4506C2 ::v7(){vfunc_called(this, "_ZN7S4506C22v7Ev");}
void  S4506C2 ::v8(){vfunc_called(this, "_ZN7S4506C22v8Ev");}
S4506C2 ::S4506C2(){ note_ctor("S4506C2", this);} // tgen

static void Test_S4506C2()
{
  extern Class_Descriptor cd_S4506C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S4506C2, buf);
    S4506C2 *dp, &lv = *(dp=new (buf) S4506C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S4506C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4506C2)");
    check_base_class_offset(lv, (S4506C3*), 0, "S4506C2");
    check_field_offset(lv, s4506c2f0, ABISELECT(48,32), "S4506C2.s4506c2f0");
    test_class_info(&lv, &cd_S4506C2);
    dp->~S4506C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4506C2(Test_S4506C2, "S4506C2", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S4506C2C1Ev();
extern void _ZN7S4506C2D1Ev();
Name_Map name_map_S4506C2[] = {
  NSPAIR(_ZN7S4506C2C1Ev),
  NSPAIR(_ZN7S4506C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4506C3;
extern VTBL_ENTRY _ZTI7S4506C3[];
extern  VTBL_ENTRY _ZTV7S4506C3[];
static Base_Class bases_S4506C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4506C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4506C2[];
extern void _ZN7S4506C2D1Ev();
extern void _ZN7S4506C2D0Ev();
extern void _ZN7S4506C32v2Ev();
extern void _ZN7S4506C32v3Ev();
extern void _ZN7S4506C32v4Ev();
extern void _ZN7S4506C32v5Ev();
extern void _ZN7S4506C22v6Ev();
extern void _ZN7S4506C22v7Ev();
extern void _ZN7S4506C22v8Ev();
static  VTBL_ENTRY vtc_S4506C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4506C2[0]),
  (VTBL_ENTRY)&_ZN7S4506C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4506C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4506C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4506C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4506C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4506C2[];
extern  VTBL_ENTRY _ZTV7S4506C2[];
Class_Descriptor cd_S4506C2 = {  "S4506C2", // class name
  bases_S4506C2, 1,
  &(vtc_S4506C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S4506C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4506C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4506C4_nt  {
  ::S381C11_nt s4506c4f0;
  void  mf4506c4(); // _ZN10S4506C4_nt8mf4506c4Ev
};
//SIG(-1 S4506C4_nt) C1{ m FC2{ m FL}}


void  S4506C4_nt ::mf4506c4(){}

//skip512 S4506C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4506C1  : S4506C2 {
  ::S4506C4_nt s4506c1f0;
  virtual void  v1(); // _ZN7S4506C12v1Ev
  ~S4506C1(); // tgen
  S4506C1(); // tgen
};
//SIG(1 S4506C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fp Fc Fi[4] Fp} vd v6 v7 v8 Fi[3]} v1 FC4{ m FC5{ m FL}}}


void  S4506C1 ::v1(){vfunc_called(this, "_ZN7S4506C12v1Ev");}
S4506C1 ::~S4506C1(){ note_dtor("S4506C1", this);} // tgen
S4506C1 ::S4506C1(){ note_ctor("S4506C1", this);} // tgen

static void Test_S4506C1()
{
  extern Class_Descriptor cd_S4506C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,14)];
    init_test(&cd_S4506C1, buf);
    S4506C1 *dp, &lv = *(dp=new (buf) S4506C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S4506C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4506C1)");
    check_base_class_offset(lv, (S4506C3*)(S4506C2*), 0, "S4506C1");
    check_base_class_offset(lv, (S4506C2*), 0, "S4506C1");
    check_field_offset(lv, s4506c1f0, ABISELECT(64,44), "S4506C1.s4506c1f0");
    test_class_info(&lv, &cd_S4506C1);
    dp->~S4506C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4506C1(Test_S4506C1, "S4506C1", ABISELECT(72,52));

#else // __cplusplus

extern void _ZN7S4506C1C1Ev();
extern void _ZN7S4506C1D1Ev();
Name_Map name_map_S4506C1[] = {
  NSPAIR(_ZN7S4506C1C1Ev),
  NSPAIR(_ZN7S4506C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4506C3;
extern VTBL_ENTRY _ZTI7S4506C3[];
extern  VTBL_ENTRY _ZTV7S4506C3[];
extern Class_Descriptor cd_S4506C2;
extern VTBL_ENTRY _ZTI7S4506C2[];
extern  VTBL_ENTRY _ZTV7S4506C2[];
static Base_Class bases_S4506C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4506C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4506C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4506C1[];
extern void _ZN7S4506C1D1Ev();
extern void _ZN7S4506C1D0Ev();
extern void _ZN7S4506C32v2Ev();
extern void _ZN7S4506C32v3Ev();
extern void _ZN7S4506C32v4Ev();
extern void _ZN7S4506C32v5Ev();
extern void _ZN7S4506C22v6Ev();
extern void _ZN7S4506C22v7Ev();
extern void _ZN7S4506C22v8Ev();
extern void _ZN7S4506C12v1Ev();
static  VTBL_ENTRY vtc_S4506C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4506C1[0]),
  (VTBL_ENTRY)&_ZN7S4506C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4506C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4506C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4506C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4506C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4506C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4506C1[];
extern  VTBL_ENTRY _ZTV7S4506C1[];
Class_Descriptor cd_S4506C1 = {  "S4506C1", // class name
  bases_S4506C1, 2,
  &(vtc_S4506C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,52), // object size
  NSPAIRA(_ZTI7S4506C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4506C1),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18834C1  {
  virtual  ~S18834C1(); // _ZN8S18834C1D1Ev
  virtual void  v1(); // _ZN8S18834C12v1Ev
  virtual void  v2(); // _ZN8S18834C12v2Ev
  virtual void  v3(); // _ZN8S18834C12v3Ev
  virtual void  v4(); // _ZN8S18834C12v4Ev
  virtual void  v5(); // _ZN8S18834C12v5Ev
  virtual void  v6(); // _ZN8S18834C12v6Ev
  virtual void  v7(); // _ZN8S18834C12v7Ev
  virtual void  v8(); // _ZN8S18834C12v8Ev
  virtual void  v9(); // _ZN8S18834C12v9Ev
  virtual void  v10(); // _ZN8S18834C13v10Ev
  virtual void  v11(); // _ZN8S18834C13v11Ev
  virtual void  v12(); // _ZN8S18834C13v12Ev
  virtual void  v13(); // _ZN8S18834C13v13Ev
  virtual void  v14(); // _ZN8S18834C13v14Ev
  virtual void  v15(); // _ZN8S18834C13v15Ev
  virtual void  v16(); // _ZN8S18834C13v16Ev
  virtual void  v17(); // _ZN8S18834C13v17Ev
  virtual void  v18(); // _ZN8S18834C13v18Ev
  virtual void  v19(); // _ZN8S18834C13v19Ev
  virtual void  v20(); // _ZN8S18834C13v20Ev
  S18834C1(); // tgen
};
//SIG(1 S18834C1) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20}


 S18834C1 ::~S18834C1(){ note_dtor("S18834C1", this);}
void  S18834C1 ::v1(){vfunc_called(this, "_ZN8S18834C12v1Ev");}
void  S18834C1 ::v2(){vfunc_called(this, "_ZN8S18834C12v2Ev");}
void  S18834C1 ::v3(){vfunc_called(this, "_ZN8S18834C12v3Ev");}
void  S18834C1 ::v4(){vfunc_called(this, "_ZN8S18834C12v4Ev");}
void  S18834C1 ::v5(){vfunc_called(this, "_ZN8S18834C12v5Ev");}
void  S18834C1 ::v6(){vfunc_called(this, "_ZN8S18834C12v6Ev");}
void  S18834C1 ::v7(){vfunc_called(this, "_ZN8S18834C12v7Ev");}
void  S18834C1 ::v8(){vfunc_called(this, "_ZN8S18834C12v8Ev");}
void  S18834C1 ::v9(){vfunc_called(this, "_ZN8S18834C12v9Ev");}
void  S18834C1 ::v10(){vfunc_called(this, "_ZN8S18834C13v10Ev");}
void  S18834C1 ::v11(){vfunc_called(this, "_ZN8S18834C13v11Ev");}
void  S18834C1 ::v12(){vfunc_called(this, "_ZN8S18834C13v12Ev");}
void  S18834C1 ::v13(){vfunc_called(this, "_ZN8S18834C13v13Ev");}
void  S18834C1 ::v14(){vfunc_called(this, "_ZN8S18834C13v14Ev");}
void  S18834C1 ::v15(){vfunc_called(this, "_ZN8S18834C13v15Ev");}
void  S18834C1 ::v16(){vfunc_called(this, "_ZN8S18834C13v16Ev");}
void  S18834C1 ::v17(){vfunc_called(this, "_ZN8S18834C13v17Ev");}
void  S18834C1 ::v18(){vfunc_called(this, "_ZN8S18834C13v18Ev");}
void  S18834C1 ::v19(){vfunc_called(this, "_ZN8S18834C13v19Ev");}
void  S18834C1 ::v20(){vfunc_called(this, "_ZN8S18834C13v20Ev");}
S18834C1 ::S18834C1(){ note_ctor("S18834C1", this);} // tgen

static void Test_S18834C1()
{
  extern Class_Descriptor cd_S18834C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S18834C1, buf);
    S18834C1 *dp, &lv = *(dp=new (buf) S18834C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S18834C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18834C1)");
    test_class_info(&lv, &cd_S18834C1);
    dp->~S18834C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18834C1(Test_S18834C1, "S18834C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S18834C1C1Ev();
extern void _ZN8S18834C1D1Ev();
Name_Map name_map_S18834C1[] = {
  NSPAIR(_ZN8S18834C1C1Ev),
  NSPAIR(_ZN8S18834C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18834C1[];
extern void _ZN8S18834C1D1Ev();
extern void _ZN8S18834C1D0Ev();
extern void _ZN8S18834C12v1Ev();
extern void _ZN8S18834C12v2Ev();
extern void _ZN8S18834C12v3Ev();
extern void _ZN8S18834C12v4Ev();
extern void _ZN8S18834C12v5Ev();
extern void _ZN8S18834C12v6Ev();
extern void _ZN8S18834C12v7Ev();
extern void _ZN8S18834C12v8Ev();
extern void _ZN8S18834C12v9Ev();
extern void _ZN8S18834C13v10Ev();
extern void _ZN8S18834C13v11Ev();
extern void _ZN8S18834C13v12Ev();
extern void _ZN8S18834C13v13Ev();
extern void _ZN8S18834C13v14Ev();
extern void _ZN8S18834C13v15Ev();
extern void _ZN8S18834C13v16Ev();
extern void _ZN8S18834C13v17Ev();
extern void _ZN8S18834C13v18Ev();
extern void _ZN8S18834C13v19Ev();
extern void _ZN8S18834C13v20Ev();
static  VTBL_ENTRY vtc_S18834C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18834C1[0]),
  (VTBL_ENTRY)&_ZN8S18834C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18834C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18834C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18834C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18834C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18834C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18834C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18834C12v6Ev,
  (VTBL_ENTRY)&_ZN8S18834C12v7Ev,
  (VTBL_ENTRY)&_ZN8S18834C12v8Ev,
  (VTBL_ENTRY)&_ZN8S18834C12v9Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v10Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v11Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v12Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v13Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v14Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v15Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v16Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v17Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v18Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v19Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v20Ev,
};
extern VTBL_ENTRY _ZTI8S18834C1[];
extern  VTBL_ENTRY _ZTV8S18834C1[];
Class_Descriptor cd_S18834C1 = {  "S18834C1", // class name
  0,0,//no base classes
  &(vtc_S18834C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S18834C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18834C1),24, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17264C1  {
  int s17264c1f0[5];
  ::S4228C19_nt s17264c1f1;
  ::S4228C19_nt s17264c1f2;
  char s17264c1f3[2];
  int s17264c1f4;
  ::S4228C19_nt s17264c1f5;
  int s17264c1f6[5];
  ::S4506C4_nt s17264c1f7;
  char s17264c1f8;
  int s17264c1f9;
  void  mf17264c1(); // _ZN8S17264C19mf17264c1Ev
};
//SIG(1 S17264C1) C1{ m Fi[5] FC2{ m Fp Fi FC3{ m}} FC2 Fc[2] Fi FC2 Fi[5] FC4{ m FC5{ m FL}} Fc Fi}


void  S17264C1 ::mf17264c1(){}

static void Test_S17264C1()
{
  {
    init_simple_test("S17264C1");
    S17264C1 lv;
    check2(sizeof(lv), ABISELECT(120,100), "sizeof(S17264C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17264C1)");
    check_field_offset(lv, s17264c1f0, 0, "S17264C1.s17264c1f0");
    check_field_offset(lv, s17264c1f1, ABISELECT(24,20), "S17264C1.s17264c1f1");
    check_field_offset(lv, s17264c1f2, ABISELECT(40,32), "S17264C1.s17264c1f2");
    check_field_offset(lv, s17264c1f3, ABISELECT(56,44), "S17264C1.s17264c1f3");
    check_field_offset(lv, s17264c1f4, ABISELECT(60,48), "S17264C1.s17264c1f4");
    check_field_offset(lv, s17264c1f5, ABISELECT(64,52), "S17264C1.s17264c1f5");
    check_field_offset(lv, s17264c1f6, ABISELECT(80,64), "S17264C1.s17264c1f6");
    check_field_offset(lv, s17264c1f7, ABISELECT(104,84), "S17264C1.s17264c1f7");
    check_field_offset(lv, s17264c1f8, ABISELECT(112,92), "S17264C1.s17264c1f8");
    check_field_offset(lv, s17264c1f9, ABISELECT(116,96), "S17264C1.s17264c1f9");
  }
}
static Arrange_To_Call_Me vS17264C1(Test_S17264C1, "S17264C1", ABISELECT(120,100));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19877C6  : virtual S20760C9 {
  ::S4228C27 s19877c6f0;
  virtual  ~S19877C6(); // _ZN8S19877C6D2Ev
  S19877C6(); // tgen
};
//SIG(-1 S19877C6) C1{ VBC2{ vd m FL} vd FC3{ m}}


 S19877C6 ::~S19877C6(){ note_dtor("S19877C6", this);}
S19877C6 ::S19877C6(){ note_ctor("S19877C6", this);} // tgen

static void Test_S19877C6()
{
  extern Class_Descriptor cd_S19877C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19877C6, buf);
    S19877C6 *dp, &lv = *(dp=new (buf) S19877C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19877C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19877C6)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(16,8), "S19877C6");
    check_field_offset(lv, s19877c6f0, ABISELECT(8,4), "S19877C6.s19877c6f0");
    test_class_info(&lv, &cd_S19877C6);
    dp->~S19877C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19877C6(Test_S19877C6, "S19877C6", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19877C6C1Ev();
extern void _ZN8S19877C6D2Ev();
Name_Map name_map_S19877C6[] = {
  NSPAIR(_ZN8S19877C6C1Ev),
  NSPAIR(_ZN8S19877C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S19877C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19877C6[];
extern void _ZN8S19877C6D1Ev();
extern void _ZN8S19877C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19877C6D1Ev,_ZTv0_n12_N8S19877C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19877C6D1Ev,_ZThn8_N8S19877C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19877C6D0Ev,_ZTv0_n12_N8S19877C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S19877C6D0Ev,_ZThn8_N8S19877C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19877C6[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19877C6[0]),
  (VTBL_ENTRY)&_ZN8S19877C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19877C6D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19877C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19877C6D1Ev,_ZTv0_n12_N8S19877C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19877C6D0Ev,_ZTv0_n12_N8S19877C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19877C6[];
static  VTT_ENTRY vtt_S19877C6[] = {
  {&(_ZTV8S19877C6[3]),  3,10},
  {&(_ZTV8S19877C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19877C6[];
extern  VTBL_ENTRY _ZTV8S19877C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19877C6[];
static VTBL_ENTRY alt_thunk_names327[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19877C6D0Ev,_ZTv0_n12_N8S19877C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19877C6D0Ev,_ZThn8_N8S19877C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19877C6D1Ev,_ZTv0_n12_N8S19877C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19877C6D1Ev,_ZThn8_N8S19877C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19877C6 = {  "S19877C6", // class name
  bases_S19877C6, 1,
  &(vtc_S19877C6[0]), // expected_vtbl_contents
  &(vtt_S19877C6[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19877C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19877C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19877C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names327,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19877C1  : virtual S4228C37 , virtual S19115C12 , S20760C13 , virtual S19877C6 {
  int s19877c1f0;
  virtual  ~S19877C1(); // _ZN8S19877C1D2Ev
  S19877C1(); // tgen
};
//SIG(1 S19877C1) C1{ VBC2{ m} VBC3{ m FC4{ vd m FL}[10]} BC5{ vd m Fi[6]} VBC6{ VBC4 vd FC7{ m}} vd Fi}


 S19877C1 ::~S19877C1(){ note_dtor("S19877C1", this);}
S19877C1 ::S19877C1(){ note_ctor("S19877C1", this);} // tgen

static void Test_S19877C1()
{
  extern Class_Descriptor cd_S19877C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,44)];
    init_test(&cd_S19877C1, buf);
    S19877C1 *dp, &lv = *(dp=new (buf) S19877C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,172), "sizeof(S19877C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19877C1)");
    check_base_class_offset(lv, (S4228C37*), 0, "S19877C1");
    check_base_class_offset(lv, (S19115C12*), ABISELECT(40,32), "S19877C1");
    check_base_class_offset(lv, (S20760C13*), 0, "S19877C1");
    check_base_class_offset(lv, (S20760C9*)(S19877C6*), ABISELECT(216,160), "S19877C1");
    check_base_class_offset(lv, (S19877C6*), ABISELECT(200,152), "S19877C1");
    check_field_offset(lv, s19877c1f0, ABISELECT(32,28), "S19877C1.s19877c1f0");
    test_class_info(&lv, &cd_S19877C1);
    dp->~S19877C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19877C1(Test_S19877C1, "S19877C1", ABISELECT(232,172));

#else // __cplusplus

extern void _ZN8S19877C1C1Ev();
extern void _ZN8S19877C1D2Ev();
Name_Map name_map_S19877C1[] = {
  NSPAIR(_ZN8S19877C1C1Ev),
  NSPAIR(_ZN8S19877C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19877C6;
extern VTBL_ENTRY _ZTI8S19877C6[];
extern  VTBL_ENTRY _ZTV8S19877C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19877C6[];
static Base_Class bases_S19877C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19115C12,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(216,160), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19877C6,    ABISELECT(200,152), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19877C1[];
extern void _ZN8S19877C1D1Ev();
extern void _ZN8S19877C1D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19877C1D1Ev,_ZTv0_n16_N8S19877C1D1Ev)();
extern void ABISELECT(_ZThn200_N8S19877C1D1Ev,_ZThn152_N8S19877C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19877C1D0Ev,_ZTv0_n16_N8S19877C1D0Ev)();
extern void ABISELECT(_ZThn200_N8S19877C1D0Ev,_ZThn152_N8S19877C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19877C1D1Ev,_ZTv0_n12_N8S19877C1D1Ev)();
extern void ABISELECT(_ZThn216_N8S19877C1D1Ev,_ZThn160_N8S19877C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19877C1D0Ev,_ZTv0_n12_N8S19877C1D0Ev)();
extern void ABISELECT(_ZThn216_N8S19877C1D0Ev,_ZThn160_N8S19877C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19877C1[] = {
  ABISELECT(216,160),
  ABISELECT(200,152),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19877C1[0]),
  (VTBL_ENTRY)&_ZN8S19877C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19877C1D0Ev,
  ABISELECT(-200,-152),
  ABISELECT(16,8),
  ABISELECT(-200,-152),
  (VTBL_ENTRY)&(_ZTI8S19877C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19877C1D1Ev,_ZTv0_n16_N8S19877C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19877C1D0Ev,_ZTv0_n16_N8S19877C1D0Ev),
  ABISELECT(-216,-160),
  ABISELECT(-216,-160),
  (VTBL_ENTRY)&(_ZTI8S19877C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19877C1D1Ev,_ZTv0_n12_N8S19877C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19877C1D0Ev,_ZTv0_n12_N8S19877C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19877C1[];
extern void _ZN8S19877C6D1Ev();
extern void _ZN8S19877C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19877C6__8S19877C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19877C6[0]),
  (VTBL_ENTRY)&_ZN8S19877C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19877C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19877C6D1Ev,_ZTv0_n12_N8S19877C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19877C6D1Ev,_ZThn8_N8S19877C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19877C6D0Ev,_ZTv0_n12_N8S19877C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S19877C6D0Ev,_ZThn8_N8S19877C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19877C6__8S19877C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19877C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19877C6D1Ev,_ZTv0_n12_N8S19877C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19877C6D0Ev,_ZTv0_n12_N8S19877C6D0Ev),
};
static  VTT_ENTRY vtt_S19877C1[] = {
  {&(_ZTV8S19877C1[6]),  6,19},
  {&(_ZTV8S19877C1[12]),  12,19},
  {&(_ZTV8S19877C1[17]),  17,19},
  {&(_tg__ZTV8S19877C6__8S19877C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19877C6__8S19877C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19877C1[];
extern  VTBL_ENTRY _ZTV8S19877C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19877C1[];
static VTBL_ENTRY alt_thunk_names328[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19877C6D0Ev,_ZTv0_n12_N8S19877C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19877C6D0Ev,_ZThn8_N8S19877C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19877C6D1Ev,_ZTv0_n12_N8S19877C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19877C6D1Ev,_ZThn8_N8S19877C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19877C1D0Ev,_ZTv0_n12_N8S19877C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19877C1D0Ev,_ZThn160_N8S19877C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19877C1D1Ev,_ZTv0_n12_N8S19877C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19877C1D1Ev,_ZThn160_N8S19877C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19877C1D0Ev,_ZTv0_n16_N8S19877C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S19877C1D0Ev,_ZThn152_N8S19877C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19877C1D1Ev,_ZTv0_n16_N8S19877C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S19877C1D1Ev,_ZThn152_N8S19877C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19877C1 = {  "S19877C1", // class name
  bases_S19877C1, 5,
  &(vtc_S19877C1[0]), // expected_vtbl_contents
  &(vtt_S19877C1[0]), // expected_vtt_contents
  ABISELECT(232,172), // object size
  NSPAIRA(_ZTI8S19877C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19877C1),19, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19877C1),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names328,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21765C3_nt  {
  void *s21765c3f0;
  int s21765c3f1;
};
//SIG(-1 S21765C3_nt) C1{ Fp Fi}



//skip512 S21765C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21765C4  {
  void *s21765c4f0;
  int s21765c4f1;
  char s21765c4f2[4];
};
//SIG(-1 S21765C4) C1{ Fp Fi Fc[4]}



static void Test_S21765C4()
{
  {
    init_simple_test("S21765C4");
    S21765C4 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S21765C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21765C4)");
    check_field_offset(lv, s21765c4f0, 0, "S21765C4.s21765c4f0");
    check_field_offset(lv, s21765c4f1, ABISELECT(8,4), "S21765C4.s21765c4f1");
    check_field_offset(lv, s21765c4f2, ABISELECT(12,8), "S21765C4.s21765c4f2");
  }
}
static Arrange_To_Call_Me vS21765C4(Test_S21765C4, "S21765C4", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21765C2  {
  int s21765c2f0[3];
  ::S21765C3_nt s21765c2f1;
  ::S21765C3_nt s21765c2f2;
  ::S21765C4 s21765c2f3;
  ::S21765C4 s21765c2f4;
};
//SIG(-1 S21765C2) C1{ Fi[3] FC2{ Fp Fi} FC2 FC3{ Fp Fi Fc[4]} FC3}



static void Test_S21765C2()
{
  {
    init_simple_test("S21765C2");
    S21765C2 lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S21765C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21765C2)");
    check_field_offset(lv, s21765c2f0, 0, "S21765C2.s21765c2f0");
    check_field_offset(lv, s21765c2f1, ABISELECT(16,12), "S21765C2.s21765c2f1");
    check_field_offset(lv, s21765c2f2, ABISELECT(32,20), "S21765C2.s21765c2f2");
    check_field_offset(lv, s21765c2f3, ABISELECT(48,28), "S21765C2.s21765c2f3");
    check_field_offset(lv, s21765c2f4, ABISELECT(64,40), "S21765C2.s21765c2f4");
  }
}
static Arrange_To_Call_Me vS21765C2(Test_S21765C2, "S21765C2", ABISELECT(80,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21765C1  {
  void *s21765c1f0;
  int s21765c1f1[8];
  void *s21765c1f2;
  ::S21765C2 s21765c1f3;
  char s21765c1f4;
  int s21765c1f5[2];
  void  mf21765c1(); // _ZN8S21765C19mf21765c1Ev
  virtual  ~S21765C1(); // _ZN8S21765C1D1Ev
  S21765C1(); // tgen
};
//SIG(1 S21765C1) C1{ vd m Fp Fi[8] Fp FC2{ Fi[3] FC3{ Fp Fi} FC3 FC4{ Fp Fi Fc[4]} FC4} Fc Fi[2]}


void  S21765C1 ::mf21765c1(){}
 S21765C1 ::~S21765C1(){ note_dtor("S21765C1", this);}
S21765C1 ::S21765C1(){ note_ctor("S21765C1", this);} // tgen

static void Test_S21765C1()
{
  extern Class_Descriptor cd_S21765C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,28)];
    init_test(&cd_S21765C1, buf);
    S21765C1 *dp, &lv = *(dp=new (buf) S21765C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,108), "sizeof(S21765C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21765C1)");
    check_field_offset(lv, s21765c1f0, ABISELECT(8,4), "S21765C1.s21765c1f0");
    check_field_offset(lv, s21765c1f1, ABISELECT(16,8), "S21765C1.s21765c1f1");
    check_field_offset(lv, s21765c1f2, ABISELECT(48,40), "S21765C1.s21765c1f2");
    check_field_offset(lv, s21765c1f3, ABISELECT(56,44), "S21765C1.s21765c1f3");
    check_field_offset(lv, s21765c1f4, ABISELECT(136,96), "S21765C1.s21765c1f4");
    check_field_offset(lv, s21765c1f5, ABISELECT(140,100), "S21765C1.s21765c1f5");
    test_class_info(&lv, &cd_S21765C1);
    dp->~S21765C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21765C1(Test_S21765C1, "S21765C1", ABISELECT(152,108));

#else // __cplusplus

extern void _ZN8S21765C1C1Ev();
extern void _ZN8S21765C1D1Ev();
Name_Map name_map_S21765C1[] = {
  NSPAIR(_ZN8S21765C1C1Ev),
  NSPAIR(_ZN8S21765C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21765C1[];
extern void _ZN8S21765C1D1Ev();
extern void _ZN8S21765C1D0Ev();
static  VTBL_ENTRY vtc_S21765C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21765C1[0]),
  (VTBL_ENTRY)&_ZN8S21765C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21765C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21765C1[];
extern  VTBL_ENTRY _ZTV8S21765C1[];
Class_Descriptor cd_S21765C1 = {  "S21765C1", // class name
  0,0,//no base classes
  &(vtc_S21765C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,108), // object size
  NSPAIRA(_ZTI8S21765C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21765C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9325C2  {
  ::S4228C19_nt s9325c2f0;
  int s9325c2f1[2];
  char s9325c2f2;
  virtual  ~S9325C2(); // _ZN7S9325C2D1Ev
  virtual void  v3(); // _ZN7S9325C22v3Ev
  virtual void  v4(); // _ZN7S9325C22v4Ev
  virtual void  v5(); // _ZN7S9325C22v5Ev
  S9325C2(); // tgen
};
//SIG(-1 S9325C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9325C2 ::~S9325C2(){ note_dtor("S9325C2", this);}
void  S9325C2 ::v3(){vfunc_called(this, "_ZN7S9325C22v3Ev");}
void  S9325C2 ::v4(){vfunc_called(this, "_ZN7S9325C22v4Ev");}
void  S9325C2 ::v5(){vfunc_called(this, "_ZN7S9325C22v5Ev");}
S9325C2 ::S9325C2(){ note_ctor("S9325C2", this);} // tgen

static void Test_S9325C2()
{
  extern Class_Descriptor cd_S9325C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9325C2, buf);
    S9325C2 *dp, &lv = *(dp=new (buf) S9325C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9325C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9325C2)");
    check_field_offset(lv, s9325c2f0, ABISELECT(8,4), "S9325C2.s9325c2f0");
    check_field_offset(lv, s9325c2f1, ABISELECT(24,16), "S9325C2.s9325c2f1");
    check_field_offset(lv, s9325c2f2, ABISELECT(32,24), "S9325C2.s9325c2f2");
    test_class_info(&lv, &cd_S9325C2);
    dp->~S9325C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9325C2(Test_S9325C2, "S9325C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9325C2C1Ev();
extern void _ZN7S9325C2D1Ev();
Name_Map name_map_S9325C2[] = {
  NSPAIR(_ZN7S9325C2C1Ev),
  NSPAIR(_ZN7S9325C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9325C2[];
extern void _ZN7S9325C2D1Ev();
extern void _ZN7S9325C2D0Ev();
extern void _ZN7S9325C22v3Ev();
extern void _ZN7S9325C22v4Ev();
extern void _ZN7S9325C22v5Ev();
static  VTBL_ENTRY vtc_S9325C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9325C2[0]),
  (VTBL_ENTRY)&_ZN7S9325C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9325C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9325C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9325C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9325C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9325C2[];
extern  VTBL_ENTRY _ZTV7S9325C2[];
Class_Descriptor cd_S9325C2 = {  "S9325C2", // class name
  0,0,//no base classes
  &(vtc_S9325C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9325C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9325C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9325C1  : S9325C2 {
  int s9325c1f0;
  void *s9325c1f1;
  ::S4228C19_nt s9325c1f2;
  void *s9325c1f3[2];
  virtual  ~S9325C1(); // _ZN7S9325C1D1Ev
  virtual void  v1(); // _ZN7S9325C12v1Ev
  virtual void  v2(); // _ZN7S9325C12v2Ev
  S9325C1(); // tgen
};
//SIG(1 S9325C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fi Fp FC3 Fp[2]}


 S9325C1 ::~S9325C1(){ note_dtor("S9325C1", this);}
void  S9325C1 ::v1(){vfunc_called(this, "_ZN7S9325C12v1Ev");}
void  S9325C1 ::v2(){vfunc_called(this, "_ZN7S9325C12v2Ev");}
S9325C1 ::S9325C1(){ note_ctor("S9325C1", this);} // tgen

static void Test_S9325C1()
{
  extern Class_Descriptor cd_S9325C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,15)];
    init_test(&cd_S9325C1, buf);
    S9325C1 *dp, &lv = *(dp=new (buf) S9325C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,56), "sizeof(S9325C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9325C1)");
    check_base_class_offset(lv, (S9325C2*), 0, "S9325C1");
    check_field_offset(lv, s9325c1f0, ABISELECT(36,28), "S9325C1.s9325c1f0");
    check_field_offset(lv, s9325c1f1, ABISELECT(40,32), "S9325C1.s9325c1f1");
    check_field_offset(lv, s9325c1f2, ABISELECT(48,36), "S9325C1.s9325c1f2");
    check_field_offset(lv, s9325c1f3, ABISELECT(64,48), "S9325C1.s9325c1f3");
    test_class_info(&lv, &cd_S9325C1);
    dp->~S9325C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9325C1(Test_S9325C1, "S9325C1", ABISELECT(80,56));

#else // __cplusplus

extern void _ZN7S9325C1C1Ev();
extern void _ZN7S9325C1D1Ev();
Name_Map name_map_S9325C1[] = {
  NSPAIR(_ZN7S9325C1C1Ev),
  NSPAIR(_ZN7S9325C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9325C2;
extern VTBL_ENTRY _ZTI7S9325C2[];
extern  VTBL_ENTRY _ZTV7S9325C2[];
static Base_Class bases_S9325C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9325C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9325C1[];
extern void _ZN7S9325C1D1Ev();
extern void _ZN7S9325C1D0Ev();
extern void _ZN7S9325C22v3Ev();
extern void _ZN7S9325C22v4Ev();
extern void _ZN7S9325C22v5Ev();
extern void _ZN7S9325C12v1Ev();
extern void _ZN7S9325C12v2Ev();
static  VTBL_ENTRY vtc_S9325C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9325C1[0]),
  (VTBL_ENTRY)&_ZN7S9325C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9325C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9325C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9325C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9325C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9325C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9325C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9325C1[];
extern  VTBL_ENTRY _ZTV7S9325C1[];
Class_Descriptor cd_S9325C1 = {  "S9325C1", // class name
  bases_S9325C1, 1,
  &(vtc_S9325C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,56), // object size
  NSPAIRA(_ZTI7S9325C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9325C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18256C3  {
  ::S4228C19_nt s18256c3f0;
  __tsi64 s18256c3f1;
  ::S4228C19_nt s18256c3f2;
  ::S4228C19_nt s18256c3f3;
  int s18256c3f4;
  void *s18256c3f5;
  ::S4228C19_nt s18256c3f6;
};
//SIG(-1 S18256C3) C1{ FC2{ m Fp Fi FC3{ m}} FL FC2 FC2 Fi Fp FC2}



static void Test_S18256C3()
{
  {
    init_simple_test("S18256C3");
    S18256C3 lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S18256C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18256C3)");
    check_field_offset(lv, s18256c3f0, 0, "S18256C3.s18256c3f0");
    check_field_offset(lv, s18256c3f1, ABISELECT(16,12), "S18256C3.s18256c3f1");
    check_field_offset(lv, s18256c3f2, ABISELECT(24,20), "S18256C3.s18256c3f2");
    check_field_offset(lv, s18256c3f3, ABISELECT(40,32), "S18256C3.s18256c3f3");
    check_field_offset(lv, s18256c3f4, ABISELECT(56,44), "S18256C3.s18256c3f4");
    check_field_offset(lv, s18256c3f5, ABISELECT(64,48), "S18256C3.s18256c3f5");
    check_field_offset(lv, s18256c3f6, ABISELECT(72,52), "S18256C3.s18256c3f6");
  }
}
static Arrange_To_Call_Me vS18256C3(Test_S18256C3, "S18256C3", ABISELECT(88,64));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18256C2  {
  __tsi64 s18256c2f0;
  ::S18256C3 s18256c2f1;
  void  mf18256c2(); // _ZN8S18256C29mf18256c2Ev
};
//SIG(-1 S18256C2) C1{ m FL FC2{ FC3{ m Fp Fi FC4{ m}} FL FC3 FC3 Fi Fp FC3}}


void  S18256C2 ::mf18256c2(){}

static void Test_S18256C2()
{
  {
    init_simple_test("S18256C2");
    S18256C2 lv;
    check2(sizeof(lv), ABISELECT(96,72), "sizeof(S18256C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18256C2)");
    check_field_offset(lv, s18256c2f0, 0, "S18256C2.s18256c2f0");
    check_field_offset(lv, s18256c2f1, 8, "S18256C2.s18256c2f1");
  }
}
static Arrange_To_Call_Me vS18256C2(Test_S18256C2, "S18256C2", ABISELECT(96,72));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18256C1  {
  void *s18256c1f0[3];
  ::S18256C2 s18256c1f1;
  char s18256c1f2[2];
  void  mf18256c1(); // _ZN8S18256C19mf18256c1Ev
};
//SIG(1 S18256C1) C1{ m Fp[3] FC2{ m FL FC3{ FC4{ m Fp Fi FC5{ m}} FL FC4 FC4 Fi Fp FC4}} Fc[2]}


void  S18256C1 ::mf18256c1(){}

static void Test_S18256C1()
{
  {
    init_simple_test("S18256C1");
    S18256C1 lv;
    check2(sizeof(lv), ABISELECT(128,88), "sizeof(S18256C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18256C1)");
    check_field_offset(lv, s18256c1f0, 0, "S18256C1.s18256c1f0");
    check_field_offset(lv, s18256c1f1, ABISELECT(24,12), "S18256C1.s18256c1f1");
    check_field_offset(lv, s18256c1f2, ABISELECT(120,84), "S18256C1.s18256c1f2");
  }
}
static Arrange_To_Call_Me vS18256C1(Test_S18256C1, "S18256C1", ABISELECT(128,88));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21766C1  {
  void *s21766c1f0;
  int s21766c1f1[8];
  void *s21766c1f2;
  ::S21765C2 s21766c1f3;
  char s21766c1f4;
  int s21766c1f5;
  void  mf21766c1(); // _ZN8S21766C19mf21766c1Ev
  virtual  ~S21766C1(); // _ZN8S21766C1D1Ev
  S21766C1(); // tgen
};
//SIG(1 S21766C1) C1{ vd m Fp Fi[8] Fp FC2{ Fi[3] FC3{ Fp Fi} FC3 FC4{ Fp Fi Fc[4]} FC4} Fc Fi}


void  S21766C1 ::mf21766c1(){}
 S21766C1 ::~S21766C1(){ note_dtor("S21766C1", this);}
S21766C1 ::S21766C1(){ note_ctor("S21766C1", this);} // tgen

static void Test_S21766C1()
{
  extern Class_Descriptor cd_S21766C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,27)];
    init_test(&cd_S21766C1, buf);
    S21766C1 *dp, &lv = *(dp=new (buf) S21766C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,104), "sizeof(S21766C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21766C1)");
    check_field_offset(lv, s21766c1f0, ABISELECT(8,4), "S21766C1.s21766c1f0");
    check_field_offset(lv, s21766c1f1, ABISELECT(16,8), "S21766C1.s21766c1f1");
    check_field_offset(lv, s21766c1f2, ABISELECT(48,40), "S21766C1.s21766c1f2");
    check_field_offset(lv, s21766c1f3, ABISELECT(56,44), "S21766C1.s21766c1f3");
    check_field_offset(lv, s21766c1f4, ABISELECT(136,96), "S21766C1.s21766c1f4");
    check_field_offset(lv, s21766c1f5, ABISELECT(140,100), "S21766C1.s21766c1f5");
    test_class_info(&lv, &cd_S21766C1);
    dp->~S21766C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21766C1(Test_S21766C1, "S21766C1", ABISELECT(144,104));

#else // __cplusplus

extern void _ZN8S21766C1C1Ev();
extern void _ZN8S21766C1D1Ev();
Name_Map name_map_S21766C1[] = {
  NSPAIR(_ZN8S21766C1C1Ev),
  NSPAIR(_ZN8S21766C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21766C1[];
extern void _ZN8S21766C1D1Ev();
extern void _ZN8S21766C1D0Ev();
static  VTBL_ENTRY vtc_S21766C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21766C1[0]),
  (VTBL_ENTRY)&_ZN8S21766C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21766C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21766C1[];
extern  VTBL_ENTRY _ZTV8S21766C1[];
Class_Descriptor cd_S21766C1 = {  "S21766C1", // class name
  0,0,//no base classes
  &(vtc_S21766C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,104), // object size
  NSPAIRA(_ZTI8S21766C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21766C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12394C1  {
  int s12394c1f0;
  ::S10007C30_nt s12394c1f1;
  ::S12397C4_nt s12394c1f2;
  int s12394c1f3[2];
  char s12394c1f4[4];
  long s12394c1f5;
  int s12394c1f6[2];
  void *s12394c1f7;
  char s12394c1f8[4];
};
//SIG(1 S12394C1) C1{ Fi FC2{ FC3{ Fc[20]} Fc[16]} FC4{ Fc[12]} Fi[2] Fc[4] Fl Fi[2] Fp Fc[4]}



static void Test_S12394C1()
{
  {
    init_simple_test("S12394C1");
    S12394C1 lv;
    check2(sizeof(lv), ABISELECT(96,84), "sizeof(S12394C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12394C1)");
    check_field_offset(lv, s12394c1f0, 0, "S12394C1.s12394c1f0");
    check_field_offset(lv, s12394c1f1, 4, "S12394C1.s12394c1f1");
    check_field_offset(lv, s12394c1f2, 40, "S12394C1.s12394c1f2");
    check_field_offset(lv, s12394c1f3, 52, "S12394C1.s12394c1f3");
    check_field_offset(lv, s12394c1f4, 60, "S12394C1.s12394c1f4");
    check_field_offset(lv, s12394c1f5, 64, "S12394C1.s12394c1f5");
    check_field_offset(lv, s12394c1f6, ABISELECT(72,68), "S12394C1.s12394c1f6");
    check_field_offset(lv, s12394c1f7, ABISELECT(80,76), "S12394C1.s12394c1f7");
    check_field_offset(lv, s12394c1f8, ABISELECT(88,80), "S12394C1.s12394c1f8");
  }
}
static Arrange_To_Call_Me vS12394C1(Test_S12394C1, "S12394C1", ABISELECT(96,84));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9261C2  {
  ::S4228C19_nt s9261c2f0;
  int s9261c2f1[2];
  char s9261c2f2;
  virtual  ~S9261C2(); // _ZN7S9261C2D1Ev
  virtual void  v3(); // _ZN7S9261C22v3Ev
  virtual void  v4(); // _ZN7S9261C22v4Ev
  virtual void  v5(); // _ZN7S9261C22v5Ev
  S9261C2(); // tgen
};
//SIG(-1 S9261C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9261C2 ::~S9261C2(){ note_dtor("S9261C2", this);}
void  S9261C2 ::v3(){vfunc_called(this, "_ZN7S9261C22v3Ev");}
void  S9261C2 ::v4(){vfunc_called(this, "_ZN7S9261C22v4Ev");}
void  S9261C2 ::v5(){vfunc_called(this, "_ZN7S9261C22v5Ev");}
S9261C2 ::S9261C2(){ note_ctor("S9261C2", this);} // tgen

static void Test_S9261C2()
{
  extern Class_Descriptor cd_S9261C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9261C2, buf);
    S9261C2 *dp, &lv = *(dp=new (buf) S9261C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9261C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9261C2)");
    check_field_offset(lv, s9261c2f0, ABISELECT(8,4), "S9261C2.s9261c2f0");
    check_field_offset(lv, s9261c2f1, ABISELECT(24,16), "S9261C2.s9261c2f1");
    check_field_offset(lv, s9261c2f2, ABISELECT(32,24), "S9261C2.s9261c2f2");
    test_class_info(&lv, &cd_S9261C2);
    dp->~S9261C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9261C2(Test_S9261C2, "S9261C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9261C2C1Ev();
extern void _ZN7S9261C2D1Ev();
Name_Map name_map_S9261C2[] = {
  NSPAIR(_ZN7S9261C2C1Ev),
  NSPAIR(_ZN7S9261C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9261C2[];
extern void _ZN7S9261C2D1Ev();
extern void _ZN7S9261C2D0Ev();
extern void _ZN7S9261C22v3Ev();
extern void _ZN7S9261C22v4Ev();
extern void _ZN7S9261C22v5Ev();
static  VTBL_ENTRY vtc_S9261C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9261C2[0]),
  (VTBL_ENTRY)&_ZN7S9261C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9261C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9261C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9261C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9261C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9261C2[];
extern  VTBL_ENTRY _ZTV7S9261C2[];
Class_Descriptor cd_S9261C2 = {  "S9261C2", // class name
  0,0,//no base classes
  &(vtc_S9261C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9261C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9261C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9261C1  : S9261C2 {
  char s9261c1f0[2];
  int s9261c1f1[3];
  virtual  ~S9261C1(); // _ZN7S9261C1D1Ev
  virtual void  v1(); // _ZN7S9261C12v1Ev
  virtual void  v2(); // _ZN7S9261C12v2Ev
  S9261C1(); // tgen
};
//SIG(1 S9261C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fc[2] Fi[3]}


 S9261C1 ::~S9261C1(){ note_dtor("S9261C1", this);}
void  S9261C1 ::v1(){vfunc_called(this, "_ZN7S9261C12v1Ev");}
void  S9261C1 ::v2(){vfunc_called(this, "_ZN7S9261C12v2Ev");}
S9261C1 ::S9261C1(){ note_ctor("S9261C1", this);} // tgen

static void Test_S9261C1()
{
  extern Class_Descriptor cd_S9261C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S9261C1, buf);
    S9261C1 *dp, &lv = *(dp=new (buf) S9261C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S9261C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9261C1)");
    check_base_class_offset(lv, (S9261C2*), 0, "S9261C1");
    check_field_offset(lv, s9261c1f0, ABISELECT(33,25), "S9261C1.s9261c1f0");
    check_field_offset(lv, s9261c1f1, ABISELECT(36,28), "S9261C1.s9261c1f1");
    test_class_info(&lv, &cd_S9261C1);
    dp->~S9261C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9261C1(Test_S9261C1, "S9261C1", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN7S9261C1C1Ev();
extern void _ZN7S9261C1D1Ev();
Name_Map name_map_S9261C1[] = {
  NSPAIR(_ZN7S9261C1C1Ev),
  NSPAIR(_ZN7S9261C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9261C2;
extern VTBL_ENTRY _ZTI7S9261C2[];
extern  VTBL_ENTRY _ZTV7S9261C2[];
static Base_Class bases_S9261C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9261C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9261C1[];
extern void _ZN7S9261C1D1Ev();
extern void _ZN7S9261C1D0Ev();
extern void _ZN7S9261C22v3Ev();
extern void _ZN7S9261C22v4Ev();
extern void _ZN7S9261C22v5Ev();
extern void _ZN7S9261C12v1Ev();
extern void _ZN7S9261C12v2Ev();
static  VTBL_ENTRY vtc_S9261C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9261C1[0]),
  (VTBL_ENTRY)&_ZN7S9261C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9261C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9261C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9261C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9261C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9261C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9261C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9261C1[];
extern  VTBL_ENTRY _ZTV7S9261C1[];
Class_Descriptor cd_S9261C1 = {  "S9261C1", // class name
  bases_S9261C1, 1,
  &(vtc_S9261C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI7S9261C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9261C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13507C3_nt  {
  void *s13507c3f0;
  int s13507c3f1;
  void *s13507c3f2;
  int s13507c3f3;
};
//SIG(-1 S13507C3_nt) C1{ Fp Fi Fp Fi}



//skip512 S13507C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13507C1  {
  int s13507c1f0[4];
  void *s13507c1f1[3];
  int s13507c1f2[3];
  void *s13507c1f3[98];
  int s13507c1f4[4];
  ::S10007C29_nt s13507c1f5;
  ::S13507C3_nt s13507c1f6;
  void *s13507c1f7;
  int s13507c1f8;
};
//SIG(1 S13507C1) C1{ Fi[4] Fp[3] Fi[3] Fp[98] Fi[4] FC2{ FL[4]} FC3{ Fp Fi Fp Fi} Fp Fi}



static void Test_S13507C1()
{
  {
    init_simple_test("S13507C1");
    S13507C1 lv;
    check2(sizeof(lv), ABISELECT(936,504), "sizeof(S13507C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13507C1)");
    check_field_offset(lv, s13507c1f0, 0, "S13507C1.s13507c1f0");
    check_field_offset(lv, s13507c1f1, 16, "S13507C1.s13507c1f1");
    check_field_offset(lv, s13507c1f2, ABISELECT(40,28), "S13507C1.s13507c1f2");
    check_field_offset(lv, s13507c1f3, ABISELECT(56,40), "S13507C1.s13507c1f3");
    check_field_offset(lv, s13507c1f4, ABISELECT(840,432), "S13507C1.s13507c1f4");
    check_field_offset(lv, s13507c1f5, ABISELECT(856,448), "S13507C1.s13507c1f5");
    check_field_offset(lv, s13507c1f6, ABISELECT(888,480), "S13507C1.s13507c1f6");
    check_field_offset(lv, s13507c1f7, ABISELECT(920,496), "S13507C1.s13507c1f7");
    check_field_offset(lv, s13507c1f8, ABISELECT(928,500), "S13507C1.s13507c1f8");
  }
}
static Arrange_To_Call_Me vS13507C1(Test_S13507C1, "S13507C1", ABISELECT(936,504));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9677C2  {
  ::S4228C19_nt s9677c2f0;
  int s9677c2f1[2];
  char s9677c2f2;
  virtual  ~S9677C2(); // _ZN7S9677C2D1Ev
  virtual void  v4(); // _ZN7S9677C22v4Ev
  virtual void  v5(); // _ZN7S9677C22v5Ev
  virtual void  v6(); // _ZN7S9677C22v6Ev
  S9677C2(); // tgen
};
//SIG(-1 S9677C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9677C2 ::~S9677C2(){ note_dtor("S9677C2", this);}
void  S9677C2 ::v4(){vfunc_called(this, "_ZN7S9677C22v4Ev");}
void  S9677C2 ::v5(){vfunc_called(this, "_ZN7S9677C22v5Ev");}
void  S9677C2 ::v6(){vfunc_called(this, "_ZN7S9677C22v6Ev");}
S9677C2 ::S9677C2(){ note_ctor("S9677C2", this);} // tgen

static void Test_S9677C2()
{
  extern Class_Descriptor cd_S9677C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9677C2, buf);
    S9677C2 *dp, &lv = *(dp=new (buf) S9677C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9677C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9677C2)");
    check_field_offset(lv, s9677c2f0, ABISELECT(8,4), "S9677C2.s9677c2f0");
    check_field_offset(lv, s9677c2f1, ABISELECT(24,16), "S9677C2.s9677c2f1");
    check_field_offset(lv, s9677c2f2, ABISELECT(32,24), "S9677C2.s9677c2f2");
    test_class_info(&lv, &cd_S9677C2);
    dp->~S9677C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9677C2(Test_S9677C2, "S9677C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9677C2C1Ev();
extern void _ZN7S9677C2D1Ev();
Name_Map name_map_S9677C2[] = {
  NSPAIR(_ZN7S9677C2C1Ev),
  NSPAIR(_ZN7S9677C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9677C2[];
extern void _ZN7S9677C2D1Ev();
extern void _ZN7S9677C2D0Ev();
extern void _ZN7S9677C22v4Ev();
extern void _ZN7S9677C22v5Ev();
extern void _ZN7S9677C22v6Ev();
static  VTBL_ENTRY vtc_S9677C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9677C2[0]),
  (VTBL_ENTRY)&_ZN7S9677C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9677C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9677C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9677C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9677C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S9677C2[];
extern  VTBL_ENTRY _ZTV7S9677C2[];
Class_Descriptor cd_S9677C2 = {  "S9677C2", // class name
  0,0,//no base classes
  &(vtc_S9677C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9677C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9677C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9677C1  : S9677C2 {
  int s9677c1f0;
  void *s9677c1f1;
  virtual  ~S9677C1(); // _ZN7S9677C1D1Ev
  virtual void  v1(); // _ZN7S9677C12v1Ev
  virtual void  v2(); // _ZN7S9677C12v2Ev
  virtual void  v3(); // _ZN7S9677C12v3Ev
  S9677C1(); // tgen
};
//SIG(1 S9677C1) C1{ BC2{ vd v4 v5 v6 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 Fi Fp}


 S9677C1 ::~S9677C1(){ note_dtor("S9677C1", this);}
void  S9677C1 ::v1(){vfunc_called(this, "_ZN7S9677C12v1Ev");}
void  S9677C1 ::v2(){vfunc_called(this, "_ZN7S9677C12v2Ev");}
void  S9677C1 ::v3(){vfunc_called(this, "_ZN7S9677C12v3Ev");}
S9677C1 ::S9677C1(){ note_ctor("S9677C1", this);} // tgen

static void Test_S9677C1()
{
  extern Class_Descriptor cd_S9677C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S9677C1, buf);
    S9677C1 *dp, &lv = *(dp=new (buf) S9677C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S9677C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9677C1)");
    check_base_class_offset(lv, (S9677C2*), 0, "S9677C1");
    check_field_offset(lv, s9677c1f0, ABISELECT(36,28), "S9677C1.s9677c1f0");
    check_field_offset(lv, s9677c1f1, ABISELECT(40,32), "S9677C1.s9677c1f1");
    test_class_info(&lv, &cd_S9677C1);
    dp->~S9677C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9677C1(Test_S9677C1, "S9677C1", ABISELECT(48,36));

#else // __cplusplus

extern void _ZN7S9677C1C1Ev();
extern void _ZN7S9677C1D1Ev();
Name_Map name_map_S9677C1[] = {
  NSPAIR(_ZN7S9677C1C1Ev),
  NSPAIR(_ZN7S9677C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9677C2;
extern VTBL_ENTRY _ZTI7S9677C2[];
extern  VTBL_ENTRY _ZTV7S9677C2[];
static Base_Class bases_S9677C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9677C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9677C1[];
extern void _ZN7S9677C1D1Ev();
extern void _ZN7S9677C1D0Ev();
extern void _ZN7S9677C22v4Ev();
extern void _ZN7S9677C22v5Ev();
extern void _ZN7S9677C22v6Ev();
extern void _ZN7S9677C12v1Ev();
extern void _ZN7S9677C12v2Ev();
extern void _ZN7S9677C12v3Ev();
static  VTBL_ENTRY vtc_S9677C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9677C1[0]),
  (VTBL_ENTRY)&_ZN7S9677C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9677C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9677C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9677C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9677C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9677C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9677C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9677C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9677C1[];
extern  VTBL_ENTRY _ZTV7S9677C1[];
Class_Descriptor cd_S9677C1 = {  "S9677C1", // class name
  bases_S9677C1, 1,
  &(vtc_S9677C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI7S9677C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9677C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7125C2  {
  virtual  ~S7125C2(); // _ZN7S7125C2D1Ev
  virtual void  v7(); // _ZN7S7125C22v7Ev
  virtual void  v8(); // _ZN7S7125C22v8Ev
  virtual void  v9(); // _ZN7S7125C22v9Ev
  virtual void  v10(); // _ZN7S7125C23v10Ev
  virtual void  v11(); // _ZN7S7125C23v11Ev
  virtual void  v12(); // _ZN7S7125C23v12Ev
  virtual void  v13(); // _ZN7S7125C23v13Ev
  S7125C2(); // tgen
};
//SIG(-1 S7125C2) C1{ vd v1 v2 v3 v4 v5 v6 v7}


 S7125C2 ::~S7125C2(){ note_dtor("S7125C2", this);}
void  S7125C2 ::v7(){vfunc_called(this, "_ZN7S7125C22v7Ev");}
void  S7125C2 ::v8(){vfunc_called(this, "_ZN7S7125C22v8Ev");}
void  S7125C2 ::v9(){vfunc_called(this, "_ZN7S7125C22v9Ev");}
void  S7125C2 ::v10(){vfunc_called(this, "_ZN7S7125C23v10Ev");}
void  S7125C2 ::v11(){vfunc_called(this, "_ZN7S7125C23v11Ev");}
void  S7125C2 ::v12(){vfunc_called(this, "_ZN7S7125C23v12Ev");}
void  S7125C2 ::v13(){vfunc_called(this, "_ZN7S7125C23v13Ev");}
S7125C2 ::S7125C2(){ note_ctor("S7125C2", this);} // tgen

static void Test_S7125C2()
{
  extern Class_Descriptor cd_S7125C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7125C2, buf);
    S7125C2 *dp, &lv = *(dp=new (buf) S7125C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7125C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7125C2)");
    test_class_info(&lv, &cd_S7125C2);
    dp->~S7125C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7125C2(Test_S7125C2, "S7125C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7125C2C1Ev();
extern void _ZN7S7125C2D1Ev();
Name_Map name_map_S7125C2[] = {
  NSPAIR(_ZN7S7125C2C1Ev),
  NSPAIR(_ZN7S7125C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7125C2[];
extern void _ZN7S7125C2D1Ev();
extern void _ZN7S7125C2D0Ev();
extern void _ZN7S7125C22v7Ev();
extern void _ZN7S7125C22v8Ev();
extern void _ZN7S7125C22v9Ev();
extern void _ZN7S7125C23v10Ev();
extern void _ZN7S7125C23v11Ev();
extern void _ZN7S7125C23v12Ev();
extern void _ZN7S7125C23v13Ev();
static  VTBL_ENTRY vtc_S7125C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7125C2[0]),
  (VTBL_ENTRY)&_ZN7S7125C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7125C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7125C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7125C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7125C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7125C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7125C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7125C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7125C23v13Ev,
};
extern VTBL_ENTRY _ZTI7S7125C2[];
extern  VTBL_ENTRY _ZTV7S7125C2[];
Class_Descriptor cd_S7125C2 = {  "S7125C2", // class name
  0,0,//no base classes
  &(vtc_S7125C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7125C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7125C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7125C1  : S7125C2 {
  void *s7125c1f0;
  int s7125c1f1[2];
  virtual  ~S7125C1(); // _ZN7S7125C1D1Ev
  virtual void  v1(); // _ZN7S7125C12v1Ev
  virtual void  v2(); // _ZN7S7125C12v2Ev
  virtual void  v3(); // _ZN7S7125C12v3Ev
  virtual void  v4(); // _ZN7S7125C12v4Ev
  virtual void  v5(); // _ZN7S7125C12v5Ev
  virtual void  v6(); // _ZN7S7125C12v6Ev
  S7125C1(); // tgen
};
//SIG(1 S7125C1) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 v13} vd v1 v2 v3 v4 v5 v6 Fp Fi[2]}


 S7125C1 ::~S7125C1(){ note_dtor("S7125C1", this);}
void  S7125C1 ::v1(){vfunc_called(this, "_ZN7S7125C12v1Ev");}
void  S7125C1 ::v2(){vfunc_called(this, "_ZN7S7125C12v2Ev");}
void  S7125C1 ::v3(){vfunc_called(this, "_ZN7S7125C12v3Ev");}
void  S7125C1 ::v4(){vfunc_called(this, "_ZN7S7125C12v4Ev");}
void  S7125C1 ::v5(){vfunc_called(this, "_ZN7S7125C12v5Ev");}
void  S7125C1 ::v6(){vfunc_called(this, "_ZN7S7125C12v6Ev");}
S7125C1 ::S7125C1(){ note_ctor("S7125C1", this);} // tgen

static void Test_S7125C1()
{
  extern Class_Descriptor cd_S7125C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7125C1, buf);
    S7125C1 *dp, &lv = *(dp=new (buf) S7125C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7125C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7125C1)");
    check_base_class_offset(lv, (S7125C2*), 0, "S7125C1");
    check_field_offset(lv, s7125c1f0, ABISELECT(8,4), "S7125C1.s7125c1f0");
    check_field_offset(lv, s7125c1f1, ABISELECT(16,8), "S7125C1.s7125c1f1");
    test_class_info(&lv, &cd_S7125C1);
    dp->~S7125C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7125C1(Test_S7125C1, "S7125C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7125C1C1Ev();
extern void _ZN7S7125C1D1Ev();
Name_Map name_map_S7125C1[] = {
  NSPAIR(_ZN7S7125C1C1Ev),
  NSPAIR(_ZN7S7125C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7125C2;
extern VTBL_ENTRY _ZTI7S7125C2[];
extern  VTBL_ENTRY _ZTV7S7125C2[];
static Base_Class bases_S7125C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7125C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7125C1[];
extern void _ZN7S7125C1D1Ev();
extern void _ZN7S7125C1D0Ev();
extern void _ZN7S7125C22v7Ev();
extern void _ZN7S7125C22v8Ev();
extern void _ZN7S7125C22v9Ev();
extern void _ZN7S7125C23v10Ev();
extern void _ZN7S7125C23v11Ev();
extern void _ZN7S7125C23v12Ev();
extern void _ZN7S7125C23v13Ev();
extern void _ZN7S7125C12v1Ev();
extern void _ZN7S7125C12v2Ev();
extern void _ZN7S7125C12v3Ev();
extern void _ZN7S7125C12v4Ev();
extern void _ZN7S7125C12v5Ev();
extern void _ZN7S7125C12v6Ev();
static  VTBL_ENTRY vtc_S7125C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7125C1[0]),
  (VTBL_ENTRY)&_ZN7S7125C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7125C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7125C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7125C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7125C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7125C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7125C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7125C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7125C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7125C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7125C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7125C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7125C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7125C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7125C12v6Ev,
};
extern VTBL_ENTRY _ZTI7S7125C1[];
extern  VTBL_ENTRY _ZTV7S7125C1[];
Class_Descriptor cd_S7125C1 = {  "S7125C1", // class name
  bases_S7125C1, 1,
  &(vtc_S7125C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7125C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7125C1),17, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9946C2  {
  virtual  ~S9946C2(); // _ZN7S9946C2D1Ev
  virtual void  v5(); // _ZN7S9946C22v5Ev
  virtual void  v6(); // _ZN7S9946C22v6Ev
  virtual void  v7(); // _ZN7S9946C22v7Ev
  virtual void  v8(); // _ZN7S9946C22v8Ev
  S9946C2(); // tgen
};
//SIG(-1 S9946C2) C1{ vd v1 v2 v3 v4}


 S9946C2 ::~S9946C2(){ note_dtor("S9946C2", this);}
void  S9946C2 ::v5(){vfunc_called(this, "_ZN7S9946C22v5Ev");}
void  S9946C2 ::v6(){vfunc_called(this, "_ZN7S9946C22v6Ev");}
void  S9946C2 ::v7(){vfunc_called(this, "_ZN7S9946C22v7Ev");}
void  S9946C2 ::v8(){vfunc_called(this, "_ZN7S9946C22v8Ev");}
S9946C2 ::S9946C2(){ note_ctor("S9946C2", this);} // tgen

static void Test_S9946C2()
{
  extern Class_Descriptor cd_S9946C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S9946C2, buf);
    S9946C2 *dp, &lv = *(dp=new (buf) S9946C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S9946C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9946C2)");
    test_class_info(&lv, &cd_S9946C2);
    dp->~S9946C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9946C2(Test_S9946C2, "S9946C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S9946C2C1Ev();
extern void _ZN7S9946C2D1Ev();
Name_Map name_map_S9946C2[] = {
  NSPAIR(_ZN7S9946C2C1Ev),
  NSPAIR(_ZN7S9946C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9946C2[];
extern void _ZN7S9946C2D1Ev();
extern void _ZN7S9946C2D0Ev();
extern void _ZN7S9946C22v5Ev();
extern void _ZN7S9946C22v6Ev();
extern void _ZN7S9946C22v7Ev();
extern void _ZN7S9946C22v8Ev();
static  VTBL_ENTRY vtc_S9946C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9946C2[0]),
  (VTBL_ENTRY)&_ZN7S9946C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9946C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9946C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9946C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9946C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9946C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S9946C2[];
extern  VTBL_ENTRY _ZTV7S9946C2[];
Class_Descriptor cd_S9946C2 = {  "S9946C2", // class name
  0,0,//no base classes
  &(vtc_S9946C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9946C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9946C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9946C3  {
  __tsi64 s9946c3f0[2];
  long s9946c3f1;
  void  mf9946c3(); // _ZN7S9946C38mf9946c3Ev
};
//SIG(-1 S9946C3) C1{ m FL[2] Fl}


void  S9946C3 ::mf9946c3(){}

static void Test_S9946C3()
{
  {
    init_simple_test("S9946C3");
    S9946C3 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S9946C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9946C3)");
    check_field_offset(lv, s9946c3f0, 0, "S9946C3.s9946c3f0");
    check_field_offset(lv, s9946c3f1, 16, "S9946C3.s9946c3f1");
  }
}
static Arrange_To_Call_Me vS9946C3(Test_S9946C3, "S9946C3", ABISELECT(24,20));

#else // __cplusplus

extern VTBL_ENTRY _ZTI7S9946C3[];
VTBL_ENTRY *P__ZTI7S9946C3 = _ZTI7S9946C3; 
Class_Descriptor cd_S9946C3 = {  "S9946C3", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI7S9946C3),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9946C1  : S9946C2 , S9946C3 {
  ::S4161C4_nt s9946c1f0;
  void *s9946c1f1;
  virtual  ~S9946C1(); // _ZN7S9946C1D1Ev
  virtual void  v1(); // _ZN7S9946C12v1Ev
  virtual void  v2(); // _ZN7S9946C12v2Ev
  virtual void  v3(); // _ZN7S9946C12v3Ev
  virtual void  v4(); // _ZN7S9946C12v4Ev
  S9946C1(); // tgen
};
//SIG(1 S9946C1) C1{ BC2{ vd v5 v6 v7 v8} BC3{ m FL[2] Fl} vd v1 v2 v3 v4 FC4{ m Fp} Fp}


 S9946C1 ::~S9946C1(){ note_dtor("S9946C1", this);}
void  S9946C1 ::v1(){vfunc_called(this, "_ZN7S9946C12v1Ev");}
void  S9946C1 ::v2(){vfunc_called(this, "_ZN7S9946C12v2Ev");}
void  S9946C1 ::v3(){vfunc_called(this, "_ZN7S9946C12v3Ev");}
void  S9946C1 ::v4(){vfunc_called(this, "_ZN7S9946C12v4Ev");}
S9946C1 ::S9946C1(){ note_ctor("S9946C1", this);} // tgen

static void Test_S9946C1()
{
  extern Class_Descriptor cd_S9946C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S9946C1, buf);
    S9946C1 *dp, &lv = *(dp=new (buf) S9946C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S9946C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9946C1)");
    check_base_class_offset(lv, (S9946C2*), 0, "S9946C1");
    check_base_class_offset(lv, (S9946C3*), ABISELECT(8,4), "S9946C1");
    check_field_offset(lv, s9946c1f0, ABISELECT(32,24), "S9946C1.s9946c1f0");
    check_field_offset(lv, s9946c1f1, ABISELECT(40,28), "S9946C1.s9946c1f1");
    test_class_info(&lv, &cd_S9946C1);
    dp->~S9946C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9946C1(Test_S9946C1, "S9946C1", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S9946C1C1Ev();
extern void _ZN7S9946C1D1Ev();
Name_Map name_map_S9946C1[] = {
  NSPAIR(_ZN7S9946C1C1Ev),
  NSPAIR(_ZN7S9946C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9946C2;
extern VTBL_ENTRY _ZTI7S9946C2[];
extern  VTBL_ENTRY _ZTV7S9946C2[];
extern Class_Descriptor cd_S9946C3;
extern VTBL_ENTRY _ZTI7S9946C3[];
static Base_Class bases_S9946C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9946C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9946C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9946C1[];
extern void _ZN7S9946C1D1Ev();
extern void _ZN7S9946C1D0Ev();
extern void _ZN7S9946C22v5Ev();
extern void _ZN7S9946C22v6Ev();
extern void _ZN7S9946C22v7Ev();
extern void _ZN7S9946C22v8Ev();
extern void _ZN7S9946C12v1Ev();
extern void _ZN7S9946C12v2Ev();
extern void _ZN7S9946C12v3Ev();
extern void _ZN7S9946C12v4Ev();
static  VTBL_ENTRY vtc_S9946C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9946C1[0]),
  (VTBL_ENTRY)&_ZN7S9946C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9946C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9946C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9946C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9946C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9946C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9946C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9946C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9946C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9946C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S9946C1[];
extern  VTBL_ENTRY _ZTV7S9946C1[];
Class_Descriptor cd_S9946C1 = {  "S9946C1", // class name
  bases_S9946C1, 2,
  &(vtc_S9946C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S9946C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S9946C1),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9404C2  {
  ::S4228C19_nt s9404c2f0;
  int s9404c2f1[2];
  char s9404c2f2;
  virtual  ~S9404C2(); // _ZN7S9404C2D1Ev
  virtual void  v3(); // _ZN7S9404C22v3Ev
  virtual void  v4(); // _ZN7S9404C22v4Ev
  virtual void  v5(); // _ZN7S9404C22v5Ev
  S9404C2(); // tgen
};
//SIG(-1 S9404C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9404C2 ::~S9404C2(){ note_dtor("S9404C2", this);}
void  S9404C2 ::v3(){vfunc_called(this, "_ZN7S9404C22v3Ev");}
void  S9404C2 ::v4(){vfunc_called(this, "_ZN7S9404C22v4Ev");}
void  S9404C2 ::v5(){vfunc_called(this, "_ZN7S9404C22v5Ev");}
S9404C2 ::S9404C2(){ note_ctor("S9404C2", this);} // tgen

static void Test_S9404C2()
{
  extern Class_Descriptor cd_S9404C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9404C2, buf);
    S9404C2 *dp, &lv = *(dp=new (buf) S9404C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9404C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9404C2)");
    check_field_offset(lv, s9404c2f0, ABISELECT(8,4), "S9404C2.s9404c2f0");
    check_field_offset(lv, s9404c2f1, ABISELECT(24,16), "S9404C2.s9404c2f1");
    check_field_offset(lv, s9404c2f2, ABISELECT(32,24), "S9404C2.s9404c2f2");
    test_class_info(&lv, &cd_S9404C2);
    dp->~S9404C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9404C2(Test_S9404C2, "S9404C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9404C2C1Ev();
extern void _ZN7S9404C2D1Ev();
Name_Map name_map_S9404C2[] = {
  NSPAIR(_ZN7S9404C2C1Ev),
  NSPAIR(_ZN7S9404C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9404C2[];
extern void _ZN7S9404C2D1Ev();
extern void _ZN7S9404C2D0Ev();
extern void _ZN7S9404C22v3Ev();
extern void _ZN7S9404C22v4Ev();
extern void _ZN7S9404C22v5Ev();
static  VTBL_ENTRY vtc_S9404C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9404C2[0]),
  (VTBL_ENTRY)&_ZN7S9404C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9404C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9404C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9404C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9404C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9404C2[];
extern  VTBL_ENTRY _ZTV7S9404C2[];
Class_Descriptor cd_S9404C2 = {  "S9404C2", // class name
  0,0,//no base classes
  &(vtc_S9404C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9404C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9404C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9404C1  : S9404C2 {
  void *s9404c1f0[2];
  virtual  ~S9404C1(); // _ZN7S9404C1D1Ev
  virtual void  v1(); // _ZN7S9404C12v1Ev
  virtual void  v2(); // _ZN7S9404C12v2Ev
  S9404C1(); // tgen
};
//SIG(1 S9404C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fp[2]}


 S9404C1 ::~S9404C1(){ note_dtor("S9404C1", this);}
void  S9404C1 ::v1(){vfunc_called(this, "_ZN7S9404C12v1Ev");}
void  S9404C1 ::v2(){vfunc_called(this, "_ZN7S9404C12v2Ev");}
S9404C1 ::S9404C1(){ note_ctor("S9404C1", this);} // tgen

static void Test_S9404C1()
{
  extern Class_Descriptor cd_S9404C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S9404C1, buf);
    S9404C1 *dp, &lv = *(dp=new (buf) S9404C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S9404C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9404C1)");
    check_base_class_offset(lv, (S9404C2*), 0, "S9404C1");
    check_field_offset(lv, s9404c1f0, ABISELECT(40,28), "S9404C1.s9404c1f0");
    test_class_info(&lv, &cd_S9404C1);
    dp->~S9404C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9404C1(Test_S9404C1, "S9404C1", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S9404C1C1Ev();
extern void _ZN7S9404C1D1Ev();
Name_Map name_map_S9404C1[] = {
  NSPAIR(_ZN7S9404C1C1Ev),
  NSPAIR(_ZN7S9404C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9404C2;
extern VTBL_ENTRY _ZTI7S9404C2[];
extern  VTBL_ENTRY _ZTV7S9404C2[];
static Base_Class bases_S9404C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9404C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9404C1[];
extern void _ZN7S9404C1D1Ev();
extern void _ZN7S9404C1D0Ev();
extern void _ZN7S9404C22v3Ev();
extern void _ZN7S9404C22v4Ev();
extern void _ZN7S9404C22v5Ev();
extern void _ZN7S9404C12v1Ev();
extern void _ZN7S9404C12v2Ev();
static  VTBL_ENTRY vtc_S9404C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9404C1[0]),
  (VTBL_ENTRY)&_ZN7S9404C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9404C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9404C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9404C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9404C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9404C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9404C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9404C1[];
extern  VTBL_ENTRY _ZTV7S9404C1[];
Class_Descriptor cd_S9404C1 = {  "S9404C1", // class name
  bases_S9404C1, 1,
  &(vtc_S9404C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S9404C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9404C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17230C2  {
  void *s17230c2f0;
  int s17230c2f1;
  void *s17230c2f2;
  int s17230c2f3;
  void *s17230c2f4;
  int s17230c2f5;
  void *s17230c2f6;
  int s17230c2f7;
  void *s17230c2f8;
  int s17230c2f9;
  void *s17230c2f10[5];
  void  mf17230c2(); // _ZN8S17230C29mf17230c2Ev
};
//SIG(-1 S17230C2) C1{ m Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi Fp[5]}


void  S17230C2 ::mf17230c2(){}

static void Test_S17230C2()
{
  {
    init_simple_test("S17230C2");
    S17230C2 lv;
    check2(sizeof(lv), ABISELECT(120,60), "sizeof(S17230C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17230C2)");
    check_field_offset(lv, s17230c2f0, 0, "S17230C2.s17230c2f0");
    check_field_offset(lv, s17230c2f1, ABISELECT(8,4), "S17230C2.s17230c2f1");
    check_field_offset(lv, s17230c2f2, ABISELECT(16,8), "S17230C2.s17230c2f2");
    check_field_offset(lv, s17230c2f3, ABISELECT(24,12), "S17230C2.s17230c2f3");
    check_field_offset(lv, s17230c2f4, ABISELECT(32,16), "S17230C2.s17230c2f4");
    check_field_offset(lv, s17230c2f5, ABISELECT(40,20), "S17230C2.s17230c2f5");
    check_field_offset(lv, s17230c2f6, ABISELECT(48,24), "S17230C2.s17230c2f6");
    check_field_offset(lv, s17230c2f7, ABISELECT(56,28), "S17230C2.s17230c2f7");
    check_field_offset(lv, s17230c2f8, ABISELECT(64,32), "S17230C2.s17230c2f8");
    check_field_offset(lv, s17230c2f9, ABISELECT(72,36), "S17230C2.s17230c2f9");
    check_field_offset(lv, s17230c2f10, ABISELECT(80,40), "S17230C2.s17230c2f10");
  }
}
static Arrange_To_Call_Me vS17230C2(Test_S17230C2, "S17230C2", ABISELECT(120,60));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17230C1  {
  int s17230c1f0[4];
  ::S17230C2 s17230c1f1;
  void *s17230c1f2;
  int s17230c1f3;
  void *s17230c1f4;
  void  mf17230c1(); // _ZN8S17230C19mf17230c1Ev
};
//SIG(1 S17230C1) C1{ m Fi[4] FC2{ m Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi Fp[5]} Fp Fi Fp}


void  S17230C1 ::mf17230c1(){}

static void Test_S17230C1()
{
  {
    init_simple_test("S17230C1");
    S17230C1 lv;
    check2(sizeof(lv), ABISELECT(160,88), "sizeof(S17230C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17230C1)");
    check_field_offset(lv, s17230c1f0, 0, "S17230C1.s17230c1f0");
    check_field_offset(lv, s17230c1f1, 16, "S17230C1.s17230c1f1");
    check_field_offset(lv, s17230c1f2, ABISELECT(136,76), "S17230C1.s17230c1f2");
    check_field_offset(lv, s17230c1f3, ABISELECT(144,80), "S17230C1.s17230c1f3");
    check_field_offset(lv, s17230c1f4, ABISELECT(152,84), "S17230C1.s17230c1f4");
  }
}
static Arrange_To_Call_Me vS17230C1(Test_S17230C1, "S17230C1", ABISELECT(160,88));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16749C3  {
  ::S3423C4_nt s16749c3f0;
  char s16749c3f1;
  ::S3423C17 s16749c3f2;
  void  mf16749c3(); // _ZN8S16749C39mf16749c3Ev
};
//SIG(-1 S16749C3) C1{ m FC2{ m Fi[2]} Fc FC3{ BC4{ BC5{ m Fp Fi[2]}}}}


void  S16749C3 ::mf16749c3(){}

static void Test_S16749C3()
{
  {
    init_simple_test("S16749C3");
    S16749C3 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S16749C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16749C3)");
    check_field_offset(lv, s16749c3f0, 0, "S16749C3.s16749c3f0");
    check_field_offset(lv, s16749c3f1, 8, "S16749C3.s16749c3f1");
    check_field_offset(lv, s16749c3f2, ABISELECT(16,12), "S16749C3.s16749c3f2");
  }
}
static Arrange_To_Call_Me vS16749C3(Test_S16749C3, "S16749C3", ABISELECT(32,24));

#else // __cplusplus

Class_Descriptor cd_S16749C3 = {  "S16749C3", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(32,24), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16749C1  {
  int s16749c1f0;
  ::S3423C4_nt s16749c1f1;
  ::S16749C3 s16749c1f2;
  void  mf16749c1(); // _ZN8S16749C19mf16749c1Ev
};
//SIG(1 S16749C1) C1{ m Fi FC2{ m Fi[2]} FC3{ m FC2 Fc FC4{ BC5{ BC6{ m Fp Fi[2]}}}}}


void  S16749C1 ::mf16749c1(){}

static void Test_S16749C1()
{
  {
    init_simple_test("S16749C1");
    S16749C1 lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S16749C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16749C1)");
    check_field_offset(lv, s16749c1f0, 0, "S16749C1.s16749c1f0");
    check_field_offset(lv, s16749c1f1, 4, "S16749C1.s16749c1f1");
    check_field_offset(lv, s16749c1f2, ABISELECT(16,12), "S16749C1.s16749c1f2");
  }
}
static Arrange_To_Call_Me vS16749C1(Test_S16749C1, "S16749C1", ABISELECT(48,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16255C1  {
  ::S4228C19_nt s16255c1f0;
  ::S4161C4_nt s16255c1f1;
  ::S4228C25 s16255c1f2;
  void  mf16255c1(); // _ZN8S16255C19mf16255c1Ev
};
//SIG(1 S16255C1) C1{ m FC2{ m Fp Fi FC3{ m}} FC4{ m Fp} FC5{ m Fp Fi FC6{ m} FC7{ m}}}


void  S16255C1 ::mf16255c1(){}

static void Test_S16255C1()
{
  {
    init_simple_test("S16255C1");
    S16255C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S16255C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16255C1)");
    check_field_offset(lv, s16255c1f0, 0, "S16255C1.s16255c1f0");
    check_field_offset(lv, s16255c1f1, ABISELECT(16,12), "S16255C1.s16255c1f1");
    check_field_offset(lv, s16255c1f2, ABISELECT(24,16), "S16255C1.s16255c1f2");
  }
}
static Arrange_To_Call_Me vS16255C1(Test_S16255C1, "S16255C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13281C3_nt  {
  int s13281c3f0[2];
};
//SIG(1 S13281C3_nt) C1{ Fi[2]}



//skip512 S13281C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13281C2  {
  ::S13281C3_nt s13281c2f0[33];
  int s13281c2f1[4];
};
//SIG(-1 S13281C2) C1{ FC2{ Fi[2]}[33] Fi[4]}



static void Test_S13281C2()
{
  {
    init_simple_test("S13281C2");
    S13281C2 lv;
    check2(sizeof(lv), 280, "sizeof(S13281C2)");
    check2(__alignof__(lv), 4, "__alignof__(S13281C2)");
    check_field_offset(lv, s13281c2f0, 0, "S13281C2.s13281c2f0");
    check_field_offset(lv, s13281c2f1, 264, "S13281C2.s13281c2f1");
  }
}
static Arrange_To_Call_Me vS13281C2(Test_S13281C2, "S13281C2", 280);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13281C1  {
  int s13281c1f0[24];
  void *s13281c1f1[3];
  int s13281c1f2[3];
  void *s13281c1f3;
  int s13281c1f4[11];
  ::S13281C2 s13281c1f5;
};
//SIG(1 S13281C1) C1{ Fi[24] Fp[3] Fi[3] Fp Fi[11] FC2{ FC3{ Fi[2]}[33] Fi[4]}}



static void Test_S13281C1()
{
  {
    init_simple_test("S13281C1");
    S13281C1 lv;
    check2(sizeof(lv), ABISELECT(472,448), "sizeof(S13281C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13281C1)");
    check_field_offset(lv, s13281c1f0, 0, "S13281C1.s13281c1f0");
    check_field_offset(lv, s13281c1f1, 96, "S13281C1.s13281c1f1");
    check_field_offset(lv, s13281c1f2, ABISELECT(120,108), "S13281C1.s13281c1f2");
    check_field_offset(lv, s13281c1f3, ABISELECT(136,120), "S13281C1.s13281c1f3");
    check_field_offset(lv, s13281c1f4, ABISELECT(144,124), "S13281C1.s13281c1f4");
    check_field_offset(lv, s13281c1f5, ABISELECT(188,168), "S13281C1.s13281c1f5");
  }
}
static Arrange_To_Call_Me vS13281C1(Test_S13281C1, "S13281C1", ABISELECT(472,448));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18007C2  {
  __tsi64 s18007c2f0;
  ::S4228C19_nt s18007c2f1;
  ::S4228C19_nt s18007c2f2;
  int s18007c2f3[2];
  ::S4228C19_nt s18007c2f4;
  char s18007c2f5;
  void  mf18007c2(); // _ZN8S18007C29mf18007c2Ev
};
//SIG(-1 S18007C2) C1{ m FL FC2{ m Fp Fi FC3{ m}} FC2 Fi[2] FC2 Fc}


void  S18007C2 ::mf18007c2(){}

static void Test_S18007C2()
{
  {
    init_simple_test("S18007C2");
    S18007C2 lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S18007C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18007C2)");
    check_field_offset(lv, s18007c2f0, 0, "S18007C2.s18007c2f0");
    check_field_offset(lv, s18007c2f1, 8, "S18007C2.s18007c2f1");
    check_field_offset(lv, s18007c2f2, ABISELECT(24,20), "S18007C2.s18007c2f2");
    check_field_offset(lv, s18007c2f3, ABISELECT(40,32), "S18007C2.s18007c2f3");
    check_field_offset(lv, s18007c2f4, ABISELECT(48,40), "S18007C2.s18007c2f4");
    check_field_offset(lv, s18007c2f5, ABISELECT(64,52), "S18007C2.s18007c2f5");
  }
}
static Arrange_To_Call_Me vS18007C2(Test_S18007C2, "S18007C2", ABISELECT(72,56));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18007C1  {
  void *s18007c1f0[2];
  ::S18007C2 s18007c1f1;
  void  mf18007c1(); // _ZN8S18007C19mf18007c1Ev
};
//SIG(1 S18007C1) C1{ m Fp[2] FC2{ m FL FC3{ m Fp Fi FC4{ m}} FC3 Fi[2] FC3 Fc}}


void  S18007C1 ::mf18007c1(){}

static void Test_S18007C1()
{
  {
    init_simple_test("S18007C1");
    S18007C1 lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S18007C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18007C1)");
    check_field_offset(lv, s18007c1f0, 0, "S18007C1.s18007c1f0");
    check_field_offset(lv, s18007c1f1, ABISELECT(16,8), "S18007C1.s18007c1f1");
  }
}
static Arrange_To_Call_Me vS18007C1(Test_S18007C1, "S18007C1", ABISELECT(88,64));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21384C2_nt  {
  ::S10006C29_nt s21384c2f0;
  void  mf21384c2(); // _ZN11S21384C2_nt9mf21384c2Ev
};
//SIG(-1 S21384C2_nt) C1{ m FC2{ Fl[4]}}


void  S21384C2_nt ::mf21384c2(){}

//skip512 S21384C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21384C1  {
  ::S21384C2_nt s21384c1f0;
  ::S4228C24 s21384c1f1;
  void  mf21384c1(); // _ZN8S21384C19mf21384c1Ev
  virtual  ~S21384C1(); // _ZN8S21384C1D1Ev
  S21384C1(); // tgen
};
//SIG(1 S21384C1) C1{ vd m FC2{ m FC3{ Fl[4]}} FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}}


void  S21384C1 ::mf21384c1(){}
 S21384C1 ::~S21384C1(){ note_dtor("S21384C1", this);}
S21384C1 ::S21384C1(){ note_ctor("S21384C1", this);} // tgen

static void Test_S21384C1()
{
  extern Class_Descriptor cd_S21384C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S21384C1, buf);
    S21384C1 *dp, &lv = *(dp=new (buf) S21384C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S21384C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21384C1)");
    check_field_offset(lv, s21384c1f0, ABISELECT(8,4), "S21384C1.s21384c1f0");
    check_field_offset(lv, s21384c1f1, ABISELECT(40,20), "S21384C1.s21384c1f1");
    test_class_info(&lv, &cd_S21384C1);
    dp->~S21384C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21384C1(Test_S21384C1, "S21384C1", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S21384C1C1Ev();
extern void _ZN8S21384C1D1Ev();
Name_Map name_map_S21384C1[] = {
  NSPAIR(_ZN8S21384C1C1Ev),
  NSPAIR(_ZN8S21384C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21384C1[];
extern void _ZN8S21384C1D1Ev();
extern void _ZN8S21384C1D0Ev();
static  VTBL_ENTRY vtc_S21384C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21384C1[0]),
  (VTBL_ENTRY)&_ZN8S21384C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21384C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21384C1[];
extern  VTBL_ENTRY _ZTV8S21384C1[];
Class_Descriptor cd_S21384C1 = {  "S21384C1", // class name
  0,0,//no base classes
  &(vtc_S21384C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S21384C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21384C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15065C1  {
  char s15065c1f0;
  ::S4228C19_nt s15065c1f1;
  int s15065c1f2;
  ::S4228C19_nt s15065c1f3;
  ::S4228C19_nt s15065c1f4;
  int s15065c1f5[2];
  char s15065c1f6;
  int s15065c1f7[2];
  __tsi64 s15065c1f8;
  void  mf15065c1(); // _ZN8S15065C19mf15065c1Ev
};
//SIG(1 S15065C1) C1{ m Fc FC2{ m Fp Fi FC3{ m}} Fi FC2 FC2 Fi[2] Fc Fi[2] FL}


void  S15065C1 ::mf15065c1(){}

static void Test_S15065C1()
{
  {
    init_simple_test("S15065C1");
    S15065C1 lv;
    check2(sizeof(lv), ABISELECT(96,72), "sizeof(S15065C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15065C1)");
    check_field_offset(lv, s15065c1f0, 0, "S15065C1.s15065c1f0");
    check_field_offset(lv, s15065c1f1, ABISELECT(8,4), "S15065C1.s15065c1f1");
    check_field_offset(lv, s15065c1f2, ABISELECT(24,16), "S15065C1.s15065c1f2");
    check_field_offset(lv, s15065c1f3, ABISELECT(32,20), "S15065C1.s15065c1f3");
    check_field_offset(lv, s15065c1f4, ABISELECT(48,32), "S15065C1.s15065c1f4");
    check_field_offset(lv, s15065c1f5, ABISELECT(64,44), "S15065C1.s15065c1f5");
    check_field_offset(lv, s15065c1f6, ABISELECT(72,52), "S15065C1.s15065c1f6");
    check_field_offset(lv, s15065c1f7, ABISELECT(76,56), "S15065C1.s15065c1f7");
    check_field_offset(lv, s15065c1f8, ABISELECT(88,64), "S15065C1.s15065c1f8");
  }
}
static Arrange_To_Call_Me vS15065C1(Test_S15065C1, "S15065C1", ABISELECT(96,72));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12172C4_nt  {
  char s12172c4f0;
  char s12172c4f1[15];
  void  mf12172c4(); // _ZN11S12172C4_nt9mf12172c4Ev
};
//SIG(-1 S12172C4_nt) C1{ m Fc[16]}


void  S12172C4_nt ::mf12172c4(){}

//skip512 S12172C4_nt

#else // __cplusplus

Class_Descriptor cd_S12172C4_nt = {  "S12172C4_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  16, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12172C3_nt  : S12172C4_nt {
};
//SIG(-1 S12172C3_nt) C1{ BC2{ m Fc[16]}}



//skip512 S12172C3_nt

#else // __cplusplus

extern Class_Descriptor cd_S12172C4_nt;
static Base_Class bases_S12172C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S12172C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12172C1  {
  ::S4161C4_nt s12172c1f0;
  ::S12172C3_nt s12172c1f1;
  ::S12172C3_nt s12172c1f2;
  int s12172c1f3;
  ::S3423C4_nt s12172c1f4;
};
//SIG(1 S12172C1) C1{ FC2{ m Fp} FC3{ BC4{ m Fc[16]}} FC3 Fi FC5{ m Fi[2]}}



static void Test_S12172C1()
{
  {
    init_simple_test("S12172C1");
    S12172C1 lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S12172C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12172C1)");
    check_field_offset(lv, s12172c1f0, 0, "S12172C1.s12172c1f0");
    check_field_offset(lv, s12172c1f1, ABISELECT(8,4), "S12172C1.s12172c1f1");
    check_field_offset(lv, s12172c1f2, ABISELECT(24,20), "S12172C1.s12172c1f2");
    check_field_offset(lv, s12172c1f3, ABISELECT(40,36), "S12172C1.s12172c1f3");
    check_field_offset(lv, s12172c1f4, ABISELECT(44,40), "S12172C1.s12172c1f4");
  }
}
static Arrange_To_Call_Me vS12172C1(Test_S12172C1, "S12172C1", ABISELECT(56,48));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11747C2_nt  {
  __tsi64 s11747c2f0[3];
};
//SIG(-1 S11747C2_nt) C1{ FL[3]}



//skip512 S11747C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11747C4  {
  long s11747c4f0;
  void *s11747c4f1;
};
//SIG(-1 S11747C4) C1{ Fl Fp}



static void Test_S11747C4()
{
  {
    init_simple_test("S11747C4");
    S11747C4 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S11747C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11747C4)");
    check_field_offset(lv, s11747c4f0, 0, "S11747C4.s11747c4f0");
    check_field_offset(lv, s11747c4f1, ABISELECT(8,4), "S11747C4.s11747c4f1");
  }
}
static Arrange_To_Call_Me vS11747C4(Test_S11747C4, "S11747C4", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11747C1  {
  ::S11747C2_nt s11747c1f0;
  ::S10007C29_nt s11747c1f1;
  ::S11747C4 s11747c1f2;
  void *s11747c1f3;
  __tsi64 s11747c1f4;
  void *s11747c1f5;
  long s11747c1f6;
  __tsi64 s11747c1f7[2];
  long s11747c1f8;
};
//SIG(1 S11747C1) C1{ FC2{ FL[3]} FC3{ FL[4]} FC4{ Fl Fp} Fp FL Fp Fl FL[2] Fl}



static void Test_S11747C1()
{
  {
    init_simple_test("S11747C1");
    S11747C1 lv;
    check2(sizeof(lv), ABISELECT(128,104), "sizeof(S11747C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11747C1)");
    check_field_offset(lv, s11747c1f0, 0, "S11747C1.s11747c1f0");
    check_field_offset(lv, s11747c1f1, 24, "S11747C1.s11747c1f1");
    check_field_offset(lv, s11747c1f2, 56, "S11747C1.s11747c1f2");
    check_field_offset(lv, s11747c1f3, ABISELECT(72,64), "S11747C1.s11747c1f3");
    check_field_offset(lv, s11747c1f4, ABISELECT(80,68), "S11747C1.s11747c1f4");
    check_field_offset(lv, s11747c1f5, ABISELECT(88,76), "S11747C1.s11747c1f5");
    check_field_offset(lv, s11747c1f6, ABISELECT(96,80), "S11747C1.s11747c1f6");
    check_field_offset(lv, s11747c1f7, ABISELECT(104,84), "S11747C1.s11747c1f7");
    check_field_offset(lv, s11747c1f8, ABISELECT(120,100), "S11747C1.s11747c1f8");
  }
}
static Arrange_To_Call_Me vS11747C1(Test_S11747C1, "S11747C1", ABISELECT(128,104));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5646C1  : S16749C3 {
  void *s5646c1f0;
};
//SIG(1 S5646C1) C1{ BC2{ m FC3{ m Fi[2]} Fc FC4{ BC5{ BC6{ m Fp Fi[2]}}}} Fp}



static void Test_S5646C1()
{
  extern Class_Descriptor cd_S5646C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S5646C1, buf);
    S5646C1 &lv = *(new (buf) S5646C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S5646C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5646C1)");
    check_base_class_offset(lv, (S16749C3*), 0, "S5646C1");
    check_field_offset(lv, s5646c1f0, ABISELECT(32,24), "S5646C1.s5646c1f0");
    test_class_info(&lv, &cd_S5646C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5646C1(Test_S5646C1, "S5646C1", ABISELECT(40,28));

#else // __cplusplus

extern Class_Descriptor cd_S16749C3;
static Base_Class bases_S5646C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S16749C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S5646C1 = {  "S5646C1", // class name
  bases_S5646C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,28), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13319C1  {
  int s13319c1f0[3];
  char s13319c1f1[4];
  void *s13319c1f2;
  int s13319c1f3;
  __tsi64 s13319c1f4;
  int s13319c1f5[10];
  char s13319c1f6[16];
  int s13319c1f7[3];
  char s13319c1f8[164];
};
//SIG(1 S13319C1) C1{ Fi[3] Fc[4] Fp Fi FL Fi[10] Fc[16] Fi[3] Fc[164]}



static void Test_S13319C1()
{
  {
    init_simple_test("S13319C1");
    S13319C1 lv;
    check2(sizeof(lv), ABISELECT(272,264), "sizeof(S13319C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13319C1)");
    check_field_offset(lv, s13319c1f0, 0, "S13319C1.s13319c1f0");
    check_field_offset(lv, s13319c1f1, 12, "S13319C1.s13319c1f1");
    check_field_offset(lv, s13319c1f2, 16, "S13319C1.s13319c1f2");
    check_field_offset(lv, s13319c1f3, ABISELECT(24,20), "S13319C1.s13319c1f3");
    check_field_offset(lv, s13319c1f4, ABISELECT(32,24), "S13319C1.s13319c1f4");
    check_field_offset(lv, s13319c1f5, ABISELECT(40,32), "S13319C1.s13319c1f5");
    check_field_offset(lv, s13319c1f6, ABISELECT(80,72), "S13319C1.s13319c1f6");
    check_field_offset(lv, s13319c1f7, ABISELECT(96,88), "S13319C1.s13319c1f7");
    check_field_offset(lv, s13319c1f8, ABISELECT(108,100), "S13319C1.s13319c1f8");
  }
}
static Arrange_To_Call_Me vS13319C1(Test_S13319C1, "S13319C1", ABISELECT(272,264));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11713C2  {
  long s11713c2f0;
  short s11713c2f1[3];
  long s11713c2f2[2];
  short s11713c2f3[2];
  char s11713c2f4;
};
//SIG(-1 S11713C2) C1{ Fl Fs[3] Fl[2] Fs[2] Fc}



static void Test_S11713C2()
{
  {
    init_simple_test("S11713C2");
    S11713C2 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S11713C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11713C2)");
    check_field_offset(lv, s11713c2f0, 0, "S11713C2.s11713c2f0");
    check_field_offset(lv, s11713c2f1, ABISELECT(8,4), "S11713C2.s11713c2f1");
    check_field_offset(lv, s11713c2f2, ABISELECT(16,12), "S11713C2.s11713c2f2");
    check_field_offset(lv, s11713c2f3, ABISELECT(32,20), "S11713C2.s11713c2f3");
    check_field_offset(lv, s11713c2f4, ABISELECT(36,24), "S11713C2.s11713c2f4");
  }
}
static Arrange_To_Call_Me vS11713C2(Test_S11713C2, "S11713C2", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11713C3  {
  char s11713c3f0[2];
  short s11713c3f1[3];
};
//SIG(-1 S11713C3) C1{ Fc[2] Fs[3]}



static void Test_S11713C3()
{
  {
    init_simple_test("S11713C3");
    S11713C3 lv;
    check2(sizeof(lv), 8, "sizeof(S11713C3)");
    check2(__alignof__(lv), 2, "__alignof__(S11713C3)");
    check_field_offset(lv, s11713c3f0, 0, "S11713C3.s11713c3f0");
    check_field_offset(lv, s11713c3f1, 2, "S11713C3.s11713c3f1");
  }
}
static Arrange_To_Call_Me vS11713C3(Test_S11713C3, "S11713C3", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11713C1  {
  ::S11713C2 s11713c1f0;
  long s11713c1f1;
  ::S11713C3 s11713c1f2;
};
//SIG(1 S11713C1) C1{ FC2{ Fl Fs[3] Fl[2] Fs[2] Fc} Fl FC3{ Fc[2] Fs[3]}}



static void Test_S11713C1()
{
  {
    init_simple_test("S11713C1");
    S11713C1 lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S11713C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11713C1)");
    check_field_offset(lv, s11713c1f0, 0, "S11713C1.s11713c1f0");
    check_field_offset(lv, s11713c1f1, ABISELECT(40,28), "S11713C1.s11713c1f1");
    check_field_offset(lv, s11713c1f2, ABISELECT(48,32), "S11713C1.s11713c1f2");
  }
}
static Arrange_To_Call_Me vS11713C1(Test_S11713C1, "S11713C1", ABISELECT(56,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3897C2_nt  : S20760C9 {
  int s3897c2f0;
  void *s3897c2f1;
  int s3897c2f2;
  virtual  ~S3897C2_nt(); // _ZN10S3897C2_ntD1Ev
  S3897C2_nt(); // tgen
};
//SIG(-1 S3897C2_nt) C1{ BC2{ vd m FL} vd Fi Fp Fi}


 S3897C2_nt ::~S3897C2_nt(){ note_dtor("S3897C2_nt", this);}
S3897C2_nt ::S3897C2_nt(){ note_ctor("S3897C2_nt", this);} // tgen

//skip512 S3897C2_nt

#else // __cplusplus

extern void _ZN10S3897C2_ntC1Ev();
extern void _ZN10S3897C2_ntD1Ev();
Name_Map name_map_S3897C2_nt[] = {
  NSPAIR(_ZN10S3897C2_ntC1Ev),
  NSPAIR(_ZN10S3897C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S3897C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3897C2_nt[];
extern void _ZN10S3897C2_ntD1Ev();
extern void _ZN10S3897C2_ntD0Ev();
static  VTBL_ENTRY vtc_S3897C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3897C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3897C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3897C2_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S3897C2_nt[];
VTBL_ENTRY *P__ZTI10S3897C2_nt = _ZTI10S3897C2_nt; 
extern  VTBL_ENTRY _ZTV10S3897C2_nt[];
Class_Descriptor cd_S3897C2_nt = {  "S3897C2_nt", // class name
  bases_S3897C2_nt, 1,
  &(vtc_S3897C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI10S3897C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3897C2_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3897C1  : S3897C2_nt {
  ::S20760C13 s3897c1f0;
  virtual  ~S3897C1(); // _ZN7S3897C1D1Ev
  S3897C1(); // tgen
};
//SIG(1 S3897C1) C1{ BC2{ BC3{ vd m FL} vd Fi Fp Fi} vd FC4{ vd m Fi[6]}}


 S3897C1 ::~S3897C1(){ note_dtor("S3897C1", this);}
S3897C1 ::S3897C1(){ note_ctor("S3897C1", this);} // tgen

static void Test_S3897C1()
{
  extern Class_Descriptor cd_S3897C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,14)];
    init_test(&cd_S3897C1, buf);
    S3897C1 *dp, &lv = *(dp=new (buf) S3897C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S3897C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3897C1)");
    check_base_class_offset(lv, (S20760C9*)(S3897C2_nt*), 0, "S3897C1");
    check_base_class_offset(lv, (S3897C2_nt*), 0, "S3897C1");
    check_field_offset(lv, s3897c1f0, ABISELECT(40,24), "S3897C1.s3897c1f0");
    test_class_info(&lv, &cd_S3897C1);
    dp->~S3897C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3897C1(Test_S3897C1, "S3897C1", ABISELECT(72,52));

#else // __cplusplus

extern void _ZN7S3897C1C1Ev();
extern void _ZN7S3897C1D1Ev();
Name_Map name_map_S3897C1[] = {
  NSPAIR(_ZN7S3897C1C1Ev),
  NSPAIR(_ZN7S3897C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S3897C2_nt;
extern VTBL_ENTRY _ZTI10S3897C2_nt[];
extern  VTBL_ENTRY _ZTV10S3897C2_nt[];
static Base_Class bases_S3897C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3897C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3897C1[];
extern void _ZN7S3897C1D1Ev();
extern void _ZN7S3897C1D0Ev();
static  VTBL_ENTRY vtc_S3897C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3897C1[0]),
  (VTBL_ENTRY)&_ZN7S3897C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3897C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S3897C1[];
extern  VTBL_ENTRY _ZTV7S3897C1[];
Class_Descriptor cd_S3897C1 = {  "S3897C1", // class name
  bases_S3897C1, 2,
  &(vtc_S3897C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,52), // object size
  NSPAIRA(_ZTI7S3897C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3897C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16313C1  {
  ::S4228C44 s16313c1f0;
  ::S21384C2_nt s16313c1f1;
  int s16313c1f2;
  void *s16313c1f3;
  void  mf16313c1(); // _ZN8S16313C19mf16313c1Ev
};
//SIG(1 S16313C1) C1{ m FC2{ m Fp Fi[2] FC3{ m}} FC4{ m FC5{ Fl[4]}} Fi Fp}


void  S16313C1 ::mf16313c1(){}

static void Test_S16313C1()
{
  {
    init_simple_test("S16313C1");
    S16313C1 lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S16313C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16313C1)");
    check_field_offset(lv, s16313c1f0, 0, "S16313C1.s16313c1f0");
    check_field_offset(lv, s16313c1f1, ABISELECT(24,16), "S16313C1.s16313c1f1");
    check_field_offset(lv, s16313c1f2, ABISELECT(56,32), "S16313C1.s16313c1f2");
    check_field_offset(lv, s16313c1f3, ABISELECT(64,36), "S16313C1.s16313c1f3");
  }
}
static Arrange_To_Call_Me vS16313C1(Test_S16313C1, "S16313C1", ABISELECT(72,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15031C2_nt  {
  char s15031c2f0[8];
  void  mf15031c2(); // _ZN11S15031C2_nt9mf15031c2Ev
};
//SIG(-1 S15031C2_nt) C1{ m Fc[8]}


void  S15031C2_nt ::mf15031c2(){}

//skip512 S15031C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15031C1  {
  char s15031c1f0;
  ::S15031C2_nt s15031c1f1;
  ::S3423C17 s15031c1f2;
  ::S3423C17 s15031c1f3;
  void  mf15031c1(); // _ZN8S15031C19mf15031c1Ev
};
//SIG(1 S15031C1) C1{ m Fc FC2{ m Fc[8]} FC3{ BC4{ BC5{ m Fp Fi[2]}}} FC3}


void  S15031C1 ::mf15031c1(){}

static void Test_S15031C1()
{
  {
    init_simple_test("S15031C1");
    S15031C1 lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S15031C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15031C1)");
    check_field_offset(lv, s15031c1f0, 0, "S15031C1.s15031c1f0");
    check_field_offset(lv, s15031c1f1, 1, "S15031C1.s15031c1f1");
    check_field_offset(lv, s15031c1f2, ABISELECT(16,12), "S15031C1.s15031c1f2");
    check_field_offset(lv, s15031c1f3, ABISELECT(32,24), "S15031C1.s15031c1f3");
  }
}
static Arrange_To_Call_Me vS15031C1(Test_S15031C1, "S15031C1", ABISELECT(48,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12587C1  {
  int s12587c1f0;
  ::S4228C19_nt s12587c1f1;
  ::S4228C44 s12587c1f2;
};
//SIG(1 S12587C1) C1{ Fi FC2{ m Fp Fi FC3{ m}} FC4{ m Fp Fi[2] FC5{ m}}}



static void Test_S12587C1()
{
  {
    init_simple_test("S12587C1");
    S12587C1 lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S12587C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12587C1)");
    check_field_offset(lv, s12587c1f0, 0, "S12587C1.s12587c1f0");
    check_field_offset(lv, s12587c1f1, ABISELECT(8,4), "S12587C1.s12587c1f1");
    check_field_offset(lv, s12587c1f2, ABISELECT(24,16), "S12587C1.s12587c1f2");
  }
}
static Arrange_To_Call_Me vS12587C1(Test_S12587C1, "S12587C1", ABISELECT(48,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13180C1  {
  int s13180c1f0[2];
  void *s13180c1f1;
  char s13180c1f2[2];
  void *s13180c1f3[2];
  int s13180c1f4[5];
  void *s13180c1f5[3];
  char s13180c1f6;
  int s13180c1f7;
  char s13180c1f8[2];
};
//SIG(1 S13180C1) C1{ Fi[2] Fp Fc[2] Fp[2] Fi[5] Fp[3] Fc Fi Fc[2]}



static void Test_S13180C1()
{
  {
    init_simple_test("S13180C1");
    S13180C1 lv;
    check2(sizeof(lv), ABISELECT(104,68), "sizeof(S13180C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13180C1)");
    check_field_offset(lv, s13180c1f0, 0, "S13180C1.s13180c1f0");
    check_field_offset(lv, s13180c1f1, 8, "S13180C1.s13180c1f1");
    check_field_offset(lv, s13180c1f2, ABISELECT(16,12), "S13180C1.s13180c1f2");
    check_field_offset(lv, s13180c1f3, ABISELECT(24,16), "S13180C1.s13180c1f3");
    check_field_offset(lv, s13180c1f4, ABISELECT(40,24), "S13180C1.s13180c1f4");
    check_field_offset(lv, s13180c1f5, ABISELECT(64,44), "S13180C1.s13180c1f5");
    check_field_offset(lv, s13180c1f6, ABISELECT(88,56), "S13180C1.s13180c1f6");
    check_field_offset(lv, s13180c1f7, ABISELECT(92,60), "S13180C1.s13180c1f7");
    check_field_offset(lv, s13180c1f8, ABISELECT(96,64), "S13180C1.s13180c1f8");
  }
}
static Arrange_To_Call_Me vS13180C1(Test_S13180C1, "S13180C1", ABISELECT(104,68));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14017C1  {
  __tsi64 s14017c1f0[4];
  void *s14017c1f1[5];
  int s14017c1f2[3];
  char s14017c1f3[3];
  short s14017c1f4[2];
  void *s14017c1f5[3];
  char s14017c1f6[180];
};
//SIG(1 S14017C1) C1{ FL[4] Fp[5] Fi[3] Fc[3] Fs[2] Fp[3] Fc[180]}



static void Test_S14017C1()
{
  {
    init_simple_test("S14017C1");
    S14017C1 lv;
    check2(sizeof(lv), ABISELECT(304,264), "sizeof(S14017C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14017C1)");
    check_field_offset(lv, s14017c1f0, 0, "S14017C1.s14017c1f0");
    check_field_offset(lv, s14017c1f1, 32, "S14017C1.s14017c1f1");
    check_field_offset(lv, s14017c1f2, ABISELECT(72,52), "S14017C1.s14017c1f2");
    check_field_offset(lv, s14017c1f3, ABISELECT(84,64), "S14017C1.s14017c1f3");
    check_field_offset(lv, s14017c1f4, ABISELECT(88,68), "S14017C1.s14017c1f4");
    check_field_offset(lv, s14017c1f5, ABISELECT(96,72), "S14017C1.s14017c1f5");
    check_field_offset(lv, s14017c1f6, ABISELECT(120,84), "S14017C1.s14017c1f6");
  }
}
static Arrange_To_Call_Me vS14017C1(Test_S14017C1, "S14017C1", ABISELECT(304,264));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18216C3  {
  ::S4747C6_nt s18216c3f0;
  char s18216c3f1;
};
//SIG(-1 S18216C3) C1{ FC2{ m Fp[2]} Fc}



static void Test_S18216C3()
{
  {
    init_simple_test("S18216C3");
    S18216C3 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S18216C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18216C3)");
    check_field_offset(lv, s18216c3f0, 0, "S18216C3.s18216c3f0");
    check_field_offset(lv, s18216c3f1, ABISELECT(16,8), "S18216C3.s18216c3f1");
  }
}
static Arrange_To_Call_Me vS18216C3(Test_S18216C3, "S18216C3", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18216C2  {
  int s18216c2f0;
  ::S18216C3 s18216c2f1;
  void  mf18216c2(); // _ZN8S18216C29mf18216c2Ev
};
//SIG(-1 S18216C2) C1{ m Fi FC2{ FC3{ m Fp[2]} Fc}}


void  S18216C2 ::mf18216c2(){}

static void Test_S18216C2()
{
  {
    init_simple_test("S18216C2");
    S18216C2 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S18216C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18216C2)");
    check_field_offset(lv, s18216c2f0, 0, "S18216C2.s18216c2f0");
    check_field_offset(lv, s18216c2f1, ABISELECT(8,4), "S18216C2.s18216c2f1");
  }
}
static Arrange_To_Call_Me vS18216C2(Test_S18216C2, "S18216C2", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18216C1  {
  void *s18216c1f0[3];
  ::S18216C2 s18216c1f1;
  char s18216c1f2[2];
  void  mf18216c1(); // _ZN8S18216C19mf18216c1Ev
};
//SIG(1 S18216C1) C1{ m Fp[3] FC2{ m Fi FC3{ FC4{ m Fp[2]} Fc}} Fc[2]}


void  S18216C1 ::mf18216c1(){}

static void Test_S18216C1()
{
  {
    init_simple_test("S18216C1");
    S18216C1 lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S18216C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18216C1)");
    check_field_offset(lv, s18216c1f0, 0, "S18216C1.s18216c1f0");
    check_field_offset(lv, s18216c1f1, ABISELECT(24,12), "S18216C1.s18216c1f1");
    check_field_offset(lv, s18216c1f2, ABISELECT(56,28), "S18216C1.s18216c1f2");
  }
}
static Arrange_To_Call_Me vS18216C1(Test_S18216C1, "S18216C1", ABISELECT(64,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17728C1  {
  void *s17728c1f0;
  int s17728c1f1;
  void *s17728c1f2;
  char s17728c1f3;
  int s17728c1f4;
  __tsi64 s17728c1f5;
  ::S4747C6_nt s17728c1f6;
  ::S4747C6_nt s17728c1f7;
  char s17728c1f8[2];
  void  mf17728c1(); // _ZN8S17728C19mf17728c1Ev
};
//SIG(1 S17728C1) C1{ m Fp Fi Fp Fc Fi FL FC2{ m Fp[2]} FC2 Fc[2]}


void  S17728C1 ::mf17728c1(){}

static void Test_S17728C1()
{
  {
    init_simple_test("S17728C1");
    S17728C1 lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S17728C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17728C1)");
    check_field_offset(lv, s17728c1f0, 0, "S17728C1.s17728c1f0");
    check_field_offset(lv, s17728c1f1, ABISELECT(8,4), "S17728C1.s17728c1f1");
    check_field_offset(lv, s17728c1f2, ABISELECT(16,8), "S17728C1.s17728c1f2");
    check_field_offset(lv, s17728c1f3, ABISELECT(24,12), "S17728C1.s17728c1f3");
    check_field_offset(lv, s17728c1f4, ABISELECT(28,16), "S17728C1.s17728c1f4");
    check_field_offset(lv, s17728c1f5, ABISELECT(32,20), "S17728C1.s17728c1f5");
    check_field_offset(lv, s17728c1f6, ABISELECT(40,28), "S17728C1.s17728c1f6");
    check_field_offset(lv, s17728c1f7, ABISELECT(56,36), "S17728C1.s17728c1f7");
    check_field_offset(lv, s17728c1f8, ABISELECT(72,44), "S17728C1.s17728c1f8");
  }
}
static Arrange_To_Call_Me vS17728C1(Test_S17728C1, "S17728C1", ABISELECT(80,48));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15724C1  {
  ::S7169C12_nt s15724c1f0;
  ::S4228C44 s15724c1f1;
  void  mf15724c1(); // _ZN8S15724C19mf15724c1Ev
};
//SIG(1 S15724C1) C1{ m FC2{ m FC3{ FL[4]}} FC4{ m Fp Fi[2] FC5{ m}}}


void  S15724C1 ::mf15724c1(){}

static void Test_S15724C1()
{
  {
    init_simple_test("S15724C1");
    S15724C1 lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S15724C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15724C1)");
    check_field_offset(lv, s15724c1f0, 0, "S15724C1.s15724c1f0");
    check_field_offset(lv, s15724c1f1, 32, "S15724C1.s15724c1f1");
  }
}
static Arrange_To_Call_Me vS15724C1(Test_S15724C1, "S15724C1", ABISELECT(56,48));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11455C2_nt  {
  int s11455c2f0;
  void *s11455c2f1[3];
  int s11455c2f2;
  void *s11455c2f3;
  int s11455c2f4[17];
};
//SIG(-1 S11455C2_nt) C1{ Fi Fp[3] Fi Fp Fi[17]}



//skip512 S11455C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11455C1  {
  ::S11455C2_nt s11455c1f0;
  void *s11455c1f1;
  int s11455c1f2[3];
  __tsi64 s11455c1f3[2];
};
//SIG(1 S11455C1) C1{ FC2{ Fi Fp[3] Fi Fp Fi[17]} Fp Fi[3] FL[2]}



static void Test_S11455C1()
{
  {
    init_simple_test("S11455C1");
    S11455C1 lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S11455C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11455C1)");
    check_field_offset(lv, s11455c1f0, 0, "S11455C1.s11455c1f0");
    check_field_offset(lv, s11455c1f1, ABISELECT(120,92), "S11455C1.s11455c1f1");
    check_field_offset(lv, s11455c1f2, ABISELECT(128,96), "S11455C1.s11455c1f2");
    check_field_offset(lv, s11455c1f3, ABISELECT(144,108), "S11455C1.s11455c1f3");
  }
}
static Arrange_To_Call_Me vS11455C1(Test_S11455C1, "S11455C1", ABISELECT(160,124));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17717C1  {
  void *s17717c1f0;
  int s17717c1f1;
  ::S4161C4_nt s17717c1f2;
  ::S4228C44 s17717c1f3;
  void  mf17717c1(); // _ZN8S17717C19mf17717c1Ev
};
//SIG(1 S17717C1) C1{ m Fp Fi FC2{ m Fp} FC3{ m Fp Fi[2] FC4{ m}}}


void  S17717C1 ::mf17717c1(){}

static void Test_S17717C1()
{
  {
    init_simple_test("S17717C1");
    S17717C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S17717C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17717C1)");
    check_field_offset(lv, s17717c1f0, 0, "S17717C1.s17717c1f0");
    check_field_offset(lv, s17717c1f1, ABISELECT(8,4), "S17717C1.s17717c1f1");
    check_field_offset(lv, s17717c1f2, ABISELECT(16,8), "S17717C1.s17717c1f2");
    check_field_offset(lv, s17717c1f3, ABISELECT(24,12), "S17717C1.s17717c1f3");
  }
}
static Arrange_To_Call_Me vS17717C1(Test_S17717C1, "S17717C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17732C1  {
  void *s17732c1f0;
  int s17732c1f1;
  void *s17732c1f2;
  ::S4506C4_nt s17732c1f3;
  char s17732c1f4[2];
  ::S4506C4_nt s17732c1f5;
  int s17732c1f6;
  void  mf17732c1(); // _ZN8S17732C19mf17732c1Ev
};
//SIG(1 S17732C1) C1{ m Fp Fi Fp FC2{ m FC3{ m FL}} Fc[2] FC2 Fi}


void  S17732C1 ::mf17732c1(){}

static void Test_S17732C1()
{
  {
    init_simple_test("S17732C1");
    S17732C1 lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S17732C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17732C1)");
    check_field_offset(lv, s17732c1f0, 0, "S17732C1.s17732c1f0");
    check_field_offset(lv, s17732c1f1, ABISELECT(8,4), "S17732C1.s17732c1f1");
    check_field_offset(lv, s17732c1f2, ABISELECT(16,8), "S17732C1.s17732c1f2");
    check_field_offset(lv, s17732c1f3, ABISELECT(24,12), "S17732C1.s17732c1f3");
    check_field_offset(lv, s17732c1f4, ABISELECT(32,20), "S17732C1.s17732c1f4");
    check_field_offset(lv, s17732c1f5, ABISELECT(40,24), "S17732C1.s17732c1f5");
    check_field_offset(lv, s17732c1f6, ABISELECT(48,32), "S17732C1.s17732c1f6");
  }
}
static Arrange_To_Call_Me vS17732C1(Test_S17732C1, "S17732C1", ABISELECT(56,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16609C1  {
  int s16609c1f0;
  ::S205C8_nt s16609c1f1;
  ::S205C8_nt s16609c1f2;
  void  mf16609c1(); // _ZN8S16609C19mf16609c1Ev
};
//SIG(1 S16609C1) C1{ m Fi FC2{ BC3{ BC4{ BC5{ m Fp Fi[2]}}}} FC2}


void  S16609C1 ::mf16609c1(){}

static void Test_S16609C1()
{
  {
    init_simple_test("S16609C1");
    S16609C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S16609C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16609C1)");
    check_field_offset(lv, s16609c1f0, 0, "S16609C1.s16609c1f0");
    check_field_offset(lv, s16609c1f1, ABISELECT(8,4), "S16609C1.s16609c1f1");
    check_field_offset(lv, s16609c1f2, ABISELECT(24,16), "S16609C1.s16609c1f2");
  }
}
static Arrange_To_Call_Me vS16609C1(Test_S16609C1, "S16609C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6052C2_nt  {
  void *s6052c2f0[4];
  void  mf6052c2(); // _ZN10S6052C2_nt8mf6052c2Ev
};
//SIG(-1 S6052C2_nt) C1{ m Fp[4]}


void  S6052C2_nt ::mf6052c2(){}

//skip512 S6052C2_nt

#else // __cplusplus

Class_Descriptor cd_S6052C2_nt = {  "S6052C2_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(32,16), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6052C1  : S6052C2_nt {
  ::S3423C18 s6052c1f0;
  void *s6052c1f1;
  int s6052c1f2;
};
//SIG(1 S6052C1) C1{ BC2{ m Fp[4]} FC3{ BC4{ m Fp Fi[2]}} Fp Fi}



static void Test_S6052C1()
{
  extern Class_Descriptor cd_S6052C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S6052C1, buf);
    S6052C1 &lv = *(new (buf) S6052C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S6052C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6052C1)");
    check_base_class_offset(lv, (S6052C2_nt*), 0, "S6052C1");
    check_field_offset(lv, s6052c1f0, ABISELECT(32,16), "S6052C1.s6052c1f0");
    check_field_offset(lv, s6052c1f1, ABISELECT(48,28), "S6052C1.s6052c1f1");
    check_field_offset(lv, s6052c1f2, ABISELECT(56,32), "S6052C1.s6052c1f2");
    test_class_info(&lv, &cd_S6052C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6052C1(Test_S6052C1, "S6052C1", ABISELECT(64,36));

#else // __cplusplus

extern Class_Descriptor cd_S6052C2_nt;
static Base_Class bases_S6052C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6052C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S6052C1 = {  "S6052C1", // class name
  bases_S6052C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(64,36), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11384C3_nt  {
  int s11384c3f0[11];
};
//SIG(-1 S11384C3_nt) C1{ Fi[11]}



//skip512 S11384C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11384C1  {
  ::S11455C2_nt s11384c1f0;
  ::S11384C3_nt s11384c1f1;
};
//SIG(1 S11384C1) C1{ FC2{ Fi Fp[3] Fi Fp Fi[17]} FC3{ Fi[11]}}



static void Test_S11384C1()
{
  {
    init_simple_test("S11384C1");
    S11384C1 lv;
    check2(sizeof(lv), ABISELECT(168,136), "sizeof(S11384C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11384C1)");
    check_field_offset(lv, s11384c1f0, 0, "S11384C1.s11384c1f0");
    check_field_offset(lv, s11384c1f1, ABISELECT(120,92), "S11384C1.s11384c1f1");
  }
}
static Arrange_To_Call_Me vS11384C1(Test_S11384C1, "S11384C1", ABISELECT(168,136));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17975C1  {
  void *s17975c1f0[2];
  ::S4228C18_nt s17975c1f1;
  void  mf17975c1(); // _ZN8S17975C19mf17975c1Ev
};
//SIG(1 S17975C1) C1{ m Fp[2] FC2{ m FC3{ m Fp Fi FC4{ m}} Fi}}


void  S17975C1 ::mf17975c1(){}

static void Test_S17975C1()
{
  {
    init_simple_test("S17975C1");
    S17975C1 lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S17975C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17975C1)");
    check_field_offset(lv, s17975c1f0, 0, "S17975C1.s17975c1f0");
    check_field_offset(lv, s17975c1f1, ABISELECT(16,8), "S17975C1.s17975c1f1");
  }
}
static Arrange_To_Call_Me vS17975C1(Test_S17975C1, "S17975C1", ABISELECT(40,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17193C1  {
  int s17193c1f0[3];
  ::S4228C44 s17193c1f1;
  void *s17193c1f2[3];
  void  mf17193c1(); // _ZN8S17193C19mf17193c1Ev
};
//SIG(1 S17193C1) C1{ m Fi[3] FC2{ m Fp Fi[2] FC3{ m}} Fp[3]}


void  S17193C1 ::mf17193c1(){}

static void Test_S17193C1()
{
  {
    init_simple_test("S17193C1");
    S17193C1 lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S17193C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17193C1)");
    check_field_offset(lv, s17193c1f0, 0, "S17193C1.s17193c1f0");
    check_field_offset(lv, s17193c1f1, ABISELECT(16,12), "S17193C1.s17193c1f1");
    check_field_offset(lv, s17193c1f2, ABISELECT(40,28), "S17193C1.s17193c1f2");
  }
}
static Arrange_To_Call_Me vS17193C1(Test_S17193C1, "S17193C1", ABISELECT(64,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15801C1  {
  ::S10007C19 s15801c1f0;
  ::S10007C26_nt s15801c1f1;
  void  mf15801c1(); // _ZN8S15801C19mf15801c1Ev
};
//SIG(1 S15801C1) C1{ m FC2{ m FC3{ m FL[2]} FC3 FC3 FC3} FC4{ m FL[2]}}


void  S15801C1 ::mf15801c1(){}

static void Test_S15801C1()
{
  {
    init_simple_test("S15801C1");
    S15801C1 lv;
    check2(sizeof(lv), 80, "sizeof(S15801C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15801C1)");
    check_field_offset(lv, s15801c1f0, 0, "S15801C1.s15801c1f0");
    check_field_offset(lv, s15801c1f1, 64, "S15801C1.s15801c1f1");
  }
}
static Arrange_To_Call_Me vS15801C1(Test_S15801C1, "S15801C1", 80);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17817C1  {
  void *s17817c1f0;
  int s17817c1f1[4];
  void *s17817c1f2[5];
  char s17817c1f3;
  int s17817c1f4;
  void *s17817c1f5;
  int s17817c1f6[2];
  void *s17817c1f7;
  void  mf17817c1(); // _ZN8S17817C19mf17817c1Ev
};
//SIG(1 S17817C1) C1{ m Fp Fi[4] Fp[5] Fc Fi Fp Fi[2] Fp}


void  S17817C1 ::mf17817c1(){}

static void Test_S17817C1()
{
  {
    init_simple_test("S17817C1");
    S17817C1 lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S17817C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17817C1)");
    check_field_offset(lv, s17817c1f0, 0, "S17817C1.s17817c1f0");
    check_field_offset(lv, s17817c1f1, ABISELECT(8,4), "S17817C1.s17817c1f1");
    check_field_offset(lv, s17817c1f2, ABISELECT(24,20), "S17817C1.s17817c1f2");
    check_field_offset(lv, s17817c1f3, ABISELECT(64,40), "S17817C1.s17817c1f3");
    check_field_offset(lv, s17817c1f4, ABISELECT(68,44), "S17817C1.s17817c1f4");
    check_field_offset(lv, s17817c1f5, ABISELECT(72,48), "S17817C1.s17817c1f5");
    check_field_offset(lv, s17817c1f6, ABISELECT(80,52), "S17817C1.s17817c1f6");
    check_field_offset(lv, s17817c1f7, ABISELECT(88,60), "S17817C1.s17817c1f7");
  }
}
static Arrange_To_Call_Me vS17817C1(Test_S17817C1, "S17817C1", ABISELECT(96,64));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11746C1  {
  ::S11747C2_nt s11746c1f0;
  ::S11747C4 s11746c1f1;
  void *s11746c1f2[2];
  long s11746c1f3;
  __tsi64 s11746c1f4[2];
};
//SIG(1 S11746C1) C1{ FC2{ FL[3]} FC3{ Fl Fp} Fp[2] Fl FL[2]}



static void Test_S11746C1()
{
  {
    init_simple_test("S11746C1");
    S11746C1 lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S11746C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11746C1)");
    check_field_offset(lv, s11746c1f0, 0, "S11746C1.s11746c1f0");
    check_field_offset(lv, s11746c1f1, 24, "S11746C1.s11746c1f1");
    check_field_offset(lv, s11746c1f2, ABISELECT(40,32), "S11746C1.s11746c1f2");
    check_field_offset(lv, s11746c1f3, ABISELECT(56,40), "S11746C1.s11746c1f3");
    check_field_offset(lv, s11746c1f4, ABISELECT(64,44), "S11746C1.s11746c1f4");
  }
}
static Arrange_To_Call_Me vS11746C1(Test_S11746C1, "S11746C1", ABISELECT(80,60));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15332C1  {
  ::S3423C17 s15332c1f0;
  ::S3423C17 s15332c1f1;
  void *s15332c1f2;
  void  mf15332c1(); // _ZN8S15332C19mf15332c1Ev
};
//SIG(1 S15332C1) C1{ m FC2{ BC3{ BC4{ m Fp Fi[2]}}} FC2 Fp}


void  S15332C1 ::mf15332c1(){}

static void Test_S15332C1()
{
  {
    init_simple_test("S15332C1");
    S15332C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S15332C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15332C1)");
    check_field_offset(lv, s15332c1f0, 0, "S15332C1.s15332c1f0");
    check_field_offset(lv, s15332c1f1, ABISELECT(16,12), "S15332C1.s15332c1f1");
    check_field_offset(lv, s15332c1f2, ABISELECT(32,24), "S15332C1.s15332c1f2");
  }
}
static Arrange_To_Call_Me vS15332C1(Test_S15332C1, "S15332C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11618C2_nt  {
  int s11618c2f0[3];
};
//SIG(-1 S11618C2_nt) C1{ Fi[3]}



//skip512 S11618C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11618C1  {
  ::S11618C2_nt s11618c1f0;
  ::S11618C2_nt s11618c1f1;
  ::S11618C2_nt s11618c1f2;
  int s11618c1f3[3];
  long s11618c1f4;
  char s11618c1f5[8];
};
//SIG(1 S11618C1) C1{ FC2{ Fi[3]} FC2 FC2 Fi[3] Fl Fc[8]}



static void Test_S11618C1()
{
  {
    init_simple_test("S11618C1");
    S11618C1 lv;
    check2(sizeof(lv), ABISELECT(64,60), "sizeof(S11618C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11618C1)");
    check_field_offset(lv, s11618c1f0, 0, "S11618C1.s11618c1f0");
    check_field_offset(lv, s11618c1f1, 12, "S11618C1.s11618c1f1");
    check_field_offset(lv, s11618c1f2, 24, "S11618C1.s11618c1f2");
    check_field_offset(lv, s11618c1f3, 36, "S11618C1.s11618c1f3");
    check_field_offset(lv, s11618c1f4, 48, "S11618C1.s11618c1f4");
    check_field_offset(lv, s11618c1f5, ABISELECT(56,52), "S11618C1.s11618c1f5");
  }
}
static Arrange_To_Call_Me vS11618C1(Test_S11618C1, "S11618C1", ABISELECT(64,60));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14012C1  {
  __tsi64 s14012c1f0[4];
  long s14012c1f1[4];
  __tsi64 s14012c1f2;
  long s14012c1f3[4];
  __tsi64 s14012c1f4[3];
  void *s14012c1f5[2];
};
//SIG(1 S14012C1) C1{ FL[4] Fl[4] FL Fl[4] FL[3] Fp[2]}



static void Test_S14012C1()
{
  {
    init_simple_test("S14012C1");
    S14012C1 lv;
    check2(sizeof(lv), ABISELECT(144,104), "sizeof(S14012C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14012C1)");
    check_field_offset(lv, s14012c1f0, 0, "S14012C1.s14012c1f0");
    check_field_offset(lv, s14012c1f1, 32, "S14012C1.s14012c1f1");
    check_field_offset(lv, s14012c1f2, ABISELECT(64,48), "S14012C1.s14012c1f2");
    check_field_offset(lv, s14012c1f3, ABISELECT(72,56), "S14012C1.s14012c1f3");
    check_field_offset(lv, s14012c1f4, ABISELECT(104,72), "S14012C1.s14012c1f4");
    check_field_offset(lv, s14012c1f5, ABISELECT(128,96), "S14012C1.s14012c1f5");
  }
}
static Arrange_To_Call_Me vS14012C1(Test_S14012C1, "S14012C1", ABISELECT(144,104));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13061C1  {
  int s13061c1f0[2];
  ::S3423C18 s13061c1f1;
  void *s13061c1f2;
  int s13061c1f3;
};
//SIG(1 S13061C1) C1{ Fi[2] FC2{ BC3{ m Fp Fi[2]}} Fp Fi}



static void Test_S13061C1()
{
  {
    init_simple_test("S13061C1");
    S13061C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S13061C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13061C1)");
    check_field_offset(lv, s13061c1f0, 0, "S13061C1.s13061c1f0");
    check_field_offset(lv, s13061c1f1, 8, "S13061C1.s13061c1f1");
    check_field_offset(lv, s13061c1f2, ABISELECT(24,20), "S13061C1.s13061c1f2");
    check_field_offset(lv, s13061c1f3, ABISELECT(32,24), "S13061C1.s13061c1f3");
  }
}
static Arrange_To_Call_Me vS13061C1(Test_S13061C1, "S13061C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7756C3  : virtual S4228C37 , S4228C27 {
  ~S7756C3(); // tgen
  S7756C3(); // tgen
};
//SIG(-1 S7756C3) C1{ VBC2{ m} BC3{ m}}


S7756C3 ::~S7756C3(){ note_dtor("S7756C3", this);} // tgen
S7756C3 ::S7756C3(){ note_ctor("S7756C3", this);} // tgen

static void Test_S7756C3()
{
  extern Class_Descriptor cd_S7756C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7756C3, buf);
    S7756C3 *dp, &lv = *(dp=new (buf) S7756C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7756C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7756C3)");
    check_base_class_offset(lv, (S4228C37*), 0, "S7756C3");
    check_base_class_offset(lv, (S4228C27*), 0, "S7756C3");
    test_class_info(&lv, &cd_S7756C3);
    dp->~S7756C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7756C3(Test_S7756C3, "S7756C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7756C3C1Ev();
extern void _ZN7S7756C3D1Ev();
Name_Map name_map_S7756C3[] = {
  NSPAIR(_ZN7S7756C3C1Ev),
  NSPAIR(_ZN7S7756C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7756C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7756C3[];
static  VTBL_ENTRY vtc_S7756C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7756C3[0]),
};
extern VTBL_ENTRY _ZTV7S7756C3[];
static  VTT_ENTRY vtt_S7756C3[] = {
  {&(_ZTV7S7756C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7756C3[];
extern  VTBL_ENTRY _ZTV7S7756C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7756C3[];
Class_Descriptor cd_S7756C3 = {  "S7756C3", // class name
  bases_S7756C3, 2,
  &(vtc_S7756C3[0]), // expected_vtbl_contents
  &(vtt_S7756C3[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7756C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7756C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7756C3),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7756C2  : virtual S7756C3 {
  virtual  ~S7756C2(); // _ZN7S7756C2D2Ev
  S7756C2(); // tgen
};
//SIG(-1 S7756C2) C1{ VBC2{ VBC3{ m} BC4{ m}} vd}


 S7756C2 ::~S7756C2(){ note_dtor("S7756C2", this);}
S7756C2 ::S7756C2(){ note_ctor("S7756C2", this);} // tgen

static void Test_S7756C2()
{
  extern Class_Descriptor cd_S7756C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7756C2, buf);
    S7756C2 *dp, &lv = *(dp=new (buf) S7756C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7756C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7756C2)");
    check_base_class_offset(lv, (S4228C37*)(S7756C3*), 0, "S7756C2");
    check_base_class_offset(lv, (S4228C27*)(S7756C3*), 0, "S7756C2");
    check_base_class_offset(lv, (S7756C3*), 0, "S7756C2");
    test_class_info(&lv, &cd_S7756C2);
    dp->~S7756C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7756C2(Test_S7756C2, "S7756C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7756C2C1Ev();
extern void _ZN7S7756C2D2Ev();
Name_Map name_map_S7756C2[] = {
  NSPAIR(_ZN7S7756C2C1Ev),
  NSPAIR(_ZN7S7756C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7756C3;
extern VTBL_ENTRY _ZTI7S7756C3[];
extern  VTBL_ENTRY _ZTV7S7756C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7756C3[];
static Base_Class bases_S7756C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7756C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7756C2[];
extern void _ZN7S7756C2D1Ev();
extern void _ZN7S7756C2D0Ev();
static  VTBL_ENTRY vtc_S7756C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7756C2[0]),
  (VTBL_ENTRY)&_ZN7S7756C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7756C2D0Ev,
};
extern VTBL_ENTRY _ZTV7S7756C2[];
static  VTBL_ENTRY _tg__ZTV7S7756C3__7S7756C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7756C3[0]),
};
static  VTT_ENTRY vtt_S7756C2[] = {
  {&(_ZTV7S7756C2[4]),  4,6},
  {&(_ZTV7S7756C2[4]),  4,6},
  {&(_tg__ZTV7S7756C3__7S7756C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7756C2[];
extern  VTBL_ENTRY _ZTV7S7756C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7756C2[];
Class_Descriptor cd_S7756C2 = {  "S7756C2", // class name
  bases_S7756C2, 3,
  &(vtc_S7756C2[0]), // expected_vtbl_contents
  &(vtt_S7756C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7756C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7756C2),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7756C2),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7756C1  : S7756C2 {
  int s7756c1f0;
  virtual  ~S7756C1(); // _ZN7S7756C1D2Ev
  S7756C1(); // tgen
};
//SIG(1 S7756C1) C1{ BC2{ VBC3{ VBC4{ m} BC5{ m}} vd} vd Fi}


 S7756C1 ::~S7756C1(){ note_dtor("S7756C1", this);}
S7756C1 ::S7756C1(){ note_ctor("S7756C1", this);} // tgen

static void Test_S7756C1()
{
  extern Class_Descriptor cd_S7756C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7756C1, buf);
    S7756C1 *dp, &lv = *(dp=new (buf) S7756C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7756C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7756C1)");
    check_base_class_offset(lv, (S4228C37*)(S7756C3*), 0, "S7756C1");
    check_base_class_offset(lv, (S4228C27*)(S7756C3*), 0, "S7756C1");
    check_base_class_offset(lv, (S7756C3*)(S7756C2*), 0, "S7756C1");
    check_base_class_offset(lv, (S7756C2*), 0, "S7756C1");
    check_field_offset(lv, s7756c1f0, ABISELECT(8,4), "S7756C1.s7756c1f0");
    test_class_info(&lv, &cd_S7756C1);
    dp->~S7756C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7756C1(Test_S7756C1, "S7756C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7756C1C1Ev();
extern void _ZN7S7756C1D2Ev();
Name_Map name_map_S7756C1[] = {
  NSPAIR(_ZN7S7756C1C1Ev),
  NSPAIR(_ZN7S7756C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7756C3;
extern VTBL_ENTRY _ZTI7S7756C3[];
extern  VTBL_ENTRY _ZTV7S7756C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7756C3[];
extern Class_Descriptor cd_S7756C2;
extern VTBL_ENTRY _ZTI7S7756C2[];
extern  VTBL_ENTRY _ZTV7S7756C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7756C2[];
static Base_Class bases_S7756C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7756C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7756C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7756C1[];
extern void _ZN7S7756C1D1Ev();
extern void _ZN7S7756C1D0Ev();
static  VTBL_ENTRY vtc_S7756C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7756C1[0]),
  (VTBL_ENTRY)&_ZN7S7756C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7756C1D0Ev,
};
extern VTBL_ENTRY _ZTV7S7756C1[];
extern void _ZN7S7756C2D1Ev();
extern void _ZN7S7756C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7756C2__7S7756C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7756C2[0]),
  (VTBL_ENTRY)&_ZN7S7756C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7756C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7756C3__7S7756C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7756C3[0]),
};
static  VTT_ENTRY vtt_S7756C1[] = {
  {&(_ZTV7S7756C1[4]),  4,6},
  {&(_tg__ZTV7S7756C2__7S7756C1[4]),  4,6},
  {&(_tg__ZTV7S7756C2__7S7756C1[4]),  4,6},
  {&(_ZTV7S7756C1[4]),  4,6},
  {&(_tg__ZTV7S7756C3__7S7756C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7756C1[];
extern  VTBL_ENTRY _ZTV7S7756C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7756C1[];
Class_Descriptor cd_S7756C1 = {  "S7756C1", // class name
  bases_S7756C1, 4,
  &(vtc_S7756C1[0]), // expected_vtbl_contents
  &(vtt_S7756C1[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7756C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7756C1),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7756C1),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18073C1  {
  void *s18073c1f0[2];
  int s18073c1f1;
  ::S4228C19_nt s18073c1f2;
  void  mf18073c1(); // _ZN8S18073C19mf18073c1Ev
};
//SIG(1 S18073C1) C1{ m Fp[2] Fi FC2{ m Fp Fi FC3{ m}}}


void  S18073C1 ::mf18073c1(){}

static void Test_S18073C1()
{
  {
    init_simple_test("S18073C1");
    S18073C1 lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S18073C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18073C1)");
    check_field_offset(lv, s18073c1f0, 0, "S18073C1.s18073c1f0");
    check_field_offset(lv, s18073c1f1, ABISELECT(16,8), "S18073C1.s18073c1f1");
    check_field_offset(lv, s18073c1f2, ABISELECT(24,12), "S18073C1.s18073c1f2");
  }
}
static Arrange_To_Call_Me vS18073C1(Test_S18073C1, "S18073C1", ABISELECT(40,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S967C4  {
  int s967c4f0[4];
  void *s967c4f1;
  void  mf967c4(); // _ZN6S967C47mf967c4Ev
};
//SIG(-1 S967C4) C1{ m Fi[4] Fp}


void  S967C4 ::mf967c4(){}

static void Test_S967C4()
{
  {
    init_simple_test("S967C4");
    S967C4 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S967C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S967C4)");
    check_field_offset(lv, s967c4f0, 0, "S967C4.s967c4f0");
    check_field_offset(lv, s967c4f1, 16, "S967C4.s967c4f1");
  }
}
static Arrange_To_Call_Me vS967C4(Test_S967C4, "S967C4", ABISELECT(24,20));

#else // __cplusplus

Class_Descriptor cd_S967C4 = {  "S967C4", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(24,20), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S967C3  : S967C4 {
  void *s967c3f0[2];
};
//SIG(-1 S967C3) C1{ BC2{ m Fi[4] Fp} Fp[2]}



static void Test_S967C3()
{
  extern Class_Descriptor cd_S967C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S967C3, buf);
    S967C3 &lv = *(new (buf) S967C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S967C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S967C3)");
    check_base_class_offset(lv, (S967C4*), 0, "S967C3");
    check_field_offset(lv, s967c3f0, ABISELECT(24,20), "S967C3.s967c3f0");
    test_class_info(&lv, &cd_S967C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS967C3(Test_S967C3, "S967C3", ABISELECT(40,28));

#else // __cplusplus

extern Class_Descriptor cd_S967C4;
static Base_Class bases_S967C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S967C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S967C3 = {  "S967C3", // class name
  bases_S967C3, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,28), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S967C2  : S967C3 {
};
//SIG(-1 S967C2) C1{ BC2{ BC3{ m Fi[4] Fp} Fp[2]}}



static void Test_S967C2()
{
  extern Class_Descriptor cd_S967C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S967C2, buf);
    S967C2 &lv = *(new (buf) S967C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S967C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S967C2)");
    check_base_class_offset(lv, (S967C4*)(S967C3*), 0, "S967C2");
    check_base_class_offset(lv, (S967C3*), 0, "S967C2");
    test_class_info(&lv, &cd_S967C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS967C2(Test_S967C2, "S967C2", ABISELECT(40,28));

#else // __cplusplus

extern Class_Descriptor cd_S967C4;
extern Class_Descriptor cd_S967C3;
static Base_Class bases_S967C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S967C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S967C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S967C2 = {  "S967C2", // class name
  bases_S967C2, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,28), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S967C1  : S967C2 {
};
//SIG(1 S967C1) C1{ BC2{ BC3{ BC4{ m Fi[4] Fp} Fp[2]}}}



static void Test_S967C1()
{
  extern Class_Descriptor cd_S967C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S967C1, buf);
    S967C1 &lv = *(new (buf) S967C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S967C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S967C1)");
    check_base_class_offset(lv, (S967C4*)(S967C3*)(S967C2*), 0, "S967C1");
    check_base_class_offset(lv, (S967C3*)(S967C2*), 0, "S967C1");
    check_base_class_offset(lv, (S967C2*), 0, "S967C1");
    test_class_info(&lv, &cd_S967C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS967C1(Test_S967C1, "S967C1", ABISELECT(40,28));

#else // __cplusplus

extern Class_Descriptor cd_S967C4;
extern Class_Descriptor cd_S967C3;
extern Class_Descriptor cd_S967C2;
static Base_Class bases_S967C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S967C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S967C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S967C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S967C1 = {  "S967C1", // class name
  bases_S967C1, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,28), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10547C1  {
  char s10547c1f0:8;
  char s10547c1f1:4;
  char s10547c1f2:2;
  unsigned char s10547c1f3:1;
  unsigned char s10547c1f4:1;
  char s10547c1f5:8;
};
//SIG(1 S10547C1) C1{ Fc:8 Fc:4 Fc:2 Fc:1 Fc:1 Fc:8}



static void Test_S10547C1()
{
  {
    init_simple_test("S10547C1");
    static S10547C1 lv;
    check2(sizeof(lv), 3, "sizeof(S10547C1)");
    check2(__alignof__(lv), 1, "__alignof__(S10547C1)");
    set_bf_and_test(lv, s10547c1f0, 0, 0, 8, 1, "S10547C1");
    set_bf_and_test(lv, s10547c1f0, 0, 0, 8, hide_sll(1LL<<7), "S10547C1");
    set_bf_and_test(lv, s10547c1f1, 1, 0, 4, 1, "S10547C1");
    set_bf_and_test(lv, s10547c1f1, 1, 0, 4, hide_sll(1LL<<3), "S10547C1");
    set_bf_and_test(lv, s10547c1f2, 1, 4, 2, 1, "S10547C1");
    set_bf_and_test(lv, s10547c1f2, 1, 4, 2, hide_sll(1LL<<1), "S10547C1");
    set_bf_and_test(lv, s10547c1f3, 1, 6, 1, 1, "S10547C1");
    set_bf_and_test(lv, s10547c1f4, 1, 7, 1, 1, "S10547C1");
    set_bf_and_test(lv, s10547c1f5, 2, 0, 8, 1, "S10547C1");
    set_bf_and_test(lv, s10547c1f5, 2, 0, 8, hide_sll(1LL<<7), "S10547C1");
  }
}
static Arrange_To_Call_Me vS10547C1(Test_S10547C1, "S10547C1", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S22035C1  {
  void *s22035c1f0;
  int s22035c1f1;
  void *s22035c1f2;
  virtual  ~S22035C1(); // _ZN8S22035C1D1Ev
  virtual void  v1(); // _ZN8S22035C12v1Ev
  virtual void  v2(); // _ZN8S22035C12v2Ev
  virtual void  v3(); // _ZN8S22035C12v3Ev
  virtual void  v4(); // _ZN8S22035C12v4Ev
  virtual void  v5(); // _ZN8S22035C12v5Ev
  virtual void  v6(); // _ZN8S22035C12v6Ev
  S22035C1(); // tgen
};
//SIG(1 S22035C1) C1{ vd v1 v2 v3 v4 v5 v6 Fp Fi Fp}


 S22035C1 ::~S22035C1(){ note_dtor("S22035C1", this);}
void  S22035C1 ::v1(){vfunc_called(this, "_ZN8S22035C12v1Ev");}
void  S22035C1 ::v2(){vfunc_called(this, "_ZN8S22035C12v2Ev");}
void  S22035C1 ::v3(){vfunc_called(this, "_ZN8S22035C12v3Ev");}
void  S22035C1 ::v4(){vfunc_called(this, "_ZN8S22035C12v4Ev");}
void  S22035C1 ::v5(){vfunc_called(this, "_ZN8S22035C12v5Ev");}
void  S22035C1 ::v6(){vfunc_called(this, "_ZN8S22035C12v6Ev");}
S22035C1 ::S22035C1(){ note_ctor("S22035C1", this);} // tgen

static void Test_S22035C1()
{
  extern Class_Descriptor cd_S22035C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S22035C1, buf);
    S22035C1 *dp, &lv = *(dp=new (buf) S22035C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S22035C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S22035C1)");
    check_field_offset(lv, s22035c1f0, ABISELECT(8,4), "S22035C1.s22035c1f0");
    check_field_offset(lv, s22035c1f1, ABISELECT(16,8), "S22035C1.s22035c1f1");
    check_field_offset(lv, s22035c1f2, ABISELECT(24,12), "S22035C1.s22035c1f2");
    test_class_info(&lv, &cd_S22035C1);
    dp->~S22035C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS22035C1(Test_S22035C1, "S22035C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S22035C1C1Ev();
extern void _ZN8S22035C1D1Ev();
Name_Map name_map_S22035C1[] = {
  NSPAIR(_ZN8S22035C1C1Ev),
  NSPAIR(_ZN8S22035C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S22035C1[];
extern void _ZN8S22035C1D1Ev();
extern void _ZN8S22035C1D0Ev();
extern void _ZN8S22035C12v1Ev();
extern void _ZN8S22035C12v2Ev();
extern void _ZN8S22035C12v3Ev();
extern void _ZN8S22035C12v4Ev();
extern void _ZN8S22035C12v5Ev();
extern void _ZN8S22035C12v6Ev();
static  VTBL_ENTRY vtc_S22035C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S22035C1[0]),
  (VTBL_ENTRY)&_ZN8S22035C1D1Ev,
  (VTBL_ENTRY)&_ZN8S22035C1D0Ev,
  (VTBL_ENTRY)&_ZN8S22035C12v1Ev,
  (VTBL_ENTRY)&_ZN8S22035C12v2Ev,
  (VTBL_ENTRY)&_ZN8S22035C12v3Ev,
  (VTBL_ENTRY)&_ZN8S22035C12v4Ev,
  (VTBL_ENTRY)&_ZN8S22035C12v5Ev,
  (VTBL_ENTRY)&_ZN8S22035C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S22035C1[];
extern  VTBL_ENTRY _ZTV8S22035C1[];
Class_Descriptor cd_S22035C1 = {  "S22035C1", // class name
  0,0,//no base classes
  &(vtc_S22035C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S22035C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S22035C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18806C1  {
  void *s18806c1f0;
  int s18806c1f1:2;
  virtual void  v1(); // _ZN8S18806C12v1Ev
  virtual void  v2(); // _ZN8S18806C12v2Ev
  virtual void  v3(); // _ZN8S18806C12v3Ev
  virtual void  v4(); // _ZN8S18806C12v4Ev
  virtual void  v5(); // _ZN8S18806C12v5Ev
  virtual void  v6(); // _ZN8S18806C12v6Ev
  virtual void  v7(); // _ZN8S18806C12v7Ev
  ~S18806C1(); // tgen
  S18806C1(); // tgen
};
//SIG(1 S18806C1) C1{ v1 v2 v3 v4 v5 v6 v7 Fp Fi:2}


void  S18806C1 ::v1(){vfunc_called(this, "_ZN8S18806C12v1Ev");}
void  S18806C1 ::v2(){vfunc_called(this, "_ZN8S18806C12v2Ev");}
void  S18806C1 ::v3(){vfunc_called(this, "_ZN8S18806C12v3Ev");}
void  S18806C1 ::v4(){vfunc_called(this, "_ZN8S18806C12v4Ev");}
void  S18806C1 ::v5(){vfunc_called(this, "_ZN8S18806C12v5Ev");}
void  S18806C1 ::v6(){vfunc_called(this, "_ZN8S18806C12v6Ev");}
void  S18806C1 ::v7(){vfunc_called(this, "_ZN8S18806C12v7Ev");}
S18806C1 ::~S18806C1(){ note_dtor("S18806C1", this);} // tgen
S18806C1 ::S18806C1(){ note_ctor("S18806C1", this);} // tgen

static void Test_S18806C1()
{
  extern Class_Descriptor cd_S18806C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S18806C1, buf);
    S18806C1 *dp, &lv = *(dp=new (buf) S18806C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S18806C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18806C1)");
    check_field_offset(lv, s18806c1f0, ABISELECT(8,4), "S18806C1.s18806c1f0");
    set_bf_and_test(lv, s18806c1f1, ABISELECT(16,8), 0, 2, 1, "S18806C1");
    set_bf_and_test(lv, s18806c1f1, ABISELECT(16,8), 0, 2, hide_sll(1LL<<1), "S18806C1");
    test_class_info(&lv, &cd_S18806C1);
    dp->~S18806C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18806C1(Test_S18806C1, "S18806C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S18806C1C1Ev();
extern void _ZN8S18806C1D1Ev();
Name_Map name_map_S18806C1[] = {
  NSPAIR(_ZN8S18806C1C1Ev),
  NSPAIR(_ZN8S18806C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18806C1[];
extern void _ZN8S18806C12v1Ev();
extern void _ZN8S18806C12v2Ev();
extern void _ZN8S18806C12v3Ev();
extern void _ZN8S18806C12v4Ev();
extern void _ZN8S18806C12v5Ev();
extern void _ZN8S18806C12v6Ev();
extern void _ZN8S18806C12v7Ev();
static  VTBL_ENTRY vtc_S18806C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18806C1[0]),
  (VTBL_ENTRY)&_ZN8S18806C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18806C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18806C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18806C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18806C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18806C12v6Ev,
  (VTBL_ENTRY)&_ZN8S18806C12v7Ev,
};
extern VTBL_ENTRY _ZTI8S18806C1[];
extern  VTBL_ENTRY _ZTV8S18806C1[];
Class_Descriptor cd_S18806C1 = {  "S18806C1", // class name
  0,0,//no base classes
  &(vtc_S18806C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S18806C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18806C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11667C2_nt  {
  int s11667c2f0;
};
//SIG(-1 S11667C2_nt) C1{ Fi}



//skip512 S11667C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11667C1  {
  ::S11667C2_nt s11667c1f0;
  char s11667c1f1[16];
  long s11667c1f2[101];
  __tsi64 s11667c1f3[3];
};
//SIG(1 S11667C1) C1{ FC2{ Fi} Fc[16] Fl[101] FL[3]}



static void Test_S11667C1()
{
  {
    init_simple_test("S11667C1");
    S11667C1 lv;
    check2(sizeof(lv), ABISELECT(856,448), "sizeof(S11667C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11667C1)");
    check_field_offset(lv, s11667c1f0, 0, "S11667C1.s11667c1f0");
    check_field_offset(lv, s11667c1f1, 4, "S11667C1.s11667c1f1");
    check_field_offset(lv, s11667c1f2, ABISELECT(24,20), "S11667C1.s11667c1f2");
    check_field_offset(lv, s11667c1f3, ABISELECT(832,424), "S11667C1.s11667c1f3");
  }
}
static Arrange_To_Call_Me vS11667C1(Test_S11667C1, "S11667C1", ABISELECT(856,448));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17229C1  {
  int s17229c1f0[4];
  ::S4228C19_nt s17229c1f1;
  void  mf17229c1(); // _ZN8S17229C19mf17229c1Ev
};
//SIG(1 S17229C1) C1{ m Fi[4] FC2{ m Fp Fi FC3{ m}}}


void  S17229C1 ::mf17229c1(){}

static void Test_S17229C1()
{
  {
    init_simple_test("S17229C1");
    S17229C1 lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S17229C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17229C1)");
    check_field_offset(lv, s17229c1f0, 0, "S17229C1.s17229c1f0");
    check_field_offset(lv, s17229c1f1, 16, "S17229C1.s17229c1f1");
  }
}
static Arrange_To_Call_Me vS17229C1(Test_S17229C1, "S17229C1", ABISELECT(32,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5924C1  : S9946C3 {
  ::S4161C4_nt s5924c1f0;
  virtual  ~S5924C1(); // _ZN7S5924C1D1Ev
  S5924C1(); // tgen
};
//SIG(1 S5924C1) C1{ BC2{ m FL[2] Fl} vd FC3{ m Fp}}


 S5924C1 ::~S5924C1(){ note_dtor("S5924C1", this);}
S5924C1 ::S5924C1(){ note_ctor("S5924C1", this);} // tgen

static void Test_S5924C1()
{
  extern Class_Descriptor cd_S5924C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S5924C1, buf);
    S5924C1 *dp, &lv = *(dp=new (buf) S5924C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S5924C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5924C1)");
    check_base_class_offset(lv, (S9946C3*), ABISELECT(8,4), "S5924C1");
    check_field_offset(lv, s5924c1f0, ABISELECT(32,24), "S5924C1.s5924c1f0");
    test_class_info(&lv, &cd_S5924C1);
    dp->~S5924C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5924C1(Test_S5924C1, "S5924C1", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S5924C1C1Ev();
extern void _ZN7S5924C1D1Ev();
Name_Map name_map_S5924C1[] = {
  NSPAIR(_ZN7S5924C1C1Ev),
  NSPAIR(_ZN7S5924C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9946C3;
extern VTBL_ENTRY _ZTI7S9946C3[];
static Base_Class bases_S5924C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9946C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5924C1[];
extern void _ZN7S5924C1D1Ev();
extern void _ZN7S5924C1D0Ev();
static  VTBL_ENTRY vtc_S5924C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5924C1[0]),
  (VTBL_ENTRY)&_ZN7S5924C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5924C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S5924C1[];
extern  VTBL_ENTRY _ZTV7S5924C1[];
Class_Descriptor cd_S5924C1 = {  "S5924C1", // class name
  bases_S5924C1, 1,
  &(vtc_S5924C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S5924C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S5924C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13290C1  {
  int s13290c1f0[3];
  char s13290c1f1;
  __tsi64 s13290c1f2;
  int s13290c1f3[5];
  char s13290c1f4[4];
  int s13290c1f5;
};
//SIG(1 S13290C1) C1{ Fi[3] Fc FL Fi[5] Fc[4] Fi}



static void Test_S13290C1()
{
  {
    init_simple_test("S13290C1");
    S13290C1 lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S13290C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13290C1)");
    check_field_offset(lv, s13290c1f0, 0, "S13290C1.s13290c1f0");
    check_field_offset(lv, s13290c1f1, 12, "S13290C1.s13290c1f1");
    check_field_offset(lv, s13290c1f2, 16, "S13290C1.s13290c1f2");
    check_field_offset(lv, s13290c1f3, 24, "S13290C1.s13290c1f3");
    check_field_offset(lv, s13290c1f4, 44, "S13290C1.s13290c1f4");
    check_field_offset(lv, s13290c1f5, 48, "S13290C1.s13290c1f5");
  }
}
static Arrange_To_Call_Me vS13290C1(Test_S13290C1, "S13290C1", ABISELECT(56,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5749C2  {
  int s5749c2f0;
  int s5749c2f1:4;
  int s5749c2f2;
  void  mf5749c2(); // _ZN7S5749C28mf5749c2Ev
};
//SIG(-1 S5749C2) C1{ m Fi Fi:4 Fi}


void  S5749C2 ::mf5749c2(){}

static void Test_S5749C2()
{
  {
    init_simple_test("S5749C2");
    static S5749C2 lv;
    check2(sizeof(lv), 12, "sizeof(S5749C2)");
    check2(__alignof__(lv), 4, "__alignof__(S5749C2)");
    check_field_offset(lv, s5749c2f0, 0, "S5749C2.s5749c2f0");
    set_bf_and_test(lv, s5749c2f1, 4, 0, 4, 1, "S5749C2");
    set_bf_and_test(lv, s5749c2f1, 4, 0, 4, hide_sll(1LL<<3), "S5749C2");
    check_field_offset(lv, s5749c2f2, 8, "S5749C2.s5749c2f2");
  }
}
static Arrange_To_Call_Me vS5749C2(Test_S5749C2, "S5749C2", 12);

#else // __cplusplus

Class_Descriptor cd_S5749C2 = {  "S5749C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  12, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5749C1  : S5749C2 {
  int s5749c1f0:5;
  int s5749c1f1:6;
};
//SIG(1 S5749C1) C1{ BC2{ m Fi Fi:4 Fi} Fi:5 Fi:6}



static void Test_S5749C1()
{
  extern Class_Descriptor cd_S5749C1;
  void *lvp;
  {
    int buf[5];
    init_test(&cd_S5749C1, buf);
    S5749C1 &lv = *(new (buf) S5749C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 16, "sizeof(S5749C1)");
    check2(__alignof__(lv), 4, "__alignof__(S5749C1)");
    check_base_class_offset(lv, (S5749C2*), 0, "S5749C1");
    set_bf_and_test(lv, s5749c1f0, 12, 0, 5, 1, "S5749C1");
    set_bf_and_test(lv, s5749c1f0, 12, 0, 5, hide_sll(1LL<<4), "S5749C1");
    set_bf_and_test(lv, s5749c1f1, 12, 5, 6, 1, "S5749C1");
    set_bf_and_test(lv, s5749c1f1, 12, 5, 6, hide_sll(1LL<<5), "S5749C1");
    test_class_info(&lv, &cd_S5749C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5749C1(Test_S5749C1, "S5749C1", 16);

#else // __cplusplus

extern Class_Descriptor cd_S5749C2;
static Base_Class bases_S5749C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5749C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S5749C1 = {  "S5749C1", // class name
  bases_S5749C1, 1,
  0, // no vftv
  0, //no vtt
  16, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18316C1  {
  void *s18316c1f0[3];
  int s18316c1f1;
  void *s18316c1f2[2];
  int s18316c1f3;
  void *s18316c1f4[4];
  void  mf18316c1(); // _ZN8S18316C19mf18316c1Ev
};
//SIG(1 S18316C1) C1{ m Fp[3] Fi Fp[2] Fi Fp[4]}


void  S18316C1 ::mf18316c1(){}

static void Test_S18316C1()
{
  {
    init_simple_test("S18316C1");
    S18316C1 lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S18316C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18316C1)");
    check_field_offset(lv, s18316c1f0, 0, "S18316C1.s18316c1f0");
    check_field_offset(lv, s18316c1f1, ABISELECT(24,12), "S18316C1.s18316c1f1");
    check_field_offset(lv, s18316c1f2, ABISELECT(32,16), "S18316C1.s18316c1f2");
    check_field_offset(lv, s18316c1f3, ABISELECT(48,24), "S18316C1.s18316c1f3");
    check_field_offset(lv, s18316c1f4, ABISELECT(56,28), "S18316C1.s18316c1f4");
  }
}
static Arrange_To_Call_Me vS18316C1(Test_S18316C1, "S18316C1", ABISELECT(88,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20041C2  {
  short s20041c2f0;
  int s20041c2f1;
  virtual void  v2(); // _ZN8S20041C22v2Ev
  virtual void  v3(); // _ZN8S20041C22v3Ev
  virtual void  v4(); // _ZN8S20041C22v4Ev
  ~S20041C2(); // tgen
  S20041C2(); // tgen
};
//SIG(-1 S20041C2) C1{ v1 v2 v3 Fs Fi}


void  S20041C2 ::v2(){vfunc_called(this, "_ZN8S20041C22v2Ev");}
void  S20041C2 ::v3(){vfunc_called(this, "_ZN8S20041C22v3Ev");}
void  S20041C2 ::v4(){vfunc_called(this, "_ZN8S20041C22v4Ev");}
S20041C2 ::~S20041C2(){ note_dtor("S20041C2", this);} // tgen
S20041C2 ::S20041C2(){ note_ctor("S20041C2", this);} // tgen

static void Test_S20041C2()
{
  extern Class_Descriptor cd_S20041C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20041C2, buf);
    S20041C2 *dp, &lv = *(dp=new (buf) S20041C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20041C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20041C2)");
    check_field_offset(lv, s20041c2f0, ABISELECT(8,4), "S20041C2.s20041c2f0");
    check_field_offset(lv, s20041c2f1, ABISELECT(12,8), "S20041C2.s20041c2f1");
    test_class_info(&lv, &cd_S20041C2);
    dp->~S20041C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20041C2(Test_S20041C2, "S20041C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20041C2C1Ev();
extern void _ZN8S20041C2D1Ev();
Name_Map name_map_S20041C2[] = {
  NSPAIR(_ZN8S20041C2C1Ev),
  NSPAIR(_ZN8S20041C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20041C2[];
extern void _ZN8S20041C22v2Ev();
extern void _ZN8S20041C22v3Ev();
extern void _ZN8S20041C22v4Ev();
static  VTBL_ENTRY vtc_S20041C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20041C2[0]),
  (VTBL_ENTRY)&_ZN8S20041C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20041C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20041C22v4Ev,
};
extern VTBL_ENTRY _ZTI8S20041C2[];
extern  VTBL_ENTRY _ZTV8S20041C2[];
Class_Descriptor cd_S20041C2 = {  "S20041C2", // class name
  0,0,//no base classes
  &(vtc_S20041C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20041C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20041C2),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20041C1  : virtual S20041C2 {
  void *s20041c1f0;
  virtual void  v1(); // _ZN8S20041C12v1Ev
  ~S20041C1(); // tgen
  S20041C1(); // tgen
};
//SIG(1 S20041C1) C1{ VBC2{ v2 v3 v4 Fs Fi} v1 Fp}


void  S20041C1 ::v1(){vfunc_called(this, "_ZN8S20041C12v1Ev");}
S20041C1 ::~S20041C1(){ note_dtor("S20041C1", this);} // tgen
S20041C1 ::S20041C1(){ note_ctor("S20041C1", this);} // tgen

static void Test_S20041C1()
{
  extern Class_Descriptor cd_S20041C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20041C1, buf);
    S20041C1 *dp, &lv = *(dp=new (buf) S20041C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20041C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20041C1)");
    check_base_class_offset(lv, (S20041C2*), ABISELECT(16,8), "S20041C1");
    check_field_offset(lv, s20041c1f0, ABISELECT(8,4), "S20041C1.s20041c1f0");
    test_class_info(&lv, &cd_S20041C1);
    dp->~S20041C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20041C1(Test_S20041C1, "S20041C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20041C1C1Ev();
extern void _ZN8S20041C1D1Ev();
Name_Map name_map_S20041C1[] = {
  NSPAIR(_ZN8S20041C1C1Ev),
  NSPAIR(_ZN8S20041C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20041C2;
extern VTBL_ENTRY _ZTI8S20041C2[];
extern  VTBL_ENTRY _ZTV8S20041C2[];
static Base_Class bases_S20041C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20041C2,    ABISELECT(16,8), //bcp->offset
    4, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20041C1[];
extern void _ZN8S20041C12v1Ev();
extern void _ZN8S20041C22v2Ev();
extern void _ZN8S20041C22v3Ev();
extern void _ZN8S20041C22v4Ev();
static  VTBL_ENTRY vtc_S20041C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20041C1[0]),
  (VTBL_ENTRY)&_ZN8S20041C12v1Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20041C1[0]),
  (VTBL_ENTRY)&_ZN8S20041C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20041C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20041C22v4Ev,
};
extern VTBL_ENTRY _ZTV8S20041C1[];
static  VTT_ENTRY vtt_S20041C1[] = {
  {&(_ZTV8S20041C1[3]),  3,12},
  {&(_ZTV8S20041C1[9]),  9,12},
};
extern VTBL_ENTRY _ZTI8S20041C1[];
extern  VTBL_ENTRY _ZTV8S20041C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20041C1[];
Class_Descriptor cd_S20041C1 = {  "S20041C1", // class name
  bases_S20041C1, 1,
  &(vtc_S20041C1[0]), // expected_vtbl_contents
  &(vtt_S20041C1[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20041C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20041C1),12, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20041C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21189C2  {
  int s21189c2f0;
  short s21189c2f1:16;
  __tsi64 s21189c2f2;
  void  mf21189c2(); // _ZN8S21189C29mf21189c2Ev
  virtual  ~S21189C2(); // _ZN8S21189C2D1Ev
  S21189C2(); // tgen
};
//SIG(-1 S21189C2) C1{ vd m Fi Fs:16 FL}


void  S21189C2 ::mf21189c2(){}
 S21189C2 ::~S21189C2(){ note_dtor("S21189C2", this);}
S21189C2 ::S21189C2(){ note_ctor("S21189C2", this);} // tgen

static void Test_S21189C2()
{
  extern Class_Descriptor cd_S21189C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S21189C2, buf);
    S21189C2 *dp, &lv = *(dp=new (buf) S21189C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S21189C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21189C2)");
    check_field_offset(lv, s21189c2f0, ABISELECT(8,4), "S21189C2.s21189c2f0");
    set_bf_and_test(lv, s21189c2f1, ABISELECT(12,8), 0, 16, 1, "S21189C2");
    set_bf_and_test(lv, s21189c2f1, ABISELECT(12,8), 0, 16, hide_sll(1LL<<15), "S21189C2");
    check_field_offset(lv, s21189c2f2, ABISELECT(16,12), "S21189C2.s21189c2f2");
    test_class_info(&lv, &cd_S21189C2);
    dp->~S21189C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21189C2(Test_S21189C2, "S21189C2", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S21189C2C1Ev();
extern void _ZN8S21189C2D1Ev();
Name_Map name_map_S21189C2[] = {
  NSPAIR(_ZN8S21189C2C1Ev),
  NSPAIR(_ZN8S21189C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21189C2[];
extern void _ZN8S21189C2D1Ev();
extern void _ZN8S21189C2D0Ev();
static  VTBL_ENTRY vtc_S21189C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21189C2[0]),
  (VTBL_ENTRY)&_ZN8S21189C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21189C2D0Ev,
};
extern VTBL_ENTRY _ZTI8S21189C2[];
extern  VTBL_ENTRY _ZTV8S21189C2[];
Class_Descriptor cd_S21189C2 = {  "S21189C2", // class name
  0,0,//no base classes
  &(vtc_S21189C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S21189C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21189C2),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21189C1  : virtual S21189C2 {
  virtual void  v1(); // _ZN8S21189C12v1Ev
  ~S21189C1(); // tgen
  S21189C1(); // tgen
};
//SIG(1 S21189C1) C1{ VBC2{ vd m Fi Fs:16 FL} v1}


void  S21189C1 ::v1(){vfunc_called(this, "_ZN8S21189C12v1Ev");}
S21189C1 ::~S21189C1(){ note_dtor("S21189C1", this);} // tgen
S21189C1 ::S21189C1(){ note_ctor("S21189C1", this);} // tgen

static void Test_S21189C1()
{
  extern Class_Descriptor cd_S21189C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S21189C1, buf);
    S21189C1 *dp, &lv = *(dp=new (buf) S21189C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S21189C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21189C1)");
    check_base_class_offset(lv, (S21189C2*), ABISELECT(8,4), "S21189C1");
    test_class_info(&lv, &cd_S21189C1);
    dp->~S21189C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21189C1(Test_S21189C1, "S21189C1", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S21189C1C1Ev();
extern void _ZN8S21189C1D1Ev();
Name_Map name_map_S21189C1[] = {
  NSPAIR(_ZN8S21189C1C1Ev),
  NSPAIR(_ZN8S21189C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21189C2;
extern VTBL_ENTRY _ZTI8S21189C2[];
extern  VTBL_ENTRY _ZTV8S21189C2[];
static Base_Class bases_S21189C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21189C2,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21189C1[];
extern void _ZN8S21189C12v1Ev();
extern void _ZN8S21189C1D1Ev();
extern void _ZN8S21189C1D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21189C1D1Ev,_ZTv0_n12_N8S21189C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S21189C1D1Ev,_ZThn4_N8S21189C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21189C1D0Ev,_ZTv0_n12_N8S21189C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S21189C1D0Ev,_ZThn4_N8S21189C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21189C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21189C1[0]),
  (VTBL_ENTRY)&_ZN8S21189C12v1Ev,
  (VTBL_ENTRY)&_ZN8S21189C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21189C1D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21189C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21189C1D1Ev,_ZTv0_n12_N8S21189C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21189C1D0Ev,_ZTv0_n12_N8S21189C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21189C1[];
static  VTT_ENTRY vtt_S21189C1[] = {
  {&(_ZTV8S21189C1[3]),  3,11},
  {&(_ZTV8S21189C1[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S21189C1[];
extern  VTBL_ENTRY _ZTV8S21189C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21189C1[];
static VTBL_ENTRY alt_thunk_names329[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21189C1D0Ev,_ZTv0_n12_N8S21189C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21189C1D0Ev,_ZThn4_N8S21189C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21189C1D1Ev,_ZTv0_n12_N8S21189C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21189C1D1Ev,_ZThn4_N8S21189C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21189C1 = {  "S21189C1", // class name
  bases_S21189C1, 1,
  &(vtc_S21189C1[0]), // expected_vtbl_contents
  &(vtt_S21189C1[0]), // expected_vtt_contents
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S21189C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21189C1),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21189C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names329,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6131C1  : S4228C37 , S20760C22_nt {
  ::S4228C27 s6131c1f0;
  virtual  ~S6131C1(); // _ZN7S6131C1D1Ev
  S6131C1(); // tgen
};
//SIG(1 S6131C1) C1{ BC2{ m} BC3{ vd m} vd FC4{ m}}


 S6131C1 ::~S6131C1(){ note_dtor("S6131C1", this);}
S6131C1 ::S6131C1(){ note_ctor("S6131C1", this);} // tgen

static void Test_S6131C1()
{
  extern Class_Descriptor cd_S6131C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6131C1, buf);
    S6131C1 *dp, &lv = *(dp=new (buf) S6131C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6131C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6131C1)");
    check_base_class_offset(lv, (S4228C37*), 0, "S6131C1");
    check_base_class_offset(lv, (S20760C22_nt*), 0, "S6131C1");
    check_field_offset(lv, s6131c1f0, ABISELECT(8,4), "S6131C1.s6131c1f0");
    test_class_info(&lv, &cd_S6131C1);
    dp->~S6131C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6131C1(Test_S6131C1, "S6131C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6131C1C1Ev();
extern void _ZN7S6131C1D1Ev();
Name_Map name_map_S6131C1[] = {
  NSPAIR(_ZN7S6131C1C1Ev),
  NSPAIR(_ZN7S6131C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
static Base_Class bases_S6131C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6131C1[];
extern void _ZN7S6131C1D1Ev();
extern void _ZN7S6131C1D0Ev();
static  VTBL_ENTRY vtc_S6131C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6131C1[0]),
  (VTBL_ENTRY)&_ZN7S6131C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6131C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S6131C1[];
extern  VTBL_ENTRY _ZTV7S6131C1[];
Class_Descriptor cd_S6131C1 = {  "S6131C1", // class name
  bases_S6131C1, 2,
  &(vtc_S6131C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6131C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6131C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13062C2  {
  char s13062c2f0;
  char s13062c2f1[127];
};
//SIG(-1 S13062C2) C1{ Fc[128]}



static void Test_S13062C2()
{
  {
    init_simple_test("S13062C2");
    S13062C2 lv;
    check2(sizeof(lv), 128, "sizeof(S13062C2)");
    check2(__alignof__(lv), 1, "__alignof__(S13062C2)");
    check_field_offset(lv, s13062c2f0, 0, "S13062C2.s13062c2f0");
    check_field_offset(lv, s13062c2f1, 1, "S13062C2.s13062c2f1");
  }
}
static Arrange_To_Call_Me vS13062C2(Test_S13062C2, "S13062C2", 128);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13062C1  {
  int s13062c1f0[2];
  ::S13062C2 s13062c1f1;
};
//SIG(1 S13062C1) C1{ Fi[2] FC2{ Fc[128]}}



static void Test_S13062C1()
{
  {
    init_simple_test("S13062C1");
    S13062C1 lv;
    check2(sizeof(lv), 136, "sizeof(S13062C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13062C1)");
    check_field_offset(lv, s13062c1f0, 0, "S13062C1.s13062c1f0");
    check_field_offset(lv, s13062c1f1, 8, "S13062C1.s13062c1f1");
  }
}
static Arrange_To_Call_Me vS13062C1(Test_S13062C1, "S13062C1", 136);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13976C1  {
  long s13976c1f0[3];
  int s13976c1f1;
  unsigned int s13976c1f2:1;
  int s13976c1f3:7;
  int s13976c1f4:8;
};
//SIG(1 S13976C1) C1{ Fl[3] Fi Fi:1 Fi:7 Fi:8}



static void Test_S13976C1()
{
  {
    init_simple_test("S13976C1");
    static S13976C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S13976C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13976C1)");
    check_field_offset(lv, s13976c1f0, 0, "S13976C1.s13976c1f0");
    check_field_offset(lv, s13976c1f1, ABISELECT(24,12), "S13976C1.s13976c1f1");
    set_bf_and_test(lv, s13976c1f2, ABISELECT(28,16), 0, 1, 1, "S13976C1");
    set_bf_and_test(lv, s13976c1f3, ABISELECT(28,16), 1, 7, 1, "S13976C1");
    set_bf_and_test(lv, s13976c1f3, ABISELECT(28,16), 1, 7, hide_sll(1LL<<6), "S13976C1");
    set_bf_and_test(lv, s13976c1f4, ABISELECT(29,17), 0, 8, 1, "S13976C1");
    set_bf_and_test(lv, s13976c1f4, ABISELECT(29,17), 0, 8, hide_sll(1LL<<7), "S13976C1");
  }
}
static Arrange_To_Call_Me vS13976C1(Test_S13976C1, "S13976C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15189C1  {
  char s15189c1f0[2];
  int s15189c1f1;
  char s15189c1f2;
  int s15189c1f3;
  char s15189c1f4;
  int s15189c1f5;
  void  mf15189c1(); // _ZN8S15189C19mf15189c1Ev
};
//SIG(1 S15189C1) C1{ m Fc[2] Fi Fc Fi Fc Fi}


void  S15189C1 ::mf15189c1(){}

static void Test_S15189C1()
{
  {
    init_simple_test("S15189C1");
    S15189C1 lv;
    check2(sizeof(lv), 24, "sizeof(S15189C1)");
    check2(__alignof__(lv), 4, "__alignof__(S15189C1)");
    check_field_offset(lv, s15189c1f0, 0, "S15189C1.s15189c1f0");
    check_field_offset(lv, s15189c1f1, 4, "S15189C1.s15189c1f1");
    check_field_offset(lv, s15189c1f2, 8, "S15189C1.s15189c1f2");
    check_field_offset(lv, s15189c1f3, 12, "S15189C1.s15189c1f3");
    check_field_offset(lv, s15189c1f4, 16, "S15189C1.s15189c1f4");
    check_field_offset(lv, s15189c1f5, 20, "S15189C1.s15189c1f5");
  }
}
static Arrange_To_Call_Me vS15189C1(Test_S15189C1, "S15189C1", 24);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13785C1  {
  long s13785c1f0;
  int s13785c1f1[3];
  short s13785c1f2[3];
  char s13785c1f3[230];
};
//SIG(1 S13785C1) C1{ Fl Fi[3] Fs[3] Fc[230]}



static void Test_S13785C1()
{
  {
    init_simple_test("S13785C1");
    S13785C1 lv;
    check2(sizeof(lv), ABISELECT(256,252), "sizeof(S13785C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13785C1)");
    check_field_offset(lv, s13785c1f0, 0, "S13785C1.s13785c1f0");
    check_field_offset(lv, s13785c1f1, ABISELECT(8,4), "S13785C1.s13785c1f1");
    check_field_offset(lv, s13785c1f2, ABISELECT(20,16), "S13785C1.s13785c1f2");
    check_field_offset(lv, s13785c1f3, ABISELECT(26,22), "S13785C1.s13785c1f3");
  }
}
static Arrange_To_Call_Me vS13785C1(Test_S13785C1, "S13785C1", ABISELECT(256,252));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13130C1  {
  int s13130c1f0[2];
  ::S3423C4_nt s13130c1f1;
  ::S3423C4_nt s13130c1f2;
};
//SIG(1 S13130C1) C1{ Fi[2] FC2{ m Fi[2]} FC2}



static void Test_S13130C1()
{
  {
    init_simple_test("S13130C1");
    S13130C1 lv;
    check2(sizeof(lv), 24, "sizeof(S13130C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13130C1)");
    check_field_offset(lv, s13130c1f0, 0, "S13130C1.s13130c1f0");
    check_field_offset(lv, s13130c1f1, 8, "S13130C1.s13130c1f1");
    check_field_offset(lv, s13130c1f2, 16, "S13130C1.s13130c1f2");
  }
}
static Arrange_To_Call_Me vS13130C1(Test_S13130C1, "S13130C1", 24);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17936C2  {
  void *s17936c2f0;
  char s17936c2f1;
  int s17936c2f2;
};
//SIG(-1 S17936C2) C1{ Fp Fc Fi}



static void Test_S17936C2()
{
  {
    init_simple_test("S17936C2");
    S17936C2 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S17936C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17936C2)");
    check_field_offset(lv, s17936c2f0, 0, "S17936C2.s17936c2f0");
    check_field_offset(lv, s17936c2f1, ABISELECT(8,4), "S17936C2.s17936c2f1");
    check_field_offset(lv, s17936c2f2, ABISELECT(12,8), "S17936C2.s17936c2f2");
  }
}
static Arrange_To_Call_Me vS17936C2(Test_S17936C2, "S17936C2", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17936C1  {
  void *s17936c1f0[2];
  ::S17936C2 s17936c1f1;
  void  mf17936c1(); // _ZN8S17936C19mf17936c1Ev
};
//SIG(1 S17936C1) C1{ m Fp[2] FC2{ Fp Fc Fi}}


void  S17936C1 ::mf17936c1(){}

static void Test_S17936C1()
{
  {
    init_simple_test("S17936C1");
    S17936C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S17936C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17936C1)");
    check_field_offset(lv, s17936c1f0, 0, "S17936C1.s17936c1f0");
    check_field_offset(lv, s17936c1f1, ABISELECT(16,8), "S17936C1.s17936c1f1");
  }
}
static Arrange_To_Call_Me vS17936C1(Test_S17936C1, "S17936C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5841C3_nt  {
  int s5841c3f0;
  void  mf5841c3(); // _ZN10S5841C3_nt8mf5841c3Ev
};
//SIG(-1 S5841C3_nt) C1{ m Fi}


void  S5841C3_nt ::mf5841c3(){}

//skip512 S5841C3_nt

#else // __cplusplus

Class_Descriptor cd_S5841C3_nt = {  "S5841C3_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5841C1  : S3423C8_nt , S5841C3_nt {
  __tsi64 s5841c1f0;
};
//SIG(1 S5841C1) C1{ BC2{ m Fi} BC3{ m Fi} FL}



static void Test_S5841C1()
{
  extern Class_Descriptor cd_S5841C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,5)];
    init_test(&cd_S5841C1, buf);
    S5841C1 &lv = *(new (buf) S5841C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 16, "sizeof(S5841C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5841C1)");
    check_base_class_offset(lv, (S3423C8_nt*), 0, "S5841C1");
    check_base_class_offset(lv, (S5841C3_nt*), 4, "S5841C1");
    check_field_offset(lv, s5841c1f0, 8, "S5841C1.s5841c1f0");
    test_class_info(&lv, &cd_S5841C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5841C1(Test_S5841C1, "S5841C1", 16);

#else // __cplusplus

extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S5841C3_nt;
static Base_Class bases_S5841C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5841C3_nt,    4, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S5841C1 = {  "S5841C1", // class name
  bases_S5841C1, 2,
  0, // no vftv
  0, //no vtt
  16, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14770C1  {
  short s14770c1f0;
  char s14770c1f1[2];
  int s14770c1f2[2];
  short s14770c1f3;
  int s14770c1f4;
};
//SIG(1 S14770C1) C1{ Fs Fc[2] Fi[2] Fs Fi}



static void Test_S14770C1()
{
  {
    init_simple_test("S14770C1");
    S14770C1 lv;
    check2(sizeof(lv), 20, "sizeof(S14770C1)");
    check2(__alignof__(lv), 4, "__alignof__(S14770C1)");
    check_field_offset(lv, s14770c1f0, 0, "S14770C1.s14770c1f0");
    check_field_offset(lv, s14770c1f1, 2, "S14770C1.s14770c1f1");
    check_field_offset(lv, s14770c1f2, 4, "S14770C1.s14770c1f2");
    check_field_offset(lv, s14770c1f3, 12, "S14770C1.s14770c1f3");
    check_field_offset(lv, s14770c1f4, 16, "S14770C1.s14770c1f4");
  }
}
static Arrange_To_Call_Me vS14770C1(Test_S14770C1, "S14770C1", 20);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5611C3  {
  int s5611c3f0;
  void *s5611c3f1[7];
};
//SIG(-1 S5611C3) C1{ Fi Fp[7]}



static void Test_S5611C3()
{
  {
    init_simple_test("S5611C3");
    S5611C3 lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S5611C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5611C3)");
    check_field_offset(lv, s5611c3f0, 0, "S5611C3.s5611c3f0");
    check_field_offset(lv, s5611c3f1, ABISELECT(8,4), "S5611C3.s5611c3f1");
  }
}
static Arrange_To_Call_Me vS5611C3(Test_S5611C3, "S5611C3", ABISELECT(64,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5611C2  {
  ::S5611C3 s5611c2f0;
  void  mf5611c2(); // _ZN7S5611C28mf5611c2Ev
};
//SIG(-1 S5611C2) C1{ m FC2{ Fi Fp[7]}}


void  S5611C2 ::mf5611c2(){}

static void Test_S5611C2()
{
  {
    init_simple_test("S5611C2");
    S5611C2 lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S5611C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5611C2)");
    check_field_offset(lv, s5611c2f0, 0, "S5611C2.s5611c2f0");
  }
}
static Arrange_To_Call_Me vS5611C2(Test_S5611C2, "S5611C2", ABISELECT(64,32));

#else // __cplusplus

Class_Descriptor cd_S5611C2 = {  "S5611C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(64,32), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5611C1  : S5611C2 {
};
//SIG(1 S5611C1) C1{ BC2{ m FC3{ Fi Fp[7]}}}



static void Test_S5611C1()
{
  extern Class_Descriptor cd_S5611C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S5611C1, buf);
    S5611C1 &lv = *(new (buf) S5611C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S5611C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5611C1)");
    check_base_class_offset(lv, (S5611C2*), 0, "S5611C1");
    test_class_info(&lv, &cd_S5611C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5611C1(Test_S5611C1, "S5611C1", ABISELECT(64,32));

#else // __cplusplus

extern Class_Descriptor cd_S5611C2;
static Base_Class bases_S5611C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5611C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S5611C1 = {  "S5611C1", // class name
  bases_S5611C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(64,32), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13691C1  {
  __tsi64 s13691c1f0;
  ::S11713C3 s13691c1f1;
};
//SIG(1 S13691C1) C1{ FL FC2{ Fc[2] Fs[3]}}



static void Test_S13691C1()
{
  {
    init_simple_test("S13691C1");
    S13691C1 lv;
    check2(sizeof(lv), 16, "sizeof(S13691C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13691C1)");
    check_field_offset(lv, s13691c1f0, 0, "S13691C1.s13691c1f0");
    check_field_offset(lv, s13691c1f1, 8, "S13691C1.s13691c1f1");
  }
}
static Arrange_To_Call_Me vS13691C1(Test_S13691C1, "S13691C1", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16056C1  {
  ::S3423C13_nt s16056c1f0;
  void *s16056c1f1;
  int s16056c1f2;
  void  mf16056c1(); // _ZN8S16056C19mf16056c1Ev
};
//SIG(1 S16056C1) C1{ m FC2{ m Fi[3]} Fp Fi}


void  S16056C1 ::mf16056c1(){}

static void Test_S16056C1()
{
  {
    init_simple_test("S16056C1");
    S16056C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S16056C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16056C1)");
    check_field_offset(lv, s16056c1f0, 0, "S16056C1.s16056c1f0");
    check_field_offset(lv, s16056c1f1, ABISELECT(16,12), "S16056C1.s16056c1f1");
    check_field_offset(lv, s16056c1f2, ABISELECT(24,16), "S16056C1.s16056c1f2");
  }
}
static Arrange_To_Call_Me vS16056C1(Test_S16056C1, "S16056C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12037C2  {
  int s12037c2f0[13];
  void  mf12037c2(); // _ZN8S12037C29mf12037c2Ev
};
//SIG(1 S12037C2) C1{ m Fi[13]}


void  S12037C2 ::mf12037c2(){}

static void Test_S12037C2()
{
  {
    init_simple_test("S12037C2");
    S12037C2 lv;
    check2(sizeof(lv), 52, "sizeof(S12037C2)");
    check2(__alignof__(lv), 4, "__alignof__(S12037C2)");
    check_field_offset(lv, s12037c2f0, 0, "S12037C2.s12037c2f0");
  }
}
static Arrange_To_Call_Me vS12037C2(Test_S12037C2, "S12037C2", 52);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12037C1  {
  ::S12037C2 s12037c1f0[315];
};
//SIG(1 S12037C1) C1{ FC2{ m Fi[13]}[315]}



static void Test_S12037C1()
{
  {
    init_simple_test("S12037C1");
    S12037C1 lv;
    check2(sizeof(lv), 16380, "sizeof(S12037C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12037C1)");
    check_field_offset(lv, s12037c1f0, 0, "S12037C1.s12037c1f0");
  }
}
static Arrange_To_Call_Me vS12037C1(Test_S12037C1, "S12037C1", 16380);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10446C2_nt  {
  void *s10446c2f0[2];
};
//SIG(-1 S10446C2_nt) C1{ Fp[2]}



//skip512 S10446C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10446C1  {
  char s10446c1f0;
  ::S10446C2_nt s10446c1f1;
  void *s10446c1f2[5];
};
//SIG(1 S10446C1) C1{ Fc FC2{ Fp[2]} Fp[5]}



static void Test_S10446C1()
{
  {
    init_simple_test("S10446C1");
    S10446C1 lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S10446C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10446C1)");
    check_field_offset(lv, s10446c1f0, 0, "S10446C1.s10446c1f0");
    check_field_offset(lv, s10446c1f1, ABISELECT(8,4), "S10446C1.s10446c1f1");
    check_field_offset(lv, s10446c1f2, ABISELECT(24,12), "S10446C1.s10446c1f2");
  }
}
static Arrange_To_Call_Me vS10446C1(Test_S10446C1, "S10446C1", ABISELECT(64,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18899C1  {
  void *s18899c1f0;
  virtual  ~S18899C1(); // _ZN8S18899C1D1Ev
  virtual void  v1(); // _ZN8S18899C12v1Ev
  virtual void  v2(); // _ZN8S18899C12v2Ev
  virtual void  v3(); // _ZN8S18899C12v3Ev
  virtual void  v4(); // _ZN8S18899C12v4Ev
  S18899C1(); // tgen
};
//SIG(1 S18899C1) C1{ vd v1 v2 v3 v4 Fp}


 S18899C1 ::~S18899C1(){ note_dtor("S18899C1", this);}
void  S18899C1 ::v1(){vfunc_called(this, "_ZN8S18899C12v1Ev");}
void  S18899C1 ::v2(){vfunc_called(this, "_ZN8S18899C12v2Ev");}
void  S18899C1 ::v3(){vfunc_called(this, "_ZN8S18899C12v3Ev");}
void  S18899C1 ::v4(){vfunc_called(this, "_ZN8S18899C12v4Ev");}
S18899C1 ::S18899C1(){ note_ctor("S18899C1", this);} // tgen

static void Test_S18899C1()
{
  extern Class_Descriptor cd_S18899C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S18899C1, buf);
    S18899C1 *dp, &lv = *(dp=new (buf) S18899C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S18899C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18899C1)");
    check_field_offset(lv, s18899c1f0, ABISELECT(8,4), "S18899C1.s18899c1f0");
    test_class_info(&lv, &cd_S18899C1);
    dp->~S18899C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18899C1(Test_S18899C1, "S18899C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S18899C1C1Ev();
extern void _ZN8S18899C1D1Ev();
Name_Map name_map_S18899C1[] = {
  NSPAIR(_ZN8S18899C1C1Ev),
  NSPAIR(_ZN8S18899C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18899C1[];
extern void _ZN8S18899C1D1Ev();
extern void _ZN8S18899C1D0Ev();
extern void _ZN8S18899C12v1Ev();
extern void _ZN8S18899C12v2Ev();
extern void _ZN8S18899C12v3Ev();
extern void _ZN8S18899C12v4Ev();
static  VTBL_ENTRY vtc_S18899C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18899C1[0]),
  (VTBL_ENTRY)&_ZN8S18899C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18899C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18899C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18899C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18899C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18899C12v4Ev,
};
extern VTBL_ENTRY _ZTI8S18899C1[];
extern  VTBL_ENTRY _ZTV8S18899C1[];
Class_Descriptor cd_S18899C1 = {  "S18899C1", // class name
  0,0,//no base classes
  &(vtc_S18899C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S18899C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18899C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13223C1  {
  int s13223c1f0[2];
  void *s13223c1f1[2];
  int s13223c1f2[2];
};
//SIG(1 S13223C1) C1{ Fi[2] Fp[2] Fi[2]}



static void Test_S13223C1()
{
  {
    init_simple_test("S13223C1");
    S13223C1 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S13223C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13223C1)");
    check_field_offset(lv, s13223c1f0, 0, "S13223C1.s13223c1f0");
    check_field_offset(lv, s13223c1f1, 8, "S13223C1.s13223c1f1");
    check_field_offset(lv, s13223c1f2, ABISELECT(24,16), "S13223C1.s13223c1f2");
  }
}
static Arrange_To_Call_Me vS13223C1(Test_S13223C1, "S13223C1", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12778C1  {
  int s12778c1f0;
  void *s12778c1f1[3];
  int s12778c1f2[2];
  void *s12778c1f3;
};
//SIG(1 S12778C1) C1{ Fi Fp[3] Fi[2] Fp}



static void Test_S12778C1()
{
  {
    init_simple_test("S12778C1");
    S12778C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S12778C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12778C1)");
    check_field_offset(lv, s12778c1f0, 0, "S12778C1.s12778c1f0");
    check_field_offset(lv, s12778c1f1, ABISELECT(8,4), "S12778C1.s12778c1f1");
    check_field_offset(lv, s12778c1f2, ABISELECT(32,16), "S12778C1.s12778c1f2");
    check_field_offset(lv, s12778c1f3, ABISELECT(40,24), "S12778C1.s12778c1f3");
  }
}
static Arrange_To_Call_Me vS12778C1(Test_S12778C1, "S12778C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16926C1  {
  int s16926c1f0;
  void *s16926c1f1;
  int s16926c1f2;
  void *s16926c1f3[3];
  void  mf16926c1(); // _ZN8S16926C19mf16926c1Ev
};
//SIG(1 S16926C1) C1{ m Fi Fp Fi Fp[3]}


void  S16926C1 ::mf16926c1(){}

static void Test_S16926C1()
{
  {
    init_simple_test("S16926C1");
    S16926C1 lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S16926C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16926C1)");
    check_field_offset(lv, s16926c1f0, 0, "S16926C1.s16926c1f0");
    check_field_offset(lv, s16926c1f1, ABISELECT(8,4), "S16926C1.s16926c1f1");
    check_field_offset(lv, s16926c1f2, ABISELECT(16,8), "S16926C1.s16926c1f2");
    check_field_offset(lv, s16926c1f3, ABISELECT(24,12), "S16926C1.s16926c1f3");
  }
}
static Arrange_To_Call_Me vS16926C1(Test_S16926C1, "S16926C1", ABISELECT(48,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13971C2_nt  {
  __tsi64 s13971c2f0[2];
};
//SIG(-1 S13971C2_nt) C1{ FL[2]}



//skip512 S13971C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13971C1  {
  long s13971c1f0[3];
  ::S13971C2_nt s13971c1f1;
};
//SIG(1 S13971C1) C1{ Fl[3] FC2{ FL[2]}}



static void Test_S13971C1()
{
  {
    init_simple_test("S13971C1");
    S13971C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S13971C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13971C1)");
    check_field_offset(lv, s13971c1f0, 0, "S13971C1.s13971c1f0");
    check_field_offset(lv, s13971c1f1, ABISELECT(24,12), "S13971C1.s13971c1f1");
  }
}
static Arrange_To_Call_Me vS13971C1(Test_S13971C1, "S13971C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14457C1  {
  void *s14457c1f0[2];
  char s14457c1f1[512];
  void *s14457c1f2;
};
//SIG(1 S14457C1) C1{ Fp[2] Fc[512] Fp}



static void Test_S14457C1()
{
  {
    init_simple_test("S14457C1");
    S14457C1 lv;
    check2(sizeof(lv), ABISELECT(536,524), "sizeof(S14457C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14457C1)");
    check_field_offset(lv, s14457c1f0, 0, "S14457C1.s14457c1f0");
    check_field_offset(lv, s14457c1f1, ABISELECT(16,8), "S14457C1.s14457c1f1");
    check_field_offset(lv, s14457c1f2, ABISELECT(528,520), "S14457C1.s14457c1f2");
  }
}
static Arrange_To_Call_Me vS14457C1(Test_S14457C1, "S14457C1", ABISELECT(536,524));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15223C1  {
  char s15223c1f0[257];
  void *s15223c1f1[2];
  void  mf15223c1(); // _ZN8S15223C19mf15223c1Ev
};
//SIG(1 S15223C1) C1{ m Fc[257] Fp[2]}


void  S15223C1 ::mf15223c1(){}

static void Test_S15223C1()
{
  {
    init_simple_test("S15223C1");
    S15223C1 lv;
    check2(sizeof(lv), ABISELECT(280,268), "sizeof(S15223C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15223C1)");
    check_field_offset(lv, s15223c1f0, 0, "S15223C1.s15223c1f0");
    check_field_offset(lv, s15223c1f1, ABISELECT(264,260), "S15223C1.s15223c1f1");
  }
}
static Arrange_To_Call_Me vS15223C1(Test_S15223C1, "S15223C1", ABISELECT(280,268));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12983C1  {
  int s12983c1f0[2];
  char s12983c1f1;
  int s12983c1f2[5];
};
//SIG(1 S12983C1) C1{ Fi[2] Fc Fi[5]}



static void Test_S12983C1()
{
  {
    init_simple_test("S12983C1");
    S12983C1 lv;
    check2(sizeof(lv), 32, "sizeof(S12983C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12983C1)");
    check_field_offset(lv, s12983c1f0, 0, "S12983C1.s12983c1f0");
    check_field_offset(lv, s12983c1f1, 8, "S12983C1.s12983c1f1");
    check_field_offset(lv, s12983c1f2, 12, "S12983C1.s12983c1f2");
  }
}
static Arrange_To_Call_Me vS12983C1(Test_S12983C1, "S12983C1", 32);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14307C1  {
  void *s14307c1f0;
  int s14307c1f1[2];
  void *s14307c1f2[4];
};
//SIG(1 S14307C1) C1{ Fp Fi[2] Fp[4]}



static void Test_S14307C1()
{
  {
    init_simple_test("S14307C1");
    S14307C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S14307C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14307C1)");
    check_field_offset(lv, s14307c1f0, 0, "S14307C1.s14307c1f0");
    check_field_offset(lv, s14307c1f1, ABISELECT(8,4), "S14307C1.s14307c1f1");
    check_field_offset(lv, s14307c1f2, ABISELECT(16,12), "S14307C1.s14307c1f2");
  }
}
static Arrange_To_Call_Me vS14307C1(Test_S14307C1, "S14307C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12797C1  {
  int s12797c1f0;
  void *s12797c1f1[5];
  int s12797c1f2[2];
};
//SIG(1 S12797C1) C1{ Fi Fp[5] Fi[2]}



static void Test_S12797C1()
{
  {
    init_simple_test("S12797C1");
    S12797C1 lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S12797C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12797C1)");
    check_field_offset(lv, s12797c1f0, 0, "S12797C1.s12797c1f0");
    check_field_offset(lv, s12797c1f1, ABISELECT(8,4), "S12797C1.s12797c1f1");
    check_field_offset(lv, s12797c1f2, ABISELECT(48,24), "S12797C1.s12797c1f2");
  }
}
static Arrange_To_Call_Me vS12797C1(Test_S12797C1, "S12797C1", ABISELECT(56,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18328C1  {
  void *s18328c1f0[3];
  int s18328c1f1[3];
  void  mf18328c1(); // _ZN8S18328C19mf18328c1Ev
};
//SIG(1 S18328C1) C1{ m Fp[3] Fi[3]}


void  S18328C1 ::mf18328c1(){}

static void Test_S18328C1()
{
  {
    init_simple_test("S18328C1");
    S18328C1 lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S18328C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18328C1)");
    check_field_offset(lv, s18328c1f0, 0, "S18328C1.s18328c1f0");
    check_field_offset(lv, s18328c1f1, ABISELECT(24,12), "S18328C1.s18328c1f1");
  }
}
static Arrange_To_Call_Me vS18328C1(Test_S18328C1, "S18328C1", ABISELECT(40,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13751C1  {
  __tsi64 s13751c1f0;
  int s13751c1f1;
  ::S11667C2_nt s13751c1f2;
};
//SIG(1 S13751C1) C1{ FL Fi FC2{ Fi}}



static void Test_S13751C1()
{
  {
    init_simple_test("S13751C1");
    S13751C1 lv;
    check2(sizeof(lv), 16, "sizeof(S13751C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13751C1)");
    check_field_offset(lv, s13751c1f0, 0, "S13751C1.s13751c1f0");
    check_field_offset(lv, s13751c1f1, 8, "S13751C1.s13751c1f1");
    check_field_offset(lv, s13751c1f2, 12, "S13751C1.s13751c1f2");
  }
}
static Arrange_To_Call_Me vS13751C1(Test_S13751C1, "S13751C1", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10770C1  {
  char s10770c1f0[21];
  int s10770c1f1[6];
};
//SIG(1 S10770C1) C1{ Fc[21] Fi[6]}



static void Test_S10770C1()
{
  {
    init_simple_test("S10770C1");
    S10770C1 lv;
    check2(sizeof(lv), 48, "sizeof(S10770C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10770C1)");
    check_field_offset(lv, s10770c1f0, 0, "S10770C1.s10770c1f0");
    check_field_offset(lv, s10770c1f1, 24, "S10770C1.s10770c1f1");
  }
}
static Arrange_To_Call_Me vS10770C1(Test_S10770C1, "S10770C1", 48);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12102C1  {
  ::S1532C10_nt s12102c1f0;
};
//SIG(1 S12102C1) C1{ FC2{ m Fi[4]}}



static void Test_S12102C1()
{
  {
    init_simple_test("S12102C1");
    S12102C1 lv;
    check2(sizeof(lv), 16, "sizeof(S12102C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12102C1)");
    check_field_offset(lv, s12102c1f0, 0, "S12102C1.s12102c1f0");
  }
}
static Arrange_To_Call_Me vS12102C1(Test_S12102C1, "S12102C1", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12115C1  {
  ::S5841C3_nt s12115c1f0;
  __tsi64 s12115c1f1;
};
//SIG(1 S12115C1) C1{ FC2{ m Fi} FL}



static void Test_S12115C1()
{
  {
    init_simple_test("S12115C1");
    S12115C1 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S12115C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12115C1)");
    check_field_offset(lv, s12115c1f0, 0, "S12115C1.s12115c1f0");
    check_field_offset(lv, s12115c1f1, ABISELECT(8,4), "S12115C1.s12115c1f1");
  }
}
static Arrange_To_Call_Me vS12115C1(Test_S12115C1, "S12115C1", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17022C1  {
  int s17022c1f0:6;
  int s17022c1f1:4;
  void  mf17022c1(); // _ZN8S17022C19mf17022c1Ev
};
//SIG(1 S17022C1) C1{ m Fi:6 Fi:4}


void  S17022C1 ::mf17022c1(){}

static void Test_S17022C1()
{
  {
    init_simple_test("S17022C1");
    static S17022C1 lv;
    check2(sizeof(lv), 4, "sizeof(S17022C1)");
    check2(__alignof__(lv), 4, "__alignof__(S17022C1)");
    set_bf_and_test(lv, s17022c1f0, 0, 0, 6, 1, "S17022C1");
    set_bf_and_test(lv, s17022c1f0, 0, 0, 6, hide_sll(1LL<<5), "S17022C1");
    set_bf_and_test(lv, s17022c1f1, 0, 6, 4, 1, "S17022C1");
    set_bf_and_test(lv, s17022c1f1, 0, 6, 4, hide_sll(1LL<<3), "S17022C1");
  }
}
static Arrange_To_Call_Me vS17022C1(Test_S17022C1, "S17022C1", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6291C1  : S4228C37 {
  char s6291c1f0;
  virtual  ~S6291C1(); // _ZN7S6291C1D1Ev
  S6291C1(); // tgen
};
//SIG(1 S6291C1) C1{ BC2{ m} vd Fc}


 S6291C1 ::~S6291C1(){ note_dtor("S6291C1", this);}
S6291C1 ::S6291C1(){ note_ctor("S6291C1", this);} // tgen

static void Test_S6291C1()
{
  extern Class_Descriptor cd_S6291C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6291C1, buf);
    S6291C1 *dp, &lv = *(dp=new (buf) S6291C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6291C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6291C1)");
    check_base_class_offset(lv, (S4228C37*), 0, "S6291C1");
    check_field_offset(lv, s6291c1f0, ABISELECT(8,4), "S6291C1.s6291c1f0");
    test_class_info(&lv, &cd_S6291C1);
    dp->~S6291C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6291C1(Test_S6291C1, "S6291C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6291C1C1Ev();
extern void _ZN7S6291C1D1Ev();
Name_Map name_map_S6291C1[] = {
  NSPAIR(_ZN7S6291C1C1Ev),
  NSPAIR(_ZN7S6291C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S6291C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6291C1[];
extern void _ZN7S6291C1D1Ev();
extern void _ZN7S6291C1D0Ev();
static  VTBL_ENTRY vtc_S6291C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6291C1[0]),
  (VTBL_ENTRY)&_ZN7S6291C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6291C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S6291C1[];
extern  VTBL_ENTRY _ZTV7S6291C1[];
Class_Descriptor cd_S6291C1 = {  "S6291C1", // class name
  bases_S6291C1, 1,
  &(vtc_S6291C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6291C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6291C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17403C1  {
  long s17403c1f0[2];
  int s17403c1f1;
  void  mf17403c1(); // _ZN8S17403C19mf17403c1Ev
};
//SIG(1 S17403C1) C1{ m Fl[2] Fi}


void  S17403C1 ::mf17403c1(){}

static void Test_S17403C1()
{
  {
    init_simple_test("S17403C1");
    S17403C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S17403C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17403C1)");
    check_field_offset(lv, s17403c1f0, 0, "S17403C1.s17403c1f0");
    check_field_offset(lv, s17403c1f1, ABISELECT(16,8), "S17403C1.s17403c1f1");
  }
}
static Arrange_To_Call_Me vS17403C1(Test_S17403C1, "S17403C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12331C1  {
  int s12331c1f0;
  char s12331c1f1[80];
};
//SIG(1 S12331C1) C1{ Fi Fc[80]}



static void Test_S12331C1()
{
  {
    init_simple_test("S12331C1");
    S12331C1 lv;
    check2(sizeof(lv), 84, "sizeof(S12331C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12331C1)");
    check_field_offset(lv, s12331c1f0, 0, "S12331C1.s12331c1f0");
    check_field_offset(lv, s12331c1f1, 4, "S12331C1.s12331c1f1");
  }
}
static Arrange_To_Call_Me vS12331C1(Test_S12331C1, "S12331C1", 84);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13952C1  {
  __tsi64 s13952c1f0[2];
  void *s13952c1f1;
};
//SIG(1 S13952C1) C1{ FL[2] Fp}



static void Test_S13952C1()
{
  {
    init_simple_test("S13952C1");
    S13952C1 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S13952C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13952C1)");
    check_field_offset(lv, s13952c1f0, 0, "S13952C1.s13952c1f0");
    check_field_offset(lv, s13952c1f1, 16, "S13952C1.s13952c1f1");
  }
}
static Arrange_To_Call_Me vS13952C1(Test_S13952C1, "S13952C1", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14460C1  {
  void *s14460c1f0[2];
  char s14460c1f1;
};
//SIG(1 S14460C1) C1{ Fp[2] Fc}



static void Test_S14460C1()
{
  {
    init_simple_test("S14460C1");
    S14460C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S14460C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14460C1)");
    check_field_offset(lv, s14460c1f0, 0, "S14460C1.s14460c1f0");
    check_field_offset(lv, s14460c1f1, ABISELECT(16,8), "S14460C1.s14460c1f1");
  }
}
static Arrange_To_Call_Me vS14460C1(Test_S14460C1, "S14460C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13906C1  {
  __tsi64 s13906c1f0[17];
};
//SIG(1 S13906C1) C1{ FL[17]}



static void Test_S13906C1()
{
  {
    init_simple_test("S13906C1");
    S13906C1 lv;
    check2(sizeof(lv), 136, "sizeof(S13906C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13906C1)");
    check_field_offset(lv, s13906c1f0, 0, "S13906C1.s13906c1f0");
  }
}
static Arrange_To_Call_Me vS13906C1(Test_S13906C1, "S13906C1", 136);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

